OptimizeToursRequest
mesajı (REST, gRPC), maliyetlerle 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 çoğunu yakalar. Örneğin:
- Daha kısa rotalar yerine daha hızlı
Vehicle
rotalara öncelik verme veya bunun tam tersi - Bir
Shipment
yayınlamanın maliyetinin,Shipment
'ın tamamlanmasının değerine değip değmeyeceğine karar verme - Yalnızca maliyet etkin olduğunda teslim alma ve teslim etme işlemlerini zaman aralıkları içinde gerçekleştirme
Maliyetleri içeren örnek bir isteğe bakın
{ "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 özellikleri
Vehicle
mesajında (REST, gRPC) çeşitli maliyet özellikleri bulunur:
Vehicle.cost_per_hour
: Bir aracın geçiş, bekleme, ziyaret ve ara verme süreleri dahil olmak üzere saat başına maliyetini temsil eder.Vehicle.cost_per_kilometer
: Aracın kat ettiği kilometre başına maliyeti temsil eder.Vehicle.cost_per_traveled_hour
: Bekleme, ziyaret ve ara verme süreleri hariç yalnızca bir aracın toplu taşımadayken işletme maliyetini temsil eder.
Bu maliyet parametreleri, optimizasyon aracının zaman ve kat edilen mesafe arasında denge kurması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 optimizatör, en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rota olduğu için maliyet parametrelerinde yapılan değişikliklerin etkisi çok azdır.
Shipment
maliyet özellikleri
Shipment
mesajının (REST, gRPC) çeşitli maliyet parametreleri de vardır:
Shipment.penalty_cost
, gönderimi atlama nedeniyle oluşan maliyeti temsil eder.Shipment.VisitRequest.cost
, belirli bir teslim alma veya teslimat işleminin maliyetini temsil eder. Bu özellik, öncelikle tek bir gönderim için birden fazla teslim alma veya teslimat seçeneği arasında maliyet dengelemesi yapmak amacıyla kullanılır.
Shipment
maliyet parametreleri, Vehicle
maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Bir Shipment
'nin tamamlanması için yapılan maliyet, ceza maliyetini aşarsa Shipment
hiçbir Vehicle
rotasına dahil edilmez ve bunun yerine yanıt mesajındaki skipped_shipments
listesinde görünür.
ShipmentModel
maliyet özellikleri
ShipmentModel
mesajı (REST, gRPC), globalDurationCostPerHour
adlı tek bir maliyet mülkü içerir. Bu maliyet, tüm araçların ShipmentRoute
'lerini tamamlaması için gereken toplam süreye göre alınır. globalDurationCostPerHour
değerini artırarak tüm gönderimlerin daha erken tamamlanmasına öncelik verebilirsiniz.
Rota Optimizasyonu yanıt maliyeti özellikleri
OptimizeToursResponse
mesajında (REST, gRPC), ShipmentRoute
'leri tamamlama sürecinde ortaya çıkan maliyetleri temsil eden maliyet özellikleri bulunur.
metrics.costs
ve metrics.totalCost
özellikleri, yanıttaki tüm rotalarda oluşan maliyet birimlerinin sayısını temsil eder. Her routes
girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts
ve routeTotalCosts
özellikleri bulunur.
Örnek istek için maliyetleri içeren bir yanıtı görme
{ "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
öğeleri şunlardır:
{
"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 oluşan maliyeti temsil eder. skippedShipments
mülkü, hangi gönderimlerin atlandığını listeler.
Bu örnekte, örnek istekteki yalnızca model.shipments[1]
atlanır.
model.shipments[1]
, 5 birim ceza maliyetine sahiptir. Bu değer, örnek yanıttaki toplam model.shipments.penalty_cost
anahtarıyla eşleşir. Gönderimin Vehicle
'un 40,0 costPerHour
ve 10,0 costPerKilometer
değerine kıyasla düşük penaltyCost
değeri, gönderimi tamamlamaktan daha uygun maliyetli hale getirir.
Gelişmiş konu: maliyetler ve yumuşak kısıtlamalar
Bazı OptimizeToursRequest
mesaj (REST, gRPC) özellikleri, karşılanamadıklarında maliyete neden olan yumuşak kısıtlamaları temsil eder.
Örneğin, araç LoadLimit
(REST, gRPC) kısıtlamalarında softMaxLoad
ve costPerUnitAboveSoftMax
özellikleri bulunur. Bu maliyetler birlikte, softMaxLoad
'ü aşan yük birimleriyle orantılı bir maliyete neden olur. Bu da sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına olanak tanır.
Benzer şekilde, TimeWindow
kısıtlamaları (REST, gRPC) soft_start_time
ve soft_end_time
özelliklerine sahiptir. Bu özellikler, kısıtlanmış etkinliğin TimeWindow
'ye göre ne kadar erken veya geç gerçekleştiğine bağlı olarak ortaya çıkan karşılık gelen cost_per_hour_before_soft_start_time
ve cost_per_hour_after_soft_end_time
ile birlikte kullanılır.
Tüm maliyet modeli parametrelerinde olduğu gibi, yumuşak kısıtlama maliyetleri de diğer maliyet parametreleriyle aynı boyutsuz birimlerde ifade edilir.
LoadLimit
kısıtlamaları Yük Talepleri ve Sınırları bölümünde ayrıntılı olarak ele alınmıştır. TimeWindow
kısıtlamaları Arama ve Teslimat Zaman Aralığı Kısıtlamaları bölümünde ayrıntılı olarak ele alınmıştır.