【问题标题】:Quadratically constrainted quadratic programming (QCQP) in MATLABMATLAB 中的二次约束二次规划 (QCQP)
【发布时间】:2013-08-02 04:07:28
【问题描述】:

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

-颜

【问题讨论】:

  • 如果问题是二次的,使用'quadprog'。除此之外,您还必须提供有关特定问题的更多信息,以便其他人讨论可能更快的算法。
  • MATLAB 'quadprog' 是一个二次规划求解器,但它只需要线性等式和非等式约束和边界。我的问题涉及它无法处理的非线性约束。 MATLAB 'fmincon' 非常适合我的问题,但我正在寻找更高效的方法,因为我需要调用数百万次这个函数。

标签: matlab mathematical-optimization quadratic


【解决方案1】:

另一种方法是使用 CVX,available here,它非常适用于 QCQP(在许多其他类型的问题中)。这是解决 QCQP 的代码 sn-p:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多