基于估计的无约束预测控制

1.引言

基本上这两个部分都是在线性理论的框架下,利用状态空间法来建模、求解控制律。状态空间模型在理论分析上具有很强的优越性,但实际应用中能直接准确且经济地获取系统状态并不容易。有些状态,尤其是温度(如火箭喷口温度等)只能间接估计,因此我们可以使用状态观测器来重构一个易于实现的系统来模拟原系统的状态。

具体的做法是,先利用原系统可以测量的变量,如系统可测输入输出,使得在一定条件下满足估计的状态与原状态渐进等价,随后利用观测器重构的系统设计控制律。

观测器收敛条件

在设计观测器的时候,首先要判断是否存在观测器。这里以全维观测器为例,观测器重构系统与原系统维度相同。设系统可测量输出为:

设计如下估计器:

  若估计器的矩阵对(A,Cm)可测,即全部不能观阵型稳定,则状态观测器存在,可以通过设计L矩阵使(A-LCm)渐进稳定来达到观测器收敛条件。进一步,若(A,Cm)能观,即全部模态在输出端可测,还可以通过设计L任意配置(A-LCm)的极点来控制估计误差的衰减速度,道理和任意配置系统极点设计状态反馈控制器是一样的,两个问题是对偶关系。

2.算法设计

基于估计的算法和原算法基本相同,只是能利用的只有测量值ym和估计值。在预测过程中,用估计值作为预测系统未来状态的起点:

得到的预测方程、控制律均与之前相同:

Ep用到的是估计值,估计值是由测量值代入估计器公式得到。而估计的状态又带入Yp与参考R做平方差形成MSE误差当作待优化值,因此一定要保证L的设计良好才可以实现算法。

3.闭环系统分析

仅对稳定性进行分析,其余包括抗干扰性能和无静差跟踪性能与无约束预测控制相同。

考虑可测和不可测误差,被控系统如下:

这里已经将Δu(k)带入,注意这里是原系统,我们用由估计器设计出来的控制律作用到了原系统上(估计器只是为了模拟原系统行为来获得原来很难获得的状态)。而且,在引入了估计器之后,系统变得更加复杂了,基于估计设计的控制律能否控制原系统,新的系统能否稳定都是需要分析的。

将ym(k)=Cmx(k)和控制律带入估计器:

现在重新定义带状态观测器系统的状态向量:

则:

新的系统矩阵为:

为了满足控制系统设计的基本要求,即名义渐进稳定。我们必须设计控制器让一个标称系统在控制输入的作用下渐进稳定。标称系统(也叫名义系统)是没有任何外部扰动和模型失配的理想系统,与名义稳定相对的是鲁棒稳定。要达到名义稳定需要让这个新的系统矩阵的所有特征根的模长小于一。我们需要验证这个无约束MPC闭环系统是否满足分离原理。

我们希望能将系统满足分离原理,这样意味着闭环系统的极点由原系统在控制律作用下的极点和估计器的极点组成,状态观测器(估计器)的引入对原系统在控制律作用下的极点不影响,这样就可以分别独立设计两个系统的极点。只要两个子系统的极点都达到稳定要求,整合起来的新系统也满足稳定要求。

按道理来讲,基于观测器反馈控制的线性系统是满足分离原理的。之前我们得到的MPC控制律也可以看作一种状态反馈控制律,现在来验证一下是否真的满足分离原理。为此,我们希望找到一个代数等价的系统,这个系统的系统矩阵是个广义上三角矩阵,且对角线上的元素正好分别是原系统在控制律作用下的系统矩阵(参考上一篇结果)和观测器的系统矩阵(A-LCm)。

我们知道,系统的状态变量是人为选择的,一个系统可以定义不同状态。同一个系统可以有很多基于状态空间描述的数学模型。但对于一个系统,不同的状态之间有着明确的数学变换关系,即非奇异线性变换关系:

  存在一个可逆矩阵P,满足x1 = Px2。

  因为状态需要完全表征系统动力学行为,所以不同的状态却包含相同的系统信息,自然满足线性变换的关系。反过来利用这个性质,我们可以将已知状态变换成其他状态,从而得到系统新的数学描述,即新的状态空间方程。我们称这样新旧两种系统(其实是系统描述)是代数等价的。两个代数等价系统的系统参数矩阵满足这样的变换关系:

A2 = PA1P-1 B2 = PB1 C2=C1P-1 D2 = D1 , P为适当阶的可逆矩阵。

