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

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. day02代码

    1.while.....else.....语句,break,continue,if,while,用户交互,输出,运算符 # 用户有三次登录机会 _username = 'tom' _password ...

  2. python-变量、if else语句 、for循环、while循环(4月26号)

    变量: 五.注意:python是可执行程序 在linux写python第一行必须写#!/usr/bin/env python(声明解释器在windows中写python第一行需要写# -*- codi ...

  3. layer.open弹出窗口后在子页面修改弹窗的title

    在子页面修改layer.open弹窗的title,代码如下: var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索 ...

  4. .NET MVC 表主外键关系 JSON 无限循环 方案二(推荐)

    public class JsonResultObject:JsonResult { private Newtonsoft.Json.JsonSerializerSettings Settings { ...

  5. DateTime?,也是一种类型,代表DateTime或NULL两种类型,在处理空时间时比较有用

    public static DateTime? GetDateTimeFromStr(string date) { if (date.Trim() == string.Empty) return nu ...

  6. linux 管道通信

    下面举linux下有名管道通信的代码. ----------------------------------------- fifo_read.c =========== #include<er ...

  7. maven向本地仓库导入jar包

    如果maven工程的依赖jar包在网上找不到,那么只能自己打包,然后传到本地仓库,可以使用如下命令 mvn install:install-file -DgroupId=com.redis.redis ...

  8. Scrapy实战篇(六)之爬取360图片数据和图片

    本篇文章我们以360图片为例,介绍scrapy框架的使用以及图片数据的下载. 目标网站:http://images.so.com/z?ch=photography 思路:分析目标网站为ajax加载方式 ...

  9. json相关安全问题

    前言: 最近经常遇到json的事情,由于不懂所以系统的学习一下,记录此贴. 00x1: JSON是啥?Java Objiect Notaton 谷歌翻译过来就是JS对象标记,是一种轻量级的数据交换格式 ...

  10. NPOI 导出Excel部分

    ) { MessageBox.Show("没有找到相关的数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.I ...