当前位置:文档之家› 系统辨识及自适应控制实验..

系统辨识及自适应控制实验..

Harbin Institute of Technology系统辨识与自适应控制实验报告题目:渐消记忆最小二乘法、MIT方案与卫星振动抑制仿真实验专业:控制科学与工程姓名:学号: 15S******指导老师:日期: 2015.12.06哈尔滨工业大学2015年11月本实验第一部分是辨识部分,仿真了渐消记忆递推最小二乘辨识法,研究了这种方法对减缓数据饱和作用现象的作用;第二部分是自适应控制部分,对MIT 方案模型参考自适应系统作出了仿真,分别探究了改变系统增益、自适应参数的输出,并研究了输入信号对该系统稳定性的影响;第三部分探究自适应控制的实际应用情况,来自我本科毕设的课题,我从自适应控制角度重新考虑了这一问题并相应节选了一段实验。

针对挠性卫星姿态变化前后导致参数改变的特点,探究了用模糊自适应理论中的模糊PID 法对这种变参数系统挠性振动抑制效果,并与传统PID 法比较仿真。

一、系统辨识1. 最小二乘法的引出在系统辨识中用得最广泛的估计方法是最小二乘法(LS)。

设单输入-单输出线性定长系统的差分方程为:()()()()()101123n n x k a x k a k n b u k b u x k n k +-+⋯+-=+⋯+-=,,,, (1.1) 错误!未找到引用源。

式中:()u k 错误!未找到引用源。

为控制量;错误!未找到引用源。

为理论上的输出值。

错误!未找到引用源。

只有通过观测才能得到,在观测过程中往往附加有随机干扰。

错误!未找到引用源。

的观测值错误!未找到引用源。

可表示为: 错误!未找到引用源。

(1.2)式中:()n k 为随机干扰。

由式(1.2)得错误!未找到引用源。

()()()x k y k n k =- (1.3)将式(1.3)带入式(1.1)得()()()()()()()101111()nn n i i y k a y k a y k n b u k b u k b u k n n k a k i n =+-+⋯+-=+-+⋯+-++-∑ (1.4)我们可能不知道()n k 错误!未找到引用源。

的统计特性,在这种情况下,往往把()n k 看做均值为0的白噪声。

设错误!未找到引用源。

(1.5)则式(1.4)可写成错误!未找到引用源。

(1.6)在观测错误!未找到引用源。

时也有测量误差,系统内部也可能有噪声,应当考虑它们的影响。

因此假定错误!未找到引用源。

不仅包含了错误!未找到引用源。

的测量误差,而且包含了错误!未找到引用源。

的测量误差和系统内部噪声。

假定错误!未找到引用源。

是不相关随机序列(实际上错误!未找到引用源。

是相关随机序列)。

现分别测出错误!未找到引用源。

个随机输出输入值()()()12y y y n N +,,,,()()12()u u u n N +,,,错误!未找到引用源。

则可写成错误!未找到引用源。

个方程,即()()()()()()()()()()()()()()()()()()()()()12011201120111111(1)212212(2)..121()n n n n n n y n a y n a y n a y b u n b u n b u n y n a y n a y n a y b u n b u n b u n y n N a y n N a y n N a y N b u n N b u n N b u N n N ξξξ+=----⋯-++++⋯++++=-+--⋯-+++++⋯++++=-+--+--⋯-++++-+⋯+++ 错误!未找到引用源。

(1.7)上述N 错误!未找到引用源。

个方程可写成向量-矩阵形式,设:10(1)()(1)(1)(1)(1)(2)(1)(2)(2)(1)(2)()(1)()()()(3)n n a y n y n y u n u n a y n y n y u n u n b y n N y n N y N u n N u N n b ξξξ⎡⎤⎢⎥+--++⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥+-+-++⎢⎥⎢⎥⎢⎥=+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥+-+--++⎣⎦⎣⎦⎣⎦⎢⎥⎣⎦ ()(1)(1)(1)(1)(2)(2)(1)(1)()()()y n y u n u y n y u n u y n N y N u n N u N --+⎡⎤⎢⎥-+-+⎢⎥Φ=⎢⎥⎢⎥-+--+⎣⎦则式(1.7)可写为=+y Φθξ错误!未找到引用源。

