Deutsches Simutransforum

Normale Version: Wegfindung Eisenbahn nicht 100% korrekt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Simutrans-Version: 0.84.21.2

PAK-Set (+zusätzliche PAK-Dateien): 128+Updates

Betriebssystem: Windoof 2000 prof.


Fehler (möglichst genaue Beschreibung):
Der letzte Fehler für heute, dann hab ich alles meiner gestrigen Bugshootersession berichtet.

Folgende Situation: zwei Bahnhöfe hintereinander, mit einem Gleis verbunden. Damit ein zweiter Zug den ersten Bahnhof umgehen kann, habe ich ein Umgehungsgleis gebaut, natürlich mit Signalen.
Im ersten Bahnhof ist ein Zug, der beim Signal stehen bleibt, um eigentlich den zweiten Zug über das Ausweichgleis vorbeizulassen. Nur Zug Nr. 2 mit Destination Bahnhof Nr. 2 muss doch tatsächlich probieren, via Bahnhof Nr. 1 zu fahren, anstatt das Ausweichgleich zu nehmen und obwohl das Signal auf rot ist. Koliision unvermeidbar.

Der Screenshot sollte die Situation verdeutlichen. Anstatt das der Zug (von links kommend) die Ausweichroute nimmt (1), nimmt er Route (2), wo bereits der Zug aus Bhf.nr. 1 wartet,um weiterfahren zu können.
Die Vergrösserung zweigt, dass das Signal der Ausweichstrecke auf grün ist. Schwerer zu erkennen ist, dass das Signal zu der Route, wo der Zug tatsächlich einbiegt, eigentlich auf rot steht. Er macht es trotzdem.

Generell finde ich manche Wegfindung, besonders bei den Zügen, als bedenklich und sollte überarbeitet werden (je nach Aufwand natürlich).
Manchmal findet ein Zug trotz der Tatsache, dass nur ein einziges Gleis vorhanden ist, die Route nicht, dann muss man ein Signal stellen, damit er losfährt, obwohl es aus logischer Sicht unnötig ist, dort eines Aufzustellen.
Das macht es bei Verwendung mehrerer Züge auf grösstenteils einem Gleis schwer, einen Ablauf zu planen, da man nie weiss, wie der Zug darauf reagieren wird. Das Zusammenspiel Signal-Zug passt irgendwie nicht.

Verhalten (Absturz, Einfrieren, ...):
Man kann nur versuchen, einen der Züge (am besten den, der falsch einbiegt) ins Depot zu schicken, damit wenigstens der andere Zug weiterfährt.
Natürlich will der Zug durch den Bahnhof, er nimmt ja den kürzesten Weg. Wenn du sowas machst, musst du immer den Bahnhof auf das längere Stück bauen und die Vorbeifahrstrecke in diesem Fall vorne machen. Die Wegfindung ist sehr gut, dafür das sie nicht viel rechnen darf. Ansonsten kannst du es mit deiner Konstellation mit Einbahnstrassen probieren, d.h. der Zug der in den Bahnhof will muss auch erstmal aussenrum fahren und von der anderen Seite in den Bahnhof, dann klappt es auch.
Hab ich auch probiert, mit Einwegsignalen.

In meinem Beispiel ist Route 2 eine durchgehende Trasse bis zum zweiten Bahnhof. Aber selbst mit Signalen umstellen funktionierte das leider nicht so recht.
Deswegen sind mir die Eisenbahnstrecken bis heute nicht ganz geheuer.
Hoi!

Also mit Einbahnsignalen gehts auf jedenfall. Man muss die nur richtig einstellen. Kuck doch nochmal, ob die auch in die richtige Richtung Einbahn sind.

Ciao Ches
Da hab ich mir schon einige Male den Kopf zerborchen, welcher Logik der Zug folgt.
Eher der grünen Welle (=erlaubt) oder der roten(=verboten)?

