Besuche in der Nähe mit Übergangsattributen priorisieren

In diesem Beispiel wird gezeigt, wie Sie Übergangsattribute verwenden, um Routen zu priorisieren, bei denen Abholungen und Lieferungen in der Nähe vom selben Fahrzeug in einem Zeitblock ausgeführt werden. Weitere Informationen zu Übergangsattributen finden Sie unter Geschäftslogik mit Übergangs Attributen modellieren.

In diesem Fall gilt Folgendes:

  • Die Lieferungen der Sendungen A, B und C liegen nah beieinander auf derselben Straße.
  • Weitere Lieferungen befinden sich weiter die Straße entlang.
  • Für die Lieferungen sind keine Lieferzeiten angegeben.
  • Unabhängig vom Besuchsplan muss das Fahrzeug diese Straße zweimal fahren: einmal morgens auf dem Weg vom Depot und einmal abends auf dem Rückweg.
  • Die Gesamtreiseentfernung und -dauer der Route sind immer gleich, unabhängig davon, wann A, B und C ausgeführt werden.

Beispiel mit Lieferungen von Sendungen auf derselben Straße. Es sind drei Sendungen A, B und C auf dem Weg vom Depot zu anderen Sendungen. A ist 1.000 m vom Depot entfernt, B ist 50 m weiter vom Depot entfernt und C ist 30 m weiter in derselben Richtung. Es gibt andere Sendungen, die 1.000 m von C entfernt sind.

In dieser Situation und bei einer Anfrage, bei der nur die Kosten pro Stunde und die Kosten pro Kilometer verwendet werden, könnte die optimierte Route so aussehen, dass A und B am Morgen und C am Abend bearbeitet werden. Die Kosten der Lösung wären dieselben, als wenn alle drei gleichzeitig bearbeitet würden.

Kosten pro Kilometer mit Grenzwert

Wenn Sie Besuche in der Nähe gruppieren möchten, müssen Sie zuerst eine Grenzentfernung auswählen. Dies ist die maximale Entfernung zwischen zwei Besuchen, die Sie als nah beieinander betrachten. In diesem Beispiel wird ein Grenzwert von 100 Metern verwendet, der ungefähr einem Block in einem städtischen Gebiet entspricht. Sie können den Grenzwert erhöhen oder senken, um ihn an Ihre geschäftlichen Anforderungen und die Präferenzen Ihrer Fahrer anzupassen.

Wenn Sie Besuche in der Nähe gruppieren möchten, die weniger als 100 Meter voneinander entfernt sind, legen Sie für die ersten 100 Meter jedes Übergangs hohe Kosten und für alle zusätzlichen Meter des Übergangs niedrigere Kosten fest. Da die ersten 100 Meter am teuersten sind, erzielt der Optimierer die größten Einsparungen, indem er Übergänge verwendet, die kürzer als der Grenzwert von 100 Metern sind, auch wenn dies bedeutet, dass die Gesamtlänge der Route verlängert wird.

Um die Kosten einzurichten, fügen Sie ShipmentModel.transition_attributes einen neuen Eintrag mit den folgenden Eigenschaften hinzu:

{
  "model": {
    "transitionAttributes": [
      {
        "excluded_dst_tag": "UNUSED_TAG",
        "excluded_src_tag": "UNUSED_TAG",
        "distanceLimit": {
          "softMaxMeters": 100,
          "costPerKilometerBelowSoftMax": 50,
          "costPerKilometerAboveSoftMax": 1,
        }
      }
    ]
  }
}

Das Tag #unused_tag# darf von keinen Sendungen oder Fahrzeugen verwendet werden, um alle möglichen Übergänge abzugleichen. Weitere Informationen finden Sie unter Alle Besuchsanträge abgleichen.

Funktionsweise hoher Kosten unter dem Grenzwert

In diesem Abschnitt wird gezeigt, wie sich die Kosten unter und über dem Grenzwert auf die Gesamtkosten verschiedener Lösungen des Beispielszenarios auswirken.

Lösung 1: A und B auf dem Hinweg, C auf dem Rückweg

Bei dieser Lösung werden die Sendungen auf die beiden Fahrten auf dieser Straße aufgeteilt. Zwei von ihnen werden bei der ersten Fahrt geliefert und die verbleibende bei der zweiten. Es gibt fünf Übergänge:

