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 n. geçiş 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 (SEYAHAT), BREAKS (ARA), DELAY (GECİKME) ve WAIT (BEKLE) öğelerinin geçiş sırasında nasıl düzenlenebileceğini görebilirsiniz.
- Bu iki bölge çakışmaz.
- Gecikme 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 | |
---|---|
vehicleIndex |
Rotayı gerçekleştiren araç. Kaynaktaki diziniyle |
vehicleLabel |
Bu rotayı gerçekleştiren aracın etiketi. Belirtilmişse |
vehicleStartTime |
Aracın rotasına başladığı zaman. Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: |
vehicleEndTime |
Aracın rotasını tamamladığı zaman. Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: |
visits[] |
Bir rotayı temsil eden sıralı ziyaret 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. |
hasTrafficInfeasibilities |
Trafik nedeniyle artan seyahat süresi tahmini |
routePolyline |
Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca |
breaks[] |
Bu rotayı yapan araç için planlanan ara verme noktaları. |
metrics |
Bu rotanın süresi, mesafesi ve yük metrikleri. |
vehicleFullness |
Sınırlandırılmış metriklerin ilgili araç sınırlarına ne kadar yakın olduğunu hesaplamak için Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir. |
routeCosts |
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. |
routeTotalCost |
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 | |
---|---|
shipmentIndex |
Kaynak |
isPickup |
Doğru ise ziyaret, |
visitRequestIndex |
|
startTime |
Ziyaretin başladığı zaman. Aracın ziyaret konumuna bu saatten daha erken ulaşabileceğini unutmayın. Saatler Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: |
loadDemands |
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 " |
shipmentLabel |
|
visitLabel |
|
injectedSolutionLocationToken |
Ziyaret konumuyla ilgili bilgileri temsil eden opak bir jeton. Bu alan, Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin. |
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 | |
---|---|
travelDuration |
Bu geçiş sırasındaki seyahat süresi. En fazla dokuz kesirli basamak içeren ve " |
travelDistanceMeters |
Geçiş sırasında kat edilen mesafe. |
trafficInfoUnavailable |
|
delayDuration |
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 " |
breakDuration |
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 " |
waitDuration |
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 " |
totalDuration |
Kolaylık olması açısından geçişin toplam süresi. Şuna eşittir:
En fazla dokuz kesirli basamak içeren ve " |
startTime |
Bu geçişin başlangıç zamanı. Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: |
routePolyline |
Geçiş sırasında takip edilen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
routeToken |
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 işleyin. 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 |
vehicleLoads |
Bu geçiş sırasında araç yüklemeleri. Bu aracın İ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 | |
---|---|
startTime |
Aranın başlangıç zamanı. Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: |
duration |
Aranın süresi. En fazla dokuz kesirli basamak içeren ve " |
VehicleFullness
VehicleFullness
, bir aracın ne kadar dolu olduğunu hesaplayan bir metriktir. Her VehicleFullness
alanı, 0 ile 1 arasındadır ve sınırlı bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters
) ile ilgili araç sınırı (varsa Vehicle.route_distance_limit
) arasındaki oran olarak hesaplanır. Aksi takdirde doluluk oranı ayarlanmamış olarak kalır. Sınır 0 ise alan 1 olarak ayarlanır. Not: Bir rota trafikle ilgili uygunsuzluklara tabi olduğunda bazı ham doluluk oranları 1,0'u aşabilir (ör. araç mesafe sınırını aşabilir). Bu durumlarda, doluluk değerlerini 1,0 olarak sınırlandırırız.
JSON gösterimi |
---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
Alanlar | |
---|---|
maxFullness |
Bu mesajdaki diğer tüm alanların maksimum değeri. |
distance |
|
travelDuration |
[AggregatedMetrics.travel_duration_seconds][] ile |
activeDuration |
[AggregatedMetrics.total_duration_seconds][] ile |
maxLoad |
Tüm [AggregatedMetrics.max_load][] türleri ve ilgili |
activeSpan |
Belirli bir araç için (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) oranı. Payda yoksa bunun yerine ( |