模型预测控制_模型预测控制(MPC)算法之一MAC算法

36a9beaabce41506b858f671e13cf2dc.png

引言

随着自动驾驶技术以及机器人控制技术的不断发展及逐渐火热,模型预测控制(MPC)算法作为一种先进的控制算法,其应用范围与领域得到了进一步拓展与延伸。目前提出的模型预测控制算法主要有基于非参数模型的模型算法控制(MAC)和动态矩阵控制(DMC),以及基于参数模型的广义预测控制(GPC)和广义预测几点配置控制(GPP)。

虽然模型预测控制算法的种类有多种,但始终离不开这三大要素[4]:

  1. 预测模型——对未来一段时间内的输出进行预测;
  2. 滚动优化——滚动进行有限时域在线优化(最优控制);
  3. 反馈校正——通过预测误差反馈,修正预测模型,提高预测精度。

本篇以MAC算法作为开篇,对MPC算法的三大要素的流程进行分析,从而加深对模型预测控制算法的了解。

MAC算法

MAC作为一种非参数模型,以系统脉冲响应作为内部预测模型,通过过去与当前的输入输出状态,根据系统的预测模型来预测系统未来的输出状态。其开环预测和闭环预测的框图如下所示:

a97c382343fec23e22f1f7b9085b8272.png
模型算法控制框图

通过上述框图可知,MAC算法主要由图中的四个模块所组成,各模块所代表的意义如下所示。当期望输入为

时,获取
时刻下的控制输入
,首先得经过模块(2)求取此时的参考输出
,并通过模块(1)求取模型输出
,通过闭环反馈校正(4)求取预测输出
,最终通过模块(3)算出此时的最优控制率
。注明:不讨论开环预测的情况。
  1. 预测模型;
  2. 参考轨迹;
  3. 滚动优化;
  4. 反馈校正;

一、预测模型

——————

的求取

对于线性系统,若已知其单位脉冲响应的采样值

,
,...,
,则利用离散卷积公式,可知系统的预测模型描述可近似地用一个有限项卷积表示:

其中,

表示系统的模型预测输出;
表示系统的控制输入;
表示系统的模型向量,可通过
系统辨识的方法得到[1]。

46ebd41d250522e1de50aa41ea2c770a.png
脉冲响应模型

二、参考轨迹

——————

的求取

在MAC中,控制系统的期望输出是由现时实际输出

出发且向设定值
光滑过度的一条参考轨迹规定的。在
时刻的参考轨迹可由未来时刻的值
来描述。其表征形式如下:

其中,

为参考输出;
为柔化系数,且

三、滚动优化

——————

的求取

若有《最优控制》的基础,不难理解,模型预测控制(MPC)的滚动优化问题实际上是以一定的优化准则来获取最优的控制输入

。不失一般性,采用如下的优化准则:

其中,

为优化时域;
为控制时域,一般有
为输出跟踪加权系数;
为输入加权系数;
为预测输出

不难发现,若要根据上述的优化准则获取最优控制输入

,还必须知道其预测输出
。因此,针对
的求取,引入了模型预测控制(MPC)的第三个要素——
反馈校正

四、反馈校正

——————

的求取

闭环预测为例,

时刻系统的闭环预测输出可记为

其中,

;

为反馈系数矩阵 ;

五、最优控制率

由前面的分析可知,根据预测模型

、参考轨迹
、闭环预测
即可求解出性能指标
下的无约束MAC最优化控制率:

其中,

最优即时控制量为:

其中,

小结

通过分析MAC算法的过程可以大致了解模型预测控制(MPC)的实现过程,但在具体设计时,还有一些设计细节需要注意,如控制时域、预测时域长度的选择,权重矩阵系数的调节等都是需要注意的。

参考文献

[1] 模型预测控制及Matlab实现.

[2] 模型预测控制介绍.

[3] 模型预测控制之参数选择.

[4]预测控制之MAC控制.

[5]广义预测控制GPC.

[6] 预测控制-席裕庚.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于dde的vb和matlab,基于VB和DDE技术的组态王通信协议转换

