Skip to main content

"Grüne Welle" Werkzeug

Einleitung

Das "Grüne Welle"-Werkzeug bietet dir ab sofort die Möglichkeit, im Spiel Ampelphasen verschiedener Kreuzungen zu koordinierten Streckenzügen zu synchronisieren. 

Beispielsweise im Innenstadtgebiet kann es häufig dazu kommen, dass mehrere Querstraßen hintereinander die Hauptverkehrsachse kreuzen.
Um den Verkehr dennoch bestmöglich der Hauptverkehrsachse entlang über die jeweiligen Kreuzungen zu leiten, kann man mit diesem Werkzeug einzelne Kreuzungen in Gruppen zusammenfassen.

In diesen Streckenzug-Gruppen kann dann eine Referenzkreuzung definiert werden, an der die weiteren Kreuzungen der Gruppe ausgerichtet werden.

Gibt man weiteren Kreuzungen in der Gruppe nun jeweils einen "Offset", also Versatzzeitraum in Bezug auf die Referenzkreuzung, kann man definieren, in welchem zeitlichen Versatz die jeweilige Kreuzung nach der Referenzkreuzung in Phase 1 schaltet.

Mit etwas tüfteln und/oder guter Planung schalten deine Ampeln entlang des Streckenzugs dann idealerweise kurz vor eintreffen der Anfahrenden Fahrzeuge auf Grün (um Fahrzeuge, die den früheren Phasenlauf verpasst haben noch abgeführt werden können, bevor neuer Verkehr eintrifft)


Grüne Welle vorbereiten

Um das Werkzeug für die Grüne Welle verwenden zu können menu_customphase.pngist es unabdingbar, dass du benutzerdefinierte Phasenzyklen an den jeweiligen Kreuzungen verwendest und keine der vordefinierten Optionen.

Um dir Arbeit zu ersparen, könntest du den Phasenzyklus bspw. der Referenzkreuzung kopieren und bei von der Grünen Welle betroffenen Kreuzungen einfügen.

  • Falls noch nicht geschehen: Stelle den Phasenmodus im Dropdown Menü auf "Eigene Phase" und erstelle benötigte Phasen in der Kreuzung bzw. kopiere Phasen aus anderen Kreuzungen
  • Danach kannst du bereits auf den erscheinenden "Grüne Welle" Button drücken

 greenwave_group_created.png

Usecase Demonstration (Beispiel)
Inklusive der markierten Referenzkreuzung

greenwave_tutorial_reference.png

Algorithmus Design 
(Systemarchitektur der Grünen Welle)

Für eine funktionierende "Grüne Welle" muss die erste Phase (P1) jedes Phasenzyklus zwingend die Verkehrsrichtung/en priorisieren, in die die Welle geleitet werden soll. 

Beachte also:

Die erste Phase eines Gesamtzyklus 
muss die Phase sein, die die Richtung der grünen Welle vorgibt. Das System synchronisiert alle Kreuzungen so, dass sie zur richtigen Zeit bereit sind, in Phase 1 zu wechseln, sobald sie an der Reihe sind.

Die zweite Phase eines Gesamtzyklus sollte eine "nützliche Phase" sein. Das bedeutet: Das System muss bei zu stark abweichender Gesamtzyklusdauer der einzelnen Kreuzungen (weil nicht gut auf einander angeglichen) oder einer zu stark abweichenden Anzahl von Phasen an den Kreuzungen (≥2 Phasen Unterschied zwischen mindestens einer Kreuzung zu den anderen/einer anderen) die letzte Phase nutzen, um etwaiges Ungleichgewicht auszugleichen.
Die letzte Phase von Kreuzungen wird also hin und wieder gestreckt werden, um das System synchron zu halten. Um querende Straßen nicht "verhungern" zu lassen, also deren Phasenlänge zu stauchen, damit die Kreuzung aufholen kann, habe ich mich dazu entschieden, lieber die letzte Phase im Notfall lang zu halten und zu warten, bis die Kreuzung durch ihren Zyklus gehen konnte. Es gibt auch einen Rush Mode, diesen setzt das System beim Force Release ein.

