Bir aracın rotası, zaman ekseninde aşağıdaki gibi ayrıştırılabilir (n ziyaret olduğunu varsayarız):
| | | | | 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 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ç sonundan önce her zaman #n geçişi gelir.
Yakınlaştırıldığında, Transition
ve Visit
sırasında neler olur?
---+-------------------------------------+-----------------------------+-->
| 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, BREAKS, DELAY ve WAIT öğelerinin geçiş sırasında nasıl düzenlenebileceğini aşağıda görebilirsiniz.
- Bunlar çakışmaz.
- GECİKME benzersizdir ve bir sonraki ziyaretten (veya aracın bitiş tarihinden) hemen önce kesintisiz bir zaman aralığı olmalıdır. Dolayısıyla, gecikme süresinin başlangıç ve bitiş zamanını bilmek yeterli olacaktır.
- 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 "ö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.
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. RFC3339 UTC "Zulu" biçiminde, nanosaniye çözünürlüğüne ve en fazla dokuz kesirli basamağa sahip 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 sıralı ziyaret dizisi. Ziyaretler[i], rotadaki 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 |
Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca |
breaks[] |
Bu rotayı yapan araç için planlanan aralar. |
metrics |
Bu rotanın süresi, mesafesi ve yük metrikleri. |
routeCosts |
Maliyetle ilgili istek alanlarına göre dökümü alınmış rota maliyeti. Anahtarlar, OptimizeToursRequest girişine (ör. "model.shipments.pickups.cost") kıyasla proto yollarıdır.Değerler, ilgili maliyet alanı tarafından oluşturulan ve tüm rota boyunca toplanan toplam maliyettir. 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 bundan daha erken gelebileceğini unutmayın. Saatler Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
loadDemands |
Gönderim ve ziyaret isteğinin toplamı olarak toplam ziyaret yükleme talebi
|
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 teslimatsa ek rota, ilgili teslim alma ziyaretine göre 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, |
Geçiş
Rota üzerindeki iki etkinlik arasındaki 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ı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) " |
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 " |
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 sağlamak amacıyla belirtilen 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ı. 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 |
vehicleLoads |
Araç, bu geçiş sırasında 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ış 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ı. Nanosaniye çözünürlüğüne sahip ve en fazla dokuz kesirli basamak içeren RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
duration |
Ara süresi. " |