control_tutorial

第10章:模型预测控制(MPC)

模型预测控制(Model Predictive Control, MPC)是现代控制理论中最成功的先进控制策略之一,广泛应用于化工、石油炼制、航空航天、汽车工业等领域。MPC的核心思想是利用系统的数学模型,在每个采样时刻求解一个有限时域优化问题,得到最优控制序列,但只实施第一个控制动作,然后在下一时刻重复这个过程。这种”滚动时域”策略使MPC能够自然地处理多变量系统、约束条件和优化目标,成为工业界最受欢迎的先进控制技术。

10.1 MPC基本原理与公式化

10.1.1 预测模型

MPC的核心是一个能够预测系统未来行为的数学模型。考虑离散时间线性系统:

\[\begin{aligned} x_{k+1} &= Ax_k + Bu_k \\ y_k &= Cx_k + Du_k \end{aligned}\]

其中 $x_k \in \mathbb{R}^n$ 是状态向量,$u_k \in \mathbb{R}^m$ 是控制输入,$y_k \in \mathbb{R}^p$ 是输出向量。

给定当前状态 $x_k$,我们可以预测未来 $N$ 步的系统轨迹:

\[\begin{aligned} x_{k+1|k} &= Ax_k + Bu_{k|k} \\ x_{k+2|k} &= A^2x_k + ABu_{k|k} + Bu_{k+1|k} \\ &\vdots \\ x_{k+N|k} &= A^Nx_k + \sum_{i=0}^{N-1} A^{N-1-i}Bu_{k+i|k} \end{aligned}\]
其中 $x_{k+i k}$ 表示在时刻 $k$ 对时刻 $k+i$ 的状态预测。

10.1.2 优化问题公式化

MPC在每个采样时刻求解如下优化问题:

\[\begin{aligned} \min_{u_{k|k}, \ldots, u_{k+N-1|k}} \quad & J = \sum_{i=0}^{N-1} \left( \|x_{k+i|k} - x_{ref}\|_Q^2 + \|u_{k+i|k}\|_R^2 \right) + \|x_{k+N|k} - x_{ref}\|_P^2 \\ \text{s.t.} \quad & x_{k+i+1|k} = Ax_{k+i|k} + Bu_{k+i|k}, \quad i = 0, \ldots, N-1 \\ & x_{k|k} = x_k \\ & x_{min} \leq x_{k+i|k} \leq x_{max}, \quad i = 1, \ldots, N \\ & u_{min} \leq u_{k+i|k} \leq u_{max}, \quad i = 0, \ldots, N-1 \end{aligned}\]

其中:

10.1.3 滚动时域策略

MPC的关键特征是滚动时域(Receding Horizon)策略:

  1. 在时刻 $k$,测量或估计当前状态 $x_k$
  2. 求解优化问题,得到最优控制序列 $u^*_{k k}, u^*_{k+1 k}, \ldots, u^*_{k+N-1 k}$
  3. 只应用第一个控制动作 $u_k = u^*_{k k}$
  4. 在下一时刻 $k+1$,重复整个过程
时刻 k:   [u*_k, u*_{k+1}, ..., u*_{k+N-1}]  → 应用 u*_k
            ↑___________________|
            预测时域 N
            
时刻 k+1: [u*_{k+1}, u*_{k+2}, ..., u*_{k+N}]  → 应用 u*_{k+1}
            ↑_____________________|
            预测时域 N(向前滚动)

这种策略的优势在于:

10.1.4 将优化问题转化为二次规划

为了高效求解,我们通常将MPC优化问题转化为标准的二次规划(QP)形式。定义增广向量:

\[\mathbf{U} = \begin{bmatrix} u_{k|k} \\ u_{k+1|k} \\ \vdots \\ u_{k+N-1|k} \end{bmatrix}, \quad \mathbf{X} = \begin{bmatrix} x_{k+1|k} \\ x_{k+2|k} \\ \vdots \\ x_{k+N|k} \end{bmatrix}\]

预测方程可以写成紧凑形式:

\[\mathbf{X} = \mathbf{F}x_k + \mathbf{G}\mathbf{U}\]

其中:

\[\mathbf{F} = \begin{bmatrix} A \\ A^2 \\ \vdots \\ A^N \end{bmatrix}, \quad \mathbf{G} = \begin{bmatrix} B & 0 & \cdots & 0 \\ AB & B & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ A^{N-1}B & A^{N-2}B & \cdots & B \end{bmatrix}\]

