ShipmentRoute

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:

  • 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 olabilir (yani aynı saniyede başlar ve biter). Ancak genellikle pozitif bir süreye sahiptir.

Değişmezler:

  • n ziyaret varsa n+1 geçiş vardır.
  • Bir ziyaret her zaman kendisinden önceki bir geçiş (aynı dizin) ve kendisinden sonraki bir geçiş (dizin + 1) ile çevrilidir.
  • Araç çalıştırma işlemini her zaman 0 numaralı geçiş izler.
  • Araç sonunun önünde her zaman n. geçiş 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, TRAVEL (SEYAHAT), BREAKS (ARA), DELAY (GECİKME) ve WAIT (BEKLE) öğelerinin geçiş sırasında nasıl düzenlenebileceğini görebilirsiniz.

  • Bu iki bölge çakışmaz.
  • Gecikme benzersizdir ve bir sonraki ziyaretten (veya aracın bitiş tarihinden) hemen önce kesintisiz bir zaman aralığı olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmeniz yeterlidir.
  • ARA VERİLECEK ZAMANLAR, birbirini takip eden ve çakışmayan zaman aralıklarıdır. Yanıt, her bir 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.

(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 (Visit)
    }
  ],
  "transitions": [
    {
      object (Transition)
    }
  ],
  "hasTrafficInfeasibilities": boolean,
  "routePolyline": {
    object (EncodedPolyline)
  },
  "breaks": [
    {
      object (Break)
    }
  ],
  "metrics": {
    object (AggregatedMetrics)
  },
  "vehicleFullness": {
    object (VehicleFullness)
  },
  "routeCosts": {
    string: number,
    ...
  },
  "routeTotalCost": number
}
Alanlar
vehicleIndex

integer

Rotayı gerçekleştiren araç. Kaynaktaki diziniyle ShipmentModel tanımlanır.

vehicleLabel

string

Bu rotayı gerçekleştiren aracın etiketi. Belirtilmişse ShipmentModel.vehicles(vehicleIndex).label değerine eşittir.

vehicleStartTime

string (Timestamp format)

Aracın rotasına başladığı zaman.

Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

vehicleEndTime

string (Timestamp format)

Aracın rotasını tamamladığı zaman.

Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

visits[]

object (Visit)

Bir rotayı temsil eden sıralı ziyaret dizisi. visits[i], rotada i. ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir.

transitions[]

object (Transition)

Rotanın geçişlerinin sıralı listesi.

hasTrafficInfeasibilities

boolean

OptimizeToursRequest.consider_road_traffic doğru olarak ayarlandığında bu alan, rota zamanlamalarındaki tutarsızlıkların trafiğe dayalı seyahat süresi tahminleri kullanılarak tahmin edildiğini gösterir. Ziyaret ve araç zaman aralıklarını karşılarken trafik koşullarına göre ayarlanmış seyahat, gecikmeler ve ziyaretler arasındaki araları tamamlamak için yeterli zaman olmayabilir. Örneğin,

  startTime(previous_visit) + duration(previous_visit) +
  travelDuration(previous_visit, next_visit) > startTime(next_visit)

Trafik nedeniyle artan seyahat süresi tahmini travelDuration(previous_visit, next_visit) nedeniyle, next_visit adresine varış büyük olasılıkla mevcut zaman aralığından daha geç gerçekleşecektir. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret ya da ara verme süresi aralığı kısıtlamaları nedeniyle ara verme zamanının bir ziyaretle çakışma ihtimali de vardır.

routePolyline

object (EncodedPolyline)

Rotayı kodlanmış çoklu çizgi temsili. Bu alan yalnızca OptimizeToursRequest.populate_polylines doğru değerine ayarlanırsa doldurulur.

breaks[]

object (Break)

Bu rotayı yapan araç için planlanan ara verme noktaları. breaks dizisi, her biri ilgili startTime değerinden başlayıp duration saniye süren zaman aralıklarını temsil eder.

metrics

object (AggregatedMetrics)

Bu rotanın süresi, mesafesi ve yük metrikleri. AggregatedMetrics alanları, bağlama bağlı olarak tüm ShipmentRoute.transitions veya ShipmentRoute.visits için toplanır.

vehicleFullness

object (VehicleFullness)

Sınırlandırılmış metriklerin ilgili araç sınırlarına ne kadar yakın olduğunu hesaplamak için VehicleFullness alanı. Alanları, sınırlandırılmış bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters) ile ilgili araç sınırı (ör. Vehicle.route_distance_limit) arasındaki oranlardır.

