Bu kılavuzda, loadDemands
, loadLimits
ve bunların her biri ile olan ilişkisi açıklanmaktadır.
diğer.
Teslim alma ve teslimat süresi aralığı kısıtlamaları bölümünde belirtildiği gibi
OptimizeToursRequest
mesajı (REST, gRPC)
Optimize edilen sorunla ilgili kısıtlamaları belirten özellikler. Birkaç
OptimizeToursRequest
özellikleri yükleme kısıtlamalarını temsil eder.
Araçların ve sevkiyatların şu durumlarda göz önünde bulundurulması gereken fiziksel özellikleri vardır: bir yol planlama.
- Taşıtlar:
loadLimits
özelliği, kaldırabiliyor.Vehicle
mesajı (REST, gRPC) belgelerinden faydalanabilirsiniz. - Gönderimler:
loadDemands
özelliği, belirli bir tükettiğini gösterir.Shipment
mesajı (REST, gRPC) belgelerinden faydalanabilirsiniz.
Bu iki kısıtlama, birlikte kullanıldığında optimize edicinin sevkiyatları, araçlar için en uygun ve en uygun şekilde ve kargo taleplerinizi göz önünde bulundurun.
Bu dokümanın geri kalanında loadLimits
ve loadDemands
ayrıntılı olarak açıklanmaktadır.
Yükleme talepleri ve sınırları: türler
Her yükleme talebini ve sınır kısıtlamasını bir tür bazında ifade edersiniz.
Aşağıdaki örnekler gibi kendi yükleme türlerinizi sağlayabilirsiniz:
- ağırlık
- ses düzeyi
- doğrusal ölçümler
- taşınan eşyaların veya ekipmanların adları
Bu kılavuzda, örnek türü olarak weightKg
kullanılmıştır.
Hem Shipment.loadDemands
hem de Vehicle.loadLimits
, Protokol Arabelleklerini kullanır
map
türü (yükleme türlerini temsil eden string
anahtarları ile).
Shipment.loadDemands
değerleri, Load
mesajını (REST, gRPC) kullanır.
Load
mesajı, kapasitenin ne kadar olduğunu gösteren tek bir amount
özelliğine sahip
belirtilen türde gönderimi tamamlamak için gereklidir.
Vehicle.loadLimits
değerleri, LoadLimit
mesajını (REST,
gRPC) kullanın. LoadLimit
mesajının maxLoad
özelliğine sahip çeşitli özellikleri vardır
aracın belirtilen türdeki maksimum yük kapasitesini temsil eder.
Bir gönderinin loadDemands
, atanan aracının loadLimits
özelliğini yalnızca şu durumlarda tüketir:
ikisi de eşleşen yükleme türü anahtarlarına sahiptir. Örneğin,
loadDemands
/:
"loadDemands": {
"weightKg": {
"amount": 50
}
}
sevkiyatın weightKg
türünde 50 yükleme birimi gerektirir
tamamlandı. Şu özelliklere sahip bir araç: loadLimits
:
"loadLimits": {
"weightKg": {
"maxLoad": 100
}
}
nakliyeyi tamamlayabilir, çünkü aracın maxLoad
weightKg
türü, gönderimin loadDemands
tutarından büyük veya ona eşit
weightKg
türü. Ancak şu özelliklere sahip bir araç: loadLimits
:
"loadLimits": {
"equipmentRackStorage": {
"maxLoad": 10
}
}
dolaylı olarak sınırsız weightKg
kapasitesine sahiptir.
weightKg
tutarında bir yükleme sınırı vardır. Böylece araç,
ağırlık talebi.
Gönderiler ve araçlar arasında yük aktarımı
Sevkiyatlar araçlar tarafından alınıp teslim edilirken, teslimatın
loadDemand
, gönderim ile araç arasında aktarma yapıyor. Örneğin
OptimizeToursResponse
mesajındaki (REST,
gRPC)routes.transitions
girişine gidin. Sıra şöyle:
şöyle olur:
- Gereken yük kapasitesi, gönderim için
loadDemand
olarak tanımlanır. - Gönderi, kendisine atanan araç ve aracın
vehicleLoads
, gönderiminloadDemand
tutarı kadar artıyor. Bu aktarım, yanıtta pozitifvisits.loadDemands
ile temsil ediliyor mesajını alırsınız. - Araç, sevkiyatı teslim eder ve aracın
vehicleLoads
değeri düşer teslim edilen gönderiminloadDemand
tutarı kadar. Bu transfer Yanıt mesajında negatifvisits.loadDemands
ile gösterilir.
Bir aracın vehicleLoads
değeri hiçbir zaman, belirttiği loadLimits
değerini aşamaz
ilk adımıdır.
Yük talepleri ve sınırlarıyla ilgili eksiksiz bir örnek
İsteğe bağlı olarak yük talepleri ve sınırlar
{ "populatePolylines": false, "populateTransitionPolylines": false, "model": { "globalStartTime": "2023-01-13T16:00:00Z", "globalEndTime": "2023-01-14T16:00:00Z", "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 15.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": 100 } } } ] } }
Örnek istek, yükle ilgili çeşitli parametreler içerir:
shipments[0]
, 50weightKg
yükleme talebine sahip.shipments[1]
, 10weightKg
yükleme talebine sahip.shipments[2]
, 80weightKg
yük talebine sahip.vehicles[0]
uygulamasının yükleme sınırı 100weightKg
.
İsteğe verilen yanıtı yük talepleri ve sınırlar
{ "routes": [ { "vehicleStartTime": "2023-01-13T16:00:00Z", "vehicleEndTime": "2023-01-13T16:43:27Z", "visits": [ { "isPickup": true, "startTime": "2023-01-13T16:00:00Z", "detour": "0s", "loadDemands": { "weightKg": { "amount": "50" } } }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2023-01-13T16:02:30Z", "detour": "150s", "loadDemands": { "weightKg": { "amount": "10" } } }, { "startTime": "2023-01-13T16:08:55Z", "detour": "150s", "loadDemands": { "weightKg": { "amount": "-50" } } }, { "shipmentIndex": 1, "startTime": "2023-01-13T16:16:37Z", "detour": "343s", "loadDemands": { "weightKg": { "amount": "-10" } } }, { "shipmentIndex": 2, "isPickup": true, "startTime": "2023-01-13T16:27:07Z", "detour": "1627s", "loadDemands": { "weightKg": { "amount": "80" } } }, { "shipmentIndex": 2, "startTime": "2023-01-13T16:36:26Z", "detour": "0s", "loadDemands": { "weightKg": { "amount": "-80" } } } ], "transitions": [ { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-13T16:00:00Z", "vehicleLoads": { "weightKg": {} } }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-13T16:02:30Z", "vehicleLoads": { "weightKg": { "amount": "50" } } }, { "travelDuration": "235s", "travelDistanceMeters": 795, "waitDuration": "0s", "totalDuration": "235s", "startTime": "2023-01-13T16:05:00Z", "vehicleLoads": { "weightKg": { "amount": "60" } } }, { "travelDuration": "212s", "travelDistanceMeters": 791, "waitDuration": "0s", "totalDuration": "212s", "startTime": "2023-01-13T16:13:05Z", "vehicleLoads": { "weightKg": { "amount": "10" } } }, { "travelDuration": "380s", "travelDistanceMeters": 1190, "waitDuration": "0s", "totalDuration": "380s", "startTime": "2023-01-13T16:20:47Z", "vehicleLoads": { "weightKg": {} } }, { "travelDuration": "409s", "travelDistanceMeters": 1371, "waitDuration": "0s", "totalDuration": "409s", "startTime": "2023-01-13T16:29:37Z", "vehicleLoads": { "weightKg": { "amount": "80" } } }, { "travelDuration": "171s", "travelDistanceMeters": 665, "waitDuration": "0s", "totalDuration": "171s", "startTime": "2023-01-13T16:40:36Z", "vehicleLoads": { "weightKg": {} } } ], "metrics": { "performedShipmentCount": 3, "travelDuration": "1407s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "2607s", "travelDistanceMeters": 4812, "maxLoads": { "weightKg": { "amount": "80" } } }, "routeCosts": { "model.vehicles.cost_per_kilometer": 48.12, "model.vehicles.cost_per_hour": 28.966666666666665 }, "routeTotalCost": 77.086666666666659 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 3, "travelDuration": "1407s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "2607s", "travelDistanceMeters": 4812, "maxLoads": { "weightKg": { "amount": "80" } } }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2023-01-13T16:00:00Z", "latestVehicleEndTime": "2023-01-13T16:43:27Z", "totalCost": 77.086666666666659, "costs": { "model.vehicles.cost_per_hour": 28.966666666666665, "model.vehicles.cost_per_kilometer": 48.12 } } }
Eklenen yük kısıtlamaları visits
sırasını etkiler:
shipment[0]
alındıshipment[1]
alındıshipment[0]
teslim edildishipment[1]
teslim edildishipment[2]
alındıshipment[2]
teslim edildi
Bu siparişe göre, üç sevkiyatın araç tarafından tamamlanamayan
aynı zamanda (ör. toplam loadDemands
) aracın
loadLimits
.
Her visits
girişi, araç yükünde meydana gelen değişikliği içerir.
Visit
de tamamlamanız gerekir. Pozitif yük değerleri gönderi yüklemesini gösterirken
Negatif değerler, sevkiyat yüklemesinin kaldırılmasını gösterir.
Her transitions
girişi, süre boyunca toplam araç yükünü içerir
Transition
. Örneğin transitions[2]
, weightKg
60 yükleme,
toplam shipment[0]
ve shipment[1]
yüklerini temsil eder.
routes[0].metrics
ve metrics.aggregatedRouteMetrics
metrik nesneleri şunları içerir:
maxLoads
mülkü. weightKg
türü için değer 80'dir. Bu değer, şu ifadeyi temsil eder:
aracın rotasının, shipments[2]
konumuna shipments[2]
taşıyan kısmı
teslimat konumu.
Esnek yükleme sınırı kısıtlamaları
Teslim alma ve teslimat süresi aralığında açıklanan zaman aralıklarında olduğu gibi
Kısıtlamalar, yük sınırı kısıtlamalarının sabit ve esnek varyantları vardır. İlgili içeriği oluşturmak için kullanılan
LoadLimit
mesajının maxLoad
özelliği kesin bir kısıtlama ifade ediyor:
Araç hiçbir zaman belirtilen maxLoad
değerini aşan yük taşımamalıdır
türü. softMaxLoad
ve costPerUnitAboveSoftMax
özellikleri yumuşak bir değer ifade ediyor
kısıtlaması, softMaxLoad
değerini aşan her birim için bir
costPerUnitAboveSoftMax
maliyet.
Geçici yükleme sınırı kısıtlamalarının aşağıdakiler gibi çeşitli kullanım alanları vardır:
- Gerekli minimum sayıdan daha fazla araç arasında sevkiyatların dengelenmesi uygun maliyetli olduğunu
- Sürücünün rahatça kullanabileceği öğe sayısına göre tercihini ifade etme belirli bir rotada teslim alma ve teslim etme
- aşınma ve aşınma riskini azaltmak amacıyla, taşıtları maksimum fiziksel kapasitelerinin altında bakım maliyetlerini azaltır
Sert ve hafif yükleme sınırı kısıtlamaları birlikte kullanılabilir. Örneğin, yük sınırı, bir aracın güvenli bir şekilde taşıyabileceği maksimum kargo ağırlığını ifade edebilir bir araç içine sığabilecek maksimum öğe sayısını belirtirken Yumuşak yükleme sınırı, vergilendirilecek öğelerin maksimum ağırlığı veya sayısı olabilir. sürücünün araca her şeyi sığdırabilmesidir.