QP 问题(Quadratic Programming, 二次规划)

QP 问题(Quadratic Programming, 二次规划)是什么?

QP(Quadratic Programming,二次规划)是一类优化问题,其中目标函数是二次型函数,约束条件可以是线性等式或不等式。

QP 问题是线性规划(LP,Linear Programming)的扩展形式,广泛应用于最优控制、机器学习、金融优化、信号处理等领域


🚩 一、QP 问题的数学定义

标准形式的 QP 问题如下:
min ⁡ x 1 2 x T Q x + c T x \min_{x} \quad \frac{1}{2} x^T Q x + c^T x xmin21xTQx+cTx

s.t. A x ≤ b , E x = d \text{s.t.} \quad Ax \leq b, \quad Ex = d s.t.Axb,Ex=d

其中:

  • 变量 x ∈ R n x \in \mathbb{R}^n xRn(优化变量)
  • 目标函数
    • Q Q Q n × n n \times n n×n 对称矩阵(当 Q Q Q 是正定时,问题是凸的)
    • c c c n n n-维向量(线性项)
  • 约束
    • A x ≤ b Ax \leq b Axb线性不等式约束,约束变量取值范围)
    • E x = d Ex = d Ex=d线性等式约束

🚩 二、QP 问题的分类

1. 线性二次规划(Convex QP)
  • 如果矩阵 Q Q Q正定( Q ≻ 0 Q \succ 0 Q0,则问题是凸优化问题,可以用梯度下降、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 条件,其最优解满足:

Q x + c + A T λ + E T μ = 0 , A x − b ≤ 0 , λ ≥ 0 , E x − 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μAxbExd=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 问题,以计算最优控制输入:
min ⁡ u ∑ t = 0 T ( x t T Q x t + u t T R u t ) \min_u \quad \sum_{t=0}^{T} \left( x_t^T Q x_t + u_t^T R u_t \right) umint=0T(xtTQxt+utTRut)
s.t. x t + 1 = A x t + B u t , x t ∈ X , u t ∈ 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,xtX,utU

这里的 QP 优化保证:

  • 控制输入 u t u_t ut 平滑变化
  • 轨迹在约束范围内
2. 机器人运动规划(Quadratic Trajectory Optimization)

无人机或机械臂轨迹规划:
min ⁡ x ∑ t = 1 T ( x t − x target ) T Q ( x t − x target ) \min_x \quad \sum_{t=1}^{T} (x_t - x_{\text{target}})^T Q (x_t - x_{\text{target}}) xmint=1T(xtxtarget)TQ(xtxtarget)
s.t. x t + 1 = f ( x t , u t ) , x min ≤ x t ≤ x max \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),xminxtxmax

3. 机器学习(支持向量机 SVM)