代价函数可以写成:

\[J = \mathbf{U}^T\mathbf{H}\mathbf{U} + 2\mathbf{f}^T\mathbf{U} + c\]

其中 $\mathbf{H}$、$\mathbf{f}$ 和 $c$ 由权重矩阵和参考轨迹决定。这就是一个标准的QP问题,可以用专门的QP求解器高效求解。

10.2 约束处理与优化求解

10.2.1 约束类型

MPC能够系统地处理各种约束,这是其相对于传统控制方法的主要优势之一:

1. 输入约束

2. 状态/输出约束

3. 终端约束

10.2.2 软约束处理

硬约束可能导致优化问题无可行解,特别是在存在扰动或模型误差时。软约束通过引入松弛变量来解决这个问题:

\[\begin{aligned} \min \quad & J + \rho \sum_{i=1}^{N} \|\epsilon_i\|_1 \\ \text{s.t.} \quad & x_{min} - \epsilon_i \leq x_{k+i|k} \leq x_{max} + \epsilon_i \\ & \epsilon_i \geq 0 \end{aligned}\]

其中 $\epsilon_i$ 是松弛变量,$\rho$ 是惩罚权重。这种方法在保证问题始终有解的同时,尽可能减少约束违反。

10.2.3 优化求解方法

1. 内点法(Interior Point Methods)

适用于中大规模问题,具有多项式时间复杂度:

2. 活动集方法(Active Set Methods)

适用于小规模问题,能够热启动:

3. 快速梯度方法(Fast Gradient Methods)

适用于嵌入式实现:

10.2.4 计算效率优化

1. 结构利用

MPC问题具有特殊的稀疏结构,可以利用这种结构加速求解:

\[\mathbf{H} = \begin{bmatrix} H_{11} & H_{12} & & \\ H_{21} & H_{22} & H_{23} & \\ & H_{32} & \ddots & \ddots \\ & & \ddots & H_{N,N} \end{bmatrix}\]

使用块三对角矩阵分解算法,计算复杂度从 $O(N^3m^3)$ 降低到 $O(Nm^3)$。

2. 热启动

利用前一时刻的解构造当前时刻的初始猜测:

\[\mathbf{U}^{init}_k = \begin{bmatrix} u^*_{k+1|k-1} \\ \vdots \\ u^*_{k+N-1|k-1} \\ u_{steady} \end{bmatrix}\]

这种方法显著减少迭代次数,特别是在系统变化缓慢时。

3. 移动时域估计(Move Blocking)

减少优化变量数量,假设控制输入在某些时段内保持不变:

\[u_{k+i|k} = u_{k+j|k}, \quad i,j \in \text{同一时段}\]

这种方法在长预测时域情况下特别有效。

10.3 稳定性保证

10.3.1 无约束MPC的稳定性

对于无约束线性MPC,如果选择无限时域代价函数:

\[J_\infty = \sum_{i=0}^{\infty} \left( \|x_{k+i|k}\|_Q^2 + \|u_{k+i|k}\|_R^2 \right)\]

则闭环系统是渐近稳定的。无限时域问题的解可以通过求解代数Riccati方程得到:

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

最优控制律为: \(u_k = -Kx_k, \quad K = (R + B^TPB)^{-1}B^TPA\)

10.3.2 终端代价方法

有限时域MPC通过添加适当的终端代价来保证稳定性。终端代价 $V_f(x) = x^TPx$ 应满足:

Lyapunov递减条件: \(V_f(Ax + Bu^*) - V_f(x) \leq -\|x\|_Q^2 - \|u^*\|_R^2\)

其中 $u^* = -Kx$ 是局部控制器。

通常选择 $P$ 为对应无限时域LQR问题的解,这保证了上述条件成立。

10.3.3 终端约束集方法

另一种保证稳定性的方法是引入终端约束集 $\mathcal{X}_f$:

\[x_{k+N|k} \in \mathcal{X}_f\]

终端集应满足:

  1. 正不变性: 如果 $x \in \mathcal{X}_f$,则 $Ax + Bu^*(x) \in \mathcal{X}_f$
  2. 约束可行性: 对所有 $x \in \mathcal{X}_f$,控制 $u^*(x)$ 满足输入约束
  3. 包含原点: $0 \in \mathcal{X}_f$

最大正不变集可以通过迭代计算:

