Home
Login

Gym 是一个用于开发和比较强化学习算法的工具包。它支持教学智能体(agents)如何在各种模拟环境中做出决策。

NOASSERTIONPython 36.1kopenaigym 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()

相关生态系统

推荐的学习库

  1. CleanRL - 基于Gym API的学习库

    • 面向强化学习新手
    • 提供优秀的参考实现
  2. Tianshou - 面向经验丰富用户的学习库

    • 支持复杂算法修改
    • 设计灵活
  3. RLlib - 支持分布式训练的学习库

    • 支持分布式训练和推理
    • 功能极其丰富
  4. PettingZoo - 多智能体环境库

    • 类似Gym但支持多智能体环境

版本管理

Gym采用严格的版本控制以确保可重现性:

  • 所有环境都以版本后缀结尾(如"_v0")
  • 当环境变更可能影响学习结果时,版本号递增
  • 确保实验的可重现性和一致性

MuJoCo环境更新

  • 最新的"_v4"及未来版本不再依赖mujoco-py
  • 改为使用mujoco作为必需依赖
  • 旧版本环境仍保留但不再维护

文档和资源

学术引用

项目白皮书可在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以获得最新的功能和持续的支持。

Star History Chart