【优化算法】 二次规划(Quadratic Programming, QP)

2025-11-03 04:37:45

二次规划(Quadratic Programming, QP)是一种特殊的数学优化问题,其目标函数是二次的,约束条件是线性的。QP问题广泛应用于经济学、工程、金融、机器学习等领域。

标准形式

QP问题的标准形式如下:

最小化12xTQx+cTx约束条件Ax≤bEx=d

\begin{aligned}

\text{最小化} \quad & \frac{1}{2} \mathbf{x}^T \mathbf{Q} \mathbf{x} + \mathbf{c}^T \mathbf{x} \\

\text{约束条件} \quad & \mathbf{A} \mathbf{x} \leq \mathbf{b} \\

& \mathbf{E} \mathbf{x} = \mathbf{d}

\end{aligned}

最小化约束条件​21​xTQx+cTxAx≤bEx=d​

其中:

(x\mathbf{x}x) 是优化变量((nnn) 维向量)。(Q\mathbf{Q}Q) 是 (n×nn \times nn×n) 的对称矩阵(通常半正定)。(c\mathbf{c}c) 是 (nnn) 维向量。(A\mathbf{A}A) 是 (m×nm \times nm×n) 的矩阵,(b\mathbf{b}b) 是 (mmm) 维向量(不等式约束)。(E\mathbf{E}E) 是 (p×np \times np×n) 的矩阵,(d\mathbf{d}d) 是 (ppp) 维向量(等式约束)。

特点

目标函数:二次函数 (12xTQx+cTx\frac{1}{2} \mathbf{x}^T \mathbf{Q} \mathbf{x} + \mathbf{c}^T \mathbf{x}21​xTQx+cTx)。约束条件:线性不等式 (Ax≤b\mathbf{A} \mathbf{x} \leq \mathbf{b}Ax≤b) 和线性等式 (Ex=d\mathbf{E} \mathbf{x} = \mathbf{d}Ex=d)。凸性:若 (Q\mathbf{Q}Q) 半正定,问题为凸优化,有全局最优解;否则可能有多个局部最优解。

求解方法

解析法:对无约束问题,通过求导并令导数为零直接求解。数值法:

内点法:适用于大规模问题,通过迭代逼近最优解。有效集法:适用于中小规模问题,通过迭代更新有效约束集。梯度投影法:结合梯度下降和投影操作,适用于简单约束问题。

应用

投资组合优化:在金融中用于资产配置。支持向量机(SVM):在机器学习中用于分类和回归。控制理论:在工程中用于最优控制设计。

示例

考虑以下QP问题:

最小化12(x12+x22)约束条件x1+x2≤1x1≥0,x2≥0

\begin{aligned}

\text{最小化} \quad & \frac{1}{2} (x_1^2 + x_2^2) \\

\text{约束条件} \quad & x_1 + x_2 \leq 1 \\

& x_1 \geq 0, \quad x_2 \geq 0

\end{aligned}

最小化约束条件​21​(x12​+x22​)x1​+x2​≤1x1​≥0,x2​≥0​

其中:

(Q=[1001]\mathbf{Q} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}Q=[10​01​])(c=[00]\mathbf{c} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}c=[00​])(A=[11]\mathbf{A} = \begin{bmatrix} 1 & 1 \end{bmatrix}A=[1​1​]), (b=[1]\mathbf{b} = [1]b=[1])无等式约束。

该问题可通过有效集法或内点法求解,最优解为 (x1=0.5x_1 = 0.5x1​=0.5), (x2=0.5x_2 = 0.5x2​=0.5)。

总结

二次规划是优化问题的重要分支,具有广泛的应用和成熟的求解方法。

Copilot

下面提供一个关于二次规划(Quadratic Programming,QP)的详解,包括基本概念、数学模型、最优性条件、求解方法以及应用示例,希望能帮助你深入理解这一优化问题类型。

