--track: Bahnzusammenhang aus der TrackIds-Spalte statt aus Nachbarn

build_track_graph baut die Fein-Adjazenz jetzt direkt aus der geordneten
TrackIds-Spalte je Container (Element.track_ids): Kreisel als zirkulaerer
Umlauf in Drehrichtung (Export-Sortierung), Strecke/Gefaelle als lineare
Kette AS -> SEP.. -> ES. Gemeinsame AS/ES-/Weiche-Knoten verketten die
Container automatisch - die Rueckmeldungs-/Rollen-Heuristik aus der
Nachbarn-Spalte (_transfer_kreisel_lane, _wire_weiche,
_orient_separator_links) entfaellt komplett.

_attach_track_symbols misst offene Bahnenden jetzt am feinen Graphen statt
am groben; das behebt die vereinzelten Falsch-Eingaenge an voll verketteten
Bahnen (HundM05: Bahn 0001-0004, 0006-R).

Doku in doc/Python_Scripts.md und doc/track.md nachgezogen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-17 09:59:09 +02:00
co-authored by Claude Opus 4.8
parent db4e975adf
commit 516f30278b
3 changed files with 228 additions and 387 deletions
+10 -2
View File
@@ -46,7 +46,13 @@ Kreisel 0001 trackIds = [0040(Sep@0001-R), 0079(Weiche), 0036(Sep@0014)]
4. **Systemgrenzen** — BTMT Be-/Entladung werden über den bereits im groben
Graphen aufgelösten Anschluss angebunden (`_attach_track_stations`); offene
Bahnenden ohne Station bekommen ein generisches Symbol Eingang/Ausgang
(`_attach_track_symbols`).
(`_attach_track_symbols`). Wichtig: die Offenheit wird am **feinen** Graphen
gemessen (ein reales Bahnelement ohne Vorgänger/Nachfolger in `track.edges`),
**nicht** am groben. Der grobe Graph kann eine Bahn als offenes Ende führen,
obwohl ihre AS/ES-Enden im Kreisel-Umlauf längst verkettet sind (die Richtung
blieb dort nur „unbestimmt") — würde man ihn als Maßstab nehmen, entstünden
vereinzelte Falsch-Eingänge an voll verketteten Bahnen (beobachtet an
`HundM05.csv`: Bahn 0001–0004, 0006-R).
## Warum das die `Nachbarn`-Heuristik ersetzt
@@ -76,4 +82,6 @@ komplett — mit ihr die zahlreichen zugehörigen Warnungen.
| grün (`"Station"`) | Anbindung BTMT Be-/Entladung |
| gepunktet (`"Symbol"`) | offenes Bahnende ohne BTMT-Station |
| gestrichelt gelb (`"unbestimmt"`) | Element nicht in einer `TrackIds`-Kette |
| Raute | Weiche | Ellipse | Ein-/Ausgang, BTMT | gestrichelter Rand | Bahn-Platzhalter |
| Raute (Knoten) | Weiche |
| Ellipse (Knoten) | Ein-/Ausgang, BTMT Be-/Entladung |
| gestrichelter Rand (Knoten) | Bahn-Platzhalter (Reihenfolge/Position offen) |