什么是MIT自适应律?
之所以叫MIT自适应律,是因为起源于美国麻省理工大学MIT。
假定被控对象中有一种参数theta,当调节这个参数theta后,可以让系统输出和参考模型输出之差变为0,那么更新这种参数theta的公式,就叫做MIT自适应律。
什么是灵敏度导数?什么是调整率?
参考模型和实际模型输出误差的大小,相对于参数theta的变化率,就是灵敏度。
调整率就类似于梯度下降法里面的步长,该以多少的速度朝着这个梯度前进,这个速度就是调增率。
基于MIT律的可调增益MRAC计算过程
系统由最上面的参考模型,中间的控制器,plant模型,以及下面的自适应调整机构(即MIT律)组成。
参考模型和实际模型之间的误差为
进行求导,可以得到灵敏度导数
然后得到自适应律公式
其中,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