本页目录

进阶 III · 最优控制与 MPC

层次:研究生核心 + 唯一大规模工业落地的"高级"方法 | 🔗 前置:凸优化(grad-math)。 前面反复出现同一个短板:PID 无法处理约束(第六页)、LQR 无法处理约束(第八页)、鲁棒控制保守且难维护(第十六页)。而真实工程中约束无处不在——阀门开度 0–100%、温度不得超限、电流不得过载。MPC(模型预测控制)的全部成功,几乎都来自它对这一件事的正面回答。

学习层:电池热管理的下一次动作,取决于未来五步能不能安全到达

1. 具体工程情境:升温目标、输入上限和终端可行性

把电池包的归一化温度状态写成一个离散标量模型:

\[ x_{k+1}=0.9x_k+0.4u_k,\qquad x_0=0,\qquad x_{\mathrm{target}}=1. \]

加热输入和状态都有硬约束:

\[ |u_k|\le0.6,\qquad |x_k|\le1.2. \]

如果控制器只看当前误差,它可能选择一个“现在最激进、未来却到不了安全带”的动作。MPC 要在当前时刻预测 \(N\) 步,计算代价,并且在候选序列生成时就拒绝越界轨迹。

预测门,必须先作答:

  1. 默认约束下,为什么 \(N=3\) 可能不可行而 \(N=5\) 可行?
  2. 候选最优动作超过 \(u_{\max}\) 时,应该事后限幅,还是在优化中保留输入约束?
  3. 滚动时域解出 \(u_0,\ldots,u_{N-1}\) 后,实际执行整段还是只执行第一步?

2. 正式公式桥:这是真正带约束的有限时域问题

实验的目标函数是

\[ J=\sum_{k=0}^{N-1}\left[(x_k-1)^2+R u_k^2\right] +2(x_N-1)^2, \]

约束包括动力学、输入、状态和终端可行性:

\[ \begin{aligned} x_{k+1}&=0.9x_k+0.4u_k,\\ |u_k|&\le u_{\max},\qquad |x_k|\le x_{\max},\\ x_N&\ge 1-0.02. \end{aligned} \]

实验用 17 个等间距输入候选和状态分箱做确定性的可解释近似,然后在每一个滚动时刻重新求解。它不是把无约束 LQR 的 \(u=-Kx\) 结果拿来再 clip:在本页的可行性证书中,越界候选从一开始就不进入比较。

3. 动手实验:调时域,观察可行性如何先于“最优”

提交三项预测后,拖动 \(N\)、\(u_{\max}\)、\(x_{\max}\) 和输入代价 \(R\)。上图显示实际状态、目标、状态边界和初始时刻的预测计划;下图显示每个滚动时刻真正执行的第一步输入及其边界。时域扫描和滚动账本分开列出:前者回答“有没有满足终端约束的序列”,后者回答“反馈运行时每一步究竟执行了什么”。

JavaScript 失效时的静态 fallback:默认取 \(N=5,\ u_{\max}=0.6,\ x_{\max}=1.2,\ R=0.12\)。由全力输入可达的状态上界 \(x_N=0.4(0.6)\sum_{i=0}^{N-1}0.9^i\),所以 \(N=3\) 只能到 \(0.650\),\(N=4\) 到 \(0.825\),而 \(N=5\) 到 \(0.983\),刚好进入 \(x_N\ge0.98\) 的终端带。

\(N\) 终端可行性 \(x_N\) 或可达上界 \(J\) 第一输入
2 不可行 max \(0.456\) — —
3 不可行 max \(0.650\) — —
4 不可行 max \(0.825\) — —
5 可行 \(0.983\) \(2.243\) \(0.600\)
6 可行 \(1.008\) \(2.251\) \(0.600\)

默认 \(N=5\) 的第一段计划是 \(x:0\to0.240\to0.456\to0.650\to0.825\to0.983\),每次 \(u=0.6\);滚动执行时只落实第一个 \(0.6\),下一采样再以新状态重解。若调到不可行时域,实验明确显示不可行并采用安全零输入回退,不能把“没有解”伪装成一个无约束 LQR 动作。

4. 误区与模型边界

  • 时域长不自动稳定:这里有硬终端带和有限状态约束,实际 MPC 还需终端集合、终端代价或鲁棒性论证。
  • 可行不等于现实一定安全:模型误差、扰动和执行器故障可能把真实状态推出预测可行域;工程实现常需要软约束、备用控制器和故障策略。
  • 离散控制网格不是通用 QP 求解器:本实验的 17 点网格便于逐项展示,但不能替代高维连续优化器的数值误差和性能分析。
  • 不能把 LQR 冒充 MPC:无约束解析反馈没有预测时域扫描、输入/状态约束或本页的可行性证书。

一、最优控制的两条经典路线

在讲 MPC 之前,先给出它的理论背景。最优控制求解:

\[\min_u \int_0^T L(x,u)\,dt + \Phi(x(T)) \quad \text{s.t.}\ \dot{x}=f(x,u)\]

① Pontryagin 极大值原理(PMP):引入伴随变量(协态)\(\lambda\),把最优性条件写成两点边值问题。给出开环最优轨迹,是间接法的基础,在航天轨道优化中有经典应用(如燃料最省的 bang-bang 控制)。

