如何在matlab中的cvx块中找到argmax?

时间:2013-09-09 16:46:57

标签: matlab max cvxopt

我试图在matlab中的cvx块中找到argmax。这只是为了找到使用线性规划的Bellman方程的最优策略。如果我这样做,请在下面的代码中:

k = max(Q)

它找到列表Q的最大值并且工作正常,但是一旦我这样做:

[k y] = max(Q)

要查找列表Q的argmax,它会抱怨:

??? Error using ==> cvx.max
Too many output arguments.

在cvx中找到argmax有不同的方法吗?

cvx_begin
variable V(N)
minimize(sum(V))

subject to
for s=1:N
    for a=1:A
        for s_next=1:N
            tmp(s_next) = mdp.T{a}(s,s_next)*(mdp.R{a}(s,s_next) + mdp.gamma*V(s_next));
        end
        Q(a) = sum(tmp);
        V(s) >= sum(tmp);
    end
    [k y]=max(Q)
end  
cvx_end

1 个答案:

答案 0 :(得分:0)

所以我最终使用双变量来找到最优策略。我仍然不确定是否有办法在cvx中找到argmax。