SVM 的优化问题:
min ⁡ w 1 2 w T w \min_w \quad \frac{1}{2} w^T w wmin21wTw
s.t. y i ( w T x i + 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 问题,计算最优控制输入 u t u_t ut
    • 确保控制输入平稳变化,满足状态/输入约束

🚩 六、总结

  • QP(Quadratic Programming,二次规划) 是优化问题的一种特殊形式,目标函数为二次型,约束为线性等式或不等式。
  • QP 的求解方法:KKT条件、内点法、主动集法、梯度投影法等。
  • QP 在最优控制、机器学习、金融优化等领域广泛应用,特别是在MPC、LQR、轨迹优化、SVM等问题中。

在强化学习和最优控制研究中,掌握QP 和 DP的关系非常重要,可以帮助解决 连续控制问题(如无人机轨迹规划)最优决策问题


例子 🚀 以 MPC 控制无人机为例,详细解析 QP 求解过程

模型预测控制(Model Predictive Control, MPC) 是一种基于最优控制理论的方法,它在每个时间步求解一个**二次规划(QP, Quadratic Programming)**问题,以获得最优控制输入。

在本例中,我们详细解析 MPC 控制无人机的 QP 求解过程,从建模到求解的每个步骤。


📌 1. 建立无人机的动态模型

假设无人机是一个简单的线性离散系统,状态变量 x t x_t xt 和控制输入 u t u_t ut 满足:

x t + 1 = A x t + B u t x_{t+1} = A x_t + B u_t xt+1=Axt+But

其中:

  • 状态 (x_t):无人机的二维位置和速度(简化版)
    x t = [ p x , p y , v x , v y ] T x_t = [p_x, p_y, v_x, v_y]^T xt=[px,py,vx,vy]T

    • p x , p y p_x, p_y px,py:位置
    • v x , v y v_x, v_y vx,vy:速度
  • 控制输入 (u_t):加速度输入
    u t = [ a x , a y ] T u_t = [a_x, a_y]^T ut=[ax,ay]T

    • ( a_x, a_y ):无人机在 x 和 y 方向的加速度
  • 系统动力学矩阵(离散化)
    A = [ 1 0 d t 0 0 1 0 d t 0 0 1 0 0 0 0 1 ] , B = [ 0 0 0 0 d t 0 0 d t ] 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 = 0 N − 1 ( ( x t − x ref ) T Q ( x t − x ref ) + u t T R u t ) 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=0N1((xtxref)TQ(xtxref)+utTRut)

  • ( x_{\text{ref}} ):期望的轨迹(目标点)
  • ( Q ):状态误差的权重(鼓励轨迹跟踪)
  • ( R ):控制输入的权重(防止过大加速度)

约束条件:
x t + 1 = A x t + B u t x_{t+1} = A x_t + B u_t xt+1=Axt+But
u min ⁡ ≤ u t ≤ u max ⁡ u_{\min} \leq u_t \leq u_{\max} uminutumax
x min ⁡ ≤ x t ≤ x max ⁡ x_{\min} \leq x_t \leq x_{\max} xminxtxmax

其中:

  • ( u_{\min}, u_{\max} ) 限制无人机最大加速度
  • ( x_{\min}, x_{\max} ) 限制无人机运动范围

📌 3. 将 MPC 问题转换为标准 QP 问题

MPC 需要预测未来 ( N ) 步的状态,并优化控制输入。为此,我们展开状态方程 预测整个时间窗内的状态演化

(1)构造状态预测矩阵

整个预测时间窗 (N),我们将状态方程展开为矩阵形式

X = A x 0 + B U X = \mathcal{A} x_0 + \mathcal{B} U X=Ax0+BU

其中:

  • 状态向量(合并整个时间窗)
    X = [ x 1 x 2 ⋮ x N ] , U = [ u 0 u 1 ⋮ u N − 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= x1x2xN ,U= u0u1uN1

  • 状态转移矩阵
    A = [ A A 2 ⋮ A N ] \mathcal{A} = \begin{bmatrix} A \\ A^2 \\ \vdots \\ A^N \end{bmatrix} A= AA2AN

  • 控制影响矩阵
    B = [ B 0 0 … 0 A B B 0 … 0 A 2 B A B B … 0 ⋮ ⋮ ⋮ ⋱ ⋮ A N − 1 B A N − 2 B A N − 3 B … 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= BABA2BAN1B0BABAN2B00BAN3B000B

最终预测模型:
X = A x 0 + B U X = \mathcal{A} x_0 + \mathcal{B} U X=Ax0+BU


(2)将目标函数转化为 QP 形式

J = ( X − X ref ) T Q ( X − X ref ) + U T R U J = (X - X_{\text{ref}})^T Q (X - X_{\text{ref}}) + U^T R U J=(XXref)TQ(XXref)+UTRU
代入状态预测矩阵 ( X = \mathcal{A} x_0 + \mathcal{B} U ):

J = ( A x 0 + B U − X ref ) T Q ( A x 0 + B U − X ref ) + U T R U 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+BUXref)TQ(Ax0+BUXref)+UTRU

展开并整理得:
J = U T ( B T Q B + R ) U + 2 U T B T Q ( A x 0 − X ref ) + ( A x 0 − X ref ) T Q ( A x 0 − X ref ) 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(Ax0Xref)+(Ax0Xref)TQ(Ax0Xref)
最终标准 QP 形式:

min ⁡ U 1 2 U T H U + f T U \min_U \quad \frac{1}{2} U^T H U + f^T U Umin21UTHU+fTU

其中:

  • Hessian 矩阵(正定矩阵)
    H = B T Q B + R H = \mathcal{B}^T Q \mathcal{B} + R H=BTQB+R
  • 线性项
    f = B T Q ( A x 0 − X ref ) f = \mathcal{B}^T Q (\mathcal{A} x_0 - X_{\text{ref}}) f=BTQ(Ax0Xref)

约束条件变为:

  • 控制输入约束
    U min ⁡ ≤ U ≤ U max ⁡ U_{\min} \leq U \leq U_{\max} UminUUmax
  • 状态约束
    X min ⁡ ≤ X ≤ X max ⁡ X_{\min} \leq X \leq X_{\max} XminXXmax

📌 4. 使用 QP 求解器计算最优控制输入

(1)QP 求解方法

MPC 需要每个时间步求解 QP 问题,求解方法包括:

  • 内点法(Interior Point Method):适用于大规模 QP 问题
  • 主动集法(Active Set Method):适用于小规模问题
  • 梯度投影法(Projected Gradient Descent):适用于约束优化

(2)求解步骤

  1. 构造 QP 矩阵 H , f H, f H,f
  2. 设定约束条件
  3. 调用 QP 求解器(如 OSQP, quadprog, CVXPY)
  4. 获得最优控制输入 U ∗ U^* U
  5. 执行第一个控制步 u 0 u_0 u0,并进入下一时间步

🚀 5. 总结

  1. MPC 通过求解 QP 问题获得最优控制输入,每个时间步优化未来 (N) 步的轨迹。
  2. QP 通过二次优化目标+线性约束求解,最终转换为标准凸优化问题
  3. QP 求解方法(内点法、主动集法)可高效求解控制问题,在无人机轨迹规划、自主导航、自动驾驶等领域广泛应用。

MPC + QP 是现代最优控制的核心技术之一,也是强化学习、控制系统研究的重要基础。🚀🚀🚀

### 关于二次规划Quadratic Programming) #### 定义与基本形式 二次规划(Quadratic Programming, QP)涉及的是在一个由线性等式和不等式定义的空间内寻找使给定的二次目标函数达到最小值的问题[^1]。具体来说,标准形式的二次规划可以表示为: \[ \begin{aligned} & \underset{x}{\text{minimize}} & & \frac{1}{2}x^TQx + c^Tx \\ & \text{subject to} & & Ax = b,\\ &&& Gx \leq h, \end{aligned} \] 其中 \(Q\) 是对称矩阵,\(c,A,b,G,h\) 均为已知向量或矩阵。 #### 算法原理 对于严格凸的情况,即当 \(Q\) 正定时,存在有效的方法来解决问题。D. Goldfarb 和 A. Idnani 提出了一个数值上稳定的方法用于解决此类问题,该方法基于拉格朗日乘数法则并采用了一个特别设计的工作集策略以提高计算效率[^5]。 #### 应用场景 二次规划在多个学科中有重要应用,特别是在那些需要处理带有约束条件下的最优化问题场合下显得尤为重要。例如,在金融投资组合管理中用来确定最优资产配置;在机械臂路径规划里作为轨迹生成的一部分;还有电力系统运行中的经济调度等问题都可以建模成二次规划的形式加以求解。 ```matlab % 这是一个简单的QP例子,展示如何设置和调用MATLAB内置qp solver quadprog() H = [1 -1; -1 2]; % Hessian matrix of the objective function f = [-2; -6]; % Linear term vector in the objective function A = [1 1; % Inequality constraint matrix -1 2; 2 1]; b = [2; % Right-hand side of inequality constraints 2; 3]; lb = zeros(2,1); % Lower bounds on variables [x,fval] = quadprog(H,f,A,b,[],[],lb); disp('Solution:'); disp(x); disp('Objective value:'); disp(fval); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值