ShipmentRoute

Bir aracın rotası, zaman ekseni boyunca şu şekilde ayrıştırılabilir (n ziyaret olduğunu varsayıyoruz):

  |            |            |          |       |  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ğıdaki iki durum arasında ayrım yaptığımızı unutmayın:

  • Aracın başlangıcı ve bitişi ile her ziyaretin başlangıcı ve bitişi (varış ve ayrılış olarak da bilinir) 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üreli olabilir (ör. aynı saniyede başlayıp aynı saniyede sona erer) ancak genellikle pozitif sürelidir.

Sabitler:

  • n ziyaret varsa n+1 geçiş vardır.
  • Ziyaretler her zaman öncesinde bir geçiş (aynı dizin) ve sonrasında bir geçiş (dizin + 1) ile çevrilidir.
  • Araç çalıştırma işleminden sonra her zaman 0 numaralı geçiş yapılır.
  • Araç sonu her zaman #n geçişiyle başlar.

Yakınlaştırdığımızda Transition ve Visit sırasında gerçekleşen olaylar aşağıda açıklanmaktadır:

---+-------------------------------------+-----------------------------+-->
   |           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 TRAVEL, BREAKS, DELAY ve WAIT'in nasıl düzenlenebileceğini aşağıda bulabilirsiniz.

  • Çakışmazlar.
  • GECİKME benzersizdir ve bir sonraki ziyaretin (veya araç sonunun) hemen öncesinde kesintisiz bir süre olmalıdır. Bu nedenle, başlangıç ve bitiş zamanını öğrenmek için gecikme süresini bilmek yeterlidir.
  • ARALAR, birbirine bitişik ve çakışmayan zaman aralıklarıdır. Yanıt, her molanın başlangıç zamanını ve süresini belirtiyor.
  • TRAVEL ve WAIT, "öncelikli"dir: Bu geçiş sırasında birkaç kez kesintiye uğrayabilirler. Müşteriler, seyahatin "en kısa sürede" gerçekleşeceğini ve kalan sürenin "bekleme" ile geçeceğini düşünebilir.

(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

Kaynaktaki diziniyle tanımlanan, rotayı gerçekleştiren araç ShipmentModel.

vehicleLabel

string

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

vehicleStartTime

string (Timestamp format)

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

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da 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.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da 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], rotadaki i'inci ziyarettir. Bu alan boşsa araç kullanılmamış olarak kabul edilir.

transitions[]

object (Transition)

Rotadaki geçişlerin sıralı listesi.

hasTrafficInfeasibilities

boolean

OptimizeToursRequest.consider_road_traffic özelliği doğru olarak ayarlandığında bu alan, rota zamanlamalarındaki tutarsızlıkların trafik tabanlı seyahat süresi tahminleri kullanılarak tahmin edildiğini gösterir. Ziyaret ve araç zaman aralıklarını karşılamaya devam ederken, ilk ziyaretten önce veya son ziyaretten sonra, ziyaretler arasında trafiğe göre ayarlanmış seyahati, gecikmeleri ve molaları tamamlamak için yeterli zaman olmayabilir. Örneğin,

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

Trafik nedeniyle seyahat süresinin travelDuration(previous_visit, next_visit) kadar artması, next_visit konumuna varışın mevcut zaman aralığından daha geç olacağını gösteriyor. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret veya mola süresi aralığı kısıtlamaları nedeniyle bir molanın ziyaretle çakışması zorunlu olabilir.

routePolyline

object (EncodedPolyline)

Rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca OptimizeToursRequest.populate_polylines doğru olarak ayarlanırsa doldurulur.

breaks[]

object (Break)

Bu rotayı kullanan araç için planlanan molalar. breaks dizisi, her biri ilgili startTime'de 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ırlı metriklerin ilgili araç sınırlarına ne kadar yakın olduğunu hesaplamak için VehicleFullness alanı. Alanları, sınırlı 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)

Rota maliyeti, maliyetle ilgili istek alanlarına göre dökümü alınmış şekilde. Anahtarlar, giriş OptimizeToursRequest'e göre göreceli olan proto yollarıdır (ör. "model.shipments.pickups.cost"). Değerler ise ilgili maliyet alanı tarafından oluşturulan ve rotanın tamamında toplanan toplam maliyettir. Diğer bir deyişle, costs["model.shipments.pickups.cost"], rota üzerindeki tüm teslim alma maliyetlerinin toplamıdır. Modelde tanımlanan tüm maliyetler, 2022/01 itibarıyla yalnızca toplu olarak bildirilen TransitionAttributes ile ilgili maliyetler hariç olmak üzere 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 gerçekleştirilen ziyaret. Bu ziyaret, Shipment teslim alma veya teslim etme işlemine 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,
  "visitType": enum (VisitType),
  "injectedSolutionLocationToken": integer
}
Alanlar
shipmentIndex

integer

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

isPickup

boolean

Doğruysa ziyaret, Shipment teslimatına karşılık gelir. Aksi takdirde, bir teslimata karşılık gelir.

visitRequestIndex

integer

VisitRequest, Shipment'nin teslim alma veya teslimat alanında yer almalıdır (isPickup bölümüne bakın).

startTime

