AtomicDEVS¶
- class pypdevs.DEVS.AtomicDEVS(name=None)[source]¶
Abstract base class for all atomic-DEVS descriptive classes.
- __init__(name=None)[source]¶
Constructor for an AtomicDEVS model
- Parameters
name – name of the model, can be None to have an automatically generated name
- confTransition(inputs)[source]¶
DEFAULT Confluent Transition Function.
Accesses state and elapsed attributes, as well as inputs through the passed dictionary. Returns the new state.
Note
Should only write to the state attribute.
- Parameters
inputs – dictionary containing all ports and their corresponding outputs
- Returns
state – the new state of the model
- extTransition(inputs)[source]¶
DEFAULT External Transition Function.
Accesses state and elapsed attributes, as well as inputs through the passed dictionary. Returns the new state. The elapsed time is accessible as an attribute (i.e., self.elapsed), see Elapsed time for a detailed explanation.
Note
Should only write to the state attribute.
- Parameters
inputs – dictionary containing all ports and their corresponding outputs
- Returns
state – the new state of the model
- fetchActivity(time, activities)[source]¶
Fetch the activity of the model up to a certain time
- Parameters
time – the time up to which the activity should be calculated
activities – dictionary containing all activities for the models
- finalize(name, model_counter, model_ids, locations, select_hierarchy)[source]¶
Finalize the model hierarchy by doing all pre-simulation configuration
Note
Parameters model_ids and locations are updated by reference.
- Parameters
name – the name of the hierarchy above
model_counter – the model ID counter
model_ids – a list with all model_ids and their model
locations – dictionary of locations and where every model runs
select_hierarchy – hierarchy to perform selections in Classic DEVS
- Returns
int – the new model ID counter
- flattenConnections()[source]¶
Flattens the pickling graph, by removing backreference from the ports.
- getModelLoad(lst)[source]¶
Add this atomic model to the load of its location
- Parameters
lst – list containing all locations and their current load
- Returns
int – number of children in this subtree
- getState(request_time, first_call=True)[source]¶
For the distributed termination condition: fetch the state of the model at a certain time
- Parameters
request_time – the time (including age!) for which the state should be fetched
first_call – whether or not this is the first call of a possible recursive call
- Returns
state – the state at that time
- intTransition()[source]¶
DEFAULT Internal Transition Function.
Note
Should only write to the state attribute.
- Returns
state – the new state of the model
Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.
- outputFnc()[source]¶
DEFAULT Output Function.
Accesses only state attribute. Returns the output on the different ports as a dictionary.
Note
Should not write to any attribute.
- Returns
dictionary containing output ports as keys and lists of output on that port as value
Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.
- postActivityCalculation(prevalue)[source]¶
DEFAULT post-transition activity fetcher. The returned value will be passed on to the relocator and MUST be an addable (e.g. integer, float, …)
- Parameters
prevalue – the value returned from the preActivityCalculation method
- Returns
addable (float, integer, …) – passed to the relocator
- preActivityCalculation()[source]¶
DEFAULT pre-transition activity fetcher. The returned value is passed to the postActivityCalculation function
- Returns
something – passed to the postActivityCalculation
- revert(time, memorize)[source]¶
Revert the model to the specified time. All necessary cleanup for this model will be done (fossil collection).
- Parameters
time – the time up to which should be reverted
memorize – whether or not the saved states should still be kept for memoization
- setGVT(gvt, activities, last_state_only)[source]¶
Set the GVT of the model, cleaning up the states vector as required for the time warp algorithm
- Parameters
gvt – the new value of the GVT
activities – dictionary containing all activities for the models
last_state_only – whether or not to only use a single state for activity
- setLocation(location, force=False)[source]¶
Sets the location of the atomic DEVS model if it was not already set
- Parameters
location – the location to set
force – whether or not to force this location, even if another is already defined
- timeAdvance()[source]¶
DEFAULT Time Advance Function.
Note
Should ideally be deterministic, though this is not mandatory for simulation.
- Returns
the time advance of the model
Changed in version 2.1: The elapsed attribute is no longer guaranteed to be correct as this isn’t required by the DEVS formalism.