Seite 1 von 2

Versuch einer Verkehrssimulation

Verfasst: Dienstag 1. Juli 2014, 17:04
von Timberjack
Hallo liebe Forengemeinde,

ich bin erst eben hier angekommen und habe trotz intensiver Recherche kein passendes Thema gefunden. Sollte mir dennoch eins entwischt sein entschuldige ich mich schon mal und bitte um eine Weiterleitung. Andernfalls lautet mein Problem wie folgt:

Für eine Lehrveranstaltung habe ich vor eine Simulation von Verkehrsflüssen mit Hilfe von Python zu programmieren. Leider bin ich programmiertechnisch noch absolut unerfahren und bitte um grundlegende Hilfe bei der Herangehensweise an das Problem und bei den einzelnen Programmierschritten. Ich komme mit höchster Lernmotivation entgegen :)
Das Ziel ist es, auf einem "Straßenabschnitt" eine fahrzeugbasierte Simulation des Verkehrsflusses zum Laufen zu bringen und zur weiteren Analyse Geschwindigkeits-Dichte Diagramme und Fluss-Dichte Diagramme zu erstellen. Dabei kann ich mir den Modelllierungsansatz frei auswählen oder über einen zellulären Automaten ein Gitter (in Straßenoptik) mit freien und besetzten Feldern dem Problem näher kommen. Beide Möglichkeiten lassen mich gerade absolut allein im Wald stehen.
Ich freue mich über jede denkbare Hilfe.

Herzliche Grüße

Re: Versuch einer Verkehrssimulation

Verfasst: Dienstag 1. Juli 2014, 18:23
von Hyperion
Timberjack hat geschrieben: Leider bin ich programmiertechnisch noch absolut unerfahren und bitte um grundlegende Hilfe bei der Herangehensweise an das Problem und bei den einzelnen Programmierschritten.
Was bedeutet das genauer? Hast Du noch nie programmiert? Oder nur nicht in Python?

Generell kann man Dir keine andere Hilfe geben, als dass Du zunächst die Grundlagen von Python und letztlich dem Programmieren i.A. lernen musst. Erst dann bist Du irgend wann so weit, so ein Problem wirklich anzugehen.

Für jemanden, der wirklich bei Null anfängt, sehe ich da auf absehbare Zeit schwarz und zudem ist das Projekt imho dann viel zu komplex.

Ich hoffe, ich habe Dich jetzt nicht demotiviert :-)

Re: Versuch einer Verkehrssimulation

Verfasst: Dienstag 1. Juli 2014, 19:02
von MagBen
Besorg Dir ein Python-Buch, bei Amazon findest Du sehr gute Rezensionen (bessere als hier). Das Buch hat gegenüber dem Rumgooglen-Ansatz den Vorteil, dass Du einem vorgegebenem rotem Faden folgen kannst, außerdem kannst Du die Zeit in der Du aufnahmefähig bist verlängern, wenn Du ab und zu das Medium wechselst.

Wenn Du etwas am Rechner simulieren willst, dann versuche es vorher ohne Rechner. Mach die Simulation so klein, dass Du sie manuell auf dem Papier oder mit Legosteinen ausführen kannst. Dieses kleine Beispiel ist dann Dein erster Testfall, das Programm soll das gleiche machen, wie Du manuell.

Fange ohne GUI an. Die GUI brauchst Du bei einer Simulation nur für Pre- und Post-Processing. Zur Darstellung des Verkehrsflusses kannst Du statt einer GUI auch 2D-Arrays nehmen und diese als 2D-Plot plotten.

Schreibe keinen Ini-File-Parser für die Simulationsparameter. Python IST ein Parser. Mache die Eingaben im Python-Code (in einem separaten Modul).

Re: Versuch einer Verkehrssimulation

