In diesem Abschnitt werden einige Optionen des Routing-Lösers beschrieben.
Suchlimits
Suchlimits beenden den Solver, nachdem er einen bestimmten Grenzwert erreicht hat, z. B. maximale Dauer oder Anzahl der gefundenen Lösungen. Du kannst eine Suche einrichten über die Suchparameter des Solverers. Weitere Informationen finden Sie unter Unter Zeitlimits finden Sie ein Beispiel.
In der folgenden Tabelle werden die häufigsten Suchbeschränkungen beschrieben.
Name | Typ | Standardeinstellung | Beschreibung |
---|---|---|---|
solution_limit
|
int64 | kint64max | Auf die Anzahl der Lösungen beschränken die während der Suche generiert wurden. |
time_limit.seconds
|
int64 | kint64max | Begrenzung in Sekunden auf die aufgewendete Zeit : in den Suchergebnissen. |
lns_time_limit.seconds
|
int64 | 100 | In Sekunden auf die in verbrachte Zeit begrenzen : die Abschlusssuche für jeden lokalen Suchnachbarn durchzuführen. |
Erste Lösungsstrategie
Die erste Lösungsstrategie ist die Methode, mit der der Matherechner
Lösung. In der folgenden Tabelle sind die Optionen für first_solution_strategy
aufgeführt.
Option | Beschreibung |
---|---|
AUTOMATIC
|
Damit erkennt der Solver, welche Strategie gemäß dem Modell zu verstehen. |
PATH_CHEAPEST_ARC
|
Ausgehend von einem „Start“ der Route verbinden Sie ihn mit dem Knoten, der das günstigste Routensegment erzeugt, und dann die Route um Iteration auf dem letzten Knoten vorgestellt, der der Route hinzugefügt wurde. |
PATH_MOST_CONSTRAINED_ARC
|
Ähnlich wie PATH_CHEAPEST_ARC , aber Bögen sind
mit einer vergleichsbasierten Auswahl ausgewertet, die den
den fixierten Bogen zuerst. Weisen Sie dem Routingmodell eine Auswahl zu, indem Sie die Methode
ArcIsMoreConstrainedThanArc() -Methode. |
EVALUATOR_STRATEGY
|
Ähnlich wie „PATH_CHEAPEST_ARC “, außer dass die Kosten des Bogens anfallen
werden mit der Funktion ausgewertet, die an
SetFirstSolutionEvaluator() |
SAVINGS
|
Einsparungsalgorithmus (Clarke &Wright). Referenz zu Clarke, G. & Wright, J.W. „Lieferung von Fahrzeugen von einem zentralen Depot zu einer Anzahl von Lieferpunkten“ , Operations Research, Band 12, 1964, S. 568–581. |
SWEEP
|
Erledigungsalgorithmus (Wren und Holliday). Verweisen Sie auf Anthony Wren & Alan Holliday, Computerplanung von Fahrzeugen von einem oder mehreren Lagern zu einer Anzahl von betriebsbereiten Lieferpunkten Research Quarterly (1970-1977), Band 23, Nr. 3 (Sep., 1972), S. 333–344. |
CHRISTOFIDES
|
Der Christofides-Algorithmus ist eine Variante des Christofides-Algorithmus, der eine maximale Übereinstimmung anstelle eines Maximums verwendet womit der 3/2-Faktor der Näherung für eine metrischen reisenden Vertriebsmitarbeiter). Funktioniert bei generischen Routenmodellen für Fahrzeuge, so lange erweitert, bis keine Knoten mehr eingefügt werden können. Referenz Nicos Christofides, Worst-Case-Analyse einer neuen Heuristik für The Travelling salesman problem, Bericht 388, Graduate School of Industrial Administration, CMU, 1976. |
ALL_UNPERFORMED
|
Alle Knoten deaktivieren. Findet nur dann eine Lösung, wenn Knoten sind optional (sind Element einer Disjunktionsbeschränkung mit endlichen Strafkosten). |
BEST_INSERTION
|
Erstellen Sie eine Lösung iterativ, indem Sie die kostengünstigste des Knotens an seiner günstigsten Position; basieren die Kosten der Implementierung auf den globalen des Routingmodells. Funktioniert ab 2/2012 nur auf Modellen mit optionale Knoten (mit begrenzten Strafkosten). |
PARALLEL_CHEAPEST_INSERTION
|
Erstellen Sie iterativ eine Lösung, indem Sie den Parameter
günstigsten Knoten an seiner
günstigsten Position; werden die Einfügungskosten
mit der Funktion arc cost. Ist schneller als BEST_INSERTION . |
LOCAL_CHEAPEST_INSERTION
|
Erstellen Sie iterativ eine Lösung, indem Sie jedes
des Knotens an seiner
günstigsten Position; Die Einfügungskosten basieren auf dem Bogen
-Kosten. Unterscheidet sich von PARALLEL_CHEAPEST_INSERTION durch den Knoten
zum Einfügen ausgewählt; werden Knoten in der Reihenfolge ihres
Erstellung. Ist schneller als PARALLEL_CHEAPEST_INSERTION . |
GLOBAL_CHEAPEST_ARC
|
Verbinden Sie zwei Knoten iterativ, um den günstigste Streckensegment. |
LOCAL_CHEAPEST_ARC
|
Wählen Sie den ersten Knoten mit einem ungebundenen Nachfolger aus und und mit dem Knoten verbinden, der das günstigste Routensegment erzeugt. |
FIRST_UNBOUND_MIN_VALUE
|
Ersten Knoten mit einem ungebundenen Nachfolger auswählen
und mit dem ersten verfügbaren Knoten verbinden. Dies entspricht der
Strategie CHOOSE_FIRST_UNBOUND kombiniert mit ASSIGN_MIN_VALUE (vgl.
Einschränkung_solver.h). |
Status suchen
Sie können den Status einer Suche mit der Methode status
des Routingmodells zurückgeben.
Hier ist der Python-Code, mit dem der Status einer Suche ausgegeben wird:
print("Solver status: ", solver.status())
Dadurch wird eine Ganzzahl mit den folgenden Bedeutungen ausgegeben:
Wert | Beschreibung |
---|---|
0 |
ROUTING_NOT_SOLVED : Problem noch nicht gelöst. |
1 |
ROUTING_SUCCESS : Problem erfolgreich gelöst. |
2
|
ROUTING_PARTIAL_SUCCESS_LOCAL_OPTIMUM_NOT_REACHED : Problem gelöst
nach dem Aufruf von RoutingModel.Solve() erfolgreich war, mit der Ausnahme,
Optimum wurde nicht erreicht. Wenn Sie mehr Zeit lassen, könnten wir
Lösung. |
3 |
ROUTING_FAIL : Keine Lösung für das Problem gefunden. |
4 |
ROUTING_FAIL_TIMEOUT : Zeitlimit erreicht, bis eine Lösung gefunden wurde. |
5 |
ROUTING_INVALID : Modell, Modellparameter oder Flags sind ungültig. |
6 |
ROUTING_INFEASIBLE : Problem ist nachweislich nicht umsetzbar. |
Lokale Suchoptionen
In der folgenden Tabelle sind die Optionen für lokale Suchstrategien (auch bekannt als Metaheuristik). Weitere Informationen finden Sie unter Suchstrategie ändern. finden Sie Beispiele für die Einstellung dieser Optionen.
Option | Beschreibung |
---|---|
AUTOMATIC |
Ermöglicht es dem Solver, die Metaheuristik auszuwählen. |
GREEDY_DESCENT |
Dient zur Verbesserung (Kostensenkung) der lokalen Suche nach Nachbarn, bis eine lokale Mindestwert erreicht ist. |
GUIDED_LOCAL_SEARCH |
Verwendet eine geführte lokale Suche, um dem lokalen Minima zu entkommen (vgl. geführte lokale Suche) ist das die effizienteste Metaheuristik für die Routenplanung. |
SIMULATED_ANNEALING |
Nutzt ein simuliertes Tempering, um dem lokalen Minima zu entkommen (vgl. Simuliertes Annealing). |
TABU_SEARCH |
Verwendet die Tabu-Suche, um lokalen Minima zu umgehen (vgl. Tabu-Suche). |
GENERIC_TABU_SEARCH |
Verwendet die Tabu-Suche zum Zielwert einer Lösung, um vor Ort zu entkommen Minima. |
Verteilungssteuerung
Name | Typ | Standardeinstellung | Beschreibung |
---|---|---|---|
use_full_propagation
|
bool | wahr | Einschränkungen mit vollständiger Weitergabe verwenden im Routingmodell (anstatt nur die Light-Propagation). Voll Nur bei tiefgehenden Suchen oder für Modelle ist die Weitergabe der Daten erforderlich. die starke Weitergabe erfordern, um den Wert des sekundären Variablen. Das Ändern dieser Einstellung auf "true" verlangsamt die Suche in und in allen Fällen die Speichernutzung erhöhen. |