实现 First-Visit Monte Carlo
Monte Carlo 算法的目标是估计 Q 表,从而导出最优策略。本练习中,您将实现 First-Visit Monte Carlo 方法来估计动作-价值函数 Q,然后计算最优策略以解决您在上一个练习中见到的自定义环境。计算回报时,假设折扣因子为 1。
已为您初始化并预加载了 numpy 数组 Q、returns_sum 和 returns_count,分别用于存储 Q 值、奖励的累积和,以及每个状态-动作对的访问次数。
本练习是课程的一部分
Python 中的 Gymnasium 强化学习
练习说明
- 定义首次访问 Monte Carlo 算法中需要检查的
if条件。 - 更新回报(
returns_sum)、其计数(returns_count)以及visited_states。
交互式实操练习
通过完成这段示例代码来试试这个练习。
for i in range(100):
episode = generate_episode()
visited_states = set()
for j, (state, action, reward) in enumerate(episode):
# Define the first-visit condition
if ____ not in ____:
# Update the returns, their counts and the visited states
returns_sum[state, action] += ____([____ for ____ in ____])
returns_count[state, action] += ____
visited_states.____(____)
nonzero_counts = returns_count != 0
Q[nonzero_counts] = returns_sum[nonzero_counts] / returns_count[nonzero_counts]
render_policy(get_policy())