跳转至

非线性 MPC 稳定性理论

前置自测

📋 前置自测(答不出 ≥ 2 题 → 先回前置章节复习)

  1. 写出离散时间 Lyapunov 稳定性定理的三条件:\(V\) 需满足什么性质才能证明原点渐近稳定?
  2. 什么是 \(\mathcal{K}_\infty\) 函数?给出一个例子并说明它与 \(\mathcal{K}\) 函数的区别。
  3. 什么是 ISS(输入到状态稳定性)?写出 ISS-Lyapunov 函数的定义不等式。
  4. 什么是 KKT 条件?对一个带等式和不等式约束的优化问题,写出完整的一阶最优性条件。
  5. 解释 Bellman 最优性原理的核心思想,并写出离散时间 DP 方程。

本章目标

学完本章后,你应能够:

  1. 从公理层面理解 Mayne-Rawlings-Rao-Scokaert 2000 的四条件框架,能独立复述证明并解释每条假设保证了什么;
  2. 机械化地设计终端代价和终端集:给定任何可线性化系统,通过 DARE → LQR → 椭圆切约束的流水线产出满足四条件的 \((V_f, X_f, \kappa_f)\)
  3. 判断无终端约束 MPC 何时可行:利用 Grüne-Pannek 的 \(\alpha_N\) 公式估算最小预测步数 \(N^\ast\)
  4. 理解 economic MPC 的旋转代价技巧:区分跟踪型 MPC 与经济型 MPC,并能验证 strict dissipativity;
  5. 设计 tube MPC:对线性系统计算 mRPI、执行约束收紧、编写名义 MPC。

知识树总览

非线性 MPC 稳定性
├── §1 标准形式与递归可行性 ⭐
│   ├── OCP_N 定义
│   ├── Receding horizon 反馈律
│   └── 递归可行性 = 一切稳定性的前提
├── §2 四条件框架 ⭐⭐(核心中的核心)
│   ├── (A1) 终端集正不变
│   ├── (A2) 终端代价 = 局部 CLF
│   ├── (A3) 阶段代价正定下界
│   ├── (A4) 终端代价上界
│   └── 证明:候选序列构造 → Lyapunov 下降
├── §3 终端代价设计 ⭐⭐
│   ├── DARE → P → K → 椭圆
│   ├── Chen-Allgöwer 1998 非线性推广
│   └── LMI/SOS 自动化验证
├── §4 无终端约束 MPC ⭐⭐
│   ├── Jadbabaie-Hauser 2005
│   ├── Grüne-Pannek α_N 公式
│   └── 最小预测步数估算
├── §5 Economic MPC ⭐⭐⭐
│   ├── Strict dissipativity
│   ├── Rotated cost 变换
│   └── Turnpike 等价性
├── §6 Tube MPC ⭐⭐
│   ├── RPI 集合
│   ├── 约束收紧
│   └── 鲁棒递归可行性
├── §7 ISS-MPC ⭐⭐⭐
│   └── V_N* 作 ISS-Lyapunov 函数
├── §8 MPC 与 CLF/CBF 统一 ⭐⭐⭐
│   ├── V_N* 即 CLF
│   ├── CBF 作安全约束
│   └── N=1 退化为 CBF-QP
└── 选学
    ├── §A Stochastic MPC ⭐⭐⭐⭐
    ├── §B 输出反馈 MPC ⭐⭐⭐
    ├── §C 可行性恢复 ⭐⭐⭐
    ├── §D Turnpike 理论 ⭐⭐⭐⭐
    ├── §E 实时 MPC (RTI + Suboptimal) ⭐⭐⭐
    ├── §F 采样数据 MPC ⭐⭐⭐⭐
    └── §G 计算验证 (LMI/SOS/MPT3) ⭐⭐⭐

§1 MPC 标准形式、Receding Horizon 与递归可行性 ⭐

动机:为什么 MPC 的稳定性不是"天然的"

考虑一个直觉问题:你有一个预测模型,你在每个时刻对未来 \(N\) 步做最优规划,然后只执行第一步——为什么这样的策略不一定稳定?

答案令人惊讶:有限时域最优性不等于无限时域最优性。想象你站在悬崖边用导航 app 规划路线——如果 app 的"规划视野"只有前方 100 米,它可能把你引到一条局部最短但最终通向死路的路径。MPC 面临完全相同的困境:\(N\) 步"最优"不保证无限步"好"。

本质洞察:MPC 的稳定性不是求解器给你的——它是终端代价、终端集、阶段代价、预测步数四个设计要素共同构造出的 Lyapunov 函数所保证的。

这一节建立问题的精确数学形式。

如果不关心稳定性理论会怎样

在机器人实践中,忽视稳定性理论的三类典型"崩盘"场景:

场景 症状 理论根源
预测步数 \(N\) 太短、无终端代价 逆摆在远离平衡点时永远回不去 Grüne-Pannek \(\alpha_N < 0\)
SLAM 估计跳变推状态出可行域 OCP infeasible → 控制器沉默 → 更远 递归可行性破坏
RL warm-start 不验 Lyapunov "平均更好、最坏崩掉" Scokaert 1999 suboptimal 条件未满足

严格定义

考虑离散时间动态系统

\[ x_{k+1} = f(x_k, u_k), \qquad f(0,0) = 0, \qquad x \in \mathbb{X} \subseteq \mathbb{R}^n,\ u \in \mathbb{U} \subseteq \mathbb{R}^m, \]

其中 \(\mathbb{X}, \mathbb{U}\) 为包含原点的闭集。有限时域最优控制问题 \(\mathrm{OCP}_N(x)\)

\[ V_N^\ast(x) = \min_{\mathbf{u} = (u_0, \dots, u_{N-1})} \underbrace{\sum_{k=0}^{N-1} \ell(x_k, u_k)}_{\text{阶段代价累积}} + \underbrace{V_f(x_N)}_{\text{终端代价}} \]

受约束

\[ x_{k+1} = f(x_k, u_k), \quad x_0 = x, \quad (x_k, u_k) \in \mathbb{X} \times \mathbb{U}, \quad x_N \in X_f \subseteq \mathbb{X}. \]

这里每个符号的物理意义需要明确:

符号 含义 设计自由度
\(\ell(x,u)\) 阶段代价,衡量"偏离目标多少" 选取正定函数,通常 \(x^\top Q x + u^\top R u\)
\(V_f(x)\) 终端代价,补偿有限视野的损失 核心设计对象——选错则不稳
\(X_f\) 终端集,状态必须最终进入的安全区 核心设计对象——选大则不安全
\(N\) 预测步数 越大可行域越大,但计算越贵

\(\mathbf{u}^\ast(x) = (u_0^\ast, \dots, u_{N-1}^\ast)\) 为最优解。**Receding-horizon 反馈律**只取第一项:

\[ \kappa_N(x) := u_0^\ast(x), \qquad \text{闭环:}\ x_{k+1} = f(x_k, \kappa_N(x_k)). \]

记**可行域** \(X_N := \{x \in \mathbb{X} : \mathrm{OCP}_N(x) \text{ 有解}\}\)

为什么只用第一步?这是 receding horizon 的核心思想:(1) 第一步的决策基于最新测量,信息量最大;(2) 未来的决策基于预测模型,随时间推移误差累积;(3) 下一时刻可以用新测量重新规划,获得反馈效果。这与"一次规划、全程执行"的开环策略有本质区别——receding horizon 把规划变成了**隐式反馈控制器**。

递归可行性:一切稳定性证明的前提

定义:称 MPC 具有**递归可行性 (recursive feasibility)**,若

\[ \forall x \in X_N: \quad f(x, \kappa_N(x)) \in X_N. \]

即:如果当前 OCP 有解,执行最优第一步后,下一时刻的 OCP 仍有解。

为什么这不是显然的?因为 \(X_N\) 的形状取决于动态约束和终端约束的交互作用。一个简单反例:考虑双积分器 \(x_{k+1} = x_k + u_k\)\(|u| \le 1\)\(|x| \le 5\)\(N = 1\)。若当前 \(x = 4.5\),最优 \(u_0^\ast = -1\)(朝原点走),一步后 \(x^+ = 3.5 \in X_1\)。但若 \(N = 1\) 且终端约束要求 \(x_1 = 0\),则 \(x = 4.5\) 时 OCP 就不可行(\(|u| \le 1\) 无法一步到达 0)。这说明终端约束的设计直接决定递归可行性。

反事实推理:如果不保证递归可行性会怎样?第 \(k\) 步 OCP 求解成功、施加 \(u_0^\ast\);第 \(k+1\) 步 OCP infeasible——此时控制器没有输出。实际工程中通常保持上一次的控制输入或切到紧急模式,但状态可能因此更加远离可行域。这是 MPC "阵亡"的最常见模式。

DP 递归方程

定理 1.1(MPC 值函数的 DP 递归) 最优值函数满足

\[ V_N^\ast(x) = \min_{u \in \mathbb{U}:\ f(x,u) \in X_{N-1}} \bigl[\ell(x,u) + V_{N-1}^\ast(f(x,u))\bigr], \]

边界条件 \(V_0^\ast(x) = V_f(x)\)\(x \in X_f\)

证明:这是 Bellman 最优性原理的直接推论。将 \(N\) 步问题拆成"第一步 + 剩余 \(N-1\) 步":

\[ V_N^\ast(x) = \min_{u_0} \bigl[\ell(x, u_0) + \min_{u_1,\dots,u_{N-1}} \sum_{k=1}^{N-1} \ell(x_k, u_k) + V_f(x_N)\bigr] \]

内层最小化恰好是以 \(f(x, u_0)\) 为初始状态的 \((N-1)\) 步 OCP,即 \(V_{N-1}^\ast(f(x, u_0))\)\(\blacksquare\)

可行域嵌套:由 DP 递归立刻得到

\[ X_f \subseteq X_1 \subseteq X_2 \subseteq \cdots \subseteq X_N \subseteq X_\infty. \]

\(N\) 越大,MPC 能"救回来"的初始状态越多。但 \(X_\infty\)(无限步可行域)才是理论极限。

工程含义

  • DP 方程是所有稳定性证明的起点。后续 §2 的核心不等式正是从"构造候选序列 → 用 DP 递归界代价"得出。
  • **可行域单调性**告诉工程师:如果 \(N\) 太小,部分工况不可行。增大 \(N\) 能扩大可行域,但每增一步,计算量增加 \(O((n_x + n_u)^3)\)
  • 从无限维到有限维的代价:截断时域引入了"终端近视"——这正是终端代价 \(V_f\) 要补偿的东西。

跨领域类比

MPC 的 receding horizon 策略可以类比为**国际象棋中的有限深度搜索**:AI 引擎用 alpha-beta 搜索探索未来 \(N\) 步,但只走当前最优的一步,然后重新搜索。终端代价 \(V_f\) 相当于位置评估函数——它用一个启发式估计替代了无法穷举的未来。如果评估函数太差(\(V_f\) 不满足 Lyapunov 条件),AI 会走出"短视最优但全局很差"的棋步。

⚠️ 常见陷阱

# 陷阱 后果 对策
1 混淆"OCP 有解"与"闭环稳定" 以为求解成功就万事大吉 有解 ≠ 稳定,还需 Lyapunov 下降
2 终端约束 \(X_f\) 取太小导致可行域 \(X_N\) 太小 大量工况 OCP infeasible 用 §3 的椭圆最大化方法
3 误以为 \(N\) 越大一定越好 计算超时,反而降低控制频率 匹配系统时间常数,\(N \cdot T_s \approx 3\tau\)

练习

  1. 概念题:给出一个例子说明递归可行性与渐近稳定性是两个独立性质(可以有递归可行但不稳定的 MPC)。
  2. 推导题:对线性系统 \(x^+ = Ax + Bu\)\(X_f = \{0\}\)(终端等式约束),推导 \(X_N\) 的解析形式。提示:考虑可达集的 Minkowski 和。
  3. 编程题:用 Python + CasADi 实现双积分器的 \(\mathrm{OCP}_N\),分别取 \(N = 5, 10, 20\),画出可行域 \(X_N\) 的边界。

§2 Mayne-Rawlings-Rao-Scokaert 2000:稳定性的四条件框架 ⭐⭐

动机:从零散结论到统一公理

在 2000 年之前,MPC 稳定性理论是碎片化的:Keerthi-Gilbert 1988 要求终端等式 \(x_N = 0\)(太强);Michalska-Mayne 1993 用双模式控制器(复杂);Chen-Allgöwer 1998 用 quasi-infinite horizon(需要精细的非线性分析)。这些结论各有适用范围,但缺乏统一框架。

Mayne, Rawlings, Rao, Scokaert (2000)Constrained model predictive control: Stability and optimality,Automatica 36(6):789-814,DOI: 10.1016/S0005-1098(99)00214-9,用四条假设 (A1)-(A3)(加上导出的 A4)统一了所有已知结果。这篇论文迄今被引用超过 10000 次,是 MPC 领域的"北极星"。

历史背景:David Mayne(1930-2024)是控制理论的泰斗,从 1960 年代的最优控制到 2000 年代的鲁棒 MPC,贡献跨越半个世纪。他于 2024 年 5 月辞世,这一理论体系的命脉由新一代工程师接续。

四条件严格表述

以下与 Rawlings-Mayne-Diehl 2017(Nob Hill 第二版)§2.4.2 一致:

(A1) 终端集正不变 + 终端反馈容许:存在闭集 \(X_f \subseteq \mathbb{X}\)\(0 \in X_f\))和局部反馈 \(\kappa_f: X_f \to \mathbb{U}\),使得

\[ \forall x \in X_f: \quad f(x, \kappa_f(x)) \in X_f, \quad \kappa_f(x) \in \mathbb{U}. \]

直觉:一旦状态进入终端集,局部控制器能"兜住"它,不让它跑出去。这是"安全网"——MPC 的 \(N\) 步规划负责把状态引向 \(X_f\),进入后 \(\kappa_f\) 接管。

(A2) 终端代价是局部 CLF(Lyapunov 下降不等式)\(V_f: X_f \to \mathbb{R}_{\ge 0}\) 连续,\(V_f(0) = 0\),且

\[ \boxed{V_f\bigl(f(x, \kappa_f(x))\bigr) - V_f(x) \le -\ell(x, \kappa_f(x)), \quad \forall x \in X_f.} \]

直觉:终端代价 \(V_f\) 在终端反馈 \(\kappa_f\) 下单调递减,且递减速率不低于阶段代价。这意味着 \(V_f\) 是"无限时域代价的局部上界"——从 \(X_f\) 内出发用 \(\kappa_f\),总代价不超过 \(V_f(x)\)

本质洞察:(A2) 的深层含义是:\(V_f\) 扮演了"无穷步 tail 代价的代理"。MPC 只规划 \(N\) 步,\(V_f\) 用来补偿 \(N\) 步之后的无限未来。如果 \(V_f\) 恰好等于 \(\kappa_f\) 下的无限时域代价(即 \(V_f(x) = \sum_{k=0}^\infty \ell(x_k, \kappa_f(x_k))\)),则有限时域 MPC 等价于无限时域最优。

(A3) 阶段代价正定下界\(\ell\) 连续,\(\ell(0,0) = 0\),且存在 \(\mathcal{K}_\infty\) 函数 \(\alpha_\ell\) 使

\[ \ell(x,u) \ge \alpha_\ell(\|x\|), \qquad \forall (x,u) \in \mathbb{X} \times \mathbb{U}. \]

直觉:阶段代价能"看到"状态偏离原点的程度。如果 \(\ell\) 不依赖 \(x\)(例如 \(\ell = u^\top R u\)),则 A3 失效,MPC 可能让状态停在非零稳态。

(A4) 终端代价是真值函数的局部上界(由 A1+A2 导出):

\[ V_f(x) \ge V_\infty^{\kappa_f}(x) := \sum_{k=0}^\infty \ell(x_k^{\kappa_f}, \kappa_f(x_k^{\kappa_f})), \qquad x \in X_f. \]

