悬崖漫步

../../../_images/cliff_walking.gif

此环境是玩具文本环境的一部分,其中包含有关环境的一般信息。

动作空间

Discrete(4)

观察空间

Discrete(48)

导入

gymnasium.make("CliffWalking-v0")

悬崖漫步涉及在网格世界中从起点到终点,同时避免从悬崖上掉下来。

描述

游戏从玩家位于 4x12 网格世界的 [3, 0] 位置开始,目标位于 [3, 11]。如果玩家到达目标,则剧集结束。

悬崖沿着 [3, 1..10] 延伸。如果玩家移动到悬崖位置,则返回起始位置。

玩家进行移动,直到他们到达目标。

改编自 Sutton 和 Barto 的《强化学习:入门》[1] 中的示例 6.6(第 132 页)。

可以将悬崖设置为光滑的(默认情况下禁用),因此玩家有时可能会垂直于预期方向移动(请参阅 is_slippery)。

灵感来自:https://github.com/dennybritz/reinforcement-learning/blob/master/lib/envs/cliff_walking.py

动作空间

动作形状为 (1,),范围为 {0, 3},指示玩家移动的方向。

  • 0:向上移动

  • 1:向右移动

  • 2:向下移动

  • 3:向左移动

观察空间

共有 3 x 12 + 1 个可能的状态。玩家不能位于悬崖上,也不能位于目标上,因为后者会导致剧集结束。剩下的就是前三行的所有位置加上左下角的单元格。

观察是一个值,表示玩家当前的位置,如 current_row * ncols + current_col(其中行和列都从 0 开始)。

例如,起始位置可以按如下方式计算:3 * 12 + 0 = 36。

观察结果以 int() 的形式返回。

起始状态

剧集从玩家处于状态 [36](位置 [3, 0])开始。

奖励

每次时间步都会产生 -1 奖励,除非玩家踏入悬崖,则产生 -100 奖励。

剧集结束

当玩家进入状态 [47](位置 [3, 11])时,剧集终止。

信息

step()reset() 返回一个字典,其中包含以下键

  • “p” - 状态的转移概率。

由于悬崖漫步不是随机的,因此返回的转移概率始终为 1.0。

参数

import gymnasium as gym
gym.make('CliffWalking-v1')

参考文献

[1] R. Sutton 和 A. Barto,“强化学习:入门” 2020 年。[在线]。可从:http://www.incompleteideas.net/book/RLbook2020.pdf

版本历史

  • v1:添加悬崖漫步的光滑版本

  • v0:初始版本发布