模型预测控制MPC算法演进:从工业萌芽到学习型MPC的四个阶段
发布时间:2026/10/13 16:47:05 锦皓数字建站

1. 从“能算”到“算得快、算得稳”MPC算法演进的核心驱动力模型预测控制Model Predictive Control简称MPC这个词这几年在过程控制、自动驾驶、机器人、能源管理这些圈子里被提得越来越多。但很多人第一次接触MPC的时候容易把它当成一个“新算法”来学实际上它从上世纪七十年代就在工业过程控制里落地了算起来比很多现在流行的深度学习算法资历老得多。我写这个系列的第二篇就是想把这几十年的算法发展脉络捋清楚——为什么最早的MPC只能在化工厂里跑后来怎么一步步走到今天能在车载芯片上实时求解中间到底经历了哪些关键的转折点。如果你正在学MPC或者准备在自己的项目里用它我建议你先别急着去啃那些推导公式。先把算法发展的几个阶段搞明白知道每个阶段解决了什么问题、又留下了什么坑后面再看具体算法的时候你会清楚很多设计选择背后的“为什么”。这篇文章我会按时间线和问题驱动两条线索来展开把MPC从最初的样子讲到现在的几个主流分支中间穿插一些我在实际项目里踩过的坑和选型经验。1.1 为什么MPC的发展史值得单独拿出来讲很多人学MPC是直接从“预测模型滚动优化反馈校正”这三大要素入手的这没错但这样学有个问题你会觉得这三个要素是天然就长在一起的不知道它们各自是怎么演化过来的。实际上MPC的每一次重大升级几乎都是因为某一个要素在实际应用里暴露了短板然后被逼着改进的。比如最早的工业MPC用的是阶跃响应模型为什么不用状态空间因为当时现场工程师拿不到精确的物理模型只能做阶跃测试拿数据。后来状态空间模型流行起来是因为要处理多变量耦合和约束问题阶跃响应模型不够用了。再后来显式MPC、经济MPC、分布式MPC这些分支冒出来每一个都是冲着某个具体痛点去的。理解这条脉络你在做项目选型的时候就不会盲目跟风。我见过不少项目明明是个慢速的温度控制回路非要用非线性MPC结果调试周期拉长了好几倍效果还不如PID加前馈。也见过该用约束MPC的地方硬上LQR约束一碰就发散。这些问题的根源都是对MPC各分支的适用边界不清楚。1.2 算法演进的四个关键阶段我把MPC的发展大致分成四个阶段这个分法不是教科书上的标准划分是我自己根据实际项目经验总结的方便记忆和理解。第一阶段工业萌芽期1970s-1980s。代表算法是动态矩阵控制DMC和模型算法控制MAC。这个阶段的核心特征是用非参数模型阶跃响应、脉冲响应在线求解二次规划主要解决多变量约束问题。应用场景集中在石化、电力这些慢过程。第二阶段理论成型期1980s-1990s。状态空间模型被引入广义预测控制GPC出现稳定性、鲁棒性开始有理论保证。这个阶段MPC从“工程技巧”变成了“有理论根基的控制方法”。第三阶段快速求解期2000s-2010s。显式MPC、快速梯度法、内点法优化求解器的发展让MPC的在线计算量大幅下降开始进入汽车、机器人这些快动态领域。第四阶段多元化扩展期2010s至今。非线性MPC、经济MPC、分布式MPC、学习型MPC等分支并行发展应用场景从工业过程扩展到自动驾驶、无人机、电池管理、建筑节能等。这四个阶段不是严格串行的有重叠但每个阶段的主导问题和技术特征比较清晰。下面我逐个展开讲。2. 工业萌芽期DMC和MAC是怎么在化工厂里站稳脚跟的2.1 阶跃响应模型现场工程师的“无奈之选”最早期的MPC也就是DMC和MAC用的模型不是微分方程而是阶跃响应系数或脉冲响应系数。这个选择在当时看是无奈之举但现在回头看其实非常务实。那个年代化工厂里的反应釜、精馏塔这些设备物理建模极其困难。你很难写出一个精确的偏微分方程来描述塔板上的传质传热过程。但现场工程师可以做一件事给阀门一个阶跃变化记录出口温度或浓度的响应曲线。这条曲线就是模型。DMC用的就是这条阶跃响应曲线把它离散成一系列系数。假设在k时刻给一个阶跃输入未来N个时刻的输出变化就是这些系数乘以输入增量。这个模型的好处是不需要知道系统内部结构不需要辨识物理参数纯数据驱动现场工程师自己就能做。但它的局限也很明显。阶跃响应模型只能描述开环稳定对象遇到积分对象或者不稳定对象就歇菜了。而且模型长度固定时变系统处理起来很麻烦。我早年在一个换热器控制项目里用过DMC夏天和冬天的响应曲线差很多模型不更新的话控制效果波动很大。2.2 二次规划在线求解约束处理的第一次工程化DMC和MAC的另一个贡献是把约束优化真正落地了。在它们之前处理约束主要靠PID的限幅或者逻辑切换粗糙且容易震荡。DMC把约束写成线性不等式目标函数是输出偏差和控制增量的二次型这就形成了一个标准的二次规划QP问题。在线求解QP在八十年代的硬件上是很奢侈的事情。当时的做法是控制周期设得比较长比如几十秒甚至几分钟给QP求解留足时间。化工过程本身惯性大这个周期完全够用。所以DMC在石化行业迅速铺开据说当时有上千套装置在跑。注意DMC的QP问题规模不能太大。如果输入输出变量很多约束很复杂求解时间会指数上升。实际项目里一般会把变量分组或者用优先级策略简化约束。2.3 这个阶段的遗留问题工业萌芽期的MPC解决了“能不能用”的问题但留下了几个坑。一是稳定性没有理论保证参数调不好会发散二是模型失配时鲁棒性差三是只能处理线性约束非线性约束没法直接加。这些问题推动了下一阶段的理论突破。3. 理论成型期状态空间模型和GPC带来的范式转变3.1 从非参数模型到状态空间为什么这个转变很关键进入九十年代MPC的研究重心从工业界转向了学术界。状态空间模型被引入MPC框架这是一个范式级的转变。状态空间模型的好处是它可以描述系统内部状态可以处理多变量耦合可以方便地做状态估计可以扩展到非线性系统。而且状态空间模型和现代控制理论LQR、卡尔曼滤波是同一套语言理论工具可以直接借用。但状态空间模型也有代价你需要知道系统矩阵A、B、C、D。对于化工过程这些矩阵往往要通过系统辨识得到比阶跃测试麻烦得多。所以这个阶段出现了一个有趣的现象学术界热捧状态空间MPC工业界还在大量用DMC。直到后来辨识工具和软件成熟了状态空间MPC才在工业界普及。3.2 GPC把预测控制和自适应控制捏在一起广义预测控制GPC是这个阶段的另一个标志性成果。它的核心思想是用CARIMA模型受控自回归积分滑动平均模型描述系统在线递推辨识模型参数然后基于辨识结果做预测和优化。GPC的卖点是自适应。系统参数变了模型跟着变控制器自动调整。这在时变过程里很有吸引力。但实际用起来自适应机制会带来新的问题辨识需要持续激励激励不够参数就漂辨识噪声会传到控制量里引起抖动稳定性分析比固定模型MPC复杂得多。我在一个pH中和控制项目里试过GPCpH过程非线性极强GPC的自适应机制确实能跟上工况变化但需要仔细设计遗忘因子和激励策略否则参数会漂到不合理的地方。后来这个项目还是换回了增益调度的MPC更稳。3.3 稳定性理论从“调参玄学”到“有据可依”这个阶段最重要的理论贡献是MPC的稳定性证明。早期MPC没有稳定性保证全靠工程师经验调参数。九十年代学者们证明了如果终端约束集是控制不变集终端代价函数是Lyapunov函数那么MPC闭环稳定。这个结论的意义在于它把MPC的设计从“玄学”变成了“有章可循”。你可以通过设计终端约束和终端代价来保证稳定性。虽然实际工业MPC很少严格按这个框架来因为终端约束太保守影响性能但理论上的保证让MPC在安全关键领域有了底气。实操心得终端约束集的设计是MPC稳定性的关键。如果终端约束太紧可行域会很小控制器容易“无解”如果太松稳定性保证会失效。我的经验是先用最大可控不变集算一个初始值再根据实际性能需求适当放松。4. 快速求解期MPC怎么从慢过程走进快动态领域4.1 显式MPC把在线优化搬到离线MPC进入快动态领域比如汽车、机器人的最大障碍是计算量。在线求解QP哪怕是小规模问题在毫秒级控制周期里也很吃力。显式MPC的思路很巧妙既然QP的解是状态的分段仿射函数那我能不能离线把所有可能状态的解都算出来在线只做查表和简单计算答案是能但有条件。显式MPC把状态空间划分成很多多面体区域每个区域对应一个仿射控制律。在线时判断当前状态落在哪个区域直接套公式。计算量从“求解优化”降到“点定位”速度提升几个数量级。但显式MPC的局限也很明显状态维数不能太高一般超过5维区域数量会爆炸式增长存储和查表都受不了。而且它只能处理线性系统和线性约束非线性系统没法直接做。所以显式MPC在汽车发动机控制、电力电子这些低维快动态场景里用得比较多高维复杂系统还是得在线求解。4.2 快速优化算法内点法和梯度法的工程化在线求解MPC的另一个方向是改进优化算法。内点法在九十年代成熟它的优点是迭代次数少、收敛快适合MPC这种需要高精度解的场景。但内点法每次迭代要算Hessian矩阵计算量还是不小。后来快速梯度法比如Nesterov加速梯度被引入MPC它的优点是每次迭代只算梯度计算量小适合嵌入式平台。缺点是收敛速度慢需要很多次迭代才能达到精度。实际项目里如果控制周期允许快速梯度法在低成本芯片上很有竞争力。我做过一个无人机姿态控制的MPC项目用的就是快速梯度法在STM32上跑控制周期5毫秒迭代20次效果可以接受。如果用内点法同样的芯片跑不动。4.3 求解器生态从手写代码到专用工具这个阶段还出现了一批MPC专用求解器比如针对凸优化问题的自动代码生成工具。你只需要用高级语言描述优化问题工具自动生成C代码部署到嵌入式平台。这大大降低了MPC的工程门槛。但工具不是万能的。自动生成的代码往往有冗余效率不如手写优化。而且工具对问题的形式有要求非标准问题需要改写。我的建议是原型阶段用工具快速验证产品阶段根据实际瓶颈手写关键部分。5. 多元化扩展期MPC的边界是怎么被不断打破的5.1 非线性MPC从线性化到直接非线性优化线性MPC的局限在于它只能处理线性模型和线性约束。但实际系统大多是非线性的比如机器人动力学、电池充放电特性、化工反应动力学。非线性MPCNMPC直接拿非线性模型做预测优化问题变成非线性规划NLP。NMPC的挑战在于NLP求解比QP难得多可能陷入局部最优求解时间长稳定性分析复杂。实际项目里NMPC的落地方式有几种一是线性化后做线性MPC牺牲精度换速度二是序列二次规划SQP每次迭代解一个QP三是直接配点法把NLP离散成大规模稀疏问题。我在一个电池热管理项目里用过NMPC电池的热模型是非线性的线性MPC在低温工况下误差很大。NMPC效果明显更好但求解时间从几毫秒涨到几十毫秒需要专门优化代码。5.2 经济MPC从跟踪设定值到直接优化经济指标传统MPC的目标是让输出跟踪设定值。但很多场景下设定值本身不是最优的直接优化经济指标更合理。经济MPC就是把目标函数从“跟踪误差”换成“经济成本”比如能耗、利润、效率。经济MPC的理论挑战在于经济目标函数通常不是正定的稳定性分析不能直接用传统MPC的框架。而且经济MPC的稳态可能不在约束内部而是在约束边界上这给控制器设计带来新问题。实际应用里经济MPC在过程工业的实时优化RTO层和MPC层之间架了一座桥。传统做法是RTO算设定值MPC跟踪设定值两层时间尺度不同。经济MPC把两层合并响应更快但计算量和稳定性风险也更大。5.3 分布式MPC大系统的分解与协调对于大规模系统比如电网、交通网络、多机器人编队集中式MPC的变量太多求解不了。分布式MPC把大系统拆成多个子系统每个子系统有自己的MPC通过通信协调。分布式MPC的核心问题是怎么保证子系统之间的协调收敛到全局最优常用的方法有交替方向乘子法ADMM、分布式内点法、博弈论方法。每种方法在收敛速度、通信量、隐私保护上各有取舍。我在一个多区域建筑温控项目里用过分布式MPC每个区域一个控制器通过共享边界温度协调。效果比集中式差一点但计算量从不可行变成可行而且单点故障不影响全局。5.4 学习型MPC当MPC遇上机器学习最近几年学习型MPC成为一个热点。核心思路是用机器学习方法来辅助MPC的某个环节比如学习模型、学习终端代价、学习约束、加速求解。学习模型是最常见的用神经网络或高斯过程来拟合系统动力学替代物理模型。这在模型难建的系统里很有用但神经网络的泛化性和安全性需要仔细验证。学习终端代价是另一个方向用强化学习来学一个近似Lyapunov函数替代传统MPC的终端代价。这样可以在保证稳定性的同时放松终端约束提升性能。但学习型MPC目前还在研究阶段工业落地案例不多。主要顾虑是安全性和可解释性。在安全关键系统里纯学习的方法很难通过认证。6. 算法选型的实战逻辑什么场景用什么MPC6.1 选型决策表场景特征推荐算法理由注意事项慢过程、多变量、约束复杂DMC或状态空间MPC成熟、稳定、工业验证充分模型更新周期要合理快动态、低维、嵌入式显式MPC或快速梯度MPC计算量小、实时性好状态维数不宜过高强非线性、精度要求高NMPC模型精度高、控制效果好求解时间要留足余量经济指标直接优化经济MPC避免设定值次优稳定性分析要额外做大规模分布式系统分布式MPC计算可扩展、鲁棒性好通信延迟要处理模型难建、数据充足学习型MPC数据驱动、适应性强安全验证要严格6.2 我踩过的选型坑第一个坑在一个快速伺服控制项目里用了标准状态空间MPC控制周期1毫秒结果在线QP求解时间超过控制周期系统直接失控。后来换成显式MPC才解决。教训是快动态场景一定要先算清楚求解时间。第二个坑在一个非线性很强的pH控制项目里先用线性MPC效果很差后来换NMPC效果好但调试周期长。教训是非线性MPC的收益和成本都要提前评估不是所有非线性系统都值得上NMPC。第三个坑在一个多变量精馏塔项目里变量之间有强耦合用分散PID怎么调都不理想。后来上DMC效果立竿见影。教训是多变量耦合是MPC的强项该用的时候不要犹豫。7. 常见问题与排查技巧实录7.1 MPC常见问题速查表问题现象可能原因排查方法解决措施控制器无解约束太紧、状态超出可行域检查约束设置和当前状态放松约束、加软约束、加可行性恢复控制量抖动模型失配、噪声大、权重不合理检查模型精度和控制量权重重新辨识模型、加滤波、调权重稳态误差模型增益不准、无积分作用检查稳态增益加输出扰动估计、改用增量形式响应慢预测时域太短、控制权重太大检查时域和权重加长预测时域、减小控制权重超调大预测时域太短、模型欠阻尼检查时域和模型加长时域、调整模型阻尼计算超时问题规模大、求解器效率低检查变量数和求解时间降维、换求解器、用显式MPC7.2 独家避坑技巧技巧一模型辨识比控制器调参重要十倍。我见过太多项目控制器参数调来调去效果不好最后发现是模型不准。MPC是基于模型的模型错了算法再先进也没用。建议在辨识上多花时间多做几组工况的验证。技巧二约束要留余量。实际系统有不确定性约束卡得太死稍微一扰动就无解。我的经验是硬约束留5%-10%的余量关键约束加软约束。技巧三预测时域和控制时域要匹配。预测时域太短看不到未来约束太长计算量大且模型误差累积。一般预测时域覆盖系统主要动态过程控制时域取预测时域的1/5到1/3。技巧四权重矩阵不要拍脑袋。输出权重和控制权重的比例决定了控制器的“性格”。输出权重大跟踪紧但控制量猛控制权重大控制平滑但跟踪慢。建议先用归一化方法给初值再微调。技巧五在线诊断不能少。MPC上线后要监控求解时间、可行域、控制量饱和情况。一旦发现异常及时降级到备用控制器。我在项目里都会加一个简单的PID备用MPC出问题自动切换。8. 从算法演进看MPC的未来走向8.1 求解速度和模型精度的持续博弈MPC发展的主线一直是“算得更快”和“算得更准”之间的博弈。显式MPC牺牲了在线灵活性换速度NMPC牺牲了速度换精度学习型MPC试图用数据换两者但安全性和泛化性还有待验证。未来几年我判断这个博弈会继续。硬件在进步嵌入式芯片算力越来越强以前跑不动的NMPC可能会在更多场景落地。但算法层面的创新也不会停比如结合物理信息的神经网络模型、自适应时域策略、事件触发MPC等。8.2 工程落地的关键还是“合适”不管算法怎么发展工程落地的核心逻辑没变选合适的算法解决合适的问题。不是越先进越好不是越复杂越好。一个稳定的PID加前馈能解决的问题没必要上MPC。一个线性MPC能解决的问题没必要上NMPC。我在实际项目里的体会是MPC的价值在于处理多变量、约束、预测这三类问题。如果项目里没有这三类需求MPC的优势发挥不出来。如果有MPC往往能带来质的提升。最后分享一个小技巧如果你刚开始接触MPC建议从一个简单的仿真例子入手比如双积分系统或者倒立摆把预测、优化、滚动时域这几个概念跑通。然后再逐步加约束、加非线性、加扰动。这样学起来比直接啃理论快得多也扎实得多。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。