强化学习找金币游戏Gym环境测试调试问题
下图为机器人在网格世界找金币的示意图。该网格世界一共有8个状态,其中状态6和状态8为死亡区域,状态7为金币区域。机器人的初始位置为网格世界中任意一个状态。机器人从初始状态出发寻找金币。机器人进行一次探索,进入死亡区域或找到金币,本次探测结束。
机器人找到金币的回报为1,进入死亡区域回报为-1,机器人在区域1-5之间转换时,回报为0。
目标是找到一个策略使得机器人不管处在什么状态(1-5)都能找到金币。
在《深入浅出强化学习:原理入门》一书中给出找金币游戏的Gym开发环境代码,grid_mdp.py文件中。如下:https://github.com/gxnk/reinforcement-learning-code
为自己强化学习代码在Gym中进行环境配置
- 第⼀步,将我们⾃⼰的环境⽂件(grid_mdp.py) 拷⻉gym安装⽬录/gym/envs/classic_control⽂件夹中(拷⻉在此⽂件夹中是因为要使⽤rendering模块)。
- 第⼆步,打开该⽂件夹(第⼀步中的⽂件夹)下的_init_.py⽂件, 在⽂件末尾加⼊语句:
from gym.envs.classic_control.grid_mdp import GridEnv - 第三步,进⼊⽂件夹的gym安装⽬录/gym/gym/envs,打开该⽂件夹下 的_init_.py⽂件,添加代码如下。 第⼀个参数id就是你调⽤gym.make(‘id’)时的id,这个id可以随便选取,源代码取名GridWorld-v0。
register(
id='GridWorld-v0',
entry_point='gym.envs.classic_control:GridEnv',
max_episode_steps=200