MATLAB 模型参考自适应控制 - Model Reference Adaptive Control

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、参考模型
  • 二、扰动与不确定性模型
  • 三、直接 MRAC
    • 名义模型
    • 参数更新
    • 间接 MRAC
    • 估计器模型和控制器增益
    • 参数更新
    • 学习修正
    • 参考文献


前言

模型参考自适应控制模块计算控制动作,使不确定的受控系统跟踪给定参考被控对象模型的行为。使用该程序块,可以实现以下模型参考自适应控制 (MRAC) 算法。

  • 直接 MRAC - 根据被控对象与参考工厂模型状态之间的实时跟踪误差,估算反馈和前馈控制器增益。

  • 间接 MRAC - 根据参考设备模型与估计系统状态之间的跟踪误差,估计被控对象系统的参数。然后,根据估计系统和参考模型的参数推导出反馈和前馈控制器增益。

直接和间接 MRAC 还能估算被控系统的外部干扰和不确定性模型。然后,控制器在计算控制动作时使用该模型对干扰和不确定性进行补偿。

在这两种情况下,控制器都会根据跟踪误差实时更新估计参数和干扰模型。


一、参考模型

对于直接和间接 MRAC 而言,以下参考被控对象模型是理想的系统,它描述了您在实践中想要实现的理想行为。
x ˙ m ( t ) = A m x m ( t ) + B m r ( t ) {\dot{x}}_{m}(t)=A_{m}x_{m}(t)+B_{m}r(t) x˙m(t)=Amxm(t)+Bmr(t)
此处

  • r(t) 是外部参考信号。

  • xm(t) 是被控对象模型的状态。由于 r(t) 已知,因此可以通过模拟参考模型得到 xm(t)。

  • Am 是恒定状态矩阵。对于一个稳定的参考模型,Am 必须是一个 Hurwitz 矩阵,其每个特征值都必须是严格的负实部。

  • Bm 是控制有效矩阵。

二、扰动与不确定性模型

模型参考自适应控制模块维护着受控系统中干扰和模型不确定性的内部模型 u a d u_{a d} uad
u a d = w T ϕ ( x ) u_{a d}=w^{T}\phi(x) uad=wTϕ(x)
w 是控制器根据跟踪误差实时更新的自适应控制权重向量。

要定义 ϕ(x),可以使用以下特征定义之一。

  • 被控对象的状态向量 - 这种方法可能无法充分反映系统的不确定性。在不了解干扰和模型不确定性的复杂性时,使用状态作为特征可能是一个有用的起点。

  • 高斯径向基函数 - 当扰动和模型的不确定性是非线性的,且扰动模型的结构未知时,请使用此选项。径向基函数要求事先了解模型的运行域,这在某些情况下可能比较困难。

  • 单隐层神经网络 - 当扰动和模型的不确定性是非线性的,扰动模型的结构未知,并且您没有运行域的先验知识时,请使用此选项。神经网络是一种通用函数近似器,可以近似任何连续函数。

  • 提供给控制器模块的外部源 - 使用该选项可自定义特征向量。如果您知道干扰和不确定性模型的结构,则可以使用该选项。例如,您可以使用自定义特征向量来确定特定的未知被控对象参数。

三、直接 MRAC

直接 MRAC 控制器的控制结构如下

在这里插入图片描述

控制器计算控制输入 u(t) 的方法如下
u ( t ) = k x x ( t ) + k r r ( t ) − u a d u a d = w T ϕ ( x ) \begin{array}{c}{{u(t)=k_{x}x(t)+k_{r}r(t)-u_{a d}}}\\ {{u_{a d}=w^{T}\phi(x)}}\end{array} u(t)=kxx(t)+krr(t)uaduad=wTϕ(x)

此处

  • x(t) 是受控系统的状态。

  • r(t) 是外部参考信号。

  • kx 和 kr 分别是反馈和前馈控制器增益。

  • u a d u_{a d} uad 是根据扰动模型得出的自适应控制分量。
    ϕ ( x ) \phi(x) ϕ(x) 包含干扰模型特征。

  • w 是自适应扰动模型权重向量。

  • V 是隐藏层权重向量。

对于单隐层神经网络, u a d u_{a d} uad
u a d = w T σ ( V T x ) u_{a d}=w^{T}\sigma(V^{T}x) uad=wTσ(VTx)
此处

  • V 是隐层权重向量。

  • σ 是 sigmoid 激活函数。

控制器计算受控系统状态与参考模型状态之间的误差 e(t)。然后利用该误差实时调整 kx、kr 和 w 的值。