这不是独立假设,而是 A1+A2 的推论:对 (A2) 两边求和——\(V_f(x_{k+1}) - V_f(x_k) \le -\ell(x_k, \kappa_f(x_k))\),telescope 求和得 \(0 - V_f(x_0) \le -\sum_{k=0}^\infty \ell(\cdot)\),即 \(V_f(x_0) \ge V_\infty^{\kappa_f}(x_0)\)

核心定理及完整证明

定理 2.1(MPC 闭环渐近稳定性,Mayne 2000 Thm 1) 在 (A1)-(A3) 下:

  1. \(X_N\) 对闭环 \(x^+ = f(x, \kappa_N(x))\) 正不变(递归可行);
  2. \(V_N^\ast\) 是闭环 Lyapunov 函数,原点在 \(X_N\) 上**渐近稳定**;
  3. \(\alpha_\ell(r) = c r^2\)\(V_f\) 有二次上界,则**指数稳定**。

完整证明(6 步,不跳步):

记最优序列 \(\mathbf{u}^\ast(x) = (u_0^\ast, \dots, u_{N-1}^\ast)\),对应最优轨迹 \(x_0^\ast = x, x_1^\ast, \dots, x_N^\ast\)

Step 1(候选序列构造)

一步之后状态为 \(x^+ = f(x, u_0^\ast) = x_1^\ast\)。构造候选控制序列:

\[ \tilde{\mathbf{u}} = (u_1^\ast, u_2^\ast, \dots, u_{N-1}^\ast, \kappa_f(x_N^\ast)). \]

为什么这样构造?前 \(N-1\) 项直接沿用原最优序列(它们仍然满足动力学和约束),第 \(N\) 项用终端反馈 \(\kappa_f\) "兜底"。

Step 2(候选可行性 → 递归可行性)

验证 \(\tilde{\mathbf{u}}\)\(\mathrm{OCP}_N(x^+)\) 的可行解:

  • \(N-1\) 步的动力学和约束:沿用原最优轨迹的 \(x_2^\ast, \dots, x_N^\ast\),已知满足 \((x_k^\ast, u_k^\ast) \in \mathbb{X} \times \mathbb{U}\)
  • \(N\) 步的终端约束:新的终端状态为 \(\tilde{x}_N = f(x_N^\ast, \kappa_f(x_N^\ast))\)。由 (A1),\(x_N^\ast \in X_f\) 意味着 \(f(x_N^\ast, \kappa_f(x_N^\ast)) \in X_f\)

因此 \(\tilde{\mathbf{u}} \in \mathcal{U}_N(x^+)\)\(x^+ \in X_N\)。递归可行性证毕。\(\square\)

Step 3(候选代价计算)

计算 \(\tilde{\mathbf{u}}\) 对应的代价:

\[ \begin{aligned} V_N(x^+, \tilde{\mathbf{u}}) &= \sum_{k=1}^{N-1} \ell(x_k^\ast, u_k^\ast) + \ell(x_N^\ast, \kappa_f(x_N^\ast)) + V_f\bigl(f(x_N^\ast, \kappa_f(x_N^\ast))\bigr) \\ &= \underbrace{\left[\sum_{k=0}^{N-1} \ell(x_k^\ast, u_k^\ast) + V_f(x_N^\ast)\right]}_{= V_N^\ast(x)} - \ell(x, u_0^\ast) - V_f(x_N^\ast) + \ell(x_N^\ast, \kappa_f(x_N^\ast)) + V_f\bigl(f(x_N^\ast, \kappa_f(x_N^\ast))\bigr). \end{aligned} \]

整理得:

\[ V_N(x^+, \tilde{\mathbf{u}}) = V_N^\ast(x) - \ell(x, u_0^\ast) + \underbrace{\bigl[V_f(f(x_N^\ast, \kappa_f)) - V_f(x_N^\ast) + \ell(x_N^\ast, \kappa_f(x_N^\ast))\bigr]}_{\text{终端项}}. \]

Step 4(用 A2 消去终端项)

由 (A2) 的 Lyapunov 下降不等式:

\[ V_f\bigl(f(x_N^\ast, \kappa_f(x_N^\ast))\bigr) - V_f(x_N^\ast) \le -\ell(x_N^\ast, \kappa_f(x_N^\ast)). \]

因此终端项 \(\le -\ell(x_N^\ast, \kappa_f) + \ell(x_N^\ast, \kappa_f) = 0\)。这是整个证明中最关键的一步——(A2) 的作用在此完全显现。

Step 5(核心 Lyapunov 下降不等式)

由最优性 \(V_N^\ast(x^+) \le V_N(x^+, \tilde{\mathbf{u}})\)(最优不劣于任何可行解),结合 Step 3-4:

\[ \boxed{V_N^\ast(x^+) \le V_N^\ast(x) - \ell(x, \kappa_N(x)).} \]

这就是 MPC 的 Lyapunov 下降不等式。注意 \(\kappa_N(x) = u_0^\ast\)

Step 6(Lyapunov 结论)

由 (A3):\(V_N^\ast(x^+) - V_N^\ast(x) \le -\ell(x, \kappa_N(x)) \le -\alpha_\ell(\|x\|)\)

同时,\(V_N^\ast\) 满足: - 正定性\(V_N^\ast(x) \ge \ell(x, \kappa_N(x)) \ge \alpha_\ell(\|x\|)\)(取 \(V_N^\ast\) 的第一项下界); - 有界性\(V_N^\ast(x) \le \alpha_2(\|x\|)\)(由 \(\ell, V_f\) 的连续性和有界性,存在 \(\mathcal{K}_\infty\) 上界 \(\alpha_2\))。

由标准 Lyapunov 直接定理(离散时间版本),原点在 \(X_N\) 上渐近稳定。\(\blacksquare\)

证明的"建筑学"解读

把证明想象成搭积木:

积木 作用 对应假设
候选序列 shift + 终端反馈 保证"下一步有解" (A1)
终端代价 Lyapunov 下降 让候选代价不增 (A2)
最优性原则 从"候选可行"推到"最优更好" 优化基本性质
阶段代价正定 \(V_N^\ast\) 满足 Lyapunov 正定性 (A3)

如果去掉 (A1):Step 2 失败,候选序列不可行,递归可行性无法保证。

如果去掉 (A2):Step 4 无法消去终端项,\(V_N^\ast(x^+) - V_N^\ast(x)\) 可能为正,Lyapunov 下降不成立。

如果去掉 (A3):Step 6 中 \(V_N^\ast\) 不再正定(可能在非零点为零),Lyapunov 定理不适用。

反事实推理:如果终端代价 \(V_f\) 设为零(即 \(V_f \equiv 0\))会怎样?(A2) 变成 \(0 - 0 \le -\ell(x, \kappa_f(x))\),即 \(\ell(x, \kappa_f(x)) \le 0\),这对正定的 \(\ell\) 只在 \(x = 0\) 成立。因此 \(X_f = \{0\}\)——终端集退化为单点,这就回到了 Keerthi-Gilbert 1988 的终端等式约束。可行域极小,实用价值低。

四条件的口诀与诊断

记忆口诀:"正不变 + CLF + 正定 + 容许"(A1 正不变、A2 CLF 下降、A3 正定下界、A1 容许)。

故障诊断映射

MPC 症状 最可能被破坏的条件 修复方向
闭环缓慢漂移不收敛 (A3) — 阶段代价不含 \(x\) 加状态权重 \(Q \succ 0\)
第二拍 OCP infeasible (A1) — 终端集不正不变 检查 \(\kappa_f(x) \in \mathbb{U}\)\(f(x,\kappa_f) \in X_f\)
控制输出振荡不衰减 (A2) — 终端代价 \(P\) 不满足 DARE 重新解 DARE
可行域太小工况受限 \(X_f\) 太小 增大 \(N\) 或用 §4 无终端约束

与其他稳定性理论的关系

理论 核心思想 与四条件的关系
LQR 无限时域、无约束最优控制 MPC 的终端代价 \(V_f = x^\top P_{\text{DARE}} x\) 就是 LQR 值函数
CLF(Sontag 1989) 存在 \(u\) 使 \(\Delta V < 0\) MPC 的 \(V_N^\ast\) 本身就是 CLF
Lyapunov 直接法 \(V\) 正定 + 沿轨迹递减 MPC 证明正是构造 \(V = V_N^\ast\) 后验证这两条
Bellman DP 值函数满足递归方程 §1 的 DP 递归是 Step 5 的前置工具

⚠️ 常见陷阱

💡 概念误区:认为"OCP 求解成功 = MPC 稳定"

  • 新手想法:IPOPT 返回 Optimal_Solution_Found,说明控制器在工作。
  • 实际上:求解成功只保证当前 OCP 有解。闭环稳定性需要 (A1)-(A3) 共同保证 \(V_N^\ast\) 是 Lyapunov 函数。极端情况下,OCP 每步都成功但闭环状态发散——这发生在 \(V_f\) 不满足 (A2) 时。
  • 自检方法:画出 \(V_N^\ast(x_k)\)\(k\) 的变化曲线。如果它不单调递减,说明 Lyapunov 条件被破坏。

🧠 思维陷阱:认为"终端代价越大越安全"

  • 新手想法:加大 \(V_f\) 的权重,让 MPC "更重视终端",应该更稳定。
  • 实际上\(V_f\) 过大会让 MPC 过于保守(所有精力都在"到达终端"而非"沿途节省"),可能导致:(a) 约束被过早激活;(b) 最优轨迹不光滑;(c) 更严重的是,如果 \(V_f\) 增大但不满足 (A2) 的不等式方向,反而破坏稳定性。
  • 正确做法\(V_f\) 的选取不是"调参",而是满足 (A2) 的数学约束。唯一安全的方法是用 DARE 解出的 \(P\) 矩阵。

练习

  1. 推导题:假设阶段代价为 \(\ell(x,u) = x^\top Q x + u^\top R u\)\(Q \succ 0, R \succ 0\)),证明 (A3) 成立并给出 \(\alpha_\ell\) 的具体形式。
  2. 反例构造:构造一个满足 (A1)(A3) 但不满足 (A2) 的例子,证明闭环不稳定。
  3. 编程题:对一维系统 \(x^+ = 2x + u\)(不稳定),\(|u| \le 1\)\(\ell = x^2 + u^2\)。分别取 \(V_f = 0\)\(V_f = P x^2\)\(P\) 为 DARE 解),用 CasADi 仿真闭环轨迹对比。

§3 终端代价与终端集设计:DARE → \(P\)\(K\) → 椭圆 \(\alpha\) ⭐⭐

动机:把四条件从抽象变成可计算

§2 给出了稳定性的**充分条件**,但工程师需要的是**构造方法**:给定系统 \((A, B, Q, R)\),如何机械化地产出满足 (A1)-(A2) 的 \((V_f, X_f, \kappa_f)\)

答案是:LQR 终端设计流水线。这是 95% 的 MPC 应用(线性或可线性化系统)使用的方法。

线性系统上的机械化五步配方

对可镇定 \((A, B)\)\(\ell(x,u) = x^\top Q x + u^\top R u\)\(Q \succeq 0\)\((A, Q^{1/2})\) 可检测、\(R \succ 0\)

Step 1:解离散代数 Riccati 方程 (DARE)

\[ P = A^\top P A - A^\top P B(R + B^\top P B)^{-1} B^\top P A + Q. \]

DARE 的解 \(P \succ 0\) 是无限时域 LQR 值函数的 Hessian。它的存在唯一性由 \((A, B)\) 可镇定 + \((A, Q^{1/2})\) 可检测保证(Rawlings-Mayne-Diehl 2017 Theorem B.11)。

数值实现

import numpy as np
from scipy.linalg import solve_discrete_are

# 给定系统矩阵
A = np.array([[1.0, 0.1], [0.0, 1.0]])  # 双积分器离散化
B = np.array([[0.005], [0.1]])
Q = np.eye(2)
R = np.array([[1.0]])

# Step 1: 解 DARE
P = solve_discrete_are(A, B, Q, R)
print(f"P = \n{P}")

Step 2:计算 LQR 增益

\[ K = -(R + B^\top P B)^{-1} B^\top P A. \]

闭环矩阵 \(A_K = A + BK\) 的特征值全在单位圆内(Schur 稳定)。

为什么 LQR 增益恰好是"正确的"终端反馈 \(\kappa_f\)?因为 DARE 的解恰好满足封闭的 Lyapunov 等式:

\[ A_K^\top P A_K - P = -(Q + K^\top R K). \]

这可以通过直接代入 DARE 并利用 \(K\) 的定义验证。

Step 3:设 \(V_f(x) = x^\top P x\)\(\kappa_f(x) = Kx\)

验证 (A2):

\[ \begin{aligned} V_f(f(x, Kx)) - V_f(x) &= (A_K x)^\top P (A_K x) - x^\top P x \\ &= x^\top (A_K^\top P A_K - P) x \\ &= -x^\top (Q + K^\top R K) x \\ &= -\ell(x, Kx). \end{aligned} \]

因此 (A2) 以**等号**成立!这是 LQR 终端设计的美妙之处——它不仅满足 (A2),而且是最紧的满足方式。

Step 4:确定终端集 \(X_f = \{x : x^\top P x \le \alpha\}\)

(A1) 的正不变性由 Step 3 的等号自动满足:对任意 \(\alpha > 0\)\(x^\top P x \le \alpha\) 意味着 \((A_K x)^\top P (A_K x) = x^\top P x - \ell(x, Kx) \le \alpha\)。因此椭球 \(\{x^\top P x \le \alpha\}\) 对任意 \(\alpha\) 都是 \(A_K\) 的正不变集。

但 (A1) 还要求 \(\kappa_f(x) = Kx \in \mathbb{U}\)——这对 \(\alpha\) 施加了上界约束。

Step 5:最大化 \(\alpha\)

设约束集为半空间交集形式:\(c_\ell^\top x \le b_\ell\)\(\ell = 1, \dots, L\)(将 \(|Kx| \le u_{\max}\)\(|x| \le x_{\max}\) 统一写成此形式)。椭球 \(\{x^\top P x \le \alpha\}\) 内切于第 \(\ell\) 个半空间的条件为:

\[ \max_{x^\top P x \le \alpha} c_\ell^\top x = \sqrt{\alpha \cdot c_\ell^\top P^{-1} c_\ell} \le b_\ell. \]

最大 \(\alpha\) 的解析公式为:

\[ \boxed{\alpha^\ast = \min_\ell \frac{b_\ell^2}{c_\ell^\top P^{-1} c_\ell}.} \]

推导过程:椭球 \(\{x : x^\top P x \le \alpha\}\)\(c^\top x\) 的最大值通过 Lagrange 乘子法求解:\(\nabla(c^\top x) = \lambda \nabla(x^\top P x)\)\(c = 2\lambda P x\),即 \(x = \frac{1}{2\lambda} P^{-1} c\)。代入约束 \(x^\top P x = \alpha\)\(\frac{1}{4\lambda^2} c^\top P^{-1} c = \alpha\),即 \(\lambda = \frac{1}{2}\sqrt{c^\top P^{-1} c / \alpha}\)。最大值为 \(c^\top x = \frac{1}{2\lambda} c^\top P^{-1} c = \sqrt{\alpha \cdot c^\top P^{-1} c}\)。令其 \(\le b\)\(\alpha \le b^2 / (c^\top P^{-1} c)\)。对所有约束取最小即得 \(\alpha^\ast\)

非线性推广:Chen-Allgöwer 1998 Quasi-Infinite Horizon

Chen, Allgöwer (1998), A quasi-infinite horizon nonlinear model predictive control scheme with guaranteed stability, Automatica 34(10):1205-1217, DOI: 10.1016/S0005-1098(98)00073-9

