引用来自ShangtongZhang的代码chapter03/gird_world.py
使用MDP的强化学习算法解决Grid-world问题
任务解释(example 3.5 in chapter 03)
grid_world代表了一个网格,网格中每个小格子代表一种状态。其中每个状态可以有4种action:left、right、up、down。对应reward规则如下:
如果action导致agent跑到网格外面去,则reward=-1;
如果agent从A出发,则reward=10,下个状态是固定的A_PRIME_POS;从B出发,reward=5,下个状态时固定的B_PRIME_POS;
示意图如下:
引入模块,定义常量
1 | import numpy as np |
获取next_state(base on action),和对应的reward
1 | def step(state, action): |
根据给定的np.array数据类型绘制方格图
1 | def draw_image(image): |
Policies and Value Functions
1 | def figure_3_2(): |
Optimal Policies and Value Functions(Greedy choose action)
1 | def figure_3_5(): |
后记
这是关于马尔科夫决策过程一个相对简单的过程,可以看到这里一旦确定了previous state和action,current state和对应的reward就确定了。即Pr{s’,r|s,a}=1,事实上MDP的应用包括优化过程都是有相当的局限性的:
(1)首先我们需要准确的知道环境的动态变化;
(2)我们要有足够的算力来推出所有需要的state和value;
(3)我们需要保证问题的马尔科夫性。
然而这里的(2)则很大程度上局限了MDP的推广,因为事实上如果需要在所有的state上做出action并update value,对于state数量庞大的任务几乎不可能完成的。