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

1.Gym是什么

我们为什么要用gym呢?因为gym中封装了很多强化学习的环境,我们在入门或者研究DRL时可以轻视调用gym中写好的环境,帮助我们快速完成任务。
OpenAI Gym 是一个环境仿真库,里面包含了很多现有的环境。针对不同的场景,我们可以选择不同的环境,主要有两类环境一类是离散的,一类是连续的。

Gym学习(1)基本的环境搭建与参数含义_第1张图片

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()

Gym学习(1)基本的环境搭建与参数含义_第2张图片
终端输出的包含四个数的列表的数值内容如下:
Gym学习(1)基本的环境搭建与参数含义_第3张图片

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还有很多其他环境
Gym学习(1)基本的环境搭建与参数含义_第4张图片
想要了解更多可以点击下面的参考链接更深入学习

本文参考自:
https://datawhalechina.github.io/easy-rl/#/chapter1/chapter1
https://gym.openai.com/docs/
https://zhuanlan.zhihu.com/p/409284868

你可能感兴趣的:(gym学习,gym,python,DRL)