Jump to content

Variablen mit Zufallszahlen


Zugrol
 Share

Recommended Posts

Hallo MBS-Gemeinde,
ich habe folgendes Problem - ich möchte für die Zug bzw. Lkw-Beladung und -Entladung meine Ladegüter nach dem Zufallsprinzip verladen. Ist es möglich mit der Funktion $_random1-4  (ergibt ja nur die Zahlen von 1-4) und z.b Ladefläche oder Ladung + Zufallszahl  eine Variablen-Kombination zu machen oder hat jemand eine Lösung für mein "Problem".


1 Kran mit 6 Abstellplätzen
Zug hat 4 Waggon jeweils mit 1 Ladefläche
LKW mit Anhänger jeweils mit 1 Ladefläche
6 Ladegüter sollen nach dem Zufall auf der Schiene oder der Strasse bewegt werden


mit der Bitte um Hilfe
Zugrol

Link to comment
Share on other sites

Hallo,

Danke für die Info - aber dieser Anlage blick ich nicht so ganz durch.

Werde meine Anlage nach meinen momentanen Möglichkeiten zusammenbauen. Vielleicht wird es in näherer Zukunft eine möglichkeit für zusammengesetzte Variablen geben

schöne Grüße

Zugrol

Link to comment
Share on other sites

Hallo Zugrol,

_Random generiert Zahlen im Bereich (einschliesslich) der beiden Zahlen, die angegeben sind (ob 1000-1100 oder 5051-5099 ist egal).

Die Namen der Ladeflächen sind deshalb in einem Zahlenraum angesiedelt- so kann man bei Bodenabstellflächen einfach eine per Zufall auswählen.
Bei LKWs wird der Name in einer Objektvariable gespeichert ( zb LKW4.name ) , so das bei "Zug betritt ein Gleis" der Name der Abstellfläche abgefragt werden kann.

Bei Wagons wird es komplizierter- da der Wagonname nicht direkt abgefragt werden kann muss für jeden Wagon eine Definition in der EV stehen; ich hab das so gelöst: Eine Variable (zug_einlesen) wird 0-gesetzt und dann hochgezählt, bei jeden schritt wird geprüft ob der Wagen auf dem Gleis steht, wenn ja, wird die ladefläche in ein "temporäres" Ziel gespeichert, wenn nicht, wird das "temporäre" Ziel als frei gekennzeichnet ( bei mir mit "nv" für nicht vorhanden ) :


        Gruppe:    Zug
          Gruppe:    einlesen
            Ereignis:  zug einlesen / 0-stellen  // schritt 1
              Auslöser:  Variable wird gesetzt                        Name='zug_einlesen'  Wert='1'  
              Aktion:    Variable setzen                              Name='krangleis1.anzahl'  Wert='0'  
              Aktion:    Variable setzen                              Name='krangleis1.ort'  Wert='0'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='2'  
 
            Ereignis:  zug einlesen /wagen 4001  // schritt 2
              Auslöser:  Variable wird gesetzt                        Name='zug_einlesen'  Wert='2'  
              Bedingung: Lok/Wagen steht auf einem Gleis              Lok/Wagen='4001'  Gleis='krangleis1'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle1'  Wert='zug1a'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle2'  Wert='zug1b'  
              Aktion:    Variable setzen                              Name='krangleis1.anzahl'  Wert='+2'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='3'  
                Sonst:   (Bedingung nicht erfüllt)
              Aktion:    Variable setzen                              Name='kran_schiff.quelle1'  Wert='nv'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle2'  Wert='nv'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='3'  
 
            Ereignis:  zug einlesen / wagen 4002  // schritt 3
              Auslöser:  Variable wird gesetzt                        Name='zug_einlesen'  Wert='3'  
              Bedingung: Lok/Wagen steht auf einem Gleis              Lok/Wagen='4002'  Gleis='krangleis1'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle3'  Wert='zug2a'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle4'  Wert='zug2b'  
              Aktion:    Variable setzen                              Name='krangleis1.anzahl'  Wert='+2'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='4'  
                Sonst:   (Bedingung nicht erfüllt)
              Aktion:    Variable setzen                              Name='kran_schiff.quelle3'  Wert='nv'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle4'  Wert='nv'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='4'  
 
            Ereignis:  zug einlesen / wagen 4003  // schritt 4
              Auslöser:  Variable wird gesetzt                        Name='zug_einlesen'  Wert='4'  
              Bedingung: Lok/Wagen steht auf einem Gleis              Lok/Wagen='4003'  Gleis='krangleis1'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle5'  Wert='zug3a'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle6'  Wert='zug3c'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle7'  Wert='zug3d'  
              Aktion:    Variable setzen                              Name='krangleis1.anzahl'  Wert='+3'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='5'  
                Sonst:   (Bedingung nicht erfüllt)
              Aktion:    Variable setzen                              Name='kran_schiff.quelle5'  Wert='nv'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle6'  Wert='nv'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle7'  Wert='nv'  
              Aktion:    Variable setzen                              Name='zug_einlesen'  Wert='5'  

