前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!

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

作者头像
汀丶人工智能
发布2022-12-01 16:52:18
2.8K2
发布2022-12-01 16:52:18
举报
文章被收录于专栏:NLP/KG

相关文章:

【一】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是一个包含各种各样强化学习仿真环境的大集合,并且封装成通用的接口暴露给用户,查看所有环境的代码如下:

代码语言:javascript
复制
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】

代码语言:javascript
复制
 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:
代码语言:javascript
复制
我的文件路径:H:\Anaconda3-2020.02\envs\tf2\Lib\site-packages\gym\envs

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

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

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

只需要把文件复制一下重新命名,

然后再把类的名称改一下【CartPoleEnv-----→MyEnv】保存一下即可

代码语言:javascript
复制
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

代码语言:javascript
复制
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下面,方面以后查找不混淆。如果需要调整参数也可以调整像我开头说的那样

代码语言:javascript
复制
#自己创建的环境
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文件,简单测试一下

代码语言:javascript
复制
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的时候要加。 重要事情说三遍!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • gym搭建自己的环境
    • 1.获取了解环境
      • 2.编写文件放置
        • 3.注册自己的模拟器
          • 4.测试环境
            • 5.注意事项
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档