如何在MATLAB中求解二次约束优化问题

如何在MATLAB中求解二次约束优化问题,matlab,optimization,Matlab,Optimization,我想有效地解决以下最小化问题 min(w^TBw+w*g),s.t.| | | | | | | u 2fsolve求解非线性方程组。它可以使用信赖域方法来实现这一点。然而,这不是你要问的;您正在询问如何以高精度解决特定的信赖域子问题。(你的TRS很特别,因为目标函数是凸的。如果B不确定,TRS仍然可以快速求解。) 你可以找到你的目标的无约束极小值为-B^{-1}g/2。如果这最多有一个norm Delta,那么您就完成了。否则,您希望找到最小的lambda>=0,以便-(B+lambda I)^

我想有效地解决以下最小化问题


min(w^TBw+w*g),s.t.| | | | | | | u 2
fsolve
求解非线性方程组。它可以使用信赖域方法来实现这一点。然而,这不是你要问的;您正在询问如何以高精度解决特定的信赖域子问题。(你的TRS很特别,因为目标函数是凸的。如果B不确定,TRS仍然可以快速求解。)


你可以找到你的目标的无约束极小值为-B^{-1}g/2。如果这最多有一个norm Delta,那么您就完成了。否则,您希望找到最小的lambda>=0,以便-(B+lambda I)^{-1}g/2的范数最多为Delta。有一个非常快速的迭代,使用一些Cholesky分解找到合适的lambda,但我记不起它是什么。

您应该使用CG Steilhaug。其他任何东西都是多余的

有关详细信息,您可以参考任何标准优化教科书,但该算法是专门为解决此问题而设计的


代码也可以使用。

您需要精确地解决它吗?我总是推荐使用matlab来解决优化问题。它非常健壮,我在这方面取得了巨大的成功。@Nitish,近似解是可以的。@AnonSubmitter 85我会检查你的建议。谢谢