跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
MATLAB / OctaveAI算法

MPC 控制算法原理及流程

模型预测控制(MPC)算法的基本原理与实现流程。MPC 是一种基于二次优化的进阶过程控制方法,适用于线性和非线性系统。文章详细阐述了线性离散系统的数学描述、预测方程的构建、目标函数的定义以及二次优化的求解方法。通过推导预测控制增益系数,明确了算法的前馈 - 反馈结构,并给出了具体的算法执行步骤,包括初始化、状态测量、误差计算及控制量输出等关键环节。

星云发布于 2026/3/26更新于 2026/9/470 浏览

1. MPC 算法简介

MPC(Model Predictive Control,模型预测控制)算法是一种进阶过程控制方法。本质上是一个二次优化的过程。过程内环动态模型、控制量的历史数值、在预测区间上的一个最优值方程 J;最优控制量可由以上各量求出。MPC 可应用于线性和非线性系统。

2. 系统描述

线性离散系统 $$ X(k+1) = A X(k) + B u(k) $$ $$ y(k) = C X(k) $$ 增量形式 $$ \Delta X(k+1) = A \Delta X(k) + B \Delta u(k) $$ $$ y(k) = C \Delta X(k) + y(k-1) $$ 其中 $$ \Delta X(k) = X(k) - X(k-1) $$ $$ \Delta u(k) = u(k) - u(k-1) $$

3. 预测方程

预测时域 p,控制时域 m,当 t > m 时 $\Delta u(k+i) = 0$;定义 $$ Y_p(k+1|k) = \begin{bmatrix} y(k+1|k) \ y(k+2|k) \ \vdots \ y(k+p|k) \end{bmatrix}{p \times 1}, \quad \Delta U(k) = \begin{bmatrix} \Delta u(k) \ \Delta u(k+1) \ \vdots \ \Delta u(k+m) \end{bmatrix}{m \times 1} $$ 则有,预测方程为 $$ Y_p(k+1|k) = S_X \Delta X(k) + I y(k) + S_u \Delta U(k) $$ 其中 $$ S_X = \begin{bmatrix} C A \ \sum_{i=1}^{2} C A^i \ \vdots \ \sum_{i=1}^{p} C A^i \end{bmatrix}{p \times 1}, \quad I = \begin{bmatrix} I{nc \times nc} \ I_{nc \times nc} \ \vdots \ I_{nc \times nc} \end{bmatrix}{p \times 1} $$ $$ S_u = \begin{bmatrix} C B & 0 & 0 \ \sum{i=1}^{2} C A^{i-1} B & C B & 0 \ \vdots & \vdots & \vdots \ \sum_{i=1}^{p} C B & \cdots & \sum_{i=1}^{p+m-1} C A^{i-1} B \end{bmatrix}_{p \times m} $$

4. 预测控制

4.1 定义目标函数

$$ J = \sum_{i=1}^{p} | \Gamma_{yi} (y(k+i|k) - r(k+i)) |^2 + \sum_{i=1}^{m} | \Gamma_{ui} \Delta u(k+i-1) |^2 $$ 其中 $\Gamma_{yi} = \operatorname{diag}(\Gamma_{y1,i}, \dots, \Gamma_{yp,i})$;$\Gamma_{ui} = \operatorname{diag}(\Gamma_{u1,i}, \dots, \Gamma_{um,i})$。 矩阵化: $$ J(X(k), \Delta U(k), m, p) = | \Gamma_y (Y_P(k+1|k) - R(k+1)) |^2 + | \Gamma_u \Delta U(k) |^2 $$ 其中 $$ \Gamma_y = \operatorname{diag}(\Gamma_{y1}, \dots, \Gamma_{yp}), \quad \Gamma_u = \operatorname{diag}(\Gamma_{u1}, \dots, \Gamma_{um}) $$ $$ R(k+1) = \begin{bmatrix} r(k+1) \ r(k+2) \ \vdots \ r(k+p) \end{bmatrix}_{p \times 1} $$ $\Gamma_y$ 表征调节对误差的追踪能力;$\Gamma_u$ 表征调节运行的稳定性;$R(k+1)$ 表征参考路径,采用误差演化模型时取零即可,这是优点。

4.2 求解二次优化