Übergang Entfernung Unter Grenzwert Über Grenzwert
Entfernung Kosten Entfernung Kosten
Depot → A 1.000 m 100 m 5 900 m 0,9
A→B 50 m 50 m 2,5 0 m 0
B → Sonstiges 1.030 m 100 m 5 930 m 0,93
Sonstiges → C 1.000 m 100 m 5 900 m 0,9
C → Depot 1.080 m 100 m 5 980 m 0,98
Gesamt 450 m 22,5 3.710 m 3,71

Die Gesamtkosten werden als Summe der beiden Kosten pro Kilometer berechnet:

  • die Kosten pro Kilometer unter dem Grenzwert (50) multipliziert mit der zurückgelegten Gesamtstrecke unter dem Grenzwert (450 m = 0,45 km)
  • die Kosten pro Kilometer über dem Grenzwert (1) multipliziert mit der zurückgelegten Gesamtstrecke über dem Grenzwert (3.710 m = 3,71 km)

Die Gesamtkosten betragen also 0,45 * 50 + 3,71 * 1 = 22,5 + 3,71 = 26,21.

Lösung 2: A, B und C auf dem Hinweg, nichts auf dem Rückweg

Bei dieser Lösung werden im Gegensatz zu Lösung 1 alle drei Sendungen „als Gruppe“ bei einer Fahrt auf der Straße geliefert. Bei der anderen Fahrt hält das Fahrzeug überhaupt nicht an. Auch hier gibt es fünf Übergänge, aber ihre Längen und Zusammensetzungen sind unterschiedlich:

Übergang Entfernung Unter Grenzwert Über Grenzwert
Entfernung Kosten Entfernung Kosten
Depot → A 1.000 m 100 m 5 900 m 0,9
A→B 50 m 50 m 2,5 0 m 0
B→C 30 m 30 m 1,5 0 m 0
C → Sonstiges 1.000 m 100 m 5 900 m 0,9
Sonstiges → Depot 2.080 m 100 m 5 1.980 m 1,98
Gesamt 380 m 19 3.780 m 3,78

Bei derselben Berechnung wie in Lösung 1 betragen die Gesamtkosten 0,38 * 50 + 3,78 * 1 = 19 + 3,78 = 22,78. Die Ausführung aller Besuche in einem Zeitblock ist also günstiger als die Ausführung in zwei Gruppen. Sie können diesen Effekt verstärken, indem Sie erhöhen DistanceLimit.cost_per_kilometer_below_soft_max.

Warum niedrige Kosten pro Kilometer unter dem Grenzwert nicht funktionieren

Da Sie kurze Übergänge gegenüber langen Übergängen bevorzugen möchten, könnten Sie versucht sein, für lange Übergänge hohe Kosten pro Kilometer festzulegen und die niedrigen Kosten pro Kilometer für kurze Übergänge beizubehalten. Dies hat jedoch den gegenteiligen Effekt: Da die ersten 100 Meter des Übergangs am günstigsten sind, nutzt der Optimierer diese „günstigen“ Meter am besten, indem er Übergänge bevorzugt, die fast oder mehr als 100 Meter lang sind.

Dieser Effekt ist in den beiden Beispiellösungen zu sehen. Wenn Sie die Kosten pro Kilometer unter und über dem Grenzwert vertauschen, ändern sich die Kosten für die Route:

Hohe Kosten über dem Grenzwert Hohe Kosten unter dem Grenzwert
Lösung 1 Lösung 2 Lösung 1 Lösung 2
Kilometer unter dem Grenzwert 0,45 0,38 0,45 0,38
Kosten pro Kilometer unter dem Grenzwert 1,00 1,00 50,00 50,00
Kilometer über dem Grenzwert 3,71 3,78 3,71 3,78
Kosten pro Kilometer über dem Grenzwert 50,00 50,00 1,00 1,00
Gesamtkosten 185,95 189,38 26,21 22,78

In jeder Version ist der niedrigere der Gesamtkosten der beiden Lösungen fett hervorgehoben. Wenn Sie hohe Kosten über dem Grenzwert verwenden, sind die Gesamtkosten der Route für die Route, bei der die Besuche gruppiert sind, jetzt höher. Das ist das Gegenteil von dem, was Sie erreichen wollten.