Jump to content

Variablen mit Zufallszahlen


Zugrol

Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 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...