The Fully-Dynamic-Ontrip Problem - WWW-Docs for B-TU

Werbung
The Fully-Dynamic-Ontrip Problem –
eine dynamische Fahrplanauskunft
Annabell Berger
Kurzfassung
Wir lösen das Problem einer dynamischen Fahrplanauskunft in einem realen Szenario mit hohen
Updateraten und zahlreichen, praktischen Anforderungen. Die Arbeit besteht aus drei Teilen. Der
erste befasst sich mit der Entwicklung und Diskussion einer geeigneten Modellierung, der zweite
Teil beschäftigt sich mit Beschleunigungsverfahren für dieses Problem und der dritte Teil fasst
ausgiebige Tests unseres implementierten Prototyps zusammen. Letztlich zeigt sich, dass wir
einen praktikablen Ansatz gefunden haben. Dennoch bleibt die Frage offen, ob es noch bessere
Beschleunigungstechniken für dieses Problem gibt.
0. Einleitung
Vor einiger Zeit begann meine Arbeitsgruppe
eine langjährige Zusammenarbeit mit der
Deutschen Bahn. Die Aufgabe war, eine
sogenannte dynamische Fahrplanauskunft zu
implementieren. Eine dynamische Fahrplanauskunft behandelt das folgende Problem.
Ein Reisender möchte gern mit der Bahn von
Halle nach Senftenberg fahren. Es soll eine
optimale Verbindung für diesen Kunden mit
Hilfe eines Kursbuches gefunden werden.
Dabei sollen alle aktuellen Verspätungen
berücksichtigt sein. Auf den ersten Blick
scheint dieses Problem sehr einfach zu sein.
Es ähnelt einem Kürzeste-Wege- Problem.
1. Das Kürzeste- Wege-Problem – der
klassische Zugang
Das kürzeste-Wege-Problem gehört zu den
bekanntesten und am besten untersuchten
Problemen
der
algorithmischen
Graphentheorie. Gegeben sei ein Graph, der
aus Knoten und gerichteten Kanten besteht,
die zwei Knoten in einer Richtung oder zwei
Richtungen miteinander verbinden können.
Man suche einen gerichteten Weg von
Knoten s nach Knoten t, der die geringste
Anzahl an Kanten hat unter all solchen
Wegen. Es ist auch möglich auf jede Kante
des Graphen ein Gewicht zu legen, was
beispielsweise die Kilometerdistanz zweier
Knoten beschreibt, wenn sie durch eine
Kante miteinander verbunden sind. Dann
kann das kürzeste-Wege Problem als die
Bestimmung eines Weges von s nach t mit
minimaler Kilometerzahl modelliert werden.
Dieses Problem ist in polynomieller,
asymptotischer Zeit lösbar und seit den 50er
Jahren sind drei große Hauptstrategien
bekannt, um dieses Problem zu berechnen.
Sie beruhen entweder auf Matrizenmultiplikationen in Integritätsringen (Ford [6]),
auf dynamischer Programmierung (Bellmann
[1]) oder dem Aufbau eines kürzesten-WegeBaumes nach Dijkstra [5]. Tatsächlich
berechnen diese Algorithmen jedoch eine viel
größere Lösungsmenge als nur einen Weg
von s nach t. Der Fordsche Algorithmus
berechnet für jedes Knotenpaar im Graphen
einen kürzesten Weg, Bellmann und Dijkstra
berechnen für einen festen Knoten s je einen
kürzesten Weg von s zu allen anderen
Knoten t. Die Beschränkung auf eine
Lösungsmenge, die genau einen kürzesten
Weg von s nach t enthält, ermöglicht häufig
die Beschleunigung der Laufzeiten. Bekannt
sind
diese
Verfahren
unter
den
Bezeichnungen „zielgerichtete Suche“ (A*Algorithmus) oder Bidirektionaler Dijkstra.
Diese Verfahren besitzen keine asymptotisch
besseren Laufzeiten, sind jedoch häufig um
Faktoren schneller. Kommen wir zurück zur
Fahrplanauskunft.
10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
1
2. Die dynamische Fahrplanauskunft –
ein Modell
2.1. Alle praktischen Anforderungen
auf einen Blick
Wir konstruieren einen Graphen, in dem die
Knoten die Bahnhöfe repräsentieren. Zwei
Knoten werden genau dann miteinander
verbunden, wenn es mindestens eine
fahrbare Verbindung zwischen diesen Knoten
gibt. Doch nun wird es bereits schwierig.
Offensichtlich besitzen unsere Kanten
Fahrzeiten, die von der Tageszeit abhängen.
So kann es vorkommen, dass 8.00 Uhr ein
Zug von Halle nach Leipzig fährt, der
20 Minuten benötigt, gegen 13.00 Uhr jedoch
30 Minuten. Auch bei Routenplanern auf
Straßennetzwerken findet sich dieses
Problem. Berücksichtigt man auf Straßennetzwerken Hauptverkehrszeiten und Abendstunden, so wird man auch hier in der
Realität Fahrzeitprofile auf den Kanten
finden, die von der Tageszeit abhängen. Des
Weiteren können vorhersehbare Störungen wie Baustellen - die Fahrzeitprofile zusätzlich
beeinflussen. Diese Sichtweise führt zur
Konstruktion eines sogenannten zeitabhängigen Graphen. Jedoch auch unvorhersehbare
Schwankungen, die durch
schlechte Witterungsverhältnisse, Unfälle und
ähnliches
geschehen
können,
sollten
irgendwie behandelbar sein. Unser Problem
bekommt
zusätzlich
eine
dynamische
Komponente, die eine regelmäßige Aktualisierung der Fahrzeitprofile benötigt. Diese
Modellierung erfüllt jedoch keineswegs alle
Anforderungen aus der Praxis. Im deutschen
Bahnnetz existieren Messpunkte, von denen
aus in regelmäßigen Abständen Signale
gesendet werden und die die aktuelle
Verspätungssituation im Netz bekanntgeben.
Genau genommen handelt es sich um 6
Millionen Update-Informationen an einem
Betriebstag, also ungefähr 60 Updates pro
Sekunde, die ständig neu eingearbeitet
werden müssen. Andererseits lösen aktuelle
Verspätungen im Bahnnetz Kaskaden von
weiteren, zukünftigen Verspätungen aus. Der
Grund dafür ist ein Wartezeitregelwerk, was
das aufeinander Warten oder Nichtwarten
zwischen verspäteten Zügen regelt. Dieses
Regeln ermöglicht es uns, Vorhersagen über
Folgeverspätungen realitätsnah zu berechnen. An dieser Stelle wird klar, dass die
Anforderungen an unsere Modellierung
bereits stark vom klassischen KürzesteWege-Problem abweichen. Und es kommen
noch weitere Bedingungen hinzu. Während
sich das klassische Problem nur auf die
Suche eines kürzesten Weg zwischen s und t
beschränkt, wollen wir einem Bahnfahrer
verschiedene Alternativen von s nach t
anbieten, damit er die Wahl zwischen
verschiedenen Wegen hat. Außerdem wäre
es eine sehr schlechte Idee, alle Reisenden
auf genau denselben Weg zu schicken,
währende
andere
Wege
vollkommen
unbenutzt wären. An dieser Stelle kann man
sich fragen, ob tatsächlich immer nur die
Fahrzeit ein wichtiges Kriterium für Bahnfahrer ist. Tatsächlich sind weitere naheliegende Kriterien die Anzahl der Umstiege
oder eine Umstiegssicherheit, die misst, wie
wahrscheinlich es ist, dass alle geplanten
Umstiege tatsächlich stattfinden können.
Auch die Kosten für die Fahrt stellen ein
sinnvolles Kriterium dar. Wir nennen einen
Weg P von s nach t Pareto-optimal, wenn es
keinen weiteren Weg von s nach t gibt, der in
allen Kriterien mindestens genauso gut und
in einem Kriterium besser als P ist. So bleibt
es letztlich einem Bahnfahrer überlassen,
welche Kriterien für ihn die Bestimmenden
sind. Er wählt aus sehr guten Wegen den für
ihn besten.
2.2. Das formale Modell
Das Fully Dynamic Ontrip Problem ist die
Suche nach
10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
1. allen (nicht nur einem),
2. diskreten, zeitabhängigen (auch
eventabhängigen),
3. multikriteriellen,
4. Pareto-optimalen s, t-Pfaden,
2
wobei die Fahrzeitfunktionen auf jeder Kante
des Graphen nur durch eine minimal,
mögliche Fahrzeit nach unten beschränkt
sein können. Diese Einschränkung spiegelt
die Tatsachen aus der realen Welt wieder,
denn keine Strecke kann beliebig schnell
abgefahren werden.
Ein exakter Lösungsalgorithmus ist den
klassischen Algorithmen des KürzestenWege-Problems sehr ähnlich. Interessant ist
nämlich, dass die Korrektheit aller dieser
Algorithmen
auf
einer
strukturellen
Eigenschaft von kürzesten Wegen – der
Subweg-Optimalität- beruht. Diese besagt,
dass jeder Teilweg eines kürzesten Weges
auch ein kürzester Weg ist. Auf den ersten
Blick schien diese Eigenschaft in unserem
Fall zu brechen. Man betrachte beispielsweise zwei Wege von s nach t mit einem
Umstieg in A, die 8.00 Uhr in s starten. Der
erste Zug ist ein ICE, und er kommt
10.00 Uhr in A an. Der zweite Zug ist eine
Regionalbahn, die gegen 10.30 Uhr Bahnhof
A erreicht. Beide können jedoch erst
11.00 Uhr in A mit der gleichen Regionalbahn
nach t abfahren, wo sie 12.00 Uhr
ankommen. Beides sind Pareto-optimale
Wege mit der gleichen Fahrzeit und einem
Umstieg. Allerdings ist der Teilweg des
zweiten Weges von s nach A kein Paretooptimaler Weg, denn der Teilweg von Weg 1
ist besser. Auf den zweiten Blick ist es jedoch
möglich auch für jeden Pareto-optimalen
Weg eine modifizierte Subwegeigenschaft zu
finden (siehe [3]).
Diese ermöglicht Lösungsalgorithmen, die
den klassischen Algorithmen sehr ähnlich
sind. Jedoch wird es nun notwendig statt
einem Label pro Knoten wie bei einem
Dijkstra-Algorithmus, viele Label pro Knoten
zu konstruieren. Diesen zusätzlichen Aufwand bezahlt man mit erheblich schlechteren
Laufzeiten. Da Fahrplanauskunftsserver pro
Tag viele Millionen Anfragen beantworten
können müssen, wurde die Notwendigkeit
von Beschleunigungsverfahren, die beweisbar korrekt sind, notwendig.
2.3. Beschleunigungstechniken für
eine dynamische Fahrplanauskunft
Sucht man in der aktuellen Literatur nach
Beschleunigungsverfahren für Routenplaner
in Straßennetzwerken, so findet man eine
Flut von vielversprechenden Verfahren (für
einen Überblick siehe Delling [4]), die
Anfragen um Größenordnungen beschleunigen können. Eine generelle Herangehensweise ist es, in einem Preprocessingschritt,
Teilinformationen zu berechnen, so dass eine
Anfrage schneller bearbeitet werden kann.
Das ist möglich, weil man beispielsweise nur
auf einem Teilgraphen suchen muss oder
weil Wege kontrahiert wurden oder weil
Kanten Hierarchien zugeordnet werden.
Hierbei
muss
immer
auf
ein
gut
ausbalanciertes Verhältnis von Speicherplatzbedarf und Laufzeit des Algorithmus
geachtet werden. Die Laufzeiten des
Preprocessingschrittes können oft viele
Stunden betragen. Die Anfragzeiten bei der
Auskunft jedoch betragen nur tausendstel
Sekunden. Ein beeindruckender Erfolg.
Kommt jedoch eine dynamische Komponente
hinzu, dann werden die Vorberechnungen
ungültig. Einige dieser Beschleunigungsverfahren sind theoretisch auch auf das
dynamischen Szenario übertragbar, aber nur
ein einziges, (uns) bekanntes Verfahren, ist
dann noch praktisch verwendbar. Der Grund
liegt in der Erfordernis von regelmäßigen
Updates der Vorberechnungen in Realtime,
was aufgrund der Größe der Laufzeiten einer
einzigen Vorberechnung unmöglich ist. Die
andere Möglichkeit das Verfahren zu retten
besteht dann darin, die vorberechneten
Werte „so schlecht“ zu wählen, dass auch
nach Updates die Möglichkeit einer korrekten
Berechnung besteht. Das aber führt zu sehr
schlechten Beschleunigungsfaktoren. Außerdem gibt es noch ein weiteres Problem.
Tatsächlich stellt sich heraus, dass alle diese
Verfahren ein anderes Modell als das Fully
Dynamic Ontrip Problem betrachten. Die
Straßennetzwerke werden nämlich als
Graphen
angenommen,
die
statische
Kantengewichte besitzen. Bei Informationen
wie Staus etc. werden die Fahrzeiten auf den
10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
3
Kanten verändert. Wir bezeichnen dieses
Modell als Semidynamic Ontrip Problem. Der
entscheidende Punkt ist nämlich, dass die
Suche auf einem statischen Graphen
stattfindet. Betrachten wir das folgende
Beispiel. Stellen wir uns vor eine Brücke ist
von 8.00 Uhr bis 8.30 Uhr gesperrt. Ein
Autofahrer, der 8.20 Uhr vom Start zum Ziel
fahren möchte, wartet deswegen bis 8.30 Uhr
und kommt 8.32 Uhr am Wunschort an. Im
Semidynamic Ontrip Problem ist dieses
Szenario nicht vorgesehen. Dort ist entweder
die Brücke zu jeder Zeit gesperrt- der
Autofahrer wählt einen Umweg und erreicht
das Ziel 8.35 Uhr (Abb. 1)- oder die Brücke
ist nicht gesperrt, dann fährt er sofort los
(Abb. 2).
Es ist nicht klar, wie gut die Art der
berechneten Lösungen überhaupt in dieser
Modellierung sein kann. Es gibt nur eine uns
bekannte Arbeit [7], die ein zeitabhängiges
dynamisches Szenario behandelt und dieses
basiert ausschließlich auf Beschleunigungstechniken, die nicht beweisbar korrekt sind.
Wir wollten deswegen ein Beschleunigungsverfahren für das Fully-Dynamic-Ontrip Problem entwickeln, was folgende Anforderungen erfüllt:
1.) - keine zeitraubende, erneute
Vorberechnung nach einem Update
2.) - Beschleunigungsfaktoren des
statischen Falles bleiben erhalten
3.) - Verfahren ist anwendbar in einem
echten Szenario mit hohen
Updateraten
4.) - Finden aller Pareto-optimalen
Lösungen ist beweisbar möglich
Abb. 1: Szenario - Brücke gesperrt
Abb. 2: Szenario - Brücke nicht gesperrt
Die erste Lösung ist zwar im Modell optimal,
in der Wirklichkeit jedoch nicht. Die zweite
Lösung existiert in der realen Welt nicht. Man
stelle sich nun vor, in welchen Zeitabständen
sich Zeitprofile auf Straßen ändern können.
Wir entwickelten zwei verschiedene Beschleunigungstechniken, die hier nur in Kürze
genannt werden sollen und nachlesbar sind
in [2]. In unserem ersten Verfahren bewerten
wir - in einem Vorberechnungsschritt unterliegende statische Kanten (Gewichte
sind die unteren Fahrzeitschranken) des
zeitabhängigen Modell mit Leveln von 1 bis k,
den sogenannten k-Flags. Damit stellen wir
fest, welche Wichtigkeit Kanten zu festen
Zielen hin für Pareto-optimale Wege
besitzen. Die Suche findet dann auf einem
Teilgraphen statt, der nur Kanten bis zu
einem speziellen Level enthält. Da sich die
unteren Fahrzeitschranken niemals ändern,
müssen die k-Flags nur einmal berechnet
werden und können nach jedem Update
weiter verwendet werden. Das Verfahren
erfüllt somit die Punkte 1.) und 4.). Unser
zweites Verfahren trägt den Namen Subito
(Substructure in time-dependent optimization)
und macht seinem lateinischen Namen
(„plötzlich, auf der Stelle“) alle Ehre. Es
erlaubt uns, eine tiefere Einsicht über
gewisse
mathematische
Struktureigenschaften zu verwenden und auf sämtliche
10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
4
Vorberechnungen zu verzichten. Diese
Eigenschaft führt dazu, dass die Anzahl der
Ankunfts- und Abfahrtsereignisse im Graphen
während der Suche drastisch reduziert wird.
Auch hier sind die Punkte 1.) bis 4.) erfüllt.
Beide Techniken können auch miteinander
kombiniert werden. Um die Punkte 2.) und 3.)
zu diskutieren, betrachten wir unsere
Experimente.
3. Experimente
Abb. 4
Unsere Testinstanzen basieren auf dem
Fahrplan der Deutschen Bahn von 2008. Wir
optimierten die Zielkriterien Fahrzeit und
Umstiegszahl. Das deutsche Bahnnetz
umfasst 8817 Bahnhöfe, 40034 Züge, 392
Fußpfade
(das
sind
zu
laufende
Verbindungen zwischen zwei Bahnhöfen)
und 1135479 Zugverbindungen (ohne
Zwischenhalt). Unsere Testumgebung war
ein Standard PC (Intel(R) Xeon(R), 2.93
GHz, 4MB Cache, 47 GB main memory,
ubuntu linux version 8.10, C++ compiliert mit
g++ 4.4.1.).
In unseren ersten Experimenten untersuchten wir die Laufzeiten unserer Anfragealgorithmen ohne dynamische Updates des
Graphenmodells. Dabei beobachteten wir
einen Zusammenhang von der Laufzeit des
Algorithmus
und
der
Fahrzeit
von
gefundenen Wegen (Abb. 3). Unsere
Beschleunigungsverfahren
konnten
die
besonders zeitraubenden Anfragen (die
langen Wege) beschleunigen, während wir
bei sehr kurzen Anfragen keinen Effekt
beobachteten (siehe Abb. 4).
Abb. 3
Die besten Beschleunigungen wurden durch
eine Kombination von k-Flags und SUBITO
erreicht. Allerdings ist der Effekt im Vergleich
zu SUBITO alleine so gering, dass es sich
eigentlich nicht lohnt, die aufwändige k-Flag
Berechnung durchzuführen. Wir untersuchten
die Gründe für diese Beobachtung und es
stellte sich heraus, dass 72% aller statischer
Kanten mit kleinen Leveln auf Paretooptimalen Wegen liegen und somit eine nur
sehr geringe Ausdünnung des Graphen
stattfindet. Was unseren Untersuchungen
nun
noch
fehlte,
waren
ausgiebige
Stabilitätstests in Verspätungsszenarien.
Würden die Beschleunigungen einem Update
des Graphen standhalten? Wir starteten
folgende Experimente. Für einen Tag des
Jahres besaßen wir die vollständigen
Verspätungsmeldungen im Bahnnetz (mit
800000 Update-Operationen). Andere Verspätungsfälle simulierten wir. Wir verteilten
im Szenario „Schnee und Eis in ganz
Deutschland“ 5,10,60, 100 Minuten Verspätungen auf eine Reihe von Bahnhöfen. Im
Szenario „2 Stunden Ruhe an einem großen
Bahnhof“ schlossen wir für zwei Stunden die
Bahnhöfe Frankfurt, Leipzig und Hannover. In
allen Szenarien bewahrten sich die
Beschleunigungsfaktoren und waren sich
sehr ähnlich. Während die Pareto-optimale
Suche
im
unbeschleunigten
Szenario
durchschnittlich 2.2 s benötigte, brauchte
eine Anfrage mit Beschleunigungstechniken
im Schnitt nur 0.24 s - und wenn man die
Lösungsmenge noch ein wenig einschränktlediglich 0.13 s. Unsere Beschleunigungsfaktoren sind demnach 10 bzw. 17. Dem
Vergleich mit den Beschleunigungsfaktoren
10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
5
im Semidynamic Ontrip Problem können wir
nicht standhalten. Jedoch haben wir die
ersten, beweisbar korrekten Beschleunigungsverfahren für das Fully-DynamicOntrip Problem erfunden und erfüllen alle vier
Punkte aus Kapitel 2.3. Unser Prototyp ist
somit einsatzfähig in der echten Welt.
projekte zur Netzwerkanalyse, zum Erzeugen von
Zufallsgraphen, zur dynamischen Fahrplanauskunft und zum Verspätungsmanagement bei
der Bahn.
4. Referenzen:
[1] R.E. Bellmann, Dynamic Programming,
Princeton University Press, Princeton, 1957.
[2] A. Berger, M. Grimmer, and M. MüllerHannemann, Fully dynamic speed-up techniques
for multi-criteria shortest path searches in timedependent networks, Proceedings of SEA
2010, LNCS 6049, pp. 35-46, Springer, 2010.
[3] A. Berger und M. Müller-Hannemann.
Subpath-Optimality of Multi-Criteria Shortest
Paths in Time- and Event-Dependent Networks,
Technical Report 01/2009.
[4] D. Delling, R. Hoffmann, M. Kandyba, A.
Schulze, Algorithm Engineering LNCS 5971, Case
Studies, 389-445, 2010.
[5] E.W. Dijkstra, A note on two problems on
connexions with graphs, Numerische Mathematik
1 (1959), 269-271.
[6] L.R. Ford, Network Flow Theory, Paper P-923,
The Rand Corporation, 1956.
[7] G. Nannicini, P. Baptiste, D. Krob, and L.
Liberti. Fast computation of point-to-point paths on
time-dependent road networks. Proceedings of
COCOA 08, volume 5165 of Lecture Notes in
Computer Science, pages 225-234. Springer,
2008.
Zur Autorin
Annabell Berger ist wissenschaftliche Mitarbeiterin
im Institut für Informatik der Martin-LutherUniversität Halle/Wittenberg. Dort arbeitet sie in
der interdisziplinären Arbeitsgruppe „Algorithmen
und Datenstrukturen“ unter der Leitung von Prof.
Dr. Matthias Müller-Hannemann an verschiedenen kombinatorischen Problemen insbesondere
aus der Graphentheorie. Als Mathematikerin
arbeitet sie sowohl empirisch als auch theoretisch
und entwirft und betreut verschiedene Software10. Wissenschaftstage der Hochschule Lausitz (FH) - 2010
6
Herunterladen