Jump to content

Zufällige Zugauswahl


bigrala

Empfohlene Beiträge

3 hours ago, Goetz said:

I explain in this video:..

I copied/pasted this video into Google Translate; it didn't help me much..! :D Never mind, I'll follow it through a bit closer another day. (y)

Ich habe dieses Video in Google Translate kopiert / eingefügt. es hat mir nicht viel geholfen ..! :D  Egal, ich werde es an einem anderen Tag etwas näher verfolgen. (y)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Stunden schrieb HaNNoveraNer:

Kannste ja mal analysieren, ob Du dahinterkommst, wie es funktioniert...

test.mbp 11 kB · 5 downloads

Na ja, Du gehst in der Wiederholung die 10 Taster der Reihe nach ab und gugst ob die Variable "Gleis besetzt" im jeweiligen Taster "False" (leer) ist.
Wenn ja, dann bekommt die Taste ein Unsichtbar.

Soweit so gut ..... aber deshalb werden die Signale an den leeren Gleisen trotzdem noch ausgewählt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi bigrala

Hier eine Version, wo die Signale nur in den besetzten Gleisen ausgewählt werden.

Leider habe ich in der EV keine Wiederholungsfunktion für den Fall: Wiederhole bis Variable den Wert "x" hat   gefunden.
@all Wie macht man das ohne Lua?
Eigentlich müßte der Zufallsgenerator so lange wiederholen, bis die Bedingung "Gleis besetzt" wahr ist.

Daher kann es passieren, daß manchmal gar kein Signal schaltet, wenn das Gleis besetzt ist, das der Zufallsgenerator gewählt hat.

Gruß
Thomas

 

test.mbp

 

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,
wenn ich eines nicht verstehe, dann die Tatsache, dass Leute eine Programmiersprache verteufeln, weil sie ihnen Angst macht, aber auf der anderen Seite in der grafischen EV immer mehr Elemente fordern, die letztlich dazu führen würden, dass es gar keinen Unterschied mehr zu der Programmiersprache gibt.
Wenn ich also fordere, dass man an gewissen Stellen Lua einsetzen soll und man schreit Nein Nein Nein, das wollen wir nicht,
dann warte ich nur auf den Moment, wo Neulinge reinkommen und fragen, was sie mit dieser grafischen EV sollen? Sie ist viel zu komplex, Nein Nein Nein, das wollen wir nicht. Und am Ende sind wir bei kutscher oder Maier, die nachfragen, ob ihnen mal einer die Steuerung machen kann.
Irgendwo muß es hier sowas wie eine rote Linie geben.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 53 Minuten schrieb Andy:

Und am Ende sind wir bei kutscher oder Maier, die nachfragen, ob ihnen mal einer die Steuerung machen kann.

Nachhilfeunterricht ist eine durchaus zu würdigende Form bei Schwächen in bestimmten Fächern, aber das dann damit letztendlich Abiturienten geschaffen werden, eher ausgeschlossen. 

Gruß

streit_ross

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb streit_ross:

aber das dann damit letztendlich Abiturienten geschaffen werden, eher ausgeschlossen. 

Da irrst du dich aber gewaltig.
Ich habe seinerzeit mehreren Personen durch Nachhilfeunterricht (in Mathe) zu einem exzellenten Abitur verholfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb HaNNoveraNer:

Wie macht man das ohne Lua?

Darauf habe ich auch noch keine Antwort.
Einer der Gründe, weshalb von mir bislang kein Vorschlag kam.

Aber für den Weg mit Lua kann ich eine Alternative anbieten:
Anstatt immer wieder sein Glück zu versuchen, bis man zufällig ein besetztes Gleis erwischt, überträgt man zuerst alle Signale, deren Gleise besetzt sind, in eine zweite, temporäre (= lokale) Tabelle. Dann kann man mit einem einzigen, zufälligen Griff in diese Tabelle zielsicher ein Signal rausfischen, das garantiert zu einem besetzten Gleis gehört.

 

Shantymans Beispielanlage modifiziert:   Signalschaltung per Zufall - Lua.mbp

In dieser Version findet eine echte "Gleis besetzt" Prüfung statt. Damit entfallen die An/Aus Knöpfe an jedem Gleis.
In jedem Signal ist die Adresse des zugehörigen Wartegleises in einer Variablen gespeichert.

Bearbeitet von Goetz
Beispielanlage hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, das wäre ein Lua Weg.
Aber dann bräuchte es hier EINE benutzerdefinierte Funktion, die man vor dem Zufallsgenerator aufruft.
Dann kann man den Rest wieder per grafischer EV machen.

Eine weitere Lösung wäre, in der Liste immer an einer anderen Position zu starten und dann das erste besetzte Gleis zu nehmen.
Dazu müßte die Wiederholung aber mit rollierendem Index arbeiten.