*Der Force Release ist in der Version 2.2.2 hin und wieder aufgefallen durch teils rabiates Eingreifen. Im anstehenden Versions-Update werden auch diese Systeme noch einmal adjustiert. In den meisten Use-Cases sollte das allerdings nicht zum Problem werden und kann durch eigene Aktionen auch wieder umgangen werden. Etwas tüfteln ist dann nötig. (Ich beeile mich, die Stabilität dieses Systems zu verbessern)


Erstelle eine Streckenzug-Gruppe

  • Klicke jetzt auf "Neue Gruppe", daraufhin wird diese erstellt
  • Wähle im Dropdown Menü die soeben erstellte Gruppe, die noch "Neue Gruppe" heißt, und/oder benenne sie (vorzugsweise im dafür vorgesehenen Tab "Gruppen") um
    • Die erste, hinzugefügte Kreuzung ist in den meisten Fällen auch als Referenzkreuzung gedacht. Die Referenzkreuzung wird mit dem Offset 0s bestimmt. Oder es wird automatisch 

       

      die Kreuzung zur Referenzkreuzung, dessen Offset am niedrigsten ist.
  • Füge nun eine weitere Kreuzung hinzu, im Idealfall direkt die auf die Referenzkreuzung folgende Kreuzung, dann die darauf folgende - und immer so weiter
  • Die Kreuzungen lassen sich jederzeit ganz einfach via Offset-Einstellung in der Reihenfolge priorisieren
    • Der Offset Rechner kann dir vielleicht eine erste Hilfestellung sein, um in etwa die Werte einzuschätzen, die du einstellen musst. Mit zunehmender Größe einer Stadt und zunehmender Verlangsamung der Simulation sind 12 eingestellte Sekunden natürlich nicht mehr genau 12s. Im Backend werden Frames in menschlich verständliche Werte umgesetzt und dann ans Frontend übermittelt. 

greenwave_group_select.pnggreenwave_offset_zoom.pnggreenwave_tutorial_secondjunction.png

Systemarchitektur & Referenzlogik (zusammengefasst)
Um die Synchronität über verschiedene Kreuzungstypen hinweg zu gewährleisten, etabliert das System eine dynamische Referenzsteuerung. Für einen stabilen Betrieb gelten folgende Logik-Regeln:

- P1-Priorisierung: Die erste Phase (P1) eines Zyklus definiert die Richtung der „Grünen Welle“. Das System taktet alle Kreuzungen basierend auf ihrem individuellen Offset so, dass sie pünktlich zum errechneten Zeitpunkt in Phase 1 initialisieren

- Sequentieller Phasenwechsel: Für den Betrieb einer Grünen Phase ist es unerlässlich, dass die Phasen nach dem neuen, mit TTE etablierten Wechselmodus "Sequentieller Modus" durch ihre Phasen wechseln, da sich der Wechsel von Phasen im Legacy Mode von TLE nicht vorhersagen und somit nicht synchronisieren lässt. Nirgendwo auf der Welt würde auf diese Weise eine Grüne Welle programmiert werden, so auch nicht in diesem Fall. Um den Legacy Mode wieder zu nutzen, musst du die betroffene Kreuzung aus der jeweiligen Streckenzug-Gruppe entfernen

- Dynamischer Drift-Ausgleich: Bei unterschiedlichen Gesamtzykluslängen einzelner Kreuzungen oder stark abweichender Phasenanzahl (Differenz ≥2) schützt das System den Querverkehr vor dem "verhungern". Statt Phasen zu stauchen, wird die letzte Phase des Zyklus einer Kreuzung bei Bedarf gestreckt, um Ungleichgewichte auszugleichen und auf den globalen Takt der Referenzkreuzung zu warten

- Referenz-Anker (Offset 0s): Die Kreuzung mit dem niedrigsten Offset (idealerweise 0s) fungiert als Taktgeber. Alle weiteren Offsets müssen relativ zur Referenzkreuzung berechnet werden – nicht zur jeweils vorherigen Kreuzung


Gruppen-Panel

greenwave_grouptab_rename.png

