OpenAI gymnasium是强化学习训练环境事实上的标准,使用强化学习解决问题,首先应该用gymnasium的接口封装需要解决的问题,如果能将要解决的问题封装为gym接口,则可以调用现有的强化学习算法进行问题的初步分析。
具体的实现步骤,参见网站:Make your own custom environment - Gymnasium Documentation
总结一下步骤:
1. 使用gym接口封装需要解决的问题的环境,如下图所示,继承gym.Env类,并在代码中实现:reset,step, render等函数接口;
图1 使用gymnasium函数封装自己需要解决的问题接口
2. 将自己的模块注册到gymnasium,主要在__init__.py文件下,调用gymnasium的注册函数register进行注册,如图2所示,具体为何要注册,注册的原理,注册后发生什么事等,未进行研究
图2 将自己的模块注册到gymnasium下
3. 使用pip将自己的环境注册到系统,调用Python的setuptools完成注册,具体第,在setup.py中加入对应的代码,如图3所示。然后,执行,pip install -e gym-examples, 如图3所示。
图3 将模块注册到系统或者虚拟环境
4. 编写代码,测试新建环境是否可用
图4 测试新建环境
5. 踩的坑~~~,核心重点
包的下载是按照链接中的命令行下载的,如图 5所示,主要使用Git的命令行。
图5 gym-example的下载过程
但是,这个链接是老的地址,使用的gym(老版本),而非gymnasium(新版本)来编写的,导致了Namespace无法找到的错误,如图6所示。
图6 gymnasium.error.NamespaceNotFound: Namespace gym_examples not found. Have you installed the proper package for gym_examples? 的错误
因此,应该根据网页中的文件,需要:1. 对__init.py__中的引入register库的地方进行修改,注意是from gymnasium.envs.registration import register;2. 对grid_world.py文件进行修改,直接拷贝网页中的文件,然后替换原来的文件
图7 Namespace错误的修改方法,需要修改register和action space为gymnasium库,而非gym库
以上