Start: die Simulation

Was hinter einer Runde steckt

Die Idee zum Spiel stammt aus der Masterarbeit von Sebastian Werblinski an der Freien Universität Berlin (2025). Der Code hier ist eine vollständige Neuentwicklung an der TU Berlin und keine Fortsetzung seines Prototyps; das Verkehrsmodell ist dabei neu gebaut worden. Hier steht, wie es rechnet und woher seine Zahlen kommen.

Simulation

Eine Runde simuliert das Pendelverhalten von tausenden Menschen. Dabei muss die Simulation folgende Fragen beantworten:

  1. Mit welchem Verkehrsmittel ist man am schnellsten?
  2. Mit welchem Verkehrsmittel ist man am kostengünstigsten unterwegs?
  3. Mit welchem Verkehrsmittel setzt man am wenigsten CO2 in die Atmosphäre frei?

Modell

CO2mmute simuliert den Verkehr mit einem mesoskopischen Modell. Dabei bilden Fahrzeuge eine Schlange auf einem Streckenabschnitt, ohne eine genaue Position auf diesem Abschnitt zu haben. Streckenabschnitte sind die Kanten (Edges) eines Graphen. Wo Streckenabschnitte zusammenlaufen, liegen Knoten (Nodes).

Eine Kante sind drei Zahlen

Für die Simulation hat jede Kante drei Kernzahlen:

Freiflusszeit      t0 = Länge / Tempolimit
Abflusskapazität   Q  = 1.800 Fahrzeuge/h je Autospur
Speicherkapazität  S  = 133 Fahrzeuge/km je Autospur × Länge

Wir nehmen 1.800 Fz/h und Spur als die Sättigungsverkehrsstärke einer städtischen Spur. 133 Fz/km und Spur ist die Dichte im Stillstand: ein Fahrzeug je 7,5 m, Stoßstange an Stoßstange. Eine 900 m lange einspurige Straße fasst also rund 120 stehende Fahrzeuge und lässt in einem Fünf-Minuten-Tick rund 150 durch.

Spuren werden gezählt, wie sie auf der Straße liegen. Dabei gilt:

Autospuren = Spuren − (1 bei Busspur) − (1 bei Radspur)

Die Zahl ist nach unten auf null begrenzt, und null Autospuren sind erlaubt: Die Straße wird zur Busschleuse – für Autos gesperrt, offen für Busse und wahlweise auch für Räder und Fußgänger.

Ein Tick

  1. Jede Kante bekommt ihr Budget für den Tick: Q × Ticklänge.
  2. Alle, deren Abfahrtsminute gekommen ist, versuchen auf ihre erste Kante zu kommen.
  3. Ein Fahrzeug darf eine Kante nicht vor Ablauf von t0 verlassen. Die Freiflusszeit ist die Untergrenze der Fahrt; schneller als das Tempolimit geht nie.
  4. Danach reiht es sich in die Schlange der Kante ein und wartet auf Budget. Auf einer Spur ist das eine einzige FIFO-Schlange. Ab zwei Autospuren hat jede nächste Kante ihre eigene, eine Abbiegespur, und alle teilen sich das Budget und den Speicher der Straße.
  5. Weiter darf es nur, wenn die nächste Kante noch Speicher frei hat. Wenn nicht, bleibt es stehen, und alles dahinter in seiner Schlange auch: auf einer Spur also alle, ab zwei Spuren nur, wer in dieselbe Richtung will. Ein Stau entsteht.
  6. Innerhalb des Ticks wiederholen, bis sich nichts mehr bewegt. Ein Fahrzeug schafft in fünf Minuten mehrere kurze Kanten. Die Kanten werden dabei jeden Tick in neu gemischter Reihenfolge bedient: Münden mehrere in denselben Knoten, ist über eine Runde jede gleich oft als erste dran. Das ist das Reißverschlussprinzip, im Mittel statt Auto für Auto.

