模型预测控制(MPC)简介及matlab实现

这篇具有很好参考价值的文章主要介绍了模型预测控制(MPC)简介及matlab实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模型预测控制(MPC)简介及matlab实现

基本概念

全称:Model-based Predictive Control(MPC)—模型预测控制

本质:MPC利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出,然后与我们期望的系统输出做比较,得到代价函数,通过优化的方法,优化出未来控制量,使得代价函数最小。优化出来的控制量即算法的输出。

模型预测控制(MPC)简介及matlab实现

核心思想:以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programming)

控制输出:MPC控制器优化得到的控制输出也是系统在未来有限时间步的控制序列。 当然,由于理论构建的模型与系统真实模型都有误差,所以,实际上更远未来的控制输出对系统控制的价值很低,故MPC仅执行输出序列中的第一个控制输出。

模型分类

  • 机理模型
  • 基于数据的模型,例如用神经网络训练一个modle,使用基于数据的模型的MPC可以结合model based RL使用

预测:根据已有模型,已经未来有限时间步的控制序列,预测出未来的系统状态

控制:优化的控制量,是一个未来有限时间步的控制序列

预测区间(Predictive Horizon):
对于一般的离散化系统,在k时刻,我们可以测量出系统的当前状态y(k),再通过优化计算得到u(k),u(k+1),u(k+2),u(k+j),根据模型与控制量,得到系统未来状态的估计值y(k),y(k+1),y(k+2),y(k+j)。

其中系统未来状态的估计值y(k),y(k+1),y(k+2),y(k+j)这部分就称为预测区间的系统预测值,指的是一次优化后预测未来输出的时间步的个数

控制区间(Control Horizon)
将控制估计的部分称为控制区间,通过优化计算得到u(k),u(k+1),u(k+2),u(k+j)这部分就称为控制区间的控制量,
在得到最优输入之后,我们只施加当前时刻的输入u(k),即控制区间的第一位控制输入

区间参数配置:
过小的控制区间,可能无法做到较好的控制,而较大的控制区间,比如与预测区间相等,则会导致只有前一部分的控制范围才会有较好的效果,而后一部分的控制范围则收效甚微,而且将带来大量的计算开销。

约束:对于约束,一般分为:

  • Hard约束:物理性质的约束,不可以违背,例如方向盘的转向,刹车的深度
  • Soft约束:软件约束,可以违反,例如最大的速度

MPC 优点

  • 善于处理多输入多输出系统(MIMO)
  • 可以处理约束,如安全性约束,上下阈值
  • 是一种向前考虑未来时间步的有限时域优化方法(一定的预测能力)

控制框图:
模型预测控制(MPC)简介及matlab实现

MPC算法 整体流程

模型预测控制在k时刻共需三步

  • 第一步:获取系统的当前状态;

  • 第二步:基于u(k),u(k+1),u(k+2),u(k+j)进行最优化处理,代价函数为模型预测控制(MPC)简介及matlab实现
    其中EN 表示误差的终值,也是衡量优劣的一种标准。

  • 第三步:只取u ( k )作为控制输入施加在系统上。

在下一时刻重复以上三步,在下一步进行预测时使用的就是下一步的状态值,我们将这样的方案称为滚动优化控制(Receding Horizon Control)。

数学建模

线性模型

当模型是线性的时候,MPC的设计求解一般使用二次规划方法。
设线性模型为以下形式:
模型预测控制(MPC)简介及matlab实现
假定未来m步的控制输入已知u(k),u(k+1),u(k+2),u(k+m),根据以上模型与输入,我们可以计算未来m步的状态:
模型预测控制(MPC)简介及matlab实现
将上面m步写成矩阵向量形式:
模型预测控制(MPC)简介及matlab实现
其中,
模型预测控制(MPC)简介及matlab实现
上式B中的下三角形式,直接反映了系统在时间上的因果关系,即k + 1时刻的输入对k 时刻的输出没有影响,k+2时刻的输入对k和k+1时刻没有影响。

假定参考轨迹为
模型预测控制(MPC)简介及matlab实现
则MPC的一个简单的目标代价函数如下:
模型预测控制(MPC)简介及matlab实现
模型预测控制(MPC)简介及matlab实现
uTRu 这一项是为了让控制输入不会太大,因此代价函数中添加了一项对控制量的约束。

将状态方程带入代价函数,变量仅剩u,以上最优化问题可用二次规划方法求解,得到满足目标代价函数的最优控制序列文章来源地址https://www.toymoban.com/news/detail-402503.html

MPC与PID的区别

  1. PID控制器不具有“前瞻性”:参与计算的各个量,有当前的 ,上个控制周期的 ,以及之前所有的 累计和,没有未来的 。
  2. PID属于无模型控制。PID仅仅通过目标和当前状态的差距,以及三个控制参数,就输出控制量

Matlab实现MPC函数

function [M,C,Q_bar,R_bar,G,E,H,U_k] = MPC_Zero_Ref(A,B,N,x_k,Q,R,F)
 
%%%%%%%%%%%建立一个以0为参考目标的MPC求解函数
%%%%%%%%%%%其中,状态矩阵A,输入矩阵B系统维度N,初始条件x_k,权重矩阵Q,R及终端误差矩阵F为输入
%%%%%%%%%%%输出中U_k为所求控制器,其余为简化过程中引入的中间变量
 
n=size(A,1); %A是n×n矩阵,求n
p=size(B,2); %B是n×p矩阵,求p
M=[eye(n);zeros(N*n,n)];%初始化M矩阵,M矩阵是(N+1)n × n的,
                        %它上面是n × n个“I”,这一步先把下半部分写成0
