Bir aracın rotası, zaman ekseni boyunca şu şekilde ayrıştırılabilir (n ziyaret olduğunu varsayıyoruz):
| | | | | 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 iki durum 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şir.
- 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 erer) 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ç çalıştırma işleminden sonra her zaman 0 numaralı geçiş yapılır.
- Araç 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 ziyaretin (veya araç sonunun) hemen öncesinde kesintisiz bir süre olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmek yeterlidir.
- ARALAR, birbirine bitişik ve çakışmayan zaman aralıklarıdır. Yanıt, her molanın başlangıç zamanını ve süresini belirtiyor.
- 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 düşünebilir.
(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ığı 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ı ziyaret dizisi. visits[i], rotadaki i'inci 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ı kullanan araç için planlanan molalar. |
metrics |
Bu rotanın süresi, mesafesi ve yük metrikleri. |
vehicleFullness |
Sınırlı 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 |
Rota maliyeti, maliyetle ilgili istek alanlarına göre dökümü alınmış şekilde. Anahtarlar, giriş OptimizeToursRequest'e göre göreceli olan 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"], rota üzerindeki 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 süreden daha erken 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önderi 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ç |
shipmentLabel |
|
visitLabel |
|
visitType |
İsteğe bağlıdır. Ziyaretin türünü belirtir. |
injectedSolutionLocationToken |
Ziyaret edilen konumla ilgili bilgileri temsil eden opak bir jeton. Bu alan, sonuç rotalarının ziyaretlerinde, 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. Bir durağa yapılan ziyaretler yalnızca çok formatlı optimizasyon etkinleştirildiğinde kullanılır.
| Sıralamalar | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Belirtilmemiş ziyaret türü. |
PICKUP_SHIPMENT |
Ziyaret, bir 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ş. 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. |
travelDistanceMeters |
Geçiş sırasında katedilen mesafe. |
trafficInfoUnavailable |
Trafik |
delayDuration |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Varsa gecikme, tam olarak bir sonraki etkinlikten (ziyaret veya araç sonu) |
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 |
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 birkaç aralığa bölünebileceğini de unutmayın. |
totalDuration |
Kolaylık sağlamak için geçişin toplam süresi belirtilir. Şuna eşittir:
|
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 ve yeniden yönlendirme durumunda rota oluşturulurkenki orijinal amacı karşılamak için Navigation SDK'ya iletilebilen 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
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. |
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 (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) oranı. Payda yoksa bunun yerine ( |