3. 优化基础

模型预测控制(MPC)的核心机制,是在每一个采样时刻求解一个有限时域开环最优控制问题。这个“最优”并非凭空定义,而是由目标函数(Cost Function)量化,由约束条件(Constraints)限定可行域,最终通过数值优化算法求解。因此,理解目标函数的构造、约束的处理方式以及二次规划(QP)与凸优化的数学本质,是掌握MPC从原理走向工程实现的关键桥梁。本章将系统拆解这些基础概念,并揭示它们如何在滚动时域框架下协同工作。

MPC优化问题构成与求解链路 MPC优化问题 min J(x,u) 目标函数 J 约束条件 决策变量序列 标准QP形式 min ½xᵀHx + gᵀx s.t. Ax ≤ b Aeq·x = beq lb ≤ x ≤ ub 凸优化性质 • H 半正定 (H≥0) • 可行域为凸集 • 局部最优 = 全局最优 • 多项式时间可解 求解器:内点法 / 有效集法 / 梯度投影法 输出:最优控制增量 Δu* 滚动时域执行 k时刻求解 → 施加u(k) → k+1时刻更新

上图展示了MPC优化问题的完整链路:从构建目标函数与约束,到转化为标准QP形式,再到利用凸优化性质进行高效求解。下面我们逐一深入剖析每个环节。

3.1 目标函数:控制性能的量化标尺

核心原理:目标函数(Cost Function)将控制目标(如快速跟踪、平滑动作、节能)转化为数学表达式。在MPC中,最常用的形式是有限时域二次型性能指标:

J = Σ_{i=1}^{N} [ (y(k+i|k) - r(k+i))ᵀ Q (y(k+i|k) - r(k+i)) ] 
    + Σ_{i=0}^{N-1} [ Δu(k+i|k)ᵀ R Δu(k+i|k) ]

其中,Q 为输出误差权重矩阵(半正定),R 为控制增量权重矩阵(正定),N 为预测时域。第一项惩罚输出偏离参考轨迹的程度,第二项惩罚控制动作的剧烈变化。权重矩阵的相对大小直接决定了控制器的“性格”:Q大则跟踪更激进,R大则动作更平稳。

判断方法:在实际工程中,Q和R的整定通常遵循以下步骤:

  • 归一化处理:先将各变量除以各自的量程或额定值,使权重无量纲化。
  • 初始设定:令Q为单位阵,R为0.1×单位阵,观察闭环响应。
  • 迭代调整:若超调过大,增大R或减小Q;若响应过慢,减小R或增大Q。
  • 引入时变权重:对于不同预测步,可设置不同的权重(如终端权重),以增强稳定性。
经验提醒:权重矩阵的选取没有唯一标准答案,但有一个实用原则——先保证稳定性,再追求快速性。建议在仿真环境中使用“带宽法”:先调节Q使闭环带宽达到期望值,再微调R抑制高频抖动。

3.2 约束处理:从物理极限到数学表达

核心原理:MPC相比传统PID的最大优势在于能够显式处理约束。工程中的约束主要分为三类:

约束类型 数学表达 典型工程来源
控制幅值约束 u_min ≤ u(k+i) ≤ u_max 阀门开度限位、电机电压上限
控制增量约束 Δu_min ≤ Δu(k+i) ≤ Δu_max 执行器速率限制、伺服电机加速度限制
状态/输出约束 y_min ≤ y(k+i) ≤ y_max 反应器温度安全上限、液位不溢出

操作流程:约束处理的关键在于将其转化为QP标准形式。对于线性MPC,所有约束都可以写成 Ax ≤ b 的矩阵不等式形式。例如,将预测时域内所有步的约束堆叠,形成一个大维度的线性不等式组。需要注意的是,约束的可行性问题——当约束过紧或相互矛盾时,优化问题可能无解。工程上常用的处理策略包括:

  1. 软约束(Soft Constraint):在目标函数中增加对约束违反量的惩罚项,允许在极端情况下轻微越界。
  2. 约束松弛(Constraint Relaxation):引入松弛变量ε,将硬约束 y ≤ y_max 改为 y ≤ y_max + ε,并在目标函数中惩罚ε。
  3. 优先约束分级:将约束分为硬约束(必须满足,如安全限)和软约束(尽量满足,如经济优化目标)。
风险提示:硬约束过多会导致可行域缩小,甚至出现“无解”情况。在实时控制中,若求解器返回“不可行”,必须设计后备策略(如切换到上一时刻的可行解、或采用预设的紧急控制律)。切勿让控制器在无解时输出零值或保持上一时刻值,这可能导致积分饱和或执行器卡死。

3.3 二次规划(QP)与凸优化:高效求解的数学基石

核心原理:当MPC的目标函数为二次型、约束为线性时,优化问题退化为标准的二次规划(QP)问题。QP是凸优化的重要子类,其标准形式为:

