模型预测控制 (MPC) MATLAB 仿真项目
项目介绍
本项目是一个基于 MATLAB 开发的模型预测控制(Model Predictive Control, MPC)系统仿真平台。项目以典型的二阶质量-弹簧-阻尼动力学系统为受控对象,通过建立离散化状态空间模型,实现了包含状态预估、滚动优化和反馈校正的完整 MPC 控制流程。该仿真环境特别针对工业控制中常见的输入饱和、控制增量限制以及输出范围约束进行了建模,旨在为控制理论研究和参数调优提供直观的数值实验工具。
功能特性
- 动力学系统建模:内置二阶质量-弹簧-阻尼系统的连续时间状态空间方程,并支持自动离散化。
- 增广状态空间实现:通过引入状态增广技术,将输出变量与状态增量结合,构建包含积分作用的预测模型,有效消除闭环系统的稳态误差。
- 多约束滚动优化:在每个采样时刻动态求解二次规划(QP)问题,能够同时处理控制量绝对值限制、控制增量限制以及输出位移上限约束。
- 鲁棒性与动态跟踪:仿真模拟了参考轨迹在运行过程中发生阶跃变化的情形,并加入了高斯测量噪声,用以验证控制器的跟踪性能和抗干扰能力。
- 性能指标量化:系统自动计算平均绝对误差(MAE)、最大超调量、QP 求解器迭代次数以及闭环极点分布,提供详尽的稳定性分析报告。
- 数据可视化:生成的图形化界面包含受控变量时域响应、控制力轨迹以及优化算法收敛性分析等多个维度。
运行环境与系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:
- Control System Toolbox(用于系统建模与离散化)。
- Optimization Toolbox(用于调用 quadprog 求解二次规划问题)。
- 硬件要求:标准个人计算机,具有足够的内存以支持控制矩阵运算。
实现逻辑说明
- 系统离散化:使用零阶保持器方法将连续状态空间模型 (Ac, Bc, Cc, Dc) 转换为采样周期 Ts 为 0.1s 的离散模型。
- 模型增广:构建增广状态向量 [Δx(k); y(k)],并将控制增量 Δu(k) 作为新的控制输入,从而在预测结构中嵌入积分特性。
- 预测矩阵构造:通过循环迭代生成预测矩阵 F 和 Phi,建立未来 P 个时刻的预测输出与当前增广状态及未来 M 个时刻控制增量之间的线性映射关系。
- 二次规划表述:将 MPC 目标函数转化为标准的二次型 min 0.5 * ΔU' * H * ΔU + f' * ΔU。其中矩阵 H 包含系统权重系数 Q 和 R,f 包含当前状态与参考轨迹的偏差。
- 约束映射:将物理约束(如控制力 ±5N,控制增量 ±1N)转化为线性不等式 A_cons * ΔU ≤ b_cons。对于输出约束,通过预测矩阵将其映射为对当前优化变量 ΔU 的限制。
- 滚动时域求解:在每个时间步,调用 quadprog 函数的 active-set 算法求解最优 ΔU,仅将第一个控制增量作用于系统,并在下一采样时刻重复此过程。
- 反馈与校正:获取系统输出后应用高斯噪声,更新增广状态,完成闭环反馈。
关键算法分析
- 权重矩阵设计:利用 Kronecker 积 (kron) 构造时域上的加权矩阵 Q_bar 和 R_bar,通过调整 Q_weight 与 R_weight 的比例,可以平衡跟踪精度与控制能量消耗。
- 稳定性处理:在 QP 求解过程中,如果 exitflag 返回负数(求解失败),程序设计了安全策略,将当前控制增量置零以维持系统运行。
- 对称化修正:在构造 Hessian 矩阵 H 时,通过 (H + H') / 2 确保矩阵的数值对称性,提高二次规划问题的求解稳定性。
- 下三角矩阵转换:在处理控制量绝对值约束时,利用下三角矩阵 (tril) 将未来各步的控制增量累加映射为绝对控制量,从而实现对 u(k) 的实时监控。