實作首次訪問 Monte Carlo
Monte Carlo 演算法的目標是估計 Q-table,從而導出最適策略。本練習中,你將實作「首次訪問 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())