GridWorld悬崖行走

经典 Cliff Walking 导航任务的 5×5 变体:随机起点、末行随机目标、中间悬崖、Dict 结构化观测与撞墙终止,用作自定义 Gymnasium 环境与 PPO 教学基准。

简介

悬崖行走(Cliff Walking) 是强化学习教科书中的标准格子世界:智能体需从起点走到终点,途中有高惩罚「悬崖」格。标准设定多为 4×12、固定起终点、一维状态索引。

本文档库中的 GridWorld 悬崖行走变体(掘金教程实现)刻意改成更接近机器人场景的约束:

  • 网格 5×5,悬崖在第 4 行中间 3 格(列 1–3)
  • 起点随机(排除悬崖与目标),目标在最后一行列随机
  • 观测为 Dict(agent/target/cliff 归一化坐标 + boundary_flag)
  • 撞墙追加惩罚并终止(硬失败)
  • MAX_STEP = size² = 25,超时 truncated

任务示意:

. . . . .
. . . . .
. . . . .
. C C C G
. . . . A

该实体记录的是任务定义与环境设计,算法侧见 PPO / Stable Baselines3,接口侧见 Gymnasium

关键信息

  • 类型:概念 / 仿真任务 / 示例环境
  • 领域:强化学习
  • 官方网站/地址:标准 Cliff Walking 见 Gymnasium 文档;本变体见教程完整代码
  • 定价/开源状态:教程代码可复制(约 200 行)
  • 相关概念势能奖励塑形PPOGymnasium

核心特性

与标准 Cliff Walking 对比

维度标准 Cliff Walking本变体
网格4×125×5
悬崖底行中间第 4 行中间
起点固定左下随机合法格
目标固定右下末行列随机
观测一维索引Dict 多字段
边界通常无出界撞墙惩罚+终止

观测与动作

  • 动作:Discrete(4) 上下左右;坐标约定 x 为行、y 为列
  • 观测字段
    • agent / targetBox(0,1) 形状 (2,)
    • cliff(3,2) 悬崖坐标
    • boundary_flag:0 无贴边,1–4 上下左右贴边——显式边界感知,利于学「提前转弯」

奖励与终止语义

势能奖励塑形 表;infotermination_reason ∈ {running, goal, cliff, timeout}is_success

训练结果锚点(本实现)

  • 60k PPO 步后 ep_rew_mean4.38(理论完美约 4.6
  • 前期撞墙坠崖,中期学会规避,后期平台

不同素材中的观点

  • 2026-07-19-juejin-gridworld-cliff-ppo:环境是文章主体——逐段拆 __init__ / _obs / reset / step / 双渲染;强调拒绝采样重置合法起点、防御性 int(np.asarray(action).item())、ansi 服务器调试 + pygame 演示。拓展实验方向:连续动作(SAC/TD3)、随机风场、动态悬崖、部分可观测(3×3 + LSTM)、多目标。

实用信息

  • 快速上手:复制教程 GridWorldEnvcheck_env → PPO MultiInputPolicy 60k → human 渲染验证
  • 注意事项
    • 目标在代码中为「末行 + 随机列」,与示意图「固定右下 G」叙述略有教学简化,以实现代码为准
    • cliff 用 set 做 O(1) 碰撞
    • pygame 渲染不要在 step 里引入副作用状态

相关页面