Verfasst: Dienstag 1. Juli 2014, 20:21
von snafu
MagBen hat geschrieben:Das Buch hat gegenüber dem Rumgooglen-Ansatz den Vorteil, dass Du einem vorgegebenem rotem Faden folgen kannst, außerdem kannst Du die Zeit in der Du aufnahmefähig bist verlängern, wenn Du ab und zu das Medium wechselst.
Wobei das offizielle Python-Tutorial auch recht gut ist und entsprechend einen roten Faden vorgibt. Notfalls druckt man es sich halt aus, um dem zweiten Teil deiner Aussage gerecht zu werden. Und das wäre ja dann auch kein reines Lernen aufgrund von Google-Ergebnissen, was ich auch eher problematisch sehe. Aber muss jeder für sich selber wissen. Ich hatte bisher immer das Gefühl, dass Bücher zu Programmiersprachen eher Geldverschwendung für mich waren. Aber wer's mag...

Re: Versuch einer Verkehrssimulation

Verfasst: Dienstag 1. Juli 2014, 21:21
von pillmuncher
snafu hat geschrieben:Ich hatte bisher immer das Gefühl, dass Bücher zu Programmiersprachen eher Geldverschwendung für mich waren. Aber wer's mag...
OT - definitiv keine Geldverschwendung sind:

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 06:04
von MagBen
snafu hat geschrieben:Notfalls druckt man es sich halt aus,
Das muss dann aber wirklich ein Notfall sein, wer meint mit selbstgedruckten Büchern Geld zu sparen, der weiß nicht was sein Drucker kostet.
snafu hat geschrieben:Ich hatte bisher immer das Gefühl, dass Bücher zu Programmiersprachen eher Geldverschwendung für mich waren
Das ist alles eine Frage wie wertvoll Du Deinen eigenen Zeiteinsatz bewertest.
snafu hat geschrieben:Aber wer's mag...
Ich denke wer grundsäzlich Bücher mag, der mag auch Fachbücher.
pillmuncher hat geschrieben:OT - definitiv keine Geldverschwendung sind:

SICP
TAOP
Fish Book
Ziemlich OT. Damit bekommt Timberjack bestimmt nicht seine Simulation zum Laufen. Ich habe mit Absicht kein konkretes Buch genannt, da es schon ein paar Jahre her ist, dass ich ein Python Grundlagenbuch gelesen habe. IT-Fachbücher sollten aber in der Regel neu und aktuell sein.

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 06:48
von BlackJack
@MagBen: Es ging beim notfalls ausdrucken nicht ums Geld sparen, sondern um den von Dir erwähnten positiven Effekt beim Medienwechsel.

Das Gefühl das die meisten Bücher zu Programmiersprachen Geldverschwendung ist bei weitem nicht alles eine Frage der Bewertung des eigenen Zeiteinsatzes, sondern hat auch sehr viel mit dem Inhalt der Bücher zu tun. Und damit das die Information in den Büchern schnell veraltet. Womit es nicht so einfach ist ein neues, aktuelles, *und* gutes Buch zu finden. Die meisten Bücher für Anfänger in einer Programmiersprache wenn man schon andere Programmiersprachen kann, bieten meiner Erfahrung nach kaum Mehrwert zur Dokumentation + einem Tutorial der Programmiersprache. Zumindest solange man keine Sprache lernen möchte die wirklich unterdokumentiert ist.

