将数学转换为Python代码

时间:2017-02-13 07:24:52

标签: python algorithm math dynamic-programming

这是动态编程中Value Iteration算法的一部分。可以找到整个代码here。并且可以找到该算法的解释here

数学符号

Vk[s] = maxa ∑s' P(s'|s,a) (R(s,a,s')+ γVk-1[s'])

或者:

enter image description here

代码

U1[s] = R(s) + gamma * max([sum([p * U[s1] for (p, s1) in T(s, a)])
                                        for a in mdp.actions(s)])

我不会在这里看到数学和代码之间的映射。例如,Rgamma如何在代码中的总和之外结束,而在数学中,一切都在总和之内。

如果有人能够详细分解代码并解释事物如何映射到数学符号,那将会有所帮助。

  

编辑:为了尝试回答我自己的问题,我会说R(s) + gamma作为优化在代码中移出。因为这是一个   线性变换它不会改变最大值的结果   运算符,因为它将扩展所有结果相同。因此它是   enogh只做最后的结果???

0 个答案:

没有答案