1. 基本概念

二次规划是指求解这样一个优化问题:目标函数是二次函数,而约束条件则为线性的不等式或等式。直观上,它介于线性规划(LP)与一般非线性规划之间,由于目标函数的二次形式,它能够刻画出比简单线性模型更复杂的情形,同时又保留了一定程度上的结构性便于求解。

2. 数学模型

一个标准的二次规划问题可以写成如下形式:

min⁡x∈Rnf(x)=12xTQx+cTxs.t.Ax≤b,Aeqx=beq,

\begin{aligned}

\min_{x \in \mathbb{R}^n} \quad & f(x) = \frac{1}{2}x^T Q x + c^T x \\

\text{s.t.} \quad & Ax \leq b, \\

& A_{eq}x = b_{eq},

\end{aligned}

x∈Rnmin​s.t.​f(x)=21​xTQx+cTxAx≤b,Aeq​x=beq​,​

其中:

( x∈Rnx \in \mathbb{R}^nx∈Rn ) 为决策变量向量;( Q∈Rn×nQ \in \mathbb{R}^{n \times n}Q∈Rn×n ) 是对称矩阵,其元素决定了二次项(如果 ( QQQ ) 为正定或正半定,则问题为凸问题,使得全局最优解更容易求得);( c∈Rnc \in \mathbb{R}^nc∈Rn ) 是线性部分的系数向量;( Ax≤bAx \leq bAx≤b ) 和 ( Aeqx=beqA_{eq}x = b_{eq}Aeq​x=beq​ ) 则描述了线性不等式与等式约束。

备注:

若 ( QQQ ) 正定,则目标函数严格凸,确保存在唯一全局最优解;

若 ( QQQ ) 仅正半定,则目标函数凸,但可能存在多个全局最优解;

如果 ( QQQ ) 既非正定也非正半定,则问题为非凸问题,求解时可能面临局部最优解的问题。

3. 最优性条件 —— Karush-Kuhn-Tucker (KKT) 条件

对于凸二次规划问题,KKT 条件为最优解提供了必要且充分的条件。假设仅考虑不等式约束问题,其 KKT 条件包括:

可行性条件:

( Ax≤bAx \leq bAx≤b )

拉格朗日乘子非负性:

对于每个不等式约束,拉格朗日乘子 ( λi≥0\lambda_i \ge 0λi​≥0 )

梯度平衡条件:

定义 Lagrangian 函数

L(x,λ)=12xTQx+cTx+λT(Ax−b)

L(x,\lambda) = \frac{1}{2}x^T Q x + c^T x + \lambda^T (Ax - b)

L(x,λ)=21​xTQx+cTx+λT(Ax−b)

则在最优点 ( x∗x^*x∗ ) 与对应的乘子 ( λ∗\lambda^*λ∗) 必须满足梯度条件:

∇xL(x∗,λ∗)=Qx∗+c+ATλ∗=0

\nabla_x L(x^*,\lambda^*) = Q x^* + c + A^T \lambda^* = 0

∇x​L(x∗,λ∗)=Qx∗+c+ATλ∗=0

互补松弛(Complementary Slackness):

λi∗(aiTx∗−bi)=0,∀i.

\lambda_i^* (a_i^T x^* - b_i) = 0,\quad \forall i.

λi∗​(aiT​x∗−bi​)=0,∀i.

这些条件组合起来描述了最优解必须满足的结构性特征,是求解二次规划问题的重要理论依据。

4. 数值求解方法

随着问题规模的扩大和应用场景的复杂化,人们发展了多种数值方法来求解二次规划问题,主要包括:

4.1 边界活跃集方法(Active Set Method)

基本思想:

假设在最优解处,有一部分约束是“活跃”的(即恰好满足等式),而另一部分约束则处于松弛状态。流程概览:

