项目介绍:gym-electric-motor
概述
gym-electric-motor(简称GEM)是一个用于模拟和控制各种电动机的Python工具包。该工具包基于Faram Gymnasium Environments构建,适用于经典控制模拟和强化学习实验。用户可以通过GEM构建一个典型的传动系统,包括供电电压、变频器、电动机和负载模型,从而实现该物理结构的闭环模拟。此外,GEM还为各种决策算法提供了丰富的接口,这些算法范围从线性反馈控制到深度确定性策略梯度(DDPG)智能体。此外,GEM还提供了一个基于PI控制器的自动化框架,用于经典控制结构。
快速入门
用户可以通过一些互动式的Google Colaboratory笔记本快速上手GEM。这些笔记本展示了GEM的重要功能以及应用演示,可以帮助工业和学术领域的工程师快速入门。
以下是几个示例笔记本:
- GEM cookbook
- Stable-baselines3 DDPG示例
- Stable-baselines3 DQN示例
- MPC示例
此外,还有一些独立范例脚本可供查看,以演示最小功能。
一个简单的基本操作如下:
import gym_electric_motor as gem
if __name__ == '__main__':
env = gem.make("Finite-CC-PMSM-v0") # 实例化一个离散控制的PMSM
env.reset()
for _ in range(10000):
(states, references), rewards, done, _ =\
env.step(env.action_space.sample()) # 随机选择控制动作
if done:
(states, references), _ = env.reset()
env.close()
安装
- 从PyPI安装(推荐):
pip install gym-electric-motor
- 从GitHub源码安装:
git clone git@github.com:upb-lea/gym-electric-motor.git cd gym-electric-motor # 然后选择以下任一种方式 python setup.py install # 或者 pip install -e .
构建模块
GEM环境由以下几部分组成:
-
物理结构:
- 电压供给
- 变频器
- 电动机
- 负载模型
-
用于参考生成、奖励计算和可视化的实用功能
GEM环境中的信息流
GEM支持多个直流电机模型,并提供了交流电机和其电子部分的如下选项:
- 永磁同步电机(PMSM)
- 同步磁阻电机(SynRM)
- 外部励磁同步电机(EESM)
- 鼠笼式异步电机(SCIM)
- 双馈感应电机(DFIM)
变频器可以采用占空比(连续控制组)或开关命令(有限控制组)来驱动。
引用
GEM的总体介绍及其在驱动仿真和控制原型中的应用可以参考《开放源代码软件期刊》(JOSS)的白皮书。以下是引用该论文的BibTeX格式:
@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}
}
关于该框架在强化学习中的应用,还可以参考IEEE-Xplore上的白皮书。以下是引用该论文的BibTeX格式:
@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}}
关于gym-electric-motor控制的经典控制方法,请参考可在IEEE-Xplore上找到的另外一篇白皮书。其BibTeX引用格式如下:
@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}}
使用Pytest运行单元测试
要运行单元测试,需要使用pytest
。所有测试都位于“tests”文件夹中。在项目的根目录下执行pytest:
>>> pytest
或者运行带有测试覆盖率的命令:
>>> pytest --cov=./
所有的测试应当通过。