0

我一直在使用 matlab 解决二次优化问题,使用因子结构的 hessian,假设我有一个协方差矩阵 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 回答