1. MPC 到底在做什么
模型预测控制(MPC)的核心,是在线反复求解有限时域最优控制问题:根据当前状态预测未来轨迹,求一段满足约束且代价最小的控制序列,只执行第一个控制量,然后重新测量状态、向前滚动时域并再次求解。正是这种“每一步重新优化”把原本的开环预测变成了闭环反馈控制。
关键要点
- 预测依赖系统模型;优化负责选择未来输入序列;反馈则来自每次获得新测量后重新求解。
- 当状态、输入、能量、碰撞等约束必须严格考虑时,MPC 尤其有优势。
- 优化时域有限是为了可计算,但不断滚动执行可以形成长期运行的控制器。
一维直觉
例如车辆接近停车线:MPC 预测未来 N 步位置和速度,把停车误差和控制能耗写进目标函数,把速度与加速度写成约束,求出一串制动量,但只执行第一步,然后下一采样时刻重新计算。
2. 系统模型与离散化
MPC 首先需要一个可用于预测的动态模型。常见起点是连续线性系统 ẋ=Ax+Bu,根据采样周期 T_s 离散化为 x_{k+1}=A_d x_k+B_d u_k;非线性系统则写成 x_{k+1}=f(x_k,u_k)。状态 x 应尽可能包含预测未来所需的信息,u 则是控制器能够直接决定的控制量。
关键要点
- 采样太慢会丢失动态特征;采样太快则增加求解频率,并可能放大测量噪声的影响。
- 模型失配不可避免;可通过鲁棒 MPC、自适应 MPC、扰动模型和高频反馈等方式缓解。
- 跟踪任务中,常加入扰动状态或积分状态,以消除模型误差导致的稳态偏差。
3. 多步预测与矩阵堆叠
对于离散线性系统,可以递推展开未来状态。把 N 步预测状态和控制量分别堆叠为 X 与 U 后,可写成 X=𝒜x_k+ℬU。这个 condensed form 很重要,因为它把整段动态约束压缩成一个矩阵关系,使 MPC 可以直接写成以 U 为决策变量的标准二次规划。
关键要点
- 预测矩阵 𝒜 由 A 的幂组成;ℬ 中的 A^iB 描述每个未来输入如何影响后续状态。
- Condensed 形式减少显式状态变量,但矩阵可能变稠密;长时域问题常保留状态与动态约束,利用稀疏求解器更高效。
4. 目标函数:控制器究竟在偏好什么
标准跟踪型 MPC 会在预测时域内惩罚状态/输出跟踪误差和控制能耗,并在末端加入 terminal cost。Q 决定哪些状态误差更重要,R 决定多大程度抑制激烈控制,有时还会惩罚 Δu 来获得更平滑的控制指令。权重尺度会直接改变闭环行为,因此最好根据物理量单位和控制优先级来调,而不是随意设很大的数字。
关键要点
- Q 相对 R 较大时跟踪更激进;R 较大时控制更保守。
- 若不同状态物理量级相差很大,最好先做尺度归一化再讨论 Q 的权重。
- 软约束通过 slack variable 和惩罚项允许有限违约,可避免某些场景下一旦硬约束不可行就直接求解失败。
5. 约束:MPC 最核心的工程优势
MPC 可以把状态边界、输入边界、输入变化率、防碰撞、能量预算、资源容量以及多智能体耦合等约束直接写进优化问题。硬约束要求求解结果必须满足;软约束则引入松弛变量并付出惩罚。工程上需要区分“物理/安全约束”和“性能偏好”:前者通常应该保持硬约束,后者在必要时可以软化。
关键要点
- 即使系统本身可控,有限时域 MPC 也可能因约束和时域长度而不可行。
- 鲁棒 MPC 常通过约束收紧为不确定性预留安全裕度。
- 若引入开关逻辑、模式切换、调度或分配决策,问题会变成混合整数 MPC,计算复杂度远高于普通线性 QP-MPC。
6. 从线性 MPC 到标准 QP
当系统动态线性、代价函数二次、约束线性时,MPC 就是凸二次规划(QP)。将 X=𝒜x_k+ℬU 代入目标与约束后,在线问题可以整理成标准形式:min 1/2 U^T H U + f(x_k)^T U,subject to GU≤h+Ex_k。若 H 半正定,这就是成熟求解器能够稳定快速处理的凸 QP。
关键要点
- H 主要由 Q、R、P 和预测矩阵决定;f 会随当前状态与参考轨迹变化。
- 把上一时刻的最优序列平移后作为 warm start,常能显著降低在线求解时间。
- 嵌入式实时控制中,比平均求解时间更重要的是最坏情况下能否在采样周期内完成。
7. 滚动时域算法:每个采样时刻到底做什么
MPC 的在线实现循环并不复杂,但顺序非常重要:每个采样时刻先获取或估计当前状态,更新参考值和外部预测,构造优化问题,求解并检查求解器状态,只应用最优序列中的第一个控制量,然后进入下一时刻重复。预测轨迹只是“当前计划”,不是未来必须照搬的承诺,因为后续输入在真正执行前通常都会重新计算。
关键要点
- 若状态无法全部直接测量,状态估计器就是 MPC 在线循环的一部分。
- 真实系统里必须为求解超时或不可行定义 fallback control,而不能默认求解器永远成功。
- 调试时应记录预测约束裕度、各目标项、求解器状态和求解时间,而不只看输出轨迹。
8. 递归可行性:为什么现在可行,下一步也要可行
某一时刻优化问题可行,并不自动意味着下一时刻仍然可行。递归可行性要求:如果当前 MPC 可行并按照规定控制执行,那么下一时刻的 MPC 仍然可行。经典证明使用“移位论证”:把上一次可行控制序列丢掉第一项、整体向前平移,再在末尾补一个满足终端条件的控制动作。终端集合和局部不变控制器的作用,就是保证这个补上的尾部仍然可行。
关键要点
- 递归可行性是控制器设计本身的性质,不是“求解器性能好”就能自动获得的。
- 存在扰动时,名义移位论证可能失效,需要鲁棒不变集或约束裕度。
- 软约束可以减少优化不可行,但并不等价于证明硬安全约束始终满足。
9. 稳定性、Terminal Cost 与 Terminal Set
有限预测时域会产生“只顾眼前 N 步”的风险。终端设计就是用来近似时域之外的后续影响:terminal cost V_f(x) 估计剩余无限时域代价;terminal set X_f 要求预测末端进入一个已知局部控制器可以保持可行并继续稳定的区域。在经典条件下,MPC 的最优值函数可以充当闭环系统的 Lyapunov 函数。
关键要点
- 在线性二次 MPC 中,LQR 常提供自然的终端反馈 K 与终端矩阵 P。
- 终端集合通常要求在终端控制器下正不变,并满足状态与输入约束。
- 实际工程中并非所有 MPC 都显式使用 terminal set,但省略它会改变能否严格证明的稳定性与可行性性质。
10. 鲁棒 MPC 与 Tube MPC
若真实系统为 x_{k+1}=Ax_k+Bu_k+w_k,且扰动 w_k∈W 有界,那么只做名义 MPC 可能导致真实状态越界。Tube MPC 把真实状态分成名义状态 z_k 与误差 e_k=x_k−z_k:优化器只为 z 和名义输入 v 规划,并使用收紧后的约束;局部反馈 K e_k 则把真实状态保持在名义轨迹周围的鲁棒误差管束内。
关键要点
- E 是误差动态的鲁棒正不变集合。
- 约束收紧的本质,是为最坏情况下的误差预留可行裕度。
- 相比直接对所有扰动序列做 worst-case 优化,Tube MPC 往往更实用,并在很多线性系统中保持可接受的保守性。
11. 非线性 MPC 与分布式 MPC
非线性 MPC(NMPC)直接保留非线性动态或约束,因此在线求解的是非线性规划,而不是凸 QP。它可以更准确,但实时求解和全局最优性更困难。分布式 MPC(DMPC)则面向多智能体/网络化系统,把全局优化拆成多个局部子问题,通过交换预测轨迹、耦合变量或对偶信息实现协调。其核心难点变成:如何在保证耦合约束的同时控制通信与计算开销。
关键要点
- SQP 和 interior-point 是常见 NMPC 求解方法,warm start 对实时性非常重要。
- DMPC 可以是协作式、博弈式、分层式,也可以基于 consensus/ADMM 分解。
- 在网络化控制里,通信时延和丢包不再只是“网络问题”,而会直接影响控制器设计。
12. MPC 调参和排错清单
MPC 表现不好时,不应该第一反应就乱改 Q/R。更可靠的排错顺序是:先确认离散模型和状态估计正确,再检查无约束预测,再逐步加入约束,最后才调 Q/R/P 与 horizon。要通过 condition number、solver status、active constraints、预测误差等日志,把数值问题与控制设计问题分开。
关键要点
- 若 infeasible,应先定位是哪类约束冲突,而不是盲目增加惩罚。
- 若控制振荡,检查采样周期、模型失配、过激的 Q/R 比例以及是否缺少 Δu 惩罚。
- 若求解太慢,可缩短 horizon、利用稀疏结构、warm start、简化非线性,或把慢速整数/组合决策放到更高层。
这一节要记住
看完这篇后,你应该能够从线性系统推导基本 MPC-QP,解释滚动时域为什么形成反馈,区分“可行性”和“稳定性”,并说清 Tube MPC 与 DMPC 分别解决什么问题。