本文内容参考:

Getting Started With OpenAI Gym | Paperspace Blog

【强化学习】 OpenAI Gym入门:基础组件(Getting Started With OpenAI Gym: The Basic Building Blocks)_iioSnail的博客-CSDN博客

3. 环境(Environments)

Environment是Gym最核心的一个概念,OpenAI Gym的基本构建块是Env类。它是一个Python类,基本上实现了一个模拟器,该模拟器运行你希望在其中培训智能体的环境。OpenAI Gym有很多环境,一个Environment可以理解为一个游戏,比如你可以把车开到山上、平衡摆动的钟摆、在雅达利游戏中得分,等等。Gym也为你提供了创建自定义环境的能力。

我们从一个名为MountainCar的环境开始,目标是将车开到山顶上。车在一条一维的轨道上,位于两座“山”之间,目标是将车开到右边的山顶上。然而,这辆车的发动机不足以一次翻过这座山,因此,成功的唯一途径是来回推动以建立动量。

OpenAI Gym入门与实操(2)-LMLPHP

The goal of the Mountain Car Environment is to gain momentum and reach the flag.

这个让小车到达山顶就是一个简单的游戏。你可以通过一个如下代码来加载该Environment:

import gym
env = gym.make('MountainCar-v0')

其返回的是一个Env对象。 

环境的基本结构由Gym Env类的observation_space和action_space属性描述。observation_space定义了环境状态观测的结构和合法值。对于不同的环境,观察可以是不同的事物。最常见的形式是游戏的屏幕截图。也可以有其它形式的观测,例如以矢量形式描述的环境的某些特征。

类似地,Env类还定义了一个名为action_space的属性,该属性描述了可以应用于环境的合法操作的数字结构。

  • Action

Action就是Agent可以做出的动作,通常分为离散和连续两种。

  • Observation

游戏Observation的状态。

通过以下命令查看env对象的observation_spaceaction_space属性值:

# Observation and action space 
obs_space = env.observation_space
action_space = env.action_space
print("The observation space: {}".format(obs_space))
print("The action space: {}".format(action_space))

结果如下:

The observation space: Box(2,)
The action space: Discrete(3)

Observation Shape为(2, ) 表示该Environment的Observation是一个2维向量;Discrete(3)表示该Agent可以做3种不同的动作。

对mountain car环境的Observation是一个表示速度和位置的两个数字的矢量。以两山的中点为原点,右为正方向,左为负方向。

Observation空间和Action空间分别由称为Box和Discrete的类表示。这些是Gym提供的多种数据结构之一,用于实现不同场景(离散动作空间、连续动作空间等)的观察和动作空间。

我们将在后续文章进一步探讨这些问题。

07-03 17:16