Bu örnekte, yakınlardaki teslim alma ve teslim etme işlemlerinin tek bir zaman aralığında aynı araç tarafından yapıldığı rotalara öncelik vermek için geçiş özelliklerinin nasıl kullanılacağı gösterilmektedir. Geçiş özellikleri hakkında daha fazla bilgi edinmek için Geçiş Özellikleri ile İşletme Mantığını Modelleme başlıklı makaleyi inceleyin.
Bu örnekte:
- A, B ve C gönderilerinin teslimatları aynı yolda birbirine yakındır.
- Ek yayınlar daha sonra yapılacaktır.
- Teslimatlarda belirli bir teslimat süresi yoktur.
- Ziyaret programından bağımsız olarak, aracın bu yolu iki kez sürmesi gerekir: sabah depolara giderken bir kez, akşam geri dönerken bir kez.
- A, B ve C'nin ne zaman yapıldığına bakılmaksızın, rotanın toplam seyahat mesafesi ve süresi her zaman aynıdır.
Bu durumda ve yalnızca saat başına maliyet ve kilometre başına maliyet kullanan bir istek için optimize edilmiş rotada A ve B'nin sabah, C'nin ise akşam işlenmesi sağlanabilir. Bu durumda çözümün maliyeti, üçünün de aynı anda işlenmesi durumundaki maliyetle aynı olur.
Eşiğe sahip kilometre başına maliyet
Yakın ziyaretleri gruplandırmak için öncelikle bir eşik mesafesi seçmeniz gerekir. Bu, yakın olduğunu düşündüğünüz iki ziyaret arasındaki maksimum mesafedir. Bu örnekte, yaklaşık olarak kentsel bir alandaki bir bloğa karşılık gelen 100 metrelik bir eşik kullanılmaktadır. Bu eşiği, işletmenizin ihtiyaçlarına ve sürücülerinizin tercihlerine uyacak şekilde artırabilir veya azaltabilirsiniz.
Birbirine 100 metre mesafedeki ziyaretleri gruplandırmak için her geçişin ilk 100 metresi için yüksek bir maliyet, geçişin diğer metreleri için ise daha düşük bir maliyet belirlersiniz. İlk 100 metre en pahalı olduğundan, optimizasyon aracı, rotanın toplam uzunluğunu uzatmak anlamına gelse bile 100 metre eşiğinden daha kısa geçişler kullanarak en büyük tasarrufu sağlar.
Maliyetleri ayarlamak için aşağıdaki özelliklere sahip bir girişi ShipmentModel.transition_attributes
alanına ekleyin:
- Olası tüm geçişleri eşleştirmek için modelin hiçbir yerinde kullanılmayan bir etiket seçin (ör.
UNUSED_TAG
).TransitionAttributes.excluded_src_tag
veTransitionAttributes.excluded_dst_tag
değerlerini bu etikete ayarlayın. - Eşik mesafe ve maliyetlerle
TransitionAttributes.distance_limit
'u ayarlayın:DistanceLimit.soft_max_meters
değerini seçili eşiğe ayarlayın.DistanceLimit.cost_per_kilometer_below_soft_max
değerini, eşiğin altındaki kilometre başına maliyete ayarlayın.DistanceLimit.cost_per_kilometer_above_soft_max
değerini eşiğin üzerindeki kilometre başına maliyete ayarlayın.
{
"model": {
"transitionAttributes": [
{
"excluded_dst_tag": "UNUSED_TAG ",
"excluded_src_tag": "UNUSED_TAG ",
"distanceLimit": {
"softMaxMeters": 100,
"costPerKilometerBelowSoftMax": 50,
"costPerKilometerAboveSoftMax": 1,
}
}
]
}
}
#unused_tag#
etiketi, olası tüm geçişleri eşleştirmek için hiçbir gönderi veya araç tarafından kullanılmamalıdır. Daha fazla bilgi için Tüm ziyaret isteklerini eşleme başlıklı makaleyi inceleyin.
Eşiğin altındaki yüksek maliyetin işleyiş şekli
Bu bölümde, eşiğin altındaki ve üzerindeki maliyetin örnek senaryoda farklı çözümlerin toplam maliyetini nasıl etkilediği gösterilmektedir.
1. çözüm: A işlemini yapın, gidiş yolunda B, dönüş yolunda C
Bu çözümde, gönderimler bu yolun iki geçişine bölünür. Bunlardan ikisi ilk geçişte, kalanı ise ikinci geçişte yayınlanır. 5 geçiş vardır:
Geçiş | Mesafe | Eşiğin altında | Eşiğin üzerinde olanlar | ||
---|---|---|---|---|---|
Mesafe | Maliyet | Mesafe | Maliyet | ||
depo →A | 1.000 m | 100 m | 5 | 900 m | 0,9 |
A→B | 50 m | 50 m | 2.5 | 0 dk. | 0 |
B→other | 1.030 m | 100 m | 5 | 930 m | 0,93 |
other→C | 1.000 m | 100 m | 5 | 900 m | 0,9 |
C→depo | 1.080 m | 100 m | 5 | 980 m | 0,98 |
Toplam | 450 m | 22,5 | 3.710 m | 3,71 |
Toplam maliyet, kilometre başına iki maliyetin toplamı olarak hesaplanır:
- eşiğin altındaki kilometre başına maliyet (50) ile eşiğin altındaki toplam kat edilen mesafenin (450 m = 0,45 km) çarpımı,
- Eşiğin üzerindeki kilometre başına maliyet (1) ile eşiğin üzerindeki toplam katedilen mesafenin (3.710 m = 3,71 km) çarpımı.
Dolayısıyla toplam maliyet 0,45 * 50 + 3,71 * 1 = 22,5 + 3,71 = 26,21 olur.
2. Çözüm: Gitişte A, B, C işlemlerini yapın, dönüşte hiçbir işlem yapmayın
Bu çözümde, 1. çözümün aksine üç gönderinin tümü, yolun bir kez geçilmesi sırasında "grup olarak" teslim edilir. Diğer geçişte ise araç hiç durmaz. Yine 5 geçiş vardır ancak bunların uzunlukları ve bileşimleri farklıdır:
Geçiş | Mesafe | Eşiğin altında | Eşiğin üzerinde olanlar | ||
---|---|---|---|---|---|
Mesafe | Maliyet | Mesafe | Maliyet | ||
depo →A | 1.000 m | 100 m | 5 | 900 m | 0,9 |
A→B | 50 m | 50 m | 2.5 | 0 dk. | 0 |
B→C | 30 dk. | 30 dk. | 1,5 | 0 dk. | 0 |
C→other | 1.000 m | 100 m | 5 | 900 m | 0,9 |
other→depot | 2.080 m | 100 m | 5 | 1.980 m | 1,98 |
Toplam | 380 m | 19 | 3.780 m | 3,78 |
1. çözümdekiyle aynı hesaplama kullanılarak toplam maliyet 0,38 * 50 + 3,78 * 1 = 19 + 3,78 = 22,78 olarak bulunur. Tüm ziyaretleri tek bir zaman aralığında gerçekleştirmek, iki grup halinde gerçekleştirmeye kıyasla daha düşük maliyetlidir. DistanceLimit.cost_per_kilometer_below_soft_max
değerini artırarak bu efekti güçlendirebilirsiniz.
Eşiğin altındaki düşük kilometre başına maliyet neden işe yaramaz?
Uzun geçişlere kıyasla kısa geçişleri tercih etmek istediğiniz için uzun geçişlere kilometre başına yüksek bir maliyet, kısa geçişlere ise kilometre başına düşük bir maliyet vermek isteyebilirsiniz. Ancak bu durum aslında ters bir etkiye sahiptir: Geçişin ilk 100 metresi en ucuz olduğu için optimizasyon aracısı, 100 metreye yakın veya 100 metrenin üzerindeki geçişleri tercih ederek bu "ucuz" metreleri en iyi şekilde kullanır.
Bu etkiyi iki örnek çözümde görebilirsiniz. Kilometre başına maliyeti eşiğin altından eşiğin üstüne değiştirirseniz rota maliyetleri değişir:
Eşiğin üzerindeki yüksek maliyet | Eşiğin altında yüksek maliyet | |||
---|---|---|---|---|
1. Çözüm | 2. Çözüm | 1. Çözüm | 2. Çözüm | |
Eşiğin altındaki KM'ler | 0,45 | 0,38 | 0,45 | 0,38 |
Eşiğin altındaki KM başına maliyet | 1,00 | 1,00 | 50,00 | 50,00 |
Eşiğin üzerindeki KM'ler | 3,71 | 3,78 | 3,71 | 3,78 |
Eşiğin üzerindeki KM başına maliyet | 50,00 | 50,00 | 1,00 | 1,00 |
Toplam maliyet | 185,95 | 189,38 | 26,21 | 22,78 |
Her sürüm için iki çözümün toplam maliyetlerinden düşük olanı kalın olarak vurgulanır. Eşiğin üzerindeki yüksek bir maliyet kullandığınızda, ziyaretlerin gruplandırıldığı rotanın toplam maliyetinin artık daha yüksek olduğunu görebilirsiniz. Bu, ulaşmak istediğiniz sonucun tam tersidir.