4

最近,我在研究中遇到了二次约束二次规划(QCQP)问题。我在 MATLAB 优化工具箱中发现了一些有用的东西,即“fmincon”函数(具有非线性约束的一般非线性优化),它使用“内点算法”来解决我的问题,其中包含 8 个变量、1 个等式二次约束和 1 个不等式二次约束. 带有或不带有“Hessian”和“Gradient”的“fmincon”提供了很好的解决方案,我唯一不满意的是效率,因为我需要在我的主代码中调用它百万次。我需要找到一些可能更具体到 QCQP,效率可能会提高。但是我从netlib和wiki找到了很多信息,但是我没有判断应该使用哪一个,而且一件一件地尝试会很乏味,我真的需要一些建议。顺便说一句,我主要是在 MATLAB 中针对这个问题进行编程,但合适的 c/fortran 也很有用。

-严

4

1 回答 1

4

另一种方法是使用 CVX,可在此处获得,它非常适用于 QCQP(在许多其他类型的问题中)。这是解决 QCQP 的代码片段:

close all; clear; clc
n = 10;
H = rand(n); H = H*H'; % make spsd
f = -rand(n,1);
Q = rand(n); Q = Q*Q'; % make spsd
g = -rand(n,1);
cvx_begin
    variable x(n)
    0.5*x'*Q*x+g'*x <=0
    x >= 0
    minimize(0.5*x'*H*x + f'*x)
cvx_end
于 2013-08-16T19:05:29.117 回答