这是动态编程中Value Iteration算法的一部分。可以找到整个代码here。并且可以找到该算法的解释here
数学符号
Vk[s] = maxa ∑s' P(s'|s,a) (R(s,a,s')+ γVk-1[s'])
或者:
代码
U1[s] = R(s) + gamma * max([sum([p * U[s1] for (p, s1) in T(s, a)])
for a in mdp.actions(s)])
我不会在这里看到数学和代码之间的映射。例如,R
和gamma
如何在代码中的总和之外结束,而在数学中,一切都在总和之内。
如果有人能够详细分解代码并解释事物如何映射到数学符号,那将会有所帮助。
编辑:为了尝试回答我自己的问题,我会说
R(s) + gamma
作为优化在代码中移出。因为这是一个 线性变换它不会改变最大值的结果 运算符,因为它将扩展所有结果相同。因此它是 enogh只做最后的结果???