Line 53: | Line 53: | ||
* <tt>additionalGuards</tt> stores optional guards when executing the event stored in <tt>execute</tt> | * <tt>additionalGuards</tt> stores optional guards when executing the event stored in <tt>execute</tt> | ||
* <tt>fixedVariables</tt> stores a Map. Here, a variable (parameter, or non-deterministic assigned variable) is assigned to its value. | * <tt>fixedVariables</tt> stores a Map. Here, a variable (parameter, or non-deterministic assigned variable) is assigned to its value. | ||
* <tt>probabilisticVariables</tt> stores a Map. | * <tt>probabilisticVariables</tt> stores either a Map or a String. Concerning the Map, a variable (parameter, or non-deterministic assigned variable) is assigned to another Map defining the probabilistic choice of its value. The second Map stores Key-Value pairs where values are mapped to the probability. The modeler can also assign <tt>probabilisticVariables</tt> to <tt>first</tt> or <tt>uniform</tt>. | ||
* <tt>priority</tt> stores the priority for scheduling <tt>execute</tt>. Lower number means greater priority | ** <tt>first</tt> means that the first transition is chosen for execution. | ||
** <tt>uniform</tt> means that a transition is selected from all alternatives uniformly. | |||
* <tt>priority</tt> stores the priority for scheduling <tt>execute</tt>. Lower number means greater priority. | |||
<pre> | <pre> |
SimB is a simulator built on top of ProB. It is available in the latest SNAPSHOT version in the new JavaFX based user interface ProB2-UI, The modeler can write SimB annotations for a formal model to simulate it. Furthermore, it is then possible to validate probabilistic and timing properties with statistical validation techniques such as hypothesis testing and estimation.
Start SimB via "Open Simulator" in the "Advanced" Menu after opening a machine.
Now, you can open a SimB file (JSON format) controlling the underlying formal model.
A SimB file consists of probabilistic and timing elements to simulate the model. Within these elements, the modeler can user B expressions which are evaluated on the current state.
In the following, an example for a SimB file controlling a Traffic Lights for cars and pedestrians is shown:
{ "activations": [ {"id":"$initialise_machine", "execute":"$initialise_machine", "activating":"choose"}, {"id":"choose", "chooseActivation":{"cars_ry": "0.8", "peds_g": "0.2"}}, {"id":"cars_ry", "execute":"cars_ry", "after":5000, "activating":"cars_g"}, {"id":"cars_g", "execute":"cars_g", "after":500, "activating":"cars_y"}, {"id":"cars_y", "execute":"cars_y", "after":5000, "activating":"cars_r"}, {"id":"cars_r", "execute":"cars_r", "after":500, "activating":"choose"}, {"id":"peds_g", "execute":"peds_g", "after":5000, "activating":"peds_r"}, {"id":"peds_r", "execute":"peds_r", "after":5000, "activating":"choose"} ] }
The SimB file always contains an activations field storing all elements controlling the simulation in a list. There are two types of activations: direct activation and probabilistic choice. All activations are identified by their id.
A direct activation requires the fields id, and execute to be defined. All other fields can be defined optionally.
{ "id": ... "execute": ... "after": ... "activating": ... "activationKind": ... "additionalGuards": ... "fixedVariables": .... "probabilisticVariables": .... "priority": ... }
{ "id": ... "chooseActivation": ... }