gym1——自定义Gym环境并注册
目录感谢
强化学习实战 第一讲 gym学习及二次开发 - 知乎 (zhihu.com)
开始
Step 0 新建文件夹
Gym的环境都保存在gym/envs目录下,envs目录下包含了各种类型的环境例如:atari、classic_control等,我们可以在这下目录自己创建一个环境,注意自己创建的环境要有
__init__.py
文件。这里下面的示例是没有自己新建,而是添加到了classic_control目录下。这样比较容易,但如果自己想要新建一个属于自己的,最好还是新建一个文件夹,然后在这个文件夹下面添加init文件,当添加init文件之后在pycharm中,文件夹显示为namespace,也就是带圈的图标。
Step1:新建环境文件 xxEnv.py
在envs/classic_control目录下,建立环境文件aceEnv.py
aceEnv.py中应定义一个环境类一般以XxxEnv为名称,本文建立类名称为AceEnv,
按照gym的工作原理,此类中应至少包含reset()、step()、init()、seed()、close()函数,
其中,step函数必须返回obs, reward, done, info四个变量,
reset返回初始化的状态。(注:此部分的函数定义格式可以参考classic_control内的其他函数,着重是要按照需求更改step和reset函数)。
另外需要对环境的主要变量维数进行定义,方便外部强化学习算法直接调用生成模型网络,例如控制量维度action_space、状态量维度observation_space等。
Step2: 在env下的_ _ init _ _ .py下注册
在envs目录下,包含一个初始化函数_ _ init _ _ .py,当访问envs类时,会通过这个初始化函数自动注册各环境,因此需要在__init__环境中注册我们定义的环境,给出其调用名“ID”以及此“ID”对应的类。
在envs/init.py内的#Classic分类下,插入注册语句:
register(
id='Ace-v0', %%此部分为环境调用的ID,可自由设定,与算法中调用一致即可。
entry_point='gym.envs.classic_control:AceEnv', %%此部分为环境的类,注意:AceEnv是aceEnv.py中定义的类,并不是文件名。
)
**Step3 ** 添加新建环境文件夹的引用
在envs/classic_control/init.py内,加入引用ace环境的语句**
from gym.envs.classic_control.ace import AceEnv
Step4:在算法中进行调用
env = gym.make('Ace-v0')
标签:control,自定义,envs,gym,py,环境,init,Gym From: https://www.cnblogs.com/zuti666/p/16962285.html