3. 优化基础
模型预测控制(MPC)的核心机制,是在每一个采样时刻求解一个有限时域开环最优控制问题。这个“最优”并非凭空定义,而是由目标函数(Cost Function)量化,由约束条件(Constraints)限定可行域,最终通过数值优化算法求解。因此,理解目标函数的构造、约束的处理方式以及二次规划(QP)与凸优化的数学本质,是掌握MPC从原理走向工程实现的关键桥梁。本章将系统拆解这些基础概念,并揭示它们如何在滚动时域框架下协同工作。
上图展示了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。
- 引入时变权重:对于不同预测步,可设置不同的权重(如终端权重),以增强稳定性。
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 的矩阵不等式形式。例如,将预测时域内所有步的约束堆叠,形成一个大维度的线性不等式组。需要注意的是,约束的可行性问题——当约束过紧或相互矛盾时,优化问题可能无解。工程上常用的处理策略包括:
- 软约束(Soft Constraint):在目标函数中增加对约束违反量的惩罚项,允许在极端情况下轻微越界。
- 约束松弛(Constraint Relaxation):引入松弛变量ε,将硬约束
y ≤ y_max改为y ≤ y_max + ε,并在目标函数中惩罚ε。 - 优先约束分级:将约束分为硬约束(必须满足,如安全限)和软约束(尽量满足,如经济优化目标)。
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”的必经之路。