Gym学习(1)基本的环境搭建与参数含义

  • Post author:
  • Post category:其他




1.Gym是什么

我们为什么要用gym呢?因为gym中封装了很多强化学习的环境,我们在入门或者研究DRL时可以轻视调用gym中写好的环境,帮助我们快速完成任务。

OpenAI Gym 是一个环境仿真库,里面包含了很多现有的环境。针对不同的场景,我们可以选择不同的环境,主要有两类环境一类是离散的,一类是连续的。

在这里插入图片描述

强化学习过程



2.Gym怎么安装

安装的话很容易,在终端中输入以下命令即可

pip install gym

在使用过程中可以会报错缺少其他包,比如pyglet等。此时直接pip安装就行。



3.Gym的经典代码是什么样的

下面给出一个经典示例展示一个简单的gym环境

CartPole-v0

包含哪些参数:

import gym  # 导入 Gym 的 Python 接口环境包
env = gym.make('CartPole-v0')  # 构建实验环境
env.reset()  # 重置一个 episode
for _ in range(1000):
    env.render()  # 显示图形界面
    action = env.action_space.sample()   # 从动作空间中随机选取一个动作
    observation, reward, done, info = env.step(action)  # 用于提交动作,括号内是具体的动作
    print(observation)
env.close()

在这里插入图片描述

终端输出的包含四个数的列表的数值内容如下:

在这里插入图片描述



4.Gym中的参数都是什么意思


env.reset()

在强化学习中,智能体要通过多次尝试来积累经验,从中学到各种状态下哪个行动最好。一次尝试称为一个 episode,每次尝试都要到达终止状态。一次尝试结束后,智能体需要从头开始,因此智能体需要有初始化的功能。


env.render()

类似于一个图像引擎,用于显示环境中的物体图像。首先导入rendering模块,利用rendering模块中的画图函数进行图形的绘制。然后用

cart = rendering.FilledPolygon()

创建小车,然后给 cart 添加平移和旋转属性。


env.action_space.sample()

的含义是,在该游戏的所有动作空间里随机选择一个作为输出。在这个例子中,意思就是,动作只有两个:0 和 1,一左一右。


env.step()

这个方法的作用不止于此,它还有四个返回值,分别是observation、reward、done、info。


observation(object)

是状态信息,是在游戏中观测到的屏幕像素值或者盘面状态描述信息。


reward(float)

是奖励值,即 action 提交以后能够获得的奖励值。这个奖励值因游戏的不同而不同,但总体原则是,对完成游戏有帮助的动作会获得比较高的奖励值。


done(boolean)

表示游戏是否已经完成。如果完成了,就需要重置游戏并开始一个新的 episode。


info(dict)

是一些比较原始的用于诊断和调试的信息,或许对训练有帮助。不过,OpenAI 团队在评价你提交的机器人时,是不允许使用这些信息的。

每个环境都定义了自己的观测空间和动作空间。环境 env 的观测空间用

env.observation_space

表示,动作空间用

env.action_space

表示。观测空间和动作空间既可以是离散空间(即取值是有限个离散的值),也可以是连续空间(即取值是连续的)。在 Gym 库中,离散空间一般用

gym.spaces.Discrete

类表示,连续空间用

gym.spaces.Box

类表示。

例如,环境’MountainCar-v0’的观测空间是

Box(2,)

,表示观测可以用 2 个 float 值表示;环境’MountainCar-v0’的动作空间是

Dicrete(3)

,表示动作取值自{0,1,2}。对于离散空间,

gym.spaces.Discrete

类实例的成员 n 表示有几个可能的取值;对于连续空间,

Box

类实例的成员 low 和 high 表示每个浮点数的取值范围。

import gym
env = gym.make('CartPole-v0')
print('观测空间 = {}'.format(env.observation_space))
print('动作空间 = {}'.format(env.action_space))
print('观测范围 = {} ~ {}'.format(env.observation_space.low,
        env.observation_space.high))
print('动作数 = {}'.format(env.action_space.n))
观测空间 = Box([-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38], (4,), float32)
动作空间 = Discrete(2)
观测范围 = [-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38] ~ [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]
动作数 = 2

除了上面的小车木杆的环境,gym还有很多其他环境

在这里插入图片描述

想要了解更多可以点击下面的参考链接更深入学习

本文参考自:


https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1



https://gym.openai.com/docs/



https://zhuanlan.zhihu.com/p/409284868



版权声明:本文为qq_47997583原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。