El paquete Gym-Electric-Motor (GEM) es una caja de herramientas de Python para la simulación y el control de varios motores eléctricos. Se basa en entornos de gimnasio Faram y, por lo tanto, puede usarse tanto para los experimentos de simulación de control clásico como para el aprendizaje de refuerzo. Le permite construir un tren de transmisión típico con los bloques de construcción habituales, es decir, voltajes de suministro, convertidores, motores eléctricos y modelos de carga, y obtener no solo una simulación de circuito cerrado de esta estructura física, sino también una interfaz rica para conectar cualquier algoritmo de toma de decisiones, desde control de retroalimentación lineal hasta profundos agentes de gradientes de políticas deterministas. Además, se proporciona un marco automatizado para estructuras de control clásicas basadas en controladores PI.
Una manera fácil de comenzar con GEM es jugar con los siguientes cuadernos interactivos en Google Colaboratory. Se exhiben características más importantes de las manifestaciones de GEM y de la aplicación, y ofrecen un principio para los ingenieros en la industria y la academia.
También hay una lista de scripts de ejemplo independientes para demostraciones minimalistas.
Una rutina básica es tan simple como:
import gym_electric_motor as gem
if __name__ == '__main__' :
env = gem . make ( "Finite-CC-PMSM-v0" ) # instantiate a discretely controlled PMSM
env . reset ()
for _ in range ( 10000 ):
( states , references ), rewards , done , _ =
env . step ( env . action_space . sample ()) # pick random control actions
if done :
( states , references ), _ = env . reset ()
env . close () pip install gym-electric-motor
git clone [email protected]:upb-lea/gym-electric-motor.git
cd gym-electric-motor
# Then either
python setup.py install
# or alternatively
pip install -e .
Un entorno de gemas consiste en los siguientes bloques de construcción:

Entre varios modelos motores DC, están disponibles los siguientes motores de CA, junto con sus contrapartes electrónicas de potencia:
Los convertidores pueden ser impulsados por un ciclo de trabajo (conjunto de control continuo) o comandos de conmutación (conjunto de control finito).
Se puede encontrar un documento blanco para la caja de herramientas general en el contexto de la simulación de unidad y la creación de prototipos de control en el Journal of Open Sorce Software (JOSS). Utilice la siguiente entrada de Bibtex para citarla:
@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}
}
Un documento blanco para la utilización de este marco dentro del aprendizaje de refuerzo está disponible en IEEE-xplore (preimpresión: arxiv.org/abs/1910.09434). Utilice la siguiente entrada de Bibtex para citarla:
@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}}
Un documento blanco para los enfoques de control clásico del control-motor-motor de gimnasia está disponible en IEEE-XPLORE. Utilice la siguiente entrada de Bibtex para citarla:
@INPROCEEDINGS{10239044,
author={Book, Felix and Traue, Arne and Schenke, Maximilian and Haucke-Korber, Barnabas and Wallscheid, Oliver},
booktitle={2023 IEEE International Electric Machines & Drives Conference (IEMDC)},
title={Gym-Electric-Motor (GEM) Control: An Automated Open-Source Controller Design Suite for Drives},
year={2023},
volume={},
number={},
pages={1-7},
doi={10.1109/IEMDC55163.2023.10239044}}
Para ejecutar las pruebas unitarias, se requiere '' PyTest ''. Todas las pruebas se pueden encontrar en la carpeta '' Pruebas ''. Ejecutar pytest en la carpeta raíz del proyecto:
>>> pytest
o con cobertura de prueba:
>>> pytest --cov=./
Todas las pruebas pasarán.