robust-tube-mpc的终端集是怎么算出来的:最大正不变集MPI迭代算法深度解析

发布时间:2026/8/28 9:36:15
robust-tube-mpc的终端集是怎么算出来的:最大正不变集MPI迭代算法深度解析 robust-tube-mpc的终端集是怎么算出来的最大正不变集MPI迭代算法深度解析【免费下载链接】robust-tube-mpcExample implementation for robust model predictive control using tube项目地址: https://gitcode.com/gh_mirrors/ro/robust-tube-mpcrobust-tube-mpc 是一个用 MATLAB 实现的 tube-MPC基于管状的鲁棒模型预测控制示例工程。这篇文章带你深入它的心脏终端集最大正不变集 Xmpi的迭代算法——从约束集 Xc 出发在反馈控制下逐步求前向像集、反复做交集直到集合不再缩小就得到了保证闭环稳定的终端约束集。即使你是控制新手看完也能明白每一步在做什么。为什么需要终端集鲁棒 tube MPC 稳定的关键 MPC 只优化有限长度预测时域 N的轨迹如果终端状态没有约束闭环既可能不收敛也可能每步求解不可行。解决办法是设置一个终端约束集 Xf文献中的叫法只要让预测末端落在 Xf 里闭环就被锁在一个永不越界的区域中。本项目的终端集就是最大正不变集 Xmpi在反馈律 u Kx 下系统从 Xmpi 内任意点出发状态永远留在 Xmpi 内同时满足状态约束 Xc 和输入约束 Uc。最大意味着它尽可能大地保留了可行域不会让优化问题过早失效。计算发生在两个地方普通 MPCsrc/OptimalControler.m的构造流程中tube-MPCsrc/TubeModelPredictiveControl.m并且用的是侵蚀后的约束集最大正不变集迭代算法4 步算出 Xmpi核心函数是src/LinearSystem.m中的compute_MPIset第 31–46 行思路可以拆成 4 步① 把约束集变成矩阵形式Xc、Uc 都是凸多面体Polyhedron对象。借助工具函数src/utils/convert_Poly2Mat.m统一化成Fx Gu 1的形式得到矩阵 F、G。② 求每一步的前向像集 Xpi(i)闭环矩阵是 Ak A BK其中 K 是 LQR 反馈增益由dlqr解出见src/LinearSystem.m构造函数。第 i 步的前向像集定义为Xpi(i) { x | (F G·K)·Ak^i · x 1 }它的含义是从 x 出发用 u Kx 走 i 步每一步都不会违反约束。i 0 时 Xpi(0) 就是约束集本身。③ 逐步求交集Xmpi Xpi(0) ∩ Xpi(1) ∩ Xpi(2) ∩ … 每一轮都用多面体的and运算把新的 Xpi(i) 交进当前结果集合像被削一样一轮轮变小。④ 收敛即停当某一轮交集的结果与上一轮完全相同新集合没有再削掉任何东西时算法终止。因为闭环特征值在单位圆内Xpi(i) 会单调收缩并趋于极限循环必然结束——这就是 MPI 迭代算法收敛的直觉依据。 一句话总结不断问哪些点走 i 步后还全程合法把答案全部求交交集收敛后的形状就是 Xmpi。tube-MPC 中终端集如何被侵蚀后使用带扰动的系统不能直接用原始约束。算法链条是先算扰动不变集 ZMRPIsrc/DisturbanceLinearSystem.m的compute_mrpi_set第 41–70 行实现了 Raković 算法对外逼近无限 Minkowski 和 Z W ⊕ AkW ⊕ Ak²W ⊕ …即从任意状态出发状态扰动保证被吸收的最小区域。侵蚀约束src/TubeModelPredictiveControl.m构造器中计算 Xc⊖Z 和 Uc⊖KZ给 tube 留出安全余量。算鲁棒终端集Xmpi_robust sys.compute_MPIset(Xc_robust, Uc_robust)即上一节的 4 步迭代只是换成了侵蚀后的约束。注入优化问题optcon.add_terminal_constraint(Xmpi_robust)把它作为末端时刻的附加不等式约束。对照上面的动图红色是 Xc⊖Z浅灰是终端集 Xmpi深灰的 Xf⊕Z 则是终端集撑回 tube 后的鲁棒区域——这正是终端集保证鲁棒可行的几何含义。动手验证3 个示例程序跑通全流程 你想验证什么运行文件你会看到什么tube-MPC 整体闭环含终端集example/example_tubeMPC.m标称轨迹沿 tube 进入终端集的动画扰动不变集 Z 的鲁棒性example/example_dist_inv_set.m随机扰动下状态始终被 Z 包住普通 MPC 对比基线example/example_MPC.m无 tube 的经典 MPC 轨迹环境依赖MATLAB 的 Optimization Toolbox 与 Control System Toolbox以及开源的 Multi-Parametric Toolbox 3提供Polyhedron、and、support等多面体运算是迭代算法能简洁落地的基础。速查表符号、算法与文件位置对应符号含义计算位置Xmpi / Xf终端集最大正不变集src/LinearSystem.m→compute_MPIsetZ扰动不变集MRPI 外逼近src/DisturbanceLinearSystem.m→compute_mrpi_setAk A BKLQR 闭环矩阵src/LinearSystem.m构造函数F、G 矩阵化约束集转不等式形式src/utils/convert_Poly2Mat.m终端约束注入优化末端时刻附加不等式src/TubeModelPredictiveControl.m构造器掌握了前向像集 逐步交集 不动点终止这一套迭代范式你不仅看懂了本项目的终端集算法也拿到了复用于其他鲁棒 MPC 场景的通用工具 【免费下载链接】robust-tube-mpcExample implementation for robust model predictive control using tube项目地址: https://gitcode.com/gh_mirrors/ro/robust-tube-mpc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考