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.

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:
- Wählen Sie ein Tag aus, das nirgendwo im Modell verwendet wird, z. B.
UNUSED_TAG, um alle möglichen Übergänge abzugleichen. Legen Sie fürTransitionAttributes.excluded_src_tagundTransitionAttributes.excluded_dst_tagdieses Tag fest. - Richten Sie
TransitionAttributes.distance_limitmit der Grenzentfernung und den Kosten ein:- Legen Sie für
DistanceLimit.soft_max_metersden ausgewählten Grenzwert fest. - Legen Sie für
DistanceLimit.cost_per_kilometer_below_soft_maxdie Kosten pro Kilometer unter dem Grenzwert fest. - Legen Sie für
DistanceLimit.cost_per_kilometer_above_soft_maxdie Kosten pro Kilometer über dem Grenzwert fest.
- Legen Sie für
{
"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.