目录

Value Iteration

Background

Definition

Pesudo code

Gambler's Problem

Case

Case analysis

Code

Result


Value Iteration

Background

Policy iteration's process is that after value function (policy evaluation) converges, the policy then improved. In fact, there is no need that value function converges because even no the last many sweeps of policy evaluation, the policy can converge to the same result. Therefore, actually we do not need to make policy evaluation converged.

Definition

We can go on several sweeps of policy evaluation, then turn into policy improvement and turn back to the policy evaluation until the policy converges to the optimal policy.

In extreme situations, we can make policy improvement just after one update of one state.

Pesudo code

while judge == True:

judge = False;

for :

if :

judge = True;

# optimal policy

Gambler's Problem

Case

Case analysis

S: the money we have : 0-100, v(0)=0,v(100)=1 (constant)

A: the money we stake: 0-min( s,100-s )

R:  no imtermediate reward, expect v(100)=1

:  S+A or S-A, which depends on the probability:  (win)

Code

### settingsimport math
import numpy
import random# visualization
import matplotlib
import matplotlib.pyplot as plt# global settingsMAX_MONEY = 100 ;MIN_MONEY = 0 ; P_H = 0.4 ; gamma = 1 ;  # episodic# accuracy of value function
error = 0.001; 
### functions# max value function
def max_v_a(v,s):MIN_ACTION = 0 ;MAX_ACTION = min( s, MAX_MONEY-s ) ;v_a = numpy.zeros(MAX_ACTION+1 - MIN_ACTION ,dtype = numpy.float);for a in range(MIN_ACTION, MAX_ACTION+1):v_a [a-MIN_ACTION] = ( P_H*( 0 + gamma*v[s+a] ) + \(1- P_H)*( 0 + gamma*v[s-a] ) );return max(v_a)# max value function index
def argmax_a(v,s):MIN_ACTION = 0 ;MAX_ACTION = min( s, MAX_MONEY-s ) ;v_a = numpy.zeros(MAX_ACTION+1 - MIN_ACTION ,dtype = numpy.float);for a in range(MIN_ACTION, MAX_ACTION+1):v_a [a-MIN_ACTION] = ( P_H*( 0 + gamma*v[s+a] ) + \(1- P_H)*( 0 + gamma*v[s-a] ) );return ( numpy.argmax(v_a) )# visualization def visualization(v_set,policy):fig,axes = plt.subplots(2,1)for i in range(0,len(v_set)):axes[0].plot(v_set[i],linewidth=3)#   plt.pause(0.5)axes[0].set_title('value function')axes[1].plot(range(1,len(policy)+1),policy)axes[1].set_title('policy')plt.show()
### main programming# policy
policy = numpy.zeros(MAX_MONEY-1);# value function
v = numpy.zeros(MAX_MONEY+1,dtype = numpy.float);#every_sweep_of value function
v_set = [] ;# initialization
v[MAX_MONEY] = 1 ;
v[MIN_MONEY] = 0 ;judge = True;# value iterationwhile(judge):judge = Falsefor s in range(MIN_MONEY+1,MAX_MONEY):v_old = v[s];v[s] = max_v_a(v,s);if math.fabs( v[s] - v_old ) > error:judge = True;v_set.append(v.copy())# optimal policy for s in range(MIN_MONEY+1,MAX_MONEY):policy[s-1] = argmax_a(v,s)# visualizationvisualization(v_set,policy)

Result

for  =0.4

2.2 DP: Value Iteration Gambler‘s Problem相关推荐

  1. 【RL系列】马尔可夫决策过程——Gambler's Problem

    Gambler's Problem,即"赌徒问题",是一个经典的动态编程里值迭代应用的问题. 在一个掷硬币游戏中,赌徒先下注,如果硬币为正面,赌徒赢回双倍,若是反面,则输掉赌注.赌 ...

  2. RL(Chapter 4): Gambler’s Problem

    本文为强化学习笔记,主要参考以下内容: Reinforcement Learning: An Introduction 代码全部来自 GitHub 习题答案参考 Github 目录 Gambler's ...

  3. 【AC自动机+DP】[USACO JAN2012 GOLD Problem 1: Video Game Combos]

    题目大意 题目大意:给定有ABC组成的串n个,然后请你生成一个长度为K的串求给定的串在生成串中最多被匹配时的次数 分析 AC自动机模板题. 构建trie,然后DP. p是当前节点,l是已经构造的串的长 ...

  4. 《强化学习》中的 时序差分学习 Temporal-Difference Learning (基于与动态规划 DP 、蒙特卡洛方法 MC 的对比)

    前言: 学习了 Sutton 的<强化学习(第二版)>中时序差分学习的"预测"部分内容.前两章中,书介绍了 动态规划 与 蒙特卡洛方法 ,我们从二者与 时序差分学习 的 ...

  5. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  6. 动态规划 —— 线性 DP

    [概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...

  7. 题目1452:搬寝室(dp题目)

    题目链接:http://ac.jobdu.com/problem.php?pid=1452 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  8. 刷题之路:DP思想(动态规划)

    dp一般用于解决决策问题,比如说你的每一步都有好几种处理方式,怎么选择使得最后的结果满足或者接近于你的预期是需要考虑的问题. 所以dp问题实际上也就是最优解的问题 一般采用的方式就是将问题拆分成若干个 ...

  9. 动态规划法(四)0-1背包问题(0-1 Knapsack Problem)

      继续讲故事~~   转眼我们的主人公丁丁就要离开自己的家乡,去大城市见世面了.这天晚上,妈妈正在耐心地帮丁丁收拾行李.家里有个最大能承受20kg的袋子,可是妈妈却有很多东西想装袋子里,已知行李的编 ...

最新文章

  1. 无损卡尔曼滤波UKF与多传感器融合
  2. Context-----Activity,Application之间的交流使者
  3. C#中协变和逆变的基本概念、List和List.Select方法的命名空间
  4. jq 自动打开浏览器_jQuery之解析判断当前页面打开端(APP或浏览器)的方法
  5. 为什么c语言读文件少内容,这个程序为什么在读文件时候读不全数据?
  6. 诛仙服务器列表文件,诛仙云服务器
  7. .tar.bz2文件解压命令
  8. java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView
  9. 第二次作业+105032014049
  10. 14.msql_python
  11. 不必写一行代码,利用ivx低代码产品开发web平台
  12. Ceph OSD简介
  13. qq邮箱收不到通知邮件的解决方法
  14. DP/最短路 URAL 1741 Communication Fiend
  15. android水波纹教程,Android实现简单水波纹效果
  16. 纺织服装产业实现智能制造升级
  17. 抛硬币概率公式 计算机题,行测古典型概率问题:抛硬币
  18. 兼容ios和android的ar,安卓又落后 这几款AR游戏只能iOS玩
  19. Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
  20. 一场胆战心惊的B站面试,哔哩哔哩也太难进了

热门文章

  1. 使用JS打印网页内容及图片
  2. 手机点餐系统概述_廖师兄 微信点餐系统 springcloud学习笔记
  3. [gitHub使用笔记一]ubuntu下快速访问github官网的方法
  4. iphone屏幕尺寸总结
  5. win10挂载esp(efi)分区
  6. 阿里云服务器购买搭建过程
  7. Android自定义Drawable第十四式之百步穿杨
  8. 联想台式计算机光驱启动,联想电脑怎么设置光驱启动【图文】
  9. Python:求列表的最大数以及下标
  10. 学mysql需要英语水平多高_大学英语专业挂科率高吗