我必须使用Bellman方程实现值迭代算法,以便为MDP的每个状态找到最优策略。 输入文件如下所示: s1 0(a1 s1 0.5)(a1 s2 0.5)(a2 s1 1.0) s2 0(a1 s2 1.0)(a2 s1 0.5)(a2 s3 0.5) s3 10(a1 s2 1.0)(a2 s3 0.5)(a2 s4 0.5)
其中s1是状态0是与s1相关的奖励。采取行动a1后,我们以概率0.5保持在s1。在采取行动a1时,我们以概率0.5进入s2。在采取行动a2时,我们以概率1.0保持在s1。 和其他人一样。
读取输入文件后,我必须将其存储在某些数据结构中。在PYTHON中这将是适当的数据结构,因此遍历它很容易。
答案 0 :(得分:2)
s1 0 (a1 s1 0.5) (a1 s2 0.5) (a2 s1 1.0)
s2 0 (a1 s2 1.0) (a2 s1 0.5) (a2 s3 0.5)
s3 10 (a1 s2 1.0) (a2 s3 0.5) (a2 s4 0.5)
这样的东西?
data = { 's1': { 'reward': 0,
'action': { 'a1': { 's1': 0.5,
's2': 0.5 },
'a2': { 's1': 1.0 }
},
},
's2': { 'reward': 0,
'action': { 'a1': { 's1': 1.0 },
'a2': { 's1': 0.5,
's2': 0.5 },
},
},
's3': { 'reward': 10,
'action': { 'a1': { 's2': 1.0 },
'a2': { 's3': 0.5,
's4': 0.5 },
}
}
}
答案 1 :(得分:0)
通常对于离散(和有限)状态MDP,HMM或POMDP,最有用的表示是一组稀疏矩阵。然后,可以通过矩阵向量计算来计算移动的概率分布(并且可以简单且有效地实现随机Bellman方程)。矩阵将被称为随机矩阵。
http://en.wikipedia.org/wiki/Stochastic_matrix
如果您使用的是Python,我建议您查看SciPy库中的稀疏矩阵。