名义模型

受控系统通常具有建模不确定性和外部干扰,其标称状态方程如下。控制器在更新控制器参数时,会使用这一预期的标称被控对象行为。
x ˙ ( t ) = A x ( t ) + B ( u ( t ) + f ( x ) ) {\dot{x}}(t)=A x(t)+B(u(t)+f(x)) x˙(t)=Ax(t)+B(u(t)+f(x))
这里的

  • x(t) 是要控制系统的状态。

  • u(t) 是控制输入。

  • A 是恒定的状态转换矩阵。

  • B 是恒定的控制有效矩阵。

  • f(x) 是系统中匹配的不确定性。

参数更新

直接 MRAC 控制器使用以下公式更新状态矢量、径向基函数和外部源特征定义的控制器增益和干扰模型权重
k ˙ x = Γ x x ( t ) e T ( t ) P B k ˙ r = Γ r r ( t ) e T ( t ) P B w ˙ = Γ w ϕ ( x ) e T ( t ) P B \begin{array}{l}{{\dot{k}_{x}=\Gamma_{x}x(t)e^{T}(t)P B}}\\ {{\dot{k}_{r}=\Gamma_{r}r(t)e^{T}(t)P B}}\\ {{\dot{w}=\Gamma_{w}\phi(x)e^{T}(t)P B}}\end{array} k˙x=Γxx(t)eT(t)PBk˙r=Γrr(t)eT(t)PBw˙=Γwϕ(x)eT(t)PB
单隐层干扰模型更新方程使用相同的控制器增益更新和以下更新方程。
w ˙ = − ( σ ( V T x ) − σ ′ ( V T x ) V T x ) e T ( t ) P B Γ w V ˙ = − Γ V x e T ( t ) P B w T σ ( V T x ) \begin{array}{l}{{\dot{w}=-(\sigma(V^{T}x)-{{\sigma}}^{\prime}(V^{T}x)V^{T}x){{e}}^{T}(t){{P}}{{B}}\Gamma_{w}}}\\ {{\dot{V}=-\Gamma{{V}}{{x}}{{e}}^{T}(t){{P}}{{B}}w^{T}{{\sigma}}(V^{T}x)}}\end{array} w˙=(σ(VTx)σ(VTx)VTx)eT(t)PBΓwV˙=ΓVxeT(t)PBwTσ(VTx)

Here, P is the solution to the following Lyapunov function based on the reference model state matrix and B is the control effective matrix from the nominal plant model.
A m T P + P A m + Q = 0 A_{m}^{T}P+P A_{m}+Q=0 AmTP+PAm+Q=0
这里,Q 是大小为 N 乘 N 的正定矩阵,其中 N 是状态向量 x(t) 的大小

间接 MRAC

间接 MRAC 控制器的控制结构如下。参考模型为

在这里插入图片描述

控制器计算控制输入 u(t) 的方法如下
u ( t ) = k x x ( t ) + k r r ( t ) − u a d u a d = w T ϕ ( x ) \begin{array}{c}{{u(t)=k_{x}x(t)+k_{r}r(t)-u_{a d}}}\\ {{u_{a d}=w^{T}\phi(x)}}\end{array} u(t)=kxx(t)+krr(t)uaduad=wTϕ(x)

这里:

  • x ^ ( t ) \hat{x}(t) x^(t) 是由估计模型产生的受控系统估计状态。

  • r(t) 是外部参考信号。

  • kx 和 kr 分别是反馈和前馈控制器增益。

  • u a d u_{a d} uad 是根据扰动模型得出的自适应控制分量。

  • ϕ ( x ) \phi(x) ϕ(x) 包含干扰模型特征。

  • w 是自适应扰动模型权重向量。

控制器计算实际系统状态和估计系统状态之间的误差 e(t)。然后利用该误差实时调整 w 的值。控制器还利用 e(t) 实时更新估计模型的参数。增益 kx 和 kr 的值来自估计模型和参考模型的参数。

估计器模型和控制器增益

间接 MRAC 控制器包含以下受控系统的估计模型。
x ^ ˙ ( t ) = A ^ x ( t ) + B ^ u ( t ) \dot{\hat{x}}(t)=\hat{A}x(t)+\hat{B}u(t) x^˙(t)=A^x(t)+B^u(t)
这里:

  • x ^ ˙ ( t ) \dot{\hat{x}}(t) x^˙(t) 是估计的系统状态。

  • u ( t ) u(t) u(t) 是控制输入。

  • A ^ \hat{A} A^ 是估计器的状态转换矩阵。

  • B ^ \hat{B} B^ 是估计器的控制有效矩阵。

