0

因子構造化ヘッセ行列を使用して、二次最適化問題を解くためにmatlabを使用してきました。たとえば、共分散行列Hがあり、H = A + B *B'と記述しました。

次に、計算するための小さなコードがあります

hessianf=@f; options = optimset('HessMult', hessianf);
y1 = quadprog(A, r, [], [], [], [], [], [], [], options, B);

function H=f(A,x,B) H=A*x+B*(B'*x); end

上記のプロセスは、http://www.mathworks.com/help/toolbox/optim/ug/brn4nlc.htmlに従っています。

ただし、matlabは、「アクティブセットアルゴリズムにはHを明示的に指定する必要があります。HessMultオプションは使用できません」と述べています。

私は問題がどこにあるのか非常に混乱しました。誰かが私にいくつかの提案をすることができますか?

4

1 に答える 1

0

trust-region-reflectiveの代わりにアルゴリズムを使用する必要があると思いますactive-set。したがってoptimset('Algorithm', 'trust-region-reflective')、オプションに追加してください。

于 2011-12-06T04:57:51.613 に答える