适当的数据结构

时间:2010-09-27 20:22:18

标签: python machine-learning

我必须使用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中这将是适当的数据结构,因此遍历它很容易。

2 个答案:

答案 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库中的稀疏矩阵。

http://docs.scipy.org/doc/scipy/reference/sparse.html