懸崖漫步

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

此環境是玩具文字環境的一部分,其中包含關於環境的一般資訊。

動作空間

Discrete(4)

觀察空間

Discrete(48)

import

gymnasium.make("CliffWalking-v0")

懸崖漫步涉及穿越網格世界,從起點到終點,同時避免掉下懸崖。

描述

遊戲開始時,玩家位於 4x12 網格世界的 [3, 0] 位置,目標位於 [3, 11]。如果玩家到達目標,則回合結束。

懸崖沿著 [3, 1..10] 延伸。如果玩家移動到懸崖位置,它會返回起始位置。

玩家持續移動直到他們到達目標。

改編自 Sutton 和 Barto 的《Reinforcement Learning: An Introduction》範例 6.6(第 132 頁) [1]。

懸崖可以選擇是滑的(預設停用),因此玩家有時可能會垂直於預期方向移動(請參閱 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 個可能的狀態。玩家不能在懸崖上,也不能在目標位置,因為後者會導致回合結束。剩下的是前 3 行的所有位置加上左下角的單元格。

觀察值是一個值,表示玩家當前位置為 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,“Reinforcement Learning: An Introduction” 2020。[線上]。可於:http://www.incompleteideas.net/book/RLbook2020.pdf

版本歷史

  • v1:新增懸崖漫步的滑溜版本

  • v0:初始版本發佈