แก้ปัญหา Frozen Lake ขนาด 8x8 ด้วย Q-learning
ในแบบฝึกหัดนี้ จะได้นำอัลกอริทึม Q-learning มาใช้เพื่อเรียนรู้นโยบายที่เหมาะสมสำหรับการนำทางในสภาพแวดล้อม Frozen Lake ขนาด 8x8 โดยเปิดใช้งานเงื่อนไข "slippery" ซึ่งทำให้การเคลื่อนที่ของ agent เป็นแบบสุ่ม ไม่สามารถคาดเดาได้ จึงจำลองสถานการณ์ที่ใกล้เคียงกับโลกความเป็นจริงมากขึ้น
มีการกำหนดค่าเริ่มต้นและโหลด Q-table Q ไว้ให้แล้ว พร้อมกับฟังก์ชัน update_q_table() จากแบบฝึกหัดก่อนหน้า และลิสต์ว่าง rewards_per_episode สำหรับเก็บผลรวมของ reward ที่สะสมในแต่ละ episode
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Reinforcement Learning with Gymnasium ใน Python
คำแนะนำการฝึกหัด
- ในแต่ละ episode ให้รัน action ที่เลือกและสังเกต reward กับ next state
- อัปเดต Q-table
- เพิ่ม
total_rewardเข้าไปในลิสต์rewards_per_episode
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
for episode in range(10000):
state, info = env.reset()
total_reward = 0
terminated = False
while not terminated:
action = env.action_space.sample()
# Execute the action
next_state, reward, terminated, truncated, info = ____
# Update the Q-table
____
state = next_state
total_reward += reward
# Append the total reward to the rewards list
rewards_per_episode.____(____)
print("Average reward per random episode: ", np.mean(rewards_per_episode))