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 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 "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 olabilir (yani aynı saniyede başlar ve biter). Ancak genellikle pozitif bir süreye sahiptir.
Sabit değerler:
- n ziyaret varsa n+1 geç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.
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, geçiş sırasında SEYAHAT, PARÇALAR, GECİKME ve BEKLEME işlevlerinin nasıl ayarlanabileceği burada açıklanmaktadır.
- Bu iki bölge ç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.
- ARALAR art arda gelen ve birbiriyle örtüşmeyen 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şeceğini ve "bekleme"nin, kalan süreyi dolduracağını 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 |
Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca |
breaks[] |
Bu rotayı yapan araç için planlanan aralar. |
metrics |
Bu rota için süre, mesafe ve yük metrikleri. |
routeCosts |
Maliyetle ilgili istek alanlarına göre ayrılmış 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. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rotadaki 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 rotada gerçekleştirilen ziyaret. Bu ziyaret, Shipment
ürününün teslim alınmasına veya teslimatına karşılık gelir.
JSON gösterimi |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
Alanlar | |
---|---|
shipmentIndex |
Kaynak |
isPickup |
Doğru ise ziyaret, bir |
visitRequestIndex |
|
startTime |
Ziyaretin başladığı zaman. Aracın ziyaret konumuna bundan daha erken gelebileceğ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
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. En fazla dokuz kesirli basamak içeren ve " |
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 oluşan araların süre toplamı (varsa). Her molanın başlangıç zamanı ve süresi En fazla dokuz kesirli basamak içeren ve " |
waitDuration |
Bu geçiş sırasında harcanan süre. Bekleme süresi, boşta kalma süresine karşılık gelir ve mola 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 sağlamak amacıyla belirtilen geçişin toplam süresi. Şuna 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 takip edilen 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 |
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 teslim alma mı yoksa teslimat mı olduğuna bağlı olarak sonraki geçişin yüklemelerini elde etmek için ziyarete ait |
EncodedPolyline
Ç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
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 |
Mola süresi. " |