我在以下环境(3x4 地图)中遇到了 MDP 问题:
具有向上/向下/向右/向左的可能动作和 0.8 向正确方向移动的机会,每个相邻方向为 0.1(例如向上:向左移动的机会为 0.1,向右移动的机会为0.1 )。
现在我需要做的是计算从 (1,1) 开始运行以下操作序列的可能结果:
[上,上,右,右,右]
并且还计算使用此操作序列到达某个字段(对于每个可能的结果)的机会。我怎样才能有效地做到这一点(所以不经历至少 2^5,最大 3^5 可能的结果)?
提前致谢!
我在以下环境(3x4 地图)中遇到了 MDP 问题:
具有向上/向下/向右/向左的可能动作和 0.8 向正确方向移动的机会,每个相邻方向为 0.1(例如向上:向左移动的机会为 0.1,向右移动的机会为0.1 )。
现在我需要做的是计算从 (1,1) 开始运行以下操作序列的可能结果:
[上,上,右,右,右]
并且还计算使用此操作序列到达某个字段(对于每个可能的结果)的机会。我怎样才能有效地做到这一点(所以不经历至少 2^5,最大 3^5 可能的结果)?
提前致谢!
出色地。我想知道你是否正在解决 RL 问题。我们现在通常用贝尔曼方程和 Q 学习来解决 RL 问题。
您也将从本次讲座中受益。 http://cs229.stanford.edu/notes/cs229-notes12.pdf
如果你学完了,重复整个过程,你就会知道[上、上、右、右、右]的概率。
并且在学习之后,第二个约束将毫无意义,因为它几乎立即得到正确答案。
我认为这个例子是在 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])
这是我在健身房简单编写的代码。