两个代数等价的系统具有很多共有属性,除了能控、能观性之外,我们需要用到的就是代数等价系统具有相同的特征多项式和极点。为此,我们定义这样的P矩阵,对由基于估计的MPC算法得到的系统矩阵进行代数等价变形:

对原系统做相似变换:

上式中的A - BuKmpc(Sx + ICc ) 是状态全部可以测量时预测控制闭环系统的稳定性判定矩阵而A - LCm 是状态估计器的稳定性判定矩阵.因此, 基于估计的预测控制闭环系统的极点由状态全部可测时的控制器极点和状态估计器的极点组成.也就是说, 对无约束MPC 闭环系统来说, 分离原理成立, 状态反馈和估计器可以独设计.因此, 我们可以得到结论:基于估计的无约束MPC 闭环系统名义渐近稳定, 当且仅当状态反馈MPC 稳定和状态估计器稳定。

MPC学习笔记1:基于状态空间模型的预测控制(2)的更多相关文章

  1. MPC学习笔记1:基于状态空间模型的预测控制(1)

    MPC调节器 1.给定一个由状态空间法描述的离散系统: MPC控制器与其他线性二次调节器(LQR)的区别就在于其可以很好的将系统动态约束纳入考虑. 采样周期Ts控制了算法的效率,太大会错过很多系统运行 ...

  2. ArcGIS案例学习笔记-批量裁剪地理模型

    ArcGIS案例学习笔记-批量裁剪地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:空间数据的批量裁剪 优点:1.批量裁剪:任意多个目标数据,去裁剪任意 ...

  3. Java学习笔记之---单例模型

    Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...

  4. WebGL three.js学习笔记 加载外部模型以及Tween.js动画

    WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...

  5. PowerDesigner 15学习笔记:十大模型及五大分类

    个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...

  6. ARMV8 datasheet学习笔记5:异常模型

    1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...

  7. Javascript MVC 学习笔记(一) 模型和数据

    写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...

  8. 大数据学习笔记3 - 并行编程模型MapReduce

    分布式并行编程用于解决大规模数据的高效处理问题.分布式程序运行在大规模计算机集群上,集群中计算机并行执行大规模数据处理任务,从而获得海量计算能力. MapReduce是一种并行编程模型,用于大规模数据 ...

  9. Django学习笔记(2)——模型,后台管理和视图的学习

    一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...

随机推荐

  1. MySQL Hardware--NUMA与MySQL

    MUMA架构 在单实例的MySQL服务器上,通过会为MySQL的Buffer Pool分配50%至70%甚至更高的内存,让MySQL 服务会尽可能多地占用系统资源.在基于NUMA系统中,内存被分配到各 ...

  2. Docker切换国内镜像

    本人是Ubuntu系统 Ubuntu 18.04 安装 Docker-ce 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.list / ...

  3. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  4. MySQL 数据库索引

    数据库索引 在数据库中.索引使数据库程序无须对整个表进行全表扫描就可以在其中找到所需的数据: 数据库中的索引是某个表中一列或者若干列值的集合.以及物理标识这些值的数据页的逻辑指针清单: MySQL 索 ...

  5. SpringBoot启动源码探究---listeners.starting()

    1.首先调用starting()方法,其内部是一个对所有listener的starting()调用的for循环,然后每个listener调用另一个starting方法,其内部调用multicastEv ...

  6. linux中开启snmp协议

    1.安装软件#yum -y install net-snmp 2.修改配置文件#vim /etc/snmp/snmpd.conf确保snmpd.conf文件中包含以下绿色内容:com2sec notC ...

  7. gin的url查询参数解析

    gin作为go语言最知名的网络库,在这里我简要介绍一下url的查询参数解析.主要是这里面存在一些需要注意的地方.这里,直接给出代码,和运行结果,在必要的地方进行分析. 代码1: type Struct ...

  8. 2018-2019-2 20175311 实验二 《Java开发环境的熟悉》实验报告

    2018-2019-2 20175303 实验二 <Java开发环境的熟悉>实验报告 一.实验准备 1.了解掌握实验所要用到的三种代码 伪代码 产品代码 测试代码 2.IDEA中配置单元测 ...

  9. oracle修改sequence,查询sequence信息

    -- 1.查询sequence当前值. select serviceproviderid.nextval from dual; -- 2.查询sequence最大值SELECT SEQUENCE_NA ...

  10. linux/centos elasticsearch 环境搭建 安装 运行 使用

    环境搭建也是有些坑的存在,所以整理了一下搭建流程,安全无痛. ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例. 一.java 环境 直接apt安装火箭一 ...