$$ \Delta U^*(k) = (S_u^T \Gamma_y^T \Gamma_y S_u + \Gamma_u^T \Gamma_u)^{-1} S_u^T \Gamma_y^T \Gamma_y E_p(k+1|k) $$ 其中 $E_p(k+1|k) = R(k+1) - S_X \Delta X(k) - I y(k)$。

4.3 取第一个元素作用于真实系统

$$ \Delta u(k) = [I_{nc \times nc}, 0, 0, \dots]{1 \times m} * \Delta U^* $$ 定义预测控制增益系数 $K{mpc} = [I_{nc \times nc}, 0, 0, \dots] (S_u^T \Gamma_y^T \Gamma_y S_u + \Gamma_u^T \Gamma_u)^{-1} S_u^T \Gamma_y^T \Gamma_y$,则 $\Delta u(k) = K_{mpc} * E_p(k+1|k)$。

5. 算法流程

Step 1:初始化,设定预测时域 p 和控制时域 m,令 $u(-1)=0, X(-1)=0$,计算由上述公式计算 $S_X$、$I$、$S_u$ 和 $K_{mpc}$; Step 2:$k \ge 0$ 时,测量 $X(k)$,计算 $y(k)$,计算 $\Delta X(k) = X(k) - X(k-1)$; Step 3:计算 $E_p(k+1|k) = R(k+1) - S_X \Delta X(k) - I y(k)$; Step 4:计算 $\Delta u(k) = K_{mpc} * E_p(k+1|k)$; Step 5:将 $u(k) = u(k-1) + \Delta u(k)$ 作用于系统; Step 6:在 $k+1$ 时刻,测量 $X(k+1)$ 的值,并且令 $k=k+1$,返回 Step 2; 注:如果采用时变加权因子,则 $K_{mpc}$ 的计算或部分计算也将在循环内进行。

6. 算法结构分析

$$ \begin{aligned} E_p(k+1|k) &= R(K+1) - S_X \Delta X(k) - I y(k) \ &= R(K+1) - S_X (X(k) - X(k-1)) - I c X(k) \ &= R(K+1) - (S_X - I c) X(k) + S_X X(k-1) \end{aligned} $$ 所以 $\Delta u(k) = K_{mpc} R(K+1) - K_{mpc} (S_X - I c) X(k) + K_{mpc} S_X X(k-1)$,其中 $K_{mpc} R(K+1)$ 为基于未来参考输入的前馈补偿,$-K_{mpc} (S_X - I c) X(k) + K_{mpc} S_X X(k-1)$ 为反馈补偿,所以 MPC 算法具有'前馈—反馈'结构。

目录

  1. 1. MPC 算法简介
  2. 2. 系统描述
  3. 3. 预测方程
  4. 4. 预测控制
  5. 4.1 定义目标函数
  6. 4.2 求解二次优化
  7. 4.3 取第一个元素作用于真实系统
  8. 5. 算法流程
  9. 6. 算法结构分析

更多推荐文章

查看全部
  • 为什么选择 Python:核心特性与优势解析
  • RAG 技术详解:概念、场景、优势、微调对比与代码示例
  • OpenClaw 本地 AI 助手安装与配置实战
  • VSCode Copilot 聊天功能加载超时修复指南
  • Spring AI Alibaba 实战示例与最佳实践
  • Spring Boot 与 Leaflet 实现省级旅游口号 WebGIS 可视化
  • VR 视频下载工具 N_m3u8DL-RE 使用指南
  • GLM-4.6V-Flash-WEB 漫画分镜理解能力深度测评
  • 使用 Frontend-Design Skill 提升 AI 前端设计水平
  • C++ std::function 包装器与 bind 绑定详解
  • 前端通用 AI Rules 定义:适配 Cursor、Trae 等主流工具
  • AI 图像生成技术指南:从原理到实战
  • RabbitMQ 工作模式实战:Work Queue 负载均衡与 fanout 发布订阅
  • C++ 特殊类设计:拷贝控制、内存分配与单例模式
  • Android 面试复盘与跳槽准备实战指南
  • 开源 Agent 框架选型:带管理配置端与标准化 Skill 支持
  • Java CountDownLatch 核心原理、API 详解与实战应用
  • IDE 调用大模型 Session 机制解析与实践指南
  • Spring Boot 数据缓存与性能优化实战
  • 多模态知识图谱增强多模态推理能力(ACL2024)

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online