Route Optimization API, ilgili istekteki araçlar için rotalar döndürür. Gönderiler araçlara atanır veya isteğin özelliklerine bağlı olarak atlanabilir.
Bir OptimizeToursResponse
mesajında (REST, gRPC) iki ana üst düzey özellik bulunur:
routes[]
, her aracın kendisine atanmış gönderilerle birlikte rotalarını gösterir. HerRoute
, ilgili rotanın özelliklerini yansıtan metrikleri içerir.metrics
, tüm araçlar ve rota planları genelinde yanıtın tamamına ait toplanmış metriklerdir. Üst düzey metrikler, rota başına metriklerle aynı özellikleri içerir ve değerler tüm rotalar genelinde toplanır.
Bazı özellikler, optimizasyon sonuçlarına bağlı olarak her zaman doldurulmayabilir:
skippedShipments[]
, herhangi bir araçla yapılmayan gönderileri listeler. Belirtilen kısıtlamalar dahilinde gerçekleştirilemeyen veya kargo maliyeti, ceza maliyetini aşan gönderimler atlanabilir. Örneğin, bir gönderinin teslim alınması veya teslimatı için çok dar birtimeWindow
varsa bir aracın gerekli zaman aralığında ziyareti gerçekleştirmesi mümkün olmayabilir veya maliyet açısından verimli olmayabilir.validationErrors[]
, isteğinsolvingMode
değeriVALIDATE_ONLY
olarak ayarlandığında isteği geçersiz kılan veya çözülmesini imkansız hale getiren hataları belirtir. NormalDEFAULT_SOLVE
modunda, doğrulama hataları yanıt gövdesi yerine hata mesajında gösterilir.VALIDATE_ONLY
çözüm modunun aynı anda birden fazla hata bildirebileceğini unutmayın. Bu, isteklerde hızlı bir şekilde hata ayıklamak için kullanışlıdır.
Rota özellikleri
Her routes[]
girişi bir ShipmentRoute
mesajıdır (REST, gRPC). Her ShipmentRoute
, istekteki belirli bir araç için rota atamasını temsil eder. İlgili ShipmentRoute
özellikleriyle ilgili önemli Vehicle
bilgiler şunlardır:
vehicleIndex
, ilgili istek mesajındakiVehicle
öğesinin sıfır tabanlı dizinidir. REST yanıtlarında, değer sıfır olduğunda bu özellik atlanır.vehicleStartTime
, aracın rotasına başlaması gereken zamandır.vehicleEndTime
, aracın rotasını tamamlamasının beklendiği zamandır.
Yanıt olarak routes
şu şekilde görünür:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
Her ShipmentRoute
, aracın tamamlayacağı visits
öğelerinin sıralı bir listesini içerir. Her bir Visit
(REST, gRPC), ilgili istekten gelen bir VisitRequest
(REST, gRPC) değerini temsil eder. Önemli Visit
özellikler:
shipmentIndex
, bu ziyaretin ait olduğu gönderinin ilgili istekteki sıfır tabanlı dizinidir.- Ziyaret bir teslim alma işlemi olduğunda
isPickup
doğru, teslimat olduğunda ise yanlış olur. REST yanıtlarında, değer yanlış olduğunda bu özellik atlanır. visitRequestIndex
, ilgili istektekiShipment.pickups
veyaShipment.deliveries
'den gelenVisitRequest
'nin sıfır tabanlı dizinidir veVisit
'i temsil eder. REST yanıtlarında değer sıfır olduğunda bu özellik atlanır.startTime
, ziyaretin başlamasının beklendiği zamandır.loadDemands
,Visit
işleminin tamamlanması için gereken yükleme miktarıyla yükleme türünü eşler. Yük miktarları, teslimat ziyaretleri için negatiftir ve araçtan kaldırılan yükü temsil eder.
Bir örnek Visit
şu şekilde görünür:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Her ShipmentRoute
, belirli bir araçla visits
arasında seyahati temsil eden transitions
öğelerinin sıralı bir listesini içerir. Önemli Transition
mesajı
(REST, gRPC) özellikleri şunlardır:
startTime
, aracın geçişi gerçekleştirmeye başlayacağı zamandır.travelDuration
, geçişin tamamlanması için aracın hareket etmesi gereken süredir.travelDistanceMeters
, geçişin tamamlanması için aracın gitmesi gereken mesafeyi (metre cinsinden) ifade eder.trafficInfoUnavailable
, geçiş için trafik verilerinin kullanılabilir olup olmadığını gösterir.waitDuration
, aracın bir sonrakiVisit
'ına başlamadan önce bekleyerek geçirdiği boşta kalma süresini gösterir. Bu durum, aşağıdakiVisit
start_time
nedeniyle oluşabilir.totalDuration
, seyahat, bekleme, mola ve gecikme süreleri dahil olmak üzere geçişin toplam süresidir.vehicleLoads
, bu geçiş sırasında araç tarafından taşınan yük miktarıyla yük türünü eşler.
Bir örnek Transition
şu şekilde görünür:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
vists
ve transitions
arasındaki ilişki hakkında daha fazla bilgi için ShipmentRoute
Teslim Alma ve Teslim Etme Durak Sırası Optimizasyonu ve ShipmentRoute
referans belgelerine (REST, gRPC) bakın. Transition
mesajının routePolyline
ve routeToken
özellikleri hakkında daha fazla bilgi için Geçiş Polylineleri ve Rota Jetonları başlıklı makaleyi inceleyin.
Metrik özellikleri
Metrics
mesajı (REST, gRPC) çözümün tamamını özetler.
Bazı önemli Metrics
özellikleri:
totalCost
, rotaları tamamlarken oluşan toplam maliyettir. Maliyet Modeli Parametreleri'ndeki maliyetler hakkında daha fazla bilgi edinin.usedVehicleCount
, çözümde kullanılan toplam araç sayısıdır. Optimizasyon aracı, araçların kullanımının gereksiz olduğunu belirlediğinde araçlar boş rotalara sahip olabilir.skippedMandatoryShipmentCount
, "zorunlu" olan atlanan gönderilerin sayısıdır. Zorunlu bir gönderimde, gönderim atlanırsa ortaya çıkacak birpenaltyCost
belirtilmiyor. Zorunlu gönderimler, belirtilen kısıtlamalar altında performansları mümkün değilse atlanabilir. Maliyet Modeli Parametreleri bölümünde maliyetler hakkında daha fazla bilgi edinin.
Ek metrikler AggregatedMetrics
mesajları (REST,
gRPC) olarak raporlanır. AggregatedMetrics
mesaj türü, Metrics.aggregatedRouteMetrics
mülkü ve ShipmentRoute.metrics
mülkü için kullanılır. Metrics.aggregatedRouteMetrics
, OptimizeToursResponse
içindeki tüm ShipmentRoute
'lerde toplanan metrikleri içerir. Her ShipmentRoute.metrics
mülkü, söz konusu ShipmentRoute
ile ilgili metrikleri içerir.
Önemli AggregatedMetrics
özellikleri şunlardır:
performedShipmentCount
, araçların tüm rotaları boyunca gerçekleştirdiği gönderi sayısıdır.travelDuration
, araçların rotalarını tamamlarken yolda geçirdiği toplam süredir.waitDuration
, araçların rotalarını tamamlarken bekleyerek geçirdiği toplam süredir.delayDuration
, araçların toplam gecikme süresidir. Bu değer, istekteTransitionAttributes
kullanılmadığı sürece genellikle sıfırdır.breakDuration
, araçların rotalarını tamamlarken molalarda geçirdiği toplam süredir.visitDuration
, araçların rotalarını tamamlarken ziyaret gerçekleştirerek geçirdiği toplam süredir. Bu, geçerli araca atanmışVisit
değerlerine karşılık gelenVisitRequest
değerleri için tümVisitRequest.duration
değerlerinin toplamıdır.totalDuration
, araçların rotalarını tamamlamak için gereken toplam süredir.travelDistanceMeters
, araçların rotalarını tamamlarken katettikleri toplam mesafedir.maxLoads
, yük türlerini araçların rotalarının herhangi bir noktasında taşıdığı maksimum yük miktarıyla eşler.
Örnek bir Metrics
mesajı şu şekilde görünür:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
Eksiksiz örnek
İstek Oluşturma bölümündeki istek için tam bir örnek yanıt şu şekilde görünür:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}