在运行过程中,控制器基于估计误差 e(t)更新 A ^ \hat{A} A^ B ^ \hat{B} B^

间接 MRAC 控制器不直接估算控制器增益,而是采用基于动态反演的方法,从参考模型和估算模型的参数中推导出反馈增益 k x k_x kx 和前馈增益 k r k_r kr,具体如下。
k r = B m B ^ k x = 1 B ^ ( A m − A ^ ) \begin{array}{c}{{k_r={\displaystyle\dfrac{B_m}{\hat{B}}}}}\\ {{k_{x}={\displaystyle\frac{1}{\hat{B}}}\left(A_m-\hat{A}\right)}}\end{array} kr=B^Bmkx=B^1(AmA^)
这里, 1 B ^ \displaystyle\frac{1}{\hat{B}} B^1 是矩阵 B ^ \hat{B} B^ 的 Moore-Penrose 摩尔-彭罗斯伪逆。

参数更新

间接 MRAC 控制器使用以下公式更新状态矢量、径向基函数和外部源特征定义的估计模型参数和干扰模型权重
A ^ ˙ = Γ a x ( t ) e T ( t ) P B ^ ˙ = Γ b u ( t ) e T ( t ) P w ˙ = Γ w ϕ ( x ) e T ( t ) P B \begin{array}{l}{{\dot{\hat{A}}=\Gamma_{a}x(t)e^{T}(t)P}}\\ {{\dot{\hat{B}}=\Gamma_{b u(t)}e^T{(t)P}}}\\ {{\dot{w}=\Gamma_{w}\phi(x)e^T{(t)P B}}}\end{array} A^˙=Γax(t)eT(t)PB^˙=Γbu(t)eT(t)Pw˙=Γwϕ(x)eT(t)PB
单隐层干扰模型更新方程使用相同的估计模型参数更新和以下更新方程。
w ˙ = − ( σ ( V T x ) − σ ′ ( V T x ) V T x ) e T ( t ) P B Γ w V ˙ = − Γ V x e T ( t ) P B w T σ ( V T x ) \begin{array}{l}{{\dot{w}=-(\sigma(V^{T}x)-{{\sigma}}^{\prime}(V^{T}x)V^{T}x){{e}}^{T}(t){{P}}{{B}}\Gamma_{w}}}\\ {{\dot{V}=-\Gamma{{V}}{{x}}{{e}}^{T}(t){{P}}{{B}}w^{T}{{\sigma}}(V^{T}x)}}\end{array} w˙=(σ(VTx)σ(VTx)VTx)eT(t)PBΓwV˙=ΓVxeT(t)PBwTσ(VTx)
这里,P 是以下 Lyapunov 函数的解。
k τ T P + P k τ + Q = 0 k_{\tau}^{T}P+P k_{\tau}+Q=0 kτTP+Pkτ+Q=0

kτ 是估计器反馈增益。默认情况下,该值与参考模型状态转换矩阵 Am 相对应。不过,也可以指定不同的估计器反馈增益值。

学习修正

对于直接和间接 MRAC,为了在更高的学习率下增加稳健性,可以修改参数更新,加入一个可选的动量项。您可以从两种可能的学习修改方法中选择一种:sigma 和 e-modification。

