In diesem Beispiel wird gezeigt, wie Sie mithilfe von Übergangsattributen Routen 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 Übergangsattributen modellieren.
In diesem Fall gilt Folgendes:
- Die Lieferungen von Sendungen A, B und C befinden sich nah beieinander auf derselben Straße.
- Weitere Lieferungen sind in Planung.
- Für die Übermittlungen sind keine 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 Gesamtstrecke und die Dauer der Route sind immer gleich, unabhängig davon, wann A, B und C ausgeführt werden.
In dieser Situation und bei einer Anfrage, bei der nur die Kosten pro Stunde und die Kosten pro Kilometer verwendet werden, könnten A und B auf der optimierten Route am Morgen und C am Abend abgefertigt werden. Die Kosten der Lösung wären dann dieselben wie bei einer gleichzeitigen Abfertigung aller drei Aufträge.
Kosten pro Kilometer mit Grenzwert
Wenn Sie Besuche in der Nähe gruppieren möchten, müssen Sie zuerst einen Grenzwert für die Entfernung auswählen. Das ist die maximale Entfernung zwischen zwei Besuchen, die Sie als „in der Nähe“ betrachten. In diesem Beispiel wird ein Grenzwert von 100 Metern verwendet, der etwa einem Häuserblock in einem städtischen Gebiet entspricht. Sie können den Grenzwert an die Anforderungen Ihres Unternehmens und die Präferenzen Ihrer Fahrer anpassen.
Wenn Sie nahe gelegene Besuche innerhalb von 100 Metern voneinander gruppieren möchten, legen Sie hohe Kosten für die ersten 100 Meter jeder Überführung und niedrigere Kosten für alle zusätzlichen Meter der Überführung fest. Da die ersten 100 Meter am teuersten sind, erzielt der Optimierer die größten Einsparungen, wenn Übergänge verwendet werden, die kürzer als 100 Meter 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:
- Wenn Sie alle möglichen Übergänge abdecken möchten, wählen Sie ein Tag aus, das im Modell nirgends verwendet wird, z. B.
UNUSED_TAG
. Legen Sie für dieses TagTransitionAttributes.excluded_src_tag
undTransitionAttributes.excluded_dst_tag
fest. - Richten Sie
TransitionAttributes.distance_limit
mit dem Grenzwert für die Entfernung und den Kosten ein:- Legen Sie
DistanceLimit.soft_max_meters
auf den ausgewählten Grenzwert fest. - Legen Sie
DistanceLimit.cost_per_kilometer_below_soft_max
auf die Kosten pro Kilometer unter dem Grenzwert fest. - Legen Sie
DistanceLimit.cost_per_kilometer_above_soft_max
auf die Kosten pro Kilometer über dem Grenzwert fest.
- Legen Sie
{
"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, damit alle möglichen Übergänge übereinstimmen. Weitere Informationen finden Sie unter Alle Besuchsanfragen abgleichen.
Funktionsweise bei hohen 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, B auf dem Hinweg, C auf dem Rückweg
In dieser Lösung werden die Sendungen auf die beiden Durchquerungen dieser Straße aufgeteilt. Zwei davon werden bei der ersten Durchsuchung und die verbleibende bei der zweiten zugestellt. 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 ergeben sich aus der Summe der beiden Kosten pro Kilometer:
- 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 ausführen, nichts auf dem Rückweg
Anders als bei Lösung 1 werden bei dieser Lösung alle drei Sendungen bei einer einzigen Fahrt über die Straße „als Gruppe“ zugestellt. Bei der anderen Durchfahrt hält das Fahrzeug überhaupt nicht an. Auch hier gibt es fünf Übergänge, deren Länge und Zusammensetzung sich jedoch unterscheiden:
Ü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 |
andere → 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 Durchführung aller Besuche in einem Zeitblock ist also gü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 Grenzwert nicht funktioniert
Da Sie kurze Übergänge gegenüber langen bevorzugen möchten, sind Sie möglicherweise versucht, 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 einen umgekehrten Effekt: Da die ersten 100 Meter der Überleitung am günstigsten sind, nutzt der Optimierer diese „günstigen“ Meter am effektivsten, indem er Überleitungen bevorzugt, die fast oder über 100 Meter lang sind.
Sie können diesen Effekt an den beiden Beispiellösungen sehen. Wenn Sie den Kilometerpreis unter und über den Grenzwert setzen, ä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 | |
Kilometer unter dem Grenzwert | 0,45 | 0,38 | 0,45 | 0,38 |
Kosten pro Kilometer unter Grenzwert | 1 | 1 | 50,00 | 50,00 |
Kilometer über dem Grenzwert | 3.71 | 3,78 | 3.71 | 3,78 |
Kosten pro Kilometer über Grenzwert | 50,00 | 50,00 | 1 | 1 |
Gesamtkosten | 185.95 | 189.38 | 26.21 | 22.78 |
Bei jeder Version wird der niedrigere der Gesamtkosten der beiden Lösungen fett hervorgehoben. Sie sehen, dass die Gesamtkosten der Route, in der die Besuche gruppiert sind, jetzt höher sind, wenn Sie einen hohen Kostenwert über dem Grenzwert verwenden. Das ist das Gegenteil von dem, was Sie erreichen wollten.