论文笔记:Sparse identification of nonlinear dynamics for model predictive control in the low-data limit

论文笔记:Sparse identification of nonlinear dynamics for model predictive control in the low-data limit

文献信息

Autor:Kaiser, E. ;Kutz, J. N. ;Brunton, S. L.
From:PROCEEDINGS OF THE ROYAL SOCIETY A-MATHEMATICAL PHYSICAL AND ENGINEERING SCIENCES
Date:NOV 2018 IF:2.741/2.83 分区:Q2

研究内容

本文提出了一种新的结构,用于控制多个非线性系统。而一般情况下,控制系统时,系统的动态方程之类是已知的,而本文针对的目标是系统的状态和设计是未知的。对于这类系统的建模和控制,以机器学习为代表的数据驱动方法走在前沿。但这一类的机器学习方法,需要大量的数据支持,缺乏可解释性,不容易包含约束等。因此本文提出了将非线性动力学中的SINDY(非线性动力系统的稀疏辨识)与模型预测控制(MPC)相结合的结构SINDY-MPC。

SINDY-MPC结构

这一节来介绍本文提出的结构——SINDY-MPC结构。其整体的结构框架如Fig.1所示。整体的外部框架是一个MPC的结构框架。而在控制器中的部分是结合了SINDY。总结来说,提出的结构分为两部分,首先以少量的数据为基础,通过SINDY进行稀疏辨识,得到模型的动态方程等,然后投入控制中,利用MPC做优化。下面将分别介绍SINDY和MPC两部分。
Fig.1 SINDY-MPC结构

SINDY(sparse identification of nonlinear dynamical systems)

SINDY即非线性动力系统的稀疏辨识。其根据许多系统在控制方程中有相对较少的项这一事实,从测量数据中来识别出非线性动力系统。其原理框图如图Fig.2所示。其工作原理其实与压缩感知中的重构部分很像,只不过“传感矩阵A”由CS中的数值域变成了泛函域,概括性描述即:
首先对于未知的动力学系统进行数据收集(X^T)。然后构造一个完备的泛函的字典集(Θ)。认为测量数据是可以由字典中的原子构成,然后通过稀疏回归的方式计算出每个原子所对应的系数(Ξ),之后便识别出了非线性动力系统。
Fig.2 SINDYc的结构图
具体阐述如下:给定一个未知系统x’ = f(x,u); x(0) = x0。
SINDY 与基于其的控制SINDYc都有一个前提,即认为上述系统是稀疏的,仅有少量的重要项。而控制方面需要加入输入驱动,即需要将SINDY扩展到包含u,很简单的就是扩充字典包含u,因此从系统中进行观测收集,得到X和U:观测向量
然后通过对X和U的计算构造字典:
字典
字典的构造其中一种选择是从简单基础的开始,如多项式( x ⊗ y代表了xy之间的所有组合),然后在此基础上提升字典的复杂性,如加入三角函数等。同时如有需要也可在构造字典时加入已知的约束之类。
此时,未知系统x’ = f(x,u); x(0) = x0可改写为:(观测向量)X=(系数) Ξ(字典)Θ^T (X;U)。对于大多数的动力学系统,系数都是稀疏的,因此可以使用稀疏回归的方法在平衡系数的稀疏性和模型的准确性中,进行系数的计算,数学表示如下:(其中:λ用于平衡稀疏性和准确度)系数计算
以上便完成了SINDY-MPC架构中的SINDY部分,模型的识别,通过数据识别出了系统模型

MPC(Model predictive control)

