# rcognita.simulator.Simulator

class rcognita.simulator.Simulator(sys_type, closed_loop_rhs, sys_out, state_init, disturb_init=[], action_init=[], t0=0, t1=1, dt=0.01, max_step=0.005, first_step=1e-06, atol=1e-05, rtol=0.001, is_disturb=0, is_dyn_ctrl=0)

  Class for simulating closed loops (system-controllers).

  sys_type

    Type of system by description:

    `diff_eqn` : differential equation \(\mathcal D state = f(state, u, q)\)
    `discr_fnc` : difference equation \(state^+ = f(state, u, q)\)
    `discr_prob` : by probability distribution \(X^+ \sim P_X(state^+| state, u, q)\)
    Type

      : string

  where
    \(state\) : state
    \(u\) : input
    \(q\) : disturbance
  closed_loop_rhs

    Right-hand side description of the closed-loop system. Say, if you instantiated a concrete system (i.e., as an instance of a subclass of `system` class with concrete `closed_loop_rhs` method) as `my_sys`, this could be just `my_sys.closed_loop_rhs`.

    Type

      : function

  sys_out

    System output function. Same as above, this could be, say, `my_sys.out`.

    Type

      : function

  is_dyn_ctrl

    If 1, the controller (a.k.a. agent) is considered as a part of the full state vector.

    Type

      : 0 or 1

  state_init, disturb_init, action_init

    Initial values of the (open-loop) system state, disturbance and input.

    Type

      : vectors

  t0, t1, dt

    Initial, final times and time step size

    Type

      : numbers

  max_step, first_step, atol, rtol

    Parameters for an ODE solver (used if `sys_type` is `diff_eqn`).

    Type

      : numbers

  See also

  `systems` module

  __init__(sys_type, closed_loop_rhs, sys_out, state_init, disturb_init=[], action_init=[], t0=0, t1=1, dt=0.01, max_step=0.005, first_step=1e-06, atol=1e-05, rtol=0.001, is_disturb=0, is_dyn_ctrl=0)
    Parameters

      - sys_type (: string) –

        Type of system by description:

        `diff_eqn` : differential equation \(\mathcal D state = f(state, u, q)\)
        `discr_fnc` : difference equation \(state^+ = f(state, u, q)\)
        `discr_prob` : by probability distribution \(X^+ \sim P_X(state^+| state, u, q)\)

      - where –

        \(state\) : state
        \(u\) : input
        \(q\) : disturbance

      - closed_loop_rhs (: function) – Right-hand side description of the closed-loop system. Say, if you instantiated a concrete system (i.e., as an instance of a subclass of `System` class with concrete `closed_loop_rhs` method) as `my_sys`, this could be just `my_sys.closed_loop_rhs`.

      - sys_out (: function) – System output function. Same as above, this could be, say, `my_sys.out`.

      - is_dyn_ctrl (: 0 or 1) – If 1, the controller (a.k.a. agent) is considered as a part of the full state vector.

      - state_init (: vectors) – Initial values of the (open-loop) system state, disturbance and input.

      - disturb_init (: vectors) – Initial values of the (open-loop) system state, disturbance and input.

      - action_init (: vectors) – Initial values of the (open-loop) system state, disturbance and input.

      - t0 (: numbers) – Initial, final times and time step size

      - t1 (: numbers) – Initial, final times and time step size

      - dt (: numbers) – Initial, final times and time step size

      - max_step (: numbers) – Parameters for an ODE solver (used if `sys_type` is `diff_eqn`).

      - first_step (: numbers) – Parameters for an ODE solver (used if `sys_type` is `diff_eqn`).

      - atol (: numbers) – Parameters for an ODE solver (used if `sys_type` is `diff_eqn`).

      - rtol (: numbers) – Parameters for an ODE solver (used if `sys_type` is `diff_eqn`).

  Methods

  `__init__`(sys_type, closed_loop_rhs, sys_out, …) | param sys_type Type of system by description:
  `get_sim_step_data`() | Collect current simulation data: time, system state and output, and, for completeness, full closed-loop state.
  `reset`() |
  `sim_step`() | Do one simulation step and update current simulation data (time, system state and output).