组态王是一种通用的工业监控上位机软件,它界面友好、易学易用、即便是不懂编程的工程人员也能在短时时间内开发出界面精美,符合行业标准且高效的上位机监控程序,因此深受工程师们的喜爱,然而组态王软件的上下位机通信协议是固定的切不可改变,这就给一些使用“自拟定协议”和“非…

pythonjava解释xml_Python解析XML文档

解析XML主要用到pytohn自带的XML库,其次还是lxml库XML结构,先以一个相对简单但功能比较全的XML文档为例dive into markcurrently between addictionstag:diveintomark.org,2001-07-29:/2009-03-27T21:56:07ZMarkhttp://diveintomark.org/Dive into histo…

红旗linux安装oracle,Redflag Linux安装Oracle 10gR2 RAC记事

Redflag Linux安装Oracle 10gR2 RAC记事Kamus遇到过:SQL> startup nomountORA-27102: out of memoryLinux-x86_64 Error: 28: No space LEFT ON device这和内核参数 shmall 有关,修改设置 kernel.shmall 16475728 。后来离开没多久,客户打…

springboot开启debug日志_SpringBoot 如何优雅的打印日志?

一、打印日志注意事项1、使用 Slf4j 注解这个代码相信大家都很熟悉,你是否曾经看到或者自己因 copy 而 没有改变“当前类名”?如果你们项目用到 lombok ,可以在类上使用 Slf4j 注解,省去手动写这行代码。2、不建议使用的输出为什么…

oracle导出表中某天数据命令,Oracle数据库使用命令行导入导出数据表及数据内容(本地、远程)...

一、本机导入导出1、数据库导出命令,导出用户userA下的表结构和数据:exp 用户名/密码服务名 owner用户名 file导出文件指定存储路径 fully2、数据库导入命令,将userA用户下的表结构和数据导入到用户userB下:imp 用户名/密码服务名 fromuser导…

python手机话费_查询话费订单详情示例代码

#!/usr/bin/python# encoding:utf-8import urllib2, json, urllib, hashlib# 3、获取订单详情data {}data["appkey"] "your_appkey_here"data["orderno"] "201605250929585085725"data["outorderno"] "77888855888…

windows 映射文件会释放内存吗_Windows系统共享内存管理

一 进程逻辑空间 物理空间​如上图所示,每个进程都有自己的逻辑空间,这些逻辑空间,会被映射到具体的物理空间中。每个进程的逻辑空间都是彼此隔离,相互独立不受干扰的。但是他们都会被映射到同一个物理空间去,当其所映…

linux 文件的组织,Linux文件组织和目录结构

资料:https://www.shiyanlou.com/courses/running1 Linux目录结构说明可以使用tree来查看目录结构sudo apt-get install tree 安装treetree / 查看根目录的结构将目录定义为四种交互作使用的形态:2 路径. 表示当前目录.. 表示上一级目录 - 表示上一次所在…

python 将列表中的字符串转为数字_python 将列表中的字符串转为数字

本文实例讲述了python中列表元素转为数字的方法。分享给大家供大家参考,具体如下:有一个数字字符的列表:numbers [1, 5, 10, 8]想要把每个元素转换为数字:numbers [1, 5, 10, 8]用一个循环来解决:new_numbers [];fo…

linux perl 安装目录,linux-将Perl模块安装到特定位置

我有几台运行Perl程序以及其他程序和工具的Linux机器.我想使所有机器之间的所有工具保持同步,因此我已经在一台机器(主)和另一台机器之间共享了/usr/local目录.现在,我想在/usr/local /< modules的路径>中使所有Perl模块及其依赖项保持同步.我已经找到了local::lib模块,但…

python 降维lda算法的使用_sklearn LDA降维算法

sklearn LDA降维算法LDA(Linear Discriminant Analysis)线性判断别分析&#xff0c;可以用于降维和分类。其基本思想是类内散度尽可能小&#xff0c;类间散度尽可能大&#xff0c;是一种经典的监督式降维/分类技术。sklearn代码实现#codingutf-8import pandas as pdimport matp…

