【RL系列】马尔可夫决策过程——Gambler's Problem
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相关推荐
- Easy RL - 2.马尔可夫决策过程
关键词 马尔可夫性质(Markov property,MP):如果某一个过程未来的状态与过去的状态无关,只由现在的状态决定,那么其具有马尔可夫性质.换句话说,一个状态的下一个状态只取决于它的当前状态, ...
- MATLAB马尔科夫决策过程遗传,科学网—【RL系列】马尔可夫决策过程与动态编程笔记 - 管金昱的博文...
推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit) 本篇 马尔可夫决策过程 马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动 ...
- 强化学习蘑菇书Easy RL第二、三章学习(马尔可夫决策过程、表格型方法)
马尔可夫决策过程概述 Markov Process(MP)通常来说是未来状态的条件概率分布仅依赖于当前的状态.在离散随机过程里,我们需要把随机变量所有可能取值的集合放到一个状态空间里,在强化学习里,我 ...
- 【RL】Markov decision process马尔可夫决策过程(MDP)
参考:蘑菇书-<EasyRL> 本文只是为了方便自己今后的查阅对原文做出的一些概括与摘录,与大家共同学习. PS:上一节->马尔可夫奖励过程 目录 1.马尔可夫决策过程 2.策略π ...
- 马尔可夫决策过程 Markov decision process MDP, 连续时间Markov chain, CMDP(全)
引言 在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名.马尔可夫过程是不具备记忆特质的(memoryless ...
- (二)马尔可夫决策过程
从第一章中了解到强化学习中,智能体通过和环境进行交互获得信息.这个交互过程可以通过马尔可夫决策过程来表示,所以了解一下什么是MDP至关重要. 不过在了解马尔可夫决策过程之前,先要一些预备知识, ...
- DeepMind 的马尔可夫决策过程(MDP)课堂笔记
DeepMind Teaching by David Silver 视频课程链接(Youtube资源,需梯子):https://youtu.be/lfHX2hHRMVQ 文章目录 DeepMind T ...
- 马尔可夫决策过程(Markov Decision Process, MDP)
马尔可夫决策过程(Markov Decision Processes,MDPs) MDPs 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Rewa ...
- 决策过程并举例_David Silver 增强学习——Lecture 2 马尔可夫决策过程(一)
其他lecture [1]搬砖的旺财:David Silver 增强学习--笔记合集(持续更新) 目录 **David Silver 增强学习--Lecture 2 马尔可夫决策过程(一)**1. 前 ...
最新文章
- 2013年4月20日 通用权限管理系统组件V3.8功能改进说明
- python 操作redis之——HyperLogLog (八)
- asp网页提升速度方法5则_asp技巧
- VTK:旋转球体用法实战
- CSS使用display:incline与float:left的区别:脱离文档流 参差不齐
- js原生图片拼图Demo
- java的abstract的意思_java – spring中的abstract =“true”是什么意思?
- Redis 缓存 Key
- Freebsd屏幕字体的调节
- Ext中Date format含义
- Vue入门基础(看狂神的视频,不是很推荐……)
- IT桌面运维常识系列 -(Windows部署服务 - 01)
- Spring 学习记录6 BeanFactory(2)
- Window通过cmd命令测试服务器带宽性能的方法(IP测试)
- 互联网开放平台纵横论
- 找工作与找对象的关系
- OpenCV3实现橡皮擦功能[画板]
- 2012年度x86服务器虚拟化基础设施魔力象限,五载解读!Gartner x86虚拟化魔力象限...
- 数学----三角函数公式推导
- Spring--配置