ml4cps.cps.base module¶
The module provides base classes to represent the dynamics of cyber-physical systems (CPS): - CPS, and, - CPSComponent.
Author: Nemanja Hranisavljevic, hranisan@hsu-hh.de
- class ml4cps.cps.base.CPS(sys_id, components)¶
Bases:
objectCPS class represents a cyber-physical system. It is used to model the hierarchy in the system as each CPS can contain a mixture of other CPS and CPS components. The leaves of the hierarchy are only CPS component objects which define their dynamics and communication with other components.
- id¶
Identifier of the object.
- Type:
str
- com¶
Property. A collection of components.
- Type:
OrderedDict
- copy()¶
- finish_condition()¶
- get_all_components(exclude=None)¶
Returns a list of all child components (not only direct) except those with ids possibly provided in exclude.
- Parameters:
exclude (iterable) – A list of component ids to exclude in the returned list.
- get_component(name)¶
- get_component_by_full_id(full_id)¶
- get_components(exclude=None)¶
Returns a list of all direct child components except those with ids possibly provided in exclude.
- Parameters:
exclude (iterable) – A list of component ids to exclude in the returned list (default is None).
- get_execution_data(flat=False)¶
- items()¶
- property overall_system¶
- property parent_system¶
Gets the parent system by accessing _parent_system private attribute.
- Returns:
The parent system.
- Return type:
(CPS)
- reinitialize(t=0, state=None)¶
The function re-initializes the CPS components of this CPS with the given state values. :param t: Current time to set to the components. :param state: State of the CPS (it’s components) given as a dictionary of dictionaries … of tuples (according to the CPS hierarchy). The tuplus are created as values concatenated values of discrete-event state variables, time-continuous state variables and time-discrete state variables.
- Returns:
- set_child_component(id, com)¶
Set component with the id.
- Parameters:
id (str) – ID of the component to add.
com ((CPS, CPSComponent)) – Component of subsystem to add.
- simulate(finish_time, verbose=False, save_choices=False)¶
Simulates behaviour of the system until the finish_time is reached.
- Parameters:
finish_time (Time when simulation finishes.)
verbose (Should the execution log be printed in detail (default is False).)
save_choices (Should the choices for each component be saved to json files after)
False). (the simulation is finished (default is)
- property state¶
- class ml4cps.cps.base.CPSComponent(id, t=0, initial_q=(), initial_xt: list = (), initial_xk: list = (), dt=-1.0, p=None, cont_state_names=None, discr_state_names=None, discr_output_names=None, cont_output_names=None, unknown_state='Unknown')¶
Bases:
PythonModel,SimulatorGeneral hybrid system class based on scipy and simpy.
- apply_sim_event(e, env=None)¶
The event e is applied in this component’s simpy execution, this means that the process must wait for an event. :param e: Event to apply. :return:
- context(q, past_t, past_p, t) tuple¶
- continuous_dynamics_process(env, max_time, verbose=False)¶
- copy()¶
- discrete_dynamics_process(env, max_time, verbose=False)¶
- discrete_event_dynamics(q, xt, xk, p) tuple¶
- property discrete_state¶
- discrete_time_dynamics_process(env, max_time, verbose=False)¶
- finish(t, **kwargs)¶
- finish_condition()¶
- property full_id¶
- get_alternatives(state, system_state)¶
- get_decision_state(state, overall_state)¶
- get_execution_data()¶
- get_sim_state()¶
- guards(q, x)¶
- input(q, clock) tuple¶
- invariants(q, clock, xc, xd, y)¶
- is_decision(state, overall_state)¶
- on_entry(q, context)¶
- output_d(q, xt, xk)¶
- output_y(q, xt, xk)¶
- property overall_system¶
- property parent_system¶
- reinitialize(t, state=None)¶
- set_sim_state(q, e, p, y, block_event)¶
- simulate(finish_time, verbose=False, save_choices=False)¶
Simulates behaviour of the system until the finish_time is reached.
- Parameters:
finish_time (Time when simulation finishes.)
verbose (Should the execution log be printed in detail (default is False).)
save_choices (Should the choices for each component be saved to json files after)
False). (the simulation is finished (default is)
- simulation_process_simpy(env, max_time, verbose=False)¶
The function simulates single concurrent thread of one component (CPSComponent). :param env: It is simpy environment used to synchronize multiple parallel threads during simulation. :type env: simpy.Environment :param max_time: It is the maximum time that the simulation will perform. :type max_time: float :param verbose: Should the function print execution logs (default is False). :type verbose: bool
- property state¶
System state is a vector of all state variables. :return:
- time_continuous_dynamics(t, xt, xk, q, u, p, y)¶
- time_discrete_dynamics(q, p, x, u)¶
- timed_event(q, xc, xd)¶
Calculates if and when the next time event will happen and the new state values. :param t: Current time. :param q: Discrete-event part of the state. :param xc: Time-continuous part of the state. :param xd: Time-discrete part of the state. :return: Time delay of the timed event, new state value.
- update_input(u)¶
- wait(q)¶