DRL 訓練迴圈
為了讓代理人能反覆體驗環境,你需要建立一個訓練迴圈。
許多 DRL 演算法共用以下核心結構:
- 逐一執行多個 episode
- 在每個 episode 中逐步執行多個 step
- 每個 step:選擇動作、計算 loss,並更新網路
已提供 select_action() 與 calculate_loss() 這兩個佔位函式,讓程式碼可以執行。你也可以使用前一個練習中定義的 Network 與 optimizer。
本練習屬於課程
Python 的深度強化學習
練習說明
- 確保外層迴圈(遍歷 episodes)執行 10 個 episode。
- 確保內層迴圈(遍歷 steps)持續執行,直到該 episode 結束。
- 在
env環境中執行select_action()選出的動作。 - 在每次內層迴圈結束時,開始下一個 step 前先更新 state。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")