懸崖尋路

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

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

動作空間

離散(4)

觀測空間

離散(48)

匯入

gymnasium.make("CliffWalking-v1")

懸崖尋路涉及穿過一個網格世界,從起點到達目標,同時避免掉下懸崖。

描述

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

懸崖位於 [3, 1..10] 區域。如果玩家移動到懸崖位置,將返回起始位置。

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

改編自 Sutton 和 Barto 的《強化學習:導論》例 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,《強化學習:導論》2020。[線上]。獲取地址:http://www.incompleteideas.net/book/RLbook2020.pdf

版本歷史

  • v1: 新增溼滑版本懸崖尋路

  • v0: 初始版本釋出