Bir aracın rotası, zaman ekseninde aşağıdaki gibi ayrıştırılabilir (n ziyaret olduğunu varsayarız):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Aşağıdakiler arasında bir fark yaptığımızı unutmayın:
- Aracın başlangıç ve bitişi ile her ziyaretin başlangıcı ve bitişi (diğer bir deyişle varış ve gidiş) gibi "dakik etkinlikler". Belirli bir saniyede gerçekleşir.
- "zaman aralıkları" (ör. ziyaretler ve ziyaretler arasındaki geçiş). Zaman aralıkları bazen sıfır süreye sahip olabilse de (ör. aynı saniyede başlangıç ve bitişte) ancak genellikle pozitif bir süreye sahiptirler.
Sabit değerler:
- n ziyaret varsa n+1 geçişi vardır.
- Bir ziyaret her zaman kendisinden önce bir geçiş (aynı dizin) ve ondan sonra bir geçiş (dizin + 1) ile çevrilidir.
- Araç başlangıcından sonra her zaman #0 geçişi gelir.
- Araç sonundan önce her zaman #n geçişi gelir.
Yakınlaştırıldığında, Transition
ve Visit
sırasında neler olur?
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Son olarak, geçiş sırasında SEYAHAT, PARÇALAR, GECİKME ve BEKLEME işlevlerinin nasıl ayarlanabileceği burada açıklanmaktadır.
- Bunlar çakışmaz.
- Gecikme benzersizdir ve bir sonraki ziyaretten (veya araç sonundan) hemen önceki kesintisiz bir süre olmalıdır. Dolayısıyla, gecikme süresinin başlangıç ve bitiş zamanını bilmek yeterli olacaktır.
- ARALAR ardışık ve örtüşmeyen zaman aralıklarıdır. Yanıt, her aranın başlangıç zamanını ve süresini belirtir.
- TRAVEL ve WAIT değerleri "öncelikli"dir: Bu geçiş sırasında birkaç kez kesintiye uğrayabilirler. Müşteriler, seyahatin "mümkün olan en kısa sürede" gerçekleşeceğini varsayabilir ve bu "bekleyen" kalan süreyi doldurur.
Bir (karmaşık) örnek:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
JSON gösterimi |
---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
Alanlar | |
---|---|
vehicleIndex |
Rotayı gerçekleştiren araç ( |
vehicleLabel |
Bu rotayı gerçekleştiren aracın etiketi (belirtilmişse |
vehicleStartTime |
Aracın rotasına başladığı zaman. RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
vehicleEndTime |
Aracın rotasını tamamladığı zaman. RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
visits[] |
Bir rotayı temsil eden sıralı ziyaret dizisi. ziyaret[i], rotadaki i. ziyarettir. Bu alan boşsa araç kullanılmıyor olarak kabul edilir. |
transitions[] |
Rotanın sıralı geçiş listesi. |
hasTrafficInfeasibilities |
Trafik nedeniyle |
routePolyline |
Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
breaks[] |
Bu rotayı gerçekleştiren araç için planlanan molalar. |
metrics |
Bu rota için süre, mesafe ve yük metrikleri. |
routeCosts |
Maliyetle ilgili istek alanlarına göre ayrılmış rota maliyeti. Anahtarlar, OptimizeToursRequest girişine göre proto yollarıdır (ör. "model.shipments.pickups.cost"tur. Değerler, ilgili maliyet alanı tarafından oluşturulan ve tüm rota boyunca toplanan toplam maliyettir. Başka bir deyişle maliyet["model.shipments.pickups.cost"], rota üzerindeki tüm teslim alma maliyetlerinin toplamıdır. 01.01.2022 itibarıyla yalnızca toplu şekilde raporlanan TransitionAttributes ile ilgili maliyetler hariç olmak üzere, modelde tanımlanan tüm maliyetler burada ayrıntılı olarak raporlanmaktadır.
|
routeTotalCost |
Rotanın toplam maliyeti. Maliyet haritasındaki tüm maliyetlerin toplamı. |
Ziyaret edin
Bir rotada gerçekleştirilen ziyaret. Bu ziyaret, Shipment
adlı müşterinin teslim alınmasına veya teslimatına karşılık gelir.
JSON gösterimi |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
Alanlar | |
---|---|
shipmentIndex |
|
isPickup |
Doğruysa ziyaret, |
visitRequestIndex |
|
startTime |
Ziyaretin başladığı zaman. Aracın ziyaret konumuna bundan daha erken gelebileceğini unutmayın. Saatler RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
loadDemands |
Gönderim ve ziyaret isteğinin toplamı olarak
|
detour |
Ziyaretten önce rotada ziyaret edilen gönderimler ve zaman aralıklarının neden olduğu olası bekleme süresi nedeniyle ek rota izleme süresi. Ziyaret bir teslimatsa ek rota, ilgili teslim alma ziyaretine göre hesaplanır ve şuna eşittir:
Aksi takdirde
En fazla dokuz kesir basamağı olan ve " |
shipmentLabel |
|
visitLabel |
|
Geçiş
Rota üzerindeki iki etkinlik arasındaki geçiş. ShipmentRoute
açıklamasına bakın.
Araçta startLocation
ve/veya endLocation
yoksa ilgili seyahat metrikleri 0'dır.
JSON gösterimi |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
Alanlar | |
---|---|
travelDuration |
Bu geçiş sırasındaki seyahat süresi. En fazla dokuz kesir basamağı olan ve " |
travelDistanceMeters |
Geçiş sırasında katedilen mesafe. |
trafficInfoUnavailable |
|
delayDuration |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Varsa bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak En fazla dokuz kesir basamağı olan ve " |
breakDuration |
Bu geçiş sırasında oluşan araların süre toplamı (varsa). Her aranın başlangıç zamanı ve süresiyle ilgili ayrıntılar En fazla dokuz kesir basamağı olan ve " |
waitDuration |
Bu geçiş sırasında harcanan süre. Bekleme süresi, boşta kalma süresine karşılık gelir ve mola süresini içermez. Ayrıca bu bekleme süresinin ardışık olmayan birkaç aralığa bölünebileceğini unutmayın. En fazla dokuz kesir basamağı olan ve " |
totalDuration |
Kolaylık sağlamak amacıyla belirtilen geçişin toplam süresi. Eşittir:
En fazla dokuz kesir basamağı olan ve " |
startTime |
Bu geçişin başlangıç zamanı. RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
routePolyline |
Geçiş sırasında izlenen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
vehicleLoads |
Araç, bu geçiş sırasında bu aracın İlk geçiş sırasındaki yüklemeler, araç rotasının başlangıç yüklemeleridir. Ardından her ziyaretten sonra, ziyaretin teslim alma mı yoksa teslimat mı olduğuna bağlı olarak sonraki geçişin yüklemelerini elde etmek için ziyarete ait
|
EncodedPolyline
Çoklu çizginin kodlanmış gösterimi. Çoklu çizgi kodlaması hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
JSON gösterimi |
---|
{ "points": string } |
Alanlar | |
---|---|
points |
Çoklu çizginin kodlanmış noktalarını temsil eden dize. |
Ara
Aranın yürütülmesini temsil eden veriler.
JSON gösterimi |
---|
{ "startTime": string, "duration": string } |
Alanlar | |
---|---|
startTime |
Aranın başlangıç zamanı. RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
duration |
Ara süresi. En fazla dokuz kesir basamağı olan ve " |