min  ½ xᵀ H x + gᵀ x
s.t.  A x ≤ b
      Aeq x = beq
      lb ≤ x ≤ ub

其中,H 为Hessian矩阵(对称且半正定),g 为梯度向量。凸优化性质保证了:任何局部最优解都是全局最优解,且求解算法具有多项式时间复杂度。这意味着MPC可以在毫秒级时间内求得确定性的最优解,满足实时控制需求。

判断方法:如何判断一个MPC问题是否为凸QP?

  • 目标函数中状态和控制均为线性或二次项,且二次项系数矩阵半正定。
  • 约束均为线性等式或不等式。
  • 预测模型为线性时不变(LTI)系统。

若模型为非线性,则问题变为非线性规划(NLP),求解难度显著增加。工程中常通过线性化、反馈线性化或子空间辨识将模型近似为线性,以保持QP结构。

常用求解算法对比:

算法 适用规模 迭代次数 特点
内点法 中大规模(n>1000) 固定(约20-50次) 对初始点不敏感,适合嵌入式实现
有效集法 中小规模(n<500) 可变(与激活约束数相关) 热启动效果好,适合在线迭代
梯度投影法 大规模稀疏 较多(数百次) 内存占用小,适合FPGA实现

3.4 案例拆解:无人机高度控制中的QP构造与求解

场景与目标:某四旋翼无人机需要执行精准的高度跟踪任务,参考高度从10m阶跃至15m。控制输入为电机推力(归一化0~1),输出为高度(m)。要求:上升时间<2s,超调量<5%,推力变化率限制在±0.2/s。

建模与参数:简化垂直动力学模型为 h'' = u - g,采样时间Ts=0.1s,预测时域N=20,控制时域Nu=3。状态变量 x=[h, v]ᵀ,输出 y=h。权重矩阵:Q=diag(10, 1),R=0.5。

约束表达:

0 ≤ u(k+i) ≤ 1          (推力饱和)
-0.2 ≤ Δu(k+i) ≤ 0.2    (变化率限制)
h(k+i) ≥ 0.5            (安全高度下限)

QP构造过程:将预测模型展开为矩阵形式,代入权重矩阵,得到Hessian矩阵H(维度为Nu×Nu=3×3)和梯度向量g。约束堆叠后形成A矩阵(维度为(2Nu+2N)×Nu)。最终调用内点法求解器(如OSQP或CVXGEN生成代码)。

求解结果与分析:

指标 设计值 仿真结果 是否满足
上升时间 <2s 1.7s ✅
超调量 <5% 3.2% ✅
推力变化率 ≤0.2/s 0.18/s ✅
求解时间 <10ms 2.3ms ✅

复盘与经验:在调试过程中发现,若将R从0.5降至0.1,上升时间缩短至1.2s,但推力变化率超限(0.25/s),导致执行器抖动。最终通过增大R并引入终端权重(对最后一步的状态误差加重惩罚),在保证约束满足的前提下获得了满意的动态响应。这一案例说明:权重整定与约束处理是耦合的,必须联合调试。

3.5 常见误区与总结复盘

误区一:忽视Hessian矩阵的正定性。若Q或R选取不当(如Q半正定但R非正定),可能导致H非正定,优化问题非凸,求解器可能收敛到局部最优或发散。检查方法:计算H的特征值,确保所有特征值≥0。

误区二:约束过多导致频繁不可行。在实时系统中,应优先保证硬约束(安全),对性能指标采用软约束。例如,将高度下限设为硬约束,而将“期望高度误差小于0.1m”设为软约束。

误区三:忽略求解时间抖动。有效集法的迭代次数随激活约束数变化,可能导致求解时间波动。在硬实时系统中,推荐使用内点法或固定迭代次数的算法(如ADMM),并预留最坏情况时间余量。

误区四:将QP与线性二次调节器(LQR)混淆。LQR是无限时域无约束问题,解析解为状态反馈;而MPC是有限时域有约束问题,数值解为开环序列。MPC的优势在于约束处理,但代价是计算量增大。

核心要点总结:
  • 目标函数中的Q/R权重决定了控制性能的“偏好”,需结合物理意义整定。
  • 约束处理的核心是“硬约束保安全,软约束保性能”,必要时引入松弛变量。
  • 凸QP是MPC实时求解的基石,保证全局最优性和可预测的计算时间。
  • 工程实现时,务必验证Hessian正定性、约束可行性和求解时间上界。

掌握上述优化基础,你就具备了理解MPC核心算法(如动态矩阵控制DMC、广义预测控制GPC)的数学工具。下一层次我们将进入预测模型与状态估计的讨论,但在此之前,请务必通过仿真实验亲手构造一个QP问题,感受权重变化对控制效果的影响——这是从“看懂公式”到“会用MPC”的必经之路。