回顾所掌握的技能,发现之前更多的是在研究传统领域的知识,比如鲁棒控制H∞/μ、线性控制(PID、LQR、ADRC)、非线性控制(滑模、模糊)以及传统优化方法(粒子群、差分进化),发现还是需要补一些新兴领域的知识,如深度强化学习---新兴神经网络---模型预测控制等领域的知识,后续打算重点学习这三块,下一篇小论文就往人工智能方向靠。
1. 模型预测控制概述
MPC的核心思想是通过预测模型来预估系统的未来行为,并通过优化算法找到一个控制序列,使得在未来一段时间内(称为预测时域)某个性能指标达到最优。在这个过程中,通常会将控制问题转化为一个二次规划(Quadratic Programming, QP)问题来求解。
MPC依赖精确模型 ,本质是多步预测+滚动优化 ,每一步都要实时求解 QP 问题 ,广泛应用于存在约束、耦合、性能权衡或者多目标优化场景。
下图展示了基本的MPC控制环路,控制器接收来自模型的测量输出和扰动,并利用内部预测模型估算状态,并计算一系列控制动作,使成本函数在给定视野内最小化。一般来说,这个成本函数通常是关于预测控制动作与参考轨迹之间误差的函数,加上对控制动作变化量的惩罚。这种形式的问题可以很自然地表述为一个QP问题。

2. MPC的设计流程
在最简单的情形下(也称为传统 MPC 或线性 MPC),即被控对象(plant)和约束均为线性、代价函数为二次型时,开发 MPC 控制器的一般工作流程包括以下步骤:
指定被控对象→ 定义信号类型 → 创建 MPC 对象 → 闭环仿真 → 优化设计 → 加速执行 → 部署控制器

指定被控对象:对于线性MPC来说,需为离散化的线性模型。
定义信号类型:MPC需要对所有输入输出通道指定信号类型,划分为可观/不可观和可控/不可控:
- MV:可调输入、不反馈、可控。
- MD:可测扰动、可反馈、不可控。
- UD:不可测扰动、不可反馈、不可控。
- MO:可测输出、必须反馈、不可控。
- UO:不可测输出、不可反馈、不可控。
创建MPC对象:指定采样时间、预测时域、控制时域、约束、代价函数权重、扰动与噪声模型。
MPC闭环仿真:MATLAB函数 / Simulink仿真 / MPC工具箱。
优化设计:初步闭环仿真后,通常需通过调整控制器参数并测试不同仿真场景来优化设计。
控制非线性与时变被控对象:自适应MPC、线性时变MPC、增益调度MPC、非线性MPC。
3. 仿真示例
考虑如下带扰动的二阶弹簧阻尼系统
m x ¨ + c x ˙ + k x = u + d m\ddot{x}+c\dot{x}+kx=u+d mx¨+cx˙+kx=u+d其中,x为位移;u为控制输入;m为质量;c为阻尼系数;k为弹簧刚度;d为加在控制输入端的外部扰动。
目标:通过设计MPC控制器,实现系统的正弦参考信号跟踪控制。
MPC设计:
- 输入的u设为MV,输入的d设为UD,输出的位置x设为MO,输出的速度设为不可观测UO。
- 预测时域
150步,控制时域30步,控制输入限制[-10, 10],控制输入导数限制[-10, 10],输出权重只关心位置跟踪误差即[50, 0],控制输入及其变化导数设为较小的量0.01。 - is done:仿真步长0.01s,仿真时间20s,参考信号正弦
2 * sin(0.5 * t),系统初始状态x0 = [0.4; -0.1];,未测量的输入扰动信号默认积分器形式。
搭建的simulink仿真程序如下所示:
仿真验证
对正弦信号的跟踪效果如下所示:
观察曲线可得,基本实现了正弦信号的跟踪,跟踪效果较好,稳态误差约为0.06。
总结
综上所述,MPC控制器基本实现了正弦信号的跟踪控制,动态响应好,控制精度高。相比于之前的强化学习控制来说:
MPC优点在于能够严格输入/状态约束,控制性能优秀,设计复杂度较低、有稳定性保证、可解释性强 。
MPC缺点在于依赖精确模型,模型误差影响大,不能处理黑箱系统,鲁棒性与适应性差(需依赖自适应MPC)。