ShipmentRoute

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

integer

ShipmentModel kaynağındaki diziniyle tanımlanan, rotayı yürüten araç.

vehicleLabel

string

Belirtilmişse bu rotayı yürüten aracın etiketi (belirtilirse ShipmentModel.vehicles(vehicleIndex).label değerine eşit).

vehicleStartTime

string (Timestamp format)

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: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

vehicleEndTime

string (Timestamp format)

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: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

visits[]

object (Visit)

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

transitions[]

object (Transition)

Rota için sıralı geçiş listesi.

hasTrafficInfeasibilities

boolean

OptimizeToursRequest.consider_road_traffic, doğru değerine ayarlandığında bu alan, rota zamanları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, ziyarete ve araç sürelerine uygun şekilde hareket etmeye devam etmek için yeterli zaman olmayabilir. Örneğin,

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

Next_visit tarihinde varış, trafik nedeniyle travelDuration(previous_visit, next_visit) seyahat süresi tahmininin artması nedeniyle büyük olasılıkla geçerli zaman aralığından daha geç olacaktır. Ayrıca seyahat süresi tahminlerindeki ve ziyaret ya da mola zaman aralığı kısıtlamalarındaki artış nedeniyle aranın ziyaretle çakışmaya zorlanması da mümkündür.

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 rotada ilerleyen araç için molalar planlandı. 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 genelinde toplanır.

routeCosts

map (key: string, value: number)

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.

"key": value çiftlerin 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ı.

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

integer

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

isPickup

boolean

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

visitRequestIndex

integer

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

startTime

string (Timestamp format)

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

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

loadDemands

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

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

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

detour

string (Duration format)

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:

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.

"s" ile biten ve en fazla dokuz kesir basamağı olan, saniye cinsinden bir 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 ü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 (EncodedPolyline)
  },
  "vehicleLoads": {
    string: {
      object (VehicleLoad)
    },
    ...
  }
}
Alanlar
travelDuration

string (Duration format)

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

"s" ile biten ve en fazla dokuz kesir basamağı olan, saniye cinsinden bir 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ıysa bu boole doğru olarak ayarlanır. Bu, geçici (gerçek zamanlı trafik sunucularında nadir görülen) veya kalıcı (bu konum için veri yok) olabilir.

delayDuration

string (Duration format)

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

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

breakDuration

string (Duration format)

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 ShipmentRoute.breaks bölümünde depolanır.

"s" ile biten ve en fazla dokuz kesir basamağı olan, saniye cinsinden bir 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 zamanını içermez. Ayrıca, bu bekleme süresinin ardışık olmayan birkaç aralığa bölünebileceğini unutmayın.

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

totalDuration

string (Duration format)

Kolaylık olması açısından 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ış değerine ayarlanırsa şu bilgiler de sağlanır: `totalDuration = travelDuration + delayDuration
  • breakDuration + WaitDuration" e olmalıdır.

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

startTime

string (Timestamp format)

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: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

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.

vehicleLoads

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

Bu geçiş sırasında araç yüklemeleri (bu aracın Vehicle.load_limits bölümünde görünen veya bu rotadaki bazı gönderimlerde sıfır dışında Shipment.load_demands olan her tür için).

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

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

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

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

Nanosaniye çözünürlük ve en fazla dokuz kesir basamağı olan, RFC3339 UTC "Zulu" biçiminde bir zaman damgası. Örnekler: "2014-10-02T15:01:23Z" ve "2014-10-02T15:01:23.045123456Z".

duration

string (Duration format)

Ara süresi.

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