Bir aracın rotası, zaman ekseni boyunca aşağıdaki gibi ayrılabilir (n ziyaret olduğunu varsayalım):
| | | | | 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 fark olduğunu unutmayın:
- Araç başlangıç ve bitiş zamanı ile her ziyaretin başlangıç ve bitiş zamanı (yani varış ve ayrılış) gibi "düzenli etkinlikler". Belirli bir saniyede gerçekleşir.
- Ziyaretlerin kendisi ve ziyaretler arasındaki geçiş gibi "zaman aralıkları". Zaman aralıkları bazen sıfır süreye sahip olabilir (yani aynı saniyede başlar ve biter). Ancak genellikle pozitif bir süreye sahiptir.
Değişmezler:
- n ziyaret varsa n+1 geçiş vardır.
- Bir ziyaret her zaman kendisinden önceki bir geçiş (aynı dizin) ve kendisinden sonraki bir geçiş (dizin + 1) ile çevrilidir.
- Araç çalıştırma işlemini her zaman 0 numaralı geçiş izler.
- Araç sonunun önünde her zaman geçiş #n bulunur.
Büyütme işleminde, Transition
ve Visit
sırasında şunlar gerçekleşir:
---+-------------------------------------+-----------------------------+-->
| 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, TRAVEL, BREAKS, DELAY ve WAIT öğelerinin geçiş sırasında nasıl düzenlenebileceğini aşağıda görebilirsiniz.
- Bu iki bölge çakışmaz.
- GECİKME benzersizdir ve bir sonraki ziyaretten (veya aracın bitiş tarihinden) hemen önce kesintisiz bir zaman aralığı olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmeniz yeterlidir.
- ARA VERİLECEK ZAMANLAR, birbirini takip eden ve çakışmayan zaman aralıklarıdır. Yanıt, her bir aranın başlangıç zamanını ve süresini belirtir.
- TRAVEL ve WAIT "öncelik verilebilir"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ştiğini ve kalan sürenin "bekleme" ile doldurulduğunu varsayabilir.
(Karmaşık) bir ö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 | |
---|---|
vehicle |
Rotayı gerçekleştiren araç. Kaynaktaki diziniyle |
vehicle |
Bu rotayı gerçekleştiren aracın etiketi. Belirtilmişse |
vehicle |
Aracın rotasına başladığı zaman. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
vehicle |
Aracın rotasını tamamladığı zaman. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
visits[] |
Bir rotayı temsil eden ziyaretlerin sıralı dizisi. visits[i], rotada i. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir. |
transitions[] |
Rotanın geçişlerinin sıralı listesi. |
has |
Trafik nedeniyle artan seyahat süresi tahmini |
route |
Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca |
breaks[] |
Bu rotayı yapan araç için planlanan aralar. |
metrics |
Bu rotanın süresi, mesafesi ve yük metrikleri. |
route |
Maliyetle ilgili istek alanlarına göre dökümü alınmış rota maliyeti. Anahtarlar, giriş OptimizeToursRequest'a göre proto yollar ("model.shipments.pickups.cost" gibi) ve değerler, ilgili maliyet alanı tarafından oluşturulan toplam maliyetin tüm rota boyunca toplanmış halidir. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rotadaki tüm teslim alma maliyetlerinin toplamıdır. Modelde tanımlanan tüm maliyetler, 2022/01 itibarıyla yalnızca toplu olarak raporlanan TransitionAttributes ile ilgili maliyetler hariç burada ayrıntılı olarak raporlanır. |
route |
Rotanın toplam maliyeti. Maliyet haritasındaki tüm maliyetlerin toplamı. |
Ziyaret edin
Bir rota sırasında yapılan ziyaret. Bu ziyaret, bir Shipment
'ın teslim alınmasına veya teslim edilmesine karşılık gelir.
JSON gösterimi |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
Alanlar | |
---|---|
shipment |
Kaynak |
is |
Doğru ise ziyaret, bir |
visit |
|
start |
Ziyaretin başladığı zaman. Aracın ziyaret konumuna bu saatten daha erken ulaşabileceğini unutmayın. Saatler Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
load |
Gönderim ve ziyaret isteğinin toplamı olarak toplam ziyaret yükleme talebi |
detour |
Ziyaretten önce rota üzerinde ziyaret edilen gönderimler ve zaman aralıkları nedeniyle ortaya çıkan olası bekleme süresi nedeniyle ek yan yol süresi. Ziyaret bir teslimat ise yan yol, ilgili teslim alma ziyaretinden hesaplanır ve şuna eşittir:
Aksi takdirde,
En fazla dokuz kesirli basamak içeren ve " |
shipment |
|
visit |
|
Geçiş
Rotadaki iki etkinlik arasında geçiş. ShipmentRoute
öğesinin açıklamasını inceleyin.
Araçta startLocation
ve/veya endLocation
yoksa ilgili seyahat metrikleri 0 olur.
JSON gösterimi |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
Alanlar | |
---|---|
travel |
Bu geçiş sırasındaki seyahat süresi. En fazla dokuz kesirli basamak içeren ve " |
travel |
Geçiş sırasında kat edilen mesafe. |
traffic |
|
delay |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Gecikme varsa bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak En fazla dokuz kesirli basamak içeren ve " |
break |
Bu geçiş sırasında gerçekleşen araların süresinin toplamı (varsa). Her molanın başlangıç zamanı ve süresi En fazla dokuz kesirli basamak içeren ve " |
wait |
Bu geçiş sırasında bekleme süresi. Bekleme süresi, boşta kalma süresine karşılık gelir ve ara verme süresini içermez. Ayrıca bu bekleme süresinin, birbirine bitişik olmayan birkaç aralığa bölünebileceğini unutmayın. En fazla dokuz kesirli basamak içeren ve " |
total |
Kolaylık olması açısından geçişin toplam süresi. Şuna eşittir:
En fazla dokuz kesirli basamak içeren ve " |
start |
Bu geçişin başlangıç zamanı. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
route |
Geçiş sırasında takip edilen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
route |
Yalnızca çıkış. Navigasyon sırasında rotayı yeniden oluşturmak ve yeniden yönlendirme durumunda rotanın oluşturulduğu orijinal amacı dikkate almak için Navigation SDK'ya iletilebilecek opak bir jeton. Bu jetonu opak bir blob olarak değerlendirin. Hizmet tam olarak aynı rotayı döndürse bile değeri değişebileceğinden, değerini istekler arasında karşılaştırmayın. Bu alan yalnızca |
vehicle |
Bu geçiş sırasında araç yüklemeleri. Bu araçta İlk geçiş sırasındaki yükler, araç rotasının başlangıç yükleridir. Ardından, her ziyaretten sonra ziyaretin |
EncodedPolyline
Bir çoklu çizginin kodlanmış gösterimi. Poli çizgi kodlaması hakkında daha fazla bilgiyi şu adreslerde 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
Bir aranın yürütülmesini temsil eden veriler.
JSON gösterimi |
---|
{ "startTime": string, "duration": string } |
Alanlar | |
---|---|
start |
Aranın başlangıç zamanı. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
duration |
Mola süresi. En fazla dokuz kesirli basamak içeren ve " |