Continuous Speed Control Shunt DC Motor Environment
- class gym_electric_motor.envs.ContSpeedControlDcShuntMotorEnv(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=0.0001, physical_system_wrappers=(), **kwargs)[source]
- Description:
Environment to simulate a continuous control set speed controlled shunt DC Motor
- Key:
'Cont-SC-ShuntDc-v0'
- Default Components:
Supply:
IdealVoltageSupply
Converter:
ContinuousFourQuadrantConverter
Motor:
DcShuntMotor
Load:
PolynomialStaticLoad
Ode-Solver:
EulerSolver
Reference Generator:
WienerProcessReferenceGenerator
Reference Quantity:'omega'
Reward Function:
WeightedSumOfErrors
reward_weights:'omega' = 1
Visualization:
MotorDashboard
omega and action plotsConstraints:
LimitConstraint
on the currents'i_a', 'i_e'
- State Variables:
['omega' , 'torque', 'i_a', 'i_e', 'u', 'u_sup']
- Reference Variables:
['omega']
- Control Cycle Time:
tau = 1e-4 seconds
- Observation Space:
Type: Tuple(State_Space, Reference_Space)
- State Space:
Box(low=[-1, -1, -1, -1, -1, 0], high=[1, 1, 1, 1, 1, 1])
- Reference Space:
Box(low=[-1], high=[1])
- Action Space:
Box(low=[-1],high=[1])
- 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 = 'Cont-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( ... 'Cont-SC-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 environmentconverter (env-arg) – Specification of the
PowerElectronicConverter
for the environmentmotor (env-arg) – Specification of the
ElectricMotor
for the environmentload (env-arg) – Specification of the
MechanicalLoad
for the environmentode_solver (env-arg) – Specification of the
OdeSolver
for the environmentreward_function (env-arg) – Specification of the
RewardFunction
for the environmentreference_generator (env-arg) – Specification of the
ReferenceGenerator
for the environmentvisualization (env-arg) – Specification of the
ElectricMotorVisualization
for the environmentconstraints (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'
)