冰凍湖¶

此環境是玩具文字環境的一部分,其中包含有關環境的一般資訊。
動作空間 |
|
觀察空間 |
|
import |
|
冰凍湖涉及從起點穿過冰凍的湖泊到達目標,而不會因在冰凍的湖面上行走而掉入任何洞中。由於冰凍湖的濕滑性質,玩家可能無法始終朝著預期的方向移動。
描述¶
遊戲開始時,玩家位於冰凍湖網格世界的 [0,0] 位置,目標位於世界的遠處,例如 4x4 環境中的 [3,3]。
當使用預先確定的地圖時,冰洞分佈在設定的位置,或者當生成隨機地圖時,冰洞分佈在隨機位置。
玩家會移動,直到他們到達目標或掉入洞中。
湖面是濕滑的(除非禁用),因此玩家有時可能會垂直於預期方向移動(請參閱is_slippery
)。
隨機生成的世界將始終具有通往目標的路徑。
來自https://franuka.itch.io/rpg-snow-tileset的精靈和凳子。所有其他資產均由 Mel Tillery 提供http://www.cyaneus.com/。
動作空間¶
動作形狀為(1,)
,範圍為{0, 3}
,表示移動玩家的方向。
0:向左移動
1:向下移動
2:向右移動
3:向上移動
觀察空間¶
觀察值是一個值,表示玩家當前位置為 current_row * ncols + current_col(其中行和列都從 0 開始)。
例如,4x4 地圖中的目標位置可以計算如下:3 * 4 + 3 = 15。可能觀察的數量取決於地圖的大小。
觀察值以int()
形式傳回。
起始狀態¶
回合開始時,玩家處於狀態[0]
(位置 [0, 0])。
獎勵¶
獎勵時間表
到達目標:+1
到達洞:0
到達冰凍:0
回合結束¶
如果發生以下情況,回合將結束
終止
玩家移動到洞中。
玩家到達
max(nrow) * max(ncol) - 1
(位置[max(nrow)-1, max(ncol)-1]
)的目標。
截斷(使用 time_limit 包裝器時)
對於 4x4 環境,回合長度為 100,對於 FrozenLake8x8-v1 環境,回合長度為 200。
資訊¶
step()
和reset()
傳回包含以下鍵的字典
p - 狀態的轉換機率。
有關轉換機率資訊,請參閱is_slippery
。
參數¶
import gymnasium as gym
gym.make('FrozenLake-v1', desc=None, map_name="4x4", is_slippery=True)
desc=None
:用於指定非預先載入的地圖。
指定自訂地圖。
desc=["SFFF", "FHFH", "FFFH", "HFFG"].
可以透過呼叫函數generate_random_map
來指定隨機生成的地圖。
from gymnasium.envs.toy_text.frozen_lake import generate_random_map
gym.make('FrozenLake-v1', desc=generate_random_map(size=8))
map_name="4x4"
:用於使用任何預先載入的地圖的 ID。
"4x4":[
"SFFF",
"FHFH",
"FFFH",
"HFFG"
]
"8x8": [
"SFFFFFFF",
"FFFFFFFF",
"FFFHFFFF",
"FFFFFHFF",
"FFFHFFFF",
"FHHFFFHF",
"FHFFHFHF",
"FFFHFFFG",
]
如果desc=None
,則將使用map_name
。如果desc
和map_name
都是None
,則將生成具有 80% 位置冰凍的隨機 8x8 地圖。
is_slippery=True
:如果為 true,則玩家將以 1/3 的機率朝預期方向移動,否則將以 1/3 的均等機率朝任一垂直方向移動。
例如,如果動作是向左,且 is_slippery 為 True,則
P(向左移動)=1/3
P(向上移動)=1/3
P(向下移動)=1/3
版本歷史¶
v1:修復了獎勵的錯誤
v0:初始版本發布