Frozen Lake(冰冻湖)¶

此环境是 Toy Text 环境的一部分,其中包含有关环境的常规信息。
动作空间 |
|
观测空间 |
|
import |
|
冰冻湖涉及穿过冰冻的湖面,从起点到达目标点,同时避免掉入冰面上的洞中。由于冰冻湖面的湿滑特性,玩家可能并不总是朝着预期的方向移动。
描述¶
游戏开始时,玩家位于冰冻湖网格世界的 [0,0] 位置,目标位于世界的远端,例如 4x4 环境的 [3,3]。
当使用预先确定的地图时,冰洞分布在设定的位置,当生成随机地图时,冰洞分布在随机位置。
玩家持续移动直到到达目标或掉入洞中。
湖面是湿滑的(除非禁用),因此玩家有时可能会垂直于预期方向移动(参见 is_slippy
)。
随机生成的世界将始终具有到达目标的路径。
Elf 和 stool 来自 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_slippy
。
参数¶
import gymnasium as gym
gym.make('FrozenLake-v1', desc=None, map_name="4x4", is_slippery=True)
desc=None
:用于指定非预加载地图。
指定自定义地图。
desc=["SFFF", "FHFH", "FFFH", "HFFG"].
图块字母表示
“S” 表示起始图块
“G” 表示目标图块
“F” 表示冰冻图块
“H” 表示带有洞的图块
可以通过调用函数 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
,则将生成一个随机的 8x8 地图,其中 80% 的位置是冰冻的。
is_slippy=True
:如果为 true,则玩家将以 1/3 的概率朝预期方向移动,否则将以 1/3 的相等概率朝任一垂直方向移动。
例如,如果动作为向左移动且 is_slippy 为 True,则
P(向左移动)=1/3
P(向上移动)=1/3
P(向下移动)=1/3
版本历史¶
v1:奖励的 Bug 修复
v0:初始版本发布