【深度强化学习】《强化学习》Monte-Carlo 算法代码实现

《强化学习》中的案例是扑克游戏“21点”。

游戏规则:扑克牌的点数之和在不超过21的情况下越大越好。所有的人头牌(J, Q, K)的点数都为10,A 既可以当作 1,也可以当作 11。假设每一个玩家都独立地与庄家进行比赛。游戏开始时会给各玩家与庄家发两张牌。庄家地牌一张正面朝上一张背面朝上。玩家直接获得21点(天和),则玩家直接获胜,除非庄家也是天和,那就是平局。如果玩家不是天和,那么他可以一张一张地继续要牌,直到他主动停止或者手牌点数超过21点(爆牌)。如果玩家爆牌了就算输掉比赛。如果玩家选择停牌,就轮到庄家行动。庄家根据一个固定地策略进行游戏:他一直要牌,直到点数等于或者超过17时停牌。如果庄家爆牌,那么玩家获胜,否则根据谁的点数更靠近21点决定胜负或平局。

首先对游戏进行相关的定义,包括停牌要牌,庄家的固定策略,玩家的策略。这里假设玩家的策略是只在20和21点时候停牌,其他时候都要牌。

然后是对游戏过程进行定义,其步骤分别是初始化开局状态(若给出则不用初始化),玩家回和(玩家根据策略要牌,直至停牌)和庄家回和(庄家要牌直至停牌),最后通过进行比牌分出胜负。


Monte-Carlo 预测

 使用 Monte-Carlo on-policy  的算法评估计算得到的近似状态价值。

 把对应的状态价值画出来。

 可以得到:


 Monte-Carlo ES 算法

ES,即试探性出发。第一个episode使用之前的策略,往后的episode使用贪心策略来提升策略。

 画出图像:

 得到:

おすすめ

転載: blog.csdn.net/weixin_41960890/article/details/120946257