Gymnasium 简介#
Gymnasium 是开源的 Python 库,用于开发和比较强化学习算法。它通过提供标准的 API 来沟通学习算法和环境,并提供一组符合该 API 的标准环境。这是 OpenAI 的 Gym 库的分支,由其维护者(OpenAI 几年前将维护工作移交给了外部团队)负责,并且是未来维护工作进行的地方。
文档网站位于 gymnasium.farama.org,我们还提供了公共的 Discord 服务器(协调开发工作),你可以在这里加入:https://discord.gg/bnJ6kubTg6。
Gymnasium 环境#
Gymnasium 包含以下几类环境和大量的第三方环境:
经典控制 - 这些是基于现实世界问题和物理的经典强化学习环境。
Box2D - 这些环境都涉及基于物理控制的玩具游戏,使用 box2d 物理引擎和 PyGame 渲染。
Toy Text - 这些环境设计得非常简单,具有小型离散状态和动作空间,因此容易学习。结果,它们适合调试强化学习算法的实现。
MuJoCo - 基于物理引擎的环境,带有多关节控制,比 Box2D 环境更复杂。
Atari - Atari 2600 ROMs 模拟器,模拟具有高复杂度范围的代理学习环境。
第三方 - 许多兼容 Gymnasium API 的环境已经被创建。请注意软件创建时的版本,并在必要时使用 gymnasium.make 中的 apply_env_compatibility。
安装 Gymnasium#
要安装基础的 Gymnasium 库,请使用 pip install gymnasium
。
这不包括所有环境家族的依赖项(环境数量庞大,有些在某些系统上可能难以安装)。您可以为一个家族安装这些依赖项,例如使用 pip install "gymnasium[atari]"
,或者使用 pip install "gymnasium[all]"
来安装所有依赖项。
小技巧
如果 pip
安装不上 box2d-py
,可以:
conda install anaconda::swig
conda install -c conda-forge box2d-py
我们支持并测试了在 Linux 和 macOS 上的 Python 3.8、3.9、3.10、3.11 和 3.12。我们会接受与 Windows 相关的 PR,但官方不支持它。
Gymnasium API#
Gymnasium API 将环境建模为简单的 Python env 类。创建环境实例并与之交互非常简单,这里是一个使用 “CartPole-v1” 环境的示例:
import gymnasium as gym
# 初始化环境
env = gym.make("CartPole-v1")
observation, info = env.reset(seed=42) # 重置环境以生成第观测值
for _ in range(1000):
# 在这里插入你的策略
action = env.action_space.sample() # 从动作空间中随机采样动作
# 使用动作 action 通过环境进行转换
# 接收下一个观测值、奖励以及该回合(episode)是否已结束或被截断(truncated)
observation, reward, terminated, truncated, info = env.step(action)
if terminated or truncated: # 如果回合结束,则可以重置以开始新的回合
observation, info = env.reset()
env.close()
值得关注的 Gymnasium 相关库#
请注意,这是一个不完整的列表,只包括维护者在被问及推荐时最常指向新用户的库。
CleanRL 是基于 Gymnasium API 的学习库。它旨在为该领域的新手提供帮助,并提供非常好的参考实现。
PettingZoo 是 Gymnasium 的多代理版本,包含一些已实现的环境,例如多代理 Atari 环境。
Farama Foundation 还拥有许多其他由与 Gymnasium 相同的团队维护并使用 Gymnasium API 的环境集合。