Gym 是一个用于开发和比较强化学习算法的工具包。它支持教学智能体(agents)如何在各种模拟环境中做出决策。
NOASSERTIONPython 36.2kopenaigym Last Updated: 2024-10-11
OpenAI Gym 项目详细介绍
项目概述
OpenAI Gym是一个开源的Python库,专门用于开发和比较强化学习算法。它通过提供标准化的API来连接学习算法和环境,并提供了一套符合该API标准的环境集合。自发布以来,Gym的API已经成为强化学习领域的标准。
⚠️ 重要声明
项目维护状态变更:自2021年以来一直维护Gym的团队已将所有未来开发工作转移到 Gymnasium,这是Gym的直接替代品(可以使用 import gymnasium as gym
)。Gym将不再接收任何未来更新,建议用户尽快切换到Gymnasium。
核心特性
标准化API
- 提供统一的接口用于强化学习算法与环境之间的通信
- 简化环境创建和交互过程
- 成为强化学习领域的API标准
丰富的环境库
- 包含大量预定义的强化学习环境
- 支持多种类型的任务和挑战
- 环璝遵循统一的接口标准
安装方法
基础安装
pip install gym
特定环境族安装
# 安装Atari环境依赖
pip install gym[atari]
# 安装所有环境依赖
pip install gym[all]
# 安装MuJoCo环境依赖(最新版本)
pip install gym[mujoco]
# 安装MuJoCo环境依赖(旧版本)
pip install gym[mujoco_py]
系统支持
- Python版本:支持Python 3.7, 3.8, 3.9, 3.10
- 操作系统:官方支持Linux和macOS
- Windows:接受相关PR但不提供官方支持
基本使用示例
import gym
# 创建环境
env = gym.make("CartPole-v1")
# 重置环境
observation, info = env.reset(seed=42)
# 环境交互循环
for _ in range(1000):
# 随机选择动作
action = env.action_space.sample()
# 执行动作
observation, reward, terminated, truncated, info = env.step(action)
# 检查是否需要重置
if terminated or truncated:
observation, info = env.reset()
# 关闭环境
env.close()
相关生态系统
推荐的学习库
CleanRL - 基于Gym API的学习库
- 面向强化学习新手
- 提供优秀的参考实现
Tianshou - 面向经验丰富用户的学习库
- 支持复杂算法修改
- 设计灵活
RLlib - 支持分布式训练的学习库
- 支持分布式训练和推理
- 功能极其丰富
PettingZoo - 多智能体环境库
- 类似Gym但支持多智能体环境
版本管理
Gym采用严格的版本控制以确保可重现性:
- 所有环境都以版本后缀结尾(如"_v0")
- 当环境变更可能影响学习结果时,版本号递增
- 确保实验的可重现性和一致性
MuJoCo环境更新
- 最新的"_v4"及未来版本不再依赖
mujoco-py
- 改为使用
mujoco
作为必需依赖 - 旧版本环境仍保留但不再维护
文档和资源
- 官方文档:https://www.gymlibrary.dev/
- Discord服务器:开发讨论社区
- GitHub仓库:https://github.com/openai/gym
学术引用
项目白皮书可在arXiv获取,引用格式:
@misc{1606.01540,
Author = {Greg Brockman and Vicki Cheung and Ludwig Pettersson and Jonas Schneider and John Schulman and Jie Tang and Wojciech Zaremba},
Title = {OpenAI Gym},
Year = {2016},
Eprint = {arXiv:1606.01540},
}
项目状态总结
OpenAI Gym作为强化学习领域的开创性工具,建立了行业标准并培育了庞大的生态系统。虽然原项目不再积极维护,但其继任者Gymnasium继承了所有核心功能,确保了社区的持续发展。对于新项目,强烈建议直接使用Gymnasium以获得最新的功能和持续的支持。