gymnasium初步教程

文章目录

简介

gymnasium是OpenAI的强化学习(Reinforcement Learning, RL)库,提供了一套统一的Python接口,用于定义和交互单智能体强化学习环境,并内置了大量经典参考环境。pip安装即可

复制代码
pip install gymnasium -i https://pypi.tuna.tsinghua.edu.cn/simple

安装成功后,简单示例如下

这是个小车推杆(CartPole)环境,是RL领域的Hello World任务,如图可见,一个小车(Cart)可以在一维轨道上左右移动,小车上铰接着一根杆子(Pole),智能体(Agent)需要控制小车在轨道边界内向左右移动,要求杆子尽可能长时间地保持直立。

代码如下

python 复制代码
import gymnasium as gym

env = gym.make("CartPole-v1", render_mode="human")
obs, info = env.reset(seed=42)  # 重置环境获取初始观测

print(obs)  # [ 0.0273956  -0.00611216  0.03585979  0.0197368 ]

for _ in range(1000):
    action = env.action_space.sample()    # 策略选择动作 (此处为随机采样)
    obs, reward, terminated, truncated, info = env.step(action) # 执行状态转移
    # 检查回合结束条件
    if terminated or truncated:
        obs, info = env.reset()

env.close() # 释放资源

代码解析

gym.make用于创建环境,CartPole-v1是个小车推杆环境的ID,里面预置了上图中的倒立摆结构。render_mode为渲染模式,human表示在屏幕上弹出一个图形窗口,以人类可理解的帧率实时播放环境的画面。

reset用于重置环境,其输入为随机数种子,返回值为状态空间和信息。CartPole-v1环境中,状态空间包括四个值,分别是小车位置、小车速度、杆子角度、杆子角速度。

action_space是env的动作空间,在本例中,只包含 { 0 , 1 } \{0,1\} {0,1},表示向左和向右推车。sample为随机采样。在迭代过程中,这代表获取一次合法动作。

step(action)表示执行当前动作。其返回值包括

  • obs 下一时刻的观测值
  • reward 即时奖励
  • terminated 自然终止标志,表示任务彻底失败或成功,在本例中,如果Pole倒了或者小车冲出轨道,则终止运行
  • truncated 人为截断标志,表示因为环境外部的非物理限制导致的云联阶数。
  • info 一些其他信息

环境

【Env】是Gymnasium的核心类,实现了马尔可夫决策过程 (markovian decision process, MDP) 的离散时间形式化,一个MDP通常由五元组 ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)定义,参数与Env中的成员一一对应

参数 说明 成员或方法
S S S 状态空间(State Space) observation_space
A A A 动作空间(Action Space) action_space
( P , R ) (P,R) (P,R) 状态转移和奖励 step(action)

其中,step执行动作 a t a_t at后,环境根据转移概率 P ( s t + 1 ∣ s t , a t ) P(s_{t+1}\vert s_t, a_t) P(st+1∣st,at)采样出下一状态,并计算奖励 R ( s t , a t ) R(s_t, a_t) R(st,at)。

相关推荐
chansonzhang20 小时前
Multi-Agent
ai·强化学习·multi-agent
火星机器人life2 天前
从“会动”到“会学”:移动机器人学习型运动规划与控制全景综述
强化学习·运动规划·具身智能·机器人控制
lucas_AI3 天前
GAD-RL:OCR 模型总爱替图片『改错别字』?给蒸馏装一个看学生脸色的开关
强化学习
MoRanzhi12033 天前
第5篇(上)· 使用 PyQt5 实现 2048 算法求解版:五类搜索算法内核
python·启发式算法·强化学习·搜索算法·蒙特卡洛树搜索·2048游戏·expectimax
lucas_AI6 天前
P2TPO:整页文档解析只看总分是笔糊涂账——把功过算到每个 token 头上
强化学习
维度攻城狮9 天前
最基础的REINFORCE:小车倒立摆
强化学习·reinforce·小车倒立摆
盼小辉丶9 天前
PyTorch强化学习实战(29)——深入解析强化学习中的探索策略
pytorch·深度学习·强化学习
AliCloudROS10 天前
5~7 分钟跑通第一个 Agentic RL 训练:我们把 verl 全链路做成了计算巢一键服务
深度学习·强化学习
猫先生Mr.Mao10 天前
具身智能之Dex-One2Many详解:一条人类视频如何变成多种灵巧手行为
机器人·强化学习·论文解读·具身智能·灵巧手
liferecords11 天前
PolyOCR-Venus:蚂蚁把 OCR 从『抄写员』练成『视觉智能体』,教师蒸馏还会自己下岗
大模型·ocr·强化学习·多模态