健身房电动机
概述论文 | 强化学习论文 | 快速入门 | 安装指南 | 参考文档 | 发布说明
概述
gym-electric-motor (GEM) 是一个用于模拟和控制各种电动机的 Python 工具包。它建立在 Faram Gymnasium Environments 基础上,因此可用于经典控制模拟和强化学习实验。它允许您构造一个典型的驱动链,包括常见的构建块,如电源电压、转换器、电动机和负载模型,并不仅提供该物理结构的闭环模拟,还提供一种丰富的接口,可以插入从线性反馈控制到深度确定性策略梯度代理的任何决策算法。
快速入门
一个简单的开始方式是在 Google Colaboratory 中使用以下交互式笔记本。GEM 的最重要特性以及应用演示都在此展示,为行业和学术界的工程师提供启动帮助。
还有一些独立的 示例脚本,用于简单演示。
一个基本的例程如下简单:
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 安装 gym-electric-motor(推荐):
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 环境中的信息流
在各种直流电动机模型中,以下交流电动机及其电力电子对等物可用:
- 永磁同步电动机 (PMSM)
- 同步磁阻电动机 (SynRM)
- 笼型感应电动机 (SCIM)
- 双馈感应电动机 (DFIM)
转换器可以通过占空比(连续控制集)或开关命令(有限控制集)驱动。
引用
关于在驱动模拟和控制原型设计背景下的一般工具箱的白皮书可以在开放源软件杂志 (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 (预印本:arxiv.org/abs/1910.09434)中找到。请使用以下 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}}
使用 Pytest 运行单元测试
要运行单元测试,需要 ''pytest''。 所有测试都可以在 ''tests'' 文件夹中找到。 在项目根文件夹中执行 pytest:
>>> pytest
或带测试覆盖率:
>>> pytest --cov=./
所有测试均应通过。