Zum Inhalt springen

RunFlow

RunFlow plant Laufrouten durch Wien mit 72 % weniger Ampeln pro Kilometer – für 7 % mehr Weg.

Datenblatt

SachnummerJS-2026-01
Zeitraum01–09/2026
RolleKonzept, Bewertung und Tests; Code mit KI-Assistenz
WerkzeugePython · FastAPI · networkx · OpenStreetMap · Leaflet · Docker
Kernergebnis3,63 → 1,00 Ampeln pro km (−72 %) bei 7 % mehr Weg; 20 von 20 Testrunden innerhalb ±10 % der Zieldistanz
StatusLive-Demo
Eigentümer
Jakob Steinberger
Sachnummer
JS-2026-01
Titel
RunFlow
Dokumentart
Versuchsprotokoll
Ausgabedatum
08.10.2026
Erstellt von
Jakob Steinberger
Genehmigt von
Rev. · Blatt
F · 2/7
Sprache
DEEN
ISO 5456-2

1Ergebnis

Zone B
AB

Beispielstrecke A → B: 4 Ampeln auf 2,51 km. Gestrichelt: die Routen bei den anderen Werten.

Ampeln / km
1,00
Umweg (Median)
+33 %
0 m50 m100 m150 mUmweg vs. Luftlinie %Ampeln / km

Messung: 40 zufällige Strecken (1,5–4 km) in den inneren Bezirken, aktuelles Wegenetz, 05.10.2026. Ein Zielkonflikt wie in der Tourenplanung: Jeder Meter Umweg muss sich durch weniger Wartezeit bezahlt machen.

Live-Demo

2Problem und Motivation

Zone C

Rote Ampeln brechen den Laufrhythmus, und übliche Lauf-Apps optimieren nur die Distanz. In Wien heißt das: alle paar hundert Meter eine Kreuzung mit Ampel.

3Aufbau

Zone D
  1. 01Kartendaten: OpenStreetMap
  2. 02Wegenetz: 131 000 Knoten, Meter je Wegtyp
  3. 03Kostenfunktion: Weg × Faktor + 100 m je AmpelMein Teil
  4. 04Suche: A*
  5. 05Rundlauf-Kalibrierung: ±8 %Mein Teil

Die Kostenfunktion ist eine Abwägung wie in der Logistik: Jede Ampel kostet 100 „virtuelle Meter“ (≈ 36 s Warten bei 6:00 min/km). Ruhige Wege zählen 1,0, Gehsteige an Hauptstraßen 1,2, Stiegen 1,5.

Hier steckt die eigentliche Entscheidung: Was ist eine Ampel wert?

4Prüfung

Zone E

Fehlversuch

Die erste Version sah fertig aus und zeichnete plausible Routen. Erst das Nachmessen an 40 Teststrecken zeigte: Durch ein Detail der Bibliothek networkx bekam jede Kante dasselbe Gewicht – der Router zählte Straßenstücke statt Meter und Ampeln. Beim Nachmessen auf dem neu gebauten Wegenetz (Okt. 2026) lagen die Werte deutlich höher: Das alte Netz hatte vermutlich Ampeln beim Vereinfachen verloren, die alten Absolutwerte waren zu optimistisch.

Sah fertig aus. War es nicht.
Erste Version vs. korrigierter Router, 40 Strecken, altes Wegenetz (29.09.2026). Nur als Vergleich untereinander gültig.
KenngrößeErste VersionKorrigiert
Ampeln pro km (A → B)1,580,38
Weglänge vs. Luftlinie (Median)1,41×1,27×
Rundläufe innerhalb ±10 % der Zieldistanz0 %95 %
Startzeit / Arbeitsspeicher15 s / 1,8 GB1,5 s / 0,4 GB

5Erkenntnis und nächste Iteration

Zone F
  • Code, der in der Demo funktioniert, kann trotzdem falsch sein. Eine Messung mit Zahlen findet, was ein Blick auf die Karte übersieht.
  • Fakten (im Wegenetz gespeichert) und Regeln (beim Start angewendet) trennen: So lässt sich die Gewichtung ändern, ohne Daten neu zu laden.
  • Echte Daten sind unordentlich: OpenStreetMap bildet eine Kreuzung mit 2–5 Ampel-Knoten ab, die erst gruppiert werden mussten.

Nächste Iteration

Abbiegeabhängige Ampelstrafe: Wer an einer Ampelkreuzung rechts abbiegt, ohne zu queren, soll nicht bestraft werden. Dafür braucht es einen kantenbasierten Graphen.

Technische Details: Kostenfunktion und Suche

w(u,v) = Σ Länge je Wegtyp × Faktor (+10 % bei Kopfsteinpflaster) + 100 m, wenn v eine neue Ampelkreuzung betritt.

Alle Faktoren ≥ 1, daher unterschätzt die Luftlinie die Restkosten nie: A* liefert die optimale Route für dieses Kostenmodell.

Ampel-Knoten, die durch eine Kante ≤ 30 m verbunden sind, gelten als eine Kreuzung (88 % der Ampel-Knoten haben einen Nachbarn in 30 m).

Technische Details: Rundläufe

Zwei Hilfspunkte bilden mit dem Start ein rechtwinkliges Dreieck. Bereits benutzte Wege kosten das Zehnfache (Brücken das Doppelte), damit der Rückweg anders verläuft; Sackgassen-Stichwege werden entfernt.

Liegt die Länge mehr als 8 % daneben, wird das Dreieck skaliert (max. 5 Versuche). Test auf dem aktuellen Netz: 20 von 20 Rundläufen (5 und 10 km) innerhalb ±10 %, Median-Abweichung 3,8 %.