模型预测控制(Model Predictive Control,MPC) 是一种控制策略:每隔一小段时间,就借助一个模型推演系统未来若干步的走向,解一个优化问题算出一整串控制动作,但只执行其中第一个;等到下一时刻,用新的测量值把这一切从头再做一遍。
像雨天开车盯着前方一百米
开车时你不会在出发前就定好每一次打方向的角度,而是盯着前方一段路,判断接下来这几百米该怎么走,打一把方向,车往前挪一点,再看一眼新路况,重新判断。
MPC 就是把这套「看一段、走一步、再看」写成数学。三个部件:
- 预测时域(prediction horizon):往前看多远。看得远能提前规避风险,但优化问题更大、算得更慢,长度是个权衡。
- 代价函数(cost function):想最小化的东西。例如偏离目标轨迹多少、动作有多猛(乘客舒适度)、能耗多大。
- 约束(constraints):硬性边界。速度上限、跟车距离、机械臂关节角范围、电机最大扭矩。
因为每次都只执行第一步、然后重新测量重新求解,系统天然成了一个反馈闭环——模型不准、外界有扰动,下一步就会被新的实测值纠正过来。这个「滚动重算」的机制有个专门名字:滚动时域控制(receding horizon control)。
约束是 MPC 最讨喜的地方。传统控制往往先设计一个控制器,再靠调参数、加限幅去「绕开」物理极限;MPC 直接把极限写进优化问题,解出来的动作天生不越界。
和邻居们的区别
| 方法 | 用模型 | 预测未来 | 显式处理约束 | 在线计算量 |
|---|---|---|---|---|
| PID | 不用 | 不预测 | 不显式 | 几乎为零 |
| LQR | 用 | 常按无穷时域 | 一般不处理 | 通常离线解一次 |
| MPC | 用 | 有限时域滚动 | 能 | 每一步都要解 |
| 强化学习 | 从数据中学 | 隐式 | 一般不保证 | 推理便宜、训练贵 |
PID(Proportional-Integral-Derivative)只看当前误差,简单可靠但不预测、不处理约束;LQR(Linear Quadratic Regulator)也依赖模型,但通常在无穷时域上一次求解,约束不好表达;强化学习(Reinforcement Learning,RL)从试错中学策略,推理时很快,但硬约束的安全保证较弱。MPC 的代价是每步都要在线求解——模型线性、目标二次时是个二次规划,较快;模型非线性时变成非线性优化,更吃力。
对从业者和普通人的意义
自动驾驶的横纵向控制是 MPC 的典型战场:既要贴住规划给出的轨迹,又要保证不追尾、转向平顺、不突破轮胎抓地力,这些恰好都是约束。机器人(机械臂、四足、无人机)用它处理扭矩和关节限制。工业过程控制其实是 MPC 的出身地——化工、炼油过程变化慢,几秒到几分钟的控制周期给优化留足了算力。
对 AI 从业者来说,MPC 是「优化 + 反馈」的经典范式,学习型模型和 RL 与它的结合是热门方向:用神经网络替代或加速预测模型、用学习来设计代价函数。算力决定控制频率,这是工程上最实在的矛盾。各类开源与商业求解器的性能与许可,以官方页面为准。
一句话概括:MPC 的聪明不在于算得准,而在于承认自己算不准,所以每一步都重算。
