zielgraph
Modul Zielgraph
Ein Zielgraph stellt die Fahrpläne von Zügen in einem NetworkX-Graph dar. Die Knoten des Graphen sind die Fahrziele (Fahrplaneinträge) aller Züge. Zu einem Zug gehörende Knoten werden in der Fahrplanreihenfolge durch Kanten verbunden. Ausserdem können durch Flags entstehende Züge mit dem Stammzug verbunden werden.
Classes:
-
ZielGraph–Fahrplan in Graphform.
-
ZielGraphEdge–Attribute einer ZielGraph-Kante
-
ZielGraphNode–Attribute eines ZielGraph-Knotens.
-
ZielGraphUngerichtet–Ungerichtete Variante von ZugGraph
-
ZielLabelType–Ziellabelklasse
ZielGraph
flowchart TD
stskit.model.zielgraph.ZielGraph[ZielGraph]
click stskit.model.zielgraph.ZielGraph href "" "stskit.model.zielgraph.ZielGraph"
Fahrplan in Graphform.
Der Zielgraph enthält den Fahrplan aller Züge. Die Punkte sind gemäss Anordnung im Fahrplan sowie planmässigen (Ersatz, Kuppeln, Flügeln) und dispositiven Abhängigkeiten (Kreuzung, Ueberholen, Abwarten, Betriebshalt, etc.) verbunden.
Der Zielgraph ist gerichtet.
Methods:
-
einfahrtszeiten_korrigieren–Ein- und Ausfahrtszeiten korrigieren.
-
next_node–Nächster Zielknoten eines Zuges
-
prev_node–Vorheriger Zielknoten eines Zuges
-
verspaetung_von_zug–Verspätungsfelder von ZugDetails übernehmen.
-
ziel_status_von_zug–Zielstatusfelder aus ZugDetails übernehmen.
-
zug_details_importieren–Ziel- und Zuggraphen nach Fahrplan eines Zuges aktualisieren.
-
zugpfad–Generator für die Knoten eines Zuges
Source code in stskit/model/zielgraph.py
einfahrtszeiten_korrigieren
einfahrtszeiten_korrigieren(lg: LinienGraph, bg: BahnhofGraph, metrik: str = 'fahrzeit_schnitt') -> None
Ein- und Ausfahrtszeiten korrigieren.
Korrigiert die Ein- und Ausfahrzeiten aller im Zielgraph verzeichneten Züge. Da der Simulator keine Ein- und Ausfahrtszeiten angibt, werden die Ein- und Ausfahrzeiten anhand der Fahrzeitangaben im Liniengraph korrigiert.
Die Fahrzeit wird für jede Ein- und Ausfahrt nach dem ersten vorandenen Wert in folgender Liste bestimmt:
fahrzeit_manuell-Attribut im Liniengraph- Von metrik benanntes Attribut im Liniengraph.
- Defaultwert 1 Minute, auch bei Lookup-Fehlern.
Da die Fahrzeiten im Liniengraph zur Laufzeit eines Spiels gemessen werden, können sie am Anfang fehlen.
Parameters:
-
(lgLinienGraph) –Der Liniengraph enthält die Fahrzeiten zwischen den Bahnhofteilen. Wird die Verbindung nicht gefunden, wird die Fahrzeit auf 1 Minute geschätzt.
-
(bgBahnhofGraph) –Der Bahnhofgraph enthält die Zuordnung von Gleisen zu Bahnhofteilen.
-
(metrikstr, default:'fahrzeit_schnitt') –Name des LinienGraph-Attributs, das die Fahrzeit angibt (normalerweise eines von:
fahrzeit_schnitt,fahrzeit_min,fahrzeit_max).
Source code in stskit/model/zielgraph.py
next_node
next_node(node: ZielLabelType, ersatz_erlaubt: bool = False) -> ZielLabelType
Nächster Zielknoten eines Zuges
Parameters:
-
(nodeZielLabelType) –Label des Ursprungknotens
-
(ersatz_erlaubtbool, default:False) –Neuen Zug nach Ersatz- oder Kuppelflags verfolgen.
Raises:
-
ValueError–Keinen passenden Knoten gefunden.
Source code in stskit/model/zielgraph.py
prev_node
prev_node(node: ZielLabelType, ersatz_erlaubt: bool = False) -> ZielLabelType
Vorheriger Zielknoten eines Zuges
Parameters:
-
(nodeZielLabelType) –Label des Ursprungknotens
-
(ersatz_erlaubtbool, default:False) –Stammzug vor Ersatz- oder Flügelflags verfolgen.
Raises:
-
ValueError–Keinen passenden Knoten gefunden.
Source code in stskit/model/zielgraph.py
verspaetung_von_zug
verspaetung_von_zug(zug: ZugDetails)
Verspätungsfelder von ZugDetails übernehmen.
Die Verspätungsfelder werden anhand der ZugDetails aktualisiert. Die Statusfelder müssen bereits korrekt gesetzt sein. Es werden nur die noch nicht abgefahrenen Ziele aktualisiert.
Source code in stskit/model/zielgraph.py
ziel_status_von_zug
ziel_status_von_zug(zug: ZugDetails)
Zielstatusfelder aus ZugDetails übernehmen.
Die Zielstatusfelder werden anhand der ZugDetails aktualisiert. Von ZugDetails benötigt werden: fahrplan[].fid, ziel_index, amgleis
Abgefahrene Zielknoten werden mit 'ab' markiert, die noch nicht abgefahrenen mit ''. Wenn der Zug an einem Ziel steht, ist der Status 'an'.
Source code in stskit/model/zielgraph.py
zug_details_importieren
zug_details_importieren(zug: ZugDetails, einfahrt: Knoten | None = None, ausfahrt: Knoten | None = None, params: PlanungParams | None = None) -> set[tuple[str, int, int]]
Ziel- und Zuggraphen nach Fahrplan eines Zuges aktualisieren.
Die Graphen werden in der Dokumentation der Klasse beschrieben.
Diese Methode fügt neue Knoten und ihre Kanten zum Graphen hinzu oder aktualisiert bestehende. Es werden keine Knoten und Kanten gelöscht.
Notes
- Der vom Simulator gemeldete Fahrplan enthält nur anzufahrende Ziele. Im Zielgraphen werden die abgefahrenen Ziele jedoch beibehalten.
- Die Methode fügt auch Knoten und Kanten für Einfahrten und Ausfahrten ein, wenn diese in den von- und nach-Feldern angegeben sind. Einfahrten werden nur eingefügt, wenn der Zug noch nicht eingefahren ist.
Parameters:
-
(zugZugDetails) –ZugDetails-Objekt vom Simulator.
-
(einfahrtKnoten | None, default:None) –Einfahrtsknoten, falls im von-Feld angegeben.
-
(ausfahrtKnoten | None, default:None) –Ausfahrtssknoten, falls im nach-Feld angegeben.
-
(paramsPlanungParams | None, default:None) –Parametrisierung der Mindestaufenthaltsdauer nach Zieltyp. Wenn None, werden die Defaultwerte der PlanungParams-Klasse verwendet.
Returns:
-
set[tuple[str, int, int]]–Abgehende Verknüpfungen des Zuges mit anderen Zügen.
-
set[tuple[str, int, int]]–Tupel von Typ ('E', 'K', 'F'), zid des Stammzuges, zid des Folgezuges.
Source code in stskit/model/zielgraph.py
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 | |
zugpfad
zugpfad(zid: int) -> Generator[ZielLabelType, None, None]
Generator für die Knoten eines Zuges
Beginnend mit dem Startknoten liefert der Generator die Knoten-IDs eines Zuges in der Reihenfolge ihres Auftretens.
Source code in stskit/model/zielgraph.py
ZielGraphEdge
flowchart TD
stskit.model.zielgraph.ZielGraphEdge[ZielGraphEdge]
click stskit.model.zielgraph.ZielGraphEdge href "" "stskit.model.zielgraph.ZielGraphEdge"
Attribute einer ZielGraph-Kante
Attributes:
-
typ–Verbindungstyp:
Wert Bedeutung P planmässige Fahrt E Ersatzzug F Flügelung K Kupplung R vom Fdl angeordnete Rangierfahrt, z.B. bei Lokwechsel A vom Fdl angeordnete Abhängigkeit O Hilfskante für Sortierordnung -
v–Verspätung auf dieser Verbindung in Minuten. Wird in der Prognose verwendet, ist daher nicht persistent.
ZielGraphNode
flowchart TD
stskit.model.zielgraph.ZielGraphNode[ZielGraphNode]
click stskit.model.zielgraph.ZielGraphNode href "" "stskit.model.zielgraph.ZielGraphNode"
Attribute eines ZielGraph-Knotens.
Attributes:
-
obj–stsobj.FahrplanZeile-Objekt (fehlt bei Ein- und Ausfahrten).
-
fid–Fahrplanziel-ID bestehend aus Zug-ID, Ankunfts- oder Abfahrtszeit in Minuten, Plangleis. Siehe stsobj.FahrplanZeile.fid. Bei Ein- und Ausfahrten wird statt dem Gleiseintrag die Elementnummer (enr) eingesetzt, und die Zeitkomponente ist MIN_MINUTES (Einfahrt) oder MAX_MINUTES (Ausfahrt).
-
zid–Zug-ID
-
typ–Zielpunkttyp:
Wert Bedeutung H Planmässiger Halt D Durchfahrt E Einfahrt A Ausfahrt B Betriebshalt (vom Sim nicht verwendet) S Signalhalt (vom Sim nicht verwendet) -
plan–Gleis- oder Anschlussname nach Fahrplan.
-
gleis–Gleis- oder Anschlussname nach aktueller Disposition.
-
p_an–Planmässige Ankunftszeit in Minuten. Bei Ein- und Ausfahrten wird die Ankunfts- und Abfahrtszeit geschätzt.
-
p_ab–Planmässige Abfahrtszeit in Minuten. Bei Ein- und Ausfahrten wird die Ankunfts- und Abfahrtszeit geschätzt.
-
flags–Originalflags
-
lokwechsel–Lokwechselflag mit Nummern der Ein- und Ausfahrtsgleisen der Ersatzlok/Abstelllok.
-
lokumlauf–Lokumlaufflag.
-
mindestaufenthalt–Minimale Aufenthaltsdauer in Minuten. Schätzung, wie lange sich der Zug mindestens an diesem Ziel aufhält, auch wenn er laut Fahrplan früher abfahren müsste.
Die Mindestaufenthaltsdauer wird von der Simulatorschnittstelle nicht angegeben und muss von uns geschätzt werden, z.B. mittels konfigurierten Parametern durch mindestaufenthalt_setzen.
-
status–Status des Ziels. Bestimmt, ob die Ankunfts- und/oder Abfahrtszeit definitiv ist.
Wert Bedeutung '' Ziel noch nicht erreicht an am Ziel angekommen ab vom Ziel abgefahren -
v_an–Ankunftsverspätung in Minuten
-
v_ab–Abfahrtsverspätung in Minuten
Methods:
-
from_fahrplanzeile–Daten aus Fahrplanzeile übernehmen.
-
mindestaufenthalt_setzen–Mindestaufenthalt-Property auf Vorgabewert setzen.
e_ab
property
Erwartete Abfahrtszeit in Minuten
AttributeError, wenn keine Abfahrtszeit gespeichert ist. Wenn keine Verspätung gespeichert ist, wird 0 angenommen.
e_an
property
Erwartete Ankunftszeit in Minuten
AttributeError, wenn keine Ankunftszeit gespeichert ist. Wenn keine Verspätung gespeichert ist, wird 0 angenommen.
enr
property
enr: int | None
Elementnummer des Anschlussgleises bei Ein- oder Ausfahrt.
None, wenn das Ziel ein normales Gleis ist.
from_fahrplanzeile
classmethod
from_fahrplanzeile(fahrplanzeile: FahrplanZeile) -> ZielGraphNode
Daten aus Fahrplanzeile übernehmen.
Die folgenden Properties werden direkt übernommen: obj, fid, zid, plan, gleis, typ, flags, p_an, p_ab. mindestaufenthalt wird auf 0 gesetzt. Alle anderen müssen separat gesetzt werden.
Parameters:
-
(fahrplanzeileFahrplanZeile) –Fahrplanzeile-Objekt von der Simulatorschnittstelle.
Source code in stskit/model/zielgraph.py
mindestaufenthalt_setzen
mindestaufenthalt_setzen(params: PlanungParams | None = None)
Mindestaufenthalt-Property auf Vorgabewert setzen.
Der Mindestaufenthalt wird gemäss übergebenen Parametern aus dem Zieltyp und den Flags berechnet. Er setzt sich zusammen aus einer Basiskomponente nach Planhalt, Ersatz, Kupplung oder Flügelung, und einer additiven Komponente bei Richtungswechsel, Lokwechsel oder Lokumlauf.
Parameters:
-
(paramsPlanungParams | None, default:None) –Aufenthaltsparameter aus Konfiguration. Wenn das Argument fehlt, werden die Defaultwerte der PlanungParams-Klasse verwendet.
Source code in stskit/model/zielgraph.py
ZielGraphUngerichtet
flowchart TD
stskit.model.zielgraph.ZielGraphUngerichtet[ZielGraphUngerichtet]
click stskit.model.zielgraph.ZielGraphUngerichtet href "" "stskit.model.zielgraph.ZielGraphUngerichtet"
Ungerichtete Variante von ZugGraph
Fuer gewisse Algorithmen kann es noetig sein, den Zielgraphen voruebergehend in einen ungerichteten umzuwandeln.
ZielLabelType
flowchart TD
stskit.model.zielgraph.ZielLabelType[ZielLabelType]
click stskit.model.zielgraph.ZielLabelType href "" "stskit.model.zielgraph.ZielLabelType"
Ziellabelklasse
Das Ziellabel ist ähnlich wie die FahrplanZeileID aufgebaut. Für Ein- und Ausfahrten wird jedoch die Elementnummer statt des Anschlussnamens verwendet, weil Anschlussnamen mit Gleisnamen kollidieren können oder nicht explizit definiert sind.
Methods:
-
from_fahrplanzeile–Konstruktor aus einer Fahrplanzeilen-ID.
from_fahrplanzeile
classmethod
from_fahrplanzeile(fid: FahrplanZeileID) -> ZielLabelType
Konstruktor aus einer Fahrplanzeilen-ID.
Der Ortsteil einer Fahrplanzeilen-ID bezieht sich immer auf ein Bahnhofsgleis (kein Anschlussgleis).