gym如何搭建自己的环境

如何使用gym库来搭建自己的环境

1.创建自己的环境文件夹

1.1找到gym库的位置

这里提供2种方法来寻找gym库:

①用anaconda或者miniconda安装:

这种方法可以直接在anaconda虚拟环境的Lib\site-packages\目录下找到名为gym的文件夹:

我的文件路径:Z:\Anaconda\envs\reinforcement\Lib\site-packages\gym\envs
②普通安装:

打开cmd命令提示符,使用pip show gym指令来获得gym位置,如下图所示:

在这里插入图片描述

这里的Location和上文的不同是因为我在python默认环境和Anaconda中都装有gym,因此在找位置时要注意你所使用的环境

1.2创建你的gym环境文件夹

很多教程都是在已有的gym环境文件夹下,为了方便我选择新建一个文件夹来保存我搭建的gym环境。
Alt
该文件目录下需要有两个文件:
在这里插入图片描述
其中__init__.py只需要一句:from gym.envs.my_env.GridMap import GridEnv
其中GridMap是我环境的文件名,GridEnv如上文所述是我环境文件中构建的类名称(这个在下文详细叙述)。
GridMap.py是我用来测试环境的代码,可以直接从\envs\toy_text\cliffwalking.py复制过来。

2.注册环境

gym目录下的__init__.py文件中包含所有环境的注册信息

可以使用 print(envs.registry.all())来获取所有的gym环境:

from gym import envs
print(envs.registry.all())
#> [EnvSpec(DoubleDunk-v0), EnvSpec(InvertedDoublePendulum-v0), EnvSpec(BeamRider-v0), EnvSpec(Phoenix-ram-v0)...

首先需要打开 gym目录下的__init__.py文件,向其中插入如下内容:
在这里插入图片描述

注意:GridWorld-v0要加版本号-v0,而entry_point中不加
后续引用也是用GridWorld-v0来引用该环境

第3行from gym.envs.my_env import GridMap中的from gym.envs.my_env代表envs目录下我的文件夹名称为my_env
第11行register需要包含以下信息:
id:以后使用该环境时引用的名称
entry_point:环境文件所在的位置
max_episode_steps:一个eposide最大进行多少步就必须停止
reward_threshold:一个没有调用过的参数

github这样描述reward_threshold这个参数:

Is reward_threshold ever used?
Correct, there is no code in gym that relies on reward_threshold. It is essentially metadata that external users of the environment could use. To my understanding, in the past we used to filter the results for the env leaderboards; but those are not active anymore. Still, it can be useful for reward normalization across difference environments, or for computing aggregate statistics of sort “out of all the environments, how many did my new algorithm manage to solve”
翻译结果为:没错,gym里没有依赖reward_threshold的代码。它本质上是环境的外部用户可以使用的元数据。据我所知,过去我们习惯于过滤环境排行榜的结果;但这些不再活跃。尽管如此,它仍然可用于跨不同环境的奖励规范化,或者用于计算“在所有环境中,我的新算法设法解决了多少”的聚合统计信息。

其中的重点是第二个参数entry_point:gym.envs.my_env:GridEnvGridEnv在我的gym环境代码中:
在这里插入图片描述
至此,环境的注册就完成了,可以使用自定义的环境了。

3.测试

import gym
env = gym.make('GridWorld-v0')
env. reset ()
env. render ()

结果有输出不报错即为环境搭建成功。

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

saedpjaidp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值