It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center




7年前关闭。




我试图了解Markov决策问题,并为我提供了值迭代算法,但是我很困惑如何将其转换为实际的C++代码。主要是发生求和等的部分。这是算法:
function VALUE-ITERATION(P;R) returns a utility matrix
    inputs: P, a transition-probability matrix
            R, a reward matrix
    local variables: U, utility matrix, initially identical to R
                     U', utility matrix, initially identical toR
    repeat
         U <- U'
         for each state i do
             U'(s_i) <-  R(s_i) + max_a Summation_j P^a_ij*U(s_j)
         end
    until max_(s_i) |U(s_i) - U'(s_i)| < e
return U

对我来说这看起来像象形文字,是否有更简单的算法对我有更多帮助?还是有人可以替我哑巴?

最佳答案

我很容易找到这篇文章:Value iteration and policy iteration algorithms for Markov decision problem [PDF file]。它解释了很多事情。

从概念上讲,您拥有一个可以处于多种状态的系统,可以奖励从一种状态到另一种状态的转换,以及有时可能导致状态转换的 Action 。基本思想是保持迭代,直到到达不变的效用矩阵,这就是最终测试max_(s_i) | U(s_i) - U'(s_i)| < e所寻找的。 (此处,e是epsilon的缩写,是一个很小的数字,可能应该作为附加输入。)

对于每次迭代,您都希望对每种状态采取最佳措施。最好的 Action 是产生最大返回的 Action ,并按概率加权。这就是max_a Summation_j P^a_ij*U(s_j)所做的:查找获得最佳返回(按概率加权)的 Action 。

关于c++ - 将伪代码转换为C++ ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13710737/

10-11 23:12
查看更多