This holds the state for the whole system.
The Mark is the type of the Marking class. TransitionKey is the transition key for the GSPN. The UserState may be omitted but is whatever state you would like to add to the system state. It will be accessible within transition as the UserState variable and is accessible from the state as GSPNState.user.
StochasticDynamics is responsible for advancing the state of the system using the given Propagators. GSPN is the type of the Petri net. DynState is the type of the state of the system. RandGen is the type of the random number generator.
The propagator vector is a type declared in this class. In its constructor, we pass the model for the system and the list of propagators which determine the next state for the system.
There may be internal arrays initialized at this stage once the model and state are known. This must be called before running the StochasticDynamics.
This modifies the state, in place, according to the propagators.
The pure virtual base class for propagators of the state. There are multiple propagators because some propagators are more efficient than others at handling subsets of the transitions enabled in the system.
The arguments are the transition key of the GSPN and the random number generator type.
A propagator can examine a distribution from the core matrix to decide whether it will accept it.
What is the next predicted transition from this propagator.
Is this transition currently enabled?
Enable this transition at this time.
Disable this transition at this time.
This transition has fired.
This subclass of ContinuousPropagator uses Gillespie’s First Reaction method ([Gillespie:1978]) to choose the next transition. It’s methods are exactly those listed above.
This subclass of ContinuousPropagator uses Anderson’s method ([Anderson:2007]) to choose the next transition. It’s methods are exactly those listed above.