Stau entsteht also aus zwei Mechanismen: Eine Kante lässt nur Q Fahrzeuge pro Stunde ab, und eine volle Kante hält die Kante auf, die sie speist. So wachsen Schlangen rückwärts durch das Netz, wie auf einer echten Straße. Ab zwei Spuren weicht das bewusst von MATSim ab, wo eine Kante bei jeder Breite eine einzige Schlange hat: Wer in eine volle Straße abbiegen will, hält dort die nicht auf, die woandershin wollen.

Eine Kante im freien Fluss und im Rückstau Oben fahren einzelne Autos mit Abstand über die Kante, am Ende stehen drei kurz in der Schlange, und vorn fließt der Verkehr mit der Abflusskapazität Q ab. Unten ist die nächste Kante voll: Die Schlange füllt die ganze Kante, ein Halt sperrt die Ausfahrt, und ein ankommendes Auto kommt nicht mehr hinein. Freier Fluss Q Speicher S, eine Kante lang Rückstau kommt nicht hinein nächste Kante voll
Oben fährt jedes Auto seine Freiflusszeit t0 ab und reiht sich am Ende kurz ein, bevor die Kante es mit Q abgibt. Unten ist die nächste Kante voll: Niemand fährt ab, die Schlange füllt den ganzen Speicher S, und wer ankommt, kommt nicht mehr hinein.

Die Mindestgeschwindigkeit

Viele Verkehrsmodelle rechnen eine Geschwindigkeit aus dem Verhältnis von Belastung zu Kapazität und müssen deshalb verhindern, dass sie null erreicht. Wir erinnern uns: Durch null teilen sollte man vermeiden. Ein Warteschlangenmodell hat diesen Term nicht. Ein Fahrzeug wird freigegeben oder nicht, und auf der Eingabeseite steht nirgends eine Geschwindigkeit. Eine Mindestgeschwindigkeit braucht es deshalb nicht.

Dafür kann sich das Netz wirklich verklemmen: ein Ring aus Kanten, jede voll mit Fahrzeugen, die auf die nächste wollen.

Ein Knoten, der vier Ticks hintereinander nichts bewegt hat, gibt deshalb trotzdem ein Fahrzeug frei, über die Speichergrenze hinweg, und wartet dann wieder vier Ticks. Jede Freigabe wird gezählt. Ein forced_releases über null im Tick-Log ist kein Fehler, aber ein Grund, das Log zu lesen.

Ein Durchlauf läuft, bis alle angekommen sind. Eine Uhr, nach der der Rest einfach nicht mehr mitzählt, gibt es nicht. Die Grenze von 1000 Ticks pro Weg fängt nur einen Fehler im Modell ab und wird als Fehler geloggt. Auf Berlin Mitte-West braucht ein gespielter Weg höchstens 35 Ticks, bei vierfacher Nachfrage und nur einspurigen Straßen 153.

Geschwindigkeit ist ein Ergebnis

Die mittlere Geschwindigkeit einer Kante ist ihre Länge geteilt durch die tatsächlich auf ihr beobachteten Fahrzeiten. Gezählt werden dabei nur Autos: Ein Fußgänger braucht zehn Minuten für eine Kante, die ein Auto in einer Minute schafft, und ließe man ihn in den Mittelwert, meldete eine leere Straße Stau. Einen Stau-Faktor, mit dem eine Freiflussgeschwindigkeit multipliziert wird, gibt es nicht.

Die Geschwindigkeit auf der Karte, der CO2-Faktor einer Fahrt und die Routenvorschau, die ein Spieler in der nächsten Runde bekommt, beruhen also alle auf derselben gemessenen Zahl.

Wer trägt alles zum Stau bei?

  • Autos immer.
  • Busse stehen im Mischverkehr und fahren auf einer eigenen Busspur frei. Ein Bus zählt 3 Pkw-Einheiten, nimmt in der gemeinsamen Schlange also den Platz von drei Autos ein. Er steht immer in der Schlange seiner Fahrtrichtung, auch wo die Linie auf der Karte auf der Gegenrichtung eingezeichnet ist.
  • Räder stehen nur dort im Verkehr, wo sie sich die Straße mit Autos teilen. Ein Rad hat auf der Kante eine eigene Schlange mit eigenem Abflussbudget von 2.000 Rädern/h. Ein Autostau hält also keinen Radfahrer auf und ein Radfahrer keinen Autofahrer. Den Speicher der Kante teilen sie sich aber: Ein Rad zählt 0,2 Pkw-Einheiten, und so nehmen tausend Radfahrer den Autos Platz weg. Abgewiesen wird ein Rad nie, auch nicht von einer vollen Straße.
  • Fußgänger stehen ganz außerhalb des Warteschlangenmodells.

