O pacote de motores elétricos (GEM) é uma caixa de ferramentas Python para a simulação e controle de vários motores elétricos. Ele é construído sobre os ambientes de ginásio de Faram e, portanto, pode ser usado para ambos, simulação clássica de simulação e experimentos de aprendizado de reforço. Ele permite que você construa um trem típico de acionamento com os blocos de construção habituais, ou seja, tensões de fornecimento, conversores, motores elétricos e modelos de carga, e obtenha não apenas uma simulação de circuito fechado dessa estrutura física, mas também uma interface rica para conectar qualquer algoritmo de tomada de decisão, do controle de feedback linear a agentes de gradiente de política determinística. Além disso, é fornecida uma estrutura automatizada para estruturas de controle clássico baseadas em controladores PI.
Uma maneira fácil de começar a Gem é brincar com os seguintes notebooks interativos no Google Colaboratory. As características mais importantes das demonstrações de gem e aplicativos são exibidas e dão um pontapé inicial para engenheiros da indústria e da academia.
Há uma lista de scripts de exemplo independentes também para demonstrações minimalistas.
Uma rotina básica é tão simples quanto:
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 .
Um ambiente GEM consiste em seguir os blocos de construção:
Entre vários modelos de motores DC, os seguintes motores CA - juntamente com seus colegas eletrônicos de energia - estão disponíveis:
Os conversores podem ser acionados por meio de um ciclo de trabalho (conjunto de controle contínuo) ou comandos de comutação (conjunto de controle finito).
Um white paper para a caixa de ferramentas geral no contexto da simulação de acionamento e prototipagem de controle pode ser encontrado no Journal of Open Sorce Software (JOSS). Por favor, use a seguinte entrada Bibtex para citá -la:
@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}
}
Um papel branco para a utilização dessa estrutura no aprendizado de reforço está disponível no IEEE-Xplore (pré-impressão: arxiv.org/abs/1910.09434). Por favor, use a seguinte entrada Bibtex para citá -la:
@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}}
Um papel branco para as abordagens de controle clássico do controle de motores elétricos da ginástica está disponível no IEEE-xplore. Por favor, use a seguinte entrada Bibtex para citá -la:
@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 executar os testes de unidade "Pytest" é necessário. Todos os testes podem ser encontrados na pasta "testes". Execute o pytest na pasta raiz do projeto:
>>> pytest
ou com cobertura de teste:
>>> pytest --cov=./
Todos os testes devem passar.