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