MATLAB中的二次约束二次规划(QCQP)

时间:2013-08-02 04:07:28

标签: matlab mathematical-optimization quadratic

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

-Yan

1 个答案:

答案 0 :(得分:3)

另一种方法是使用CVX available here,它可以很好地用于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