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 bir fark yaptığımızı unutmayın:
- Aracın başlangıç ve bitişi ile her ziyaretin başlangıcı ve bitişi (diğer adıyla varış ve gidiş) 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üreye sahip olabilse de (ör. aynı saniyede başlangıç ve bitişte) ancak genellikle pozitif bir süreye sahiptirler.
Sabit değerler:
- n ziyaret varsa n+1 geçişi vardır.
- Bir ziyaret her zaman kendisinden önce bir geçiş (aynı dizin) ve ondan sonra bir geçiş (dizin + 1) ile çevrilidir.
- Araç başlangıcından sonra her zaman #0 geçişi gelir.
- 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, geçiş sırasında SEYAHAT, PARÇALAR, GECİKME ve BEKLEME işlevlerinin nasıl ayarlanabileceği burada açıklanmaktadır.
- Bunlar çakışmaz.
- Geciktirme benzersizdir ve bir sonraki ziyaretten (veya araç sonundan) hemen önceki kesintisiz bir süre olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmeniz yeterlidir.
- ARA verme süreleri, birbirini örtüşmeyen, bitişik zaman aralıklarıdır. Yanıt, her aranın başlangıç zamanını ve süresini belirtir.
- TRAVEL ve WAIT değerleri "öncelikli"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.
Bir (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ç ( |
vehicleLabel |
Bu rotayı gerçekleştiren aracın etiketi. Belirtilmişse |
vehicleStartTime |
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: |
vehicleEndTime |
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ılmıyor olarak kabul edilir. |
transitions[] |
Rotanın sıralı geçiş listesi. |
hasTrafficInfeasibilities |
Trafik nedeniyle artan seyahat süresi tahmini |
routePolyline |
Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
breaks[] |
Bu rotayı gerçekleştiren araç için programlanan aralar. |
metrics |
Bu rota için süre, mesafe ve yük metrikleri. |
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. Başka bir deyişle maliyet["model.shipments.pickups.cost"], rota üzerindeki tüm teslim alma maliyetlerinin toplamıdır. 01.01.2022 itibarıyla yalnızca toplu şekilde raporlanan TransitionAttributes ile ilgili maliyetler hariç olmak üzere, modelde tanımlanan tüm maliyetler burada ayrıntılı olarak raporlanmaktadı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 |
|
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 RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: |
loadDemands |
Gönderim ve ziyaret isteğinin toplamı olarak |
detour |
Ziyaretten önce rotada ziyaret edilen gönderimler ve zaman aralıklarının neden olduğu olası bekleme süresi nedeniyle ek rota izleme 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 |
|
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'dır.
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. " |
travelDistanceMeters |
Geçiş sırasında katedilen mesafe. |
trafficInfoUnavailable |
|
delayDuration |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Gecikme varsa tam olarak bir sonraki etkinlikten (ziyaret veya araç sonu) 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 aranı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 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. " |
totalDuration |
Kolaylık olması açısından geçişin toplam süresi. Eşittir:
" |
startTime |
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: |
routePolyline |
Geçiş sırasında izlenen 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 rota oluşturma durumunda rota oluşturulurken orijinal amacı dikkate almak için Gezinme SDK'sına 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ği için istekler genelinde değerini karşılaştırmayın. Bu alan yalnızca |
vehicleLoads |
Bu geçiş sırasında araç yüklemeleri. Bu araçta İlk geçiş sırasındaki yüklemeler, araç rotasının başlangıç yüklemeleridir. Ardından her ziyaretten sonra, ziyaretin teslim alma mı yoksa teslimat mı olduğuna bağlı olarak sonraki geçişin yüklemelerini elde etmek için ziyarete ait |
EncodedPolyline
Bir çoklu çizginin kodlanmış temsili. Çoklu çizgi kodlaması hakkında daha fazla bilgiyi şu adreste 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ı. RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip bir zaman damgası. Örnekler: |
duration |
Ara süresi. En fazla dokuz kesirli basamak içeren ve " |