Noch eine Lösung wäre, einen Timer zu starten. Damit ginge es wieder komplett grafisch.
Dem Timer eine Zufallsvariable mitgeben und jedesmal wenn er abläuft die Variable als rollierenden Index nutzen, um das nächste Gleis zu checken.
Bis er ein Gleis findet und dann den Timer wieder abschalten.  Rollierend heißt, er fängt nach 10 bei 1 wieder an.

Gruß
Thomas

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @HaNNoveraNer,

die Lösung mit dem Timer würde ich nicht empfehlen, da es hier kein definiertes Ende gibt. Je nach Anzahl belegter Gleise kann es theoretisch unendlich lange dauern, bis zufällig ein belegtes Gleis gefunden wurde.

Du hast bereits selbst den "rollierenden Index" ins Spiel gebracht, damit kommt man auch ohne Lua zurecht:

Zufällige Auswahl.mbp

Dennoch halte ich das hier für ein klassisches Beispiel, wie man sich durch Vermeidung von Lua das Leben nur schwerer macht. Grafische EV bedeutet nicht immer leichter, sondern es bedeutet, dass man mit wenigen Mitteln komplexe Logiken abbilden muss.

Aber, dieses Beispiel zeigt auch, wo ich dem Nutzer unter die Arme greifen könnte. Wenn die Wiederholungen um eine Eigenschaft "Zufällig wiederholen" erweitert wird, könnte das Studio selber eine Liste zufällig zusammenwürfeln. Dann bräuchte es vom Nutzer nur noch die Prüfung auf belegte Gleise und ob ein Gleis bereits durch eine Wiederholung gefunden wurde.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Neo:

Aber, dieses Beispiel zeigt auch, wo ich dem Nutzer unter die Arme greifen könnte. Wenn die Wiederholungen um eine Eigenschaft "Zufällig wiederholen" erweitert wird, könnte das Studio selber eine Liste zufällig zusammenwürfeln. Dann bräuchte es vom Nutzer nur noch die Prüfung auf belegte Gleise und ob ein Gleis bereits durch eine Wiederholung gefunden wurde.

Viele Grüße,

Neo

Da sind wir dann schon fast beim Thema Fahrstraßen... :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Neo:

Hallo @HaNNoveraNer,

die Lösung mit dem Timer würde ich nicht empfehlen, da es hier kein definiertes Ende gibt. Je nach Anzahl belegter Gleise kann es theoretisch unendlich lange dauern, bis zufällig ein belegtes Gleis gefunden wurde.

Du hast bereits selbst den "rollierenden Index" ins Spiel gebracht.

Viele Grüße,

Neo

Da hast Du recht.
Jetzt hab ich mehr Zeit und die knackige Lösung mit dem Timer optimiert.
Jetzt wird reihum ab einem zufälligen Signal geprüft, ob ein Gleis besetzt ist und wenn kein Gleis besetzt ist, legt der Timer sich wieder schlafen. :-)

V6 Zug finden mit Timer.mbp

Bearbeitet von HaNNoveraNer
Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe jetzt mal versucht einen Schattenbahnhof zu erstellen, mit Gleisharfe, Durchfahrt-/Wendegleis und einen kleinen Abstell/Rangierbereich.

Hauptsächlich versuche ich den eigentlichen Schattenbahnhof zu automatisieren.

Bis jetzt läuft es schon recht brauchbar (zeitweise taucht mal ein Fehler auf)
- die Einfahrt mit Wahl eines freien Gleises
- die Ausfahrt mit zufälliger Rischtungsverteilung
- zufällige Signalschaltung für Zugstart

Mit Sicherheit gibt es Optimierungen und Funktionen die Ihr anders machen würdet um eine höhere Sicherheit zu erreichen.
Für Anregungen und Hilfen bis ich stets dankbar.

Der gedachte Ablauf habe ich mir so gedacht;
Die Verbindung eigentliche Anlage zum Schattenbahnhof hat jeweils auf der rechten und linken Seite ein ankommendes und ein abgehendes Gleis.
Ankommende Züge (z.B. vom linken Anschluß) können entweder in den Schattenbahnhof einfahren und parken (Gleis 01-15) oder über ein Durchfahrts/-Wendegleis (Gleis 0) einfach durchfahren über den rechten Anschluß zur Anlage oder über die Wendeschleife wieder über den linken Anschluß zur Anlage. Respektive umgekehrt - rechts ankommend.
Zusätzlich besteht die Möglichkeit zu einem Mini-Rangierteil zu fahren, wo Züge evtl umgruppiert werden können. (Ist aber bisher nur grob angedacht.)
Diese Strechen - Einfahrt Harfe, Durchfahrt, Wendeschleife, Abstellbereich - kann ich aktuell über vier Schalter unter dem GBS vorwählen.