C=zeros((N+1)*n,N*p);%初始化C矩阵,这一步令它有(N+1)n × NP个0
%定义M和C
tmp=eye(n);%定义一个n × n的I矩阵
for i=1:N%循环,i从1到N
    rows = i*n+(1:n);%定义当前行数,从i×n开始,共n行
    C(rows,:)=[tmp*B,C(rows-n,1:end-p)];%将C矩阵填满
    tmp=A*tmp;%每一次将tmp左乘一次A
    M(rows,:)=tmp;%将M矩阵写满
end
%定义Q_bar
S_q=size(Q,1);%找到Q的维度
S_r=size(R,1);%找到R的维度
Q_bar=zeros((N+1)*S_q,(N+1)*S_q);%初始化Q_bar为全0矩阵
for i=0:N
    Q_bar(i*S_q+1:(i+1)*S_q,i*S_q+1:(i+1)*S_q)=Q;%将Q写到Q_bar的对角线上
end
Q_bar(N*S_q+1:(N+1)*S_q,N*S_q+1:(N+1)*S_q)=F;%将F放在最后一个位置
 
%定义R_bar
R_bar=zeros(N*S_r,N*S_r);%初始化R_bar为全0矩阵
for i=0:N-1
    R_bar(i*S_r+1:(i+1)*S_r,i*S_r+1:(i+1)*S_r)=R;
end
 
%求解
G=M'*Q_bar*M;%G
E=C'*Q_bar*M;%E
H=C'*Q_bar*C+R_bar;%H
%最优化
f=(x_k'*E')';%定义f矩阵
U_k=quadprog(H,f);%用二次规划求解最优化U_k
end

到了这里,关于模型预测控制(MPC)简介及matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB - 利用非线性模型预测控制(Nonlinear MPC)来控制四旋翼飞行器

    本示例展示了如何利用非线性模型预测控制(MPC)为四旋翼飞行器设计一个跟踪轨迹的控制器。 四旋翼飞行器有四个向上的旋翼。从四旋翼飞行器的质量中心出发,旋翼呈等距离的正方形排列。四旋翼飞行器动力学数学模型采用欧拉-拉格朗日方程 [1]。 四旋翼飞行器的十二种

    2024年01月22日
    浏览(69)
  • 【轨迹跟踪】模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】

    获取代码方式1: 完整代码已上传我的资源:【轨迹跟踪】基于matlab模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab物理应用(初级版) 备注: 点击上面蓝色字体 付费专栏Matlab物理应用(初级

    2024年02月21日
    浏览(47)
  • 【自动驾驶】模型预测控制(MPC)实现轨迹跟踪

    bilibili的DR_CAN讲解的MPC模型预测控制器 知乎上一个比较通俗易懂的解释 模型预测控制 轨迹跟踪模型预测控制(MPC)原理与python实现 DR_CAN笔记MPC MPC控制笔记 模型预测控制(MPC)的核心思想就是以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programmin

    2024年02月02日
    浏览(53)
  • 模型预测控制(MPC)解析(一):模型

    1.1 预测控制的日常应用         模型预测控制的设计目标是计算未来控制变量u的轨迹,以优化未来的系统输出y。优化过程在一个有限的时间窗口进行,并且利用优化时间窗口开始时的系统信息进行优化。为了理解预测控制的基本思想,以一个日常工作为例来进行说明。

    2024年02月02日
    浏览(48)
  • mpc模型预测控制原理详解

    本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以相结合地进行学习。 MPC算法主要包括以下三步: 估计/测量读取当前系统状态

    2023年04月14日
    浏览(46)
  • MPC(模型预测控制)-Simulink仿真

    一、为什么使用MPC控制器? ① MPC可以处理多输入耦合控制多输出的问题: ② MPC可以处理对于控制量有约束的问题 比如,驾驶汽车的时候,汽车速度和转角都有上限 ③ MPC具有预测效果 即MPC考虑的不是根据当前参考值进行控制,而是根据预测时间内的参考去预测当前的控制量,

    2024年01月25日
    浏览(44)
  • 路径跟踪算法之模型预测控制(MPC)跟踪

    模型预测控制(以下简称 MPC)是一种依赖于系统模型进行数学优化的复杂控制器。它利用优化算法计算有限时间范围内一系列的控制输入序列,并优化该序列,但控制器仅执行序列中的第一组控制输入,然后再次重复该循环。MPC 主要分为 3 个关键步骤:模型预测、滚动优化

    2024年01月23日
    浏览(52)
  • 机器人模型预测控制MPC(model predictive control)

    当前控制动作是在每一个采样瞬间通过求解一个有限时域开环最优控制问题而获得。过程的当前状态作为最优控制问题的初始状态,解得的最优控制序列只实施第一个控制作用。这是它与那些使用预先计算控制律的算法的最大不同。本质上模型预测控制求解一个开环最优控制

    2024年02月07日
    浏览(47)
  • 【模型预测】A-4D战斗机姿态控制的模型预测控制方法(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 飞行器姿

    2024年02月06日
    浏览(42)
  • 使用模型预测控制对USV进行自主控制(Matlab代码实现)

        目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码   无人船(unmanned surface vehicles,USV)是一种船端无人操控的水面船舶,近年来受到了广泛关注。如何实现自主航行是USV面临的核心问题,而设计一种具有精确航迹控制能力的运动控制器是解决该问题的基础。   

    2023年04月09日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包