首页 文章

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

提问于
浏览
3

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

-Yan

1 回答

  • 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
    

相关问题