相关文章:

【一】gym环境安装以及安装遇到的错误解决

【二】gym初次入门一学就会-简明教程

【三】gym简单画图

【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!

【五】gym搭建自己的环境____详细定义自己myenv.py文件

【六】gym搭建自己环境升级版设计,动态障碍------强化学习

gym搭建自己的环境

1.获取了解环境

可以通过gym.make(环境名)的方式获取gym中的环境,anaconda配置的环境,环境在Anaconda3\envs\环境名\Lib\site-packages\gym\envs\__init__.py中获得gym中所有注册的环境信息

Gym是一个包含各种各样强化学习仿真环境的大集合,并且封装成通用的接口暴露给用户,查看所有环境的代码如下:

from gym import envs
print(envs.registry.all())
#> [EnvSpec(DoubleDunk-v0), EnvSpec(InvertedDoublePendulum-v0), EnvSpec(BeamRider-v0), EnvSpec(Phoenix-ram-v0), EnvSpec(Asterix-v0), EnvSpec(TimePilot-v0), EnvSpec(Alien-v0), EnvSpec(Robotank-ram-v0), EnvSpec(CartPole-v0), EnvSpec(Berzerk-v0), EnvSpec(Berzerk-ram-v0), EnvSpec(Gopher-ram-v0), ...

Gym支持将用户制作的环境写入到注册表中,需要执行 gym.make()和在启动时注册register,同时我们可以通过写入新的注册表实现对环境中的某些参数设置进行修改:【这是个demo】

form gym.envs.registration import register
register(
id='CartPole-v2',
entry_point='gym.envs.classic_control:CartPoleEnv',
max_episode_steps=200*4,
reward_threshold=195.0*4,
)
env = gym.make('CartPole-v2')

2.编写文件放置

  • 首先找到自己的环境下面的gym环境包envs:
我的文件路径:H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs

打开后可以看到下面的文件:

  • 之后我们要创建自己的myenv.py文件,这一步很关键,很多教程在这里解释的不清楚,下面我讲详细讲述:

我们下一步要做的就是确保自己创建的环境可以在gym里使用,那么我建议我们可以选择classic_control文件里的cartpole.py来作为我们的myenv.py,简单方便。

只需要把文件复制一下重新命名,然后再把类的名称改一下【CartPoleEnv-----→MyEnv】保存一下即可

class CartPoleEnv(gym.Env):

class MyEnv(gym.Env):
  • 再者,我们需要放置文件了,文件放置有很多种方法
  • H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs\classic_control  可以直接放到文件夹里和别的py程序在一起
  • H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs\classic_control\myenv也可以单独创建一个文件夹放置【推荐这样。不容易以后混淆】

这里文件放置的目录会影响到之后gym注册情况代码添加

注意:这里不推荐把文件放到robotics、mujoco文件夹里,因为这里是gym机器人环境的编辑文件,我们放进去后在运行调试会出错{mujoco_py、mujoco提示未安装,搞搞这个就会挺麻烦的,不符合我们简单教学,之后会在补充这块创建}

3.注册自己的模拟器

再次确认我们的文件放置位置:H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs\classic_control\myenv

  • 注册环境第一步

打开__init__.py文件 添加from gym.envs.classic_control.myenv.myenv import MyEnv

from gym.envs.classic_control.cartpole import CartPoleEnv
from gym.envs.classic_control.mountain_car import MountainCarEnv
from gym.envs.classic_control.continuous_mountain_car import Continuous_MountainCarEnv
from gym.envs.classic_control.pendulum import PendulumEnv
from gym.envs.classic_control.acrobot import AcrobotEnv
#下面一句是我们自己添加的
from gym.envs.classic_control.myenv.myenv import MyEnv

这里解释一下为什么这么添加:第一个:myenv是文件夹名字  第二个:myenv是py文件的文件名   第三个:MyEnv是在文件中定义的环境类名字

{再举个例子,如果你添加方式是H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs\classic_control ,那么你在__init__.py文件添加如下

from gym.envs.classic_control.myenv import MyEnv}

  • 注册环境第二步

返回gym/envs目录,在该目录的__init__.py中注册环境:

添加自己环境,只需要把类命改成自己的即可,放置位置任意,建议放在# Classic下面,方面以后查找不混淆。如果需要调整参数也可以调整像我开头说的那样

#自己创建的环境
register(
id='MyEnv-v0',
entry_point='gym.envs.classic_control:MyEnv',
max_episode_steps=200,
reward_threshold=195.0,
) register(
id='CartPole-v0',
entry_point='gym.envs.classic_control:CartPoleEnv',
max_episode_steps=200,
reward_threshold=195.0,
)

注意:MyEnv-v0中v0代表环境类的版本号,在定义类的的时候名字里可以不加,但是在id注册的时候要加,后面import的时候要加。

