OptimizeToursRequest
mesajı (REST, gRPC) bir dizi
ile ilgili mülkler
maliyetleri. Bu maliyet parametreleri birlikte isteğin
maliyet modelidir. Maliyet modeli, istekle ilgili üst düzey değer
hedefler. Örneğin:
- Daha kısa rotalar yerine daha hızlı
Vehicle
rotaları öncelikli yaklaşık Shipment
yayınlama maliyetininShipment
adlı öğrencinin tamamlaması- 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ğ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ının (REST, gRPC) çeşitli maliyet özellikleri vardır:
Vehicle.cost_per_hour
: Saatlik araç kullanım maliyetini gösterir toplu taşıma, bekleme, ziyaret ve mola süreleri dahildir.Vehicle.cost_per_kilometer
: katettiği kilometre başına maliyeti gösterir araç.Vehicle.cost_per_traveled_hour
: Araç çalıştırma maliyetini gösterir (bekleme, ziyaret ve mola süreleri hariç) yalnızca taşıma sırasında.
Bu maliyet parametreleri, optimizasyon aracının zaman ve kat edilen mesafe arasında denge kurmasına olanak tanır. Optimize edilmiş rotanın maliyeti yanıtta görünür
metrics.costs
olarak mesaj:
costPerHour
arttıkça, optimize edici daha hızlı rotaları bulmaya çalışır
en kısa rotalar olmayabilir. 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ının (REST, gRPC) da birkaç maliyeti vardır.
parametre:
Shipment.penalty_cost
, atlama nedeniyle gönderim.Shipment.VisitRequest.cost
, belirli bir teslim alma işleminin maliyetini veya birden fazla teslim alma veya teslim alma arasında maliyet dengesini sağlamak için kullanılır. tek bir kargo için teslimat seçeneklerini belirleyebilir.
Shipment
maliyet parametresi, Vehicle
maliyetiyle aynı boyutsuz birimleri kullanıyor
parametreleridir. 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) tek bir maliyet içerir
mülk, globalDurationCostPerHour
. Bu maliyet, toplam tutar üzerinden
tüm araçların ShipmentRoute
işlemlerini tamamlaması için gereken süre. globalDurationCostPerHour
değerini artırarak tüm gönderimlerin daha erken tamamlanmasına öncelik verebilirsiniz.
Rota Optimizasyonu yanıt maliyeti özellikleri
OptimizeToursResponse
mesajı (REST, gRPC) maliyet özellikleri içeriyor
ShipmentRoute
'ları tamamlama sürecinde tahakkuk eden maliyetleri temsil eden.
metrics.costs
ve metrics.totalCost
özellikleri, yanıttaki tüm rotalarda oluşan maliyet birimlerinin sayısını temsil eder. Her routes
girişinde
İlgili maliyetleri temsil eden routeCosts
ve routeTotalCosts
mülkleri
veya belirli bir rota belirleyin.
Maliyetleri içeren örnek isteğe verilen yanıtı 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
ş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 yükleme sayısı. skippedShipments
özelliğinde, belirtilen gönderimler
atlandı.
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. Kargonun düşük olması
penaltyCost
ile Vehicle
arasındaki 40,0 costPerHour
ve 10,0
costPerKilometer
, gönderimi atlamaya kıyasla daha uygun maliyetlidir.
tamamlayacaksınız.
İleri düzey konu: maliyetler ve hafif kısıtlamalar
Çeşitli OptimizeToursRequest
mesajı (REST, gRPC) özellikleri
hafif kısıtlamaları ifade eder.
düşünülemez.
Örneğin, araç LoadLimit
(REST, gRPC) kısıtlamalarının
softMaxLoad
ve costPerUnitAboveSoftMax
mülkleri. 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) de
soft_start_time
ve soft_end_time
mülkleri, 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 ne kadar erken veya geç gerçekleştiğine bağlı olarak
TimeWindow
geçerlidir.
Tüm maliyet modeli parametrelerinde olduğu gibi esnek sınırlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimlere sahip olmasına dikkat edin.
LoadLimit
kısıtlama, şurada ayrıntılı olarak ele alınmıştır:
Yükleme Talepleri ve Sınırları. TimeWindow
kısıtlama ayrıntılı olarak ele alınmıştır
Teslim alma ve Teslimat Süresi Aralığı Kısıtlamaları'ndaki değerleri karşılaştırın.