Gambler's Problem,即“赌徒问题”,是一个经典的动态编程里值迭代应用的问题。

在一个掷硬币游戏中,赌徒先下注,如果硬币为正面,赌徒赢回双倍,若是反面,则输掉赌注。赌徒给自己定了一个目标,本金赢到100块或是输光就结束游戏。找到一个关于本金与赌注之间关系的策略使得赌徒最快赢到100块。状态s = {1, 2, 3...., 99, 100},动作a = {1, 2, 3, ...., min(s, 100 - s)}。奖励设置:只有当赌徒赢到100块时奖励+1,其余状态奖励为0。

这个问题并不难,最优policy一定是min(s, 100-s),这里就不分析了,直接给出计算程序

clear
clc
%% Initialize
Q = zeros(101);
ActionProb = Q + 1/100;
V = zeros(1, 101);
R = V;
R(1, 101)  = 1;
V = R;
hp = 0.4;
i = 0;
delta = 100;
gamma = 0.5;
capital = [1:99];
num = 1;%% Value Iteration
while(num < 10)while(i < num)delta = 0;capital = [1:99];for state = [1:99]actions = [1:min(capital(state), 100 - capital(state))];PossibleStateLose = capital(state) - actions + 1;PossibleStateWin = capital(state) + actions + 1;%Q(state + 1, actions) = gamma*(hp*V(PossibleStateWin) + (1 - hp)*V(PossibleStateLose)) + R(PossibleStateWin) + R(PossibleStateLose);Q(state + 1, actions) = hp*V(PossibleStateWin) + (1 - hp)*V(PossibleStateLose);[MAX index] = max(Q(state + 1, :));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Softmax Policy:%ActionProb(state, :) = 0;%ActionProb(state, :) = exp(Q(state, :)/0.02)/sum(exp(Q(state, :)/0.02));%R(state + 1) = ActionProb(state, :)*Q(state, :)';%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%V(state + 1) = MAX;endi = i + 1;endplot(V, 'LineWidth', 2)hold onnum = num + 1;grid on
end
%%
figure
for state = 1:100[MAX index] = max(Q(state, :));Map(state) = index;plot(state, index, 'bo')hold on
end%%Test Part
iter = 1;
count = zeros(1, 100);
flag = count;
Mflag = zeros(1, 100);
while(iter < 1000)
Mflag = zeros(1, 100);
Mcount = Mflag;for state = 1:100capital = state;while(1)if(capital >= 100)breakendstake = Map(capital);%stake = min(capital, 100 - capital);if(rand < 0.4)capital = capital + stake;elsecapital = capital - stake;endif(capital <= 0)flag(state) = flag(state) + 1;Mflag(state) = Mflag(state) + 1;breakelsecount(state) = count(state) + 1;Mcount(state) = Mcount(state) + 1;endend
end
%figure
%plot(find(flag~=1), count(find(flag ~= 1)), 'bo')
FT(iter) = sum(Mflag)/100;
ST(iter) = mean(Mcount(find(Mflag ~= 1)));
iter = iter + 1;
end
figure
plot(1 - flag/1000, 'bo')
figure
plot(count/1000)
mean(1-FT)
mean(ST)

  

转载于:https://www.cnblogs.com/Jinyublog/p/9333229.html

【RL系列】马尔可夫决策过程——Gambler's Problem相关推荐

  1. Easy RL - 2.马尔可夫决策过程

    关键词 马尔可夫性质(Markov property,MP):如果某一个过程未来的状态与过去的状态无关,只由现在的状态决定,那么其具有马尔可夫性质.换句话说,一个状态的下一个状态只取决于它的当前状态, ...

  2. MATLAB马尔科夫决策过程遗传,科学网—【RL系列】马尔可夫决策过程与动态编程笔记 - 管金昱的博文...

    推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit) 本篇 马尔可夫决策过程 马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动 ...

  3. 强化学习蘑菇书Easy RL第二、三章学习(马尔可夫决策过程、表格型方法)

    马尔可夫决策过程概述 Markov Process(MP)通常来说是未来状态的条件概率分布仅依赖于当前的状态.在离散随机过程里,我们需要把随机变量所有可能取值的集合放到一个状态空间里,在强化学习里,我 ...

  4. 【RL】Markov decision process马尔可夫决策过程(MDP)

    参考:蘑菇书-<EasyRL> 本文只是为了方便自己今后的查阅对原文做出的一些概括与摘录,与大家共同学习. PS:上一节->马尔可夫奖励过程 目录 1.马尔可夫决策过程 2.策略π ...

  5. 马尔可夫决策过程 Markov decision process MDP, 连续时间Markov chain, CMDP(全)

    引言 在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名.马尔可夫过程是不具备记忆特质的(memoryless ...

  6. (二)马尔可夫决策过程

      从第一章中了解到强化学习中,智能体通过和环境进行交互获得信息.这个交互过程可以通过马尔可夫决策过程来表示,所以了解一下什么是MDP至关重要.   不过在了解马尔可夫决策过程之前,先要一些预备知识, ...

  7. DeepMind 的马尔可夫决策过程(MDP)课堂笔记

    DeepMind Teaching by David Silver 视频课程链接(Youtube资源,需梯子):https://youtu.be/lfHX2hHRMVQ 文章目录 DeepMind T ...

  8. 马尔可夫决策过程(Markov Decision Process, MDP)

    马尔可夫决策过程(Markov Decision Processes,MDPs) MDPs 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Rewa ...

  9. 决策过程并举例_David Silver 增强学习——Lecture 2 马尔可夫决策过程(一)

    其他lecture [1]搬砖的旺财:David Silver 增强学习--笔记合集(持续更新) 目录 **David Silver 增强学习--Lecture 2 马尔可夫决策过程(一)**1. 前 ...

最新文章

  1. 2013年4月20日 通用权限管理系统组件V3.8功能改进说明
  2. python 操作redis之——HyperLogLog (八)
  3. asp网页提升速度方法5则_asp技巧
  4. VTK:旋转球体用法实战
  5. CSS使用display:incline与float:left的区别:脱离文档流 参差不齐
  6. js原生图片拼图Demo
  7. java的abstract的意思_java – spring中的abstract =“true”是什么意思?
  8. Redis 缓存 Key
  9. Freebsd屏幕字体的调节
  10. Ext中Date format含义
  11. Vue入门基础(看狂神的视频,不是很推荐……)
  12. IT桌面运维常识系列 -(Windows部署服务 - 01)
  13. Spring 学习记录6 BeanFactory(2)
  14. Window通过cmd命令测试服务器带宽性能的方法(IP测试)
  15. 互联网开放平台纵横论
  16. 找工作与找对象的关系
  17. OpenCV3实现橡皮擦功能[画板]
  18. 2012年度x86服务器虚拟化基础设施魔力象限,五载解读!Gartner x86虚拟化魔力象限...
  19. 数学----三角函数公式推导
  20. Spring--配置

热门文章

  1. 如何查看xshell保存的密码
  2. mysql求分位数_给Mysql加自定义函数计算百分位数(percentile)。
  3. 为什么世界 500 强企业在逐步淘汰传统绩效考核
  4. 使用缓存django、redis
  5. 增强型GaN器件的驱动电路
  6. python, numpy中的.tile方法解释
  7. 【TIC6657 DSP学习笔记】01 工程创建与代码编写——以点亮LED为例
  8. VLC保存网络视频及抓包合成视频
  9. CF1015C Songs Compression (#贪心)
  10. PMP-总价合同、固定合同、工料合同对比