2. 预备知识
模型预测控制(MPC)之所以能在多变量、强约束、滚动时域的场景中稳定工作,本质上依赖四类数学工具的协同:线性代数负责把系统写成矩阵形式并完成预测方程的批量计算;微积分提供梯度、雅可比与泰勒展开,用于线性化和灵敏度分析;优化理论给出“在约束下求最优”的判定条件与求解框架;动态系统与状态空间模型则把物理对象抽象为可递推、可预测的数学对象。本节不追求数学证明的完整,而是把这些工具与 MPC 的实际计算步骤一一对应,帮助你在后续推导预测方程、构造二次规划、分析稳定性时知道“每一步在用什么”。
一、核心原理:四类工具在 MPC 中的分工
MPC 的典型在线计算可以概括为:用当前状态 x(k) 和未来控制序列 U 预测未来输出,再在约束下最小化代价函数,最后只施加第一个控制量。这个过程天然对应四个数学模块:
- 线性代数:把
x(k+1)=Ax(k)+Bu(k)展开成X = Φx(k) + ΓU,其中Φ、Γ是幂次与卷积构成的矩阵。预测、代价、约束都变成矩阵乘法与二次型。 - 微积分:对非线性模型
x(k+1)=f(x,u)在参考点做一阶泰勒展开,得到A=∂f/∂x、B=∂f/∂u;代价函数对U求导得到梯度,是二次规划(QP)标准形式的基础。 - 优化理论:把控制问题写成
min ½UᵀHU + gᵀU,约束为AU ≤ b。KKT 条件说明最优解处梯度与约束法向量满足互补松弛,这解释了为什么“贴约束”的解往往出现在边界上。 - 动态系统与状态空间:状态
x必须满足马尔可夫性——未来只依赖当前状态与未来输入,不依赖更早历史。这是滚动预测能够“截断”并递推的前提。
一句话记忆:线性代数把预测“批量算”,微积分把非线性“局部线性化”,优化理论把约束“变成边界条件”,状态空间把物理对象“变成可递推的 x 与 u”。
二、方法流程:从物理模型到 QP 标准型
下面给出一个可复用的推导流程,适用于线性时不变(LTI)模型与线性化后的非线性模型。
- 建立状态空间模型:确定状态
x∈Rⁿ、输入u∈Rᵐ、输出y∈Rᵖ,写出x(k+1)=Ax(k)+Bu(k)、y(k)=Cx(k)+Du(k)。 - 构造预测方程:令预测时域为
Np、控制时域为Nc,递推展开得到X = Φx(k) + ΓU,其中U=[u(k),…,u(k+Nc-1)]ᵀ。 - 写出代价函数:跟踪误差与输入增量的加权二次型
J = Σ‖y(k+i)-r(k+i)‖²_Q + Σ‖Δu(k+i)‖²_R,整理为J = ½UᵀHU + gᵀU + const。 - 加入约束:输入上下限、输入增量限幅、状态/输出安全域,统一写成
A_ineq U ≤ b_ineq。 - 求解与滚动:调用 QP 求解器得到
U*,只施加u(k)=U*(1),下一时刻用新状态重新构造并求解。
其中第 2 步的矩阵构造是线性代数的核心操作,第 3 步的求导与第 4 步的约束整理则分别依赖微积分与优化理论。下面用一段伪代码展示预测矩阵的构造逻辑:
# 构造预测矩阵 Phi 与 Gamma(LTI 情形)
# x(k+1)=A x(k)+B u(k), 预测 Np 步
Phi = zeros(n*Np, n)
Gamma = zeros(n*Np, m*Nc)
for i in range(Np):
Phi[i*n:(i+1)*n, :] = A ** (i+1)
for j in range(min(i+1, Nc)):
Gamma[i*n:(i+1)*n, j*m:(j+1)*m] = (A ** (i-j)) @ B
# 预测:X = Phi @ x_k + Gamma @ U
# 代价:J = 0.5 * U.T @ H @ U + g.T @ U
# 约束:A_ineq @ U <= b_ineq
三、案例/场景:一阶水箱系统的预测与约束
考虑一个离散化后的单水箱液位系统:状态为液位偏差 x,输入为泵流量增量 u,采样周期 Ts=1s,模型为 x(k+1)=0.9x(k)+0.1u(k)。设 Np=3、Nc=2,初始状态 x(0)=1,输入约束 -1≤u≤1。按上述流程可写出:
- 预测矩阵:
Φ=[0.9, 0.81, 0.729]ᵀ,Γ为下三角卷积矩阵。 - 代价函数:取
Q=1、R=0.1,目标是把液位拉回 0。 - 约束:
u(0)≤1、u(1)≤1、-u(0)≤1、-u(1)≤1,共 4 条不等式。
求解后若最优解中 u(0)=1 恰好贴住上限,说明约束在起作用;若去掉约束,最优输入可能更大。这正是优化理论中“有效约束”概念的直观体现。下表对比了四类工具在本案例中的具体作用:
| 数学工具 | 本案例中的具体对象 | 在 MPC 中的作用 |
|---|---|---|
| 线性代数 | Φ、Γ、H、g 矩阵 | 批量计算未来状态与代价 |
| 微积分 | ∂J/∂U、泰勒展开 | 求梯度、线性化非线性模型 |
| 优化理论 | QP、KKT、有效约束 | 在约束下求最优控制序列 |
| 状态空间 | x(k+1)=0.9x(k)+0.1u(k) | 保证递推预测的马尔可夫性 |
四、误区/复盘:最容易“卡住”的四个点
误区 1:把状态空间模型当成“随便选变量”。状态必须满足马尔可夫性,否则预测方程无法只依赖当前状态。若物理量不满足,需要增广状态(如把历史输入纳入状态)或改用输入输出模型。
误区 2:线性化后不检查工作点。泰勒展开只在参考点附近有效。若系统在大范围运动,需采用增益调度、分段线性化或非线性 MPC,否则预测模型与真实系统偏差会直接导致约束越界。
误区 3:约束写成非凸形式。优化理论中 QP 要求可行域为凸集。像“要么在 A 区、要么在 B 区”这类逻辑约束,需要引入整数变量变成混合整数二次规划(MIQP),否则求解器可能给出局部解或直接失败。
误区 4:求解完把整个 U* 都施加。MPC 的精髓是滚动时域:只施加 u(k)=U*(1),下一时刻用新测量状态重新求解。若一次性施加整段序列,就退化为开环最优控制,抗扰能力大幅下降。
复盘时建议按“模型—预测—代价—约束—求解—滚动”六步逐项检查:模型是否可递推、预测矩阵维度是否匹配、代价函数是否正定、约束是否凸、求解器是否返回可行解、是否只施加第一步。把这六步与本节四类数学工具对应起来,后续推导 MPC 的稳定性、递归可行性与终端约束时,就不会觉得数学是“额外负担”,而是每一步计算的自然语言。