string (Timestamp format)

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

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da 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önderi ve ziyaret isteğinin toplamı olarak toplam ziyaret yükü talebi loadDemands. Ziyaret bir teslimatsa değerler negatiftir. Talepler, Transition.loads ile aynı türler için raporlanır (bu alana bakın).

detour

string (Duration format)

Ziyaretten önce rotada ziyaret edilen gönderiler ve zaman aralıklarının neden olduğu olası bekleme süresi nedeniyle ek sapma süresi. Ziyaret bir teslimatsa sapma, ilgili teslim alma ziyaretinden hesaplanır ve şu şekilde belirlenir:

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

Aksi takdirde, araç startLocation değerinden hesaplanır ve şu değere eşittir:

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

string

Shipment içinde belirtilmişse ilgili Shipment.label öğesinin kopyası.

visitLabel

string

VisitRequest içinde belirtilmişse ilgili VisitRequest.label öğesinin kopyası.

visitType

enum (VisitType)

İsteğe bağlıdır. Ziyaretin türünü belirtir. Visit.is_pickup alanını geçersiz kılar.

injectedSolutionLocationToken

integer

Ziyaret edilen konumla ilgili bilgileri temsil eden opak bir jeton.

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

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

VisitType

Ziyaretin teslim alma, teslimat veya Stop ziyareti olup olmadığını gösterir. Bir durağa yapılan ziyaretler yalnızca çok formatlı optimizasyon etkinleştirildiğinde kullanılır.

Sıralamalar
VISIT_TYPE_UNSPECIFIED Belirtilmemiş ziyaret türü.
PICKUP_SHIPMENT Ziyaret, bir kargo teslim alma işlemine karşılık gelir.
DELIVER_SHIPMENT Ziyaret, bir kargo teslimatına karşılık gelir.

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 (EncodedPolyline)
  },
  "routeToken": string,
  "vehicleLoads": {
    string: {
      object (VehicleLoad)
    },
    ...
  }
}
Alanlar
travelDuration

string (Duration format)

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

travelDistanceMeters

number

Geçiş sırasında katedilen mesafe.

trafficInfoUnavailable

boolean

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

delayDuration

string (Duration format)

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

breakDuration

string (Duration format)

Bu geçiş sırasında meydana gelen araların süresinin toplamı (varsa). Her molanın başlangıç zamanı ve süresiyle ilgili ayrıntılar ShipmentRoute.breaks içinde saklanır.

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 mola süresini içermez. Bu bekleme süresinin, birbirini izlemeyen birkaç aralığa bölünebileceğini de unutmayın.

totalDuration

string (Duration format)

Kolaylık sağlamak için geçişin toplam süresi belirtilir. Şuna eşittir:

  • sonraki ziyaret startTime (veya bu son geçişse vehicleEndTime) - bu geçişin startTime;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa ayrıca şunlar geçerlidir: `totalDuration = travelDuration + delayDuration
  • breakDuration + waitDuration`.
startTime

string (Timestamp format)

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

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da 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 izlenen rotanın kodlanmış çoklu çizgi gösterimi. Bu alan yalnızca populateTransitionPolylines doğru olarak ayarlanırsa doldurulur.

routeToken

string

Yalnızca çıkış. Rotayı izleme sırasında rotayı yeniden oluşturmak ve yeniden yönlendirme durumunda rota oluşturulurkenki orijinal amacı karşılamak için Navigation SDK'ya iletilebilen 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ğinden, istekler arasında değerini karşılaştırmayın. Bu alan yalnızca populateTransitionPolylines doğru olarak ayarlanırsa doldurulur.

vehicleLoads

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

Bu geçiş sırasında araç yükleri, bu aracın Vehicle.load_limits içinde görünen veya bu rotada yapılan bazı gönderilerde sıfır olmayan Shipment.load_demands olan 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, ziyaretin teslimat veya teslim alma olup olmadığına bağlı olarak bir sonraki geçişin yüklerini elde etmek için eklenir ya da çıkarılır.

EncodedPolyline

Çoklu çizginin kodlanmış temsili. Çoklu çizgi kodlama 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

Mola yürütülmesini temsil eden veriler.

JSON gösterimi
{
  "startTime": string,
  "duration": string
}
Alanlar
startTime

string (Timestamp format)

Molanın başlangıç zamanı.

Zaman damgasında RFC 3339 kullanılır. Yani oluşturulan çıkış her zaman Z ile normalleştirilir ve 0, 3, 6 veya 9 kesirli basamak kullanılır. "Z" dışındaki zaman farkları da 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)

Mola süresi.

VehicleFullness

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

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

number

Bu iletideki 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 da ayarlanmamış olur.

travelDuration

number

[AggregatedMetrics.travel_duration_seconds][] ile Vehicle.travel_duration_limit arasındaki oran. Vehicle.travel_duration_limit ayarlanmamışsa bu alan da ayarlanmamış olur.

activeDuration

number

[AggregatedMetrics.total_duration_seconds][] ile Vehicle.route_duration_limit arasındaki oran. Vehicle.route_duration_limit ayarlanmamışsa bu alan da ayarlanmamış olur.

maxLoad

number

Tüm [AggregatedMetrics.max_load][] türleri ve ilgili Vehicle.load_limits arasındaki maksimum oran. Tüm Vehicle.load_limits alanları ayarlanmamışsa bu alan da ayarlanmaz.

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.