Das Gefühl das viele Bücher zu Programmiersprachen, und zu IT-Themen allgemein, Geldverschwendung sind, teile ich. Und würde widersprechen das Fachbücher *neu* sein müssen. Aktuell reicht. Womit wir bei Büchern wären die Wissen vermitteln was nicht in einem Jahr schon wieder obsolet ist, weil sich die Meute auf den nächsten Hype gestürzt hat oder von dem Produkt, zum Beispiel der Programmiersprache, die nächste Major-Version veröffentlicht wurde die einen guten Teil des Wissens aus dem Buch über den Haufen wirft. Die drei von pillmuncher genannten Bücher sind in der Hinsicht ja zum Beispiel nahezu ”zeitlos”. SICP vermittelt zum Beispiel Programmieren, zwar mit Hilfe einer konkreten Programmiersprache, aber halt Konzepte die ganz grundsätzlicher Natur sind, und *das* steht im Vordergrund und nicht primär Scheme zu lernen.

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 06:49
von snafu
MagBen hat geschrieben:
snafu hat geschrieben:Notfalls druckt man es sich halt aus,
Das muss dann aber wirklich ein Notfall sein, wer meint mit selbstgedruckten Büchern Geld zu sparen, der weiß nicht was sein Drucker kostet.
Kennst du das genannte Tutorial überhaupt? Das sind schätzungsweise 30 Seiten. Bei dir klingt es so als ob es mindestens 300 Seiten wären.
MagBen hat geschrieben:
snafu hat geschrieben:Ich hatte bisher immer das Gefühl, dass Bücher zu Programmiersprachen eher Geldverschwendung für mich waren
Das ist alles eine Frage wie wertvoll Du Deinen eigenen Zeiteinsatz bewertest.
Das ist wohl eher eine Frage, wieviel Vorwissen man hat. Hätte ich von Anfang an gänzlich auf Bücher gesetzt, dann wäre meine Beurteilung sicherlich anders ausgefallen. Zeitmäßig ist es nicht unwahrscheinlich, dass man mit *guten* Büchern schneller vorankommt. Meine Programmierkenntnisse sind schließlich auch nicht von heute auf morgen entstanden (wobei sie das natürlich auch nicht bei der Benutzung von Büchern wären).

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 07:02
von snafu
Übrigens ist es nicht so, dass ich gänzlich abgeneigt zu jeglichen Büchern bzw Fachbüchern wäre. Zur Zeit lese ich Java Web Security. Da werden viele Angriffsvektoren für Webseiten beschrieben und diese Beschreibungen sind auch nutzbar, ohne dass man zwanghaft Web-Applikationen in Java entwickeln muss. Das ist z.B. so ein Buch, das mir persönlich zusagt, da ich in dem Bereich halt noch kein so fundiertes Vorwissen habe. Klar findet man bestimmt alles, was dort steht, auch in Wikipedia-Artikeln usw, aber es ist schön, all diese Dinge mal in kompakter Form vorliegen zu haben. Letztlich ist die Bewertung von Büchern ja immer subjektiv. Wer eine Programmiersprache besser mit einem Buch anstatt mit einem Tutorial lernen kann, der soll es halt tun.

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 09:58
von Kebap
Timberjack hat geschrieben: Ich komme mit höchster Lernmotivation entgegen :)
Geht es dir mehr darum, diese Simulation zum Laufen zu bekommen, oder würdest du darüber hinaus gerne die Sprache Python lernen? Je nachdem müsstest du unterschiedlich tief einsteigen, oder einfach jemanden finden, der es für dich programmiert.

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 16:32
von cofi
snafu hat geschrieben:
MagBen hat geschrieben:
snafu hat geschrieben:Notfalls druckt man es sich halt aus,
Das muss dann aber wirklich ein Notfall sein, wer meint mit selbstgedruckten Büchern Geld zu sparen, der weiß nicht was sein Drucker kostet.
Kennst du das genannte Tutorial überhaupt? Das sind schätzungsweise 30 Seiten. Bei dir klingt es so als ob es mindestens 300 Seiten wären.
Naja, das hat eher 100 Seiten als 30 (basierend auf dem PDF der deutschen Uebersetzung).
Es macht aber IMO keinen Sinn das auszudrucken, weil die meisten Inhalte sehr interaktiv zu nutzen sind, d.h. mit Interpreter daneben.

Simulationen offline durchzuspielen macht dagegen absolut Sinn, ich weiss jetzt aber nicht wie ein Buch da helfen soll ...
Das wird jetzt aber reichlich offtopic.

@OP: Die Problemstellung ist reichlich abstrakt und dementsprechend werden Vorschlaege zur Hilfe wohl auch nur abstrakt bleiben. Wenn du konkrete Fragen stellst, etwa die Implementierung von deinem Modell wirst du wahrscheinlich mehr Hilfe bekommen.

Re: Versuch einer Verkehrssimulation

Verfasst: Mittwoch 2. Juli 2014, 16:48
von snafu
Ok, 100 Seiten sind dann doch ein bißchen viel zum Ausdrucken. Ich hätte nicht erwartet, dass es soviele sind.

Re: Versuch einer Verkehrssimulation

Verfasst: Donnerstag 3. Juli 2014, 11:00
von Käptn Haddock
Vielleicht findest du hier auch noch Anregungen: http://www.traffic-simulation.de/ger

Gruß Uwe

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 13:20
von Timberjack
Hallo @all,

vielen Dank für die ganzen Beiträge. Da ich ein paar Tage offline war, hatte ich eine Weile benötigt um alles durchzulesen. Ich wollte keine Diskussion über Online-Hilfe vs. Buch starten, denn sicherlich hat jedes seine Berechtigung. Trotzdem Dank für die vielen Hinweise.

Inzwischen habe ich ein bisschen an meinem Problem weitergearbeitet, denn um die Simulation komme ich nicht drum herum.
Ich habe mir überlegt, ähnlich wie bei den zellulären Automaten ein Gitter zu erzeugen, dass L lang (Straßenlänge) und S breit (Anzahl an Spuren) ist. Dazu würde ich mir vielleicht ein array erstellen. Für das/die Auto/s würde ich mir einen Container/Klasse anlegen, also eine Liste. Dann würde ich mir eine Dichte definieren, die mir erstmal ein paar Autos auf der Strecke platziert.

Könnten meine Überlegungen in eine richtige Richtung gehen? Und falls ja, wie fange ich das am Besten an zu programmieren?

Viele Grüße

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 15:22
von BlackJack
@Timberjack: Ich würde mir ja erst einmal Gedanken um das Modell machen, vor den Überlegungen wie man das Programmieren angeht. Also wie soll ein Ergebnis einer Simulation aussehen, welche Daten müssen für die gewünschten Diagramme aus so einem Simulationslauf hinten raus kommen. Dann weiss man welche Grössen man für die Berechnung dieser Daten haben muss. Da gibt es vielleicht feste, bzw. variabel aber feste. Und andere, hier wird dann die Simulation interessant, die sich über die Zeit verändern. Wenn Du ein Gitter verwenden möchtest, dann ist eine Frage wie das mit der Auflösung ist. Also was repräsentiert ein Gitterpunkt. In diesem Fall zum Beispiel wieviele Meter Strasse. Was macht Sinn. Kann ein Fahrzeug mehr als einen Gitterpunkt besetzen? Was/Wieviel muss ein Fahrzeug wissen um Entscheidungen zu treffen?

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 17:53
von Timberjack
Hallo BlackJack, vielen Dank für deine Antwort. Darüber habe ich mir bereits ein paar Gedanken gemacht. Und zwar sollte letztlich eine Simulation zum Laufen gebracht werden, welche ebenfalls Geschwindigkeits-Dichte-Diagramme bzw. Verkehrsfluss-Dichte-Diagramme ausgibt. Ich dachte ich benutze ein Gitter mit äquidistanten Gitterabstand und entweder das Feld ist besetzt (ein Auto ist darauf) oder nicht. Die Auswahl könnte ja auch zufällig erfolgen, man also dem Programm mit einer bestimmten Wahrscheinlichkeit die Wahl lässt, ob dieses Feld nun besetzt ist oder nicht. Zum Thema Auto wäre ich zunächst von identischen Autos ausgegangen, welche sich lediglich in der Geschwindigkeit unterscheiden. Also ein Typ schnelles Auto, welches sich nach einem kürzeren Zeitabstand um ein Feld nach "vorn" bewegt verglichen mit einem "langsameren" Typ Auto. Aus diesem Grund hätte ich mir erstmal einen festen Straßenabschnitt (z.B. 100 Gitterpunkte) herausgesucht und mir eine Verkehrsdichte definiert, welche wiederum zufällig die einzelnen Felder belegt. Aus den unterschiedlichen Zeitabständen würde man sicherlich auf die Geschwindigkeit schließen können und könnte somit die Diagramme erstellen. Klappt dieser Gedankengang? Später könnte man sicherlich die Verkehrsdichte variabel gestalten.?

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 18:18
von BlackJack
@Timberjack: Also das mit der Verkehrsdichte habe ich nicht verstanden wie(so) die die einzelnen Felder zufällig belegt. Ich hätte jetzt gedacht die ergibt sich daraus wieviele Fahrzeuge sich auf dem Abschnitt befinden. Und das ergibt sich ja letztendlich aus dem Simulationsablauf.

Was repräsentiert denn ein einzelner Gitterpunkt? Also ganz konkret wie viele Meter Strasse.

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 19:26
von Timberjack
...ja ok, so langsam beginne ich mich zu verzetteln. Also die Verkehrsdichte bezieht sich natürlich auf die Fahrzeuge auf dem Streckenabschnitt. Ein besetzter Gitterpunkt wäre dann bei mir ein angenommenes Fahrzeug. Da ich die Strecke in äquidistante Abschnitte teilen würde, entspräche z.B. also ein Gitterpunkt 10m bei insgesamt 100 Gittermetern. Natürlich ist ein Standard-PKW keine 10m lang, aber ich dachte auch eher, dass es erstmal wichtiger ist zu sagen dass sich an der Stelle ein PKW befindet und dieser sich nach einem bestimmten Zeitintervall weiterbewegt. Ich würde also erstmal davon ausgehen, dass nur ein Auto auf ein Gitterfeld passt.

Re: Versuch einer Verkehrssimulation

Verfasst: Samstag 5. Juli 2014, 19:39
von BlackJack
@Timberjack: Aus der Länge eines Gitterpunktes im Verhältnis zur Standardauto-Länge ergibt sich dann ja wie weit andere Fahrzeuge auffahren können, wenn ein langsameres Auto vor einem eigentlich schnelleren fährt. Ich fragte nur, damit das nicht *zu* unrealistisch wird. :-)

Re: Versuch einer Verkehrssimulation

Verfasst: Sonntag 6. Juli 2014, 08:17
von MagBen
Timberjack hat geschrieben:also ein Gitterpunkt 10m bei insgesamt 100 Gittermetern.
"Gittermeter"? Ich denke Du meinst Gitterpunkte und Du willst 1km simulieren.
Timberjack hat geschrieben:Natürlich ist ein Standard-PKW keine 10m lang, aber ich dachte auch eher, dass es erstmal wichtiger ist zu sagen dass sich an der Stelle ein PKW befindet und dieser sich nach einem bestimmten Zeitintervall weiterbewegt.
Wenn Du auf ca. 6-7m runtergehst, dann kannst Du auch einen Stau simulieren.

Du brauchst wahrscheinlich auch eine Art von Gruppierung der Gitterpunkte. Denn jeder PKW braucht in Abhängigkeit seiner Geschwindigkeit mehr oder weniger freie Gitterpunkte vor seinem eigenen Gitterpunkt. Und ein LKW nimmt sowieso mehrere Gitterpunkte ein.

Bei jedem Auto würde ich als Zustand nicht einfach nur die Geschwindigkeit speichern, sondern auch die Beschleunigung und die Wunschgeschwindigkeit. Wenn Du die Strecke diskretisiert hast, dann musst Du auch die Geschwindigkeit diskretisieren in Gitterpunkte pro Zeitintervall.

Am schwierigsten stelle ich mir den Spurwechsel und das Überholen vor.