什么是MIT自适应律?
之所以叫MIT自适应律,是因为起源于美国麻省理工大学MIT。
假定被控对象中有一种参数theta,当调节这个参数theta后,可以让系统输出和参考模型输出之差变为0,那么更新这种参数theta的公式,就叫做MIT自适应律。

什么是灵敏度导数?什么是调整率?
参考模型和实际模型输出误差的大小,相对于参数theta的变化率,就是灵敏度。
调整率就类似于梯度下降法里面的步长,该以多少的速度朝着这个梯度前进,这个速度就是调增率。
基于MIT律的可调增益MRAC计算过程
系统由最上面的参考模型,中间的控制器,plant模型,以及下面的自适应调整机构(即MIT律)组成。

参考模型和实际模型之间的误差为
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bKO7HfJG-1576054723973)(MIT自适应律MRAC的理解和MATLAB实现.assets/image-20191211165057812.png)]](https://i-blog.csdnimg.cn/blog_migrate/a8d6733a2606f9c1f5689ca79f6b6af4.png)
进行求导,可以得到灵敏度导数

然后得到自适应律公式

其中,gamma就是自适应律
系统的控制律为

计算过程和伪代码如下

MATLAB仿真
被控对象参数

各个步骤MATLAB代码如下

仿真效果
r = 0.6时,闭环系统输出响应特别慢

r = 1.2时,输出性能响应良好

r = 3.2时,系统变得不稳定

改进的MIT归一化算法和仿真结果
可以看到上面的缺陷,就是当自适应增益gamma超出一定范围之后,输出将会变得不稳定。
为了克服这种缺陷,需要做一些修正,使得自适应增益与输入信号幅值无关,一种修正方案就是实现归一化,修正MIT自适应律。

alpha大于零,是为了防止出现零除现象。
同时还可以引入一种饱和特性,保证参数调整率总小于一定的临界值。

最终的归一化MIT适应律为

修正之后的代码体现

仿真效果对比

完整MATLAB代码附录
普通MIT适应律
clear all;
close all;
% clc;
% 数值积分的步长
h = 0.1;
% 仿真步数,相当于是100秒
L = 100/h;
% 对象参数
num = [1]; den = [1 1 1]; n = length(den) - 1;
% plant的传递函数形态转换成状态空间
kp = 1;
[Ap, Bp, Cp, Dp] = tf2ss(kp * num, den);
% model的传递函数形态转换成状态空间
km = 1;
[Am, Bm, Cm, Dm] = tf2ss(km * num, den);
% 自适应律的自适应增益
gamma = 0.1;
yr0 = 0; % 整个系统的参考输入值reference
u0 =

本文介绍了MIT自适应律的概念及其在可调增益模型参考自适应控制(MRAC)中的应用。详细阐述了MIT律的计算过程,并通过MATLAB进行了系统仿真,展示了不同参数下系统输出的响应。针对MIT律可能导致的不稳定性问题,提出了归一化和饱和度限制的改进算法,改善了系统性能。
最低0.47元/天 解锁文章
1642

被折叠的 条评论
为什么被折叠?