② 动态规划(DP)/ HJB 方程:Bellman 最优性原理——最优轨迹的任意后段仍是最优的。给出闭环最优策略 \(u^*(x)\),但需解偏微分方程(HJB),受维数灾难限制(状态维数一高就不可解)。

LQR 是这两条路线在"线性系统 + 二次代价 + 无约束"下的解析解(第八页)。一旦加入约束,解析解就不存在了——这就是 MPC 出场的地方。

二、MPC 的思想:在线滚动优化

MPC 不去求解析的控制律,而是在每个采样时刻在线求解一个有限时域的优化问题:

\[\min_{u_0\cdots u_{N-1}} \sum_{k=0}^{N-1}\left(x_k^TQx_k + u_k^TRu_k\right) + x_N^TPx_N\]
\[\text{s.t.}\quad x_{k+1}=Ax_k+Bu_k,\quad \underbrace{u_{\min}\le u_k \le u_{\max}}_{\text{执行器约束}},\quad \underbrace{x_{\min}\le x_k\le x_{\max}}_{\text{安全/工艺约束}}\]

关键的三步循环(滚动时域):

  1. 用当前状态预测未来 \(N\) 步;
  2. 优化出整段最优输入序列;
  3. 只执行第一步,下一时刻用新测量重新优化。

MPC 滚动时域优化

图 17-1 MPC 的滚动时域机制。每一时刻,控制器在预测时域内规划一整条最优轨迹(虚线)使输出趋向设定值,同时显式满足输出上限与输入幅值/速率约束(阴影为不可行区);但只执行第一个控制动作,随后基于新测量重新优化。"只执行第一步"正是反馈的来源——它使 MPC 在模型不准与有扰动时仍能自我纠正。

"只执行第一步"这一点极其重要:若执行整段开环序列,模型误差会累积;每步重新优化则把开环最优变成了闭环反馈。这是第一页"预测—比较—修正"循环的第三次出现(反馈控制、观测器、MPC)。

三、为什么 MPC 赢了

① 显式处理约束——这是决定性优势。

其他方法只能事后限幅(第六页的抗饱和是一种补救),MPC 则在优化时就知道约束的存在,从而能提前减速避免触限。更重要的是,它能利用约束边界:过程工业的利润往往来自"贴着约束运行"——最优操作点通常就在某个质量或安全限的边界上,能安全地贴近它就意味着直接的经济收益。这是 MPC 在炼化行业迅速普及的商业理由。

② 天然处理 MIMO 与耦合:多变量在同一优化问题中协调,无需逐对解耦。

③ 可处理时滞与非最小相位:预测模型自然包含它们(对比第一页:时滞是经典反馈的头号敌人)。

④ 目标可直接表达经济指标:经济 MPC 直接优化利润而非跟踪误差。

⑤ 前馈自然融入:已知的未来设定值变化或可测扰动可直接放进预测。

四、代价与工程现实

① 计算量:每个周期要解一个 QP。这曾把 MPC 限制在慢过程(采样周期以分钟计的化工装置),但情况已大变——显式 MPC(离线把解算成分段仿射函数,在线查表)、快速 QP 求解器、以及算力提升,使 MPC 已能用于毫秒级的电力电子与运动控制。

② 需要模型:模型质量直接决定性能。实践中,MPC 项目的大部分工作量在建模与辨识(第十八页),而非控制器本身。

③ 稳定性不自动:有限时域优化不天然保证闭环稳定。理论解法是加终端代价 \(P\) 与终端约束集(构造 Lyapunov 函数论证,第十五页),工业实践中则常靠足够长的时域与充分测试。

④ 可行性:约束可能无解(扰动把状态推出可行域)。必须用软约束(松弛变量 + 惩罚)保证优化器总有解——硬约束在工程实现中是危险的,一次不可行就会让控制器失效。这是实现 MPC 时最重要的实务细节之一。

⑤ 维护门槛:现场人员难以像调 PID 那样直觉地调整。"谁来维护"是工业上采用高级控制的真实约束(承第十三、十六页)。

五、应用版图

领域 特点
炼化、石化 MPC 的发源地与主战场,数千套装置在运行;通常作为"先进过程控制层"运行在 DCS 之上
电力系统 机组调度、储能管理
汽车 发动机控制、底盘、自动驾驶的轨迹规划与跟踪
机器人 全身控制、足式机器人的落脚点规划(实时非线性 MPC 是当前热点)
半导体设备 温度、压力的多变量精密控制
建筑暖通 预测天气与占用率,优化能耗

分层结构(工业标准做法):MPC 通常不直接驱动执行器,而是给底层 PID 回路下达设定值。底层 PID 保证快速与安全,MPC 在上层做优化与协调。这个分层既利用了 MPC 的优化能力,又保留了 PID 的可靠性与可维护性——是理论与实践妥协的一个漂亮范例。

六、非线性 MPC 与鲁棒 MPC

七、要点


下一页:既然模型如此关键,模型从哪来?系统辨识——从数据中获得模型;以及自适应控制——在运行中不断修正模型。