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ı özelliklere sahiptir 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 gerçekleştirilmeyen 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 kısa birtimeWindowvarsa bir aracın gerekli zaman aralığında ziyareti gerçekleştirmesi mümkün olmayabilir veya maliyet açısından verimli olmayabilir.validationErrors[], isteğinsolvingModedeğeriVALIDATE_ONLYolarak ayarlandığında isteği geçersiz kılan veya çözülmesini imkansız hale getiren hataları belirtir. NormalDEFAULT_SOLVEmodunda, doğrulama hataları yanıt gövdesi yerine bir hata mesajında gösterilir.VALIDATE_ONLYÇözüm modunun aynı anda birden fazla hata bildirebileceğini unutmayın. Bu özellik, isteklerdeki hataları hızlı bir şekilde 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 aracın rota atamasını temsil eder. İlgili ShipmentRoute özellikleriyle ilişkili önemli Vehicle özellikleri ş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 içinde 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 Visit (REST, gRPC), ilgili isteğin VisitRequest (REST, gRPC) öğesini 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şlemiyse
isPickupdoğru, teslimat işlemiyse yanlış olur. REST yanıtları, değer yanlış olduğunda bu özelliği atlar. visitRequestIndex,Visitöğesinin temsil ettiği ilgili istektekiShipment.pickupsveyaShipment.deliveriesöğesinden gelenVisitRequestöğesinin sıfır tabanlı dizinidir. REST yanıtlarında değer sıfır olduğunda bu özellik atlanır.startTime, ziyaretin başlaması beklenen zamandır.loadDemands,Visittamamlamak için gereken yükleme miktarıyla yükleme türünü eşler. Yükleme tutarları, 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 katetmesi 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'ı başlatmadan önce bekleyerek geçirdiği boşta kalma süresini gösterir. Bu durum, aşağıdakiVisitstart_timenedeniyle 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çta taşınan yük miktarıyla eşleşen harita yükü türünü gösterir.
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 ile transitions arasındaki ilişki hakkında daha fazla bilgi için ShipmentRoute
referans belgeleri (REST, gRPC) ve Teslim alma ve teslimat durak sırası optimizasyonu başlıklı makaleyi inceleyin. Transition mesajının routePolyline ve routeToken özellikleri hakkında daha fazla bilgi için Polylines ve Rota Jetonlarını Geçiş Yapma 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 bölümünde 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ın rotaları boş olabilir.skippedMandatoryShipmentCount, "zorunlu" olan atlanan gönderilerin sayısıdır. Zorunlu bir gönderimde, gönderim atlanırsa ortaya çıkacak birpenaltyCostbelirtilmez. Zorunlu gönderimler, belirtilen kısıtlamalar altında performansları mümkün değilse atlanabilir. Maliyetler hakkında daha fazla bilgiyi Maliyet Modeli Parametreleri başlıklı makalede bulabilirsiniz.
Ek metrikler AggregatedMetrics mesajları (REST,
gRPC) olarak raporlanır. AggregatedMetrics ileti türü, Metrics.aggregatedRouteMetrics özelliği ve ShipmentRoute.metrics özelliği için kullanılır. Metrics.aggregatedRouteMetrics, OptimizeToursResponse içindeki tüm ShipmentRoute'lerde toplanan metrikleri içerir. Her ShipmentRoute.metrics
özellik, 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, istekteTransitionAttributeskullanı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'lere karşılık gelenVisitRequest.duration'ların tümVisitRequestdeğ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 isteğe verilen eksiksiz ö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
}
}
}