对非线性系统 \(f \in C^1\)\(f(0,0) = 0\)

  1. 在原点线性化:\(A = \partial_x f|_0\)\(B = \partial_u f|_0\)
  2. 解 DARE 得 \(P\),LQR 得 \(K\)——与线性情况相同;
  3. 关键区别:需要找到 \(\alpha_{\text{nl}} > 0\) 使得在缩小的椭球 \(\{x^\top P x \le \alpha_{\text{nl}}\}\) 内,非线性项不破坏 (A2)。

具体地,存在 \(\alpha_{\text{nl}} > 0\)\(\kappa \in (0,1)\) 使

\[ \forall x^\top P x \le \alpha_{\text{nl}}: \quad V_f(f(x, Kx)) - V_f(x) \le -(1 - \kappa) \ell(x, Kx). \]

为什么需要缩小椭球?线性情况下 (A2) 以等号全局成立,但非线性系统在远离原点处,高阶项 \(f(x, Kx) - A_K x = O(\|x\|^2)\) 可能让 Lyapunov 下降变成上升。缩小 \(\alpha\) 使得在椭球内 \(O(\|x\|^2)\) 项足够小,被线性项的下降"吃掉"。

\(\alpha_{\text{nl}}\) 的详细计算步骤

Chen-Allgöwer 的方法本质上是在验证线性化 Lyapunov 不等式在有限椭球内是否被非线性项"颠覆"。完整步骤如下:

Step 1:量化非线性余项

\(f(x, Kx) = A_K x + r(x)\),其中 \(r(x) = O(\|x\|^2)\) 是高阶项。在椭球 \(\{x^\top P x \le \alpha\}\) 内估计 \(r\) 的范数:

\[ \|r(x)\| \le L_r \|x\|^2 \quad \forall x \in \{x^\top P x \le \alpha\} \]

\(L_r\) 可以通过 \(f\) 的二阶导数的 Lipschitz 常数估计:\(L_r \le \frac{1}{2}\max_{x^\top P x \le \alpha} \|\nabla^2 f(x, Kx)\|\)

Step 2:建立修正后的 Lyapunov 下降

\[ V_f(f(x, Kx)) - V_f(x) = x^\top(A_K^\top P A_K - P)x + 2x^\top A_K^\top P r(x) + r(x)^\top P r(x) \]

第一项由 DARE 恒等式给出 \(= -x^\top(Q + K^\top R K)x\)。第二项和第三项可界定为:

\[ |2x^\top A_K^\top P r(x)| \le 2\|A_K^\top P\| \cdot \|x\| \cdot L_r\|x\|^2 = 2L_r\|A_K^\top P\| \cdot \|x\|^3 \]
\[ r(x)^\top P r(x) \le \|P\| \cdot L_r^2 \|x\|^4 \]

Step 3:找到 \(\alpha_{\text{nl}}\) 使 Lyapunov 下降不被破坏

需要:

\[ -\lambda_{\min}(Q + K^\top R K)\|x\|^2 + 2L_r\|A_K^\top P\|\|x\|^3 + \|P\|L_r^2\|x\|^4 \le -(1-\kappa)\lambda_{\min}(Q + K^\top R K)\|x\|^2 \]

对任意 \(x\) 满足 \(\|x\| \le \sqrt{\alpha/\lambda_{\min}(P)}\)(椭球内的最大 \(\|x\|\))。

化简得:

\[ \|x\| \le \frac{\kappa \lambda_{\min}(Q + K^\top R K)}{2L_r\|A_K^\top P\| + \|P\|L_r^2\|x\|} \]

\(\|x\|_{\max} = \sqrt{\alpha_{\text{nl}}/\lambda_{\min}(P)}\),解这个关于 \(\alpha_{\text{nl}}\) 的不等式即得。

Step 4:取 \(\alpha_{\text{nl}}\) 与约束 \(\alpha^\ast\) 的较小者

\[ \alpha_\text{final} = \min(\alpha_{\text{nl}}, \alpha^\ast) \]

其中 \(\alpha^\ast\) 来自 §3 的线性约束椭球切约束。

\(\alpha_{\text{nl}}\) 的计算方法

方法 适用系统 工具
二分法网格搜索 低维 (\(n \le 4\)) MATLAB/Python
LMI 半定规划 多项式系统 YALMIP + MOSEK
SOS (Sum-of-Squares) 多项式系统 SOSTOOLS / SumOfSquares.jl
采样验证 通用 Monte Carlo + Lipschitz 界

LMI 方法:联合优化 \(P\)\(\alpha\)

对于想要超越"先解 DARE 再缩椭球"的更优方案,可以把终端集设计写成半定规划 (SDP):

\[ \max_{P \succ 0, K, \alpha} \quad \alpha $$ $$ \text{s.t.} \quad \begin{bmatrix} P & (A + BK)^\top P \\ P(A + BK) & P - Q - K^\top R K \end{bmatrix} \succeq 0, \quad \alpha b_\ell^2 \ge c_\ell^\top P^{-1} c_\ell, \quad \forall \ell. \]

通过 Schur 补和变量替换 \(Y = KP^{-1}\) 可化为标准 LMI。YALMIP + SeDuMi/MOSEK 求解。

工程含义

本质洞察:DARE 解 \(P\) 的物理意义是"从当前状态出发,用 LQR 控制到原点的总代价"。它是无限时域 LQR 值函数的 Hessian。把它作为终端代价,意味着告诉 MPC:"\(N\) 步之后,假设你切换到 LQR,剩余代价就是 \(x_N^\top P x_N\)"——这正是"有限时域 + 无限尾"的精确对接。

机器人实操清单

  1. 7-DoF 机械臂关节调节 → 线性化 + DARE,\(\alpha\) 由关节力矩限制决定;
  2. 四足 MPC 落脚点优化 → SRBD 模型线性化,\(P\) 对应 centroidal 动量代价;
  3. AGV 轨迹跟踪 → 自行车模型线性化,\(\alpha\) 由转向角限制决定;
  4. 四旋翼姿态 MPC → 绕悬停点线性化(注意避免 Euler 万向节锁)。

千万不要凭感觉手调 \(V_f\) 的权重——那几乎必然破坏 (A2)。唯一安全的做法是用 DARE。

跨领域类比:DARE 终端设计在 MPC 中的角色,类似于 Kalman 滤波中的 Riccati 方程——两者都是通过解一个代数 Riccati 方程得到"最优的二次型"。前者用于代价终端近似(MPC),后者用于误差协方差稳态(估计)。数学形式完全对称,物理含义互补——一个在控制端,一个在估计端。

⚠️ 常见陷阱

# 陷阱 后果 对策
1 \(P\) 不是 DARE 解而是随意取的正定矩阵 (A2) 破坏,闭环漂移/发散 严格解 DARE,验证 \(A_K^\top PA_K - P = -(Q + K^\top RK)\)
2 忘记检查 \(Kx \in \mathbb{U}\) 导致 \(\alpha\) 取太大 终端集内约束违反 → 递归可行性破坏 用椭圆切约束公式 \(\alpha^\ast = \min_\ell b_\ell^2 / (c_\ell^\top P^{-1} c_\ell)\)
3 非线性系统直接用线性 DARE 的 \(\alpha\)(不缩小) Chen-Allgöwer 条件失效,高阶项破坏 Lyapunov 用 SOS 或二分法确定 \(\alpha_{\text{nl}}\)
4 \((A, B)\) 不可镇定(如全驱动卫星的姿态动力学取连续时间 \(A\) 但忘离散化) DARE 无解 确认离散化后的 \((A_d, B_d)\) 可镇定

练习

  1. 手算题:对双积分器 \(A = \begin{bmatrix}1&0.1\\0&1\end{bmatrix}\)\(B = \begin{bmatrix}0.005\\0.1\end{bmatrix}\)\(Q = I\)\(R = 1\)\(|u| \le 1\)。求 \(P\)\(K\)\(\alpha^\ast\)
  2. 编程题:用 scipy.linalg.solve_discrete_are 验证上题结果,画出椭球 \(X_f\) 与约束多面体的关系。
  3. 思考题:如果系统有两个输入约束 \(|u_1| \le 1\)\(|u_2| \le 2\)\(\alpha^\ast\) 的公式如何修改?

§4 无终端约束 MPC:\(N\) 足够大即稳 ⭐⭐

动机:终端集的"代价"

§3 的 DARE 流水线很优雅,但有一个实际问题:终端约束 \(x_N \in X_f\) 限制了可行域 \(X_N\)。对于强非线性或大扰动系统(如四足在崎岖地形),终端椭球可能很小,导致 MPC 只能从很近的初始状态出发。

工业实践中,许多 MPC 实现直接设 \(X_f = \mathbb{X}\)(无终端约束)、\(V_f = 0\)(无终端代价),只保留阶段代价和约束。理论上这叫**无终端约束 MPC (unconstrained-horizon MPC)**。问题是:为什么它还能稳?

三大流派

视角 A:CLF 作终端代价(Jadbabaie-Hauser 2005)

Jadbabaie, Hauser (2005), On the stability of receding horizon control with a general terminal cost, IEEE TAC 50(5):674-678, DOI: 10.1109/TAC.2005.847055

核心思想:如果 \(V_f\) 是某种"足够好的"近似值函数(不需要严格满足 A2),只要 \(N\) 够大,MPC 仍稳定。具体地,若 \(V_f\) 满足

\[ V_f(f(x, u)) - V_f(x) \le -\ell(x,u) + \varepsilon(x) \]

其中 \(\varepsilon\) 在足够多步后被阶段代价的累积"稀释",则存在 \(N^\ast\) 使 \(N \ge N^\ast\) 时闭环稳定。

视角 B:Cost controllability(Grüne 2009 / Grüne-Pannek 2017)

这是最具操作性的理论——给出了 \(N^\ast\) 的**显式公式**。

Grüne (2009), Analysis and design of unconstrained nonlinear MPC schemes for finite and infinite dimensional systems, SIAM J. Control Optim. 48(2):1206-1228, DOI: 10.1137/070707853

视角 C:受约束版本(Limón-Álamo-Salas-Camacho 2006)

Limón et al. (2006), On the stability of constrained MPC without terminal constraint, IEEE TAC 51(5):832-836, DOI: 10.1109/TAC.2006.875014

在受约束线性系统上给出吸引域的显式刻画。

Grüne-Pannek 理论的完整展开

定义(指数 cost controllability):存在常数 \(C \ge 1\)\(\sigma \in (0,1)\),使对所有 \(x \in \mathbb{X}\),存在可行控制 \(\mathbf{u}\) 满足

\[ \ell(x_k, u_k) \le C \sigma^k \ell^\ast(x), \qquad k = 0, 1, \dots \]

其中 \(\ell^\ast(x) := \min_u \ell(x, u)\)

直觉:系统能以指数速率"衰减"阶段代价。这对线性系统 \((A, B)\) 在 LQR 反馈 \(K\) 下自然满足——\(\|A_K^k x\| \le \|A_K\|^k \|x\|\),若 \(\|A_K\| = \rho < 1\),则 \(\ell(x_k, Kx_k) \le c \rho^{2k} \ell^\ast(x)\),即 \(C = c\)\(\sigma = \rho^2\)

定理 4.1(Grüne-Pannek \(\alpha_N\) 主定理)

定义

\[ \gamma_N := \sum_{k=0}^{N-1} C \sigma^k = C \frac{1 - \sigma^N}{1 - \sigma}. \]

则存在次优指数

\[ \boxed{\alpha_N = 1 - \frac{(\gamma_N - 1)^N}{\prod_{k=2}^{N}(\gamma_k - 1)}.} \]

\(\alpha_N > 0\),则无终端约束 MPC 闭环渐近稳定,且性能界 \(V_\infty^{\kappa_N}(x) \le \alpha_N^{-1} V_\infty^\ast(x)\)

完整证明(relaxed DP,3 步)

Step 1:由 cost controllability,\(V_N^\ast(x) \le \gamma_N \ell^\ast(x)\)

证明:最优不劣于 cost-controllable 序列的代价,即 \(V_N^\ast(x) \le \sum_{k=0}^{N-1} C \sigma^k \ell^\ast(x) = \gamma_N \ell^\ast(x)\)

Step 2(relaxed DP 不等式):寻找 \(\alpha \in (0, 1]\) 使

\[ V_N^\ast(x^+) \le V_N^\ast(x) - \alpha \ell(x, \kappa_N(x)). \]

若此不等式成立,\(V_N^\ast\) 是 Lyapunov 函数(因为 \(\alpha \ell(x, \kappa_N) \ge \alpha \alpha_\ell(\|x\|)\))。

Step 3:把 \(\alpha\) 显式解出。利用 DP 递归和 cost controllability 的界,经过代数操作(详见 Grüne-Pannek 2017 Theorem 6.15)得出 \(\alpha_N\) 的公式。关键是 \(\gamma_N\) 越大(\(N\) 越大),\(\alpha_N\) 越接近 1,性能越好。\(\blacksquare\)

\(\alpha_N\) 公式的完整推导步骤

Grune-Pannek 2017 (Theorem 6.15) 的推导较为抽象。这里给出一个简化但完整的推导路径,帮助读者理解 \(\alpha_N\) 公式的来源。

Step 1(值函数上界)

由 cost controllability:存在可行控制 \(\mathbf{u}\) 使 \(\ell(x_k, u_k) \le C\sigma^k\ell^\ast(x)\)。因此:

\[ V_N^\ast(x) \le \sum_{k=0}^{N-1} C\sigma^k\ell^\ast(x) = \gamma_N\ell^\ast(x) \]

其中 \(\gamma_N = C\frac{1-\sigma^N}{1-\sigma}\)

Step 2(值函数下界)

\(V_N^\ast(x) \ge \ell(x, u_0^\ast) \ge \ell^\ast(x)\)(最优第一步不劣于任意可行 \(u\))。

因此 \(\ell^\ast(x) \le V_N^\ast(x) \le \gamma_N \ell^\ast(x)\)——值函数被阶段代价的 \([1, \gamma_N]\) 倍夹住。

Step 3(relaxed DP 不等式)

无终端约束时,标准 Lyapunov 下降(\(V_N^\ast(x^+) \le V_N^\ast(x) - \ell(x, u_0^\ast)\))不再直接成立。但通过 cost controllability 的界,可以证明存在 \(\alpha \in (0, 1]\) 使:

\[ V_N^\ast(x^+) \le V_N^\ast(x) - \alpha\ell(x, u_0^\ast) \]

\(\alpha\) 取决于 \(\gamma_N\)。直觉:\(\gamma_N\) 越小(\(N\) 越大、\(\sigma\) 越小),\(\alpha\) 越接近 1(越接近精确 Lyapunov 下降)。

Step 4(\(\alpha_N\) 的显式求解)

通过递归展开 relaxed DP 不等式(对 \(N-1, N-2, \ldots, 2\) 步 OCP),得到:

\[ \alpha_N = 1 - \frac{(\gamma_N - 1)^N}{\prod_{k=2}^{N}(\gamma_k - 1)} \]

\(\gamma_N\) 足够大(\(N\) 足够大)时,\((\gamma_N - 1)^N\) 相对于分母增长更快,\(\alpha_N \to 1\)。当 \(\gamma_N\) 太小(\(N\) 太小),\(\alpha_N\) 可能为负——此时无终端约束 MPC 不稳定。

最小预测步数估算

实操方法

  1. 估计 \(C\)\(\sigma\):对线性系统,\(C \approx \sigma_{\max}(P)/\lambda_{\min}(Q)\)\(\sigma \approx \rho(A_K)^2\)
  2. \(N = 1\) 开始递增,计算 \(\alpha_N\),找到使 \(\alpha_N > 0\) 的最小 \(N^\ast\)
  3. 实际取 \(N = 1.5 N^\ast\) 留余量。

Python 实现

