Package: gym-electric-motor
Gym Electric MotorOverview paper|Reinforcement learning paper|Quickstart|Install guide|Reference docs|Release notesOverviewThe gym-electric-motor (GEM) package is a Python toolbox for the simulation and control of various electric motors.
It is built uponFaram Gymnasium Environments, and, therefore, can be used for both, classical control simulation andreinforcement learningexperiments. It allows you to construct a typical drive train with the usual building blocks, i.e., supply voltages, converters, electric motors and load models, and obtain not only a closed-loop simulation of this physical structure, but also a rich interface for plugging in any decision making algorithm, from linear feedback control toDeep Deterministic Policy Gradientagents.Getting StartedAn easy way to get started with GEM is by playing around with the following interactive notebooks in Google Colaboratory. Most important features of GEM as well as application demonstrations are showcased, and give a kickstart for engineers in industry and academia.GEM cookbookKeras-rl2 exampleStable-baselines3 exampleMPC  exampleThere is a list ofstandalone example scriptsas well for minimalistic demonstrations.A basic routine is as simple as:importgym_electric_motorasgemif__name__=='__main__':env=gem.make("Finite-CC-PMSM-v0")# instantiate a discretely controlled PMSMenv.reset()for_inrange(10000):(states,references),rewards,done,_=\env.step(env.action_space.sample())# pick random control actionsifdone:(states,references),_=env.reset()env.close()InstallationInstall gym-electric-motor from PyPI (recommended):pip install gym-electric-motorInstall from Github source:git clone git@github.com:upb-lea/gym-electric-motor.git 
cd gym-electric-motor
# Then either
python setup.py install
# or alternatively
pip install -e .Building BlocksA GEM environment consists of following building blocks:Physical structure:Supply voltageConverterElectric motorLoad modelUtility functions for reference generation, reward calculation and visualizationInformation Flow in a GEM EnvironmentAmong various DC-motor models, the following AC motors - together with their power electronic counterparts - are available:Permanent magnet synchronous motor (PMSM),Synchronous reluctance motor (SynRM)Squirrel cage induction motor (SCIM)Doubly-fed induction motor (DFIM)The converters can be driven by means of a duty cycle (continuous control set) or switching commands (finite control set).CitationA white paper for the general toolbox in the context of drive simulation and control prototyping can be found in theJournal of Open Sorce Software (JOSS). Please use the following BibTeX entry for citing it:@article{Balakrishna2021,
    doi = {10.21105/joss.02498},
    url = {https://doi.org/10.21105/joss.02498},
    year = {2021},
    publisher = {The Open Journal},
    volume = {6},
    number = {58},
    pages = {2498},
    author = {Praneeth {Balakrishna} and Gerrit {Book} and Wilhelm {Kirchgässner} and Maximilian {Schenke} and Arne {Traue} and Oliver {Wallscheid}},
    title = {gym-electric-motor (GEM): A Python toolbox for the simulation of electric drive systems},
    journal = {Journal of Open Source Software}
}A white paper for the utilization of this framework within reinforcement learning is available atIEEE-Xplore(preprint:arxiv.org/abs/1910.09434). Please use the following BibTeX entry for citing it:@article{9241851,  
  author={Traue, Arne and Book, Gerrit and Kirchgässner, Wilhelm and Wallscheid, Oliver},
  journal={IEEE Transactions on Neural Networks and Learning Systems}, 
  title={Toward a Reinforcement Learning Environment Toolbox for Intelligent Electric Motor Control}, 
  year={2022},
  volume={33},
  number={3},
  pages={919-928},
  doi={10.1109/TNNLS.2020.3029573}}Running Unit Tests with PytestTo run the unit tests ''pytest'' is required.
All tests can be found in the ''tests'' folder.
Execute pytest in the project's root folder:>>> pytestor with test coverage:>>> pytest --cov=./All tests shall pass.