ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从多面体到quadprog:robust-tube-mpc最优控制问题QP构造的3步拆解

从多面体到quadprog:robust-tube-mpc最优控制问题QP构造的3步拆解 从多面体到quadprogrobust-tube-mpc最优控制问题QP构造的3步拆解【免费下载链接】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**开源示例库它的核心思路很清晰把带约束的最优控制问题整理成标准二次规划QP再交给quadprog求解。本文用3 步拆解多面体约束 → QP 矩阵的完整链路帮助新手快速读懂源码不再被 H、C_eq、C_ineq 这些符号绕晕。 项目速览tube-MPC 到底在做什么先建立整体印象再进源码不迷路目标系统受有界扰动时让真实状态始终不越界。做法是算出一条名义轨迹并用扰动不变集 Z 在周围留出一个管子tube名义轨迹进得越保守真实轨迹就越安全。依赖MATLAB 的 Optimization Toolbox提供quadprog、Control System Toolbox以及 Multi-Parametric Toolbox 3提供Polyhedron多面体类型。入口示例example/example_MPC.m 是普通 MPCexample/example_tubeMPC.m 是带扰动的 tube-MPC 动画演示example/example_dist_inv_set.m 专门展示扰动不变集 Z 的封闭性。核心源码src/OptimalControler.m、src/TubeModelPredictiveControl.m、src/ConstraintManager.m。下面开始 3 步拆解 QP 的构造过程。 第1步多面体约束 → 矩阵不等式整个仓库里所有不等式约束都用凸多面体表达状态约束Xc由顶点围成比如矩形输入约束Uc由上下界围成一维时只有 2 个顶点。关键工具是 src/utils/convert_Poly2Mat.m它把Polyhedron的隐式描述A·x ≤ b逐行除以右端b统一成F·x G·u ≤ 1的形式。这样约束右端全为 1后面拼块对角阵时就不用再处理每行不同的右端常数——这是多面体转 QP 的第一块基石。 第2步决策变量与 QP 标准型组装OptimalControler.m 的构造函数完成了 QP 的三件套组装。决策变量是拼成长向量的s : [x(0)…x(N), u(0)…u(N-1)]维度为nx*(N1) nu*N对应三类 QP 要素QP 要素含义构造方式目标函数sH·s状态/输入二次代价用 LQR 权重 Q、R 与最优代价矩阵 P 拼成块对角阵 H等式C_eq1·s C_eq2系统动力学每步A·x(k) − x(k1) B·u(k) 0叠成矩阵不等式C_ineq1·s ≤ C_ineq2状态/输入约束第1步的 F、G 按时间步做块对角复制右端为全 1 向量值得注意的是约束并非写死src/ConstraintManager.m 用键名 → (矩阵, 右端)的映射来托管等式与不等式随时可以增删。例如终端约束最大正不变集 Xmpi、初始集合约束tube-MPC 里是x_init Z都是在求解前动态 push 进去的这正是模块化 QP 构造的精髓。 第3步交给 quadprog 一行求解OptimalControler.m 的 solve 方法 把管理器里的所有等式、不等式纵向合并然后一行调用quadprog(H, [], C_ineq1, C_ineq2, C_eq1, C_eq2, [], [], [], options)求解器返回最优向量后reshape还原出x_seq和u_seq两条轨迹MPC 只取第一步输入u(0)执行——这就是滚动时域。 延伸从普通 MPC 到鲁棒 tube-MPC理解了 QP 主线后src/TubeModelPredictiveControl.m 只是做了两件事收紧约束用扰动不变集 Z 对约束做多面体减法Xc⊖Z、Uc⊖K·Z后再构造上面的 QP终端集也用收紧后的约束计算最大正不变集。叠加反馈求解后实际执行u u_nominal K·(x − x_nominal)名义轨迹负责优化反馈负责抗扰。其中 Z 是无穷级 Minkowski 和W ⨁ A_k·W ⨁ A_k²·W …解析计算不可行src/DisturbanceLinearSystem.m 在构造时用 Raković 的外逼近算法迭代求出一个管得下的近似 Z——想直观感受 Z 的封闭性跑一下example_dist_inv_set.m即可。✅ 上手清单先跑 example/example_optimalcontrol.m它只有 20 来行能完整看到系统 约束多面体 → OptimalControler → solve的 QP 全流程。再跑example_tubeMPC.m观察动画对照show_prediction里的颜色图例理解 Xc、Xc⊖Z、tube 的包含关系。注意N_horizon别设太小预测时域内轨迹若进不了终端的 MPI 集QP 会直接不可行。需要本地代码时执行git clone https://gitcode.com/gh_mirrors/ro/robust-tube-mpc一句话总结多面体转矩阵第1步、块对角组装标准型第2步、quadprog一行求解第3步——掌握这条链路tube-MPC 的鲁棒性魔法也就不神秘了。【免费下载链接】robust-tube-mpcExample implementation for robust model predictive control using tube项目地址: https://gitcode.com/gh_mirrors/ro/robust-tube-mpc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表