In diesem Fall ist mir zwar schon klar, dass er der kürzesten Strecke folgen soll, aber wenn ich im schon eine Ausweichroute anbiete und der linke Zug im ersten Bahnhof (den man tw. noch sieht) nicht mal anhalten soll, sondern nach Bahnhof Zwei (der, von dieser Karte ausgehend, viel weiter entfernt leigt als Bhf. Eins und daher nicht am Screenshot ist) soll, dann sollte er diese Ausweichstrecke auch benutzen. Ist meiner Ansicht nach eigentlich nur eine Logikkorrektur.

Ich würde es so bezeichnen:
Kürzeste Strecke = true
If ( kürzeste Strecke = true and Signal = red) ; then
kürzeste Strecke = false && start_crying()
If ( Ausweichroute = available and Signal_there = green ); then
use Ausweichroute && stop_crying()
else
cry_for_help()
endif
endif

Big Grin Big Grin Big Grin

Ich habe schon mehrere Male versucht, einen zug mittels Einwegsignalgebung z.B. um einen Bahnhof herumzulotsen, was dieser beharrlich ignorierte - tja, und als er umdrehte, stand da ein anderer Zug, der in den gleichen Bahnhof einfahren wollte, aber durch das Stop-Signal angehalten war -> Kollision/Pattsituation

Hajo

Zitat:Original von Benqo
Da hab ich mir schon einige Male den Kopf zerborchen, welcher Logik der Zug folgt.

Kürzeste Strecke falls der Code noch so ist wie ich ihn programmiert habe.

Zitat:Eher der grünen Welle (=erlaubt) oder der roten(=verboten)?

Hat keine relevanz für die Wegsuche.

Zitat:
Code:
If ( Ausweichroute = available and Signal_there = green ); then
        use Ausweichroute && stop_crying()

Im Prinzip funktioniert das. In Simutrans ist "if (ausweichroute == available && signal_there == green)" relativ schwierig zu berechnen (ausserdem auch nicht schnell, es würde bis zu einigen Sekunden dauern, je nach Streckennetz).
Kollisionen kann es nur geben, wenn Du irgendwo ein Zweirichtungssignal hast, auf das von beiden Seiten Züge zufahren. Das mußt Du verhindern, indem Du Ausweichen einlegst - wie im echten Leben auch.
Willst Du einen Zug um einen Bahnhof herumlotsen, muß die Strecke für ihn wirklich kürzer sein (oder Du mußt mit Wegpunkten arbeiten).

Hajo

Zitat:Original von Benqo

Ich habe schon mehrere Male versucht, einen zug mittels Einwegsignalgebung z.B. um einen Bahnhof herumzulotsen, was dieser beharrlich ignorierte - tja, und als er umdrehte, stand da ein anderer Zug, der in den gleichen Bahnhof einfahren wollte, aber durch das Stop-Signal angehalten war -> Kollision/Pattsituation

Schau mal hier:
http://www.hajo.simutrans.com/pmwiki/pmw...SimuEn/FAQ

Dort gibt es einen Lösungsvorschlag, ganz ohne Signale. Er nutzt die "immer kürzeste Strecke" Eigenschaft der Wegsuche.
@Hajo: Wie nebenan gesagt, ich glaube nicht, daß sich da was wesenltiches geändert hat. Hab mir prissis Änderungen zwar noch nicht durchgelesen, aber ich hab nicts geändertes bemerkt bisher.

Im Endeffekt landen wir aber schon wieder bei dem leidigen "leere Strecke selbst suchen"-Thema, fürchte ich...

@Benqo: Manche Sachen wären mit einigem Programmieraufwand möglich, aber würden zu einem riesigen Rechenaufwand führen. Zu solchen Sachen gibt es hier einige Threads, wie z.B. der automatischen Suchen nach freien Gleisen.
Mit Einbahnsignalen kann man dieses Problem lösen. Die Einbahnsignale finde ich auch super an Simutrans. Damit kann man bei jeder Strecke bestimmen, in welcher Richtung der Zug fahren soll. Wenn man Probleme hat, dass der Zug nicht fährt, hat man meisten das Signal falsch gesetzt.
@ Benqo: Setze die Signale so, das auf der Route 2 die Züge nur nach links fahren können und auf der Route 1 nur nach rechts
Seiten: 1 2