Beschreibe zustandsbasiertes Verhalten
(S. 7)
(V6.1 - Motivation)
Systeme können durch ihren Zustand beschrieben werden
In vielen Fällen ist es notwendig das Verhalten von Agenten in Abhängigkeit eines oderer mehrerer Zustände zu modellieren
Beschreibe zustandsabhängiges Verhalten am Beispiel:
Kaffeetrinkers an einer Kaffeemaschine
(S. 4 - 6)
Um das Verhalten eines Kaffeetrinkers korrekt modellieren zu können, muss der Maschinenzustand bei Ankunft bekannt sein
Was getan werden muss um einen Kaffee zu bekommen, hängt davon ab, wie die Kaffeemaschine angetroffen wird
Der Zustand hat also direkten Einfluss auf das Verhalten
Die Reihenfolge Prozessschritte nach EIntreffen ist bekannt aber zustandsabhängig.
Mögliche Zustände
Maschine Bereit => Kaffee kann gezogen werden
Maschine Ausgeschaltet
Maschine Fehler => Bohnenbehälter füllen, Kaffeesatzbehälter leeren, Restwasserschale fehlt usw.
Wie kann der Übergang zwischen Zuständen grundsätzlich erfolgen?
Übergang zwischen Zuständen, wenn:
Bedingung erfüllt wurd
nach Ablauf einer bestimmten Zeit
durch Eingang einer Nachricht
durch Interaktion mit dem betrachteten Objekt
Wo werden StateCharts erstellt?
Direkt im zugehörigen Agenten und nicht in Main
Beschreibend en Zustand dieses Agenten
Was versteht man bei der Umsetzung von zustandsabhängigenverhalten in AnyLogic unter:
States / Zustände
(S. 9)
(V6.2 - Umsetzung von Statecharts in Anylogic)
Stellen den aktuellen Zustand des Agenten dar
Können verschachtelt sein
Lösen bei Ein- und Austritt Aktionen aus
Können nur betreten und verlassen werden => durch Transitions
Wie kann ein Zustand / State ausgeführt sein?
States => Stellen den aktuellen Zustand des Agenten dar und Lösen bei Ein- und Austritt Aktionen aus
Ein Zustand kann
einfach sein
Verschaltet => Zustand ist aus anderen Zuständen zusammengesetz / enthält andere Zustände => Composite States
Transitions
Ermöglichen den Übergang von einem State in einen anderen
Können ausgelöst werden durch:
Ablauf einer Zeit
Bedingung
Wahrscheinlichkeitsverteilung
Nachrichteneingang
Agenteneingang
Nenne die Transition Types - Wie können Transitions (Übergang von einem State in einen anderen) in AnyLogic ausgelöst werden?
Ablauf einer Zeit / Timeout
Was versteht man unter der folgenden Transition Typ:
(S. 10, 11)
Agent verlässt Status nach bestimmter Zeit
Deterministischer Prozess => Status ändert sich nach Zeitablauf
Was versteht man unter einem Deterministsichen Prozess in Bezug auf StateCharts?
Status ändert sich nach definierten Zeitablauf (nicht stochastsich)
Statuswechsel bei Nachrichteneingang
Über => agent.send( message, recipient)
Nachricht kann von beliebigem Datentyp sein und auch ausgewertet werden
Wie kann eine Nachricht versendet werden?
agent.send( message, recipient)
Statuswechsel bei erfüllter Bedingung
Bedingung wird bei Eintritt überprüft => Transition löst aus wenn Prüfung „ true “ ergibt
Erneute Prüfung durch => agent.onChange()
Wie kann eine erneute Überprüfung einer Bedinung erfolgen
agent.onChange()
Statuswechsel bei Agentenankunft
Ankunft an Punkt im 2D Raum
Nicht betrachtet im Rahmen von AMFS
Warum können Prozesse zustandsabhängig modelliert werden
(S. 12)
Zustandsänderungen können Aktionen auslösen
Entry Action des States oder Action der Transition
bspw. => Funktionsaufrufe, Werteänderungen etc.
Folge => Prozesse können zustandsabhängig modelliert werden
Was versthet man unter Composite States
(S. 13)
Composite State => Zustand ist aus anderen Zuständen zusammengesetz / enthält andere Zustände
Ermöglicht Zustandswechsel über mehrere SimpleStates hinweg
Z.B. => „normaler“ Prozess vs. Ausnahme/Fehlerbehandlung
Beschreibe den Entry Point in einem StateChart
(S. 14)
Eingangspunkt ins Statechart bei Erzeugung des Agenten
Genau einmal pro Chart vorhanden
Name definiert auch Namen des Statecharts
Bei mehreren Charts in einem Agenten wird das Statechart hierüber angesprochen
Beschreibe den Final State in einem StateChart
Endpunkt, der nicht mehr verlassen werden kann
Somit Ausstiegspunkt aus zustandsbasiertem Verhalten
Über „Action“ Eingang in anderes Statechart möglich
Was ist der Unterschied zwischen einem Initial State Pointer und einem StateCHart Entry Point?
(S. 15)
ist in einem composite State kein simpleState mit der Außenwelt verknüpft, wird (exakt) ein „Initial state Pointer“ benötigt
Wird der composite State erreicht springt AnyLogic in den SimpleState , auf den der Pointer zeigt
Beschreibe den Branches in einem StateChart
(S. 16)
Verzweigungen / Weggabelung => welcher Weg genommen wird hängt von Bedingung ab
In Abbildung => Alle Paletten entladen?
Wenn alle geprüften Bedingungen “ false “ ergeben, wird die gestrichelte Default Transition ausgeführt
Konstruktion:
Branch Element platzieren
Default verbinden
Conditions verbinden
Wie kann über den Zustand in einem StateChart folgende Aktion ausgeführt werden:
Auswählen aller Pakete, die breit für den Versand sind
(S. 17)
Über Filter-Funktion!
Listen über Filter prüfen und gewünschtes Element ansprechen
Zustände können hierbei expliziet abgefragt werden
filter(allParcels , p --> p.inState(packed));
allParcels = Collection
Gibt alle Pakte zurück die im Status “packed” sind
Können in eine entsprechende Liste geschrieben werden
Ein freies Fahrzeug finden
findFirst(trucks , t --> t.inState (Empty));
trucks = collection
Gibt den ersten Leern Truck der Collection Trucks zurück
Kann entsprechend als Agent Truck angelegt werden
Überprüfen, ob die Kaffeemaschine im Fehlerzustand ist
if(coffeeMachine.statechart.getState.equals(coffeeMachine.statechart.Error)) {….}
Aufrufen des Zustands => coffeeMachine.statechart.getState
Vergleichen des Zustands => equals
Aufrufen des Zustands “Fehler” => coffeeMachine.statechart.Error
Wie kann zustandsabhängiges Verhalten in AnyLogic umgesetzt werden?
(S. 19)
Gleiche Nachricht generiert statusabhängig unterschiedliches Verhalten
Anfragen eines neuen Auftrags, sobald Maschine in den Bereitschaftszustand wechselt
Entry Action: this.NextOrder = main.OrderBuffer.get(0)
Last changed2 years ago