对于西格玛修正,每次参数更新的动量项都是动量权重参数 σ 与当前参数值的乘积。例如,以下直接 MRAC 控制器的更新方程就包含了 σ 修正项。
k ˙ x = Γ x x ( t ) e T ( t ) P B + σ k x k ˙ r = Γ r r ( t ) e T ( t ) P B + σ k x w ˙ x = Γ w ϕ ( t ) e T ( t ) P B + σ w \begin{array}{l}{{\dot{k}_{x}=\Gamma_{x}x(t)e^{T}(t)P B+\sigma k_{x}}}\\ {{\dot{k}_{r}=\Gamma_{r}r(t)e^{T}(t)P B+\sigma k_{x}}}\\ {{\dot{w}_{x}=\Gamma_{w}\phi(t)e^{T}(t)P B+\sigma w}}\end{array} k˙x=Γxx(t)eT(t)PB+σkxk˙r=Γrr(t)eT(t)PB+σkxw˙x=Γwϕ(t)eT(t)PB+σw
对于 e-修正,控制器通过误差矢量的规范对 sigma-修正动量项进行缩放。例如,以下间接 MRAC 控制器的更新方程就包含了一个 e 修正项。
A ^ ˙ = Γ a x ( t ) e T ( t ) P + σ ∣ e ( t ) ∣ A ^ B ^ ˙ = Γ b u ( t ) e T ( t ) P + σ ∣ e ( t ) ∣ B ^ w ˙ x = Γ w ϕ ( t ) e T ( t ) P B + σ ∣ e ( t ) ∣ w \begin{array}{l}{{\dot{\hat{A}}=\Gamma_{a}x(t)e^{T}(t)P+\sigma|e(t)|\hat{A}}}\\ {{\dot{\hat{B}}=\Gamma_{b}u(t)e^{T}(t)P+\sigma|e(t)|\hat{B}}}\\ {{\dot{w}_{x}=\Gamma_{w}\phi(t)e^{T}(t)P B+\sigma|e(t)|w}}\end{array} A^˙=Γax(t)eT(t)P+σe(t)A^B^˙=Γbu(t)eT(t)P+σe(t)B^w˙x=Γwϕ(t)eT(t)PB+σe(t)w
要调整这两种方法的学习修正量,可改变动量权重参数 σ 的值。

参考文献

[1] Ioannou, Petros A., and Jing Sun. Robust adaptive control, Courier Corporation, 2012.

[2] Narendra, Kumpati S, and Anuradha M Annaswamy. Stable Adaptive Systems. Courier Corporation, 2012.

[3] Narendra, Kumpati S., and Anuradha M. Annaswamy. “Robust Adaptive Control.” In 1984 American Control Conference, 333–35. San Diego, CA, USA: IEEE, 1984. https://doi.org/10.23919/ACC.1984.4788398

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

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

相关文章

【LeetCode刷题笔记】102. 二叉树的层序遍历

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

kkFileView 从源码编译最新安装包

目录 一、前言二、拉取 kkFileView 最新代码三、kkFileView 打包 一、前言 kkFileView 是一个开源的附件在线预览项目&#xff0c;可以让你的项目方便的在线预览附件&#xff0c;包括比如&#xff1a;doc、docx、pdf、xml、xls、xlsx、ppt、pptx、zip、png、jpg、txt、mp4等常…

测评补单助力亚马逊,速卖通,国际站卖家抢占市场,提升转化和评分

想要快速提升商品的销量&#xff0c;测评补单这种方法见效是最快的。特别是新品上线&#xff0c;缺少用户评价&#xff0c;转化率不好&#xff0c;很多商家新品上线都会做测评补单&#xff0c;搞些商品好评&#xff0c;不但可以提升转化&#xff0c;同时在平台也可以获得更多展…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程初步完成转bpmn设计(还有bug,以后再修改)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 今天初步完成仿钉钉流程转bpmn设计的工作&#xff0c;当然还有不少bug&#xff0c;以后有需要或者网友也帮…

:deep(){} 样式穿透不生效问题解决方案

在我们写vue的项目的时候&#xff0c;可能会遇到这种情况&#xff0c;父子组件&#xff0c;在父组件中使用了样式穿透给子组件的类添加样式&#xff0c;结果失败了。比如下面这种情况。 父组件 <template><p>我是父组件</p><Son /> </template>…

web前端之css变量的妙用、通过JavaScrip改变css文件中的属性值、querySelector、setProperty

MENU 效果图htmlJavaScripstylequerySelectorsetProperty 效果图 html <div id"idBox" class"p_r w_680 h_160 b_1s_red"><div id"idItem" class"p_a l_0 t_30 w_100 h_100 bc_rgba_255_00_05 radius_50_"></div> …

uniapp实现文件预览过程

