Bu kılavuzda, loadDemands
ve loadLimits
özellikleri ile bu terimlerin her biri ile olan ilişkisi açıklanmaktadır.
diğer.
Teslim alma ve teslimat süresi aralığı Kısıtlamaları'nda 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 ve kargoların, rota planlanırken dikkate alınması gereken fiziksel özellikleri vardır.
- Araçlar:
loadLimits
mülkü, aracın taşıyabileceği maksimum yükü belirtir.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, optimizasyon aracının kargoları filo kapasitenize ve kargo taleplerinize en uygun şekilde araçlara uygun şekilde atamasını sağlar.
Bu belgenin geri kalanında loadLimits
ve loadDemands
ayrıntılı olarak ele alınmaktadır.
Yükleme talepleri ve sınırları: türler
Her yük talebini ve sınırlama kısıtlamasını bir tür olarak 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 öğelerin 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) ekleyin. LoadLimit
mesajında çeşitli özellikler bulunur. maxLoad
, aracın belirtilen türdeki maksimum yük kapasitesini temsil eder.
Bir gönderinin loadDemands
, yalnızca ikisinin eşleşen yükleme türü anahtarlarına sahip olması durumunda atanmış aracının loadLimits
'unu tüketir. Örneğin, loadDemands
içeren bir gönderim:
"loadDemands": {
"weightKg": {
"amount": 50
}
}
gönderimin tamamlanması için weightKg
türündeki 50 yük birimi gerekir. Ş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. Aracın yüklerini, belirli bir araç için OptimizeToursResponse
mesajının (REST, gRPC)routes.transitions
girişinde görebilirsiniz. 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]
'in yük talebi 80weightKg
.vehicles[0]
uygulamasının yükleme sınırı 100weightKg
.
Yük talepleri ve sınırlarını içeren istek yanıtını görme
{ "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]
teslim alındıshipment[1]
alındıshipment[0]
yayınlandıshipment[1]
teslim edildishipment[2]
alındıshipment[2]
yayınlandı
Bu siparişe göre, üç sevkiyatın araç tarafından tamamlanamayan
aynı zamanda (ör. toplam loadDemands
) aracın
loadLimits
.
Her visits
girişi, Visit
'un tamamlanmasından kaynaklanan araç yükünde meydana gelen değişikliği içerir. Pozitif yükleme değerleri, kargo yüklemeyi, negatif yükleme değerleri ise kargo boşaltmayı temsil eder.
Her transitions
girişi, Transition
sırasındaki toplam araç yükünü içerir. Ö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]
ulaşımını gerçekleştiren 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. LoadLimit
mesajının maxLoad
mülkü katı bir kısıtlamayı ifade eder: Araç hiçbir zaman belirtilen türdeki maxLoad
değerini aşan yük taşımamalıdır. softMaxLoad
ve costPerUnitAboveSoftMax
özellikleri yumuşak bir değeri 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:
- Maliyet etkin olduğunda gönderimleri gerekli minimum sayıdan daha fazla araç arasında dengeleme
- Sürücülerin rahatça sunabilecekleri öğe sayısına göre tercihini ifade etme belirli bir rotada teslim alma ve teslim etme
- Araçları, aşınmayı sınırlamak ve bakım maliyetlerini azaltmak için maksimum fiziksel kapasitelerinin altında yükleme
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.