\[\mathcal{X}_f = \{x : |Kx| \leq u_{max}, |C_ix| \leq y_{max}^{(i)}, i = 0,1,2,\ldots\}\]

其中 $C_i = C(A-BK)^i$。

10.3.4 递归可行性

递归可行性是MPC稳定性的关键。如果时刻 $k$ 的问题有可行解,则时刻 $k+1$ 的问题也应有可行解。

定理(递归可行性): 如果MPC问题在时刻 $k$ 有可行解 $\mathbf{U}^*_k$,且终端约束集 $\mathcal{X}_f$ 是正不变的,则在时刻 $k+1$ 存在可行解:

\[\mathbf{U}_{k+1}^{feas} = \begin{bmatrix} u^*_{k+1|k} \\ \vdots \\ u^*_{k+N-1|k} \\ K x^*_{k+N|k} \end{bmatrix}\]

这个构造的可行解保证了MPC问题始终有解,从而保证了闭环稳定性。

10.4 鲁棒MPC

实际系统总是存在模型不确定性和外部扰动,鲁棒MPC旨在保证在这些不确定性存在的情况下仍能维持稳定性和性能。

10.4.1 不确定性建模

考虑存在不确定性的系统:

\[x_{k+1} = A(\theta)x_k + B(\theta)u_k + w_k\]

其中:

常见的不确定性描述方式:

1. 多胞体不确定性 \([A(\theta), B(\theta)] \in \text{Co}\{[A_1, B_1], \ldots, [A_L, B_L]\}\)

2. 范数有界不确定性 \(A(\theta) = A_0 + \Delta A, \quad \|\Delta A\| \leq \delta_A\)

10.4.2 最小-最大MPC

最保守但最安全的方法是考虑最坏情况:

\[\begin{aligned} \min_{u_{k|k}, \ldots} \max_{w, \theta} \quad & J(x_k, \mathbf{U}, w, \theta) \\ \text{s.t.} \quad & \text{约束对所有} \, w \in \mathcal{W}, \theta \in \Theta \, \text{都满足} \end{aligned}\]

这个问题通常很难求解,需要采用近似方法。

10.4.3 管道MPC(Tube MPC)

管道MPC通过分离名义轨迹和误差动态来处理不确定性:

  1. 名义系统: 无扰动的确定性系统 \(\bar{x}_{k+1} = A\bar{x}_k + B\bar{u}_k\)

  2. 误差系统: 实际状态与名义状态的偏差 \(e_k = x_k - \bar{x}_k\)

  3. 鲁棒控制律: \(u_k = \bar{u}_k + K(x_k - \bar{x}_k)\)

误差动态满足: \(e_{k+1} = (A + BK)e_k + w_k\)

通过选择合适的反馈增益 $K$,可以保证误差始终在一个鲁棒正不变集 $\mathcal{E}$ 内:

\[\mathcal{E} = \{e : e = \sum_{i=0}^{\infty} (A+BK)^i w_i, w_i \in \mathcal{W}\}\]

约束需要收紧以考虑误差: \(\bar{x}_k \in \mathcal{X} \ominus \mathcal{E}, \quad \bar{u}_k \in \mathcal{U} \ominus K\mathcal{E}\)

其中 $\ominus$ 表示Minkowski差。

10.4.4 场景MPC

基于场景的方法通过采样多个不确定性实现来近似鲁棒性:

\[\min_{\mathbf{U}} \sum_{s=1}^{S} p_s J_s(x_k, \mathbf{U}, \theta_s)\]

其中 $S$ 是场景数量,$p_s$ 是场景概率。

这种方法的优势是可以处理非凸不确定性集,且优化问题仍是凸的(如果原问题是凸的)。

10.4.5 自适应MPC

结合参数估计的MPC方法:

  1. 在线参数估计: 使用递归最小二乘或卡尔曼滤波 \(\hat{\theta}_{k+1} = \hat{\theta}_k + L_k(y_k - \hat{y}_k)\)

  2. 不确定性集更新: 基于估计误差协方差 \(\Theta_k = \{\theta : (\theta - \hat{\theta}_k)^T P_k^{-1} (\theta - \hat{\theta}_k) \leq \chi^2_\alpha\}\)

  3. 双模MPC: 在参数收敛后切换到确定性MPC

10.5 显式MPC

显式MPC通过离线求解多参数规划问题,将MPC控制律表示为状态的分段仿射函数。

