Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten
Transcrição
Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten
Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten Seminar Datenbanksysteme Master of Science in Engineering Vertiefungsrichtung Software and Systems HSR Hochschule für Technik Rapperswil www.hsr.ch/mse Betreuer: Prof. Stefan Keller Autor: Simon Gubler Rapperswil, Dezember 2011 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 2 Inhaltsverzeichnis 1 Abstract ........................................................................................................................................... 4 2 Keywords ......................................................................................................................................... 4 3 Ausgangslage ................................................................................................................................... 4 4 Problemstellung .............................................................................................................................. 5 5 Aufbau der Arbeit ............................................................................................................................ 7 6 Begriffs-Erklärungen ........................................................................................................................ 7 6.1 Verkehrsarten .......................................................................................................................... 7 6.1.1 Öffentlicher und Privat-Verkehr ...................................................................................... 7 6.1.2 Ortsbezogene Gruppierung ............................................................................................. 7 6.2 Verkehrsfluss / Verkehrsstärke ............................................................................................... 8 6.3 Verkehrsdichte ........................................................................................................................ 8 6.4 Kapazität einer Strasse ............................................................................................................ 8 6.5 Verkehrszustände .................................................................................................................... 8 7 6.5.1 Stockender Verkehr ......................................................................................................... 8 6.5.2 Gestauter Verkehr ........................................................................................................... 8 6.5.3 Stehender Verkehr .......................................................................................................... 8 Fundamentaldiagramm ................................................................................................................... 9 7.1 Formel...................................................................................................................................... 9 7.2 Diagramme und Interpretationen ........................................................................................... 9 8 7.2.1 Fundamentaldiagramm ................................................................................................... 9 7.2.2 q-k–Diagramm ............................................................................................................... 10 Vorgehen ....................................................................................................................................... 12 8.1 Übersicht durchgeführte Schritte.......................................................................................... 12 8.2 Verkehrsmessdaten einlesen in PostgreSQL ......................................................................... 12 8.3 Flussvorhersage ..................................................................................................................... 13 8.3.1 Ansatz 1: Eigene Implementation ................................................................................. 13 8.3.2 Exkurs Window Funktionen in SQL................................................................................ 16 8.3.3 Ansatz 2: MS Excel mit Datamining Add-In ................................................................... 20 8.4 9 Stau-Analyse .......................................................................................................................... 20 8.4.1 Ansatz 1: Analyse nur mit Flussdaten............................................................................ 20 8.4.2 Ansatz 2: Analyse mit zusätzlichen Daten ..................................................................... 22 Fazit ............................................................................................................................................... 23 10 Ausblick...................................................................................................................................... 23 11 Abbildungsverzeichnis ............................................................................................................... 24 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 3 12 Literaturverzeichnis ................................................................................................................... 25 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 4 1 Abstract Zürich ist stetig am Wachsen und hat schon jetzt ein hohes Verkehrsaufkommen. Deshalb ist es wichtig dass der Verkehr kontrolliert und soweit möglich gesteuert werden kann. Ich hoffe dass diese Arbeit hilft ein Verständnis der Verkehrstheorie zu vermitteln und dass die Ergebnisse helfen, in Zukunft den Verkehr besser vorherzusagen und Stau besser zu erkennen. Die Arbeit umfasst eine Einführung in die Verkehrstheorie, eine Analyse der Verkehrsflussdaten der Stadt Zürich sowie einen Performance-Vergleich von verschiedenen Forecast-Algorithmen, die den Verkehrsfluss bis zu einem Jahr in der Zukunft voraussagen. Ich habe im Laufe der Arbeit viel gelernt und konnte mein Wissen aus der Informatik praktisch anwenden was mir sehr gefallen hat. Zwar hat sich meine Hoffnung nicht ganz erfüllt dass nur mit Flussdaten ein Stau erkannt werden kann aber wenn zumindest für einige Messpunkte die Dichte oder die Geschwindigkeit gemessen werden kann könnte eine Aussage über den Verkehrszustand während der gemessenen Zeit gemacht werden. Interessant fand ich auch ein Regelsystem selber zu implementieren mit dem der Verkehrsfluss vorausgesagt und validiert werden kann. Spannend fand ich dass eine der einfachsten Regeln die besten Resultate lieferte und dass der mit-einberechnete Anstieg der letzten Jahre das Resultat bei einigen Regeln eher verschlechterte. Im Laufe der Arbeit habe ich viel Rat und Hilfe erhalten. Besonders bedanken möchte ich mich bei Herrn Bernhard von der Dienstabteilung Verkehr der Stadt Zürich für seine Hilfe mir die Daten zu schicken und für seine Zeit sowie Herrn Müller vom Mobilitätsinstitut für seine Ratschläge. Ebenfalls möchte ich Prof. Stefan Keller danken für die Betreuung der Arbeit. 2 Keywords Fundamentaldiagramm, Verkehrsanalyse, Data Mining, Data prediction, Kreuzvalidierung, SQL Windowing Funktionen 3 Ausgangslage Von der Dienstabteilung Verkehr der Stadt Zürich wurden der Fachhochschule Rapperswil VerkehrsZähldaten zur Analyse zugesendet. Die Daten umfassen den Zeitraum vom Jahr 2000 bis 2011. Sie enthalten die stündlichen Zähldaten von ca. 150 Messstationen die an insgesamt 111 Standorten in der Stadt Zürich und Umgebung installiert sind. Die Messpunkte sind an den Verkehrsknoten installiert, zum Beispiel am Limmatquai, der Hardbrücke, am Milchbucktunnel, oder auf der Autobahn A1 und A3. Die Daten wurden mit Hilfe von doppelten Induktionsschleifen (Induktionsschleife, 2012) erfasst die in der Strasse eingebaut sind. Sobald ein Auto über die Induktionsschleife fährt wird es gezählt. Mit den Induktionsschleifen in der Stadt Zürich kann aber die Geschwindkeit der Autos nicht gemessen werden. Dies ist nur bei Autobahnen möglich. Das Format der Daten ist folgendermassen: der oberste Ordner enthält für jedes Jahr einen Ordner. Jeder Jahr-Ordner hat für jeden Messpunkt eine Textdatei. Diese Textdatei enthält für jede Stunde im Jahr die Messung im folgenden Format: 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 5 Z074/M002 K365 Stauffacherquai (Tamedia) 01.01.2010 01:00,175 01.01.2010 02:00,400 01.01.2010 03:00,240 … 31.12.2010 23:00,241 01.01.2011 00:00,246 Abbildung 1: Beispiel-Dateiauszug Die erste Zeile enthält den Datei-Titel, dann folgt für jede Stunde eine Zeile mit der Zeitangabe und mit Komma getrennt die Anzahl Autos die von der vorherigen Stunde bis zur aktuellen Stunde vorbeigefahren sind. Eine andere Startzeile ist Z078/M001 K32 Birmensdorferstrasse auswaerts oder Z078/M002 K32 Birmensdorferstrasse einwaerts Abbildung 2: Header-Zeilen mit Richtung Hier zeigt „einwaerts“ bzw. „auswaerts“ an, in welche Richtung gemessen wurde. Die eine Richtung hat dann M001 als Kennzeichen, die andere Richtung M002. 4 Problemstellung Ziel der Arbeit ist es, für einen Zeitpunkt in der Zukunft und einen bestimmten Punkt in und um Zürich eine Stauaussage treffen zu können. Die Ergebnisse der Arbeit sollen von der Tourenplanungs-Website www.tourpl.ch genutzt werden können um die Reisezeit genauer zu schätzen. Das Vorbild ist dabei Google, die mit anonymisierten Daten von Smartphones die Verkehrslage erfassen, wie hier beschrieben wird: (Cashys Blog) 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 6 Abbildung 3: Google Verkehrslage Anzeige Mit Google kann auch die Verkehrslage bis zu einer Woche vorhergesagt werden Abbildung 4: Google Verkehrslage Forecast Grundsätzlich gibt es zwei Fragestellungen die die Arbeit beantworten soll: • • Wie ist der Verkehrsfluss in einem Zeitpunkt in der Zukunft an einem bestimmten Ort? Wie kann eine Stauaussage getroffen werden? Für die zweite Fragestellung gibt es eine konzeptionelle Einschränkung: Wie im Kapitel 7 aufgezeigt wird werden für eine Stau-Aussage zwei der drei Parameter Fluss, Dichte und Geschwindigkeit benötigt. Es stehen aber nur die Fluss-Daten zur Verfügung. Für die Aufgabenstellung stellen sich damit zwei zusätzliche Fragen: • • Kann überhaupt nur aufgrund der Flussdaten eine Aussage über den Stauzustand getroffen werden? Wie könnte eine Aussage über den Stauzustand getroffen werden wenn zusätzlich zum Fluss einer der Parameter verfügbar wäre? 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 7 5 Aufbau der Arbeit Zuerst wird die Verkehrs-Theorie und das Fundamentaldiagramm vorgestellt, dann wird in Kapitel 8 beschrieben wie die Daten eingelesen und analysiert wurden um die Fragestellungen zu beantworten. Danach wird ein Ausblick präsentiert. 6 Begriffs-Erklärungen Die Begriffs-Erklärungen wurden den Papers (Kühne, 2004), (Schäfer, 2011) sowie (Wu, 2000) entnommen. 6.1 Verkehrsarten In einem vorgegebenen Gebiet können verschiedene Verkehrsarten existieren. Für die Verkehrsplanung wird der Verkehr in Gruppen eingeteilt. Es gibt zwei Gruppierungsmöglichkeiten: Öffentlicher/Privat- Verkehr sowie ortsbezogene Gruppierung 6.1.1 Öffentlicher und Privat-Verkehr Öffentlicher Verkehr bezeichnet allen Verkehr mit öffentlichen Verkehrsmitteln, sowohl schienengebunden als auch öffentlicher Verkehr auf Strassen. Privater Verkehr bezeichnet allen Verkehr der durch Privatfahrzeuge entsteht. Dazu zählen neben dem normalen Kfz-Verkehr auch der (motorisierte) Zweirad- und Fußgängerverkehr. Unterteilt wird der Individualverkehr in Personen- und Güterbeförderung. 6.1.2 Ortsbezogene Gruppierung Die ortsbezogene Gruppierung unterscheidet wo der Verkehr startet und wo er endet. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 8 Verkehr der die Zelle durchfährt ohne anzuhalten Verkehr der die Zelle durchfährt aber zwischendurch stoppt (zB. für eine Ruhepause) Verkehr der in der Zelle startet /stoppt Verkehr der in der Zelle startet und stoppt Abbildung 5: Ortsbezogene Verkehrsarten 6.2 Verkehrsfluss / Verkehrsstärke Das Wort Verkehrsfluss bzw. Verkehrsstärke entspricht der Anzahl Autos die einen bestimmten Strassenabschnitt in einer Zeiteinheit überqueren. Er wird in Formeln mit Q oder q bezeichnet. Das Wort Verkehrsfluss kann auch für den allgemeinen Verkehr stehen. 6.3 Verkehrsdichte Die Verkehrsdichte bezeichnet die Anzahl Autos oder andere Fahrzeuge die sich zu einem bestimmten Zeitpunkt auf einem bestimmten Strassenabschnitt befinden. Ihr Formelzeichen ist das D oder K bzw. k. 6.4 Kapazität einer Strasse Die Kapazität einer Strasse entspricht dem maximalen Fluss in einem bestimmten Strassenabschnitt während einer Zeiteinheit. 6.5 Verkehrszustände 6.5.1 Stockender Verkehr Stockender Verkehr hat eine niedrige, extrem schwankende Geschwindigkeit bei hohem Fluss 6.5.2 Gestauter Verkehr Gestauter Verkehr hat eine niedrige Geschwindigkeit und einen niedrigen Fluss 6.5.3 Stehender Verkehr Stehender Verkehr hat fast keine Geschwindigkeit und fast keinen Fluss 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 9 7 Fundamentaldiagramm 7.1 Formel Die Formel die als Grundlage für das Fundamentaldiagramm dient lautet: D∗V Abbildung 6: Fundamental-Formel ) ist also bestimmt durch die Dichte mal die Geschwindigkeit. Da die Mass und die Geschwindigkeit das Mass hat stimmen die Masseinheiten. Der Fluss ( 7.2 Dichte das Diagramme und Interpretationen 7.2.1 Fundamentaldiagramm Das Fundamentaldiagramm beschreibt die Verhältnisse der drei Werte Verkehrsfluss q Verkehrsdichte k mittlere Geschwindigkeit v Es besteht aus drei zweidimensionaler Diagrammen, die die drei Parameter kombinieren: das q-vDiagramm, das q-k-Diagramm und das k-v-Diagramm. Abbildung 7: Fundamentaldiagramm (Kühne, 2004) Links unten ist die Formel q=v*k aufgeführt allerdings mit statt v. steht für die momentane Geschwindigkeit. steht für die Geschwindigkeit die der freie Verkehr hat, dh. wenn keine Autos auf der Strasse stehen. und entsprechen der optimalen Geschwindigkeit und der optimalen Dichte um 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 10 , also den maximal möglichen Fluss auf dieser Strecke zu erreichen. Im q-v-Diagramm ist eine Parabel zu sehen. Der maximale Fluss ist dort nur mit der optimalen Geschwindigkeit möglich ist. Im q-k-Diagramm ist zu sehen dass die Dichte bis zur optimalen Dichte zunimmt, doch dann ab einer höheren Dichte behindern sich die Autos zu stark und der Fluss nimmt ab. Im Diagramm wurde eine mehrspurige Fahrbahn gemessen beträgt dort etwa 80-90 . Deutlich ist der dunkelgraue Bereich vom hellgrauen unterscheidbar. Der dunkelgraue Bereich ist vor allem im q-k-Diagramm als klare Linie erkennbar. Das heisst es gibt einen linearen Zusammenhang zwischen der Dichte und der Menge an gemessenen Fahrzeugen. Wenn die Dichte zu hoch ist und es Stau gibt stimmt dieser Zusammenhang nicht mehr und das Verhältnis ist nicht mehr stabil. Eine andere Abbildung der drei Diagramme sieht so aus: Abbildung 8: Fundamentaldiagramm (Wu, 2000) Auch hier sind die Formen ähnlich. Der stabile Bereich ist hier grün gekennzeichnet und der instabile Bereich rot. Besonders schön ist im v-k-Diagramm zu sehen wie die Geschwindigkeit monoton abnimmt mit zunehmender Dichte. 7.2.2 q-k–Diagramm Eine genauere Darstellung für das q-k-Diagramm findet sich in Wikipedia 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 11 Abbildung 9: q-k-Diagramm (Fundamentaldiagramm, 2011) Der Fluss nimmt bis zu einer bestimmten Dichte zu, dann verringert er sich weil mehr Autos auf der Strasse stehen. Der rote Bereich ganz rechts im Diagramm zeigt wenn ein Stau vorhanden ist, nämlich dann wenn fast kein Fluss mehr vorhanden ist und dafür die Dichte sehr hoch ist. Eine Untersuchung von Kim und Keller (2001) zum q-k-Diagramm teilt das Diagramm in verschiedene Regionen ein die eine Aussage zum Verkehrszustand ermöglichen: Abbildung 10: q-k-Diagramm mit Klasseneinteilung (Kühne, 2004), S. 17 Die Einteilung unterscheidet die folgenden Zustände: Freier Verkehr Teilgebundener Verkehr Synchroner Verkehr Stockender Verkehr Gestauter Verkehr stationärer und stabiler Verkehrsfluss, deutliche Unterschiede zwischen Fahrstreifen meta-stabiler Zustand, Verkehrsteilnehmer in Bewegungsfreiheit stark eingeschränkt Geschwindigkeiten auf allen Fahrstreifen gleich und etwas geringer als im teilgebundenen Verkehr, aber immer noch hoch niedrige, extrem schwankende Geschwindigkeit bei relativ hoher und nur kaum schwankender Verkehrsstärke, Geschwindigkeit und Verkehrsstärke sind nur gering korreliert niedrige Geschwindigkeit und sehr niedrige Verkehrsstärke, stromaufwärts laufende Schockwellen 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 12 Stehender Verkehr Geschwindigkeit und Verkehrsstärke nahezu null Abbildung 11: Verkehrszustände 8 Vorgehen 8.1 Übersicht durchgeführte Schritte Im ersten Schritt analysierte ich Daten die der HSR vom Verkehrsinstitut für ein früheres Projekt zur Verfügung gestellt wurden. In diesem Projekt ging es um die Evaluierung ob die Daten überhaupt geeignet waren um eine Stau-Aussage zu machen. Nachdem ich mit Herrn Bernhard vom Verkehrsinstitut gesprochen hatte durfte ich die Daten auch für meine Analysen verwenden. Da die Daten nur von einem Jahr waren konnte ich keine Vorhersagen treffen, denn ich konnte nicht aussagen ob der Verkehr im Laufe der Jahre zugenommen hat oder ob ein Wert dieses Jahr besonders hoch oder klein war. Aus diesem Grund fragte ich Herrn Bernhard um weitere Daten an die dieser mir freundlicherweise zustellte. Es waren die Messdaten der letzten zehn Jahre. Nun schrieb ich einen Parser der die Daten einlas. Als mir klar wurde dass die Aussage ob ein Stau vorhanden ist schwieriger war als gedacht, konzentrierte ich mich auf die Verkehrsvoraussage. Ich schrieb ein Framework mit dem ich verschiede Vorhersage-Algorithmen testen konnte. Danach befasste ich mich wieder mit der Frage wie der Verkehrszustand nur anhand des Flusses ausgesagt werden kann. Ich schrieb eine Abfrage mit der ich die erste, zweite und dritte Ableitung berechnen konnte. Danach studierte ich verschiedene Papers die das Fundamentaldiagramm behandelten. 8.2 Verkehrsmessdaten einlesen in PostgreSQL Der erste Ansatz war, die Daten in eine PostgreSQL -Datenbank einzulesen. Dafür wurde ein Parser entwickelt. Der Parser importiert die Filestruktur in die 2 Tabellen Messpunkt und Messung. Abbildung 12: Tabellen Messung, Messpunkt Tabelle Messpunkt enthält alle gefundenen Messpunkte mit der Standortbeschreibung sowie der Richtung in der gemessen wurde. Tabelle Messung enthält den Zeitpunkt der Messung sowie die Anzahl gezählter Autos. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 13 Zusätzlich wurde die Tabelle „zeit“ gefüllt um über den Tag Informationen zu erhalten: Abbildung 13: Tabelle Zeit Die Spalte „Arbeitstag“ gibt an ob der Tag ein normaler Arbeitstag war oder ein Tag an dem die Leute frei haben und der deshalb eine ungewöhnliche Verkehrsentwicklung hat. 8.3 Flussvorhersage 8.3.1 Ansatz 1: Eigene Implementation 8.3.1.1 Rule-Interface Abbildung 14: Rule Interface Zum einen gibt es das Interface Rule, das alle Rule-Klassen implementieren. Die Methode guess gibt für einen bestimmten Zeitpunkt einen int-Wert zurück. Der Wert steht für die Schätzung vom Verkehr in diesem Zeitpunkt. Die Implementationen der Rule wenden verschiedene Strategien an für die Schätzung. Es gibt insgesamt die folgenden Regeln: Regel Beschreibung Gibt den Durchschnitt der Anzahl Autos der letzten 4 Jahre zurück, die zum selben Monat und selben Tag zur selben Stunde durchgefahren waren. Wenn der vorauszusagende Tag ein Werktag ist werden alle nicht Werktage ausgelassen und umgekehrt. AverageOfSameHourLast6YearsRule Die gleiche Regel für die letzten 6 Jahre AverageOfSameHourLast9YearsRule Die gleiche Regel für die letzten 9 Jahre AverageOfSameHourRule Gibt den Durchschnitt von derselben Stunde in AverageOfSameHourLast4YearsRule 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 14 LastTimeSameDayTypeRule LastYearSameTimeRule MedianOfSameHourRule MedianOfTimeRangeRule allen Werk bzw. Wochenend-Tagen im selben Monat in den zurückliegenden Jahren zurück Gibt den Wert zur selben Stunde im letzten Jahr zurück an dem der Tagestyp dh. Werktag/nicht Werktag derselbe war. Gibt den Wert zur selben Stunde im letzten Jahr zurück Gibt den Median von derselben Stunde in den zurückliegenden Jahren zurück Gibt den Median von der Stunde, der Stunde vorher und der Stunde nachher in allen zurückliegenden Jahren zurück Abbildung 15: Regel-Implementationen 8.3.1.2 Ablauf Validierung Abbildung 16: Ablauf Validierung Die Validator-Engine holt die erwarteten Resultate ab und berechnet für jede Rule-Implementation den Fehler, bzw das Quadrat vom Fehler. Danach gibt der Validator die Fehlersumme für jede Regel aus. 8.3.1.3 Erlärung der Ergebniss-Anzeige Die Ergebnisse für einen Standort sind unten aufgeführt. Links ist jeweils die Klasse die die Regel implementiert, rechts ist der quadrierte, über ein Jahr und alle Messstationen zusammengezählte Fehlbetrag der Voraussage. Die Prozentzahl dahinter in den Klammern zeigt an wie gross der Fehler in Prozent der höchsten Fehlerzahl ist: 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 15 Z023/M004 K786 Autob.A1 (Anschl. Altstetten) -> Zürich: Errors mining.rules.AverageOfSameHourLast4YearsRule: 724710202(19.629202222556167%) mining.rules.AverageOfSameHourLast6YearsRule: 680224093(18.42426978577549%) mining.rules.AverageOfSameHourLast9YearsRule: 629509911(17.05064632734718%) mining.rules.AverageOfSameHourRule: 1757466654(47.60201837308363%) mining.rules.LastTimeSameDayTypeRule: 1085311004(29.396287113233523%) mining.rules.LastYearSameTimeRule: 3692000285(100.0%) mining.rules.MedianOfSameHourRule: 1697182417(45.969184344198936%) Errors with average Increase mining.rules.AverageOfSameHourLast4YearsRule: 945319824(25.604543635618924%) mining.rules.AverageOfSameHourLast6YearsRule: 912728515(24.72178885544154%) mining.rules.AverageOfSameHourLast9YearsRule: 850600351(23.039010978841244%) mining.rules.AverageOfSameHourRule: 1390920249(37.673893326906935%) mining.rules.LastTimeSameDayTypeRule: 1234446459(33.435708659486195%) mining.rules.LastYearSameTimeRule: 2896790771(78.46128243188909%) mining.rules.MedianOfSameHourRule: 1386163841(37.54506321767524%) Abbildung 17: Ergebnisse Validierungsengine In den Ergebnissen sind zwei Blöcke zu sehen. Im ersten Block wurden die Regeln normal ausgeführt, im zweiten Block wurde versucht den Anstieg vom letzten bzw. vorletzten Jahr einzuberechnen. Dazu wurde die folgende Formel angewendet: schätzung )*ℎä,-./0 ∗ (1 + 1.5 ∗ 67889:9/-; + 0.5 ∗ 67889:9/-= ) 2 Abbildung 18: Berechnung der Steigung für die Verkehrsschätzung wobei 67889:9/-; und 67889:9/-= die Differenzen von der Messung im letzten Jahr zur Messung vorletzten bzw. vorvorletztem Jahr sind. Die Messung im aktuellen Jahr wissen wir nicht, wir nehmen deshalb an dass der Anstieg letztes Jahr der gleiche ist wie der Anstieg dieses Jahr und multiplizieren den Anstieg vom letzten Jahr mit der Schätzung für dieses Jahr. Die Rule AverageOfSameHourLast9YearsRule hat den kleinsten Fehler mit etwa 17% der höchsten Fehlerzahl. Sie kann die Anzahl Autos mit dem folgenden Fehler voraussagen: 629509911 6.:*ℎ)*ℎ/7,,@7*ℎ9:B9ℎ@9: = C FGH∗=I = 268 Fahrzeuge Abbildung 19: Durchschnittlicher Fehler für beste Verkehr-Voraussage 8.3.1.4 Ergebnisse Zusammenfassung Für drei Standort wurden die Regeln validiert. Die Ergebnisse sind unten aufgeführt. Es wurden nur die Prozentangaben aufgeschrieben. Die Fehler mit Berücksichtigung der Steigung wurden ignoriert, da sie fast immer höher waren als nur die Steigung allein. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 16 50 45 40 AverageOfSameHourLast4Year sRule 35 AverageOfSameHourLast6Year sRule 30 AverageOfSameHourLast9Year sRule 25 AverageOfSameHourRule 20 LastTimeSameDayTypeRule 15 MedianOfSameHourRule 10 5 0 Bergstrasse 12 Quaibrücke Autobahn A1 Abbildung 20: Ergbnisse der Forecast-Validierung Wie zu sehen ist die Vorhersage der Regel AverageOfSameHourLast9YearsRule mit je 15%-20% allgemein am genauesten. Interessant ist dass AverageOfSameHourRule bzw. MedianOfSameHourRule bei der Autobahn A1 massiv schlechter abschneidet. Hier herrschen offenbar andere Verkehrsverhältnisse, die sich allerdings nur auf diese Regel auswirken, es wäre interessant die Gründe dafür zu erforschen. 8.3.2 Exkurs Window Funktionen in SQL Während die Group-By Funktion in SQL bekannt ist und viel genutzt wird sind die Window Funktionen in SQL relativ unbekannt. Für eine Reihe von Problemen können sie jedoch einfach lesbare SQL-Abfragen ermöglichen: • • • Sliding Windows: Zu jedem Wert in einem Datensatz soll der Durchschnitt vom vorherigen Wert, dem aktuellen Wert und dem folgendem Wert berechnet werden. Das Fenster soll dabei beliebig gross sein. Abfragen wie: In welchem Monat der Angestellte X am meisten Verkauft für jedes Jahr seit er für uns arbeitet mit den jeweiligen Umsatzwerten Gruppenberechnungen, dh. wenn für jeden Datensatz sein Rang, sein Anteil an der Gesamtsumme in seiner Gruppe berechnet werden soll. Zu welcher Gruppe der Datensatz gehört legt der Wert einer Spalte fest. Beispiele sind für eine Verkaufsposition welcher Rang der Verkauf diesen Monat hatte, bzw. 8.3.2.1 Beispiele Die folgenden Beispiele sind auf der PostgreSQL-Datenbank mit der Staudaten-Datenbank ausführbar. Sie sind im Standard-SQL geschrieben. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 17 Das folgende Beispiel gibt für den 4. April 2010 alle Stunden aus sowie die Autos die in einer Stunde gezählt sein werden. Dieser Wert kann mit der Funktion LAG ermittelt werden. Die Funktion benötigt den Wert, hier anzahl_autos, sowie den Wert wie viel sie nach „vorne“ springen soll um den Wert zu holen. Den Ausdruck in den Klammern hinter OVER könnte man so umschreiben: Nimm den gleichen Datensatz wie im SELECT-Statement (also alle Stunden vom 4. April 2010) und ordne sie nach Jahr, Monat, Tag und Stunde. SELECT stunde, anzahl_autos, LAG(anzahl_autos,1) OVER ( ORDER BY jahr DESC, monat DESC, tag DESC, stunde DESC ) AS anzahl_autos_in_einer_stunde FROM messung WHERE messpunkt_id=164 AND jahr=2010 AND monat=4 AND tag=4 Abbildung 21: SQL Windowing Beispiel: Messwerte eine Stunde in der Zukunft Genauer gesagt beschreibt der Ausdruck hinter OVER das Fenster und die Sortierung für das LAG gelten soll. Das Fenster ist hier gleich dem gesamten Datensatz. Es könnte aber auch kleiner sein. Das folgende Beispiel benutzt ein kleineres Fenster: 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 18 SELECT stunde, anzahl_autos, AVG(anzahl_autos) OVER ( ORDER BY jahr DESC, monat DESC, tag DESC, stunde DESC ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ) as anzahl_autos_durchschnitt_letzte_2_stunden FROM messung WHERE messpunkt_id=164 AND jahr=2010 AND monat=4 AND tag=4 Abbildung 22: SQL Windowing Beispiel: Sliding Window Hier beschränken wir das Fenster und berechnen für jede Zeile den Durchschnitt der aktuellen Anzahl Autos sowie der Anzahl Autos der aktuellen sowie der letzten zwei Stunden aus. Das Fenster definieren wir mit dem Ausdruck ROWS BETWEEN… Ein weiteres Schlüsselwort gibt es noch: PARTITION BY. Am besten lässt es sich anhand einer Fragestellung erklären: Wie können wir Stunden mit dem höchsten Verkehr pro Tag ausgeben? Der SQL Query der die Antwort liefert sieht so aus: 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 19 SELECT tag, stunde, anzahl_autos FROM ( SELECT tag, stunde, anzahl_autos, RANK() OVER ( PARTITION BY tag ORDER BY anzahl_autos DESC ) AS tages_Rang FROM messung WHERE messpunkt_id=164 AND jahr=2010 AND monat=4 ) AS rating WHERE tages_Rang =1 ORDER BY tag Abbildung 23: SQL Windowing Beispiel: Stunden mit dem höchsten Verkehr pro Tag Der Select besteht aus einem übergeordneten SELECT und einem Sub-SELECT. Die Funktion RANK gibt den aktuellen Rang des Datensatzes im Fenster aus. Da wir die Spitzenstunde pro Tag ermitteln wollen haben wir mit „PARTITION BY tag“ das Fenster aufgeteilt in Tage. Das äussere SELECTStatement gibt nur die Stunde mit Rang 1 zurück. Leider unterstützt SQL keine Fenster-Funktionen in WHERE-Bedingungen. Die nächstliegende Lösung ist mit Subqueries zu arbeiten, hier muss aber auf die Performance achtgegeben werden, vor allem müssen die Subqueries so weit wie möglich gefiltert werden, damit nicht die gesamte Tabelle ausgelesen wird. 8.3.2.2 Anwendung auf die Staudatenanalyse Für die Staudatenanalyse wurden Windowing Funktionen für die folgenden Fragestellungen verwendet: • • Wie kann für eine Messung die Steigung vom gleichen Tag und der gleichen Stunde vom letzten bzw. vorletzten Jahr zum aktuellen Jahr berechnet werden? Wie kann der Verlauf geglättet werden, bzw. wie können die Werte von der vorherigen, bzw. nachfolgenden Stunde hinzugerechnet werden? 8.3.2.3 Weiterführende Links Kleines einfaches Beispiel: http://www.adp-gmbh.ch/ora/sql/analytical/partition_by.html Offizielle Dokumentation von Microsoft: http://msdn.microsoft.com/en-us/library/ms189461.aspx 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 20 Ein grösseres Beispiel das auch die Varianten in „normalen“ SQL zeigt: http://weblogs.sqlteam.com/jeffs/archive/2007/03/28/60146.aspx 8.3.3 Ansatz 2: MS Excel mit Datamining Add-In Während der erste Ansatz darin bestand, die Forecast-Regeln selber zu implementieren besteht der zweite Ansatz mit Excel darin die Zeitreihe mit Hilfe des Data Mining Add-Ins vorherzusagen. Das Data Mining Add-In ist verfügbar unter http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7294. Es ist nur für Excel 2007 vorhanden. Für Excel 2010 existiert zurzeit noch kein vergleichbares Add-In. Nachdem das AddIn installiert ist muss die Verbindung zum Analysis Service hergestellt werden. Das Add-In dient als Client um auf die Data-Mining-Funktionalität zuzugreifen. Für die Vorhersage von Zeitreihen verwendet Excel die beiden Algorithmen ARTXP sowie ARIMA. Ein Beispiel für eine einfache Planungsaufgabe findet sich in der Excel Datei Planungsbeispiel.xlsx. Leider konnte die Excel-Implementation nicht direkt mit der selber entwickelten Regel-Engine verglichen da die Excel-Engine eher optimiert ist für eine Vorhersage wenige Stunden in der Zukunft und der Fehler nicht auf eine einfache Art berechnet werden konnte. Vielleicht wäre es besser gewesen eine „Excel-Regel“ zu implementieren die die Analysis Services Schnittstelle anspricht. Dann hätten die Vorhersage-Algorithmen direkt verglichen werden können. 8.4 Stau-Analyse 8.4.1 Ansatz 1: Analyse nur mit Flussdaten Bis jetzt wurde die reine Vorhersage des Flusses behandelt. Was aber nicht bis jetzt beachtet wurde war wie man zu einer Aussage kommen könnte ob ein stockender Verkehr oder ein Stau vorliegt. Ein Ansatz wäre aufgrund der Steigungen im Verlauf eine Aussage zu treffen. Gab es eine starke Steigung mit einer Abflachung und einem leichten Abstieg könnte man das als eine Sättigung interpretieren mit nachfolgendem stockendem Verkehr. Der Verlauf hätte dann eine ähnliche Form wie im q-kDiagramm. Ein Beispiel dafür ist in den folgenden 2 Abbildungen zu sehen. Sie zeigt den Verlauf auf der Quaibrücke Richtung Bürkliplatz sowie der Rosengartenstrasse 23 Richtung Bucheggplatz am 8. April 2010 in rot, in blau den geglätteten Verlauf und in grün die erste Ableitung vom geglätteten Verlauf, also die prozentuale Zunahme. Die Messung ist von einem Donnerstag. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 21 Verkehrs-Tagesverlauf Quaibrücke Richtung Bürkliplatz 2000 140 120 100 80 60 40 20 0 -20 -40 1500 1000 500 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 (Leer) 0 Fluss_geglättet Fluss erste Ableitung Abbildung 24: Tagesverlauf Bürkliplatz Verkehrs-Tagesverlauf Rosengartenstrasse Richtung Bucheggplatz 2500 100 2000 80 60 1500 40 1000 20 500 0 0 -20 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Fluss geglättet Fluss erste Ableitung Abbildung 25: Tagesverlauf Rosengartenstrasse Aus beiden Bildern ist zu erkennen dass der Verkehr ab 6 Uhr stark zugenommen hat Bei beiden Bildern ist zu sehen dass der Verkehr ab 9 Uhr abgenommen hat. Ist das wegen einem Stau der Fall? Nicht unbedingt, denn aus der Erfahrung lässt sich sagen dass Stausituationen vor allem von 6 Uhr bis 8 Uhr auftreten. In den Diagrammen ist aber während dieser Zeit ein steiler Anstieg zu bemerken. Offenbar sind Stau-Situationen mit den vorliegenden Messdaten nicht klar erkennbar. Eventuell könnten mit einer kürzeren Messfrequenz kurze Staus erkannt werden, zB. wenn der Fluss plötzlich einbricht, dann ist der Verkehr in dieser Zeit ins Stocken geraten. Mit stündlichen aggregierten Messungen sind hingegen nur mehrstündige Staus erkennbar. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 22 8.4.2 Ansatz 2: Analyse mit zusätzlichen Daten In diesem Kapitel wird angenommen dass zusätzlich zum Fluss weitere Daten vorhanden sind, so dass die Erkenntnisse aus dem Fundamentaldiagramm benutzt werden können. 8.4.2.1 Analyse mit Dichte-Daten Wenn die Dichte-Daten vorhanden sind kann mit dem q-k-Diagramm gearbeitet werden. Abbildung 26: q-k-Diagramm Für die Dichte muss ein Gebiet um den Messpunkt bestimmt werden und die Anzahl Fahrzeuge auf diesem Gebiet gezählt werden. Bei auf die Stunde aggregierten Daten muss der Durchschnitt der Dichte in dieser Stunde berechnet werden. Um den Verkehrsstatus auszusagen kann dann eine Klassierung wie in Abbildung 10: q-k-Diagramm mit Klasseneinteilung , S. 17 vorgenommen werden. Im q-k-Diagramm werden mehrere Gebiete bestimmt, jedes Gebiet kennzeichnet einen anderen Verkehrsstatus. Für jeden Messpunkt müssen die Grenzen dabei neu bestimmt werden. Der Bestimmungsalgorithmus bestimmt anhand der Dichte und dem Fluss den Verkehrsstaus. 8.4.2.2 Analyse mit Geschwindigkeits-Daten Für die Aussage der Verkehrslage kann das q-v-Diagramm hinzugezogen werden: Abbildung 27: q-v-Diagramm Wie zu sehen ist kann nur aufgrund der Geschwindigkeit eine Aussage getroffen werden ob der Verkehr fliessend (grün) oder stockend (rot) ist. Da keine Forschungsresultate gefunden wurden nicht ausgesagt werden ob ebenfalls eine Einteilung in die verschiedenen Verkehrszustände erfolgen kann. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 23 9 Fazit Insgesamt lässt sich sagen dass das Ziel der Stauvorhersage nicht erreicht wurde, dass aber ein Teilschritt erreicht wurde. Es wurde ein Algorithmus gefunden mit dem bis zu einem Jahr die Daten gut vorausgesagt werden können. Um Stau zu erkennen braucht es zusätzlich den Parameter Dichte oder Geschwindigkeit. Dieser muss irgendwie hinzugefügt werden, entweder manuell per Schätzung oder automatisch mit Messungen. Kann nun zB. beim Staudamm in Rapperswil eine Messung gemacht werden und mit dieser einen Messung eine Stauaussage gemacht werden? Nein, denn wie im Fundamentaldiagramm gezeigt muss zuerst die optimale Geschwindigkeit, bzw. Dichte für den Streckenabschnitt bestimmt werden. Dann kann eine Aussage getroffen werden ob ein Stau vorhanden ist oder nicht, nämlich wenn die Dichte grösser ist als die optimale Dichte, bzw. die Geschwindigkeit kleiner ist als die optimale Geschwindigkeit. Mit Hilfe vom zB. Fluss und Geschwindigkeit kann dann eine Stauaussage gemacht werden. Wenn viele Autos langsam durchfahren ist sehr wahrscheinlich ein Stau vorhanden. 10 Ausblick Wie im Fundamentaldiagramm zu sehen ist kann eine sichere Stau-Aussage nur gemacht werden wenn zusätzlich die Dichte oder die Geschwindigkeit der Autos vorhanden ist. Eine Stau-Einschätzung mit Hilfe der Ableitung ist schwierig, denn eine Steigung des Flusses bedeutet nicht unbedingt dass es während der Stunde keinen Stau gegeben hat, der Stau könnte auch nur temporär aufgetreten sein. Nur ein mehrstündiger Stau könnte so erkannt werden. Um eine genauere Stauaussage zu erstellen werden deshalb folgende Angaben benötigt: • • Die durchschnittliche Dichte oder die Geschwindigkeit der Fahrzeuge Einen kürzeren Zeitintervall um auch kürzere Staus erkennen zu können Mit den Verfahren in Kapitel 8.4.2 kann vorhergesagt werden ob ein Stau vorhanden ist wenn zusätzlich die Dichte oder die Geschwindigkeit vorhanden sind. (Steiner, Verfahren zur Reisezeitschätzung auf Autobahnen, 2006) beschreibt eine Methode wie die Reisezeit zwischen zwei Messpunkten geschätzt werden kann aufgrund von Einzelfahrzeugdaten. Es müsste evaluiert werden welche Daten das sind und inwiefern die Methode angewendet werden kann. Wenn die Messpunkte zu einem Graphen verbunden werden können kann der Verkehr möglichweise genauer vorausgesagt werden. In (De Rham, 2007) wurde dieser Ansatz unter anderem auch für Zürich implementiert wie im Bild unten zu sehen ist. 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 24 Abbildung 28: Stau-Voraussage mit HIlfe von Polydrom 11 Abbildungsverzeichnis Abbildung 1: Beispiel-Dateiauszug .......................................................................................................... 5 Abbildung 2: Header-Zeilen mit Richtung ............................................................................................... 5 Abbildung 3: Google Verkehrslage Anzeige ............................................................................................ 6 Abbildung 4: Google Verkehrslage Forecast ........................................................................................... 6 Abbildung 5: Ortsbezogene Verkehrsarten ............................................................................................. 8 Abbildung 6: Fundamental-Formel ......................................................................................................... 9 Abbildung 7: Fundamentaldiagramm (Kühne, 2004) .............................................................................. 9 Abbildung 8: Fundamentaldiagramm (Wu, 2000)................................................................................. 10 Abbildung 9: q-k-Diagramm (Fundamentaldiagramm, 2011) ............................................................... 11 Abbildung 10: q-k-Diagramm mit Klasseneinteilung (Kühne, 2004), S. 17 ........................................... 11 Abbildung 11: Verkehrszustände .......................................................................................................... 12 Abbildung 12: Tabellen Messung, Messpunkt ...................................................................................... 12 Abbildung 13: Tabelle Zeit ..................................................................................................................... 13 Abbildung 14: Rule Interface ................................................................................................................. 13 Abbildung 15: Regel-Implementationen ............................................................................................... 14 Abbildung 16: Ablauf Validierung.......................................................................................................... 14 Abbildung 17: Ergebnisse Validierungsengine ...................................................................................... 15 Abbildung 18: Berechnung der Steigung für die Verkehrsschätzung.................................................... 15 Abbildung 19: Durchschnittlicher Fehler für beste Verkehr-Voraussage.............................................. 15 Abbildung 20: Ergbnisse der Forecast-Validierung ............................................................................... 16 Abbildung 21: SQL Windowing Beispiel: Messwerte eine Stunde in der Zukunft................................. 17 18.01.12 Verkehrsflussvorhersage und Stauanalyse aufgrund von Messdaten 25 Abbildung 22: SQL Windowing Beispiel: Sliding Window ..................................................................... 18 Abbildung 23: SQL Windowing Beispiel: Stunden mit dem höchsten Verkehr pro Tag ........................ 19 Abbildung 24: Tagesverlauf Bürkliplatz ................................................................................................. 21 Abbildung 25: Tagesverlauf Rosengartenstrasse .................................................................................. 21 Abbildung 26: q-k-Diagramm ................................................................................................................ 22 Abbildung 27: q-v-Diagramm ................................................................................................................ 22 Abbildung 28: Stau-Voraussage mit HIlfe von Polydrom ...................................................................... 24 12 Literaturverzeichnis Fundamentaldiagramm. (28. 12 2011). Abgerufen am 28. 12 2011 von Wikipedia. Induktionsschleife. (2012). Abgerufen am 17. 01 2012 von Wikipedia: http://de.wikipedia.org/wiki/Induktionsschleife Cashys Blog. (kein Datum). Abgerufen am 18. 01 2012 von http://stadt-bremerhaven.de/googlemaps-zeigt-live-den-verkehr-an-und-das-funktioniert-mit-euren-daten/ De Rham, C. (30. 04 2007). Polydrom. Abgerufen am 17. 01 2012 von http://www.astra.admin.ch/dokumentation/00109/00115/00636/index.html?lang=de&dow nload=NHzLpZeg7t,lnp6I0NTU042l2Z6ln1acy4Zn4Z2qZpnO2Yuq2Z6gpJCDdoJ4fmym162epYb g2c_JjKbNoKSn6A-Kühne, R. (Oktober 2004). Das Fundamentaldiagramm – Grundlagen und Anwendungen. Abgerufen am 28. 12 2011 von http://www.tft.pdx.edu/docs/Greenshields_Publication.pdf Schäfer, B. (2011). Ermittlung der Kapazität von Straßen durch Fahrzeugmessungen im Verkehrsfluss. Abgerufen am 28. 12 2011 von http://www.hsulm.de/opus/volltexte/2011/65/pdf/Studienarbeit_Fundamentaldiagramm.pdf Steiner, A. (2005). Entwicklungsumgebung zur Kopplung von mikro- und makroskopischen Verkehrsflussmodellen. ZHAW. Steiner, A. (2006). Verfahren zur Reisezeitschätzung auf Autobahnen. ZHAW. Wu. (2000). Verkehr auf Schnellstraßen im Fundamentaldiagramm. Abgerufen am 28. 12 2011 von http://homepage.ruhr-uni-bochum.de/Ning.Wu/pdf/FMDG_SVT_8_2000.pdf 18.01.12