usw...

Wenn der Kran dann einen Wagon Be/entladen will, wird in der EV geprüft, ob das temporäre ziel vorhanden ist ( also nicht "nv" enthält) und dann in das "reguläre" Ziel übernommen:

            Ereignis:  quelle suchen4 // schritt 31
              Auslöser:  Variable wird gesetzt                        Name='kran_schiff.schritt'  Wert='31'  
              Bedingung: Variable besitzt den Wert                    Name='(kran_schiff.quelle4).1'  Wert='leer'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='kran_schiff.quelle4'  Wert='nv'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='krangleis1.ort'  Wert='4'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle'  Wert='$kran_schiff.quelle4'  
 
            Ereignis:  quelle suchen3 // schritt 31
              Auslöser:  Variable wird gesetzt                        Name='kran_schiff.schritt'  Wert='31'  
              Bedingung: Variable besitzt den Wert                    Name='(kran_schiff.quelle3).1'  Wert='leer'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='kran_schiff.quelle3'  Wert='nv'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='krangleis1.ort'  Wert='3'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle'  Wert='$kran_schiff.quelle3'  
 
            Ereignis:  quelle suchen2 // schritt 31
              Auslöser:  Variable wird gesetzt                        Name='kran_schiff.schritt'  Wert='31'  
              Bedingung: Variable besitzt den Wert                    Name='(kran_schiff.quelle2).1'  Wert='leer'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='kran_schiff.quelle2'  Wert='nv'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='krangleis1.ort'  Wert='2'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle'  Wert='$kran_schiff.quelle2'  
 
            Ereignis:  quelle suchen1 // schritt 31
              Auslöser:  Variable wird gesetzt                        Name='kran_schiff.schritt'  Wert='31'  
              Bedingung: Variable besitzt den Wert                    Name='(kran_schiff.quelle1).1'  Wert='leer'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='kran_schiff.quelle1'  Wert='nv'  Negieren='1'  
                 und:    Variable besitzt den Wert                    Name='krangleis1.ort'  Wert='1'  Negieren='0'  
              Aktion:    Variable setzen                              Name='kran_schiff.quelle'  Wert='$kran_schiff.quelle1'  

 ( BEISPIEL: Hier wird geprüft, ob die Abstellfläche sich über dem Gleis, also in Kranreichweite, befindet- also nicht "nv" enthält und ob sich ein Ladegut darauf befindet, also nicht "leer" ist, am ende steht dann der Name des Ladegutes in der Variable "kran_schiff.quelle"; jetzt kann der Kran das Ladegut aufnehmen.)

Das ganze ist ziemlich "um die Ecke" gedacht und benötigt für jede "temporäre" quelle einen eintrag in der EV-

So, ich hoffe, ich hab dich nicht zu sehr abgeschreckt :)

Gruß ~ Lutz
 

 

Link to comment
Share on other sites

Hallo FriLu,

Danke für die ausführliche Erklärung deiner Anlage - ich werde mich aber erst schön langsam hinein versetzen können und hoffentlich den einen oder anderen Ansatz für meine Anlage verwenden können.

schöne Grüße und Danke nochmals

Zugrol

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...