ShipmentRoute

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 bir fark yaptığımızı unutmayın:

  • Aracın başlangıç ve bitişi ile her ziyaretin başlangıcı ve bitişi (diğer bir deyişle varış ve gidiş) gibi "dakik etkinlikler". Belirli bir saniyede gerçekleşir.
  • "zaman aralıkları" (ör. ziyaretler ve ziyaretler arasındaki geçiş). 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, geçiş sırasında SEYAHAT, PARÇALAR, GECİKME ve BEKLEME işlevlerinin nasıl ayarlanabileceği burada açıklanmaktadır.

  • Bunlar çakışmaz.
  • Gecikme benzersizdir ve bir sonraki ziyaretten (veya araç sonundan) hemen önceki kesintisiz bir süre olmalıdır. Dolayısıyla, gecikme süresinin başlangıç ve bitiş zamanını bilmek yeterli olacaktır.
  • ARALAR ardışık ve ö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 varsayabilir ve bu "bekleyen" kalan süreyi doldurur.

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

integer

Rotayı gerçekleştiren araç (ShipmentModel kaynağındaki diziniyle tanımlanır).

vehicleLabel

string

Bu rotayı gerçekleştiren aracın etiketi (belirtilmişse ShipmentModel.vehicles(vehicleIndex).label).

vehicleStartTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

vehicleEndTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

visits[]

object (Visit)

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

transitions[]

object (Transition)

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

hasTrafficInfeasibilities

boolean

OptimizeToursRequest.consider_road_traffic doğru değerine 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. Ziyaretler arasında, ilk ziyaretten önce veya son ziyaretten sonra, trafiğe göre ayarlanmış seyahat, gecikme ve molaları tamamlamak ve yine de ziyaret ve araç süresi aralıklarından memnun kalmak için yeterli zaman olmayabilir. Örneğin,

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

Trafik nedeniyle travelDuration(previous_visit, next_visit) oranındaki seyahat süresi tahmini arttığından, next_visit'e varış, muhtemelen mevcut zaman aralığından daha geç olacak. Ayrıca, seyahat süresi tahminlerindeki artış ve ziyaret ya da ara verme zaman aralığı kısıtlamalarındaki artış nedeniyle, aranı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 değerine ayarlanırsa doldurulur.

breaks[]

object (Break)

Bu rotayı gerçekleştiren araç için planlanan molalar. breaks dizisi, her biri karşılık gelen startTime ile başlayan ve duration saniye süren zaman aralıklarını temsil eder.

metrics

object (AggregatedMetrics)

Bu rota için süre, mesafe ve yük metrikleri. AggregatedMetrics alanları, bağlama bağlı olarak tüm ShipmentRoute.transitions veya ShipmentRoute.visits üzerinden toplanır.

routeCosts

map (key: string, value: number)

Maliyetle ilgili istek alanlarına göre ayrılmış rota maliyeti. Anahtarlar, OptimizeToursRequest girişine göre proto yollarıdır (ör. "model.shipments.pickups.cost"tur. 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.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

routeTotalCost

number

Rotanın toplam maliyeti. Maliyet haritasındaki tüm maliyetlerin toplamı.

Ziyaret edin

Bir rotada gerçekleştirilen ziyaret. Bu ziyaret, Shipment adlı müşterinin 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 (Load)
    },
    ...
  },
  "detour": string,
  "shipmentLabel": string,
  "visitLabel": string
}
Alanlar
shipmentIndex

integer

ShipmentModel kaynağındaki shipments alanının dizini.

isPickup

boolean

Doğruysa ziyaret, Shipment teslim alma işlemine karşılık gelir. Aksi takdirde, bir yayınlama anlamına gelir.

visitRequestIndex

integer

Shipment öğesinin teslim alma veya teslimat alanındaki VisitRequest dizini (bkz. isPickup).

startTime

string (Timestamp format)

Ziyaretin başladığı zaman. Aracın ziyaret konumuna bundan daha erken gelebileceğini unutmayın. Saatler ShipmentModel ile tutarlı.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

loadDemands

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

Gönderim ve ziyaret isteğinin toplamı olarak loadDemands toplam ziyaret yükü talebi. Ziyaret bir yayınlamaysa değerler negatif olur. Transition.loads ile aynı türler için talepler raporlanır (bu alana bakın).

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

detour

string (Duration format)

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:

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 kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

shipmentLabel

string

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

visitLabel

string

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

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'dır.

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

string (Duration format)

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

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

travelDistanceMeters

number

Geçiş sırasında katedilen 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" olarak ayarlanır. Bu durum geçici (gerçek zamanlı 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 bir sonraki etkinlikten (ziyaret veya araç sonu) tam olarak delayDuration saniye önce gecikme başlar. Şu sayfaya göz atın: TransitionAttributes.delay.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

breakDuration

string (Duration format)

Bu geçiş sırasında oluşan araların süre toplamı (varsa). Her aranın başlangıç zamanı ve süresiyle ilgili ayrıntılar ShipmentRoute.breaks içinde depolanır.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

waitDuration

string (Duration format)

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 ardışık olmayan birkaç aralığa bölünebileceğini unutmayın.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

totalDuration

string (Duration format)

Kolaylık sağlamak amacıyla belirtilen geçişin toplam süresi. Eşittir:

  • sonraki ziyaret startTime (veya bu son geçişse vehicleEndTime): Bu geçişin startTime;
  • ShipmentRoute.has_traffic_infeasibilities yanlışsa şu değer de şunları içerir: `totalDuration = travelDuration + delayDuration
  • breakDuration + WaitDuration" arasında bir değer kullanabilirsiniz.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".

startTime

string (Timestamp format)

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

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

routePolyline

object (EncodedPolyline)

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

vehicleLoads

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

Araç, bu geçiş sırasında bu aracın Vehicle.load_limits aracı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 yüklenir.

İlk geçiş sırasındaki yüklemeler, araç rotasının başlangıç yüklemeleridir. 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 loadDemands eklenir veya çıkarılır.

"key": value çiftlerinin listesini içeren bir nesne. Örnek: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

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

string

Ç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

string (Timestamp format)

Aranın başlangıç zamanı.

RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

duration

string (Duration format)

Ara süresi.

En fazla dokuz kesir basamağı olan ve "s" ile biten, saniye cinsinden süre. Örnek: "3.5s".