(1.8)式中:y 为N 维输出向量;ξ为N 维噪声向量;θ错误!未找到引用源。

为错误!未找到引用源。

维参数向量;Φ为错误!未找到引用源。

维测量矩阵。

因此,式(1.8)是一个含有21n +错误!未找到引用源。

个未知参数,由N 个方程组成的联立方程组。

如果错误!未找到引用源。

,方程数少于未知数数目,则方程组的解是不定的,不能唯一地确定参数向量。

如果错误!未找到引用源。

,方程组正好与未知数数目相等,当噪声0=ξ错误!未找到引用源。

时,就能准确地解出1-=θΦy 错误!未找到引用源。

(1.9)如果噪声错误!未找到引用源。

,则错误!未找到引用源。

(1.10)从上式可以看出噪声错误!未找到引用源。

对参数估计是有影响的,为了尽量较小噪声ξ对θ估值的影响。

在给定输出向量y 和测量矩阵错误!未找到引用源。

的条件下求系统参数θ的估值,这就是系统辨识问题。

可用最小二乘法来求θ的估值,以下讨论最小二乘法估计。

2. 最小二乘法估计算法设ˆθ错误!未找到引用源。

表示θ的最优估值,ˆy 表示y 的最优估值,则有: ˆˆ=Φθy错误!未找到引用源。

(1.11)10(1)(2)ˆˆˆˆ()ˆn n a yn a y n b y n N b ⎡⎤⎢⎥⎢⎥+⎡⎤⎢⎥⎢⎥+⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥+⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦θ,y写出式(1.11)的某一行,则有:()()()()()()()()()()1201112112ˆn n nni i i i yk a y k a y k a y k n b u k b u k b u k n k a y k i b u k i k n n n Nξ===-----⋯--++-+⋯+-+=--+-=+++∑∑,,,, (1.12)设()e k 表示()y k 错误!未找到引用源。

与错误!未找到引用源。

之差,即:()()()()()()()()()()()()11110111ˆ—112()()ˆˆnni i i i n n n n yk y k a y k i b u k i a z a z y k b b z b z u k az y k b z u k k e k y n k n n N ==------=-+-=-=+++-+++=-=+++∑∑,,,, (1.13)错误!未找到引用源。

成为残差。

把错误!未找到引用源。

分别代入式(1.13)可得残差()()()12e n e n e n N +++,,,错误!未找到引用源。

设()()()[12]T e e n e n e n N =+++,,,则有()ˆˆ()()e k y k y y k =-=-Φθ错误!未找到引用源。

(1.14)最小二乘估计要求残差的平方和为最小,即按照指数函数 错误!未找到引用源。

(1.15)为最小来确定估值错误!未找到引用源。

求J 对错误!未找到引用源。

的偏导数并令其等于0可得错误!未找到引用源。

(1.16)ˆ=T T ΦΦΦθy (1.17)错误!未找到引用源。

由式(1.17)可得错误!未找到引用源。

的最小二乘估计1()ˆ-=T T ΦΦθΦ y 错误!未找到引用源。

(1.18)3. 渐消记忆递推最小二乘法渐消记忆递推最小二乘法是能克服最小二乘法数据饱和的一种方法,这种方法加入了遗忘因子,能够带来数据饱和现象的改善。

