Routingoptionen

In diesem Abschnitt werden einige der Optionen für den Routing-Resolver beschrieben.

Suchlimits

Suchlimits beenden den Matherechner nach Erreichen eines bestimmten Limits, z. B. der maximalen Dauer oder der Anzahl der gefundenen Lösungen. Sie können ein Suchlimit über die Suchparameter des Matherechners festlegen. Ein Beispiel finden Sie unter Zeitlimits.

In der folgenden Tabelle werden die gängigsten Suchlimits beschrieben.

Name Typ Standard Beschreibung
solution_limit int64 kint64max Beschränke die Anzahl der Lösungen, die während der Suche generiert wurden.
time_limit.seconds int64 kint64max Zeitlimit in Sekunden für die Verweildauer in der Suche:
lns_time_limit.seconds int64 100 Limit in Sekunden auf die Zeit in: der Abschlusssuche für jeden lokalen Suchnachbarn.

Erste Lösungsstrategie

Die erste Lösungsstrategie ist die Methode, mit der der Rechner eine erste Lösung findet. In der folgenden Tabelle sind die Optionen für first_solution_strategy aufgeführt.

Option Beschreibung
AUTOMATIC Der Matherechner kann festlegen, welche Strategie gemäß dem zu lösenden Modell verwendet werden soll.
PATH_CHEAPEST_ARC Verbinden Sie den Knoten von einem „Start“-Knoten aus mit dem Knoten, der das günstigste Routensegment erzeugt. Erweitern Sie anschließend die Route, indem Sie den letzten Knoten hinzufügen, der der Route hinzugefügt wurde.
PATH_MOST_CONSTRAINED_ARC Ähnlich wie PATH_CHEAPEST_ARC, aber es wird mit einem vergleichsbasierten Selektor bewertet, bei dem der bogenstärkste Bogen zuerst bevorzugt wird. Verwenden Sie die Methode ArcIsMoreConstrainedThanArc(), um dem Routingmodell einen Selektor zuzuweisen.
EVALUATOR_STRATEGY Ähnlich wie PATH_CHEAPEST_ARC, mit der Ausnahme, dass Lichtbogenkosten mit der Funktion berechnet werden, die an SetFirstSolutionEvaluator() übergeben wird.
SAVINGS Energiesparalgorithmus (Clarke & Wright) Referenz Clarke, G. und Wright, J.W. "Planung of Vehicles from a Central Depot to a Number of Delivery Points", Operations Research, Vol. 12, 1964, S. 568–581.
SWEEP Sweep-Algorithmus (Wren & Holliday) Referenz von Anthony Wren und Alan Holliday, Computerplanung von Fahrzeugen von einem oder mehreren Depots zu einer Reihe von Betriebspunkten Operational Research Research Quarterly (1970-1977), Vol. 23, No. 3 (Sep., 1972), S. 333–344.
CHRISTOFIDES Christofides-Algorithmus (eine Variante des Christtofides-Algorithmus, der eine maximale Übereinstimmung anstatt einer maximalen Übereinstimmung verwendet, die keinen 3/2-Faktor der Näherung für einen Vertriebsmitarbeiter mit Messwerten des Messwerts garantiert). Funktioniert bei generischen Fahrzeugrouting-Modellen, indem eine Route erweitert wird, bis keine Knoten darin eingefügt werden können. Referenz von Nicos Christofides, Worst-Case Analysis of a new heuristic for the Traveling salesman problem, Report 388, Graduate School of Industrial Administration, CMU, 1976.
ALL_UNPERFORMED Alle Knoten deaktivieren. Ermittelt eine Lösung nur, wenn Knoten optional sind (ein Element einer Disjunktionseinschränkung mit einem begrenzten Strafkosten).
BEST_INSERTION Sie können eine Lösung iterativ erstellen, indem Sie den günstigsten Knoten an seiner günstigsten Position einfügen. Die Kosten für das Einfügen hängen von der globalen Kostenfunktion des Routingmodells ab. Ab 2.2012 funktioniert dies nur noch für Modelle mit optionalen Knoten (mit endgültigen Strafkosten).
PARALLEL_CHEAPEST_INSERTION Sie können eine Lösung iterativ erstellen, indem Sie den kostengünstigsten Knoten an seiner günstigsten Position einfügen. Die Kosten für das Einfügen basieren auf der Arc-Kostenfunktion. Ist schneller als BEST_INSERTION.
LOCAL_CHEAPEST_INSERTION Erstellen Sie iterativ eine Lösung, indem Sie jeden Knoten an seiner günstigsten Position einfügen. Die Kosten für das Einfügen basieren auf der Bogenbetriebskostenfunktion. Sie unterscheidet sich von PARALLEL_CHEAPEST_INSERTION durch den für den Einfügen ausgewählten Knoten. Hier werden Knoten in ihrer Reihenfolge berücksichtigt. Ist schneller als PARALLEL_CHEAPEST_INSERTION.
GLOBAL_CHEAPEST_ARC Zwei Knoten iterativ verbinden, sodass das kostengünstigste Routensegment erzeugt wird
LOCAL_CHEAPEST_ARC Wählen Sie den ersten Knoten mit einem ungebundenen Nachfolger aus und verbinden Sie ihn mit dem Knoten, der das kostengünstigste Routensegment erzeugt.
FIRST_UNBOUND_MIN_VALUE Wählen Sie den ersten Knoten mit einem ungebundenen Nachfolger aus und verbinden Sie ihn mit dem ersten verfügbaren Knoten. Das entspricht der Strategie CHOOSE_FIRST_UNBOUND in Kombination mit ASSIGN_MIN_VALUE (cf.constraint_solver.h).

