Finite Control Set Current Control Shunt DC Motor Environment

class gym_electric_motor.envs.FiniteCurrentControlDcShuntMotorEnv(supply=None, converter=None, motor=None, load=None, ode_solver=None, reward_function=None, reference_generator=None, visualization=None, state_filter=None, callbacks=(), constraints=('i_a', 'i_e'), calc_jacobian=True, tau=1e-05, physical_system_wrappers=(), **kwargs)[source]
Description:

Environment to simulate a finite control set current controlled shunt DC Motor

Key:

'Finite-CC-ShuntDc-v0'

Default Components:
State Variables:

['omega' , 'torque', 'i_a', 'i_e', 'u', 'u_sup']

Reference Variables:

['i_a']

Control Cycle Time:

tau = 1e-5 seconds

Observation Space:

Type: Tuple(State_Space, Reference_Space)

State Space:

Box(low=[-1, -1, -1, -1, 0], high=[1, 1, 1, 1, 1])

Reference Space:

Box(low=[-1], high=[1])

Action Space:

Discrete(4)

Initial State:

Zeros on all state variables.

Example

>>> import gym_electric_motor as gem
>>> from gym_electric_motor.reference_generators import LaplaceProcessReferenceGenerator
>>>
>>> # Select a different converter with default parameters by passing a keystring
>>> my_overridden_converter = 'Finite-2QC'
>>>
>>> # Update the default arguments to the voltage supply by passing a parameter dict
>>> my_changed_voltage_supply_args = {'u_nominal': 400.0}
>>>
>>> # Replace the reference generator by passing a new instance
>>> my_new_ref_gen_instance = LaplaceProcessReferenceGenerator(
...     reference_state='i_a',
...     sigma_range=(1e-3, 1e-2)
... )
>>> env = gem.make(
...     'Finite-CC-ShuntDc-v0',
...     voltage_supply=my_changed_voltage_supply_args,
...     converter=my_overridden_converter,
...     reference_generator=my_new_ref_gen_instance
... )
>>> terminated = True
>>> for _ in range(1000):
>>>     if terminated:
>>>         state, reference = env.reset()
>>>     (state, reference), reward, terminated, truncated, _ = env.step(env.action_space.sample())
Parameters:
  • supply (env-arg) – Specification of the VoltageSupply for the environment

  • converter (env-arg) – Specification of the PowerElectronicConverter for the environment

  • motor (env-arg) – Specification of the ElectricMotor for the environment

  • load (env-arg) – Specification of the MechanicalLoad for the environment

  • ode_solver (env-arg) – Specification of the OdeSolver for the environment

  • reward_function (env-arg) – Specification of the RewardFunction for the environment

  • reference_generator (env-arg) – Specification of the ReferenceGenerator for the environment

  • visualization (env-arg) – Specification of the ElectricMotorVisualization for the environment

  • constraints (iterable(str/Constraint)) –

    All Constraints of the environment.

    • str: A LimitConstraints for states (episode terminates, if the quantity exceeds the limit)

    can be directly specified by passing the state name here (e.g. ‘i’, ‘omega’)

    • instance of Constraint: More complex constraints (e.g. the SquaredConstraint can be initialized and

    passed to the environment.

  • calc_jacobian (bool) – Flag, if the jacobian of the environment shall be taken into account during the simulation. This may lead to speed improvements. Default: True

  • tau (float) – Duration of one control step in seconds. Default: 1e-5.

  • state_filter (list(str)) – List of states that shall be returned to the agent. Default: None (no filter)

  • callbacks (list(Callback)) – Callbacks for user interaction. Default: ()

  • physical_system_wrappers (list(PhysicalSystemWrapper)) – List of Physical System Wrappers to modify the

  • Default (actions to and states from the physical system before they are used in the environment.) – ()

Note on the env-arg type:

All parameters of type env-arg can be selected as one of the following types:

instance: Pass an already instantiated object derived from the corresponding base class (e.g. reward_function=MyRewardFunction()). This is directly used in the environment.

dict: Pass a dict to update the default parameters of the default type. (e.g. visualization=dict(state_plots=('omega', 'u')))

str: Pass a string out of the registered classes to select a different class for the component. This class is then initialized with its default parameters. The available strings can be looked up in the documentation. (e.g. converter='Finite-2QC')