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 Zustellungen in der Nähe vom selben Fahrzeug in einem Zeitblock durchgeführt werden. Weitere Informationen zu Übergangsattributen finden Sie unter Geschäftslogik mit Übergangsattributen modellieren.

In diesem Fall gilt Folgendes:

  • Die Lieferungen der Sendungen A, B und C liegen nah beieinander auf derselben Straße.
  • Weitere Lieferungen sind geplant.
  • Für Lieferungen sind keine bestimmten Lieferzeiten angegeben.
  • Unabhängig vom Besuchsplan muss das Fahrzeug diese Straße zweimal befahren: einmal morgens auf dem Weg vom Depot und einmal abends auf dem Rückweg.
  • Die Gesamtdistanz 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 Meter von C entfernt sind.

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

Kosten pro Kilometer mit Grenzwert

Wenn Sie Besuche in der Nähe gruppieren möchten, müssen Sie zuerst eine Schwellendistanz auswählen. Das ist die maximale Entfernung zwischen zwei Besuchen, die Sie als nahe beieinander betrachten. In diesem Beispiel wird ein Grenzwert von 100 Metern verwendet, der in etwa einem Häuserblock in einem städtischen Gebiet entspricht. Sie können den Schwellenwert an Ihre geschäftlichen Anforderungen und die Präferenzen Ihrer Fahrer anpassen.

Um Besuche, die weniger als 100 Meter voneinander entfernt sind, zu gruppieren, legen Sie für die ersten 100 Meter jeder Übergangssequenz hohe Kosten und für alle zusätzlichen Meter des Übergangs niedrigere Kosten fest. Da die ersten 100 Meter am teuersten sind, erzielt der Optimizer die größten Einsparungen, indem er Übergänge verwendet, die kürzer als die 100-Meter-Grenze sind, auch wenn dadurch die Gesamtlänge der Route verlängert wird.

Um die Kosten einzurichten, fügen Sie ShipmentModel.transition_attributes einen neuen Eintrag mit den folgenden Properties 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 nicht für Sendungen oder Fahrzeuge verwendet werden, um alle möglichen Übergänge abzugleichen. Weitere Informationen finden Sie unter Alle Besuchsanträge abgleichen.

Funktionsweise bei hohen Kosten unter dem Schwellenwert

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

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

In dieser Lösung werden die Sendungen in die beiden Durchfahrten dieser Straße aufgeteilt. Zwei werden beim ersten Durchlauf und der verbleibende beim zweiten Durchlauf ausgeliefert. 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→other 1.030 m 100 m 5 930 m 0,93
other→C 1.000 m 100 m 5 900 m 0,9
C→Depot 1080 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 insgesamt zurückgelegten Strecke unter dem Grenzwert (450 m = 0,45 km),
  • Die Kosten pro Kilometer über dem Grenzwert (1) multipliziert mit der insgesamt zurückgelegten Strecke ü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: Auf dem Hinweg A, B und C ausführen, auf dem Rückweg nichts

Bei dieser Lösung werden im Gegensatz zu Lösung 1 alle drei Sendungen bei einer einzigen Fahrt auf der Straße „als Gruppe“ zugestellt. Bei der anderen Fahrt hält das Fahrzeug überhaupt nicht. Auch hier gibt es fünf Übergänge, aber ihre Länge und Zusammensetzung 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
other→depot 2080 m 100 m 5 1980 m 1,98
Gesamt 380 m 19 3780 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. Alle Besuche in einem Zeitblock durchzuführen, ist also kostengünstiger als in zwei Gruppen. Sie können diesen Effekt verstärken, indem Sie DistanceLimit.cost_per_kilometer_below_soft_max erhöhen.

Warum ein niedriger Kilometerpreis unter dem Schwellenwert nicht funktioniert

Da Sie kurze Übergänge bevorzugen, könnten Sie versucht sein, langen Übergängen hohe Kosten pro Kilometer zuzuweisen und die niedrigen Kosten pro Kilometer für kurze Übergänge beizubehalten. Das hat aber tatsächlich einen umgekehrten Effekt: Da die ersten 100 Meter des Übergangs am günstigsten sind, nutzt der Optimierer diese „günstigen“ Meter am effektivsten, indem er Übergänge mit einer Länge von fast oder mehr als 100 Metern bevorzugt.

Diesen Effekt können Sie sich in den beiden Beispiellösungen ansehen. Wenn Sie die Kosten pro Kilometer unter und über dem Grenzwert tauschen, ändern sich die Routenkosten:

Hohe Kosten über dem Grenzwert Hohe Kosten unter dem Grenzwert
Lösung 1 Lösung 2 Lösung 1 Lösung 2
KMs 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
KMs über dem Schwellenwert 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

Für jede Version werden die niedrigeren Gesamtkosten der beiden Lösungen fett hervorgehoben. Wenn Sie einen hohen Kostenwert über dem Grenzwert verwenden, sind die Gesamtkosten der Route für die Route, in der die Besuche gruppiert sind, jetzt höher. Das ist das Gegenteil von dem, was Sie erreichen wollten.