Hin und zurück

Ein Pendelweg besteht aus Hin- und Rückweg, und eine Runde rechnet beide. Der Rückweg ist keine Umkehrung des Hinwegs, sondern eine eigene Suche auf dem Graphen, mit demselben Verkehrsmittel und derselben Wahl: Der Graph ist gerichtet, eine Einbahnstraße ist eine Kante ohne Gegenkante, und der Weg zurück kann dann ein anderer sein, im Extremfall ein Kreis. Auf Berlin Mitte-West hat jede Kante ihre Gegenkante, dort ist der Rückweg derselbe Weg andersherum. Gibt es keinen Weg zurück, lässt sich der Weg hin nicht abschicken.

Zwischen den beiden Spitzen liegen Stunden. Der Abend ist deshalb ein zweiter Durchlauf auf einem frischen Netz und kein zweiter Teil derselben Uhr. Auf einer Uhr würden die Linien den ganzen Tag weiterfahren, weil die Leute vom Abend schon in der Liste warten, und die Gesellschaft würde CO2 für Busse zahlen, die niemand besteigen kann. So fährt der Fahrplan zweimal, und beide Fahrpläne zählen. CO2 und Kosten einer Gruppe sind die Summe beider Wege, ihre Fahrzeit ist die für Hin- und Rückweg zusammen, gemittelt über die Gruppen. Weil in einer Runde damit alles zweimal anfällt, ist das Budget pro Runde doppelt so groß wie für einen Weg.

Der Abend ist heute ein Abbild des Morgens, mit derselben Streuung der Abfahrten. Die Wiedergabe zeigt beide Wege, dazwischen eine kurze Mittagspause.

Der ÖPNV fährt einen Fahrplan

Ein Linienfahrzeug ist in der Simulation ein ganz normales Fahrzeug auf einer künstlichen Route. Ein Bus steht deshalb in der Schlange und staut zurück wie jedes Auto, es sei denn, er hat eine eigene Busspur.

Menschen steigen an Haltestellen ein, die nach Linie und Knoten unterschieden werden: Wer auf die M1 wartet, steigt nicht in die U7. Einsteigen kann man nur, wenn Platz ist, sonst wartet man weiter. Plätze werden frei, wenn jemand aussteigt. Beim Umsteigen wartet man erneut, diesmal auf die neue Linie. Die Wartezeit wird gemessen und ausgewiesen, nicht addiert: Die Uhr läuft seit der Minute, in der die Person losfahren wollte, das Stehen an der Haltestelle steckt also schon in der Fahrzeit. Haltezeiten sind nicht modelliert; ein Fahrzeug bedient seine Haltestelle in dem Augenblick, in dem es ankommt.

Eine Linie fährt ihren Fahrplan, ob jemand mitfährt oder nicht:

Die Gesellschaft bezahlt den Fahrplan. Eine Linie stößt Fahrzeuge × Linienkilometer × Faktor aus. Auch ein leerer Bus stößt CO2 aus, und eine Linie, die niemand benutzt hat, kostet die Runde trotzdem.

Der Fahrplan deckt das Abfahrtsfenster von zwei Stunden ab. Danach fährt eine Linie weiter, solange noch jemand unterwegs ist, im Auto, auf dem Rad, zu Fuß, im Bus oder an einer Haltestelle, auch wenn niemand mitfährt: Busse fahren auch in den ruhigen Stunden. Steckt der letzte Autofahrer im Stau, fahren die Linien weiter, und die Gesellschaft bezahlt sie. Am meisten macht das aus, wenn viele umsteigen: Mit Bus und Bahn ist man länger unterwegs als mit dem Auto, und solange einer noch unterwegs ist, fahren alle Linien.

