这里是要完成一个能玩 Nim 这个游戏的 ai,使用 Q 学习的算法
这个 Nim 的游戏大概就是:一堆火柴,玩家轮流取,谁最后取谁输

get_q_value

这里需要注意访问字典的方法,是用[ ] 而非 ( )
需要注意的是,这里的 state 是一个 list,而 list 这个类是可变的,不可哈希的(unhashable),因此不能作为字典的键来访问(键的组成元素都不行)
因此,这里需要先将 list 转换成tuple 元组,再来访问 q 值表
后续所有需要访问 q 值表的函数都需要这一步操作

update_q_value

注意新 q 的定义。按照公式计算即可

best_future_reward

这里的 q 值需要通过 get 函数来获得,而 get 函数不仅需要 state,还需要 action,因此需要先获取所有的 actions,然后再一个个遍历

choose_action

这里需要做一个随机选取的操作,随机的概率是ε,这里我没想好如何用 random 较为简单的实现,gpt 给的方案让我有很大启发
这里使用 random() 随机生成 0-1 中间的随机数,ε也在这个区间,因此只要随机数小于ε就代表随机抽中
 
notion image
至此,Nim 完成
 
现在是 2.28 凌晨,我在自习室,已经马上要到新的一天了
祝尧尧生日快乐!🎂
 
Loading...
昊卿
昊卿
一个普通的干饭人🍚
最新发布
大一上学期总结
2025-3-9
4.1 多层感知机
2025-3-7
3.4 softmax 回归
2025-3-5
3.3 线性回归的简洁实现
2025-3-5
3.2 线性回归的从零开始实现
2025-3-5
3.1 线性回归
2025-3-5