Routingoptionen

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.