入门训练可以先选有限状态和有限动作的 FrozenLake,用 Q 表记录各状态动作的价值。下面完整训练 4000 回合,再在关闭探索的独立环境评估 100 回合。它是教学用确定性冰湖,不代表真实机器人、随机滑冰地图或多智能体问题的效果。
安装依赖并明确任务
使用 Python 3.11 与 Gymnasium 1.3.0:python -m pip install “gymnasium==1.3.0″。4×4 默认地图有 16 个状态、4 个动作,动作顺序以环境文档为准。is_slippery=False 让动作转移确定,回合仍会在落洞、到达终点或时间上限结束。成功奖励来自环境返回值,不通过猜测终止原因累计。

本例用学习率 0.2、折扣 0.95,探索率逐渐降低到 0.1;并列最大值随机打破,以免初始全零 Q 表总偏向编号最小动作。这些是示例设定,不是通用最佳参数。
保存脚本,完成训练和评估
保存为 train_lake.py 后运行 python train_lake.py。Q 更新只在真正 terminated 时去掉未来价值;时间截断不当成任务的吸收终态。每回合遇到 terminated 或 truncated 都结束当前采样。
import random
import gymnasium as gym
rng = random.Random(7)
train = gym.make("FrozenLake-v1", map_name="4x4", is_slippery=False)
q = [[0.0] * train.action_space.n for _ in range(train.observation_space.n)]
def greedy(state):
best = max(q[state])
return rng.choice([a for a, value in enumerate(q[state]) if value == best])
for episode in range(4000):
state, _ = train.reset(seed=episode)
epsilon = max(0.1, 1.0 - episode / 2000)
for _ in range(100):
action = rng.randrange(4) if rng.random() < epsilon else greedy(state)
nxt, reward, terminated, truncated, _ = train.step(action)
target = reward if terminated else reward + 0.95 * max(q[nxt])
q[state][action] += 0.2 * (target - q[state][action])
state = nxt
if terminated or truncated:
break
train.close()
evaluate = gym.make("FrozenLake-v1", map_name="4x4", is_slippery=False)
success = 0
for episode in range(100):
state, _ = evaluate.reset(seed=10000 + episode)
for _ in range(100):
action = greedy(state)
state, reward, terminated, truncated, _ = evaluate.step(action)
if terminated or truncated:
success += int(reward == 1)
break
evaluate.close()
print("evaluation successes:", success, "/ 100")
assert len(q) == 16 and len(q[0]) == 4
先验证闭环,再讨论策略效果
成功运行应打印 evaluation successes 和 100 回合中的成功数量。检查 Q 表尺寸为 16×4;评估阶段没有更新 Q,也没有 epsilon 探索。不要用训练最后一回合成功代替整个评估集。若成功数为零,先核对奖励是否被改写、地图配置、动作编号和训练回合数,再观察 Q 表是否仍全零。
确定性地图上的高成功率只说明固定地图被学会,不能证明泛化能力。想比较算法时,应固定地图、奖励和评估口径,用多个训练随机种子分别报告结果;切换 is_slippery=True 后重新训练,不能沿用确定性结果。这里没有神经网络、经验回放或多智能体协作,下一步适合先保存 Q 表并补做另一张地图的独立评估。
资料与核对依据
- https://gymnasium.farama.org/environments/toy_text/frozen_lake/
- https://gymnasium.farama.org/tutorials/training_agents/frozenlake_q_learning/
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32976.html