Bir aracın rotası, zaman ekseni üzerinde ş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ğıdakiler arasında fark olduğunu 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 "planlı etkinlikler". Bunlar belirli bir saniyede gerçekleşir.
- "zaman aralıkları" (ör. ziyaretlerin kendisi ve ziyaretler arasındaki geçiş). Zaman aralıkları bazen sıfır süreye (aynı saniyede başlayıp biten) olabilse de genellikle pozitif bir süreye sahiptir.
Sabitler:
- n ziyaret varsa n+1 geçişi vardır.
- Bir ziyaretin çevresinde her zaman kendisinden önce gelen bir geçiş (aynı dizin) ve sonrasında bir geçiş bulunur (dizin + 1).
- Aracın çalıştırılmasından sonra her zaman #0 geçiş yapılır.
- Araç bitişinden önce her zaman #n geçişi bulunur.
Yakınlaştırdığınızda 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, geçiş sırasında SEYAHAT, BREAKS, DELAY ve BEKLEME işlevlerinin nasıl düzenlenebileceği aşağıda anlatılmıştır.
- Birbiriyle çakışmaz.
- DELAY benzersizdir ve bir sonraki ziyaretten (veya aracın bitişinden) hemen önce olan ardışık bir dönem olmalıdır. Dolayısıyla, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmek yeterlidir.
- BREAKS birbirini takip eden 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" özelliklerdir: Bu geçişler 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 "bekleme"nin, kalan süreyi dolduracağını 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 |
|
vehicleLabel |
Belirtilmişse bu rotayı yürüten aracın etiketi (belirtilirse |
vehicleStartTime |
Aracın rotaya başladığı saat. Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
vehicleEndTime |
Aracın rotasını bitirdiği saat. Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
visits[] |
Bir rotayı temsil eden sıralı ziyaret dizisi. ziyaretler[i], rotadaki 1. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir. |
transitions[] |
Rota için sıralı geçiş listesi. |
hasTrafficInfeasibilities |
Next_visit tarihinde varış, trafik nedeniyle |
routePolyline |
Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
breaks[] |
Bu rotada ilerleyen araç için molalar planlandı. |
metrics |
Bu rota için süre, mesafe ve yük metrikleri. |
routeCosts |
Rotanın, maliyetle ilgili istek alanlarına göre ayrılmış maliyeti. Anahtarlar, OptimizeToursRequest girişine (ör. "model.shipments.pickups.cost") göre proto yollarıdır ve değerler, ilgili maliyet alanı tarafından oluşturulan ve rotanın tamamında toplanan toplam maliyettir. Başka bir deyişle maliyetler, ["model.shipments.pickups.cost"] rota üzerindeki tüm teslim alma maliyetlerinin toplamıdır. TransitionAttributes ile ilgili olan ve 2022.01 itibarıyla yalnızca toplu şekilde raporlanan TransitionAttribute maliyetleri hariç, modelde tanımlanan tüm maliyetler burada ayrıntılı olarak raporlanır.
|
routeTotalCost |
Rotanın toplam maliyeti. Maliyet haritasındaki tüm maliyetlerin toplamı. |
Şu adrese gidin:
Bir rota üzerinde gerçekleştirilen ziyaret. Bu ziyaret, bir Shipment
teslim alma veya teslimata karşılık geliyor.
JSON gösterimi |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
Alanlar | |
---|---|
shipmentIndex |
|
isPickup |
Doğruysa, ziyaret bir |
visitRequestIndex |
|
startTime |
Ziyaretin başladığı saat. Aracın ziyaret konumuna bundan daha erken gelebileceğini unutmayın. Saatler Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
loadDemands |
Gönderim ve
|
detour |
Güzergah, ziyaretten önce güzergâh üzerinde gidilen sevkiyatlar ve zaman aralıklarından kaynaklanan olası bekleme süreleri nedeniyle ek rotadan sapma süresi. Ziyaret teslimatsa, sapma, ilgili teslim alma ziyaretine göre hesaplanır ve şuna eşittir:
Aksi takdirde,
" |
shipmentLabel |
|
visitLabel |
|
Geçiş
Rota üzerinde iki olay 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ındaki seyahat süresi. " |
travelDistanceMeters |
Geçiş sırasında katedilen mesafe. |
trafficInfoUnavailable |
|
delayDuration |
Bu geçişe uygulanan gecikme sürelerinin toplamı. Böyle bir durumda, gecikme bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak " |
breakDuration |
Varsa bu geçiş sırasında meydana gelen araların süre toplamı. Her aranı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 ara zamanını içermez. Ayrıca, bu bekleme süresinin ardışık 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ük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
routePolyline |
Geçiş sırasında takip edilen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca |
vehicleLoads |
Bu geçiş sırasında araç yüklemeleri (bu aracın İlk geçiş sırasındaki yüklemeler, araç rotasının başlangıç yükleridir. Ardından, her ziyaretten sonra ziyaretin
|
EncodedPolyline
Bir çoklu çizginin kodlanmış gösterimi. Ç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
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ük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: |
duration |
Ara süresi. " |