我在以下环境(3x4地图)中遇到了MDP问题:
可能的动作向上/向下/向右/向左和0.8向右移动的机会,每个相邻方向为0.1(例如向上:0.1有机会去左,0.1有机会去对)。
现在我需要做的是计算从(1,1)开始运行以下一系列动作的可能结果:
[向上,向上,向右,向右]
并且还使用此动作序列计算到达字段(对于每个可能的结果)的机会。我怎样才能有效地做到这一点(所以不要经过至少2 ^ 5,最多3 ^ 5可能的结果)?
提前致谢!
答案 0 :(得分:0)
好。我想知道你是否正在解决RL问题。 我们现在通常用Bellman方程和Q学习来解决RL问题。
您也将从本讲座中受益。 http://cs229.stanford.edu/notes/cs229-notes12.pdf
如果你已完成学习,重复整个过程,你就会知道[up,up,right,right,right]的概率。
并且在学习之后,第二个约束将毫无意义,因为它几乎立即得到正确的答案。
我认为这个例子在AIMA,对吧? 其实我对这个方法有几个问题。 如果你在理论上接近它,我认为这似乎不对我的答案。
while not done:
if np.random.rand(1) < e:
action = env.action_space.sample()
else:
action = rargmax(Q[state, :])
new_state, reward, done, _ = env.step(action)
Q[state, action] = Q[state, action]+ lr * (reward + r*np.max(Q[new_state,:]) - Q[state, action])
这是我只是在健身房编码的代码。