10.5.1 多参数二次规划

将状态 $x_k$ 视为参数,MPC问题变为多参数QP:

\[\begin{aligned} u^*(x) = \arg\min_{\mathbf{U}} \quad & \frac{1}{2}\mathbf{U}^T H \mathbf{U} + x^T F \mathbf{U} \\ \text{s.t.} \quad & G\mathbf{U} \leq W + Ex \end{aligned}\]

10.5.2 解的结构

定理: 上述多参数QP的解是状态空间的分段仿射函数:

\[u^*(x) = K_i x + g_i, \quad \text{if } x \in \mathcal{R}_i\]

其中 $\mathcal{R}_i$ 是多面体区域,状态空间被划分为有限个这样的区域。

10.5.3 离线计算

显式MPC的计算分为两步:

1. 离线阶段:

2. 在线阶段:

状态空间划分示例(2维):
        
     x₂ ↑
        |  R₃: u = K₃x + g₃
        |╱╲╱╲╱╲╱╲╱
        |╲╱╲╱╲╱╲╱ R₂: u = K₂x + g₂
        |────────
        | R₁: u = K₁x + g₁
    ────┼────────→ x₁
        |

10.5.4 优势与局限

优势:

局限:

10.5.5 复杂度降低技术

1. 近似显式MPC

通过合并相近的区域来减少分区数量: \(\|K_i - K_j\| < \epsilon \Rightarrow \text{合并区域} \, \mathcal{R}_i \, \text{和} \, \mathcal{R}_j\)

2. 部分显式MPC

只对状态空间的关键区域进行显式化,其他区域在线求解。

3. 分层结构

使用二叉搜索树或哈希表加速区域定位:

根节点: H₁ᵀx ≤ b₁?
├─ 是 → 节点2: H₂ᵀx ≤ b₂?
│   ├─ 是 → 区域R₁
│   └─ 否 → 区域R₂
└─ 否 → 节点3: H₃ᵀx ≤ b₃?
    ├─ 是 → 区域R₃
    └─ 否 → 区域R₄

10.6 案例研究:炼油厂催化裂化装置优化控制

10.6.1 背景介绍

流化催化裂化(FCC)是炼油工业的核心装置,将重质原油转化为汽油和其他轻质产品。一个典型的FCC装置价值数亿美元,每天处理数万桶原油,其运行效率直接影响炼厂的经济效益。

FCC装置的控制挑战包括:

10.6.2 过程建模

FCC装置的简化动态模型包含以下主要变量:

状态变量(6个):

控制变量(4个):

输出变量(5个):

线性化模型(采样时间 T = 1分钟): \(\begin{aligned} x_{k+1} &= Ax_k + Bu_k + B_d d_k \\ y_k &= Cx_k \end{aligned}\)

其中 $d_k$ 是可测扰动(原料性质)。

10.6.3 MPC公式化

优化目标:

经济目标函数考虑产品价值和操作成本: \(J_{econ} = -\sum_{i=0}^{N-1} \left( p_{gas} y_{1,k+i} + p_{diesel} y_{2,k+i} - p_{feed} u_{1,k+i} - p_{util} u_{3,k+i} \right)\)

其中 $p_{gas}, p_{diesel}, p_{feed}, p_{util}$ 是价格系数。

加入稳定性和平滑性要求: \(J = J_{econ} + \sum_{i=0}^{N-1} \left( \|y_{k+i} - y_{ref}\|_Q^2 + \|\Delta u_{k+i}\|_R^2 \right)\)

约束条件:

  1. 操作约束:
    • 进料流率:$100 \leq u_1 \leq 150$ m³/h
    • 催化剂循环:$200 \leq u_2 \leq 400$ ton/h
    • 空气流率:$5000 \leq u_3 \leq 8000$ Nm³/h
  2. 安全约束:
    • 反应器温度:$480 \leq x_1 \leq 530$ °C
    • 再生器温度:$650 \leq x_2 \leq 720$ °C(防止催化剂烧结)
    • 压力差:$ x_3 - p_{atm} \leq 50$ kPa
  3. 环保约束:
    • CO排放:$y_4 \leq 200$ ppm
    • SOx排放:满足环保标准
  4. 质量约束:
    • 汽油辛烷值:$y_6 \geq 92$
    • 硫含量:$y_7 \leq 10$ ppm

10.6.4 实施策略

