首页 > 其他分享 >gym——1自定义Gym环境并注册

gym——1自定义Gym环境并注册

时间:2022-12-07 10:24:41浏览次数:60  
标签:control 自定义 envs gym py 环境 init Gym

gym1——自定义Gym环境并注册

目录

感谢

强化学习实战 第一讲 gym学习及二次开发 - 知乎 (zhihu.com)

开始

Step 0 新建文件夹

Gym的环境都保存在gym/envs目录下,envs目录下包含了各种类型的环境例如:atari、classic_control等,我们可以在这下目录自己创建一个环境,注意自己创建的环境要有

__init__.py

文件。这里下面的示例是没有自己新建,而是添加到了classic_control目录下。这样比较容易,但如果自己想要新建一个属于自己的,最好还是新建一个文件夹,然后在这个文件夹下面添加init文件,当添加init文件之后在pycharm中,文件夹显示为namespace,也就是带圈的图标。

QQ截图20221207095840

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中定义的类,并不是文件名。

)

QQ截图20221207100243

**Step3 ** 添加新建环境文件夹的引用

在envs/classic_control/init.py内,加入引用ace环境的语句**

from gym.envs.classic_control.ace import AceEnv

QQ截图20221207100434

Step4:在算法中进行调用

env = gym.make('Ace-v0')

标签:control,自定义,envs,gym,py,环境,init,Gym
From: https://www.cnblogs.com/zuti666/p/16962285.html

相关文章

  • 自定义RBAC(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 上一次把DAC、MAC、PBAC这三个都一口气介绍完了,本想一口气把RBAC也说完。想了想,饭还是要一口口吃,一次吃太多会消化不良,......
  • 自定义RBAC(2)
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上一次把DAC、MAC、PBAC这三个都一口气介绍完了,本想一口气把RBAC也说完。想了想,饭还是要一口口吃,一次吃太多会消化不良,所......
  • 强化学习如何自定义环境?【写代码的时候如何与标准接轨】
    还是需要学习如何自定义一个可以交互的环境,走上标准的道路,才能调用很多东西。摸清楚套路,然后一步一步跟着实现。Justgetclosetoyouraim!这次的环境搭建主要模......
  • 记录--uniapp自定义相机 自定义界面拍照录像闪光灯切换摄像头
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助因公司业务需要,需要开发水印相机功能,而项目代码用的uniapp框架,App端只能简单调用系统的相机,无法自定义界......
  • jsdelivr被墙,hexo-next切换为自定义CDN
    1.Next主题需要升级到8.9以上,我的是多少忘记了,最好升级到最新使用npm管理gitclonehttps://github.com/next-theme/hexo-theme-nextthemes/next2.替换链接官方......
  • vue3 input 控制小数位 自定义指令
    创建文件 globalindex.ts main.ts文件引入importglobalfrom"@/global";app.use(global)index.ts    内容import{App}from"vue";exportdefaul......
  • 自定义数据 data-*
    html:<divdata-one="1"data-two="2">dataset参数</div>JS://使用HTML5中的element.dataset操作自定义data-*数据vardiv_elem=document.qu......
  • Wix 安装部署(二)自定义安装界面和行为
        上一篇介绍了如何联合MSBuild来自动生成打包文件和对WIX的一些初步认识,http://www.cnblogs.com/stoneniqiu/p/3355086.html 。    这篇会在上篇的基......
  • Android(Lollipop/5.0) Material Design(六) 自定义动画
    官网地址:https://developer.android.com/intl/zh-tw/training/material/animations.html动画在Material设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性。M......
  • Android 自定义组件之如何实现自定义组件
    简介Android提供了用于构建UI的强大的组件模型。两个基类:View和ViewGroup。可用Widget的部分名单包括Button,TextView,EditText,ListView,CheckBox,RadioButton,Gallery,Spin......