概述
MPC(Model Predictive Control,模型预测控制)是一种先进的过程控制方法,通过在线求解优化问题来计算控制输入。它的核心思想是:在每个采样时刻,利用系统模型预测未来有限时域内的系统行为,求解一个带约束的优化问题,得到最优控制序列,然后只执行第一个控制输入,在下一个时刻重复此过程。
一、基本原理
1.1 滚动时域控制
MPC的核心是滚动时域优化(Receding Horizon Control):
|
|
1.2 优势
- 处理约束:显式考虑输入、状态约束
- 多变量控制:天然支持MIMO系统
- 预见性:利用未来参考信息
- 灵活性:可处理非线性系统
二、离散时间MPC
2.1 系统模型
考虑离散线性系统:
$$ x_{k+1} = Ax_k + Bu_k $$$$ y_k = Cx_k $$2.2 预测模型
在时刻 $k$,预测未来 $N$ 步状态:
$$ \hat{x}(k+1|k) = Ax_k + Bu_k $$$$ \hat{x}(k+2|k) = A\hat{x}(k+1|k) + Bu_{k+1} = A^2x_k + ABu_k + Bu_{k+1} $$一般形式:
$$ \hat{x}(k+i|k) = A^ix_k + \sum_{j=0}^{i-1}A^{i-1-j}Bu_{k+j} $$2.3 紧凑矩阵形式
定义预测状态向量:
$$ X = \begin{bmatrix} x(k+1|k) \\ x(k+2|k) \\ \vdots \\ x(k+N|k) \end{bmatrix} $$控制输入向量:
$$ U = \begin{bmatrix} u_k \\ u_{k+1} \\ \vdots \\ u_{k+N-1} \end{bmatrix} $$预测方程:
$$ X = \Phi x_k + \Gamma U $$其中:
$$ \Phi = \begin{bmatrix} A \\ A^2 \\ \vdots \\ A^N \end{bmatrix}, \quad \Gamma = \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} $$三、优化问题
3.1 目标函数
$$ J = \sum_{i=1}^{N} \|x_{k+i} - x_{ref}\|_Q^2 + \sum_{i=0}^{N-1} \|u_{k+i} - u_{ref}\|_R^2 + \|x_{k+N} - x_{ref}\|_P^2 $$其中:
- $Q$:状态跟踪权重
- $R$:控制输入权重
- $P$:终端权重
- $N$:预测时域
3.2 约束条件
$$ x_{min} \leq x_{k+i} \leq x_{max}, \quad i = 1, \ldots, N $$$$ u_{min} \leq u_{k+i} \leq u_{max}, \quad i = 0, \ldots, N-1 $$$$ \Delta u_{min} \leq \Delta u_{k+i} \leq \Delta u_{max} $$3.3 标准QP形式
将优化问题转化为标准二次规划:
$$ \min_U \quad \frac{1}{2}U^T H U + f^T U $$$$ \text{s.t.} \quad G U \leq h $$其中:
$$ H = 2(\Gamma^T \bar{Q} \Gamma + \bar{R}) $$$$ f = 2\Gamma^T \bar{Q} \Phi x_k - 2(\Gamma^T \bar{Q} X_{ref} + \bar{R} U_{ref}) $$四、求解方法
4.1 二次规划求解器
常用求解器:
| 求解器 | 特点 |
|---|---|
| qpOASES | 热启动快,适合嵌入式 |
| OSQP | 开源,高效 |
| Gurobi | 商业,功能强大 |
| CVXGEN | 代码生成,适合小型问题 |
4.2 显式MPC
对于小型问题,可以离线计算控制律:
$$ u(x) = K_i x + k_i, \quad x \in \mathcal{P}_i $$不同状态区域对应不同线性控制律。
优点:
- 在线计算量小
- 适合高速控制
缺点:
- 预计算复杂
- 维度受限
4.3 计算复杂度
QP问题复杂度:$O(n^3)$
$n$ 为决策变量数量($n = N \times m$)
五、稳定性分析
5.1 终端约束方法
添加终端约束确保稳定性:
$$ x(k+N) \in \mathcal{X}_f $$终端集 $\mathcal{X}_f$ 是控制不变集。
5.2 终端代价方法
选择终端权重 $P$ 满足Lyapunov方程:
$$ A^TPA - P + Q + K^TRK = 0 $$5.3 无穷时域MPC
当 $N \to \infty$ 时,MPC渐近稳定。
六、Python实现示例
|
|
七、非线性MPC(NMPC)
7.1 非线性系统
$$ x_{k+1} = f(x_k, u_k) $$7.2 非线性优化
问题变为非线性规划(NLP):
$$ \min_U \quad J(x_0, U) $$$$ \text{s.t.} \quad x_{k+i+1} = f(x_{k+i}, u_{k+i}) $$$$ g(x_{k+i}, u_{k+i}) \leq 0 $$7.3 求解方法
- 序列二次规划(SQP)
- 内点法
- 实时迭代(RTI)
7.4 常用工具
| 工具 | 特点 |
|---|---|
| CasADi | 自动微分,符号计算 |
| ACADO | 代码生成,嵌入式 |
| do-mpc | Python接口,易用 |
八、MPC变体
8.1 鲁棒MPC
考虑模型不确定性:
$$ x_{k+1} = Ax_k + Bu_k + w_k, \quad w_k \in \mathcal{W} $$方法:
- Tube-based MPC
- Min-max MPC
8.2 随机MPC
考虑随机扰动:
$$ x_{k+1} = Ax_k + Bu_k + w_k, \quad w_k \sim \mathcal{N}(0, \Sigma) $$目标:最小化期望代价或保证概率约束。
8.3 分布式MPC
多个子系统协同控制:
- 每个子系统求解局部MPC
- 通过通信协调
- 适用于大规模系统
8.4 经济MPC
目标不是调节到设定点,而是优化经济性能:
$$ J = \sum_{i=0}^{N-1} l_e(x_{k+i}, u_{k+i}) $$九、应用领域
9.1 过程工业
- 化工过程控制
- 石油炼制
- 造纸工业
9.2 汽车领域
- 自适应巡航(ACC)
- 自动泊车
- 发动机控制
9.3 机器人
- 轨迹跟踪
- 步态规划
- 抓取控制
9.4 航空航天
- 着陆控制
- 轨迹优化
- 姿态控制
十、MPC vs LQR
| 特性 | MPC | LQR |
|---|---|---|
| 约束处理 | ✅ 显式处理 | ❌ 无法处理 |
| 计算复杂度 | 高(在线优化) | 低(离线计算) |
| 预见性 | ✅ 可利用未来参考 | ❌ 无预见性 |
| 非线性系统 | ✅ 可扩展 | ❌ 仅线性 |
| 实现难度 | 中等 | 简单 |
| 适用场景 | 有约束、多变量 | 无约束、快速控制 |
十一、实际应用考虑
11.1 预测时域选择
- 太短:无法充分预测,性能差
- 太长:计算量大,预测不准确
经验法则:覆盖系统主要动态
11.2 模型精度
- 模型误差影响预测准确性
- 可结合在线辨识/自适应
11.3 计算资源
- 实时性要求高时需考虑
- 嵌入式平台选择合适求解器
总结
MPC是一种强大的控制方法:
优点:
- 显式处理约束
- 多变量协调
- 利用未来信息
- 适用非线性系统
挑战:
- 计算复杂度
- 模型依赖
- 参数调节
选择建议:
- 有约束 → MPC
- 快速控制 + 无约束 → LQR
- 复杂系统 + 有约束 → MPC
参考资料
- 《Model Predictive Control》- Camacho & Bordons
- 《Predictive Control for Linear and Hybrid Systems》- Borrelli, Bemporad, Morari
- MATLAB MPC Toolbox
- CasADi - 开源优化工具
🚀 MPC是工业控制的主力军,理解它对于现代控制系统设计至关重要!