下面直接介绍渐消记忆递推最小二乘法的计算原理:1ˆˆˆ(1)()()[(1)(1)()]()()(1)[(1)()(1)]1(1){()()()[(1)()(1)]},01(1)[(),(1),(1),(),(1),,(1)]T T T T T N N K N y n N N N K N P N N N P N N P N P N K N K N N P N N N y n N y n N y N u n N u n N u N ϕϕλϕϕλϕϕλλϕ-++++-+=+++++=-+++<<+=-+-+--+++-+=…,?θθθ其中λ为遗忘因子。

4. 仿真及结果考虑如下仿真对象:(2) 1.2(1)0.8()(2)0.5(1)0.2()()y k y k y k u k u k u k v k +-++=+++++其中, v ( k ) 为服从 N (0,1) 分布的白噪声。

输入信号 u ( k ) 采用 M 序列,幅度为 1。

用simulink 产生在M 序列作用下的输出值,仿真框图如下:Number渐消记忆递推最小二乘法的程序如下:endN = Count-10;Epsaler = 10^10;nb = 3;na = 2;lamda = 1-4e-3;Saita = zeros(na+nb,N);P_N = Epsaler*eye(na+nb);Lowercase_Fai_N1 = zeros(na + nb,1);Lowercase_Fai_N = zeros(na + nb,1);for i = 1 : Nfor j = 1 : nbLowercase_Fai_N1(j) = R_input(i + j - 1);endfor j = 1 : naLowercase_Fai_N1(nb+j) = -R_out(i + j - 1);endfor j = 1 : na + nbLowercase_Fai_N(j) = Lowercase_Fai_N1(na + nb + 1- j);endK_N = P_N * Lowercase_Fai_N /(lamda + Lowercase_Fai_N'* P_N * Lowercase_Fai_N);Saita(:,1+i) = Saita(:,i) + K_N * ( R_out(na + i) -Lowercase_Fai_N'*Saita(:,i));P_N =1/ lamda*(P_N - K_N * K_N' * (lamda + Lowercase_Fai_N' * P_N * Lowercase_Fai_N));endSaita(:,1+N)My_xlable = '\fontsize{15} \fontname{Times new roman} Step';My_ylable{1} = '\fontsize{15} \fontname{Times new roman} \alpha 0';My_ylable{2} = '\fontsize{15} \fontname{Times new roman} \alpha 1'; My_ylable{3} = '\fontsize{15} \fontname{Times new roman} \beta 0'; My_ylable{4} = '\fontsize{15} \fontname{Times new roman} \beta 1'; My_ylable{5} = '\fontsize{15} \fontname{Times new roman} \beta 2'; My_title = '\fontsize{15} \fontname{Times new roman} Estimation'; %画出递推最小二乘辨识结果for i = 1: na+nbfigure(i);plot(Saita(i,:),'k-','LineWidth',2.5);xlabel(My_xlable);ylabel(My_ylable{i});title (My_title);grid on;end%画出输入信号figure;plot(Time,R_input,'k-','LineWidth',1);xlabel('\fontsize{12} \fontname{Times new roman} Time (Seconds)'); ylabel('\fontsize{12} \fontname{Times new roman} Amplitude');title ('\fontsize{12} \fontname{Times new roman} Input-Signal');grid on;axis([0,Time(Count),-2,2]);%画出输出信号figure;plot(Time,R_out,'k-','LineWidth',1);xlabel('\fontsize{12} \fontname{Times new roman} Time (Seconds)'); ylabel('\fontsize{12} \fontname{Times new roman} Amplitude');title ('\fontsize{12} \fontname{Times new roman} Output-Signal'); grid on;当114e λ=--时,仿真结果如下所示:Stepα 0EstimationStepα 1EstimationStepβ 0EstimationStepβ 1EstimationStepβ 2Estimation参数的估计结果为: ans = -1.1949 0.7954 1.00580.5053 0.2015而普通递推最小二乘的结果如下:Stepα 0EstimationStepα 1 EstimationStepβ 0EstimationStepβ 1EstimationStepβ 2Estimation可以发现渐消记忆法还是能够较好的解决数据饱和现象的。

相关主题