def compute_alpha_N(C, sigma, N):
    """计算 Grune-Pannek 的 alpha_N"""
    gamma = [0, 0]  # gamma_0, gamma_1 未定义
    for k in range(2, N+1):
        gamma.append(C * (1 - sigma**k) / (1 - sigma))

    # 计算 alpha_N
    numerator = 1.0
    for k in range(2, N+1):
        numerator *= (gamma[k] - 1)

    if numerator == 0:
        return 0.0

    alpha = 1 - (gamma[N] - 1)**N / numerator
    return alpha

# 示例:双积分器
C, sigma = 3.0, 0.64
for N in range(2, 20):
    alpha = compute_alpha_N(C, sigma, N)
    print(f"N={N:2d}: alpha_N = {alpha:.4f} {'STABLE' if alpha > 0 else 'UNSTABLE'}")

典型数值

系统 \(C\) \(\sigma\) \(N^\ast\)
双积分器(\(\rho(A_K) = 0.8\) 3 0.64 4
倒立摆(\(\rho(A_K) = 0.9\) 10 0.81 8
四旋翼(\(\rho(A_K) = 0.95\) 20 0.90 15

工程经验\(N = 10 \sim 30\) 在 100Hz-1kHz 控制回路中足够让四足/无人机 MPC 稳定——ETH OCS2、acados 教程中的典型配置。

反事实推理:如果 \(N\) 不够大(\(\alpha_N < 0\))会怎样?MPC 可能"一直能求解但永远收敛不到目标"——状态在目标附近来回摆动。这是因为有限视野的"近视效应":MPC 在当前步选了局部最优但长期有害的动作(类似贪心算法的陷阱)。

⚠️ 常见陷阱

💡 概念误区:把 Jadbabaie-Hauser 的"general terminal cost"误读成"任意代价都行"

定理要求 \(V_f\) 至少提供无限时域代价的局部上界近似,否则 \(N^\ast\) 可能趋于无穷。一个完全随机的 \(V_f\)(如常数)不满足条件。

🧠 思维陷阱:认为"去掉终端约束一定更好"

去掉终端约束确实扩大了可行域 \(X_N\)(因为约束少了),但代价是需要更大的 \(N\) 来保证稳定性。这是**可行域 vs 计算量**的权衡。在嵌入式系统上 \(N\) 受限时,带终端约束的短 \(N\) MPC 可能比无终端约束的长 \(N\) MPC 更适合。

练习

  1. 计算题:若 \(C = 2\)\(\sigma = 0.5\),计算 \(N = 3, 5, 7, 10\) 时的 \(\alpha_N\),确定最小 \(N^\ast\)
  2. 思考题:对一个 Schur 不稳定系统(\(\rho(A) > 1\)),cost controllability 是否自动满足?需要什么额外条件?
  3. 编程题:对逆摆系统,用 CasADi 分别跑 \(N = 3, 10, 30\) 的无终端约束 MPC,画出闭环轨迹并验证 \(\alpha_N\) 公式的预测。

§5 Economic MPC:Dissipativity 与 Rotated Cost ⭐⭐⭐

动机:当"最优"不是"跟踪"

四足的能耗最小化、机械臂的负载均衡、无人机的 minimum-time、电池 SoC 调度——这些目标本质上是**经济指标** \(\ell_e(x, u)\),而非跟踪型 \(\|x - x_s\|^2 + \|u - u_s\|^2\)

关键区别:经济代价 \(\ell_e\) 在最优稳态 \((x_s, u_s)\) 处不为零(比如能耗为正常数),且不一定正定。Mayne 2000 的 (A3) 要求 \(\ell(x,u) \ge \alpha_\ell(\|x\|)\)——对 \(\ell_e\) 这通常不成立。那么 economic MPC 如何保证稳定性?

最优稳态

\[ (x_s, u_s) = \arg\min_{(x,u)} \ell_e(x, u) \quad \text{s.t.} \quad x = f(x, u),\ (x, u) \in \mathbb{X} \times \mathbb{U}. \]

这是一个静态优化问题:找到约束下经济指标最低的稳态操作点。

Strict Dissipativity

Angeli, Amrit, Rawlings (2012), On average performance and stability of economic model predictive control, IEEE TAC 57(7):1615-1626, DOI: 10.1109/TAC.2011.2176174

定义:系统关于代价 \(\ell_e\) 在稳态 \((x_s, u_s)\) 处**strictly dissipative**,若存在存储函数 \(\lambda: \mathbb{X} \to \mathbb{R}\)(连续、\(\lambda(x_s) = 0\))与 \(\mathcal{K}_\infty\) 函数 \(\rho\),使

\[ \boxed{\lambda(f(x,u)) - \lambda(x) \le \ell_e(x,u) - \ell_e(x_s, u_s) - \rho(\|x - x_s\|).} \]

直觉类比:这像热力学中的耗散不等式。\(\lambda\) 是"内部能量"(存储),\(\ell_e - \ell_e(x_s, u_s)\) 是"供给率"(外部输入),\(\rho\) 是"真正被耗散掉的部分"。系统沿任何轨迹运行时,存储的增加不超过供给减去耗散——这意味着系统"不可能永远偏离稳态而不付出代价"。

Rotated Cost 变换

Diehl, Amrit, Rawlings (2011), A Lyapunov function for economic optimizing model predictive control, IEEE TAC 56(3):703-707, DOI: 10.1109/TAC.2010.2101291

定义旋转代价:

\[ \tilde{\ell}(x, u) := \ell_e(x, u) - \ell_e(x_s, u_s) + \lambda(x) - \lambda(f(x,u)). \]

关键性质

  1. Strict dissipativity 等价于 \(\tilde{\ell}(x, u) \ge \rho(\|x - x_s\|) \ge 0\)——旋转后代价**正定**!
  2. \(\tilde{\ell}(x_s, u_s) = 0\)——稳态处为零。
  3. 旋转不改变最优解(telescope 消去 \(\lambda\) 项)。

因此,旋转后的 MPC 满足 Mayne 2000 的 (A3),可以套用标准四条件理论!

本质洞察:Rotated cost 的天才之处在于:它把一个"经济指标不正定"的问题,通过一个存储函数 \(\lambda\) 的"坐标变换",转化为一个等价的"跟踪型正定代价"问题——而不改变最优解。Economic MPC 的稳定性分析因此完全归约到标准理论。

Rotated Cost 的完整推导

Rotated cost 变换是 economic MPC 理论中最精巧的技术之一。让我们逐步展示它如何把"非正定经济代价"转化为"正定跟踪代价"。

Step 1:定义旋转后的 OCP

原始 OCP:\(\min \sum_{k=0}^{N-1} \ell_e(x_k, u_k) + V_{f,e}(x_N)\)

旋转后 OCP:\(\min \sum_{k=0}^{N-1} \tilde\ell(x_k, u_k) + \tilde V_f(x_N)\)

其中 \(\tilde\ell(x,u) = \ell_e(x,u) - \ell_e(x_s, u_s) + \lambda(x) - \lambda(f(x,u))\)\(\tilde V_f(x) = V_{f,e}(x) - \lambda(x)\)

Step 2:验证旋转不改变最优解

计算旋转后 OCP 的总代价:

\[ \begin{aligned} \sum_{k=0}^{N-1} \tilde\ell &= \sum_{k=0}^{N-1}\left[\ell_e(x_k, u_k) - \ell_e(x_s, u_s) + \lambda(x_k) - \lambda(x_{k+1})\right] \\ &= \sum_{k=0}^{N-1} \ell_e(x_k, u_k) - N\ell_e(x_s, u_s) + \lambda(x_0) - \lambda(x_N) \quad \text{(telescope!)} \end{aligned} \]

加上终端代价:\(\tilde V_f(x_N) = V_{f,e}(x_N) - \lambda(x_N)\)

总代价:\(\sum \ell_e + V_{f,e}(x_N) - N\ell_e(x_s,u_s) + \lambda(x_0) - 2\lambda(x_N)\)

由于 \(-N\ell_e(x_s,u_s) + \lambda(x_0)\) 是常数(不依赖控制序列),且 \(-2\lambda(x_N)\) 的变化对固定终端约束 \(x_N = x_s\) 也是常数(\(\lambda(x_s) = 0\)),最优控制序列不变

Step 3:验证旋转后代价正定

由 strict dissipativity:

\[ \tilde\ell(x,u) = \ell_e(x,u) - \ell_e(x_s, u_s) + \lambda(x) - \lambda(f(x,u)) \ge \rho(\|x - x_s\|) \]

因此 \(\tilde\ell \ge 0\)\(\tilde\ell(x_s, u_s) = 0\),且 \(\tilde\ell(x,u) \ge \rho(\|x - x_s\|) > 0\) for \(x \ne x_s\)

这正是 Mayne 2000 (A3) 所要求的正定性!

Step 4:套用标准四条件

旋转后 OCP 完全满足 (A1)-(A3)——因为 \(\tilde\ell\) 正定、终端集正不变、终端代价 \(\tilde V_f\) 可以设计为满足 (A2)。所以标准 Lyapunov 证明直接适用。

本质洞察:Rotated cost 的深层含义是——存储函数 \(\lambda\) 扮演了"坐标变换"的角色。它把经济代价空间中的非凸/非正定 landscape 转化为跟踪代价空间中的凸/正定 landscape,而不改变最优轨迹。这类似于物理学中选择合适的坐标系简化运动方程——问题的物理没变,但数学处理变得容易得多。

Economic MPC 的工程诊断流程

在实际应用中,如何判断你的经济代价是否满足 strict dissipativity?以下是一个系统化的诊断流程:

Step 1:求最优稳态

\(\min \ell_e(x,u)\) s.t. \(x = f(x,u)\)(静态优化问题)。如果有多个稳态极小点,dissipativity 可能不成立(存在多个吸引子→极限环)。

Step 2:检验 Turnpike 性质

对不同初始条件跑开环最优控制(长时域 \(N = 100\)-\(1000\))。如果最优轨迹的中段都紧贴 \((x_s, u_s)\)(高速公路效应),则 dissipativity 很可能成立。

Step 3:构造 \(\lambda\)

对线性系统 + 二次经济代价,\(\lambda(x) = (x-x_s)^\top \Lambda (x-x_s) + \lambda_0^\top(x-x_s)\) 是自然候选。\(\Lambda\)\(\lambda_0\) 通过解一个 SDP 确定。

对非线性系统,用 SOS(Sum-of-Squares)编程寻找多项式 \(\lambda\)

Step 4:验证不等式

\(\mathbb{X} \times \mathbb{U}\) 的网格上检验 \(\tilde\ell(x,u) \ge \rho(\|x-x_s\|)\)。如果存在违反点,或者 \(\rho\) 的下界太小(如 \(\rho(r) = 10^{-8}r^2\)),说明 dissipativity 虽然在理论上成立但实际余量不足——可能需要修改代价或约束。

核心定理

定理 5.1(Angeli-Amrit-Rawlings 2012 主定理)

在 strict dissipativity、终端约束 \(x_N = x_s\)(或带终端代价/终端集的弱化版本)下:

  1. 平均性能:\(\limsup_{T \to \infty} \frac{1}{T} \sum_{k=0}^{T-1} \ell_e(x_k, u_k) \le \ell_e(x_s, u_s)\)
  2. 渐近稳定:\((x_s, u_s)\) 是闭环的渐近稳定平衡。

Dissipativity 的必要性与 Turnpike 等价

Müller-Angeli-Allgöwer (2015), IEEE TAC 60(6):1671-1676:在温和条件下,strict dissipativity 是 economic MPC 渐近稳定的**必要条件**。

Grüne-Müller (2016), On the relation between strict dissipativity and turnpike, Syst. Control Lett. 90:45-53:strict dissipativity ⟺ turnpike property

Turnpike(收费公路)性质:最优轨迹的中段几乎全程紧贴最优稳态 \(x_s\)——像开高速公路。无论起点和终点如何变化,最优轨迹都会"上高速、走主路、下高速"。

工程诊断

何时需要检验 dissipativity?当你的 MPC 代价不是标准二次跟踪型时:

  • 最小化能耗 \(\ell_e = P_{\text{motor}}(u)\)
  • 最大化产率 \(\ell_e = -\text{yield}(x, u)\)
  • 时间最优 \(\ell_e = 1\)(所有步等权)
  • 经济调度 \(\ell_e = \text{price}(t) \cdot P(u)\)

SOS 验证 dissipativity:对多项式系统,把 strict dissipativity 不等式写成 SOS 约束,用 SOSTOOLS 或 YALMIP 求解 \(\lambda\)。若找到可行的 \(\lambda\),则 dissipativity 成立。

⚠️ 常见陷阱

# 陷阱 后果 对策
1 对 economic 代价直接用 \((A3)\) 理论框架不适用,可能出现周期极限环 用 dissipativity + rotated cost 分析
2 \(\lambda\) 的选取不满足连续性 旋转后代价的正定性退化 用 SOS/LMI 系统性求解
3 终端约束设为 \(x_N = x_s\)\(x_s\) 不在 \(\mathbb{X}\) 内部 可行域为空 检查最优稳态的约束活跃性

练习

  1. 概念题:对线性系统 \(x^+ = Ax + Bu\) 和二次经济代价 \(\ell_e = x^\top H x + u^\top G u\)\(H\) 不定),写出 strict dissipativity 条件,并说明 \(\lambda\) 应取什么形式。
  2. 编程题:构造一个 economic MPC 使机器人以最小能耗保持匀速直线运动。验证 dissipativity 并与跟踪型 MPC 对比能耗。

§6 Tube MPC:鲁棒递归可行性的标准答案 ⭐⭐

动机

实际系统总有扰动:地形不平、摩擦变化、风扰、SLAM 估计误差。标称 MPC 假设模型完美,这在边界工况下是危险的。Tube MPC 是处理有界扰动的"标准答案"。

Mayne, Seron, Raković (2005), Robust model predictive control of constrained linear systems with bounded disturbances, Automatica 41(2):219-224, DOI: 10.1016/j.automatica.2004.08.019

问题设置

\[ x_{k+1} = Ax_k + Bu_k + w_k, \quad w_k \in \mathbb{W} \text{ (紧凸集, 含 0)}, \quad (x,u) \in \mathbb{X} \times \mathbb{U}. \]

名义系统(忽略扰动):\(z_{k+1} = Az_k + Bv_k\)

控制律结构

\[ u_k = v_k + K(x_k - z_k). \]

\(K\) 使 \(A_K := A + BK\) Schur。\(v_k\) 是名义 MPC 产生的前馈,\(K(x_k - z_k)\) 是把真实状态"拉回"名义轨迹的反馈。

误差动力\(e_k := x_k - z_k\) 满足

\[ e_{k+1} = A_K e_k + w_k. \]

这是一个被扰动驱动的稳定线性系统。

鲁棒正不变集 (RPI)

定义\(\mathbb{Z}\) 称为 \((A_K, \mathbb{W})\) 的 RPI(Robust Positively Invariant set),若

\[ A_K \mathbb{Z} \oplus \mathbb{W} \subseteq \mathbb{Z}. \]

几何直觉:无论扰动如何选取(只要 \(w \in \mathbb{W}\)),从 \(\mathbb{Z}\) 出发的误差永远留在 \(\mathbb{Z}\) 内。\(\mathbb{Z}\) 是误差的"保险箱"。

最小 RPI (mRPI)

\[ \mathbb{Z}_\infty := \bigoplus_{i=0}^\infty A_K^i \mathbb{W} = \mathbb{W} \oplus A_K \mathbb{W} \oplus A_K^2 \mathbb{W} \oplus \cdots \]

这是所有 RPI 中最小的——任何 RPI 都包含 \(\mathbb{Z}_\infty\)。级数收敛因为 \(A_K\) Schur(\(\|A_K^i\| \to 0\))。

mRPI 计算(Raković et al. 2005)

Raković, Kerrigan, Kouramas, Mayne (2005), Invariant approximations of the minimal robust positively invariant set, IEEE TAC 50(3):406-410, DOI: 10.1109/TAC.2005.843854

找整数 \(s\)\(\alpha \in [0,1)\) 使 \(A_K^s \mathbb{W} \subseteq \alpha \mathbb{W}\)。则

\[ \boxed{\mathbb{Z}_\alpha^s := (1 - \alpha)^{-1} \bigoplus_{i=0}^{s-1} A_K^i \mathbb{W}} \]

\((A_K, \mathbb{W})\) 的 RPI 外逼近,且 \(\mathbb{Z}_\infty \subseteq \mathbb{Z}_\alpha^s \subseteq \mathbb{Z}_\infty \oplus B_\varepsilon\)

算法:对给定精度 \(\varepsilon > 0\),迭代 \(s = 1, 2, \dots\) 直到 \(A_K^s \mathbb{W} \subseteq \alpha \mathbb{W}\)(support function 验证)。对 \(A_K\) 谱半径 \(\rho < 1\)\(s = O(\log(1/\varepsilon) / \log(1/\rho))\)

约束收紧

名义 OCP 使用**收紧后的约束**:

\[ z_k \in \mathbb{X} \ominus \mathbb{Z}, \qquad v_k \in \mathbb{U} \ominus K\mathbb{Z}. \]

其中 Pontryagin 差 \(A \ominus B := \{a : a + b \in A,\ \forall b \in B\}\)

直觉:名义轨迹留出 \(\mathbb{Z}\) 大小的"安全余量",使得真实轨迹(= 名义 + 误差 \(\in \mathbb{Z}\))仍在原始约束内。

主定理

定理 6.1(Mayne-Seron-Raković 2005)

若初始化 \(x_0 \in z_0 \oplus \mathbb{Z}\) 且名义 OCP 在 \(z_0\) 可行,则对任意容许扰动序列 \(\{w_k\} \subset \mathbb{W}\)

  1. 鲁棒递归可行性:名义 OCP 步步可行;
  2. 鲁棒约束满足\(x_k \in \mathbb{X}\)\(u_k \in \mathbb{U}\)
  3. 鲁棒指数稳定性(集合意义):\(z_k \to 0\) 指数收敛,\(\mathrm{dist}(x_k, \mathbb{Z}) \to 0\)

完整证明

Step 1(误差有界)\(e_0 \in \mathbb{Z}\)(初始化保证)。由 \(\mathbb{Z}\) 是 RPI:\(e_1 = A_K e_0 + w_0 \in A_K \mathbb{Z} \oplus \mathbb{W} \subseteq \mathbb{Z}\)。归纳得 \(e_k \in \mathbb{Z}\)\(\forall k\)

Step 2(约束满足)\(x_k = z_k + e_k \in (\mathbb{X} \ominus \mathbb{Z}) \oplus \mathbb{Z} \subseteq \mathbb{X}\)\(u_k = v_k + K e_k \in (\mathbb{U} \ominus K\mathbb{Z}) \oplus K\mathbb{Z} \subseteq \mathbb{U}\)

Step 3(名义稳定):名义系统 \(z^+ = Az + Bv\) 在收紧约束 \(\mathbb{X} \ominus \mathbb{Z}\)\(\mathbb{U} \ominus K\mathbb{Z}\) 下,设计终端 \((V_f, X_f, \kappa_f)\) 满足 Mayne 2000 四条件 → \(z_k \to 0\)

Step 4\(x_k = z_k + e_k \to 0 + \mathbb{Z}\),即 \(x_k\) 收敛到 \(\mathbb{Z}\)(包含原点的小集合)。\(\blacksquare\)

Tube MPC 的整体架构

                    ┌─────────────────────┐
  真实系统          │  x_{k+1} = Ax + Bu + w  │
                    └──────────┬──────────┘
                               │ x_k (测量)
                    ┌─────────────────────┐
  状态分解          │  z_k = x_k - e_k      │  (e_k ∈ Z 有界)
                    └──────────┬──────────┘
                               │ z_k
            ┌──────────────────────────────────┐
  名义 MPC  │  min Σℓ(z,v) + V_f(z_N)          │
            │  s.t. z ∈ X⊖Z, v ∈ U⊖KZ         │
            └──────────────────┬───────────────┘
                               │ v_k
            ┌──────────────────────────────────┐
  控制律    │  u_k = v_k + K(x_k - z_k)        │
            └──────────────────────────────────┘

Tube MPC 设计的完整工程配方

以下是一个系统化的 Tube MPC 设计流程,从系统辨识到在线部署的每一步都给出具体操作。

Step 1:设计反馈 \(K\)

选择 \(K\) 使 \(A_K = A + BK\) 的谱半径 \(\rho(A_K)\) 尽量小。

方法 公式 特点
LQR \(K = -(R + B^\top PB)^{-1}B^\top PA\) 平衡性能与能耗
Deadbeat \(K\) 使 \(A_K\) 所有特征值为 0 最小 \(\mathbb{Z}\),但 \(\|K\|\)
\(H_\infty\) 最小化 \(\|G_{w\to x}\|_\infty\) 对最坏扰动最鲁棒
LMI 联合优化 \(\min \text{trace}(\mathbb{Z})\) s.t. LMI 稳定 直接最小化 tube 大小

经验建议:先用 LQR,如果 \(\mathbb{Z}\) 太大(收紧后可行域太小),再切 deadbeat 或 LMI。

Step 2:估计扰动集 \(\mathbb{W}\)

扰动来源 估计方法 典型形式
SLAM 估计残差 \(3\sigma\) 外接盒 \(\mathbb{W} = [-w_x, w_x] \times \cdots\)
模型不确定性 Monte Carlo 仿真 \(\mathbb{W} = \text{convhull}(\{w_i\})\)
风扰(四旋翼) 最大风速 × 空气动力学模型 \(\|w\| \le w_{\max}\)
地面摩擦变化(腿足) \((\mu_{\min}, \mu_{\max})\) → 力偏差 矩形

关键原则\(\mathbb{W}\) 宁可偏大不可偏小。偏大 → 保守(可行域缩小但安全);偏小 → 真实扰动跑出 tube → OCP infeasible → 系统崩溃。推荐:\(\mathbb{W}_\text{design} = 2 \times \mathbb{W}_\text{estimated}\)

Step 3:计算 mRPI \(\mathbb{Z}\)

使用 Rakovic 2005 的算法。Python 实现(用 polytope 库):

import polytope
import numpy as np

def compute_mrpi(Ak, W, s_max=50, alpha_tol=0.001):
    """计算最小 RPI 的外逼近
    Ak: 闭环矩阵 A+BK
    W: 扰动集 (polytope.Polytope)
    """
    Z = W.copy()
    for s in range(1, s_max):
        AkW = polytope.Polytope(W.A @ np.linalg.matrix_power(Ak, s), W.b)
        # 检查 Ak^s W ⊆ alpha * W
        alpha = max(W.A @ np.linalg.matrix_power(Ak, s) @ v / W.b 
                    for v in polytope.extreme(W))
        if alpha < alpha_tol:
            Z = Z + AkW  # Minkowski sum
            Z = Z * (1 / (1 - alpha))
            return Z, s
        Z = Z + AkW
    raise RuntimeError("mRPI 未收敛")

Step 4:约束收紧

\[ \mathbb{X}_\text{tight} = \mathbb{X} \ominus \mathbb{Z}, \qquad \mathbb{U}_\text{tight} = \mathbb{U} \ominus K\mathbb{Z} \]

Pontryagin 差用 polytope 库直接计算。如果收紧后可行域为空(\(\mathbb{X}_\text{tight} = \emptyset\)),说明 \(\mathbb{Z}\) 太大 → 改善 \(K\)(使 \(\rho(A_K)\) 更小)或放大 \(\mathbb{X}\)

Step 5:在线运行

在线只解名义 OCP(规模与标称 MPC 完全相同!),用 \(v_k\) 作前馈,\(K(x_k - z_k)\) 作反馈。

MPT3 工具箱原生支持全部 5 步。Python 用 polytope + CasADi 组合。

Tube MPC 的完整稳定性证明链

把 Tube MPC 的稳定性证明与前面的 Mayne 四条件串联起来,形成一个完整的逻辑链:

Step 1: 设计 K → A_K Schur 稳定
Step 2: 构造 RPI Z → 误差 e 有界
Step 3: 约束收紧 X⊖Z, U⊖KZ → 名义系统约束
Step 4: 名义 MPC 满足 Mayne 四条件 → z_k → 0 渐近稳定
Step 5: x_k = z_k + e_k → 0 + Z → 集合渐近稳定
Step 6: 约束满足保证 → x_k ∈ X, u_k ∈ U ∀k

每一步依赖前一步的结论。如果任何一步的假设被破坏(如 \(\mathbb{W}\) 估计过小、\(K\) 不稳定、收紧后可行域为空),整个证明链断裂——系统可能在某一时刻 OCP infeasible 或约束违反。

反事实推理:如果不做约束收紧直接用原始约束会怎样?名义轨迹满足 \(z_k \in \mathbb{X}\),但真实轨迹 \(x_k = z_k + e_k\) 可能超出 \(\mathbb{X}\)(因为 \(e_k \in \mathbb{Z}\) 不为零)。约束收紧正是为了给误差 \(e_k\) 预留空间——名义轨迹"缩回来" \(\mathbb{Z}\) 的距离,确保真实轨迹仍在原始约束内。

⚠️ 常见陷阱

# 陷阱 后果 对策
1 \(\mathbb{W}\) 估计过小 真实扰动跑出 tube → OCP infeasible \(\mathbb{W}\) 外扩 \(2\times\) 安全系数
2 \(K\) 选得使 \(\rho(A_K)\) 太接近 1 mRPI \(\mathbb{Z}\) 极大 → 收紧后约束为空 用 deadbeat 或 LQR 使 \(\rho(A_K)\) 足够小
3 约束收紧后 \(\mathbb{X} \ominus \mathbb{Z} = \emptyset\) 名义 MPC 无可行域 减小 \(\mathbb{Z}\)(改善 \(K\))或放大 \(\mathbb{X}\)

练习

  1. 手算题:给 \(A_K = 0.5 I_2\)\(\mathbb{W} = [-0.1, 0.1]^2\)。手算 \(\mathbb{Z}_\alpha^s\),取 \(s = 3\)\(\alpha = 0.125\)
  2. 编程题:用 MPT3 或 Python polytope 库计算一个 2D 系统的 mRPI 并画图。
  3. 设计题:对四足机器人 SLAM 残差 \(\sim \mathcal{N}(0, \Sigma)\),如何选取 \(\mathbb{W}\)?讨论概率保证与保守性的权衡。

§7 ISS-MPC:最优值函数作 ISS-Lyapunov 函数 ⭐⭐⭐

动机

Tube MPC 需要**精确知道扰动界** \(\mathbb{W}\)。但很多时候扰动大小是渐变的(如风速变化),或者你只想分析"标称 MPC 对小扰动天然有多鲁棒"。ISS-MPC 理论回答这个问题。

ISS 定义回顾

离散系统 \(x^+ = F(x, w)\) 称为 ISS (Input-to-State Stable) 于域 \(\Xi\),若存在 \(\beta \in \mathcal{KL}\)\(\gamma \in \mathcal{K}\)

\[ \|x_k\| \le \beta(\|x_0\|, k) + \gamma(\|w\|_{[0,k-1]}), \quad \forall x_0 \in \Xi. \]

ISS-Lyapunov 函数 \(V: \Xi \to \mathbb{R}_{\ge 0}\):存在 \(\alpha_1, \alpha_2, \alpha_3 \in \mathcal{K}_\infty\)\(\sigma \in \mathcal{K}\)

\[ \alpha_1(\|x\|) \le V(x) \le \alpha_2(\|x\|), \qquad V(F(x,w)) - V(x) \le -\alpha_3(\|x\|) + \sigma(\|w\|). \]

核心定理

定理 7.1(Limón et al. 2009)

在以下条件下——\(f, \ell, V_f\) 在紧集上 Lipschitz(常数 \(L_f, L_\ell, L_V\));\(X_f\)\((f, \kappa_f)\) 正不变;\(V_f(f(x,\kappa_f(x))) - V_f(x) \le -\ell(x, \kappa_f(x))\)\(\ell(x,u) \ge \alpha_\ell(\|x\|)\)——则 \(V_N^\ast\) 是 regional ISS-Lyapunov 函数:

\[ V_N^\ast(x^+) - V_N^\ast(x) \le -\alpha_\ell(\|x\|) + L_V L_f^{N-1} \|w\|. \]

工程含义

  1. \(N\) 越大,扰动增益 \(L_V L_f^{N-1}\) 越大(若 \(L_f > 1\))。"预测越远 = 越怕扰动"——这解释了为什么超长 horizon 的 NMPC 在有扰动时不稳定。
  2. 标称 MPC 天然有一定鲁棒性(inherent robustness),只要扰动足够小——这解释了为什么工业 MPC 不配 tube 也能跑。
  3. Tube MPC 的优势:把 Lipschitz 扰动增益替换为常数 \(\mathbb{Z}\),不随 \(N\) 增长。

ISS-Lyapunov 不等式的完整推导

为了让读者真正理解 \(L_V L_f^{N-1}\) 的来源,我们给出完整推导。

设定:标称 MPC 的最优序列为 \(\mathbf{u}^\star(x)\),对应轨迹 \(x_0^\star = x, x_1^\star, \ldots, x_N^\star\)。现在系统受扰动 \(w\),真实下一步状态为 \(x^+ = f(x, u_0^\star) + w\)

Step 1:构造候选序列

\(x^+\),构造候选序列 \(\tilde{\mathbf{u}} = (u_1^\star, \ldots, u_{N-1}^\star, \kappa_f(x_N^\star))\)(与无扰动情况相同)。但现在候选轨迹从 \(x^+\) 出发:

\[ \tilde x_1 = f(x^+, u_1^\star) = f(x_1^\star + \delta_1, u_1^\star) \]

其中 \(\delta_1 = x^+ - x_1^\star = w + f(x, u_0^\star) - f(x, u_0^\star) = w\)(一步后误差 = 扰动)。

Step 2:传播误差

\(\tilde x_k = x_k^\star + \delta_k\),由动力学 Lipschitz 性:

\[ \|\delta_{k+1}\| = \|f(\tilde x_k, u_k^\star) - f(x_k^\star, u_k^\star)\| \le L_f \|\delta_k\| \]

所以 \(\|\delta_k\| \le L_f^{k-1}\|w\|\)

Step 3:代价差异

候选代价与最优代价的差异来自两项:(a) 去掉了第一步代价 \(\ell(x, u_0^\star)\),(b) 轨迹偏离导致代价变化。

\[ V_N(x^+, \tilde{\mathbf{u}}) - V_N^\ast(x) \le -\ell(x, u_0^\star) + \sum_{k=1}^{N-1}|\ell(\tilde x_k, u_k^\star) - \ell(x_k^\star, u_k^\star)| + |V_f(\tilde x_N) - V_f(x_N^\star)| \]

\(\ell\)\(V_f\) 的 Lipschitz 性(常数 \(L_\ell, L_V\)):

\[ |\ell(\tilde x_k, u_k^\star) - \ell(x_k^\star, u_k^\star)| \le L_\ell \|\delta_k\| \le L_\ell L_f^{k-1}\|w\| \]
\[ |V_f(\tilde x_N) - V_f(x_N^\star)| \le L_V \|\delta_N\| \le L_V L_f^{N-1}\|w\| \]

Step 4:合并

\[ V_N^\ast(x^+) \le V_N(x^+, \tilde{\mathbf{u}}) \le V_N^\ast(x) - \ell(x, u_0^\star) + \left(L_\ell \sum_{k=0}^{N-2} L_f^k + L_V L_f^{N-1}\right)\|w\| \]

\(L_f > 1\) 时,主导项是 \(L_V L_f^{N-1}\|w\|\)——这就是 ISS 增益。

工程含义:对不稳定系统(\(L_f > 1\)),\(N\) 越大 ISS 增益越大→对扰动越敏感。这解释了一个实践中常见的"反直觉"现象:把四足 MPC 的 horizon 从 20 增到 50 后,在有 SLAM 噪声的情况下反而更抖

什么时候 ISS 增益是安全的?

\(L_f < 1\)(稳定系统),\(\sum L_f^k < 1/(1-L_f)\) 收敛,ISS 增益有限且不随 \(N\) 增大。对这类系统(如阻尼振子、稳定线性系统),MPC 天然鲁棒——即使不加 tube 也能承受小扰动。

\(L_f > 1\)(不稳定系统,如倒立摆),ISS 增益指数增长。此时**必须用 Tube MPC** 或限制 \(N\)——否则扰动通过 \(L_f^N\) 放大后可能把系统推出可行域。

ISS-MPC 与 Tube MPC 的统一视角

两者处理扰动的思路不同但互补:

维度 ISS-MPC Tube MPC
扰动处理 隐式(\(V_N^\ast\) 天然鲁棒) 显式(\(\mathbb{Z}\) + 约束收紧)
需要知道 \(\mathbb{W}\) 否(分析用 \(L_f\) 是(设计用 \(\mathbb{W}\)
约束保证 概率性(小扰动) 确定性(\(w \in \mathbb{W}\)
计算开销 同标称 MPC 同标称 MPC + 离线 RPI
适用场景 扰动小且连续 扰动有界且可估计

本质洞察:ISS-MPC 告诉你"标称 MPC 本身有多鲁棒"(inherent robustness),Tube MPC 告诉你"如何系统化地增强鲁棒性"(designed robustness)。前者是分析工具,后者是设计工具。

练习

  1. 推导题:证明 ISS-Lyapunov 不等式中的 \(L_V L_f^{N-1}\) 项的来源。提示:比较扰动下的轨迹与名义轨迹的偏差(上述推导即答案骨架)。
  2. 思考题:对稳定系统(\(L_f < 1\)),\(N\) 增大反而让 ISS 增益变小。解释为什么(提示:\(L_V L_f^{N-1} \to 0\))。
  3. 计算题:对倒立摆 \(L_f = 1.5\)\(L_V = 10\)\(N = 20\)。计算 ISS 增益 \(L_V L_f^{N-1}\)。以 \(w = 0.01\) rad(SLAM 角度估计误差)代入,估计 \(V_N^\ast\) 的增量。是否可能导致 infeasibility?

§8 MPC 与 CLF/CBF 统一 ⭐⭐⭐

三条纽带

纽带一:\(V_N^\ast\) 即 CLF

由定理 2.1,\(V_N^\ast(x^+) - V_N^\ast(x) \le -\alpha_\ell(\|x\|)\)。CLF 定义(Sontag 1989)要求 \(\forall x \ne 0\)\(\exists u: \Delta V(x,u) < 0\)。MPC 的 \(\kappa_N(x)\) 恰是那个见证者。因此 MPC 构造了 CLF 的标准方式

双重解读: - 角度 1(控制论):MPC 是一个隐式的 CLF 构造器——你不需要手动找 Lyapunov 函数,MPC 的优化过程自动构造了一个。 - 角度 2(优化论):CLF 是 MPC 的"降级版"——CLF-QP 只要求 \(\Delta V < 0\)(可行即可),MPC 要求代价最小化(最优)。MPC 比 CLF 更强。

纽带二:CBF 作 MPC 安全约束

Zeng, Zhang, Sreenath (2021), Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function, ACC 2021, arXiv: 2007.11718

离散时间 CBF (DT-CBF):\(h: \mathbb{X} \to \mathbb{R}\),安全集 \(\mathcal{C} = \{x : h(x) \ge 0\}\)。约束:

\[ \boxed{h(x_{k+1}) - h(x_k) \ge -\gamma h(x_k), \qquad 0 < \gamma \le 1.} \]

等价于 \(h(x_{k+1}) \ge (1-\gamma) h(x_k)\)。把该约束加入 OCP 的每一步得 MPC-CBF

纽带三:\(N = 1\) MPC 退化为 CBF-QP

\[ \min_u \|u - u_{\text{ref}}\|^2 \quad \text{s.t.} \quad h(f(x,u)) \ge (1-\gamma) h(x),\ u \in \mathbb{U}. \]

这正是 CBF-QP 的标准形式(Ames-Xu-Grizzle-Tabuada 2017)。

MPC-CBF 的递归可行性问题

MPC-CBF 有一个标称 MPC 没有的新问题:CBF 约束可能与其他约束冲突,导致 OCP infeasible。

冲突场景示例:四足机器人在窄走廊中——CBF 约束要求"离墙至少 0.3 m"(安全),但走廊宽度只有 0.6 m(物理约束)。如果两侧 CBF 同时激活,\(h_\text{left}(x) \ge 0\)\(h_\text{right}(x) \ge 0\) 可能无法同时满足。

标准解决方案:用松弛变量 \(\delta \ge 0\) 软化 CBF 约束:

\[ h(x_{k+1}) \ge (1-\gamma)h(x_k) - \delta_k, \qquad \delta_k \ge 0 \]

在代价中加 \(w_\delta \|\delta\|^2\)\(w_\delta \gg 1\))。这样 OCP 永远可行(\(\delta\) 可以无限大),但 CBF 违反会受到严厉惩罚。

更好的方案(CBF 优先级)

对多个 CBF 设置优先级——高优先级 CBF(如不跌倒)硬约束,低优先级 CBF(如离障碍物远一点)软约束。这与 §3.10 的 Box-DDP + ALTRO 的约束分类思想完全一致。

MPC、CLF、CBF 三者的统一理论框架

三者的关系可以用一个谱系图完整展示:

无限时域最优控制 (V*)
├── 有限近似: MPC (V_N*)     ← 本章核心
│   ├── V_N* 是 CLF          ← Lyapunov 稳定性
│   └── CBF 作安全约束       ← 可行域内安全
├── 退化 N=∞: CLF            ← Sontag 1989
│   └── CLF-QP (N=1 MPC)     ← 最简实现
└── 安全保证: CBF            ← Ames 2014/2017
    └── CBF-QP               ← 安全+近最优

统一的数学结构

\[ \underbrace{\min_u \|u - u_\text{ref}\|^2}_{\text{最小修正}} \quad \text{s.t.} \quad \underbrace{\Delta V(x, u) \le -\alpha V(x)}_{\text{CLF(稳定性)}}, \quad \underbrace{h(f(x,u)) \ge (1-\gamma)h(x)}_{\text{CBF(安全性)}}, \quad \underbrace{u \in \mathbb{U}}_{\text{约束}} \]

这是一个 QP(如果 \(V, h, f\) 是二次/仿射的),否则是非线性规划。MPC 的 \(V_N^\ast\) 自动满足 CLF 条件(本章定理 2.1 的推论),CBF 约束可以作为路径约束加入 OCP。

机器人三选一决策

需求 方案 \(N\) 计算量 理论保证
快响应、静态障碍 CBF-QP 1 \(O(m^3)\) QP 安全 + 稳定(如果 CLF+CBF 兼容)
需前瞻、动态障碍 MPC-CBF 10-30 \(O(N(n+m)^3)\) 安全 + 稳定 + 最优
多约束 + 最优性 完整 MPC + CBF 约束 20-50 同上 最完整
极低延迟(1 kHz+) CBF-QP + LQR ref 1 \(O(m^3)\) 安全 + 局部稳定

⚠️ 常见陷阱

# 陷阱 后果 对策
1 CBF 约束 \(\gamma > 1\) 非 valid DT-CBF(安全集不正不变) 确保 \(\gamma \in (0, 1]\)
2 MPC-CBF 递归可行性不自动保证 某步 OCP infeasible → 无安全输出 用 slack variable 软化 CBF 约束
3 CBF 选取不当(如 \(h\) 不相对度 1) 需要高阶 CBF 或 exponential CBF 检查 \(h\) 的 relative degree

练习

  1. 设计题:构造 2D 双积分器绕障碍 \(\|p - p_{\text{obs}}\| \ge r\) 的 MPC-CBF。写出完整 OCP 约束清单。
  2. 对比题:对同一避障场景,分别用 CBF-QP 和 MPC-CBF(\(N = 10\))仿真,比较轨迹平滑度和约束满足余量。

选学部分

§A Stochastic MPC ⭐⭐⭐⭐

三种范式

范式 核心思想 约束处理 计算量 适用
Analytic SMPC 已知矩,Cantelli/Chebyshev 界 \(\Pr(g \le 0) \ge 1-\varepsilon\) → 确定性收紧 Gaussian 扰动
Scenario MPC 采样 \(N_s\) 条扰动轨迹 对所有采样满足约束 \(O(N_s \cdot \text{QP})\) 未知分布
DR-MPC Wasserstein 球分布鲁棒 对球内最坏分布满足 小样本 + 分布偏移

关键参考:Mesbah (2016), Stochastic MPC: Overview and perspectives, IEEE CSM 36(6):30-44。

Scenario MPC 的样本复杂度:Calafiore-Campi 2006 的经典结果给出:

\[ N_s \ge \frac{2}{\varepsilon}\left(\ln \frac{1}{\beta} + d\right) \]

其中 \(d\) 为决策变量维度,\(\varepsilon\) 为违约概率,\(\beta\) 为置信度。

数值示例:四足 MPC \(d = 120\)\(Nm = 12 \times 10\)),要求 \(\varepsilon = 0.01\)(99% 概率满足约束),\(\beta = 10^{-6}\)(极高置信),则 \(N_s \ge 200 \times (14 + 120) = 26800\) 条采样轨迹——计算上几乎不可行。这解释了为什么 Scenario MPC 在高维机器人中很少使用(主要用于化工过程控制,\(d < 20\))。

Analytic SMPC 的实用方法:对 Gaussian 扰动 \(w \sim \mathcal{N}(0, \Sigma_w)\),用 Cantelli 不等式把概率约束转化为确定性约束:

\[ \Pr(c^\top x \le b) \ge 1-\varepsilon \quad \Longleftrightarrow \quad c^\top \bar x + \sqrt{\frac{1-\varepsilon}{\varepsilon}} \sqrt{c^\top \Sigma_x c} \le b \]

其中 \(\Sigma_x\) 是状态的协方差矩阵(由 Kalman 滤波或不确定性传播得到)。这是 Tube MPC 的**概率版**——收紧量由标准差决定而非最坏情况。

Stochastic MPC 与 Tube MPC 的对比

维度 Tube MPC Stochastic MPC
扰动假设 有界集 \(\mathbb{W}\) 概率分布 \(P_w\)
约束满足 确定性(100%) 概率性(\(\ge 1-\varepsilon\)
保守性 高(最坏情况设计) 低(平均情况设计)
适用 安全关键(航天、医疗) 性能优先(自动驾驶、物流)

§B 输出反馈 MPC ⭐⭐⭐

真实系统通常不能直接测量全部状态——需要从传感器输出 \(y = h(x) + v\) 估计状态。输出反馈 MPC 需要把状态估计与 MPC 控制器联合设计。

三类方案

方案 估计器 MPC 理论保证 计算量
Luenberger + Tube 线性观测器 Tube MPC ISS(分离原理)
MHE + MPC 移动时域估计 标准 MPC 联合 ISS 2× MPC
EKF + 名义 MPC 扩展 Kalman 标准 MPC 无保证(工程可行)

分离原理在 MPC 中的适用性

线性系统的分离原理(observer + controller 可以独立设计)在非线性 MPC 中**不成立**——观测误差可能把状态推出 MPC 可行域。但对**locally Lipschitz** 系统,可以通过 ISS 分析证明"如果观测误差有界、MPC 本身 ISS,则联合闭环 ISS"(Mayne et al. 2006)。

MHE + MPC 的统一框架

Moving Horizon Estimation(MHE)与 MPC 结构对称——都是有限时域优化:

维度 MPC(前瞻) MHE(回顾)
时域 未来 \(N\) 过去 \(M\)
决策变量 \(u_{0:N-1}\) \(x_{-M}, w_{-M:-1}\)
约束 状态/控制约束 动力学 + 测量一致性
代价 阶段代价 + 终端 残差代价 + 到达代价

Rao-Rawlings-Mayne (2003) 证明了 MHE + MPC 的联合闭环稳定性——前提是 MHE 的到达代价满足类似 MPC 终端代价的 Lyapunov 条件。

工程快做法(EKF + 名义 MPC)

大多数实机系统(包括 MIT Cheetah、ANYmal、Spot)使用 EKF + 名义 MPC——没有理论保证但实际工作良好。原因:(a) EKF 的估计误差通常很小(\(< 1\%\));(b) MPC 的 inherent robustness(§7 ISS)足以吸收估计误差;(c) MHE 的计算量是 MPC 的 2 倍,在实时系统中很难承受。

§C 可行性恢复 ⭐⭐⭐

当扰动超出 \(\mathbb{W}\) 导致 OCP infeasible 时,MPC 面临最危险的局面——控制器没有输出。以下是四种恢复策略,按优先级排序:

策略 1:软约束松弛(最推荐)

把硬约束 \(g(x,u) \le 0\) 替换为 \(g(x,u) \le \delta\)\(\delta \ge 0\),在代价中加 \(w_\delta \|\delta\|_1\)\(w_\delta \gg 1\))。这样 OCP 永远可行——\(\delta\) 的值反映了约束违反程度。

工程实现:分层优先级。核心安全约束(如关节限位、倾倒防护)不松弛,性能约束(如速度限制、能耗限制)可松弛。

策略 2:备用控制器切换

如果 OCP 连续 \(k_{\text{fail}}\) 步 infeasible(如 \(k_\text{fail} = 3\)),切换到预设的备用控制器(如 LQR、PD 阻抗控制、或 safe fallback 姿态)。备用控制器不最优但保证安全。

策略 3:Shrinking horizon

如果 \(N\) 步 OCP infeasible,尝试 \(N-1\) 步、\(N-2\) 步、...、直到 \(N=1\)。Shrinking horizon 减少了终端约束的负担,可能在短视域内找到可行解。代价是稳定性保证减弱。

策略 4:\(\ell_1\) 精确罚

\(\ell_1\) 范数罚所有约束:\(\min J + \nu \sum_k \|g^+(x_k, u_k)\|_1\)(其中 \(g^+ = \max(0, g)\))。当 \(\nu\) 足够大时,\(\ell_1\) 罚是精确罚——可行解就是最优解,不可行时给出"最少违反"解。

机器人工程实践:ANYmal 和 Spot 使用策略 1+2 的组合。MIT Cheetah 使用纯策略 2(简单 PD fallback)。Talos 人形使用策略 1(分层软约束)。

§D Turnpike 理论 ⭐⭐⭐⭐

**Turnpike(收费公路)性质**是 economic MPC 的核心理论工具。它说的是:长时域最优轨迹的中段几乎全程紧贴最优稳态——像开高速公路。

精确定义(measure turnpike):对 \(T\)-步最优轨迹 \((x_0^\star, \ldots, x_T^\star)\),定义

\[ \sigma_T(\varepsilon) := \#\{k \in \{0,\ldots,T\} : \|x_k^\star - x_s\| > \varepsilon\} \]

若存在 \(C(\varepsilon) > 0\)(不依赖 \(T\))使 \(\sigma_T(\varepsilon) \le C(\varepsilon)\) 对所有 \(T\) 成立,则称系统具有 measure turnpike 性质。

直觉\(\sigma_T\) 统计"偏离稳态超过 \(\varepsilon\) 的时间步数"。Turnpike 说这个数有上界且不随 \(T\) 增长——大部分时间都在高速公路上。

指数 turnpike(exponential turnpike):更强的形式——轨迹以指数速率接近 \(x_s\),在"高速公路段"以指数速率回到 \(x_s\)

\[ \|x_k^\star - x_s\| \le C(e^{-\lambda k} + e^{-\lambda(T-k)}) \]

前半部分 \(e^{-\lambda k}\) 是"上高速",后半部分 \(e^{-\lambda(T-k)}\) 是"下高速"。中间段 \(\|x_k^\star - x_s\| \le 2Ce^{-\lambda T/2}\)(指数小)。

与 Strict Dissipativity 的等价性

Grüne-Müller (2016) 证明了:在 LICQ + SOSC 条件下,strict dissipativity \(\iff\) exponential turnpike。

这个等价性的深层含义:

  1. 从 dissipativity 到 turnpike:如果系统存在存储函数 \(\lambda\) 使代价"可旋转为正定",则最优轨迹必然紧贴稳态——因为偏离稳态会产生净正代价。
  2. 从 turnpike 到 dissipativity:如果最优轨迹总是紧贴稳态,可以用最优值函数构造存储函数 \(\lambda\)

工程应用:冻结中段 + 优化两端

Turnpike 性质启发了一种高效的近似方法:把长时域 OCP 分成三段——初始段(适应初始条件)、中间段(锁定为 \(x_s\))、终端段(到达终端约束)。只优化初始段和终端段,中间段直接设为稳态。这把计算量从 \(O(T)\) 降为 \(O(T_\text{init} + T_\text{term})\)

§E 实时 MPC:RTI 与 Suboptimal ⭐⭐⭐

RTI 的核心定理

回顾 §3.12(MPC 数值求解)的 Diehl-Bock-Schlöder 2005 contractivity 定理:

\[ \|w^{k+1} - w^\ast(\hat x_0^{k+1})\| \le \kappa\|w^k - w^\ast(\hat x_0^k)\| + \omega\|\hat x_0^{k+1} - \hat x_0^k\| \]

这个定理的稳定性含义:如果 \(\kappa < 1\)(单步 SQP 收缩)且闭环 ISS 保证 \(\|\hat x_0^{k+1} - \hat x_0^k\|\) 有界,则 RTI 跟踪误差有界且渐近收敛。

从 RTI contractivity 到闭环 ISS 的完整推导

设闭环状态满足 \(x_{k+1} = f(x_k, u_0^k) + w_k\),其中 \(u_0^k\) 是 RTI 的次优控制。

Step 1. RTI 次优性:\(u_0^k \ne u_0^{\star,k}\),差异 \(\|u_0^k - u_0^{\star,k}\| \le \|w^k - w^\ast\| =: \delta^k\)

Step 2. 代价次优性界:\(V_N(x^+, \tilde{\mathbf{u}}^k) \le V_N^\ast(x) - \ell(x, u_0^{\star}) + L_\text{cost}\delta^k\)

Step 3. 联合 ISS:\(V_N^\ast(x^+) - V_N^\ast(x) \le -\alpha_\ell(\|x\|) + \sigma_w(\|w\|) + L_\text{cost}\delta^k\)

由 contractivity,\(\delta^k \le \kappa^k \delta^0 + \frac{\omega}{1-\kappa}\sup\|\Delta x_0\|\),所以 \(\delta^k\) 有界→联合闭环 ISS。

Suboptimal MPC 的实用价值

Scokaert-Mayne-Rawlings (1999) 的核心定理:如果每步 MPC 返回的解 \(\tilde{\mathbf{u}}\) 满足 (a) 可行性和 (b) 代价不劣化(\(V_N(x^+, \tilde{\mathbf{u}}^+) \le V_N(x, \tilde{\mathbf{u}}) - \ell(x, \tilde u_0)\)),则闭环渐近稳定——不需要全局最优

这个定理的革命性在于:它解放了 MPC 对"精确求解"的依赖。实际工程中只需保证: 1. 可行性(shift warm-start 自动满足) 2. 代价单调不增(一次 SQP 迭代 + Armijo 检查通常满足)

因此 RTI(单次迭代)在 suboptimal MPC 框架下是有理论保证的——只要 shift warm-start 构造的候选序列满足 Lyapunov 下降。

§F 采样数据 MPC ⭐⭐⭐⭐

问题:MPC 理论假设离散时间系统 \(x_{k+1} = f(x_k, u_k)\),但实际系统是连续时间 \(\dot x = f_c(x, u)\)。离散化引入误差——MPC 的稳定性保证是否在连续世界中仍然成立?

Nešić-Teel (2004) 的框架:semi-global practical asymptotic stability(SP-AS)。核心结论:如果离散 MPC 在 \(X_N\) 上渐近稳定,且积分器是一致的(即离散化误差 \(\to 0\) as \(\Delta t \to 0\)),则连续闭环在 \(X_N\) 的紧子集上 SP-AS——状态收敛到原点的 \(O(\Delta t)\) 邻域(而非精确原点)。

精确陈述:对任意 \(\varepsilon > 0\)(终态邻域)和 \(\Delta > 0\)(初态范围),存在 \(\Delta t^\star > 0\) 使对所有 \(\Delta t < \Delta t^\star\)\(\|x_0\| \le \Delta\)

\[ \|x(t)\| \le \beta(\|x_0\|, t) + \varepsilon, \quad \forall t \ge 0 \]

工程含义\(\Delta t\) 越小,"实际稳定"越接近"理论稳定"。但 \(\Delta t\) 太小 → \(N = T/\Delta t\) 暴增 → 计算量线性增长。经验法则:\(\Delta t \le \tau_\text{sys}/5\)(系统最快时间常数的 1/5)。

§G 计算验证:LMI、SOS、MPT3 ⭐⭐⭐

终端设计的理论很优雅,但如何确保数值正确性?以下三个工具是验证的标准方法。

LMI 终端集设计的完整流程

对线性系统 \(x^+ = Ax + Bu\),终端集设计可以写成 SDP:

\[ \begin{aligned} \max_{W \succ 0, Y, \alpha} &\quad \alpha \\ \text{s.t.} &\quad \begin{bmatrix} W & (AW + BY)^\top \\ AW + BY & W \end{bmatrix} \succeq 0 \quad \text{(Schur Lyapunov)} \\ &\quad \begin{bmatrix} \alpha b_\ell^2 & c_\ell^\top \\ c_\ell & W^{-1} \end{bmatrix} \succeq 0, \quad \forall \ell \quad \text{(椭球切约束)} \\ &\quad W \succeq 0 \end{aligned} \]

变量替换 \(W = P^{-1}\)\(Y = KW\),使问题线性化为 SDP。

YALMIP + MOSEK 实现:

W = sdpvar(n, n, 'symmetric');
Y = sdpvar(m, n, 'full');
alpha = sdpvar(1);

% Lyapunov 约束
F = [W >= 1e-6*eye(n)];
F = [F, [W, (A*W+B*Y)'; A*W+B*Y, W] >= 0];

% 约束切约束
for l = 1:num_constraints
    F = [F, [alpha*b(l)^2, c(:,l)'; c(:,l), inv(W)] >= 0];
end

optimize(F, -alpha, sdpsettings('solver','mosek'));
P = inv(value(W));
K = value(Y) * P;
alpha_star = value(alpha);

SOS 验证 Lyapunov 函数

对多项式系统 \(f(x, Kx) = A_K x + r(x)\)\(r\) 多项式高阶项),验证 (A2) 等价于检验:

\[ -(V_f(f(x, Kx)) - V_f(x) + \ell(x, Kx)) \quad \text{是 SOS(非负多项式)} \]

SOS 可行性问题可由 SOSTOOLS(MATLAB)或 SumOfSquares.jl(Julia)自动求解。

using SumOfSquares, MosekTools
model = SOSModel(Mosek.Optimizer)
@variable(model, V, SOSPoly(monomials(x, 0:4)))  # 四次 Lyapunov 候选
@constraint(model, -(V(f(x,K*x)) - V(x) + ell(x,K*x)) in SOSCone())
optimize!(model)

MPT3 工具箱

MPT3(Multi-Parametric Toolbox 3,MATLAB)是多面体运算和 MPC 设计的事实标准。核心功能:

功能 命令 用途
多面体定义 Polyhedron(A, b) 约束集
Minkowski 和 P1 + P2 RPI 累加
Pontryagin 差 P1 - P2 约束收紧
最大正不变集 system.invariantSet() \(\mathcal{O}_\infty\)
显式 MPC mpc.toExplicit() PWA 控制律
可达集 system.reachableSet() 可行域 \(X_N\)

Python 替代:polytope 库(pip install polytope)支持基本 polytope 运算,但功能不如 MPT3 完整。对高维问题(\(n > 5\)),polytope 运算的面数可能指数增长——需要用 zonotope 或 ellipsoidal 近似。


本章小结

主题 核心结论 设计工具 适用场景
四条件 (§2) (A1)+(A2)+(A3) ⇒ 渐近稳定 DARE/LQR 所有 MPC
终端设计 (§3) \(V_f = x^\top P_{\text{DARE}} x\) 自动满足 A2 solve_discrete_are 可线性化系统
无终端 (§4) \(\alpha_N > 0\) ⇒ 稳定 Grüne 公式 \(N\) 可取大时
Economic (§5) Strict dissipativity ⇒ rotated cost 正定 SOS/LMI 非跟踪目标
Tube (§6) RPI + 收紧 ⇒ 鲁棒递归可行 MPT3 有界扰动
ISS (§7) \(V_N^\ast\) 是 ISS-Lyapunov Lipschitz 分析 小扰动鲁棒
CLF/CBF (§8) \(V_N^\ast\) 即 CLF,CBF 作安全约束 CasADi 避障

累积项目:本章新增模块

项目:从零构建 MPC 稳定性验证工具链

  • 前置章节已完成:Lyapunov 函数数值验证、KKT 条件求解器
  • 本章新增
  • DARE 求解 + LQR 终端设计模块(输入 \(A, B, Q, R\),输出 \(P, K, \alpha^\ast\)
  • Grüne \(\alpha_N\) 计算器(输入 \(C, \sigma\),输出 \(N^\ast\)
  • mRPI 计算模块(输入 \(A_K, \mathbb{W}\),输出 \(\mathbb{Z}_\alpha^s\)
  • Tube MPC 约束收紧器(输入 \(\mathbb{X}, \mathbb{U}, \mathbb{Z}\),输出收紧约束)

延伸阅读

资源 难度 内容
Rawlings-Mayne-Diehl MPC 2e Ch.2 ⭐⭐ 四条件理论的权威来源
Grüne-Pannek NMPC 2e Ch.5-7 ⭐⭐⭐ 无终端约束理论最深入
Kouvaritakis-Cannon 2016 Ch.3-4 ⭐⭐⭐ Tube MPC 最权威
Mayne 2014 Survey, Automatica ⭐⭐ MPC 稳定性 50 年回顾
Angeli-Amrit-Rawlings 2012 ⭐⭐⭐⭐ Economic MPC 奠基
Zeng-Sreenath 2021 GitHub ⭐⭐ MPC-CBF 可运行代码

🔧 故障排查手册

症状 可能原因 排查步骤 相关节
闭环状态缓慢漂移不收敛 阶段代价不含 \(x\)(A3 失效) 1. 检查 \(Q\) 是否正定 2. 画 \(V_N^\ast(x_k)\) 曲线 §2
第二拍 OCP infeasible 终端集不正不变或扰动超界 1. 检查 \(\kappa_f(x) \in \mathbb{U}\) 2. 画终端集与约束的关系 §3, §6
控制输出振荡不衰减 \(V_f\) 不满足 DARE 1. 验证 \(A_K^\top PA_K - P + Q + K^\top RK = 0\) 2. 重新解 DARE §3
\(N\) 增大后反而不稳定(有扰动) ISS 增益 \(L_f^{N-1}\) 爆炸 1. 估算 \(L_f\) 2. 加 tube 或减 \(N\) §7
Economic MPC 陷入极限环 Strict dissipativity 不满足 1. SOS 验证 \(\lambda\) 存在性 2. 检查代价是否真正"经济型" §5

本章常见误解汇总

误解 正确理解
MPC 有限视域优化天然保证闭环稳定 没有终端代价/终端约束的 MPC 可能闭环不稳定——有限视域导致的"近视效应"使控制器看不到远期代价,可能把状态推向不可恢复区域
Mayne 四条件是 MPC 稳定的唯一途径 Grune-Pannek 2011 证明了无终端约束/代价的 MPC 在视域 \(N\) 足够大时也能稳定(通过 controllability 假设),但所需 \(N\) 可能很大
终端等式约束 \(x_N = 0\) 是最简单的稳定性保证方式 \(x_N = 0\) 是充分条件但极度保守——要求 \(N\) 步内精确到达原点,可行域非常小;终端不等式约束 \(x_N \in \mathcal{X}_f\)(正不变椭球)在保证稳定性的同时给出大得多的可行域
Economic MPC 的稳定性分析与跟踪 MPC 相同 Economic MPC 的代价不以状态偏差为度量(\(\ell(x,u)\) 非正定),不能直接用 \(V_N^\ast\) 作 Lyapunov 函数;需要 strict dissipativity 条件将经济代价转化为等价的正定形式
ISS-MPC 意味着扰动不影响系统行为 ISS 保证的是扰动有界时状态有界(\(\|x\| \le \beta(\|x_0\|, t) + \gamma(\|w\|_\infty)\)),并非扰动无影响;增益函数 \(\gamma\) 越小鲁棒性越好
RTI(Real-Time Iteration)只做一步 SQP 一定导致性能损失 Diehl 2005 证明了 RTI 的次优性可视为一种有界扰动,在 ISS-MPC 框架下闭环仍稳定;一步 SQP 的 warm-start 质量(由上一时刻解平移得到)往往使这个"扰动"非常小
增大预测视域 \(N\) 总能提高鲁棒性 对于有模型误差的系统,\(N\) 过大反而使预测末端偏差 \(L_f^{N-1}\|w\|\) 指数增长(Lipschitz 常数的幂次),可能导致 ISS 增益恶化

跨章综合练习

综合题(需要 §2 + §3 + §6 的知识):

对双积分器 \(x^+ = \begin{bmatrix}1 & 0.1\\0 & 1\end{bmatrix} x + \begin{bmatrix}0.005\\0.1\end{bmatrix} u + w\)\(|u| \le 1\)\(\|x\|_\infty \le 5\)\(\|w\|_\infty \le 0.05\)

  1. 设计 LQR 终端:解 DARE,求 \(P, K, \alpha^\ast\)(§3);
  2. 验证四条件(§2):检查 (A1)-(A3) 是否满足;
  3. 设计 Tube MPC(§6):计算 mRPI \(\mathbb{Z}\),执行约束收紧;
  4. 仿真对比:标称 MPC vs Tube MPC 在有扰动下的约束满足情况。

完整实现约 200 行 Python 代码,使用 CasADi + MPT3(或 polytope 库)。


附录 A:Lyapunov 下降证明的几何解读

为什么候选序列构造是核心手法

§2 的证明中 Step 1 构造的候选序列 \(\tilde{\mathbf{u}} = (u_1^\ast, \dots, u_{N-1}^\ast, \kappa_f(x_N^\ast))\) 看似简单,但它蕴含了深刻的几何洞察。

时间轴视角

时刻 k:   [u_0*]  [u_1*]  [u_2*]  ... [u_{N-1}*]  → x_N* ∈ X_f
                                                          ↓ κ_f
时刻 k+1:         [u_1*]  [u_2*]  ... [u_{N-1}*] [κ_f(x_N*)] → x_{N+1} ∈ X_f
  • 上一时刻的最优序列**向左平移一格**——这就是 "shift" 操作的本质;
  • 末端用 \(\kappa_f\) 补齐——终端反馈是最后的安全网。

代价变化的几何意义

\(V_N^\ast(x)\)\(V_N(x^+, \tilde{\mathbf{u}})\),代价发生了以下变化:

  1. **减少**了第一段 \(\ell(x, u_0^\ast)\)(因为 shift 丢弃了它);
  2. **增加**了最后一段 \(\ell(x_N^\ast, \kappa_f) + V_f(f(x_N^\ast, \kappa_f)) - V_f(x_N^\ast)\)
  3. 由 (A2),增加的部分 \(\le 0\)

净效果:\(V_N(x^+, \tilde{\mathbf{u}}) \le V_N^\ast(x) - \ell(x, u_0^\ast) \le V_N^\ast(x) - \alpha_\ell(\|x\|)\)

最优性原则的角色

Step 5 中用到了最优性:\(V_N^\ast(x^+) \le V_N(x^+, \tilde{\mathbf{u}})\)。这看似多余——为什么不直接用候选代价?

原因:\(V_N(x^+, \tilde{\mathbf{u}})\) 不是 \(x^+\) 的函数——它依赖于从 \(x\) 出发的最优轨迹。我们需要一个只依赖于当前状态的 Lyapunov 函数——\(V_N^\ast(x)\) 满足此要求。最优性原则起到了从候选上界到状态函数的桥梁作用。


附录 B:终端集几何与计算细节

椭球与多面体的关系

终端集 \(X_f = \{x : x^\top P x \le \alpha\}\) 是椭球。形状由 \(P\) 的特征分解决定:\(P = U\Lambda U^\top\),特征向量 \(U\) 定义轴方向,特征值的倒数平方根 \(1/\sqrt{\lambda_i}\) 定义轴长(半轴长度为 \(\sqrt{\alpha/\lambda_i}\))。

椭球的几何直觉

考虑二维情形 \(P = \begin{pmatrix} 4 & 0 \\ 0 & 1 \end{pmatrix}\)\(\alpha = 1\)。椭球方程 \(4x_1^2 + x_2^2 \le 1\) 是一个沿 \(x_1\) 压缩、沿 \(x_2\) 拉长的椭圆——半轴长分别为 \(1/\sqrt{4} = 0.5\)\(1/\sqrt{1} = 1\)

物理含义\(P\) 的大特征值方向(\(\lambda_1 = 4\))对应"状态偏离代价高"的方向——椭球在该方向更窄,表示"允许更小的偏差"。对倒立摆,角度方向的特征值通常远大于角速度方向——说明角度偏差比角速度偏差更危险(角度偏大直接跌倒,角速度偏大还可以通过控制纠正)。

多面体终端集(Gilbert-Tan 1991)——对线性系统,最大正不变终端集:

\[ \mathcal{O}_\infty = \{x : A_K^k x \in \mathbb{X},\ K A_K^k x \in \mathbb{U},\ \forall k \ge 0\}. \]

迭代算法:\(\mathcal{O}_0 = \mathbb{X} \cap K^{-1}\mathbb{U}\)\(\mathcal{O}_{j+1} = \mathcal{O}_j \cap A_K^{-1}\mathcal{O}_j\)。有限步收敛(由 \(A_K\) Schur 保证,有限步后 \(A_K^k x\) 任意小,约束自动满足)。

收敛步数估计\(j^\star \le \lceil \log(\varepsilon / \|x\|_\infty) / \log(\rho(A_K)) \rceil\)。对 \(\rho(A_K) = 0.9\)\(\varepsilon / \|x\| = 0.01\)\(j^\star \le \lceil 4.6 / 0.105 \rceil = 44\) 步。

维度 椭球 多面体
体积 较小(内切于多面体) 最大(精确可达集)
存储 \(O(n^2)\) \(O(n \cdot n_f)\)(面数 \(n_f\) 可能指数增长)
在线检测 \(x^\top P x \le \alpha\)(一次矩阵乘法) \(Ax \le b\)\(n_f\) 次标量比较)
高维 好(\(n^2\) 存储与 \(n\) 无关) 差(\(n_f\) 可能 \(2^n\) 量级)
建议 \(n \ge 5\) \(n \le 4\)

选择建议:对四足/人形机器人(\(n \ge 12\)),椭球几乎是唯一可行的终端集表示。多面体只适合低维系统(如 2D 自行车模型、3D 四旋翼简化模型)。

LMI 联合优化

通过 Schur 补把 \(\alpha b_\ell^2 \ge c_\ell^\top P^{-1} c_\ell\) 转化为 LMI:

\[ \begin{bmatrix} \alpha b_\ell^2 & c_\ell^\top \\ c_\ell & P \end{bmatrix} \succeq 0. \]

\(W = P^{-1}\)\(Y = KW\) 可将整个终端设计写成 SDP。YALMIP + MOSEK 求解。


附录 C:Economic MPC 的 Telescope 性质

旋转后值函数 \(\tilde{V}_N^\ast(x) = V_N^\ast(x) - N\ell_e(x_s, u_s) + \lambda(x) - \lambda(x_s)\) 与原值函数有相同最优解。

证明利用 \(\lambda\) 项的 telescope 消去:\(\sum_{k=0}^{N-1}[\lambda(x_k) - \lambda(x_{k+1})] = \lambda(x_0) - \lambda(x_N)\)。旋转不改变最优控制序列,仅修改值函数的"坐标系"。

Dissipativity 的 SOS 验证

对多项式系统,strict dissipativity 验证转化为 SOS 可行性问题。参数化 \(\lambda\) 为多项式(通常二次),用 SOSTOOLS/SumOfSquares.jl 求解。


附录 D:Tube MPC 的非线性推广

线性 Tube MPC 的误差动力 \(e^+ = A_K e + w\) 是线性的。非线性推广面临核心挑战:RPI 集在非线性系统上没有闭式解——Minkowski 和的递推不再适用。

三种非线性推广方案

方案 1:沿参考轨迹线性化(LTV Tube)

Kohler-Muller-Allgower (2019) 的核心思想:

  1. 先解名义 NLP 得到参考轨迹 \((\bar x, \bar u)\)
  2. 沿 \((\bar x, \bar u)\) 线性化得到 LTV 系统 \(e_{k+1} = A_k e_k + B_k\delta u_k + w_k\)
  3. 为 LTV 系统计算 time-varying RPI tube \(\mathbb{Z}_k\)
  4. 用 time-varying 约束收紧。

优点:理论保证完整(RPI 在 LTV 意义下)。缺点:tube 大小依赖参考轨迹——如果参考轨迹变化大(如步态切换),tube 可能突变。

方案 2:Contraction-based Tube

利用 contraction theory(Lohmiller-Slotine 1998):如果非线性系统的 Jacobian \(\partial f/\partial x\) 一致负定(contraction metric),则任意两条轨迹指数收敛。误差 tube 可以用 contraction rate 界定。

方案 3:Adaptive Tube(在线调整)

Lorenzen-Allgower-Dabbene (2019):在线估计 \(\mathbb{W}\) 并动态调整 tube 大小。当扰动估计变小时 tube 收缩→约束放松→性能提升。当扰动增大时 tube 膨胀→约束收紧→安全保证加强。

三种方案的对比

方案 适用系统 计算量 保守性 工程成熟度
LTV Tube 弱非线性 中(需在线线性化) 较高
Contraction Tube 有 contraction metric 的系统 低(离线计算 metric) 研究阶段
Adaptive Tube 扰动缓变 高(在线估计 + tube 更新) 自适应 研究阶段

机器人的实际做法

大多数腿足/操作臂 MPC 实际上不使用 tube——因为:(a) 模型精度高(Pinocchio 的解析模型误差 < 1%);(b) 状态估计精度高(IMU + 编码器融合);(c) MPC 的 inherent robustness(§7)足以应对正常运行条件。

Tube MPC 在机器人中的价值主要在两个场景: 1. 安全关键应用(如手术机器人、航天器对接)——需要 100% 约束满足保证 2. 恶劣环境(如冰面行走、大风飞行)——扰动大且可估计

对"一般性"机器人(如仓库 AGV、家用服务机器人),标称 MPC + EKF 的简单组合就够了。


附录 E:MPC 稳定性证明的完整逻辑链

把本章的所有稳定性结论串联起来,形成一个从最弱假设到最强结论的完整逻辑链。

从弱到强:六层保证

Level 0: OCP 有解(可行性)
  ↓ + (A1) 终端集正不变
Level 1: 递归可行性(每步 OCP 有解)
  ↓ + (A2) 终端代价 CLF + (A3) 阶段代价正定
Level 2: 渐近稳定性(x → 0)
  ↓ + 二次代价 + 线性系统
Level 3: 指数稳定性(||x_k|| ≤ Ce^{-λk}||x_0||)
  ↓ + 扰动有界
Level 4: ISS 稳定性(x → B_δ(0),δ 与扰动成正比)
  ↓ + Tube 设计
Level 5: 鲁棒约束满足(x_k ∈ X, u_k ∈ U ∀k,对任意 w ∈ W)
  ↓ + Economic 代价 + Dissipativity
Level 6: 渐近最优稳态跟踪(average cost → ℓ_e(x_s, u_s))

每一层严格依赖前一层。如果 Level 0 不成立(OCP 无解),后面全白搭。如果 Level 2 成立但不检查 Level 4,扰动可能把系统推出稳定域——"仿真完美、实机失败"。

实机部署的最小保证级别

应用 需要的最低 Level 理由
学术 benchmark Level 2 仿真无扰动
四足行走(平地) Level 2 + ISS 分析 传感器噪声自然被 inherent robustness 吸收
四足行走(野外) Level 5 地形不确定性需要约束保证
手术机器人 Level 5 安全关键
航天器对接 Level 5 + Stochastic 无第二次机会
经济调度 Level 6 代价非正定

从理论到代码的 Checklist

在部署任何 MPC 之前,按以下 checklist 逐项检查:

  • 离散化 \((A_d, B_d)\) 可镇定?(\(\text{rank}([B, AB, \ldots, A^{n-1}B]) = n\)
  • DARE 有解?(solve_discrete_are 不报错)
  • \(A_K = A + BK\) 的特征值全在单位圆内?(\(\rho(A_K) < 1\)
  • 椭球 \(\alpha^\ast > 0\)?(约束不冲突)
  • 非线性系统的 \(\alpha_\text{nl}\) 足够大?(Chen-Allgöwer 条件)
  • MPC 闭环仿真中 \(V_N^\ast(x_k)\) 单调下降?(Lyapunov 验证)
  • 加入传感器噪声后 \(V_N^\ast\) 仍单调下降?(ISS 验证)
  • 扰动估计 \(\mathbb{W}\) 是否覆盖了真实扰动?(Tube 验证)

如果所有勾选通过,你的 MPC 就有了从理论到实践的完整保证链。


附录 F:MPC 稳定性理论的历史脉络

年代 里程碑 贡献者
1978 IDCOM(工业 MPC) Richalet
1988 终端等式约束稳定性 Keerthi-Gilbert
1993 双模式 MPC Michalska-Mayne
1998 Quasi-infinite horizon Chen-Allgower
2000 四条件统一框架 Mayne et al.
2004 Tube-based robust MPC Langson et al.
2005 RTI + mRPI 算法 Diehl; Rakovic
2009 无终端约束理论 Grune
2012 Economic MPC dissipativity Angeli et al.
2014 MPC 综述(40 年) Mayne
2021 MPC-CBF 统一 Zeng-Sreenath
2024 数据驱动 MPC 保证 Berberich-Allgower
2025 ProxDDP 硬约束 MPC Jallet et al.

附录 G:定理清单(12 条)

# 定理 核心结论 出处
1 DP 递归 \(V_N^\ast = \min[\ell + V_{N-1}^\ast]\) Bellman 1957
2 Mayne 2000 (A1)+(A2)+(A3) => 渐近稳定 Automatica 2000
3 Lyapunov 下降 \(V_N^\ast(x^+) \le V_N^\ast(x) - \ell\) 同上
4 DARE 配对 \(V_f = x^\top P x\) 满足 (A2) RMD17
5 Grune alpha_N cost controllability => 稳定 SICON 2009
6 Jadbabaie-Hauser CLF 终端代价 TAC 2005
7 Angeli EMPC dissipativity => 稳定 TAC 2012
8 Mayne Tube RPI + 收紧 => 鲁棒可行 Automatica 2005
9 Limon ISS \(V_N^\ast\) 是 ISS-Lyapunov LNCIS 2009
10 MPC-CBF DT-CBF => 安全 arXiv 2021
11 Scokaert feasibility => stability TAC 1999
12 Diehl RTI kappa < 1 => 局部收敛 SIAM 2005

附录 H:关键论文 DOI 速查

主题 论文 DOI
四条件 Mayne et al. 2000 10.1016/S0005-1098(99)00214-9
Survey Mayne 2014 10.1016/j.automatica.2014.10.128
QIH Chen-Allgower 1998 10.1016/S0005-1098(98)00073-9
CLF terminal Jadbabaie-Hauser 2005 10.1109/TAC.2005.847055
Cost ctrl Grune 2009 10.1137/070707853
Constrained Limon et al. 2006 10.1109/TAC.2006.875014
Economic Angeli et al. 2012 10.1109/TAC.2011.2176174
Rotated Diehl et al. 2011 10.1109/TAC.2010.2101291
Tube Mayne et al. 2005 10.1016/j.automatica.2004.08.019
mRPI Rakovic et al. 2005 10.1109/TAC.2005.843854
ISS-MPC Magni et al. 2006 10.1109/TAC.2006.880808
MPC-CBF Zeng et al. 2021 arXiv:2007.11718
SMPC Mesbah 2016 10.1109/MCS.2016.2602087
MHE Rao et al. 2003 10.1109/TAC.2002.808470
RTI Diehl et al. 2005 10.1137/S0363012902400713
Suboptimal Scokaert et al. 1999 10.1109/9.751369

附录 I:教材对照表

教材 四条件 无终端 Economic Tube Stochastic
Rawlings-Mayne-Diehl 2017 Ch.2 Ch.2.6 Ch.2.8 Ch.3 Ch.3.7
Grune-Pannek 2017 Ch.5 Ch.6-7 Ch.8 Ch.7 简 Ch.9 简
Borrelli-Bemporad-Morari 2017 Ch.10-11 -- -- Ch.15 --
Kouvaritakis-Cannon 2016 Ch.2 Ch.2.4 -- Ch.3-4 Ch.6

附录 J:时间预算

任务 产出
1 §1-§3 四条件 + DARE 手推证明,Python 算 \(P, K, \alpha\)
2 §4 Grune + 逆摆仿真 CasADi 跑无终端 MPC
3 §5-§6 Economic + Tube MPT3 算 mRPI
4 §7-§8 ISS + MPC-CBF 复现 Zeng-Sreenath
5 选学(推荐 §A + §E) acados 跑 RTI

学习建议

  • 第 1 周最重要——四条件证明是后续所有内容的基础。建议在白板上完整手推一遍 Step 1-6(§2),然后用 Python 验证双积分器的 \(P, K, \alpha^\ast\)。如果这一周没有彻底理解,后续内容会越来越困难。

  • **第 2 周的关键**是理解 Grune-Pannek 公式的直觉——"\(N\) 足够大时,有限视域的'近视效应'被阶段代价的累积所稀释"。用 CasADi 仿真直观验证:\(N\) 太小时轨迹振荡不收敛,\(N\) 达到 \(N^\ast\) 后突然稳定。

  • **第 3-4 周**可以并行学习。Tube MPC 和 ISS-MPC 虽然主题不同,但数学工具(Lyapunov、正不变集、Lipschitz 界)高度重叠。

  • **第 5 周**的 RTI 理论是连接本章(稳定性理论)与 §3.12(数值求解)的桥梁——它回答了"如果 MPC 没解到最优(只跑了一次 SQP 迭代),闭环还稳定吗?"这个实机部署中最核心的问题。

最后提醒:MPC 稳定性理论的**不可替代价值**不在于它"让你的代码更快"——而在于它"让你知道什么时候系统会崩"。一个没有稳定性分析的 MPC 部署就像一辆没有安全带的汽车——大多数时候没问题,但关键时刻会致命。 | 6 | 综合项目 | 完整 MPC 闭环 |