系统辨识最小二乘法解剖.docx
《系统辨识最小二乘法解剖.docx》由会员分享,可在线阅读,更多相关《系统辨识最小二乘法解剖.docx(17页珍藏版)》请在冰点文库上搜索。
系统辨识最小二乘法解剖
最小二乘法参数辨识
系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。
现代控制理论中的一个分支。
通过辨识建立数学模型的U的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设讣控制器。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
对系统进行控制的主要问题是根据系统的特性设计控制输入,使输出满足预先规定的要求。
而系统辨识所研究的问题恰好是这些问题的逆问题。
通常,预先给定一个模型类u={M}(即给定一类已知结构的模型),一类输入信号u和等价准则J=L(y,yM)(—般情况下,J是误差函数,是过程输出y和模型输出yM的一个泛函);然后选择使误差函数J达到最小的模型,作为辨识所要求的结果。
系统辨识包括两个方面:
结构辨识和参数估计。
在实际的辨识过程中,随着使用的方法不同,结构辨识和参数估计这两个方面并不是截然分开的,而是可以交织在一起进行的。
2系统辨识的目的
在提出和解决一个辨识问题时,明确最终使用模型的□的是至关重要的。
它对模型类(模型结构)、输入信号和等价准则的选择都有很大的影响。
通过辨识建立数学模型通常有四个目的。
1估计具有特定物理意义的参数有些表征系统行为的重要参数是难以直接测量的,例如在生理、生态、环境、经济等系统中就常有这种情况。
这就需要通过能观测到的输入输出数据,用辨识的方法去估计那些参数。
2仿真仿真的核心是要建立一个能模仿真实系统行为的模型。
用于系统分析的仿真模型要求能真实反映系统的特性。
用于系统设讣的仿真,则强调设计参数能正确地符合它本身的物理意义。
3预测这是辨识的一个重要应用方面,其目的是用迄今为止系统的可测量的输入和输岀去预测系统输出的未来的演变。
例如最常见的气象预报,洪水预报,其他如太阳黑子预报,市场价格的预测,河流污染物含量的预测等。
预测模型辨识的等价准则主要是使预测误差平方和最小。
只要预测误差小就是好的预测模型,对模型的结构及参数则很少再有其他要求。
这时辨识的准则和模型应用的目的是一致的,因此可以得到较好的预测模型。
4控制为了设计控制系统就需要知道描述系统动态特性的数学模型,建立这些模型的U的在于设计控制器。
建立什么样的模型合适,取决于设计的方法和准备采用的控制策略。
3系统辨识的方法
经典方法:
经典的系统辨识方法的发展已经比较成熟和完善,他包括阶跃响应法、脉冲响应法、频率响应法、相关分析法、谱分析法、最小二乘法和极大似然法等。
其中最小二乘法(LS)是一种经典的和最基本的,也是应用最广泛的方法。
但是,最小二乘估计是非一致的,是有偏差的,所以为了克服他的缺陷,而形成了一些以最小二乘法为基础的系统辨识方法:
广义最小二乘法(GIS)、辅助变量法(IV).增广最小二乘法(El,S)和广义最小二乘法(GIS),以及将一般的最小二乘法与其他方法相结合的方法,有最小二乘两步法(COR-IS)和随机逼近算法等。
经典的系统辨识方法还存在着一定的不足:
(1)利用最小二乘法的系统辨识法一般要求输入信号已知,并且必须具有较丰富的变化,然而,这一点在某些动态系统中,系统的输入常常无法保证;
(2)极大似然法计算耗费大,可能得到的是损失函数的局部极小值;(3)经典的辨识方法对于某些复杂系统在一些情况下无能为力。
现代方法:
随着系统的复杂化和对模型精确度要求的提高,系统辨识方法在不断发展,特别是非线性系统辨识方法。
主要有:
1、集员系统辨识法
在1979年集员辨识首先岀现于Fogel撰写的文献中,1982年Fogel和Huang乂对其做了进一步的改进。
集员辨识是假设在噪声或噪声功率未知但有界UBB(UnknownButBounded)的情况下,利用数据提供的信息给参数或传递函数确定一个总是包含真参数或传递函数的成员集(例如椭球体、多面体、平行六边体等)。
不同的实际应用对象,集员成员集的定义也不同。
集员辨识理论已广泛应用到多传感器信息融合处理、软测量技术、通讯、信号处理、鲁棒控制及故障检测等方面。
2、多层递阶系统辨识法
多层递阶方法的主要思想为:
以时变参数模型的辨识方法作为基础,在输入输出等价的意义下,把一大类非
线性模型化为多层线性模型,为非线性系统的建模给出了一个十分有效的途径。
3、神经网络系统辨识法
山于人工神经网络具有良好的非线性映射能力、自学习适应能力和并行信息处理能力,为解决未知不确定非线性系统的辨识问题提供了一条新的思路。
与传统的基于算法的辨识方法相比较,人工神经网络用于系统辨识具有以下优点:
(1)不要求建立实际系统的辨识格式,可以省去对系统建模这一步骤;
(2)可以对本质非线性系统进行辨识;(3)辨识的收敛速度仅与神经网络的本身及所采用的学习算法有关:
(4)通过调节神经元之间的连接权即可使网络的输出来逼近系统的输出;(5)神经网络也是系统的一个物理实现,可以用在在线控制。
4、模糊逻辑系统辨识法
模糊逻辑理论用模糊集合理论,从系统输入和输出的量测值来辨识系统的模糊模型,也是系统辨识的一个新的
和有效的方法,在非线性系统辨识领域中有十分广泛的应用。
模糊逻辑辨识具有独特的优越性:
能够有效地辨识复杂和病态结构的系统:
能够有效地辨识具有大时延、时变、多输入单输出的非线性复杂系统;可以辨识性能优越的人类控制器;可以得到被控对象的定性与定量相结合的模型。
模糊逻辑建模方法的主要内容可分为两个层次:
一是模型结构的辨识,另一个是模型参数的佔计。
典型的模糊结构辨识方法有:
模糊网格法、自适应模糊网格法、模糊聚类法及模糊搜索树法等。
5、小波网络系统辨识法
小波网络是在小波分解的基础上提出的一种前馈神经网络口,使用小波网络进行动态系统辨识,成为神经网络辨识的一种新的方法。
小波分析在理论上保证了小波网络在非线性函数逼近中所具有的快速性、准确性和全局收敛性等优点。
小波理论在系统辨识中,尤其在非线性系统辨识中的应用潜力越来越大,为不确定的复杂的非线性系统辨识提供了一种新的有效途径,其具有良好的应用前景。
1.设计内容
设SISO系统的差分方程为:
Z伙)+qz伙-1)+d忆伙一2)=bu{k-1)4-b:
u(k-2)4-u(k)式(IT)
参数取真值为:
少T1H60.4830.570.42],利用NIATLAB的M语言辨识系统中的未知参数①、①、S、仇。
2.设计过程
2.1建立系统
设SIS0系统的差分方程为:
z伙)+d]Z伙—1)+n2z(k—2)=hxii(k—1)+伙—2)+u(k)式(2-1)
参数取真值为:
少=[1・3760.4830.570.42],利用陋巩屈的M语言辨识系统中的未知参数坷、幻、9、b2o
要求:
用参数的真值利用差分方程求出z伙)作为测量值,u伙)是均值为0,方差为0.1、0.5和0.01的不相关随机序列。
选取一种最小二乘算法辨识。
2.2最小二乘简介
2.2.1最小二乘法的概念与应用
对工程实践中测得的数据进行理论分析,用恰当的函数去模拟数据原型是一类十分重要的问题,最常用的逼近原则是让实测数据和估计数据之间的距离平方和最小,这即是最小二乘法。
最小二乘法是一种经典的数据处理方法。
在系统辨识领域中,最小二乘法是一种得到广泛应用的估计方法,可用于动态系统,静态系统,线性系统,非线性系统。
可用于离线估计,也可用于在线佔计。
这种辨识方法主要用于在线辨识。
在随机的环境下,利用最小二乘法时,并不要求观测数据提供其概率统计方面的信息,而其佔•计结果,却有相出好的统计特性。
MATLAB是一套高性能数字计算和可视化软件,它集成概念设计,算法开发,建模仿真,实时实现于一体,构成了一个使用方便、界面友好的用户环境,其强大的扩展功能为各领域的应用提供了基础。
对于比较复杂的生产过程,山于过程的输入输出信号一般总是可以测量的,而且过程的动态特性必然表现在这些输入输出数据中,那么就可以利用输入输出数据所提供的信息来建立过程的数学模型。
这种建模方法就称为系统辨识。
把辨识建模称作“黑箱遂模
2.2.2最小二乘法系统辨识结构:
本文把待辨识的过程看作“黑箱S只考虑过程的输入输出特性,而不强调过程的内部机理。
图中,输入u(k)和输出z(k)是可以观测的;G(z-1)是系统模型,用来描述系统的输入输出特性;N(z-1)是噪声模型,v(k)是白噪声,e(k)是有色噪声,根据表示定理:
可以表示为
e(k)=N(z-1)v(k)
G(zr=3(=)7V(z」)=°(r)
A(z')=1+ezi+~+•••+n,'
V
耐)詁宀…+
j^C(z_1)=1+qz-1+c2z-2+---+cnnzTHa
[£>(z_)=£z」+〃2广2+…+dntz~nh
2.2.3准则函数
设一个随机序列&伙),"(12…,厶)}的均值是参数0的线性函数:
E{z伙)}=hT(k)0f其中爪幻是可测的数据向量,那么利用随机序列的一个实现,使准则函数:
"&)=习粼)一只⑹&]
e(式2-2)
达到极小的参数估计值&称作&的最小二乘估计。
最小二乘格式:
Z伙)=/r(w+e⑹,&为模型参数向量,讹)为零均值随机噪声。
2.3广义最小二乘法
2.3.1广义最小二乘数学模型
川以比伙)=B(Q加伙)+〒呛)
式中,u(k)和Z伙)表示系统的输入输出;v(k)是均值为零的不相关的随机
序列;且
4(昇)=1+®昇+①厂+…+%⑺
C(z~l)=l+clZ~l+c2^-2+…+c„.厂「
2.3.2广义最小二乘递推算法如下
0伙)=6伙—1)+K,(k)[Z/伙)-h;伙)0伙-1)]
K,伙)=P伙—l)h伙)[h;伙比伙—l)hy伙)+lp
P伙)=[I—K")h:
伙)]P伙—1)
'Q伙)=@伙—1)+K「伙)[歟)-h:
伙)0伙—1)]K")=£伙—l)h,伙)[h:
伙)P,伙一l)h<⑹+1]-*
P.伙)=[I-K伙)h:
伙)]P伙一1)
式中
h,伙)二[—乙伙一1),…,一Z,伙一"„),匕伙一1),…“伙一.hW=[-e(i-l),--^-n)]r
e(k)=z(k)-h{伙)做)
2.3.3广义最小二乘递推算法的计算步骤:
0(0)=^(充分小的实向量)
1.给定初始条件
Pt(0)=^I(a为充分大的数)
6(0)=0
出(0)=1
Q=…卫,byby
3利用式彳1,构造h伙);
h伙)二日(k一1),伙一“J,叫(k-1),…“伙—nJYA
0伙)=&R-1)+K,(R)[z,伙)-h;伙)弟-1)]
4利用式{K伙)=P伙-l)h伙)[h:
伙)P伙—l)h伙)+\]递推计算6伙);
P,伙)=[I—K,伙)h;伙)]P,伙—1)
5利用2伙)=z伙)-h伙)6伙)和h伙)=[一Z仇一1),…,一z伙一门),从k一1),…,"伙-nb)]!
计算2伙);
6根据h(k)=[-e伙-1),…,-&伙-卩)『来构造h“);
0伙)=0伙—1)+K,伙)[歟)-h:
伙)反伙一1)]7利用K”)=P伙一l)h.伙)[h:
伙比仇一l)h(灯+1『
P”)=[I—K")h:
(灯]P,伙—1)
返回第2步进行迭代计算,直至获得满意的辨识结果。
2.3.4广义最小二乘递推算法的MATLAB仿真(程序源代码见附录)
考虑仿真对象
z(k)二-1.376z(k-1)-o.483z(k-2)+0.57u(k-1)+0.42u(k-2)+v(k)
式中,v(k)是均值为0,方差为0.01、0.1和0.5的不相关随机序列。
输入信号釆用4阶M序列,幅度为1。
选择如下形式的辨识模型
图2广义最小二乘法辨识实例结构图
其中取cl二0,c2二0.
3.结果分析及算法优化
山于辨识算法中输入或噪声信号为不相关随机序列,所以每次辨识结果都不完全相同。
但是,在相同输入、相同的噪声.相同的步长条件下,精度大体相同。
算法优化方案:
(1)使用M序列(具有近似白噪声的性质)为输入信号;
(2)增加数据长度去L:
(3)减小噪声信号v(k)的方差。
3.1广义最小二乘递推算法的的MATLAB仿真结果及分析
(1)、输入选用题目给出的30个随机数,即数据长度去L二30,噪声选用均值为零,方差分别为0・5、0.1和0.01的随机序列,辨识结果如表3-2-1
表中给出了三种情况下辨识参数结果即表中的佔计值,估计值与真值的相对误差
表3~2~1
真值
噪声方差为0.5
噪声方差为0.1
噪声方差为0.01
估计值
相对误差
估计值
相对误差
估计值
相对误差
al
1.376
1.5534
-2.0105
1.4730
0.1231
1.3723
0.0063
a2
0.483
0.6884
-2.0054
0.5892
0.1061
0.1815
0.0231
bl
0.57
0.7916
-2.0216
0.6790
0.1821
0.5799
0.0510
b2
0.42
0.6213
-2.0013
0.5361
0.1161
0.4218
0.0234
输入M序列,30步,噪声方差0.5时:
J(0)=SK=iLz(k)-hT(k)BJ2=12.556;
输入M序列,30步,噪声方差0.1时:
J(0)=Sh=iLz(k)-hT(k)0J2=2.5822;输入M序列,30步,噪声方差0.01时:
J(B)=比二上(k)-hT(k)日J2=O.1706;
(2).输入均采用H序列,噪声选择均值为零,方差为0.5、0.1和0.01的随机序列,辨识步长均为300步,辨识结果如表3-2-2o
表中给出了三种情况下辨识参数结果即表中的估计值,估计值与真值的相对误差.
表3-2-2
真值
噪声方差为0.5
噪声方差为0.1
噪声方差为0.01
估计值
相对误差
估计值
相对误差
估计值
相对误差
al
1.376
1.3660
-0.0280
1.3750
0.0079
1.3729
0.0005
a2
0.483
0.4749
-0・0701
0.4859
0.0292
0.4710
-0.0068
bl
0.57
0.6613
-0.1249
0.5827
0.0582
0.5720
0.0051
b2
0.42
0.4112
-0.0823
0.4344
0.0983
0.4183
-0.0049
输入采用M序列,噪声方差0.5时:
J(9)=-hT(k)6JM35.288
输入采用M序列,噪声方差0.1时:
1(9)=SJc=1Lz(k)-hT(k)eJ2=28.917
输入釆用m序列,噪声方差o.01时:
j(e)=Sh=iLz(k)-hT(k)ejm.7374
(3)数据结果分析:
输入釆用M序列比采用随机序列得到的辨识效果更好。
噪声均值相等时,方差越大,辨识效果越差,反之,方差越小辨识效果越好。
可以通过增加步长的方法提高辨识精度。
下面给岀以M序列作为输入,噪声均值为零,方差为0.01的随机序列,数据长度去L二30,得到的变化曲线图:
fileInsertToolsHesktcp
Xinda/E&lp
a
□0|B□
下面给岀以M序列作为输入,噪声均值为零,方差为0.01的不相关随机序列,数据长度去L二300,得到的变化曲线图:
Fi^ure2
1:
14IditVittvIziscrtTool:
Desktopfldnd^vK«lp
DQC1昌|A|皱Q警©|相|口目|国回
4.参考文献
1)侯媛彬,汪梅,王立琦,系统辨识及其MATLAB仿真,科学出版社,2004年
2)方崇智,萧德云,过程辨识,清华大学出版社,1988年
3)贾秋玲,袁冬莉,栾云凤,基于MATLAB7.x/Simulink/Stateflow系统仿真、分析及设计,西北工业大学出版社,2006年
4)李言俊,张科,系统辨识理论及应用,国防工业岀版社,2006年
课程心得
上完这门课的笫一次课,使我懂得了:
辨识就是在输入和输出数据的基础上,从一组给定的模型中,确定一个与所测系统等价的模型。
了解了辨识的一些基本概念。
知道了辨识的内容和步骤。
我们要判断一个模型是否和原有系统等价或者近似,就好像我们要认识一个人一样,必须通过多种方法,方式去测试他。
这就需要我们给这模型充分的最优激励。
这个形象的比喻让我记忆深刻。
接着我们学习了随即过程的概念及相关知识,谱密度函数等内容,这些为学习口噪声,M序列等典型激励提供了基础。
有了激励U(k)必然有相应的输出Z(k)与之对应,通过一批一批的数据U(k)、Z(k),通过用Matlab编程,能够算出模型的参数。
最后学习的是模型的辨识方法,辨识方法有很多,但根据模型形式可以分成两类。
一类是非参数模型辨识方法,另一种是参数模型辨识方法。
笫一种方法乂称经典辨识方法,不必事先确定模型具体结构,可适用于复杂的线性过程。
第二种方法乂称现代辨识方法,必须假定一种结构模型,通过极小化模型与过程之间的误差准则函数来确定模型的参数。
这种方法中我们主要学得是最小二乘类方法。
这次作业选择了一个较简单的仿真实例,通过这次作业知道了一些函数和指令的使用方法。
以后我想我会努力用一些时间来继续学习这两方面的知识内容。
最后感谢张老师的辛勤教育与谆谆教诲!
附录
广义最小二乘递推算法的MATLAB仿真程序源代码:
clear徭淸理工作间变量
L二300;%M序列的周期yl=l;y2=l;y3=l;y4=0;%四个移位寄存器的输出初始值
fori=l:
L;%:
开始循环,长度为L
xl=xor(y3,y4);%第一个移位寄存器的输入是第三个与第四个移位寄存器的输岀的“或”
x2=yl;%第二个移位寄存器的输入是第一个移位寄存器的输岀
x3=y2;%第三个移位寄存器的输入是第二个移位寄存器的输出
x4=y3;%第四个移位寄存器的输入是第三个移位寄存器的输岀y(i)=y4;%取出第四个移位寄存器的幅值为"0"和"1"的输岀信号,即M序列ify(i)>0.5,u(i)=-l;%如果M序列的值为"1",辨识的输入信号取“-1”elseu(i)=l;%如果M序列的值为"0",辨识的输入信号取“1”end%小循环结束
yl=xl;y2=x2;y3=x3:
y4=x4;%为F—次的输入信号做准备
end%大循环结束,产生输入信号ufigure(l);%第一个图形
stem(u),gridon%显示岀输入信号M序列径线图并给图形加上网格
v=normrnd(0,sqrt(O.Ol),1,300);%均值为零的,方差为0.01或0.5或0.1不相关的随机噪声
ze
(2)=0;ze(l)=0;
fork=3:
301;
ze(k)=0*ze(k-1)+0*ze(k-2)+v(k-1);%C(z~l)=l,即取cl=0,c2=0
end
z
(2)=0;z(l)=0;%设2的前两个初始值为零
fork=3:
301;%循环变量从3到301
z(k)=-l.376*z(k-l)-0.483*z(k-2)+57*u(k-l)+0.42*u(k-2)+ze(k-l);%输出采样信号(测量值)
end
%RGLS广义最小二乘辨识
C0二[0.00010.00010.00010.0001]';%直接给岀被辨识参数的初始值,即一个充分小的实向量
pfO二10飞*eye(4,4);%直接给出初始状态P0,即一个充分大的实数单位矩阵ce0=[0.0010.0011,;
pe0=eye(2,2);
C二[cO,zeros(4,299)];%被辨识参数矩阵的初始值及大小ce=[ce0,zeros(2,299)];
e二zeros(4,300);%相对误差的初始值及大小
ee=zeros(2,300);
s二0;
%广义最小二乘递推算法的计算步骤
fork=3:
300;
zf(k)=z(k)+ce(l,k-2)*z(k-l)+ce(2,k-2)*z(k-2);
uf(k)=u(k)+ce(l,k-2)*u(k-l)+ce(2,k-2)*u(k-2);
hfl=[-zf(k-l),-zf(k-2),uf(k-1),uf(k-2)]';
x=hfr*pf0*hf1+1;xl=inv(x);%开始求K(k)kl=pfO*hfl*xl;%求出K的值
dl=zf(k)-hfr*cO;cl=c0+kl*dl;%求被辨识参数c
el=cl-c0;鸟求参数当前值与上一次的值的差值
e2二el./cO;%求参数的相对变化
e(:
k)二e2;%把当前相对变化的列向量加入误差矩阵的最后一列
c0二cl;%新获得的参数作为下一次递推的旧参数
c(:
k)=cl;%把辨识参数c列向量加入辨识参数矩阵的最后一列pfi=pfo-ki*hfr*pfo;%求出p(k)的值
pfo=pf1;%给下次用
hl=[一z(k-l),-z(k-2),u(k~l),u(k-2)]';
s=s+(z(k)-hr*[1.6420.7150.390.35]')2%求准则函数ee(k)=z(k)-hl'*cl;
hel=[-ee(kT),-ee(k-2)]';
x=heT*peO*hel+l;xl=inv(x);
kl=peO*hel*xl;
dl=ee(k)-heT*ce0;
cel=ceO+kl*dl;
pel=peO-kl*her*peO;
ce0=cel;
ce(:
k)=cel;
peO=pel;
end$大循环结朿
c%辨识参数变化矩阵
%显示被辨识参数及其误差(收敛)情况
%分离参数
al=c(1,1:
300);a2=c(2,1:
300);bl=c(3,1:
300);b2=c(4,1:
300);
cl=ce(1,1:
300);c2=ce(2,1:
300);
eal=e(l,1:
300);ea2=e(2,1:
300):
ebl=e(3,1:
300);eb2=e(4,1:
300);
figure
(2);%第二个图形
i二1:
300;%横坐标从1