linux 命令 语法,linux常用命令及语法

mkdir、rmdirmkdir命令用来建立新的目mkdir命令用来建立新的目录&#xff0c;rmdir用来删除已建立的目录。rm这个命令是用来删除文件的。rm命令常用的参数有三个&#xff1a;-i,-r,-f。删除既有文件或目录之前先询问用户&#xff0c;删除一个名字为test的一个文件&#xff1a;r…

jeecg 导出的excel不能使用公式_微软:Excel公式是世界上使用最广泛的编程语言...

喜欢就关注我们吧&#xff01;文|一君微软近日推出了一项 Excel 公式构建的新功能 LAMBDA&#xff0c;正则测试阶段。LAMBDA 允许使用 Excel 自身的公式语言自定义功能&#xff0c;而过去&#xff0c;Excel 中需要通过 JS 等语言编写自定义函数。同时&#xff0c;LAMBDA 还可以…

linux 查找tomcat目录,linux下通过tomcat访问某路径下的文件

背景&#xff1a;linux服务器上有个日志目录&#xff0c;要通过界面访问。之前用Apache实现的&#xff0c;现在安全漏洞检查需要升级Apache&#xff0c;但是安装之路犹如西天取经&#xff0c;各种缺文件&#xff0c;各种报错&#xff0c;一直没搞定。然后决定用tomcat实现该功能…

python中的画布控制_使按钮在画布上工作(tkinter)

你的代码需要认真的重组。在这里有一些东西可以用来添加矩形。你不需要在cd2>中创建一个cd2>的集合&#xff0c;这样你就不需要在cd2>中创建一个的集合。在from tkinter import *import randomroot Tk()class Recta:def __init__(self, height60, width80):self.heig…

voip 音频采集时间_蓝牙音频续航监测系统展会现场演示

|点击【美格信】关注☝大家好&#xff0c;我是美格信公众号主编&#xff1a;小M&#xff0c;今天的2020(秋季)亚洲蓝牙耳机展上&#xff0c;我们美格信现场展示了发布的新品-MAGNUM麦金纳蓝牙音频续航监测系统。不过有很多小伙伴因为时间问题&#xff0c;没机会来现场参观&…

linux 运行scrapy,python 文件 运行 scrapy

写了一个scrapy&#xff0c;程序可以跑&#xff0c;没有任何问题。爬下30个网站的body存入json文件&#xff0c;并且保存为test.json如果test.json存在就保存到一个新建的test1.json新建了一个python文件叫check.py&#xff0c;对比两个文件的hash值&#xff0c;如果有不一样&a…

linux的硬件系统管理,Linux 系统硬件管理的基础知识(四)

以下主要介绍我的***次安装Linux系统遭遇&#xff0c;以及怎么度过这个遭遇的&#xff0c;希望对大家有所帮助。不喜欢的可以略过。以下接《Linux 系统硬件管理的基础知识(三)》。四、关于存储设备的不同的表示方法的应用&#xff1b;1、/dev/hd[a-z] 表示方法的应用1)用于moun…

大整数减法c语言_3.2 C语言运算符和表达式

01基本的算术运算符1、正号运算符2、-负号运算符3、*乘法运算符4、/除法运算符5、%求余运算符6、加法运算符7、-减法运算符读者应该特别注意和-在不同情况下的含义02自增、自减运算符1、i&#xff0c;--i在使用i之前&#xff0c;先是i的值加&#xff08;减&#xff09;12、i&am…

如何查看linux 是否安装软件包,linux 查看软件包是否安装 linux查看软件包

Linux下怎样检查,如何查看某软件包是否已经安装1、rpm包安装的&#xff0c;可以用rpm -qa看到&#xff0c;如果要查找某软件包是否安装&#xff0c;用 rpm -qa | grep “软件或者包的名字”。rpm -qa | grep ruby2、以deb包安装的&#xff0c;可以用dpkg -l能看到。如果是查找指…