OptimizeToursRequest
mesajı (REST, gRPC), maliyetlerle ilgili bir dizi özellik 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 veya bunun tam tersine öncelik verme Shipment
teslim etme maliyetinin,Shipment
tamamlanmasının değerine değip değmeyeceğine karar verme- Yalnızca uygun maliyetli olduğunda belirli zaman aralıklarında teslim alma ve teslimat işlemleri gerçekleştirme
Maliyetleri içeren örnek bir istek
{ "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ı saatlik çalıştırma maliyetini (geçiş, bekleme, ziyaret ve mola süreleri dahil) gösterir.Vehicle.cost_per_kilometer
: Araçla gidilen kilometre başına maliyeti gösterir.Vehicle.cost_per_traveled_hour
: Bekleme, ziyaret ve mola süreleri hariç olmak üzere yalnızca transit halindeyken bir aracı çalıştırma maliyetini gösterir.
Bu maliyet parametreleri, optimizasyon aracının zaman ve gidilen mesafe arasında denge kurmasına olanak tanır. Optimum rota nedeniyle oluşan maliyetler, yanıt mesajında metrics.costs
olarak görünür:
costPerHour
arttıkça optimizasyon aracı, en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rota olduğundan maliyet parametrelerindeki değişikliklerin etkisi azdır.
Shipment
maliyet özellikleri
Shipment
mesajında (REST, gRPC) maliyetle ilgili çeşitli parametreler de bulunur:
Shipment.penalty_cost
, gönderimin atlanması nedeniyle oluşan maliyeti gösterir. Bir kargonunpenalty_cost
parametresinin ayarlanmaması, kargoyu zorunlu kılar. Bu durumda kargo yalnızca belirtilen kısıtlamalar nedeniyle tamamlanamıyorsa atlanır.Shipment.VisitRequest.cost
, belirli bir teslim alma veya teslimatın maliyetini gösterir. Bu özellik, öncelikle tek bir gönderim için birden fazla teslim alma veya teslimat seçeneği arasında maliyet değişimi yapılmasını sağlamak amacıyla kullanılır.
Shipment
maliyet parametreleri, Vehicle
maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Shipment
tamamlanması için gereken maliyet, ceza maliyetini aştığında Shipment
, herhangi 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) tek bir maliyet özelliği olan globalDurationCostPerHour
içerir. Bu maliyet, tüm araçların ShipmentRoute
'lerini tamamlaması için gereken toplam süreye göre belirlenir. Artırma
globalDurationCostPerHour
, tüm gönderilerin daha erken tamamlanmasına öncelik verir.
Rota Optimizasyonu yanıt maliyeti özellikleri
OptimizeToursResponse
mesajı (REST, gRPC), ShipmentRoute
işlemlerinin tamamlanması sürecinde oluşan maliyetleri temsil eden maliyet özelliklerine sahiptir.
metrics.costs
ve metrics.totalCost
özellikleri, yanıttaki tüm rotalarda oluşan maliyet birimlerinin sayısını gösterir. Her routes
girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts
ve routeTotalCosts
özellikleri bulunur.
Maliyetleri içeren örnek isteğe verilen yanıtı görün
{ "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ıttaki ü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 gösterir. skippedShipments
özelliği, hangi gönderilerin atlandığını listeler.
Bu örnekte, örnek isteğinde yalnızca model.shipments[1]
atlanır.
model.shipments[1]
, örnek yanıttaki toplam model.shipments.penalty_cost
anahtarıyla eşleşen 5 birimlik bir ceza maliyetine sahiptir. Gönderinin Vehicle
'nın 40,0 costPerHour
ve 10,0 costPerKilometer
değerlerine kıyasla düşük olması, gönderiyi tamamlamak yerine atlamayı daha uygun maliyetli hale getirir.penaltyCost
İleri düzey konu: maliyetler ve esnek kısıtlamalar
Çeşitli OptimizeToursRequest
mesaj (REST, gRPC) özellikleri, esnek kısıtlamaları temsil eder. Bu kısıtlamalar, karşılanamadıklarında maliyete neden olan kısıtlamalardır.
Örneğin, araç LoadLimit
(REST, gRPC) kısıtlamaları softMaxLoad
ve costPerUnitAboveSoftMax
özelliklerine sahiptir. Birlikte, softMaxLoad
'yı aşan yük birimleriyle orantılı bir maliyete neden olurlar ve sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına izin verirler.
Benzer şekilde, TimeWindow
kısıtlamaları (REST, gRPC) soft_start_time
ve soft_end_time
özelliklerine sahiptir. Bunlara karşılık gelen cost_per_hour_before_soft_start_time
ve cost_per_hour_after_soft_end_time
, kısıtlanmış etkinliğin TimeWindow
ile ilgili olarak ne kadar erken veya geç gerçekleştiğine bağlı olarak ortaya çıkar.
Tüm maliyet modeli parametrelerinde olduğu gibi, esnek kısıtlama maliyetleri de diğer maliyet parametreleriyle aynı boyutsuz birimlerle ifade edilir.
LoadLimit
kısıtlamaları Yük 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 Zaman Aralığı Kısıtlamaları başlıklı makalede ayrıntılı olarak ele alınmaktadır.