In diesem Beispiel wird gezeigt, wie Sie Übergangsattribute verwenden, um Routen zu priorisieren, bei denen Abholungen und Lieferungen in der Nähe von demselben 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 der Sendungen A, B und C liegen nahe beieinander auf derselben Straße.
- Weitere Lieferungen sind noch in der Zukunft.
- Für Lieferungen gibt es keine festgelegten Lieferzeiten.
- 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 diesem Fall und bei einer Anfrage, die nur Kosten pro Stunde und Kosten pro Kilometer verwendet, könnte die optimierte Route so aussehen, dass A und B morgens und C abends bearbeitet werden. Die Kosten der Lösung wären dann dieselben, als wenn alle drei gleichzeitig bearbeitet würden.
Kosten pro Kilometer mit einem Grenzwert
Wenn Sie Besuche in der Nähe gruppieren möchten, müssen Sie zuerst einen Schwellenwert für die Entfernung auswählen. Dies ist die maximale Entfernung zwischen zwei Besuchen, die Sie als nahe beieinander betrachten. In diesem Beispiel wird ein Schwellenwert von 100 Metern verwendet, was in etwa einem Häuserblock in einem Stadtgebiet entspricht. Sie können den Schwellenwert erhöhen oder verringern, um ihn an Ihre geschäftlichen Anforderungen und die Präferenzen Ihrer Fahrer anzupassen.
Wenn Sie Besuche in der Nähe, die maximal 100 Meter voneinander entfernt sind, gruppieren möchten, legen Sie für die ersten 100 Meter jedes Übergangs hohe Kosten und für alle weiteren Meter des Übergangs niedrigere Kosten fest. Da die ersten 100 Meter am teuersten sind, erzielt der Optimierer die größten Einsparungen, wenn er Übergänge verwendet, die kürzer als der Schwellenwert von 100 Metern sind, auch wenn dadurch die Gesamtlänge der Route verlängert wird.
Wenn Sie die Kosten einrichten möchten, fügen Sie ShipmentModel.transition_attributes einen neuen Eintrag mit den folgenden Attributen hinzu:
- Wenn Sie alle möglichen Übergänge abgleichen möchten, wählen Sie ein Tag aus, das nirgendwo im Modell verwendet wird, z. B.
UNUSED_TAG. Legen Sie fürTransitionAttributes.excluded_src_tagundTransitionAttributes.excluded_dst_tagdieses Tag fest. - Richten Sie
TransitionAttributes.distance_limitmit der Schwellenwertentfernung und den Kosten ein:- Legen Sie
DistanceLimit.soft_max_metersauf den ausgewählten Grenzwert fest. - Legen Sie für
DistanceLimit.cost_per_kilometer_below_soft_maxdie Kosten pro Kilometer unter dem Schwellenwert fest. - Legen Sie für
DistanceLimit.cost_per_kilometer_above_soft_maxdie 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, um alle möglichen Übergänge abzugleichen. Weitere Informationen finden Sie unter Alle Besuchsanfragen abgleichen.
Funktionsweise von „Hohe Kosten unter dem Schwellenwert“
In diesem Abschnitt wird gezeigt, wie sich die Kosten unter und über dem Schwellenwert auf die Gesamtkosten verschiedener 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 auf die beiden Durchfahrten dieser Straße aufgeteilt. Zwei davon werden beim ersten Durchlauf und die 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 | 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 Schwellenwert (50) multipliziert mit der gesamten zurückgelegten Strecke unter dem Schwellenwert (450 m = 0,45 km),
- die Kosten pro Kilometer über dem Grenzwert (1) multipliziert mit der gesamten 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: A, B und C auf dem Hinweg, nichts auf dem Rückweg
In dieser Lösung werden im Gegensatz zu Lösung 1 alle drei Sendungen „als Gruppe“ während einer Fahrt auf der Straße zugestellt. Bei der anderen Durchquerung hält das Fahrzeug überhaupt nicht an. 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→Sonstige | 1.000 m | 100 m | 5 | 900 m | 0,9 |
| other→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 Kosten für die Durchführung aller Besuche in einem Zeitblock sind also niedriger als für die Durchführung in zwei Gruppen. Sie können diesen Effekt verstärken, indem Sie DistanceLimit.cost_per_kilometer_below_soft_max erhöhen.
Warum ein niedriger Preis pro Kilometer unter dem Grenzwert nicht funktioniert
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 und für kurze Übergänge niedrige Kosten pro Kilometer anzugeben. Das hat jedoch den gegenteiligen 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 bevorzugt, die fast oder mehr als 100 Meter lang sind.
Sie können diesen Effekt an den beiden Beispiellösungen sehen. Wenn Sie die Kosten pro Kilometer unter und über dem Schwellenwert vertauschen, ändern sich die Routenkosten:
| Hohe Kosten über dem Grenzwert | Hohe Kosten unter dem Schwellenwert | |||
|---|---|---|---|---|
| Lösung 1 | Lösung 2 | Lösung 1 | Lösung 2 | |
| KM unter dem Schwellenwert | 0,45 | 0,38 | 0,45 | 0,38 |
| Kosten pro km unter dem Grenzwert | 1,00 | 1,00 | 50,00 | 50,00 |
| KM über dem Schwellenwert | 3,71 | 3,78 | 3,71 | 3,78 |
| Kosten pro Kilometer über dem Schwellenwert | 50,00 | 50,00 | 1,00 | 1,00 |
| Gesamtkosten | 185,95 | 189,38 | 26.21 | 22,78 |
Für jede Version sind die niedrigeren Gesamtkosten der beiden Lösungen fett hervorgehoben. Wenn Sie einen hohen Wert für die Kosten über dem Schwellenwert verwenden, sind die Gesamtkosten der Route jetzt höher für die Route, auf der die Besuche gruppiert sind. Das ist das Gegenteil von dem, was Sie erreichen wollten.