Fährt ein Zug auf ein Harfengleis so setzt er beim Halten den zugeordneten GBS-Baustein auf "besetzt" (s.GBS ganz rechts). Den Signalzustand benutze ich statt Variabeln zur Steuerung der Einfahrt und der Weichenstellungen für die Harfe. Gesetzt wird das GBS Signal beim Betreten/Verlassen des Haltebereiches.

Die automatische Signalsteuerung per Zufall wird entwedewr manuell über den blauen Taster oder automatisch (Dauerbetrieb) über den Kippschalter ausgelöst.
(Zufallssteuerung aus Beitrag von NEO - Danke)
 

Zusätzlich habe ich ein paar einfache Streckenblocks eingebaut, um die zwei Einfahrten und zwei Ausfahrten zu einer Anlage zu simulieren und um mit mehrere Züge die Einfahrt in den Schattenbahnhor zu testen..

 

Fehler die mir aufgefallen sind und für die ich noch keine Lösungen gefunden habe;
- es kommt vor, wenn beide Einfahrsignale auf Grün stehen und zwei Züge leicht versetzt an den Signalen ankommen, dann rumpeln sie ineinander, weil das zweite Signal zuspät auf Rot schaltet.
- die zufällige Signalauswahl löst sehr viel öfters Gleise in der oberen Hälfte (7-15) aus.

Ich bin weiter am Gedanlken machen und optimieren. Mein Ziel ist es das Ganze stabil und autark zum Laufen zu bringen um den Schattenbahnhof als Modul ein jede Anlage einbauen zu können. Ich hoffe es irgendwann und irgendwie hinzukriegen.

Bin auf eure Komentare gespannt.

 

Gruß Ralf

 

Schattenbahnhof einseitig automatisch.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nachdem ein Zug über das Einfahrsignal1 oder 2 fährt, werden beide Signela (Einfahrt 1 und Einfahrt 2) auf Halt gesetzt.
Wenn der Zug auf seiner Halteposition ankommt, prüfe ich ob
- auf Einfahrt 1 ein Zug steht (Name im Singnal), dann wird er auf Fahrt gesetzt
- wenn Einfahrt 1 der Name im Signal leer ist, prüfe ich ob auf Eingang 2 ein Zug steht und gebe diesem die Fahrt frei.
- steht weder auf Einfahrt 1 noch aud Einfahrt 2 ein Zug, dann schalte ich beide Signale auf Fahrt, damit der erste der ankommt Einfahrt hat - er macht hinter sich dann beide Signale zu.

Der Gedanke dahinter ist, wie Du Gotz mal in einem Video erklärt hast, dass die Signale keine Straßenampel sind, sondern nur angeben ob der Weg dahinter frei ist.
Wenn keine Züge auf den Einfahrt 1 und 2 stehen und der letze durchgefahrene Zug seine Halteposition erreicht hat, dann ist ja der Abschnitt frei.

 

Bearbeitet von bigrala
Link zu diesem Kommentar
Auf anderen Seiten teilen

29 minutes ago, bigrala said:

...If there are no trains on entry 1 and 2 and the last train passed has reached its stopping position, then the section is free.

This first-approaching train should set the other track to 'Stop', maybe, and release it once passed..?

Dieser sich zuerst nähernde Zug sollte das andere Gleis vielleicht auf "Stop" setzen und es freigeben, sobald es passiert ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb bigrala:

steht weder auf Einfahrt 1 noch aud Einfahrt 2 ein Zug, dann schalte ich beide Signale auf Fahrt

und das darfst du bitte nicht tun.
In diesem Fall müssen beide Signale auf "Halt" bleiben, bis ein Zug den einen oder anderen Weg beansprucht. 

 

vor einer Stunde schrieb bigrala:

Der Gedanke dahinter ist, wie Du Gotz mal in einem Video erklärt hast, dass die Signale keine Straßenampel sind, sondern nur angeben ob der Weg dahinter frei ist.

Nicht nur frei von Hindernissen, sondern auch konfliktfrei und abgesichert (Flankenschutz!). Das bedeutet die Stellung "Fahrt".
Deine Probleme zeigen deutlich, warum bei der Bahn niemals zwei Signale auf Fahrt stehen, die denselben Streckenabschnitt decken.

In dem Video, auf das du dich beziehst, wollte ich lediglich zum Ausdruck bringen dass ein Zug nicht zwingend losfahren muss, nur weil ein Signal auf Fahrt schaltet. Das Abfahrsignal bekommt der Lokführer auf anderem Wege und es müssen weitere Bedingungen erfüllt sein, damit das Signal zur Abfahrt gegeben wird.

 

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 45 Minuten schrieb Dad3353:

This first-approaching train should set the other track to 'Stop',

no, Dad.
"Stop" must be the default condition and an approaching train may request one signal to change to "Clear". Not vice versa.

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...