Status der Suche

Sie können den Status einer Suche mit der Methode status des Routingmodells zurückgeben. So sieht der Python-Code aus, um den Status einer Suche auszugeben:

print("Solver status: ", solver.status())

Dadurch wird eine Ganzzahl mit der folgenden Bedeutung ausgegeben:

Wert Beschreibung
0 ROUTING_NOT_SOLVED: Das Problem wurde noch nicht gelöst.
1 ROUTING_SUCCESS: Das Problem wurde behoben.
2 ROUTING_PARTIAL_SUCCESS_LOCAL_OPTIMUM_NOT_REACHED: Problem wurde nach dem Aufrufen von RoutingModel.Solve() erfolgreich gelöst, es sei denn, eine lokale Optimierung wurde nicht erreicht. Mehr Zeit bedeutet, die Lösung zu verbessern.
3 ROUTING_FAIL: Für das Problem wurde keine Lösung gefunden.
4 ROUTING_FAIL_TIMEOUT: Zeitlimit wurde erreicht, bevor eine Lösung gefunden wird.
5 ROUTING_INVALID: Modell, Modellparameter oder Flags sind ungültig.
6 ROUTING_INFEASIBLE: Das Problem ist nicht umsetzbar.

Lokale Suchoptionen

In der folgenden Tabelle sind die Optionen für lokale Suchstrategien (auch Metaphysik genannt) aufgeführt. Beispiele für das Festlegen dieser Optionen finden Sie unter Suchstrategie ändern.

Option Beschreibung
AUTOMATIC Der Matherechner kann das Metaheurismus auswählen.
GREEDY_DESCENT Akzeptiert Verbesserungen (Kostenreduzierung) für lokale Nachbarn, bis ein lokaler Mindestbetrag erreicht wird.
GUIDED_LOCAL_SEARCH Mithilfe der geführten lokalen Suche entkommen lokale Minima. (siehe Geführte lokale Suche) In der Regel ist dies die effektivste Metaheurismus für die Routenführung.
SIMULATED_ANNEALING Zum Simulieren von lokalen Minima wird die simulierte Beleuchtung verwendet (siehe Simulierte Abfolge).
TABU_SEARCH Mithilfe der Tabu-Suche kann eine lokale Minima maskiert werden (siehe Tabu-Suche).
GENERIC_TABU_SEARCH Verwendet Tabu-Suche zum Zielwert der Lösung, um lokale Minima zu maskieren.

Vermehrung der Vermehrung

Name Typ Standard Beschreibung
use_full_propagation bool true Verwenden Sie Einschränkungen mit vollständiger Weitergabe im Routingmodell statt nur einfache Weitergabe. Eine vollständige Weitergabe ist nur erforderlich, wenn die Tiefensuche verwendet wird oder bei Modellen, die eine starke Weiterverteilung erfordern, um den Wert von sekundären Variablen zu vervollständigen. Durch das Ändern dieser Einstellung auf „true“ wird die Suche in den meisten Fällen verlangsamt und der Arbeitsspeicherverbrauch in allen Fällen erhöht.