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 aşağıdakiler gibi üst düzey optimizasyon hedeflerinin çoğunu yakalar:
- Daha kısa rotalar yerine daha hızlı
Vehicle
rotalarına veya tam tersi şekilde öncelik verilmesi - 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 özelliği
Vehicle
mesajının (REST, gRPC) çeşitli maliyet özellikleri vardır:
Vehicle.cost_per_hour
: Bir aracın geçiş, bekleme, ziyaret ve ara süreleri dahil olmak üzere saat başına işletme 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 transfer sırasındaki 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 özelliği
Shipment
mesajında (REST, gRPC) birkaç maliyet parametresi de bulunur:
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
'yi tamamlamak 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örüntüleme
{ "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
ş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]
için 5 birim ceza maliyeti var. Bu değer, örnek yanıttaki toplam model.shipments.penalty_cost
anahtarıyla eşleşir. Vehicle
ürününün 40,0 costPerHour
ve 10,0 değerine kıyasla
penaltyCost
düşük olan sevkiyat
costPerKilometer
, gönderimi tamamlamaktan daha uygun maliyetli olmasını sağlar.
Gelişmiş konu: maliyetler ve yumuşak kısıtlamalar
Çeşitli OptimizeToursRequest
mesajı (REST, gRPC) özellikleri yumuşak kısıtlamaları temsil eder. Bu kısıtlamalar, karşılanamadıklarında maliyete neden olur.
Örneğin, araç LoadLimit
(REST, gRPC) kısıtlamalarında softMaxLoad
ve costPerUnitAboveSoftMax
özellikleri bulunur. Bunlar birlikte, softMaxLoad
değerini aşan yük birimleriyle orantılı bir maliyete neden olur. Böylece, sınırın yalnızca maliyet açısından anlamlı olması durumunda aşılmasına izin verilir.
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 esnek sınırlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimler kullanılarak 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.