1. 分层控制结构

┌─────────────────────────┐
│   实时优化器 (RTO)      │ ← 每小时更新
│   (稳态优化目标)        │
└───────────┬─────────────┘
            ↓ 目标值
┌─────────────────────────┐
│     MPC控制器           │ ← 每分钟执行
│   (动态优化+约束)       │
└───────────┬─────────────┘
            ↓ 设定值
┌─────────────────────────┐
│    基础控制层 (PID)     │ ← 每秒执行
│   (阀门、泵控制)        │
└─────────────────────────┘

2. 扰动前馈

利用原料性质在线分析仪的测量值进行前馈补偿: \(u_k = u_{MPC,k} + K_{ff} (d_k - d_{nom})\)

3. 软约束处理

将产品质量约束设为软约束,安全约束保持为硬约束: \(\begin{aligned} \min \quad & J + \rho_1 \epsilon_{quality} + \rho_2 \epsilon_{emission} \\ \text{s.t.} \quad & y_{quality} \geq y_{min} - \epsilon_{quality} \\ & y_{emission} \leq y_{max} + \epsilon_{emission} \\ & \epsilon_{quality}, \epsilon_{emission} \geq 0 \end{aligned}\)

10.6.5 实际效果

某炼厂实施MPC后的改进效果:

1. 经济效益

2. 运行稳定性

3. 环保指标

10.6.6 实施挑战与解决方案

挑战1:模型失配

挑战2:计算时间

挑战3:操作员接受度

挑战4:非线性行为

10.6.7 先进特性

1. 经济MPC(EMPC)

直接优化经济目标,而非跟踪稳态最优点: \(\min_{u} \sum_{k=0}^{N-1} L_{econ}(x_k, u_k)\)

需要额外的稳定性约束或终端成分来保证闭环稳定性。

2. 随机MPC处理价格波动

考虑产品价格的随机性: \(\min_{u} \mathbb{E}\left[ \sum_{k=0}^{N-1} L(x_k, u_k, p_k) \right] + \beta \cdot \text{CVaR}\)

其中CVaR(条件风险价值)用于风险管理。

3. 与机器学习结合

10.7 前沿专题:随机MPC与分布式MPC

10.7.1 随机MPC

处理随机不确定性的MPC方法,适用于需求不确定、价格波动等场景。

基本公式: \(\begin{aligned} \min_{u} \quad & \mathbb{E}\left[ \sum_{k=0}^{N-1} l(x_k, u_k) + V_f(x_N) \right] \\ \text{s.t.} \quad & x_{k+1} = f(x_k, u_k, w_k) \\ & \mathbb{P}(g(x_k, u_k) \leq 0) \geq 1 - \epsilon \end{aligned}\)

求解方法:

  1. 场景树方法: 构建随机过程的场景树
  2. 多项式混沌展开: 用正交多项式近似随机变量
  3. 采样平均近似: Monte Carlo采样

10.7.2 分布式MPC

大规模系统分解为多个子系统,每个子系统有自己的MPC控制器。

系统分解: \(x_i^+ = A_{ii}x_i + B_{ii}u_i + \sum_{j \in \mathcal{N}_i} (A_{ij}x_j + B_{ij}u_j)\)

其中 $\mathcal{N}_i$ 是子系统 $i$ 的邻居集合。

协调策略:

  1. 非迭代方案: 每个子系统独立求解,考虑邻居的预测轨迹
  2. 迭代方案: 子系统间交换信息,迭代至收敛
  3. 基于ADMM的方案: 使用交替方向乘子法实现分布式优化

应用示例:

10.8 历史人物:Jacques Richalet

Jacques Richalet(1936-)是工业模型预测控制的先驱。1978年,他和同事在法国开发了第一个商业化的MPC算法——IDCOM(Identification and Command),并成功应用于炼油厂的催化裂化装置控制。

Richalet的主要贡献:

他的名言:”在工业控制中,一个能工作的简单算法胜过一个完美但复杂的理论。”这一理念深刻影响了MPC的发展方向。

同期,Shell公司的Cutler和Ramaker开发了动态矩阵控制(DMC),这两个算法共同奠定了工业MPC的基础。今天,MPC已成为过程工业的标准控制技术,每年创造数十亿美元的经济价值。

10.9 本章小结

模型预测控制是现代控制理论中最成功的高级控制策略,其核心优势在于:

关键概念:

  1. 滚动时域优化: 在每个采样时刻求解有限时域优化问题
  2. 约束处理能力: 系统地处理输入、状态和输出约束
  3. 多目标优化: 平衡经济效益、控制性能和约束满足

核心公式:

实施要点:

发展趋势:

10.10 练习题

基础题

习题10.1 考虑二阶系统: \(x_{k+1} = \begin{bmatrix} 1.2 & 0.1 \\ -0.2 & 0.9 \end{bmatrix} x_k + \begin{bmatrix} 0.5 \\ 1 \end{bmatrix} u_k\) 设计MPC控制器,预测时域N=3,权重Q=I, R=1。写出完整的优化问题公式。

Hint: 首先构建预测方程,然后写出代价函数的矩阵形式。

答案 构建预测矩阵: $$\mathbf{F} = \begin{bmatrix} A \\ A^2 \\ A^3 \end{bmatrix}, \quad \mathbf{G} = \begin{bmatrix} B & 0 & 0 \\ AB & B & 0 \\ A^2B & AB & B \end{bmatrix}$$ 优化问题: $$\min_{\mathbf{U}} \mathbf{U}^T(\mathbf{G}^T\bar{Q}\mathbf{G} + \bar{R})\mathbf{U} + 2(\mathbf{F}x_k)^T\bar{Q}\mathbf{G}\mathbf{U}$$ 其中 $\bar{Q} = \text{diag}(Q, Q, Q)$, $\bar{R} = \text{diag}(R, R, R)$。

习题10.2 解释为什么MPC中的预测时域N不能太小也不能太大?典型的选择原则是什么?

Hint: 考虑稳定性和计算复杂度。

答案 预测时域N的影响: - **N太小**:无法捕捉系统的完整动态响应,可能导致短视行为和稳定性问题 - **N太大**:计算负担增加(O(N³)),模型误差累积,远期预测不准确 典型选择原则: - N应覆盖系统的主要动态(约为上升时间的1.5-2倍) - 对于稳定系统:N = 10-30个采样周期 - 对于不稳定系统:需要更长的预测时域或终端约束 - 工业经验法则:N × Ts ≈ 系统建立时间

习题10.3 某化工反应器的温度控制采用MPC,输入约束为0 ≤ u ≤ 100(冷却水流量),状态约束为20 ≤ x ≤ 80(反应温度)。如何将这些约束转化为QP问题的标准形式?

Hint: 构建约束矩阵G和向量h。

答案 标准形式:$G\mathbf{U} \leq h$ 对于输入约束: $$\begin{bmatrix} I \\ -I \end{bmatrix} \mathbf{U} \leq \begin{bmatrix} 100 \cdot \mathbf{1} \\ 0 \cdot \mathbf{1} \end{bmatrix}$$ 对于状态约束(利用预测方程 $\mathbf{X} = \mathbf{F}x_k + \mathbf{G}\mathbf{U}$): $$\begin{bmatrix} \mathbf{G} \\ -\mathbf{G} \end{bmatrix} \mathbf{U} \leq \begin{bmatrix} 80 \cdot \mathbf{1} - \mathbf{F}x_k \\ -20 \cdot \mathbf{1} + \mathbf{F}x_k \end{bmatrix}$$ 合并得到完整约束矩阵。

挑战题

习题10.4 推导管道MPC中鲁棒正不变集的计算方法。假设误差动态为 $e_{k+1} = Ae_k + w_k$,其中 $|w_k|\infty \leq w{max}$,A是稳定矩阵。

Hint: 使用Minkowski和的性质。

答案 鲁棒正不变集定义为: $$\mathcal{E} = \{e : e = \sum_{i=0}^{\infty} A^i w_i, \|w_i\|_\infty \leq w_{max}\}$$ 由于A稳定,可以近似为有限和: $$\mathcal{E}_N = \bigoplus_{i=0}^{N} A^i \mathcal{W}$$ 其中 $\mathcal{W} = \{w : \|w\|_\infty \leq w_{max}\}$,$\bigoplus$ 表示Minkowski和。 迭代计算: 1. $\mathcal{E}_0 = \mathcal{W}$ 2. $\mathcal{E}_{k+1} = A\mathcal{E}_k \oplus \mathcal{W}$ 3. 当 $\mathcal{E}_{k+1} \subseteq \mathcal{E}_k$ 时停止 最终 $\mathcal{E} = \mathcal{E}_k$ 是最小鲁棒正不变集。