H5实现预览 <template><iframe :src"_url" style"width:100vw; height: 100vh;" frameborder"0"></iframe> </template> <script lang"ts"> export default {data() {return {_url: ,}},onLoad(option…

2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析

2023年第十二届数学建模国际赛小美赛 A题 太阳黑子预测 原题再现&#xff1a; 太阳黑子是太阳光球上的一种现象&#xff0c;表现为比周围区域暗的暂时斑点。它们是由抑制对流的磁通量浓度引起的表面温度降低区域。太阳黑子出现在活跃区域内&#xff0c;通常成对出现&#xff…

Vmware安装Centos7

CentOs7镜像文件下载 centos7 镜像文件下载-CSDN博客 配置虚拟机 打开Vmware&#xff0c;点击新建虚拟机 典型安装与自定义安装 典型安装&#xff1a;VMware会将主流的配置应用在虚拟机的操作系统上&#xff0c;对于新手来很友好。 自定义安装&#xff1a;自定义安装可以针…

LangChain(0.0.340)官方文档三:Prompts上——自定义提示模板、使用实时特征或少量示例创建提示模板

文章目录 一、 Prompt templates1.1 langchain_core.prompts1.2 PromptTemplate1.2.1 简介1.2.2 ICEL1.2.3 Validate template 1.3 ChatPromptTemplate1.3.1 使用role创建1.3.2 使用MessagePromptTemplate创建1.3.3 自定义MessagePromptTemplate1.3.3.1 自定义消息角色名1.3.3.…

密码学学习笔记(二十二):RSA签名方案

在RSA中&#xff0c;计算公钥的欧拉函数和私钥是关键步骤。 如何计算呢&#xff1f; RSA算法中的是两个质数 p 和 q 的乘积。所以两个质数必须要找到。一旦找到 p 和 q就可以使用公式() (p-1) (q-1)来计算。 计算私钥d 私钥 d 是满足 e*d ≡ 1 mod   的整数。换句话说&a…

寻找链表的中间节点

问题描述&#xff1a; 给定一个头结点为head的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间节点&#xff0c;则返回第二个中间结点&#xff0c;个数为奇数返回一个值&#xff0c;个数为偶数返回两个中间结点的第二个值。 思路&#xff1a; 用快慢指针来寻找中间…

Android File Transfer for Mac:畅享强大的安卓文件传输工具

作为一款功能强大的安卓文件传输工具&#xff0c;Android File Transfer for Mac&#xff08;以下简称AFT&#xff09;为Mac用户提供了便捷快速的安卓设备文件管理体验。无论是传输照片、音乐、视频还是文档&#xff0c;AFT都能满足你的需求&#xff0c;让你的文件传输更加高效…

设计模式---第三篇

系列文章目录 文章目录 系列文章目录前言一、模板方法模式二、知道享元模式吗?三、享元模式和单例模式的区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一…

Centos7安装

想学Vmware安装可以看下下面链接,不想就算了 https://blog.csdn.net/weixin_43895362/article/details/134723073 选择第一项&#xff0c;安装直接CentOS 7&#xff0c;回车 稍等后出现进入下图,选择中文,这个只是安装时的语言 首先设置时间,时区选择上海&#xff0c;查看时…

用 LangChain 搭建基于 Notion 文档的 RAG 应用

如何通过语言模型查询 Notion 文档&#xff1f;LangChain 和 Milvus 缺一不可。 在整个过程中&#xff0c;我们会将 LangChain 作为框架&#xff0c;Milvus 作为相似性搜索引擎&#xff0c;用二者搭建一个基本的检索增强生成&#xff08;RAG&#xff09;应用。在之前的文章中&a…

图解「差分」入门(“前缀和“ 到 “差分“ 丝滑过渡)

题目描述 这是 LeetCode 上的 「1094. 拼车」 &#xff0c;难度为 「中等」。 Tag : 「差分」、「前缀和」 车上最初有 capacity 个空座位&#xff0c;车只能向一个方向行驶&#xff08;不允许掉头或改变方向&#xff09;。 给定整数 capacity 和一个数组 trips, 表示第 i 次旅…

A++ 敏捷开发-1 如何改善

1 如何改善 敏捷开发过程改进案例 5月 A公司一直专门为某电信公司提供针对客服、线上播放等服务服务。 张工是公司的中层管理者&#xff0c;管理好几个开发团队&#xff0c;有5位项目经理向他汇报。 他听说老同学的团队都开始用敏捷开发&#xff0c;很感兴趣&#xff0c;便参…

【前端】利用正则生成目录,附加解决a链接锚点偏移

前言 从html字符串中提取出来目录。 目标和源内容都很明确&#xff0c;源内容是html字符串&#xff0c;提取目标是html字符串中h1~h6元素和其闭合标签中间的内容。 思路 分析 获取html字符串 第一步要获取html字符串内容。 观察html字符串 第二步&#xff0c; 观察html字…

Opencv制作电子签名(涉及知识点:像素过滤,图片通用resize函数,像素大于某个阈值则赋值为其它的像素值)

import cv2def resize_by_ratio(image, widthNone, heightNone, intercv2.INTER_AREA):img_new_size None(h, w) image.shape[:2] # 获得高度和宽度if width is None and height is None: # 如果输入的宽度和高度都为空return image # 直接返回原图if width is None:h_ratio …