QP 问题(Quadratic Programming, 二次规划)是什么?
QP(Quadratic Programming,二次规划)是一类优化问题,其中目标函数是二次型函数,约束条件可以是线性等式或不等式。
QP 问题是线性规划(LP,Linear Programming)的扩展形式,广泛应用于最优控制、机器学习、金融优化、信号处理等领域。
🚩 一、QP 问题的数学定义
标准形式的 QP 问题如下:
minx12xTQx+cTx
\min_{x} \quad \frac{1}{2} x^T Q x + c^T x
xmin21xTQx+cTx
s.t.Ax≤b,Ex=d
\text{s.t.} \quad Ax \leq b, \quad Ex = d
s.t.Ax≤b,Ex=d
其中:
变量:x∈Rnx \in \mathbb{R}^nx∈Rn(优化变量)目标函数:
QQQ 是 n×nn \times nn×n 对称矩阵(当 QQQ 是正定时,问题是凸的)ccc 是 nnn-维向量(线性项)
约束:
Ax≤bAx \leq bAx≤b(线性不等式约束,约束变量取值范围)Ex=dEx = dEx=d(线性等式约束)
🚩 二、QP 问题的分类
1. 线性二次规划(Convex QP)
如果矩阵 QQQ正定(Q≻0Q \succ 0Q≻0),则问题是凸优化问题,可以用梯度下降、KKT 条件、内点法(Interior Point Method)等方法求解。应用:
机器人轨迹优化(无人机规划)预测控制(Model Predictive Control, MPC)机器学习(SVM 分类)
2. 非凸二次规划(Non-convex QP)
如果 ( Q ) 非正定(可能有负特征值),则问题可能有多个局部最优解,求解更复杂,需要启发式方法或全局优化方法。应用:
经济学中的投资组合优化结构优化(力学系统)
3. 约束二次规划
约束类型:
仅等式约束(Equality Constrained QP, EQP)仅不等式约束混合等式/不等式约束
应用:
机器学习中的拉格朗日对偶(Lagrange Duality)约束最优控制(MPC)
🚩 三、QP 问题的求解方法
1. KKT 条件(Karush-Kuhn-Tucker 条件)
QP 问题满足 KKT 条件,其最优解满足:
Qx+c+ATλ+ETμ=0,Ax−b≤0,λ≥0,Ex−d=0,(等式约束)
\begin{aligned}
Qx + c + A^T \lambda + E^T \mu &= 0, \\
Ax - b &\leq 0, \quad \lambda \geq 0, \\
Ex - d &= 0, \quad \text{(等式约束)}
\end{aligned}
Qx+c+ATλ+ETμAx−bEx−d=0,≤0,λ≥0,=0,(等式约束)
其中:
λ\lambdaλ 是不等式约束的拉格朗日乘子μ\muμ 是等式约束的拉格朗日乘子
如果 ( Q \succ 0 )(正定),则 KKT 方程是一个线性方程组,可以直接求解最优解。
2. 内点法(Interior Point Method)
适用于大规模 QP 问题,收敛快。常用于最优控制(MPC)和机器学习(SVM)。
3. 主动集法(Active Set Method)
适用于小规模 QP 问题。适合处理约束随时间变化的情况,如实时轨迹优化。
4. 梯度投影法(Projected Gradient Descent)
适用于大规模约束 QP 问题,如约束神经网络训练。
🚩 四、QP 在强化学习、控制和无人机中的应用
1. 在最优控制(MPC, Model Predictive Control)中的应用
在 MPC(模型预测控制)中,每个时刻求解一个 QP 问题,以计算最优控制输入:
minu∑t=0T(xtTQxt+utTRut)
\min_u \quad \sum_{t=0}^{T} \left( x_t^T Q x_t + u_t^T R u_t \right)
umint=0∑T(xtTQxt+utTRut)
s.t.xt+1=Axt+But,xt∈X,ut∈U
\text{s.t.} \quad x_{t+1} = A x_t + B u_t, \quad x_t \in X, \quad u_t \in U
s.t.xt+1=Axt+But,xt∈X,ut∈U
这里的 QP 优化保证:
控制输入 utu_tut 平滑变化轨迹在约束范围内
2. 机器人运动规划(Quadratic Trajectory Optimization)
无人机或机械臂轨迹规划:
minx∑t=1T(xt−xtarget)TQ(xt−xtarget)
\min_x \quad \sum_{t=1}^{T} (x_t - x_{\text{target}})^T Q (x_t - x_{\text{target}})
xmint=1∑T(xt−xtarget)TQ(xt−xtarget)
s.t.xt+1=f(xt,ut),xmin≤xt≤xmax
\text{s.t.} \quad x_{t+1} = f(x_t, u_t), \quad x_{\text{min}} \leq x_t \leq x_{\text{max}}
s.t.xt+1=f(xt,ut),xmin≤xt≤xmax
3. 机器学习(支持向量机 SVM)
SVM 的优化问题:
minw12wTw
\min_w \quad \frac{1}{2} w^T w
wmin21wTw
s.t.yi(wTxi+b)≥1,∀i
\text{s.t.} \quad y_i (w^T x_i + b) \geq 1, \forall i
s.t.yi(wTxi+b)≥1,∀i
这个优化问题也是一个 QP 问题,使用拉格朗日乘子法求解。
🚩 五、QP 和 DP(动态规划)的关系
1. 经典 QP vs DP
特性QP (Quadratic Programming)DP (Dynamic Programming)目标函数二次型函数递归求解最优策略约束线性等式/不等式无约束(或通过贝尔曼方程处理)求解方法KKT, 内点法, 主动集法递归求解, 迭代法适用领域最优控制、金融优化强化学习、最优轨迹2. QP 在 DP 问题中的应用
在动态规划(DP)问题中,某些最优控制问题(如LQR, MPC)的子问题可以转化为 QP 问题:
LQR(线性二次调节):
线性系统 + 二次成本 → QP 问题通过求解里卡提方程得到最优反馈控制律
MPC(模型预测控制):
每个时刻求解一个 QP 问题,计算最优控制输入 utu_tut确保控制输入平稳变化,满足状态/输入约束
🚩 六、总结
QP(Quadratic Programming,二次规划) 是优化问题的一种特殊形式,目标函数为二次型,约束为线性等式或不等式。QP 的求解方法:KKT条件、内点法、主动集法、梯度投影法等。QP 在最优控制、机器学习、金融优化等领域广泛应用,特别是在MPC、LQR、轨迹优化、SVM等问题中。
在强化学习和最优控制研究中,掌握QP 和 DP的关系非常重要,可以帮助解决 连续控制问题(如无人机轨迹规划) 和 最优决策问题 。
例子 🚀 以 MPC 控制无人机为例,详细解析 QP 求解过程
模型预测控制(Model Predictive Control, MPC) 是一种基于最优控制理论的方法,它在每个时间步求解一个**二次规划(QP, Quadratic Programming)**问题,以获得最优控制输入。
在本例中,我们详细解析 MPC 控制无人机的 QP 求解过程,从建模到求解的每个步骤。
📌 1. 建立无人机的动态模型
假设无人机是一个简单的线性离散系统,状态变量xtx_txt 和控制输入utu_tut 满足:
xt+1=Axt+But
x_{t+1} = A x_t + B u_t
xt+1=Axt+But
其中:
状态 (x_t):无人机的二维位置和速度(简化版)
xt=[px,py,vx,vy]T
x_t = [p_x, p_y, v_x, v_y]^T
xt=[px,py,vx,vy]T
px,pyp_x, p_ypx,py:位置vx,vyv_x, v_yvx,vy:速度
控制输入 (u_t):加速度输入
ut=[ax,ay]T
u_t = [a_x, a_y]^T
ut=[ax,ay]T
( a_x, a_y ):无人机在 x 和 y 方向的加速度
系统动力学矩阵(离散化):
A=[10dt0010dt00100001],B=[0000dt00dt]
A = \begin{bmatrix}
1 & 0 & dt & 0 \\
0 & 1 & 0 & dt \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}, \quad
B = \begin{bmatrix}
0 & 0 \\
0 & 0 \\
dt & 0 \\
0 & dt
\end{bmatrix}
A=10000100dt0100dt01,B=00dt0000dt
其中 ( dt ) 是时间步长(离散化时间间隔)。
📌 2. 设定 MPC 的优化目标
MPC 通过优化 未来 ( N ) 步内的轨迹,生成最优控制输入 ( u_t )。
优化目标:
J=∑t=0N−1((xt−xref)TQ(xt−xref)+utTRut)
J = \sum_{t=0}^{N-1} \left( (x_t - x_{\text{ref}})^T Q (x_t - x_{\text{ref}}) + u_t^T R u_t \right)
J=t=0∑N−1((xt−xref)TQ(xt−xref)+utTRut)
( x_{\text{ref}} ):期望的轨迹(目标点)( Q ):状态误差的权重(鼓励轨迹跟踪)( R ):控制输入的权重(防止过大加速度)
约束条件:
xt+1=Axt+But
x_{t+1} = A x_t + B u_t
xt+1=Axt+But
umin≤ut≤umax
u_{\min} \leq u_t \leq u_{\max}
umin≤ut≤umax
xmin≤xt≤xmax
x_{\min} \leq x_t \leq x_{\max}
xmin≤xt≤xmax
其中:
( u_{\min}, u_{\max} ) 限制无人机最大加速度( x_{\min}, x_{\max} ) 限制无人机运动范围
📌 3. 将 MPC 问题转换为标准 QP 问题
MPC 需要预测未来 ( N ) 步的状态,并优化控制输入。为此,我们展开状态方程 预测整个时间窗内的状态演化。
(1)构造状态预测矩阵
对 整个预测时间窗 (N),我们将状态方程展开为矩阵形式:
X=Ax0+BU
X = \mathcal{A} x_0 + \mathcal{B} U
X=Ax0+BU
其中:
状态向量(合并整个时间窗):
X=[x1x2⋮xN],U=[u0u1⋮uN−1]
X = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_N \end{bmatrix}, \quad
U = \begin{bmatrix} u_0 \\ u_1 \\ \vdots \\ u_{N-1} \end{bmatrix}
X=x1x2⋮xN,U=u0u1⋮uN−1
状态转移矩阵:
A=[AA2⋮AN]
\mathcal{A} =
\begin{bmatrix}
A \\ A^2 \\ \vdots \\ A^N
\end{bmatrix}
A=AA2⋮AN
控制影响矩阵:
B=[B00…0ABB0…0A2BABB…0⋮⋮⋮⋱⋮AN−1BAN−2BAN−3B…B]
\mathcal{B} =
\begin{bmatrix}
B & 0 & 0 & \dots & 0 \\
A B & B & 0 & \dots & 0 \\
A^2 B & A B & B & \dots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
A^{N-1} B & A^{N-2} B & A^{N-3} B & \dots & B
\end{bmatrix}
B=BABA2B⋮AN−1B0BAB⋮AN−2B00B⋮AN−3B………⋱…000⋮B
最终预测模型:
X=Ax0+BU
X = \mathcal{A} x_0 + \mathcal{B} U
X=Ax0+BU
(2)将目标函数转化为 QP 形式
J=(X−Xref)TQ(X−Xref)+UTRU
J = (X - X_{\text{ref}})^T Q (X - X_{\text{ref}}) + U^T R U
J=(X−Xref)TQ(X−Xref)+UTRU
代入状态预测矩阵 ( X = \mathcal{A} x_0 + \mathcal{B} U ):
J=(Ax0+BU−Xref)TQ(Ax0+BU−Xref)+UTRU
J = (\mathcal{A} x_0 + \mathcal{B} U - X_{\text{ref}})^T Q (\mathcal{A} x_0 + \mathcal{B} U - X_{\text{ref}}) + U^T R U
J=(Ax0+BU−Xref)TQ(Ax0+BU−Xref)+UTRU
展开并整理得:
J=UT(BTQB+R)U+2UTBTQ(Ax0−Xref)+(Ax0−Xref)TQ(Ax0−Xref)
J = U^T (\mathcal{B}^T Q \mathcal{B} + R) U + 2 U^T \mathcal{B}^T Q (\mathcal{A} x_0 - X_{\text{ref}}) + (\mathcal{A} x_0 - X_{\text{ref}})^T Q (\mathcal{A} x_0 - X_{\text{ref}})
J=UT(BTQB+R)U+2UTBTQ(Ax0−Xref)+(Ax0−Xref)TQ(Ax0−Xref)
最终标准 QP 形式:
minU12UTHU+fTU
\min_U \quad \frac{1}{2} U^T H U + f^T U
Umin21UTHU+fTU
其中:
Hessian 矩阵(正定矩阵):
H=BTQB+R
H = \mathcal{B}^T Q \mathcal{B} + R
H=BTQB+R线性项:
f=BTQ(Ax0−Xref)
f = \mathcal{B}^T Q (\mathcal{A} x_0 - X_{\text{ref}})
f=BTQ(Ax0−Xref)
约束条件变为:
控制输入约束:
Umin≤U≤Umax
U_{\min} \leq U \leq U_{\max}
Umin≤U≤Umax状态约束:
Xmin≤X≤Xmax
X_{\min} \leq X \leq X_{\max}
Xmin≤X≤Xmax
📌 4. 使用 QP 求解器计算最优控制输入
(1)QP 求解方法
MPC 需要每个时间步求解 QP 问题,求解方法包括:
内点法(Interior Point Method):适用于大规模 QP 问题主动集法(Active Set Method):适用于小规模问题梯度投影法(Projected Gradient Descent):适用于约束优化
(2)求解步骤
构造 QP 矩阵 H,fH, fH,f设定约束条件调用 QP 求解器(如 OSQP, quadprog, CVXPY)获得最优控制输入 U∗U^*U∗执行第一个控制步 u0u_0u0,并进入下一时间步
🚀 5. 总结
MPC 通过求解 QP 问题获得最优控制输入,每个时间步优化未来 (N) 步的轨迹。QP 通过二次优化目标+线性约束求解,最终转换为标准凸优化问题。QP 求解方法(内点法、主动集法)可高效求解控制问题,在无人机轨迹规划、自主导航、自动驾驶等领域广泛应用。
MPC + QP 是现代最优控制的核心技术之一,也是强化学习、控制系统研究的重要基础。🚀🚀🚀