Route Optimization API, ilgili istekteki araçların rotalarını döndürür. Gönderimler araçlara atanır veya isteğin özelliklerine bağlı olarak atlanabilir.
OptimizeToursResponse
mesajının (REST, gRPC) iki ana üst düzey özelliği vardır:
routes[]
, atanmış kargolarıyla birlikte her aracın rotalarıdır. HerRoute
, ilgili rotanın özelliklerini yansıtan metrikler içerir.metrics
, tüm araçlar ve rota planları genelinde yanıtın tamamı için toplanmış metriklerdir. Üst düzey metrikler, rota başına metriklerle aynı özellikleri içerir ve değerleri tüm rotalar genelinde toplanır.
Bazı özellikler, optimizasyon sonuçlarına bağlı olarak her zaman doldurulmayabilir:
skippedShipments[]
, herhangi bir araç tarafından yapılmayan gönderimleri listeler. Belirtilen kısıtlamalar dahilinde gerçekleştirilemiyorsa veya gönderimi gerçekleştirme maliyeti ceza maliyetini aşıyorsa gönderim atlanabilir. Örneğin, bir gönderinin alınması veya teslim edilmesi için çok dar birtimeWindow
varsa bir aracın gerekli zaman aralığında ziyareti gerçekleştirmesi mümkün olmayabilir veya maliyetli olabilir.validationErrors[]
, isteğinsolvingMode
değeriVALIDATE_ONLY
olarak ayarlandığında isteği geçersiz kılan veya çözümünü imkansız kılan hataları belirtir. NormalDEFAULT_SOLVE
modunda, doğrulama hataları yanıt gövdesi yerine bir hata mesajında görünür.VALIDATE_ONLY
Çözüm modunun, isteklerde hızlıca hata ayıklama için yararlı olan birden fazla hatayı tek seferde bildirebileceğini unutmayın.
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 Vehicle
ile ilgili önemli ShipmentRoute
özellikleri şunlardır:
vehicleIndex
, ilgili istek mesajındakiVehicle
öğesinin sıfır tabanlı dizinidir. REST yanıtları, değer sıfır olduğunda bu özelliği atlar.vehicleStartTime
, aracın rotasına başlaması gereken zamandır.vehicleEndTime
, aracın rotasını tamamlamasının beklendiği zamandır.
Yanıtlarda 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
'ların sıralı bir listesini içerir. Her Visit
(REST, gRPC), ilgili istekteki bir VisitRequest
(REST, gRPC) temsil eder. Önemli Visit
mülkler şunlardır:
shipmentIndex
, ilgili istekteki bu ziyaretin ait olduğu gönderinin sıfır tabanlı dizinidir.isPickup
, ziyaret teslimat olduğunda yanlış, teslim alma olduğunda doğru değerini alır. REST yanıtları, değer yanlış olduğunda bu özelliği atlar.visitRequestIndex
,Visit
'in temsil ettiği ilgili istektekiShipment.pickups
veyaShipment.deliveries
'tenVisitRequest
'in sıfır tabanlı dizinidir. REST yanıtları, değer sıfır olduğunda bu özelliği atlar.startTime
, ziyaretin başlamasının beklendiği zamandır.loadDemands
,Visit
işlemini tamamlamak için gereken yükleme miktarını yükleme türüne eşler. Teslimat ziyaretleri için yük miktarları negatiftir ve araçtan kaldırılan yükü temsil eder.
Visit
örneği şu şekilde görünür:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Her ShipmentRoute
, belirli bir araç için visits
arasında yapılan seyahatleri temsil eden sıralı bir transitions
listesi içerir. Önemli Transition
mesaj (REST, gRPC) özellikleri şunlardır:
startTime
, aracın geçişi gerçekleştirmeye başlayacağı zamandır.travelDuration
, aracın geçişi tamamlamak için kat etmesi gereken süredir.travelDistanceMeters
, aracın geçişi tamamlamak için kat etmesi gereken mesafedir (metre cinsinden).trafficInfoUnavailable
, geçiş için trafik verilerinin kullanılıp kullanılamayacağını belirtir.waitDuration
, aracın bir sonrakiVisit
'sini başlatmadan önce beklediği boşta kalma süresini temsil eder. Bu durum, aşağıdakiVisit
içinstart_time
nedeniyle ortaya çıkabilir.totalDuration
, seyahat, bekleme, ara verme ve gecikme süreleri dahil olmak üzere geçişin toplam süresidir.vehicleLoads
, yük türünü bu geçiş sırasında araç tarafından taşınan yük miktarıyla eşleştirir.
Transition
örneği ş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 Araç Alma ve Teslimat Durağı Siparişi Optimizasyonu ve ShipmentRoute
referans dokümanlarına (REST, gRPC) bakın. Transition
mesajının routePolyline
ve routeToken
özellikleri hakkında daha fazla bilgi için Geçiş Poli çizgileri ve Rota Jetonları başlıklı makaleyi inceleyin.
Metrik özellikleri
Metrics
mesajı (REST, gRPC), çözümün tamamını özetler.
Metrics
mülklerinin bazı önemli özellikleri şunlardır:
totalCost
, rotaların tamamlanmasıyla ilgili toplam maliyettir. Maliyet Modeli Parametreleri bölümünde maliyetler hakkında daha fazla bilgi edinin.usedVehicleCount
, çözümde kullanılan toplam araç sayısıdır. Optimize edici, kullanımlarının gereksiz olduğunu belirlediğinde araçların rotaları boş olabilir.skippedMandatoryShipmentCount
, "zorunlu" olan atlanan gönderimlerin sayısıdır. Zorunlu gönderimlerde, gönderim atlanırsa ödenmesi gereken birpenaltyCost
belirtilmez. Zorunlu gönderimler, performansları belirtilen kısıtlamalar altında 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
'daki tüm ShipmentRoute
'larda toplanan metrikleri içerir. Her ShipmentRoute.metrics
mülkü, ilgili ShipmentRoute
için metrikler içerir.
Önemli AggregatedMetrics
mülkleri şunlardır:
performedShipmentCount
, araçların tüm rotalarında gerçekleştirdiği gönderi sayısıdır.travelDuration
, araçların rotalarını tamamlarken aktarma merkezlerinde geçirdiği toplam süredir.waitDuration
, araçların rotalarını tamamlarken bekledikleri toplam süredir.delayDuration
, araçların toplam gecikme süresidir. İstekteTransitionAttributes
kullanılmadığı sürece bu değer genellikle sıfırdır.breakDuration
, araçların rotalarını tamamlarken aralarda geçirdiği toplam süredir.visitDuration
, araçların rotalarını tamamlarken ziyaret gerçekleştirmek için harcadığı toplam süredir. Bu, geçerli araca atananVisit
'lere karşılık gelenVisitRequest
'ler 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 katettiği 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
}
}
}
Tam örnek
İstek Oluşturma bölümündeki istek için tam örnek yanıt şu şekildedir:
{
"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
}
}
}