Deneysel: Bu alanın davranışı veya varlığı gelecekte değişebilir.

routeCosts

map (key: string, value: number)

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. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rotadaki tüm teslim alma maliyetlerinin toplamıdır. Modelde tanımlanan tüm maliyetler, 2022/01 itibarıyla yalnızca toplu olarak raporlanan TransitionAttributes ile ilgili maliyetler hariç burada ayrıntılı olarak raporlanır.

routeTotalCost

number

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 (Load)
    },
    ...
  },
  "detour": string,
  "shipmentLabel": string,
  "visitLabel": string,
  "injectedSolutionLocationToken": integer
}
Alanlar
shipmentIndex

integer

Kaynak ShipmentModel içindeki shipments alanının dizini.

isPickup

boolean

Doğru ise ziyaret, Shipment teslim almaya karşılık gelir. Aksi takdirde, bir teslimata karşılık gelir.

visitRequestIndex

integer

Shipment öğesinin teslim alma veya teslimat alanındaki VisitRequest dizini (isPickup bölümüne bakın).

startTime

string (Timestamp format)

Ziyaretin başladığı zaman. Aracın ziyaret konumuna bu saatten daha erken ulaşabileceğini unutmayın. Saatler ShipmentModel ile tutarlıdır.

Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

loadDemands

map (key: string, value: object (Load))

Gönderim ve ziyaret isteğinin toplamı olarak toplam ziyaret yükleme talebi loadDemands. Ziyaret bir yayınsa değerler negatiftir. Talepler, Transition.loads ile aynı türlerde raporlanır (bu alana bakın).

detour

string (Duration format)

Ziyaretten önce rota üzerinde ziyaret edilen gönderimler ve zaman aralıkları nedeniyle ortaya çıkan olası bekleme süresi nedeniyle ek yan yol süresi. Ziyaret bir teslimat ise yan yol, ilgili teslim alma ziyaretinden hesaplanır ve şuna eşittir:

startTime(delivery) - startTime(pickup)
- (duration(pickup) + travel duration from the pickup location
to the delivery location).

Aksi takdirde, startLocation aracından hesaplanır ve şuna eşittir:

startTime - vehicleStartTime - travel duration from
the vehicle's `startLocation` to the visit.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

shipmentLabel

string

Shipment'da belirtilmişse ilgili Shipment.label öğesinin kopyası.

visitLabel

string

VisitRequest'da belirtilmişse ilgili VisitRequest.label öğesinin kopyası.

injectedSolutionLocationToken

integer

Ziyaret konumuyla ilgili bilgileri temsil eden opak bir jeton.

Bu alan, VisitRequest.avoid_u_turns bu ziyaret için doğru olarak ayarlandığında veya ShipmentModel.avoid_u_turns, OptimizeToursRequest isteğinde doğru olarak ayarlandığında sonuç rotalarının ziyaretlerinde doldurulabilir.

Deneysel: Daha fazla bilgi için https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request adresini ziyaret edin.

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 olur.

JSON gösterimi
{
  "travelDuration": string,
  "travelDistanceMeters": number,
  "trafficInfoUnavailable": boolean,
  "delayDuration": string,
  "breakDuration": string,
  "waitDuration": string,
  "totalDuration": string,
  "startTime": string,
  "routePolyline": {
    object (EncodedPolyline)
  },
  "routeToken": string,
  "vehicleLoads": {
    string: {
      object (VehicleLoad)
    },
    ...
  }
}
Alanlar
travelDuration

string (Duration format)

Bu geçiş sırasındaki seyahat süresi.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

travelDistanceMeters

number

Geçiş sırasında kat edilen mesafe.

trafficInfoUnavailable

boolean

OptimizeToursRequest.consider_road_traffic üzerinden trafik istendiğinde ve Transition için trafik bilgileri alınamadığında bu boole değeri true (doğru) olarak ayarlanır. Bu durum geçici (anlık trafik sunucularında nadir görülen bir kesinti) veya kalıcı (bu konum için veri yok) olabilir.

delayDuration

string (Duration format)

Bu geçişe uygulanan gecikme sürelerinin toplamı. Gecikme varsa bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak delayDuration saniye önce başlar. Şu sayfaya göz atın: TransitionAttributes.delay.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

breakDuration

string (Duration format)

Bu geçiş sırasında gerçekleşen araların süresinin toplamı (varsa). Her molanın başlangıç zamanı ve süresi ShipmentRoute.breaks içinde saklanır.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

waitDuration