Auf die Mitfahrenden verteilt wird diese Summe nach Personenkilometern, nicht pro Kopf: Wer auf einer 13 km langen Linie eine Station fährt, soll nicht den Anteil einer ganzen Fahrt tragen, während das Auto daneben nach Kilometern abgerechnet wird. Die persönlichen Anteile ergeben zusammen genau die Summe der Linie: Σ persönlich = Gesellschaft.

Die Summe einer Runde sind deshalb die Zeilen der Spieler plus die Gesellschaftskosten der Linien, die niemand benutzt hat.

CO2 und Kosten hängen an einer Geschwindigkeitskurve

Emissionen sind kein fester Wert pro Kilometer. Ein Auto im Stop-and-go verbrennt Kraftstoff, den es nicht in Strecke umsetzt, und ein Auto bei 130 km/h kämpft gegen den Luftwiderstand. Das Modell benutzt einen geschwindigkeitsabhängigen Emissionsfaktor der COPERT/HBEFA-Form:

EF(v) = a/v + b + c·v²          Gramm CO₂ pro Fahrzeugkilometer

a/v ist Leerlauf und Stop-and-go, ein fester Verbrauch, verteilt auf weniger Kilometer; c·v² ist der Luftwiderstand; b ist alles, was allein mit der Strecke skaliert. a und b sind keine freien Parameter, sie folgen aus c und zwei Bedingungen:

1.  das Minimum der Kurve liegt bei 70 km/h  →  a = 2c · v_min³           = 1962,3 g/h
2.  EF(50) = 166,8 g/km, der Autofaktor      →  b = 166,8 − a/50 − c·50²  = 120,4 g/km

mit c = 0,0028605. So gilt der Ankerwert bei 50 km/h exakt, und frei gewählt ist nur noch eine Zahl statt drei.

km/h102030405070100
g CO2/km317220188174166,8162,5169
× Basiswert1,901,321,131,041,000,971,01

a/v wächst ohne Grenze, wenn die Geschwindigkeit gegen null geht. Deshalb ist der Faktor bei 2,00× gedeckelt, statt die Geschwindigkeit nach unten zu begrenzen: Schlimmstenfalls stößt ein Auto doppelt so viel aus wie bei 50 km/h. Der Deckel greift unterhalb von 9,2 km/h.

CO₂ eines Autos über der Geschwindigkeit Die Kurve fällt von 333,6 g pro Kilometer bei Schrittgeschwindigkeit auf 166,8 g bei 50 km/h, erreicht bei 70 km/h ihr Minimum von 162,5 g und steigt danach wieder leicht an. Unterhalb von 9,2 km/h hält ein Deckel sie beim Doppelten des Werts bei 50 km/h. 0 100 200 300 0 30 50 70 100 130 g CO₂ pro km km/h Deckel 2,00 × 30: +13 % Anker: 166,8 g Minimum bei 70
Gramm CO2 pro Kilometer über der mittleren Geschwindigkeit auf einer Kante. Der Anker liegt bei 50 km/h, das Minimum bei 70 km/h, und unterhalb von 9,2 km/h hält der Deckel die Kurve bei 333,6 g.

Daraus folgt:

  • Eine Tempo-30-Straße stößt pro Kilometer rund 13 % mehr aus als eine 50er, auch leer. Das ist in jedem geschwindigkeitsabhängigen Modell so, und 34 der 82 Straßenkanten der ausgelieferten Karte sind 30er-Zonen. Das hebt die Emissionen einer Runde schon ohne Stau an.
  • Die Kosten hängen mit halbem Gewicht an derselben Kurve. Die Hälfte der 0,32 €/km ist Kraftstoff und Verschleiß im Stop-and-go und folgt dem Emissionsfaktor; die andere Hälfte (Abschreibung, Versicherung, Steuer) fällt an, ob das Auto heute fährt oder nicht. Die Kosten sind deshalb bei 1,50× gedeckelt, CO2 bei 2,00×.

