1. 找到本地gym库地址下的envs目录(对应的环境下的),可能是:python3.5/site-packages/gym/envs。envs下面有多个目录,选择一个你的环境所属的目录(不是很重要,选择相近类别即可)
2. 假如我们选择的是classic_control目录,进入该目录
3. 把自己编写的环境文件(比如gridworld.py)拷贝至该目录
4. 打开该目录下的__init__.py文件,加入如下语句:
from gym.envs.classic_control.gridworld import LargeGridWorld
from gym.envs.classic_control.gridworld import SimpleGridWorld
from gym.envs.classic_control.gridworld import WindyGridWorld
from gym.envs.classic_control.gridworld import RandomWalk
from gym.envs.classic_control.gridworld import CliffWalk
from gym.envs.classic_control.gridworld import SkullAndTreasure
5. 返回至envs目录下,打开该目录下的__init__.py文件,加入如下语句完成环境的注册:
其中每一个注册方法内的id好像一定要带上版本号,也就是id后半部分的”-v0”不能省。
register(
id='SimpleGridWorld-v0',
entry_point='gym.envs.classic_control:SimpleGridWorld',
max_episode_steps=999,
)
register(
id='CliffWalk-v0',
entry_point='gym.envs.classic_control:CliffWalk',
max_episode_steps=999,
)
register(
id='WindyGridWorld-v0',
entry_point='gym.envs.classic_control:WindyGridWorld',
max_episode_steps=999,
)
register(
id='RandomWalk-v0',
entry_point='gym.envs.classic_control:RandomWalk',
max_episode_steps=999,
)
register(
id='LargeGridWorld-v0',
entry_point='gym.envs.classic_control:LargeGridWorld',
max_episode_steps=999,
)
register(
id='SkullAndTreasure-v0',
entry_point='gym.envs.classic_control:SkullAndTreasure',
max_episode_steps=999,
)
6. 完成了上述工作后,在自己的代码里就可以直接使用下面的语句来构建相应的环境对象了:
id = “SkullAndTreasure-v0” # 设置环境id
env = gym.make(id) # 构建环境对象
env.reset() # 重置环境
env.render() # 绘制环境
Input(“press any key to continue...”)
env.close() # 关闭环境