习题10.5 设计一个经济MPC控制器,最大化生产效益同时保证闭环稳定性。系统动态:$x_{k+1} = 0.9x_k + u_k$,经济目标:$l_e(x,u) = px - cu^2$(p是产品价格,c是能源成本)。

Hint: 使用旋转代价函数方法或添加稳定性约束。

答案 方法1:旋转代价函数 $$l(x,u) = l_e(x,u) - l_e(x_s, u_s) + \lambda\|x-x_s\|^2$$ 其中 $(x_s, u_s)$ 是经济最优稳态点: $$x_s = \frac{p}{2c(1-0.9)^2}, \quad u_s = 0.1x_s$$ 方法2:添加平均约束 $$\frac{1}{N}\sum_{i=0}^{N-1} x_{k+i|k} = x_s$$ 方法3:终端约束 $$x_{k+N|k} \in \mathcal{X}_f$$ 其中 $\mathcal{X}_f$ 是包含 $x_s$ 的正不变集。 这些方法都能保证经济最优性和闭环稳定性的平衡。

习题10.6 分析显式MPC的复杂度。对于n维状态、m维输入、c个约束的系统,估计:(a) 区域数量的上界;(b) 在线计算复杂度;(c) 存储需求。

Hint: 使用组合数学分析最坏情况。

答案 (a) 区域数量上界: - 每个区域对应一个活动约束集 - 最多有 $\binom{c}{n}$ 个可能的活动集 - 实际区域数通常远小于此上界 (b) 在线计算复杂度: - 点定位:O(log(N_r) × n)(使用二叉搜索树) - 控制计算:O(nm)(矩阵向量乘法) - 总复杂度:O(n log(N_r) + nm) (c) 存储需求: - 每个区域需存储: - 控制律:(m × n + m)个数 - 区域描述:最多c个不等式,每个需(n+1)个数 - 总存储:O(N_r × (mn + c(n+1))) 典型值:n=4, m=2, c=20时,可能有数百到数千个区域,需要MB级存储。

习题10.7(开放思考题)比较MPC与强化学习在控制问题中的优劣。什么情况下应该选择MPC?什么情况下RL更合适?能否有效结合两者的优势?

参考思路 **MPC的优势:** - 显式处理约束 - 基于模型,样本效率高 - 可解释性强,稳定性可证明 - 在线优化,适应性好 **RL的优势:** - 无需精确模型 - 可处理高维、非线性系统 - 长期优化能力强 - 可从经验中学习改进 **选择原则:** - 有准确模型+安全要求高 → MPC - 模型未知+可以试错学习 → RL - 实时性要求高+约束多 → MPC - 复杂环境+难以建模 → RL **结合方法:** 1. RL学习MPC的参数(权重、时域) 2. MPC作为RL的安全层 3. RL学习残差补偿MPC模型误差 4. 可微分MPC嵌入RL策略网络

10.11 常见陷阱与错误

陷阱1:预测时域选择不当

错误: 为了减少计算量,选择很短的预测时域(如N=2) 后果: 控制器短视,可能导致振荡或不稳定 正确做法: N应至少覆盖系统的主导动态,通常N×Ts ≥ 0.7×上升时间

陷阱2:忽略递归可行性

错误: 设计MPC时只关注标称性能,不考虑扰动下的可行性 后果: 实际运行时频繁出现无可行解,控制器失效 正确做法: 使用终端约束集或软约束确保递归可行性

陷阱3:权重调试无章法

错误: 随机调整Q和R矩阵,希望获得好的性能 后果: 调试时间长,性能不理想 正确做法:

陷阱4:模型更新不及时

错误: 使用固定的线性模型,不考虑工作点变化 后果: 在偏离设计工作点时性能严重下降 正确做法: 实施增益调度或自适应MPC,定期更新模型

陷阱5:过度依赖积分作用

错误: 在MPC外层添加积分器消除稳态误差 后果: 可能导致积分饱和,约束处理复杂化 正确做法: 使用增量式MPC或扰动模型,在MPC内部处理偏差

陷阱6:忽略计算延迟

错误: 假设优化求解是瞬时的 后果: 实际系统存在一个采样周期的延迟,影响稳定性 正确做法: 在模型中包含计算延迟,或使用预测补偿

10.12 最佳实践检查清单

设计阶段

实施阶段

调试阶段

运行维护