对于论文中的MPC,没有前期了解,根本看不懂,找了很多资料,理解的也不是很清楚,直到发现了B站的课程!!!强推!!!
B站:【官方教程】了解模型预测控制(MPC)与MATLAB仿真(全)(中英字幕)
下面是我个人的理解
所谓MPC,即模型预测控制,又称后退视界控制(之后讲缘由~)。其原理概括性描述即:利用系统模型来预测其未来行为,同时将未来的参考信息纳入到控制问题当中,解决了在线优化的问题,以选择将预测输出、驱动到、与参考输出逼近、的最佳控制操作(注意断句,仔细理解)。
在这里插入图片描述
上图是MPC的一个大致整体的原理框图。目的是通过MPC控制器计算得到一个输入Input使得输出Output符合我们的预期输出。而这个是怎么实现的呢,是通过将对于未来一段时间的预览纳入到考量中进行的,类似于我们过马路,看到远方开来一辆车,我们预测未来一段时间内,是否会撞到我们来决定我们是否要过去。这个腿迈出与否的决定就是Input,然后走或者没走的实际行动就是Output,然后对于未来一段时间内车是否会撞到我们就是MPC控制器所做的事儿,对未来一段时间(论文中的timestep)的预览。具体表示如下图:MPC
以当前时刻j为初始状态(图中最长的虚线),在j左侧的是过去的,在j右侧的未来的。然后我们预测未来mp时间段内的变化,这个时间段(文中的timestep)被称为预测视界(图中的Prediction horizon)。然后我们希望最终输出按照参考进行,那首先画出一个参考输出(图中的绿色虚线Set point)。这时我们随意输入会得到随意的输出,而我们的目标就是控制输入使输出与参考逼近,即图中的红色线与绿色虚线不断逼近,而这个时候我们希望在逼近的同时,误差最小,且满足我们实际的一些约束。这时就需要构造一个包含了误差和约束的代价函数,即MPC原理框图中Optimizer的作用。最终得到了一个最优的逼近路径,即图中红色线。而我们只要这个序列的第一个时间步骤的值(图中蓝色的★)。然后将这个时间步骤的值作为初始状态向前移动一个预测范围,即图中的最长的虚线向前移动,然后重复这个过程,得到最优的控制策略(即输入确定为深蓝色的折线,输出确定为紫色的线)。
然后在这个MPC中涉及到了一些参数,下面对其进行简要介绍。
①采样时间T:决定控制器执行控制算法的速率(即对干扰和输入变化的响应速度)。即文中的△tm.一般建议为系统上升时间的0.05~0.1,系统上升时间即文中的△t。
②预测范围:文中的mp(Prediction horizon),即预测的未来时间步骤
③控制范围:文中的mc(Control horizon),移动至时间步骤j+m所用的次数。建议为0.1mp~0.2mp
④约束:一些实际需要满足的约束条件。建议输入硬约束,输出软约束。类似文中的△u∈[a,b]
⑤权重:文中的Q、Ru、R△u之类,表示对某个量的看重程度。
以上便是SINDY-MPC结构的第二部分,MPC部分,即对模型进行优化控制。

实验

实验结果在这里不赘述了,掌握以上的结构知识,对于实验部分很易于理解了。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Minio是一种开源的对象存储服务,它具有高度可扩展性和高性能。对于理解Minio的工作原理和实现细节,源码分析是一种很好的方法。 在Minio源码分析中,我们可以关注以下几个关键点: 1. 存储引擎:Minio支持多种存储引擎,如本地磁盘、分布式文件系统等。通过阅读源码,我们可以了解Minio如何抽象存储引擎,并灵活地添加新的存储引擎。 2. 对象存储:Minio使用对象存储模型,将文件分割成对象进行存储。在源码分析中,我们可以深入研究对象存储的细节,包括对象元数据的存储方式、对象ID的生成算法等。 3. 分布式架构:Minio支持分布式架构,可以水平扩展。在源码分析中,我们可以学习Minio如何实现数据分片和复制、负载均衡等分布式特性。 4. 网络通信:Minio使用HTTP协议作为数据传输协议,可以与各种客户端进行通信。源码分析可以帮助我们了解Minio如何处理HTTP请求和响应,以及如何进行身份验证和访问控制。 5. 错误处理和容错机制:Minio具有强大的错误处理和容错机制,包括故障转移、数据修复等。在源码分析中,我们可以学习Minio如何处理各种异常情况,保证数据的可靠性和一致性。 通过对Minio源码的深入分析,我们可以更好地理解Minio的设计思想和实现细节,为使用和开发Minio提供指导和参考。同时,源码分析也是提升自己编码能力和系统设计能力的一种重要方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值