OpenAI Gym支持定制我们自己的学习环境。有时候Atari Game和gym默认的学习环境不适合验证我们的算法,需要修改学习环境或者自己做一个新的游戏,比如贪吃蛇或者打砖块。已经有一些基于gym的扩展库,比如MADDPG。
我们从定向下一步步探索如何建立自己的学习环境。参考链接在文末,我综合了两篇文章结合自己的理解进行实验。OpenAI推荐的文件结构长这个样子:gym-soccer。
1.首先确定文件结构:
custom-gym/
|-- README.md
|-- setup.py
|-- custom_gym/
| |-- __init__.py
| |-- envs/
| | |-- __init__.py
| | |-- custom_env.py
| | |-- custom_env_extend.py
不用觉得文件多,我们只是搭个框架,里面要么是空的要么内容很少,我会挨个介绍。框架搭好了可以方便以后部署我们的环境。
一级目录为custom-gym. 你可以取任何不冲突的名字。包含setup.py(安装), README.md(说明书)和custom_gym文件夹(环境主体)。
二级目录为custom_gym.包含__init__.py(初始化)和envs文件夹(环境脚本)。
三级目录为envs.包含__init__.py(初始化)和两个测试环境脚本custom_env.py和custom_env_extend.py(当然你也可以只测试一个或者多加几个试试)。
2.手把手配置各个文件:
custom-gym/README.md 可以空着,等你写好坏境再写描述。
custom-gym/setup.py 应该包含:
from setuptools import setup
setup(name='custom_gym', # Secondary directory
version='0.1',
install_requires=['gym'] # And any other dependencies foo needs
)
有兴趣的同学可以参考下OpenAI官方注册格式。
custom-gym/custom_gym/__init__.py 应该包含:
from gym.envs.registration import register
register(
id='custom_env-v0', # Format should be xxx-v0, xxx-v1....
entry_point='custom_gym.envs:CustomEnv', # Expalined in envs/__init__.py
)
register(
id='custom_env_extend-v0',
entry_point='custom_gym.envs:CustomEnvExtend',
)
custom-gym/custom_gym/envs/__init__.py 应该包含:
from custom_gym.envs.custom_env import CustomEnv
from custom_gym.envs.custom_env import CustomEnvExtend
custom-gym/custom_gym/envs/custom_env.py 应该长这个样子:
import gym
class CustomEnv(gym.Env):
def __init__(self):
print('CustomEnv Environment initialized')
def step(self):
print('CustomEnv Step successful!')
def reset(self):
print('CustomEnv Environment reset')
这里省去了render,close等模块,之后的文章会在更具具体的问题来详细设置。这里只做展示目的。
同理,
custom-gym/custom_gym/envs/custom_env_extend.py 应该长这个样子:
import gym
class CustomEnvExtend(gym.Env):
def __init__(self):
print('CustomEnvExtend Environment initialized')
def step(self):
print('CustomEnvExtend Step successful!')
def reset(self):
print('CustomEnvExtend Environment reset')
3.安装与测试:
打开Anaconda Prompt(使用Anaconda安装深度强化学习请参照这里), 切换目录到一级目录custom-gym,就是包含setup.py这个文件夹。然后运行:
pip install -e .
注意那个小点不能省。
接下来就可以愉快的测试了。
import gym
import custom_gym
env = gym.make('custom_env-v0')
env.step()
env.reset()
env2 = gym.make('custom_env_extend-v0')
env2.step()
env2.reset()
参考:
https://www.datahubbs.com/building-custom-gym-environments-for-rl/