Geçiş özellikleriyle yakındaki ziyaretlere öncelik verme

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.

Aynı yolda yapılan kargo teslimatlarını gösteren örnek. Depodan diğer kargolara giden A, B ve C olmak üzere üç kargo var. A, depodan 1.000 m, B depodan 50 m, C ise aynı yönde 30 m daha uzaktadır. C'den 1.000 m uzaklıkta başka kargolar var.

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:

{
  "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.