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 biter) ancak genellikle pozitif sürelidir.
Sabitler:
- n ziyaret varsa n+1 geçiş vardır.
- Bir ziyaretin öncesinde (aynı dizin) ve sonrasında (dizin + 1) her zaman bir geçiş olur.
- 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 bulabilirsiniz.
- Çakışmazlar.
- GECİKME benzersizdir ve bir sonraki ziyaretten (veya araç sonundan) hemen önce gelen kesintisiz bir süre olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını bilmek için gecikme süresini bilmek yeterlidir.
- ARALAR, kesintisiz ve çakışmayan zaman aralıklarıdır. Yanıt, her aranın başlangıç zamanını ve süresini belirtir.
- 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) 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 |
Kaynaktaki diziniyle tanımlanan, rotayı gerçekleştiren araç |
vehicleLabel |
Belirtilmişse bu rotayı gerçekleştiren aracın |
vehicleStartTime |
Aracın rotasına başladığı saat. 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ı ziyaret dizisi. 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 |
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 rotanın süresi, mesafesi ve yük metrikleri. |
vehicleFullness |
Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir. |
routeCosts |
Rota maliyeti, maliyetle ilgili istek alanlarına göre dökümü alınmış şekilde. Anahtarlar, giriş OptimizeToursRequest'e göre 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. Başka bir deyişle, costs["model.shipments.pickups.cost"], rota üzerindeki 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ç 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 süreden 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 |
Gönderim ve ziyaret isteğinin toplamı olarak toplam ziyaret yükü talebi |
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 şu şekilde belirlenir: Aksi takdirde, araç En fazla dokuz kesirli basamak içeren ve " |
shipmentLabel |
|
visitLabel |
|
injectedSolutionLocationToken |
Ziyaret edilen konumla 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. |
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 kat edilen 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 bekleme süresi. Bekleme süresi, boşta kalma süresine karşılık gelir ve mola süresini içermez. Bu bekleme süresinin, birbirini izlemeyen aralıklar halinde 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). Ş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şturulurkenki orijinal amacı karşılayan 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 |
Aranı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 gibi 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 (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) oranı. Payda yoksa bunun yerine ( |