Yük maliyetleri, bir aracın sevkiyat teslim alma ve teslimat işlemleri arasında taşıdığı yüke göre oluşan maliyetleri veya cezaları belirtir. Bu maliyetleri costPerKilometer ile seyahat mesafesine, costPerTraveledHour ile seyahat süresine göre yapılandırabilir veya ikisini aynı anda kullanabilirsiniz.
Aşağıdaki gibi hedefleri desteklemek için yük maliyetlerini yapılandırın:
- Kargo ağırlığıyla artan yakıt maliyetlerini hesaba katın.
- Ağır yüklenmiş araçları uzun mesafelerde yönlendirmekten kaçının.
- Ağır kargodan kaynaklanan araç aşınmasını ve yıpranmasını hesaba katın.
Özellikler
Vehicle öğesinin loadLimits özelliğinde yükleme maliyetlerini belirtin.
Yük maliyetleri, diğer tüm maliyet parametreleri gibi boyutsuz, göreceli maliyet birimlerini kullanır.
Yük maliyetlerini tanımlamak için aşağıdaki özellikleri kullanabilirsiniz:
| Mülk | Tür | Açıklama |
|---|---|---|
costPerKilometer |
Nesne | Seyahat maliyetlerini gidilen kilometreye göre hesaplamak için LoadCost nesne türünü içerir. |
costPerTraveledHour |
Nesne | Bekleme, ziyaret ve mola süreleri hariç olmak üzere, seyahat edilen süreye göre seyahat maliyetlerini hesaplamak için LoadCost nesne türünü içerir. |
LoadCost
LoadCost ileti türü, belirli bir yükü taşımanın seyahat maliyetini tanımlar. Yük eşiği belirlemenize ve ardından bu eşiğin hem altında hem de üstünde yük birimi başına farklı maliyet oranları belirtmenize olanak tanır.
LoadCost nesnesi aşağıdaki yapılandırma parametrelerini içerir:
| Parametre | Tür | Açıklama |
|---|---|---|
loadThreshold |
dize (int64 biçimi) | Maliyet hesaplama oranının değiştiği yük düzeyi. 0 varsayılandır. |
costPerUnitAboveThreshold |
Sayı | loadThreshold üzerindeki her yük birimine uygulanan maliyet. Varsayılan değer 0'dır. |
costPerUnitBelowThreshold |
Sayı | Yükün her bir birimine uygulanan maliyet, loadThreshold değerine eşit veya bu değerden düşüktür. Varsayılan değer 0'dır. |
Yük maliyetlerini gönderimlerle eşleştirme
Bir aracın taşıdığı yük, rotasındaki gönderilerin loadDemands türüyle eşleştiğinde yükleme maliyetleri uygulanır. Yük türleri, ağırlık veya hacim gibi rastgele dizelerdir. Yük türlerini yapılandırma hakkında daha fazla bilgi için Yük türleri başlıklı makaleyi inceleyin.
Örnekler
Bu bölümde üç tür örnek ele alınmaktadır:
- Yükleme maliyetlerinin yapısını gösteren kod örnekleri.
- Yükleme maliyetlerini kullanarak bir işletme hedefine ulaşmanın bir yolunu gösteren örnek senaryo.
- İstek örneği: Örnek senaryoda ayarlanan değerleri içerir.
Kod örnekleri
Aşağıdaki örnekte, mevcut tüm yapılandırma parametreleriyle yük maliyetinin nasıl yapılandırılacağı gösterilmektedir. Bu örnekte costPerKilometer kullanılıyor ancak maliyetleri mesafeye göre değil, seyahat süresine göre hesaplamak için costPerTraveledHour ile değiştirebilirsiniz.
{
"model": {
"vehicles": [{
"loadLimits": {
"LOAD_TYPE": {
"maxLoad": "MAX_LOAD",
"costPerKilometer": {
"loadThreshold": "LOAD_THRESHOLD",
"costPerUnitAboveThreshold": COST_ABOVE,
"costPerUnitBelowThreshold": COST_BELOW
}
}
}
}]
}
}
Örnek senaryo
Bu bölümde, yakıt tüketimini optimize etmek istediğiniz ve tüketilen yakıtın mesafeyle kargo ağırlığıyla orantılı olduğu bir senaryo açıklanmaktadır. Araçlar daha ağır yükler taşırken daha fazla yakıt tükettiğinden, önce daha ağır paketleri teslim edecek rotalar planlamanız gerekir.
Bu davranışı ayarlamak için isteğinizi, ağır kargoyla uzun mesafeler kat eden araçları cezalandıracak şekilde yapılandırabilirsiniz. Bu örnek için isteğinizde aşağıdaki özellik değerlerini kullanın:
| Ebeveyn | Mülk | Tür | Değer | Senaryo |
|---|---|---|---|---|
loadLimits |
yük türü | dize | weightKg |
İzlenecek kapasite türünü tanımlar. Bu örnekte, kargo ağırlığını kilogram cinsinden belirtmek için weightKg kullanılmıştır. |
loadLimits |
maxLoad |
dize | 100 |
Aracın taşıyabileceği maksimum kargo ağırlığı. |
costPerKilometer |
loadThreshold |
dize | 15 |
Temel yük eşiğini ayarlar. 15 kg'ın üzerindeki kargo ağırlığı, yüke dayalı yakıt maliyeti cezasına tabidir. |
costPerKilometer |
costPerUnitAboveThreshold |
sayı | 1 |
Yakıt maliyeti katsayınız olarak kullanılır. Katedilen her kilometre için 15 kg eşiğini aşan her kilogram kargo 1 maliyet birimi olarak değerlendirilir. |
loadDemands |
amount |
dize | 1. kargo: 502. kargo: 103. kargo: 80 |
Üç gönderiminizin her biri için kargo ağırlığını belirtir. |
Bu senaryoda, yapılandırdığınız değerler aşağıdaki etkilere sahiptir:
- Optimizasyon aracı, en ağır paketlerinizi önce teslim etmek için rotalarınızı düzenler. Çözücü, ağır yükle gidilen mesafeyi en aza indirmek için 80 kg ve 50 kg'lık teslimatları rotanın başında planlar.
- Optimizasyon aracı, rotalarınızı ağır yükle katedilen mesafeyi en aza indirecek şekilde düzenler. Bu ayarların rotalarınızı nasıl etkilediğini görmek için
costPerUnitAboveThresholddeğerini1'dan5'ye yükseltebilirsiniz. Ağırlık cezasını artırarak optimizasyon aracını daha ağır kargoyla gidilen mesafeyi en aza indirmek için daha da fazla çalışmaya teşvik edersiniz. Bu da teslimat sırasını yeniden düzenleyebilir veya gönderileri birden fazla araca bölebilir.
İstek örneği
Aşağıdaki örnekte, örnek senaryodaki yük maliyeti değerlerini içeren temel bir optimizeTours
isteğinin yapısı gösterilmektedir:
{ "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": "50" } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": "10" } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "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", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } }
Hesaplama formülleri
Optimizasyon aracı, yük maliyetlerini aşağıdaki formülleri kullanarak hesaplar.
Tam eşik hesaplaması
Hem costPerUnitAboveThreshold hem de costPerUnitBelowThreshold değerini belirttiğinizde, loadThreshold değerinin hem üstünde hem de altında kalan yük miktarları için ayrı seyahat maliyetleri oluşur. Formül şöyledir:
cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold
+ min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold
Örneğin, İstek örneğindeki değerleri kullanarak, costPerUnitBelowThreshold değerinin 2 olduğu durumda, araç 50 birim yük taşıyarak 10 kilometre yol kat ederse hesaplama şu şekilde yapılır:
max(50 - 15, 0) * 10 * 1 + min(50, 15) * 10 * 2 = 650 cost units
Eşik üstü hesaplama
Yalnızca costPerUnitAboveThreshold değerini belirttiğinizde hesaplama, tam eşik formülünün özel bir durumu olur. Eşiğin altındaki maliyet sıfır olduğundan, tam formülün ikinci yarısı sıfır olarak değerlendirilir. Formül şöyledir:
cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold
Örneğin, İstek örneğindeki değerleri kullanarak loadThreshold değerini 15 ve costPerUnitAboveThreshold değerini 1 olarak belirlediğimizde, araç 50 kg yük taşıyarak 10 kilometre yol kat ederse hesaplama şu şekilde yapılır:
max(50 - 15, 0) * 10 * 1 = 350 cost units
Eşiğin altındaki hesaplama
Benzer şekilde, yalnızca costPerUnitBelowThreshold değerini belirtirseniz hesaplama, eşiğin üzerindeki maliyetin sıfır olduğu tam eşik formülünün başka bir özel durumu olur. Formül şöyledir:
cost = min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold