Jump to content

Featured Replies

Geschrieben

Nach vielen Irrwegen und langer Zeit des Probierens und Testen, glaube ich jetzt ein brauchbare Lösung gefunden zu haben. Wenn die Fahrzeuge noch mit auf die Starße gebracht werden, die jetzt daneben stehen, wird es allerdings kritisch, weil dann die Teilstrecken verstopfen können und Fahrzeuge in die wartende Schlange hineinfahren. Alle Daten, die für die Steurung nötig sind, sind als Variablen, entweder der Kontakte oder der Kreuzungen angelegt.

Um es gleich am Anfang richtig zu stellen. Die Vorfahrtsregeln rechts vor links funktionieren nur, wenn in der zweiten Reihe an der Kreuzung keine Fahrzeuge stehen. Ansonsten ist es Kollisionsverhinderung. Der Grund liegt darin, dass es für jede Kreuzung eine Tabelle gibt, in der für jeden Zweig der Kreuzung ein Eintrag gemacht wird, über den die Fahrtreihenfolge festgelegt wird. Bei Schlangenbildung werden diese Einträge nach verlassen der Kreuzung nicht korrekt bearbeitet. Deshalb wird die Tabelle DrivePermission nach jedem Fahrzeug das einen Haltekontakt verlässt gelöscht und wieder neu aufgebaut.

 

Kreuzungsbild.thumb.jpg.2a5939ff74054708bdd8373c81a2075c.jpg

 

GiveGoAhead mit dem Wert True bewirkt, dass es für jede Kreuzung nur einen Timer gibt. Mehrere Timer pro Kreuzung führen zum Chaos. Wenn alle Kreuzungen blockiert sind und alle Fahrzeuge stehen, könnte man das Schlagwort DataReset nutzen um alle GiveGoAhead Variablen mit einem Schalter auf False zu setzen. Das geschieht ansonsten automatisch, wenn keine Fahrzeuge mehr an der Kreuzung stehen. Entscheidend dafür, dass es gut funktioniert, ist auch, dass richtige Maß an Fahrzeugen zu finden. Wenn eine Teilstrecke verstopft ist kommt es zu Schlangenbildung.

Die Testanlage habe ich unter der ID 1E8AE724-8E95-45E9-A611-B75CB0B366DF veröffentlicht. Sie ist mit LUA gescripted. Es fahren 40 Fahrzeuge auf den Straßen.

Kritik und Anregungen sind immer willkommen.

 

 

Geschrieben
vor 8 Stunden schrieb wkh:

weil dann die Teilstrecken verstopfen können und Fahrzeuge in die wartende Schlange hineinfahren.

Ist ja real auch nicht anders. Sobald die Verkehrsdichte ein gewisses Maß überschreitet, braucht es eine Ampelanlage oder eventuell einen Kreisverkehr, damit es flüssig läuft. Mit Vorfahrtregeln alleine ist es dann nicht mehr getan.

Deine Vorfahrtregelung erinnert an die amerikanischen "4-way stops".

Viele Grüße
Götz

Geschrieben
  • Autor

Hallo Goetz,

das tritt auf, wenn ein Teilstück zwischen zwei Kreuzungen den Verkehr nicht mehr aufnehmen kann. Dann Bremst das MBS die Fahrzeuge nicht mehr ab und sie schieben sich ineinander. Ich habe versucht den Betrieb auf einem Teilstück zu begrenzen indem ich abfrage mit wieviel Fahrzeugen es besetzt ist. Auf einem kurzen Stück sollten nicht mehr als 4 Fahrzeuge auf der Strecke sein. das bedeutet, dass bei der Abfrage nicht mehr als 1 oder 2 Fahrzeuge auf der Strecke sein dürfen, weil ja auf jedem Haltekontakt noch ein Fahrzeug stehen kann das auch diese Route benutzt. Es ist also keine Absolut verlässliche Lösung und es wird immer eine alternative Route bestimmt , wenn die erlaubte Anzahl erreicht wird. Sobald zuviel Verkehr vorhanden ist kann das dann nicht mehr funktionieren. Aber ich bin schon froh, dass ich überhaupt eine Lösung habe, die halbwegs funktioniert.

Viele Grüße

wkh

Geschrieben
vor 44 Minuten schrieb wkh:

das tritt auf, wenn ein Teilstück zwischen zwei Kreuzungen den Verkehr nicht mehr aufnehmen kann. Dann Bremst das MBS die Fahrzeuge nicht mehr ab

Eventuell hast du meinen Vergleich missverstanden, wkh.

Amerikanische 4-way stops haben auf allen vier Seiten ein Stopschild. Jeder, der an dieser Kreuzung ankommt, muss zuerst anhalten. Dann fahren alle in der Reihenfolge über die Kreuzung, in der sie angekommen sind. Weder gibt es eine Rechts-vor-Links Regel (wie an unseren gleichberechtigten Kreuzungen), noch spielen Linksabbieger eine Sonderrolle. Und dasselbe Verhalten meinte ich auch bei dir beobachtet zu haben. Was übrigens völlig in Ordnung ist, denn  der Verkehr fließt mit deiner Methode (y)

Und mein Kommentar auf das Fehlverhalten bei zu hoher Verkehrsdichte sollte auch nur ausdrücken, dass es real genauso zu Problemen führen würde. Kreuzungen ohne Ampelanlage können nur dort funktionieren, wo wenig Verkehr herrscht.

Viele Grüße
Götz

Geschrieben
  • Autor

Nein, ich habe nichts missverstanden und auch nichts negatives herausgelesen oder hineininterpretiert. Ich hätte nur gerne selbst gerne etwas entwickelt, was wirklich den Vorfahrtsregeln entspricht. Das ist aber meines erachtens nur mit einem großen Programmieraufwand und Tabellen für jede Fahrtrichtung zu machen. Ich habe auf jeden Fall eine Menge gelernt bei meinen Experimenten, z.B. über Timer, Verzögerungen und Zähler und dass es keine Schlechte Idee ist einen Kontakt zu fixieren, wenn etwas funktioniert. 

Grundsätzlich bin ich an guten Lösungen interssiert und deshalb offen für Kritik und Anregungen. Mir hat z.B. für diese Lösung deine Anregung Objektvariablen zu benutzen, anstatt den Objektnamen zu interpretieren, sehr geholfen.

Das Forum möchte ich bei dieser Gelegenheit auch ausdrücklich loben, man bekommt hilfreiche Antworten und ich habe noch nie eine herablassende Antwort gelesen, wie in manch anderem Forum. (y)

Viele Grüße

wkh 

Geschrieben
vor einer Stunde schrieb wkh:

Das ist aber meines erachtens nur mit einem großen Programmieraufwand und Tabellen für jede Fahrtrichtung zu machen.

Ja, das ist hier der allgemeine Konsens zu diesem Thema.
Und am Ende rechtfertigt dann das Ergebnis den Aufwand nicht, denn deine Lösung sorgt ebenso gut für flüssigen, lebendigen Straßenverkehr.  

Viele Grüße
Götz

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren