本文内容参考:
Getting Started With OpenAI Gym | Paperspace Blog,
3. 环境(Environments)
Environment是Gym最核心的一个概念,OpenAI Gym的基本构建块是Env类。它是一个Python类,基本上实现了一个模拟器,该模拟器运行你希望在其中培训智能体的环境。OpenAI Gym有很多环境,一个Environment可以理解为一个游戏,比如你可以把车开到山上、平衡摆动的钟摆、在雅达利游戏中得分,等等。Gym也为你提供了创建自定义环境的能力。
我们从一个名为MountainCar的环境开始,目标是将车开到山顶上。车在一条一维的轨道上,位于两座“山”之间,目标是将车开到右边的山顶上。然而,这辆车的发动机不足以一次翻过这座山,因此,成功的唯一途径是来回推动以建立动量。
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_space
和action_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提供的多种数据结构之一,用于实现不同场景(离散动作空间、连续动作空间等)的观察和动作空间。
我们将在后续文章进一步探讨这些问题。