强化学习 OpenAI GYM 创建自己的环境 (官方)

参考链接


首先放上两个链接

一个是官方自己的教程
一个是官方教程的demo

首先创建一个目录结构

gym-foo/          
  README.md   
  setup.py  
  gym_foo/        
    __init__.py
    envs/
      __init__.py
      foo_env.py
      foo_extrahard_env.py

我自己的一级目录

在这里插入图片描述
二级目录
在这里插入图片描述
三级目录
在这里插入图片描述

一级目录 gym-foo

修改 setup.py

from setuptools import setup

setup(name='gym_foo', # 你自己的二级目录的名字
      version='0.0.1',
      install_requires=['gym']  # And any other dependencies foo needs
)

二级目录 gym-foo/gym_foo/

修改 文件 _init_.py

from gym.envs.registration import register

register(
    id='foo-v0',
    entry_point='gym_foo.envs:FooEnv',
)

三级目录 gym-foo/gym_foo/envs/

1、 加上你的环境 名字命名为 foo_env .py
类名为 FooEnv 这里千万不要打错了 因为后面要注册

这里我在官方环境基础上加上了打印

import gym
from gym import error, spaces, utils
from gym.utils import seeding

class FooEnv(gym.Env):
  metadata = {'render.modes': ['human']}

  def __init__(self):

    self.action_space = spaces.Box(low=-1, high=1, shape=(3,))  # 动作空间 
    self.observation_space = spaces.Box(low=-1, high=1, shape=(1,))  # 状态空间
    print("init")

  def step(self, action):

    print("step",action)
    obs, reward, done, info = 1,2,3,4
    return obs, reward, done, info
  def reset(self):
    print("reset")



  def render(self, mode='human'):
    print("render")
  def close(self):
    print("close")

2 修改 _init_.py 文件

from gym_foo.envs.foo_env import FooEnv

安装你的环境

回到一级目录
输入命令

pip install -e gym-foo

测试

import gym
env = gym.make('my_env:test-v0')
env.reset()
for _ in range(1000):
    env.render()
    action = env.action_space.sample()
    print(action)
    env.step(action) # take a random action
env.close() # 關閉視圖

就可以看到环境的打印啦

附言 第一次需要创建自己的环境需要注意什么?

首先是奖励的设置尤为重要,

  • 对于同一类别的好坏 量纲不能差距过大,比如说好的奖励1分坏的却要惩罚-100分,
  • 奖励最好有递增或者递减的感觉,比如虽然agent犯了错误 但是不能一刀切的全部给个-100分 而是应该依据它错误的程度,犯错严重就惩罚重一些 轻就扣少一点。
  • 对于奖励或者错误的分数 如果随着训练 增幅是指数的增长的特别迅猛 则应该采取 分段奖励或者惩罚的函数,这样既能保证奖励的递增和递减也可以兼顾到量纲 让模型更容易的学习
  • 奖励最终如果还是太大或者太小 可以采取 scaling的方式
  • 动作和状态最好也要注意量纲归一化
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值