至此,就完成了环境的注册,就可以使用自定义的环境了!

4.测试环境

新建一个py文件,简单测试一下

import gym

env = gym.make('MyEnv-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action

结果如下:

平衡小车环境成功。

5.注意事项

注意:MyEnv-v0中v0代表环境类的版本号,在定义类的的时候名字里可以不加,但是在id注册的时候要加,后面import的时候要加。

注意:MyEnv-v0中v0代表环境类的版本号,在定义类的的时候名字里可以不加,但是在id注册的时候要加,后面import的时候要加。

注意:MyEnv-v0中v0代表环境类的版本号,在定义类的的时候名字里可以不加,但是在id注册的时候要加,后面import的时候要加。

 

【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!的更多相关文章

  1. 四、python解释器、环境变量和多版本共存

    目录 一.python解释器 1.python发展方向 2.python解释器 1.历史 2.版本 3.下载 4.安装 5.使用 二.环境变量与多版本共存 环境变量设置 多版本共存 三.运行pytho ...

  2. 全网最新方法:Win10下如何安装和搭建appium自动化测试环境

    为了方便大家,下面是本人安装和搭建appium所需要的软件,自取. 链接:https://pan.baidu.com/s/1wl5Xnos4BmnSZsBRd6B5YA#list/path=%2F  ...

  3. 单机搭建Android开发环境(四)

    单机搭建安卓开发环境,前三篇主要是磨刀霍霍,这一篇将重点介绍JDK.REPO.GIT及编译工具的安装,下载项目代码并编译.特别说明,以下操作基于64位12.04 Server版Ubuntu.若采用其他 ...

  4. 全网最详细的大数据集群环境下多个不同版本的Cloudera Hue之间的界面对比(图文详解)

    不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 安装Hue后的一些功能 ...

  5. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  6. 在Eclipse下搭建Android开发环境教程

    我们昨天向各位介绍了<在NetBeans上搭建Android SDK环境>,前不久也介绍过<在MyEclipse 8.6上搭建Android开发环境>, 都受到了读者的欢迎.但 ...

  7. 第二章 搭建Android开发环境--读书笔记

    俗话说,工欲善其事,必先利其器,对于Android驱动开发来说,首先我们要做的就是搭建Android开发环境,我们首先要配置Linux驱动的开发环境,接着还得配置开发Android应用程序以及Andr ...

  8. 单机搭建Android开发环境(二)

    前文介绍了如何优化SSD和内存,以发挥开发主机的最佳性能,同时提到在SSD上创建虚拟机.为什么不装双系统呢?双系统性能应该会更好!采用Windows+虚拟机的方式,主要是考虑到安卓开发和日常办公两方面 ...

  9. 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程

      在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭 ...

  10. 【原创】windows下搭建vue开发环境+IIS部署

    [原创]win10下搭建vue开发环境  如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安 ...

随机推荐

  1. Pycharm 2023 年最新激活码、破解教程,亲测有用,永久有效

    申明:本教程 Pycharm 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除.若条件允许,希望大家购买正版 ! PS: 本教程最新更新时间: 2023年2月2日~ ...

  2. C++ 标准库 智能指针

    C++没有垃圾回收,因此 new 出来的对象都要自己管理 为了方便的管理内存,我们发现垃圾回收中引用计数的思路很简单就能在 C++中实现,而其实标准库中就已经有这样的实现,也就是智能指针 它们的头文件 ...

  3. Ubuntu20.04上安装MySQL8.0(绝对保证能够正常使用)

    今天在学习 Spark 连接 MySQL时发现还没安装,便参考了厦门大学实验室的Blog进行操作.但安装完成之后发现没有显示设置密码的选择,但又改不掉root密码(头开始痛起来). 故记录一下安装My ...

  4. SpringBoot-mybatisplus-模糊查询

    模糊查询如何实现如下案例中两种实现方法 第一种:利用QueryWrapper.like自己实现. 第二种:使用@TableField(condition = SqlCondition.LIKE)实现. ...

  5. kafka搭建二、集群搭建

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...

  6. vue学习笔记 十一、计算属性介绍

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  7. 每天学五分钟 Liunx 0000 | 存储篇:GlusterFS

    GlusterFS GlusterFS,是一个分布式文件系统,它通过 TCP/IP 或 IB(InfiniBand RDMA)网络将多个存储资源整合在一起,提供存储服务,具有很强的可扩展能力.   G ...

  8. SV 设计特性

    过程语句块特性 ABC 过程块语句 always_comb 防止多驱动的问题:赋值块左侧的语句无法被另一个过程块赋值 if语句没有写else,sv会提示警告,sv认为是latch always不会再仿 ...

  9. Shell-流程控制-if-then-elif

  10. 远程连接-ssh