Im Tab „Groups“ verwaltest du die logischen Einheiten deiner Streckenzüge. Hier definierst du das Grundgerüst, bevor du in die Feinjustierung der einzelnen Kreuzungen gehst.

  • Zentrales Management: Erstelle neue Gruppen mit einem Klick, benenne sie für eine bessere Übersicht um (z. B. nach Hauptverkehrsachsen wie „B1 / Potsdamer Str.“) oder lösche nicht mehr benötigte Verbünde
  • ECS-Logik: Das System arbeitet ressourcenschonend. Dank der Architektur des Entity Component Systems (ECS) werden leere Gruppen, in denen keine Daten hinterlegt sind, automatisch nicht dauerhaft gespeichert. Du musst dich also nicht um das „Aufräumen“ verwaister, leerer Gruppen kümmern – das System erledigt das im Backend für dich
  • Status-Feedback: Direkt im Panel siehst du auf einen Blick, wie viele Kreuzungen einer Gruppe bereits zugewiesen sind und ob die Gruppe initialisiert wurde (erkennbar am grünen Punkt/Status).

 

Benenne deine Gruppen erst um, nachdem du die gewünschten Kreuzungen im „Kreuzung“-Tab zugewiesen hast. Dies beugt zunächst einfach Edge-Cases bei der Daten-Synchronisation vor, falls du komplexe Änderungen an der Gruppenstruktur vornimmst


Dashboard

Das Dashboard ist dein Kontrollzentrum. Hier siehst du in Echtzeit, ob deine Planung in der Spielwelt aufgeht.

Wenn du signifikante Änderungen an einer Streckenzuggruppe vornimmst, kann es mitunter vorkommen, dass du chaotisches Verhalten bemerkst - ist abhängig von den Differenzen der jeweiligen Kreuzungen

  • Der SYNC-Status: * Leuchtet das SYNC-Icon grün, ist die Kreuzung erfolgreich im globalen Takt der Gruppe verankert.
    • Sollte eine Kreuzung aus dem Takt geraten (z. B. durch manuelle Eingriffe oder extreme Simulations-Lags), siehst du hier, wie die Force Release Logik oder der Rush Mode versucht, die Synchronität wiederherzustellen.

  • Phasen-Fortschrittsbalken: Der grüne Balken unter „Phase X / Y“ zeigt dir exakt, an welchem Punkt des Zyklus sich die Kreuzung befindet.

    • Wichtig: Da das System bei Ungleichgewicht teilweise die letzte Phase streckt, wirst du hier beobachten können, wie der Balken am Ende des Zyklus manchmal „wartet“. Das ist kein Bug, sondern der Dynamische Drift-Ausgleich in Aktion

  • Zyklus-Varianz: Hier siehst du auch die Gesamtdauer eines Durchlaufs in Sekunden. Achte darauf, dass diese Werte bei allen Kreuzungen einer Gruppe möglichst nah beieinander liegen (harmlos: z.B. 476s zu 472s im Screenshot). Je größer die Differenz, desto massiver muss das System eingreifen

greenwave_dashboard_pt1.pnggreenwave_dashboard_pt2.png

Den "perfekten" Offset finden

- Nutze das Dashboard, um den realen Verkehrsfluss zu beobachten. Wenn du siehst, dass Fahrzeuge an Kreuzung #2 ankommen, der Balken aber erst bei 10% von Phase 1 steht, ist dein Offset zu hoch. Ziel ist es, dass Phase 1 dann startet (Balken beginnt zu laufen), wenn die Fahrzeugkolonne der Referenzkreuzung die Haltelinie erreicht, oder vielleicht auch etwas früher, um zuvor durch eventuell eine Straßenbahn aufgehaltene Grüne Welle. Du hast völlige Freiheit!

Bekanntes Problem

- Beim erstellen und Einrichten von Gruppen kann es dazu kommen, dass im Dashboard alle Kreuzungen bei P1 hängen und nichts tun. Das ist wirklich nicht schön, aber du kannst es umschiffen. Entferne alle Kreuzungen aus der betroffenen Gruppe, lösche diese Gruppe sobald sie keine Kreuzungen mehr enthält, erstelle eine neue Gruppe und benenne diese auch erst um, wenn gewünschte Kreuzungen drin sind und laufen. Danach sollte es nicht mehr zu Problemen kommen, egal welche Änderungen du vornimmst. Wenn alle Phasenzyklen der Kreuzungen identisch lang sind, kann das System manchmal in einen Edge-Case rennen, in dem die Force Release Logik gar nicht aufgerufen wird, die in solchen Fällen greifen sollte.