Beim ÖPNV gilt ein fester Wert pro Fahrzeugkilometer: 1.200 g für einen Bus, 1.500 g für einen Zug. Eine Geschwindigkeitskurve gibt es hier nicht, weil die Fahrzeuge nach Fahrplan fahren und nicht nach Verkehrslage.

Neben den Kosten steht der Fahrpreis: 1,30 € pro Fahrt, Umstiege eingeschlossen, und beim Auto der Teil der Kosten, den man aus der eigenen Tasche zahlt. Es gibt also einen Unterschied zwischen was du zahlst und was es kostet, den man bei der Rundenauswertung benennen sollte.

Das Rad kostet 0,03 €/km: Verschleiß, Reparaturen, Wertverlust und, im Mittel, Diebstahl. Das zahlt man ganz selbst, also ist es beides, was du zahlst und was es kostet, und es hängt an keiner Kurve, denn ein Stau nutzt keine Kette ab. Zu Fuß kostet nichts. Nicht eingerechnet ist der Nutzen für die Gesundheit; mit ihm wären Rad und Fußweg für die Gesellschaft billiger als umsonst. Ob er in die Rechnung gehört, ist noch offen.

Zufälle gibt's

Dieselben Entscheidungen ergeben in zwei Runden nicht ganz dieselben Zahlen. Das ist gewollt. Jede Runde zieht ihre Zufallszahlen aus einem Generator, dessen Seed aus der Runde abgeleitet wird; dieselbe Runde lässt sich also jederzeit identisch nachspielen.

Zufällig sind genau zwei Dinge:

  • Die Kapazität einer Kante, einmal je Kante und Runde gezogen (σ = 0,14, begrenzt auf 0,6–1,4×). Nur sie sorgt dafür, dass sich Runde 2 von Runde 1 unterscheidet, weil sich Rauschen pro Fahrer über tausende Menschen herausmittelt.
  • Die Wunschgeschwindigkeit, einmal je Fahrer gezogen (σ = 0,12, begrenzt auf 0,7–1,4×), für die Streuung innerhalb einer Runde. Auf einer mehrspurigen Straße ist die Schlange danach geordnet, wann ein Fahrzeug bereit ist, und nicht streng nach dem Eintreffen. So entsteht Überholen, ohne dass es dafür einen eigenen Mechanismus braucht.

Das Ergebnis wird nie mit einer Zufallszahl multipliziert. Zufällig sind nur die Eingaben, und nahe der Kapazität verstärkt das Modell ihre Schwankungen. Im freien Fluss streut eine Runde deshalb kaum (Variationskoeffizient rund 0,3 %), unter Last deutlich (16–18 %). Wie im echten Verkehr ist eine leere Straße vorhersehbar und ein Stau nicht.

Verspätung wird gegen die eigene Freiflusszeit des Fahrers gemessen. Wer in einer 50er-Zone lieber 45 fährt, ist dadurch nicht verspätet.

Einheiten

Eine Gruppe (in der Forschung Agent genannt) steht für viele Pendler, und aus diesem Faktor stammen die meisten Einheitenfehler dieses Projekts. Zwei Regeln:

  • Eine CO2- oder Euro-Zahl ist extensiv: Sie summiert über Gruppen und über die Menschen hinter jeder Gruppe. Pro Person heißt: durch beides teilen.
  • Eine Fahrzeit ist es nicht: Zwei Gruppen mit je 30 Minuten Fahrzeit brauchen zusammen nicht 60. Die Fahrzeit einer Gruppe ist Hin- und Rückweg zusammen, eine mittlere Fahrzeit ein Mittel über die Gruppen.

Wie groß der Faktor ist, wählt niemand; er wird aus der Karte abgeleitet.

Ziel: zurück ins Spiel

Jetzt sehen, was das für eine Runde bedeutet

Der Rest steht auf der Karte: wie viele Menschen eine Gruppe vertritt, welches Budget eine Runde hat und welche Linien tatsächlich fahren.