string (Duration format)

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 "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

totalDuration

string (Duration format)

Kolaylık olması açısından geçişin toplam süresi. Şuna eşittir:

  • sonraki ziyaret startTime (veya son geçişse vehicleEndTime) - bu geçişin startTime;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa ek olarak aşağıdakiler de geçerlidir: `totalDuration = travelDuration + delayDuration
  • breakDuration + waitDuration`.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

startTime

string (Timestamp format)

Bu geçişin başlangıç zamanı.

Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

routePolyline

object (EncodedPolyline)

Geçiş sırasında takip edilen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca populateTransitionPolylines doğru değerine ayarlanırsa doldurulur.

routeToken

string

Yalnızca çıkış. Navigasyon sırasında rotayı yeniden oluşturmak ve yeniden yönlendirme durumunda rotanın oluşturulduğu orijinal amacı dikkate almak için Navigation SDK'ya iletilebilecek opak bir jeton. Bu jetonu opak bir blob olarak işleyin. Hizmet tam olarak aynı rotayı döndürse bile değeri değişebileceğinden, değerini istekler arasında karşılaştırmayın. Bu alan yalnızca populateTransitionPolylines doğru değerine ayarlanırsa doldurulur.

vehicleLoads

map (key: string, value: object (VehicleLoad))

Bu geçiş sırasında araç yüklemeleri. Bu aracın Vehicle.load_limits alanında görünen veya bu rotada gerçekleştirilen bazı gönderimlerde sıfır olmayan Shipment.load_demands değerine sahip her tür için.

İlk geçiş sırasındaki yükler, araç rotasının başlangıç yükleridir. Ardından, her ziyaretten sonra ziyaretin loadDemands değeri, ziyaretin teslimat mı yoksa teslim alma mı olduğuna bağlı olarak bir sonraki geçişin yüklerini almak için eklenir veya çıkarılır.

EncodedPolyline

Bir çoklu çizginin kodlanmış gösterimi. Poli çizgi kodlaması 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

string

Ç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

string (Timestamp format)

Aranın başlangıç zamanı.

Oluşturulan çıktının her zaman Z normalleştirileceği ve 0, 3, 6 veya 9 kesirli basamak kullanacağı RFC 3339'u kullanır. "Z" dışındaki ofsetler de kabul edilir. Örnekler: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" veya "2014-10-02T15:01:23+05:30".

duration

string (Duration format)

Aranın süresi.

En fazla dokuz kesirli basamak içeren ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

VehicleFullness

VehicleFullness, bir aracın ne kadar dolu olduğunu hesaplayan bir metriktir. Her VehicleFullness alanı, 0 ile 1 arasındadır ve sınırlı bir metrik alanı (ör. AggregatedMetrics.travel_distance_meters) ile ilgili araç sınırı (varsa 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 trafikle ilgili uygunsuzluklara tabi olduğunda bazı ham doluluk oranları 1,0'u aşabilir (ör. araç mesafe sınırını aşabilir). Bu durumlarda, doluluk değerlerini 1,0 olarak sınırlandırırız.

JSON gösterimi
{
  "maxFullness": number,
  "distance": number,
  "travelDuration": number,
  "activeDuration": number,
  "maxLoad": number,
  "activeSpan": number
}
Alanlar
maxFullness

number

Bu mesajdaki diğer tüm alanların maksimum değeri.

distance

number

AggregatedMetrics.travel_distance_meters ile Vehicle.route_distance_limit arasındaki oran. Vehicle.route_distance_limit ayarlanmamışsa bu alanın değeri de ayarlanmaz.

travelDuration

number

[AggregatedMetrics.travel_duration_seconds][] ile Vehicle.travel_duration_limit arasındaki oran. Vehicle.travel_duration_limit ayarlanmamışsa bu alanın değeri de ayarlanmaz.

activeDuration

number

[AggregatedMetrics.total_duration_seconds][] ile Vehicle.route_duration_limit arasındaki oran. Vehicle.route_duration_limit ayarlanmamışsa bu alanın değeri de ayarlanmaz.

maxLoad

number

Tüm [AggregatedMetrics.max_load][] türleri ve ilgili Vehicle.load_limits değerleri arasındaki maksimum oran. Tüm Vehicle.load_limits alanları ayarlanmamışsa bu alanın da ayarı kaldırılır.

activeSpan

number

Belirli bir araç için (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) oranı. Payda yoksa bunun yerine (ShipmentModel.global_end_time - ShipmentModel.global_start_time) kullanılır.