О Matlab QuadProg с использованием структуры гессиана - PullRequest
0 голосов
/ 06 декабря 2011

Я использовал matlab для решения задачи квадратичной оптимизации, используя фактор-структурированный гессиан, скажем, у меня есть ковариационная матрица H, и я записал ее как H = A + B * B '.

Тогда у меня есть небольшой кусочек кода для вычисления

hessianf=@f; options = optimset('HessMult', hessianf);<br> 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.».

Я очень запутался в том, где проблема. Кто-нибудь может дать мне какое-нибудь предложение?

1 Ответ

0 голосов
/ 06 декабря 2011

Я думаю, вы должны использовать алгоритм trust-region-reflective вместо active-set.Так что добавьте optimset('Algorithm', 'trust-region-reflective') к вашим опциям.

...