从一个可行解出发,猜测活跃约束集合将活跃约束当作等式约束,求解由此得出的子问题检查解是否满足所有不等式(即非活跃约束)如果不满足,则调整活跃集,重复求解

4.2 内点法(Interior Point Method)

基本思想:

利用障碍函数(Barrier Functions)将约束“内嵌”到目标函数中,通过逐步减小障碍参数,最终逼近原问题的最优解。优点:

能够处理大规模问题,适用于凸二次规划中的高维问题。

4.3 梯度投影法(Gradient Projection Method)

基本思想:

先沿目标函数梯度方向下降,然后将结果投影到可行域上。适用性:

适合结构简单且约束较轻量级的问题。

5. 应用领域示例

二次规划在许多实际问题中都有广泛应用,例如:

组合投资组合优化:

在 Markowitz 均值—方差投资组合理论中,通过二次规划来最小化投资组合风险(方差)同时满足预期收益要求。

支持向量机(SVM):

在机器学习中,训练支持向量机时需要求解一个带有二次目标函数与线性约束的优化问题。

控制与系统优化:

如模型预测控制(MPC)中,系统在预测期内的控制策略往往由二次规划问题描述。

资源分配与调度:

用于分配有限资源达到优化调度的目标,目标函数中常涉及到成本或能量的最小化问题。

6. ASCII 流程图示例

下面给出一个简单的 ASCII 流程图,描述二次规划问题求解的基本流程:

+-----------------------------------+

| 定义二次规划问题 |

| 目标: min 1/2 x^T Q x + c^T x |

| 约束: Ax <= b (与/或 Ax = b) |

+-------------------+---------------+

|

v

+-----------------------------------+

| 建立 Lagrangian 函数 |

| L(x,λ) = 1/2 x^T Q x + c^T x + λ^T(Ax-b) |

+-------------------+---------------+

|

v

+-----------------------------------+

| 写出 KKT 最优性条件 |

| 包括梯度平衡、互补松弛等 |

+-------------------+---------------+

|

v

+-----------------------------------+

| 选择合适的数值方法 (如内点法等) |

+-------------------+---------------+

|

v

+-----------------------------------+

| 求解,获得全局最优解或局部最优解 |

+-----------------------------------+

7. 深层讨论与延伸

凸性与非凸性:

当 ( Q ) 为正定或者正半定时,问题为凸问题,保证任何局部最优解也是全局最优解;但非凸问题则可能出现多个局部极值,此时求解需要格外小心或借助全局优化技术。

算法稳定性与效率:

对于大规模问题,内点法通常表现得更为高效稳定;而当约束集合较少时,活跃集法可能更快,易于理解与实现。

软件与工具:

市面上有不少优化软件支持二次规划求解,如 MATLAB 的 quadprog、CVX、Gurobi、CPLEX 等。这些工具内部实现了上述算法,并结合现代数值计算技术,使得求解大规模 QP 问题成为可能。

建模技巧:

在实际建模过程中,如何选择合适的变量、构造合理的目标函数以及进行约束松弛,都是影响求解效率的重要因素。良好的建模策略往往能将一个看似复杂的二次规划问题转化为更容易求解的形式。

小结

二次规划作为一种极具实用价值的优化模型,通过在目标函数中引入二次项,可以更精细地刻画系统的成本、风险或能量等方面的变化;而利用线性约束则确保了模型求解时的结构性和数值稳定性。无论是在金融、工程、机器学习或其他领域,QP 都为我们提供了一种强有力的决策工具。深入理解 QP 的数学模型、最优性条件以及求解方法,不仅有助于理论研究,也能大大提升解决实际问题的能力。

进一步探讨:

你可能还会对以下几个相关话题感兴趣:

如何将非凸的问题转换为凸问题(例如利用松弛技术)二次规划中的对偶理论及其应用具体应用案例,如在金融投资组合构建中的 QP 建模技巧和求解实例

什么工种工资最高?
植物大战僵尸系列游戏盘点