Bir aracın rotası, zaman ekseni boyunca şu şekilde ayrıştırılabilir (n ziyaret olduğu varsayılır):
| | | | | 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ğıdaki durumlar arasında ayrım yaptığımızı unutmayın:
- Aracın başlangıcı ve bitişi ile her ziyaretin başlangıcı ve bitişi (varış ve ayrılış olarak da bilinir) gibi "dakik etkinlikler". Belirli bir saniyede gerçekleşirler.
- Ziyaretlerin kendisi ve ziyaretler arasındaki geçiş gibi "zaman aralıkları". Zaman aralıkları bazen sıfır süreli olabilir (ör. aynı saniyede başlayıp aynı saniyede sona erebilir) ancak genellikle pozitif sürelidir.
Sabitler:
- n ziyaret varsa n+1 geçiş vardır.
- Ziyaretler her zaman öncesinde bir geçiş (aynı dizin) ve sonrasında bir geçiş (dizin + 1) ile çevrilidir.
- Araç başlatma işlemi her zaman 0 numaralı geçişle takip edilir.
- Aracın sonu her zaman #n geçişiyle başlar.
Yakınlaştırdığımızda, Transition ve Visit sırasında gerçekleşen olaylar aşağıda açıklanmaktadır:
---+-------------------------------------+-----------------------------+-->
| 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 TRAVEL, BREAKS, DELAY ve WAIT'in nasıl düzenlenebileceğini aşağıda görebilirsiniz.
- Çakışmazlar.
- GECİKME benzersizdir ve bir sonraki ziyaretten (veya araç bitişinden) hemen önce gelen kesintisiz bir zaman aralığı olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını bilmek için gecikme süresini bilmek yeterlidir.
- BREAKS, kesintisiz ve çakışmayan zaman aralıklarıdır. Yanıtta her aranın başlangıç zamanı ve süresi belirtilir.
- TRAVEL ve WAIT "öncelikli"dir: Bu geçiş sırasında birkaç kez kesintiye uğrayabilirler. Müşteriler, seyahatin "en kısa sürede" gerçekleşeceğini ve kalan sürenin "bekleme" ile geçeceğini varsayabilir.
(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ç, kaynak |
vehicleLabel |
Belirtilmişse bu rotayı gerçekleştiren aracın |
vehicleStartTime |
Aracın rotasına başladığı zaman. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
vehicleEndTime |
Aracın rotasını tamamladığı zaman. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
visits[] |
Bir rotayı temsil eden sıralı ziyaretler. visits[i], rotadaki i. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir. |
transitions[] |
Rotadaki geçişlerin sıralı listesi. |
hasTrafficInfeasibilities |
Trafik nedeniyle seyahat süresinin tahmini |
routePolyline |
Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
breaks[] |
Bu rotayı kullanan araç için planlanan molalar. |
metrics |
Bu rotanın süresi, mesafesi ve yük metrikleri. |
vehicleFullness |
Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir. |
routeCosts |
Rotaların maliyeti, maliyetle ilgili istek alanlarına göre ayrıştırılır. Anahtarlar, giriş OptimizeToursRequest'e göre göreli proto yollarıdır (ör. "model.shipments.pickups.cost"). Değerler ise ilgili maliyet alanı tarafından oluşturulan ve rotanın tamamında toplanan toplam maliyettir. 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 bildirilen TransitionAttributes ile ilgili maliyetler hariç olmak üzere 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 gerçekleştirilen ziyaret. Bu ziyaret, Shipment teslim alma veya teslim etme işlemine karşılık gelir.
| JSON gösterimi |
|---|
{ "shipmentIndex": integer, "isPickup": boolean, "visitRequestIndex": integer, "startTime": string, "loadDemands": { string: { object ( |
| Alanlar | |
|---|---|
shipmentIndex |
Kaynak |
isPickup |
Doğruysa ziyaret, |
visitRequestIndex |
|
startTime |
Ziyaretin başladığı zaman. Aracın, ziyaret konumuna bu saatten daha önce ulaşabileceğini unutmayın. Saatler Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
loadDemands |
Ziyaret yükü talebinin toplamı, gönderim ve ziyaret isteğinin toplamı olarak hesaplanır |
detour |
Ziyaretten önce rotada ziyaret edilen gönderiler ve zaman aralıklarının neden olduğu olası bekleme süresi nedeniyle ek sapma süresi. Ziyaret bir teslimatsa sapma, ilgili teslim alma ziyaretinden hesaplanır ve şuna eşittir: Aksi takdirde, araç En fazla dokuz kesirli basamak içeren ve " |
shipmentLabel |
|
visitLabel |
|
visitType |
İsteğe bağlı. Ziyaretin türünü belirtir. |
injectedSolutionLocationToken |
Ziyaret edilen yerle ilgili bilgileri temsil eden opak bir jeton. Bu alan, bu ziyaret için Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin. |
VisitType
Ziyaretin teslim alma, teslimat veya Stop ziyareti olup olmadığını gösterir. Stop ziyaretleri yalnızca çok formatlı optimizasyon etkinleştirildiğinde kullanılır.
| Sıralamalar | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Belirtilmemiş ziyaret türü. |
PICKUP_SHIPMENT |
Ziyaret, kargo teslim alma işlemine karşılık gelir. |
DELIVER_SHIPMENT |
Ziyaret, bir kargo teslimatına karşılık gelir. |
Geçiş
Rotadaki iki etkinlik arasında geçiş yapma. ShipmentRoute açıklamasına bakın.
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ında seyahat süresi. En fazla dokuz kesirli basamak içeren ve " |
travelDistanceMeters |
Geçiş sırasında katedilen mesafe. |
trafficInfoUnavailable |
Trafik |
delayDuration |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Varsa gecikme, bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak En fazla dokuz kesirli basamak içeren ve " |
breakDuration |
Bu geçiş sırasında meydana gelen araların süresinin toplamı (varsa). Her molanın başlangıç zamanı ve süresiyle ilgili ayrıntılar En fazla dokuz kesirli basamak içeren ve " |
waitDuration |
Bu geçiş sırasında beklemede geçirilen 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, birbirini izlemeyen birkaç aralığa bölünebileceğini de unutmayın. En fazla dokuz kesirli basamak içeren ve " |
totalDuration |
Geçişin toplam süresi, kolaylık olması açısından sağlanır. Bu süre şuna eşittir:
En fazla dokuz kesirli basamak içeren ve " |
startTime |
Bu geçişin başlangıç zamanı. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
routePolyline |
Geçiş sırasında izlenen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
routeToken |
Yalnızca çıkış. Rotayı izleme sırasında rotayı yeniden oluşturmak için Navigation SDK'ya iletilebilen ve yeniden yönlendirme durumunda rota oluşturulurken amaçlanan orijinal rotayı kullanan 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, istekler arasında değerini karşılaştırmayın. Bu alan yalnızca |
vehicleLoads |
Bu geçiş sırasında araç yükleri, 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
Çoklu çizginin kodlanmış temsili. Çoklu çizgi kodlama 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 mola yürütülmesini temsil eden veriler.
| JSON gösterimi |
|---|
{ "startTime": string, "duration": string } |
| Alanlar | |
|---|---|
startTime |
Molanın başlangıç zamanı. Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da kabul edilir. Örnekler: |
duration |
Mola 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 varsa sınırlı bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters) ile ilgili araç sınırı (ör. 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 trafik nedeniyle uygunsuz olduğunda bazı ham doluluk oranları 1, 0'ı aşabilir. Örneğin, araç mesafe sınırını aşabilir. Bu durumlarda doluluk değerlerini 1, 0 ile sınırlarız.
| JSON gösterimi |
|---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
| Alanlar | |
|---|---|
maxFullness |
Bu iletideki 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 oran (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime). Payda yoksa bunun yerine ( |