Initial: Mesh-Skills, Configs, Scripts
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# GTFS-Neuberechnung — harte Lehren aus urlaub.perfekt-ohne-en.de (2026-08-19)
|
||||
|
||||
Ergänzung zum main SKILL.md. Diese Notes stammen aus dem echten Großumbau der
|
||||
Fahrzeiten auf der Zugverbindungs-Webseite und sind die Dinge, die NICHT sofort
|
||||
ersichtlich sind. (Haupt-SKILL.md-Patch war durch eine Schreib-Sperre blockiert;
|
||||
diese Erkenntnisse gehören trotzdem zu diesem Umbrella.)
|
||||
|
||||
## Die 3 Teambefunde, die den Dijkstra erst korrekt machten
|
||||
|
||||
1. **Geo-Stop-Merging** — Ein Bahnhof hat MEHRERE aktive stop_ids in der st-Tabelle
|
||||
(Saarbrücken Hbf: 6 IDs = Plattform-/Gleis-Stops). `stops.txt` stop_id ist nicht
|
||||
eindeutig. Fix: Stops < ~350m Luftlinie zu einer Gruppe zusammenfassen; der Router
|
||||
expandiert von/zu allen Gruppen-IDs.
|
||||
2. **Umstiegsbuffer** — Ohne min ~4min Transfer-Puffer erlaubt Dijkstra physisch
|
||||
unmögliche Anschlüsse (Ankunft 10:05 → Abfahrt 10:04) → zu optimistische Zeiten.
|
||||
Buffer NUR beim Umstieg, nicht beim Start: `dep_s < t + (BUFFER if t>dep0 else 0)`.
|
||||
3. **Profil-Query (Min)** — Feste Abfahrtszeit (09:00) liefert systematisch zu
|
||||
langsame Werte, wenn die früheste Verbindung zufällig viele Umstiege hat.
|
||||
Abfahrten über den Tag scannen (z.B. stündlich 06-22) und MIN(Fahrzeit) nehmen.
|
||||
|
||||
## Performance: EIN Dijkstra je Start statt je Verbindung
|
||||
|
||||
- Naiv: 12.201 Verbindungen × ~17 Abfahrtsstichproben = ~207k Dijkstra-Läufe → ~18h.
|
||||
- Korrekt: EIN Dijkstra je eindeutigen Start (191 Starts), der ALLE Ziele gleichzeitig
|
||||
erreicht (`spread(start_ids)` → dict stop→ankunft). Danach Werte ablesen → ~10 Min.
|
||||
- Commit NUR am Ende, und nur markierte Ziele (0.0h / mehrdeutig) neu verteilen.
|
||||
|
||||
## Start ohne Bahnhof (z.B. Radevormwald)
|
||||
|
||||
Städte ohne eigene Bahnhofs-ID matchen in stops nicht. Löse über den nächstgelegenen
|
||||
Bahnhof (Radevormwald → Remscheid-Lennep Bf) und addiere die Bus-Anreise (~20min):
|
||||
`Gesamtzeit = BUS_MIN + Dijkstra(Bahnhof → Ziel)`.
|
||||
|
||||
## Ziel-Eindeutigkeit: Berlin-Falle
|
||||
|
||||
Mehrdeutige Zielnamen (z.B. "Berlin") matchen falsche/lokalnahe Stops → ungenaue
|
||||
oder sogar 0.0h-Zeiten. Abbilden auf eindeutiges "… Hbf":
|
||||
`UPDATE verkehr SET nach='Berlin Hbf' WHERE nach='Berlin';`
|
||||
0.0h-Zeilen sind als Fehler zu behandeln und neu zu berechnen, nicht zu akzeptieren.
|
||||
Reference in New Issue
Block a user