GIS-Seminar WS00/01 Routen- und Tourenplanung - Motivation - Bedürfnisse - Spezifische Anforderungen - Algorithmen - Systemfunktionen mit ArcInfo - Bewertung von Thorsten Berka Motivation Motivation ist der Wunsch, optimal im Sinne seiner persönlichen Bedürfnisse und der gewählten Fortbewegungsart von seinem Standort zu einem bestimmten Zielort zu gelangen. Oder wie Konfuzius sagen würde: „Der Weg ist das Ziel.“ Bedürfnisse Sind hier beispielsweise, möglichst • anzukommen • schnell am Ziel zu sein • wenig Energie (z.B.: Körperkraft, Benzin...) zu verbrauchen • wenig Gefahrenstellen zu passieren • über bestimmte andere Zielpunkte zu kommen • ... Fortbewegungsarten Gemeint sind • Fahrrad • Auto • zu Fuß • Schiff • Eisenbahn • Flugzeug • ... Spezifische Anforderungen für die Routenplanung sind Straßennetze, die enthalten könnten: - Straßennamen - Entfernungen - Höhenunterschiede - Fahrradwege - Fußgängerzonen - Tempolimits - Baustellen - Höhen von Tunneln und Unterführungen - ... Algorithmus von Dijkstra Der Algorithmus von Dijkstra dient dazu, die kürzesten Entfernungen von einem Punkt aus zu allen anderen Punkten einer vorgegebenen Menge zu finden. Realisierung: Adjazenzliste Adjazenzmatrix Algorithmus von Dijkstra B C D E F G A(A) ∞ 12 13 ∞ ∞ 11 B --10 8 ∞ ∞ ∞ _________________________________________ A(A,B) --21 12 13 ∞ ∞ 12 D --∞ --∞ 6 ∞ __________________________________________ A(A,B,D) --21 --13 18 ∞ 13 E --∞ ----7 ∞ __________________________________________ A(A,B,D,E) --21 ----18 ∞ 18 F --∞ ------9 ____________________________________________ A(A,B,D,E,F) --------27 21 C ----------12 ____________________________________________ A(A,B,C,..,F) ----------27 E1 = 11 P1 = B E2 = 12 P2 = D E3 = 13 P3 = E E4 = 18 P4 = F E5 = 21 P5 = C E6 = 27 P6 = G Algorithmus von Dijkstra 1.) Ausgangspunkt A 2.) Auflistung der direkten Verbindungen 3.) Vergleich der Abstände und Ermittlung des nächstgelegenen Punktes 4.) Aufnahme des neuen Punktes in die Menge und erneute Auflistung der Strecken unter Berücksichtigung dieses Punktes 5.) Eventuell Eliminierung „doppelter“ Strecken und so weiter... Algorithmus von Dijkstra Vorteile des Algorithmus von Dijkstra: - Leicht zu implementieren - sehr effizienter Algorithmus - zwei verschiedene Kanten zwischen zwei Punkten möglich Problem dieses Algorithmus: - Nur ein Kriterium (meistens die Euklidsche Entfernung) wird berücksichtigt Komplexität Nimmt ab K o m p l e x i t ä t Nimmt zu O (log n) O (n) } } logarithmisch linear O (n log n) O (n²) quadratisch O (nª) polynomiell O (an) exponentiell O (nn) machbar Dijkstra kritisch TSP Traveling Salesman Problem Beim TSP geht es darum, durch eine Anzahl von vorgegebenen Städten eine Route zu legen, so daß ein möglichst kurzer Zyklus entsteht. Oder: Ein Kraftfahrer muß zu verschiedenen Städten je ein Produkt liefern. Zum Schluß muß er wieder zum Lager zurückkehren. Wie schafft er das am schnellsten? Traveling Salesman Problem Voraussetzungen: - Lagekoordinaten der Sehenswürdigkeiten - alle Sehenswürdigkeiten sind miteinander verbunden Damit gibt es (n-1)! mögliche Routen. Anzahl der Sehenswürdigkeiten 5 6 7 8 9 10 11 12 13 14 15 20 50 Anzahl der möglichen Routen 24 120 720 5.040 40.320 362.880 3.628.800 39.916.800 479.001.600 6.227.020.800 87.178.291.200 121.645.100.408.832.000 608.281.864.034.268.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000 Traveling Salesman Problem Zwei Arten von Algorithmen: - Systematische Algorithmen - Heuristische Algorithmen Heuristische Algorithmen: - Lokal Search - The Elastic Net Traveling Salesman Problem Lokal Search: Erst einmal müssen für Lokal Search einige Voraussetzungen erfüllt sein, damit sie arbeitet werden können. 1.) Methode zur Generierung einer Anfangslösung u 2.) Kostenfunktion f(u) 3.) Operationsziel 4.) Nachbarschaftsfunktion N(u) Traveling Salesman Problem Lokal Search: - iterativer Algorithmus - generiert Lösungen aus der Nachbarschaft von u - Vergleich dieser mit der aktuellen Lösung u´ Programmschema von LS: Startlösung Abbruchkriterium Initialize (u); while not terminate (u) do u´ := generate (u); if accept (u´) then u := u´ Auswahlverfahren der Lösungen Traveling Salesman Problem Lokal Search: Es gibt einzelne Untertypen von Lokal Search, welche sich vor allem durch das Auswahlverfahren der Lösungen unterscheiden. Das sind: - Ramdom Walk - Simple Descent (Hill Climbing) - Steepest Descent - Simulated Annealing - Tabu Search Traveling Salesman Problem Lokal Search: - Simple Descent (Hill Climbing): - klassisches Verfahren - Vergleichslösung zufällig aus Nachbarschaft - Lösung wird übernommen, wenn f(u´) < f(u) - dann u´ := u Traveling Salesman Problem Lokal Search: - Simulated Annealing: - Erweiterung von Simple Descent - Akzeptanzniveau gesenkt - auch u´ mit f(u´) > f(u) können bei hinreichend kleinem | f(u´) - f(u) | zu u gesetzt werden - jetzt Ermittlung und Vergleich mehrerer Minima möglich Traveling Salesman Problem Lokal Search: - Steepest Descent: - wie Simple Descent, folgt aber der optimalen Lösung aus der Nachbarschaft - Tabu Search: - wie Simulated Annealing, folgt aber der optimalen Lösung aus der Nachbarschaft O Simple Descent: http://www.sys.uea.ac.uk/~mdr/local.html Traveling Salesman Problem The Elastic Net: - interativer Algorithmus - Funktionsweise: - Ein Kreis bestehend aus vielen Punkten wird über die Karte mit den Städten gelegt. - Jeder Punkt wird der Reihe nach durch zwei Kräfte beeinflußt - Die erste bewegt ihn zur nächstgelegenen Stadt - Die zweite zieht ihn zu seinen jeweiligen Nachbarn. O Elastic Net http://nuweb.jinr.dubna.su/~filipova/tsp.html Routenplanung mit ArcInfo Ist Routenplanung mit ArcInfo möglich? Voraussetzungen sind gegeben: - Features entsprechen Kantenkosten - Knoten, Kanten und Features ergeben Netzwerke (=>Adjazenzliste) Für uns wichtige Prozeduren: - Bestimmung des kürzesten Weges zwischen zwei Punkten - Ausschließen bestimmter Kanten möglich - Route durch mehrere Punkte bedingt möglich Bewertung Wie könnte Routenplanung in Zukunft aussehen? - Globale Route mittels TSP-Algorithmen - Lokal zwischen zwei benachbarten Punkten mit Algorithmus von Dijkstra - Ermittlung der Kantenkosten im Vorfeld mit einer anwenderspezifischen Formel Kantenkosten = α * Distanz + β * Steigung + γ * Panorama +... Für Fahrradbote: α >> β >> γ Für Oma (zum Einkauf): β > α >> γ Für Tourist: γ >> β >= α Route zur GIS-Tour Hinfahrt 14 km: Loser-Route 11 km: Winner-Route 16 km: Kaffee-Route 21 km: Heavy-Route 29 km: The End ?