OptimizeToursRequest
mesajı (REST, gRPC), maliyetler ile ilgili çeşitli özellikler içerir. Bu maliyet parametreleri birlikte isteğin maliyet modelini temsil eder. Maliyet modeli, isteğin üst düzey optimizasyon hedeflerinin birçoğunu yakalar. Örneğin:
- Daha kısa rotalar yerine veya tam tersi daha hızlı
Vehicle
rotalarına öncelik verme Shipment
yayınlama maliyetininShipment
tamamlama değerine değip değmeyeceğine karar verme- Teslim alma ve teslimat işlemlerini yalnızca zaman aralıkları içinde yapmak maliyet açısından verimlidir
Maliyetleri içeren örnek bir isteği inceleyin
{ "model": { "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00", "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 100.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 5.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 50.0 } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0 } ] } }
Vehicle
maliyet özelliği
Vehicle
mesajında (REST, gRPC) birkaç maliyet özelliği bulunur:
Vehicle.cost_per_hour
: Toplu taşıma, bekleme, ziyaret ve mola süreleri dahil olmak üzere araç kullanımının saatlik maliyetini temsil eder.Vehicle.cost_per_kilometer
: Aracın katettiği kilometre başına maliyeti temsil eder.Vehicle.cost_per_traveled_hour
: Bekleme, ziyaret ve mola süreleri hariç, bir aracı yalnızca hareket halindeyken kullanma maliyetini temsil eder.
Bu maliyet parametreleri, optimize edicinin zamanla katedilen mesafe ile karşılaştırmalar yapmasına olanak tanır. Optimize edilen rotanın neden olduğu maliyetler, yanıt mesajında metrics.costs
olarak görünür:
costPerHour
arttıkça, optimize edici en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rotadır. Bu nedenle, maliyet parametrelerindeki değişikliklerin çok az etkisi vardır.
Shipment
maliyet özelliği
Shipment
mesajında (REST, gRPC) birkaç maliyet parametresi de vardır:
Shipment.penalty_cost
, sevkiyatın atlanması ile ortaya çıkan maliyeti temsil eder.Shipment.VisitRequest.cost
, belirli bir teslim alma veya teslimat maliyetini temsil eder. Bu maliyet esasen tek bir gönderimde birden fazla teslim alma veya teslimat seçeneği arasında maliyet dengesini sağlamak için kullanılır.
Shipment
maliyet parametreleri, Vehicle
maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Tamamlanan Shipment
maliyeti, ceza maliyetini aşıyor. Shipment
, hiçbir Vehicle
rotasına dahil edilmez ve yanıt mesajındaki skipped_shipments
listesinde görünür.
ShipmentModel
maliyet özelliği
ShipmentModel
mesajı (REST, gRPC) globalDurationCostPerHour
adlı tek bir maliyet özelliği içerir. Bu maliyet, tüm araçların ShipmentRoute
görevlerini tamamlaması için gereken toplam süreye göre hesaplanır. globalDurationCostPerHour
artırıldığında tüm gönderimlerin daha erken tamamlanmasına öncelik verilir.
Rota Optimizasyonu yanıt maliyeti özellikleri
OptimizeToursResponse
mesajı (REST, gRPC), ShipmentRoute
tamamlama sürecinde tahakkuk eden maliyetleri temsil eden maliyet özelliklerine sahiptir.
metrics.costs
ve metrics.totalCost
özellikleri, yanıttaki tüm rotalarda uygulanan maliyet birimlerinin sayısını gösterir. Her routes
girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts
ve routeTotalCosts
özellikleri bulunur.
Örnek isteğe verilen yanıtı maliyetlerle birlikte görüntüleyin
{ "routes": [ { "vehicleStartTime": "2023-01-14T00:00:00Z", "vehicleEndTime": "2023-01-14T00:28:22Z", "visits": [ { "isPickup": true, "startTime": "2023-01-14T00:00:00Z", "detour": "0s" }, { "shipmentIndex": 2, "isPickup": true, "startTime": "2023-01-14T00:02:30Z", "detour": "150s" }, { "startTime": "2023-01-14T00:08:55Z", "detour": "150s" }, { "shipmentIndex": 2, "startTime": "2023-01-14T00:21:21Z", "detour": "572s" } ], "transitions": [ { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:00:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:02:30Z" }, { "travelDuration": "235s", "travelDistanceMeters": 795, "waitDuration": "0s", "totalDuration": "235s", "startTime": "2023-01-14T00:05:00Z" }, { "travelDuration": "496s", "travelDistanceMeters": 1893, "waitDuration": "0s", "totalDuration": "496s", "startTime": "2023-01-14T00:13:05Z" }, { "travelDuration": "171s", "travelDistanceMeters": 665, "waitDuration": "0s", "totalDuration": "171s", "startTime": "2023-01-14T00:25:31Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "routeCosts": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111 }, "routeTotalCost": 52.441111111111113 } ], "skippedShipments": [ { "index": 1 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2023-01-14T00:00:00Z", "latestVehicleEndTime": "2023-01-14T00:28:22Z", "totalCost": 57.441111111111113, "costs": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111, "model.shipments.penalty_cost": 5 } } }
Örnek yanıtta üst düzey metrics.costs
:
{
"metrics": {
...
"costs": {
"model.vehicles.cost_per_hour": 18.911111111111111,
"model.vehicles.cost_per_kilometer": 33.53,
"model.shipments.penalty_cost": 5
}
}
}
model.shipments.penalty_cost
değeri, atlanan gönderimler nedeniyle tahakkuk eden maliyeti temsil eder. skippedShipments
özelliği hangi gönderimlerin atlandığını listeler.
Bu örnekte, örnek istekteki yalnızca model.shipments[1]
atlanır.
model.shipments[1]
, 5 birimlik bir ceza maliyetine sahip. Bu, örnek yanıttaki toplam model.shipments.penalty_cost
anahtarıyla eşleşiyor. Vehicle
'nin 40.0 costPerHour
ve 10.0 costPerKilometer
ile kıyaslandığında gönderimin penaltyCost
düşük olması, gönderimi tamamlamaktan daha uygun maliyetli olmasını sağlar.
Gelişmiş konu: maliyetler ve yazılım kısıtlamaları
Bazı OptimizeToursRequest
mesajı (REST, gRPC) özelliği hafif kısıtlamaları temsil eder. Bunlar, karşılanamaması durumunda maliyete neden olan kısıtlamalardır.
Örneğin, araç LoadLimit
(REST, gRPC) kısıtlamalarının softMaxLoad
ve costPerUnitAboveSoftMax
özellikleri vardır. Bunların tümü, softMaxLoad
sınırını aşan yükleme birimleriyle orantılı bir maliyet oluşturur. Böylece sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına izin verilir.
Benzer şekilde, TimeWindow
kısıtlamaları (REST, gRPC) soft_start_time
ve soft_end_time
özelliklerine sahiptir. Bunlara TimeWindow
göre kısıtlanan etkinliğin ne kadar erken veya geç gerçekleştiğine bağlı olarak uygulanan cost_per_hour_before_soft_start_time
ve cost_per_hour_after_soft_end_time
özellikleri bulunur.
Tüm maliyet modeli parametrelerinde olduğu gibi esnek kısıtlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimlerle ifade edilir.
LoadLimit
kısıtlamaları, Yükleme Talepleri ve Sınırları bölümünde ayrıntılı olarak ele alınmaktadır. TimeWindow
kısıtlamaları, Teslim Alma ve Teslimat Süresi Aralığı Kısıtlamaları bölümünde ayrıntılı olarak ele alınmaktadır.