0

matlab の cvx ブロック内で argmax を見つけようとしています。これは、線形計画法を使用してベルマン方程式の最適なポリシーを見つけるだけです。以下のコードで、私がやった場合:

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
4

1 に答える 1

0

そのため、最適なポリシーを見つけるために二重変数を使用することになりました。cvx 内で argmax を見つける方法があるかどうかはまだわかりません。

于 2013-09-09T18:08:08.087 に答える