您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 递推最小二乘法的应用
1递推最小二乘法在电厂模型辨识中的应用电厂中大多数热工对象可以用一阶或二阶有迟延和非迟延的模型来表示,对这些模型中参数的辨识,递推最小二乘法是一种较好的方法。本文以火电厂部分典型一阶模型为例子,借助于某电厂现场数据,分别对以下几种环节进行辨识。1.1一阶惯性环节火电厂中,来自锅炉的过热蒸汽,经高压调节汽门和导汽管道进入高压缸膨胀做功,高压缸的排汽回到锅炉再热器被重新加热,加热后的蒸汽经中压调节汽门进入中低压缸进一步膨胀做功,做功后的乏汽最终排入凝汽器变成凝结水,一般中压调节汽门的开度是高压调节汽门的3倍,即在机组负荷大于额定的30%或者滑压运行时,汽轮机的中压调门是完全开启的。因此,在简化模型中,汽机侧调速器一级压力与机组有功功率可以简化为一阶惯性环节如下:111()1KGsTs将以上环节离散化,并写成差分方程的形式11111111()[(1)](1)(1)()/,/ykaykbukvkaTTTbKTT其中u为调速器一级压力,y为机组有功功率,()vk为零均值方差为1的高斯白噪声。该论文依据递推最小二乘法原理,借助MATLAB工具编写程序,设定合适的初始值和加权因子进行参数辨识,辨识结果为11ˆˆ2.7547,0.9193ab,由11ˆˆ,ab可得到134.12K,112.36sT进而得到系统的传递函数为:134.12()12.361Gss下面运用递推最小二乘法对所得结果进行仿真:假设134.12K,112.36sT已知,采样时间为1sT,则计算可得111111()/(112.36)/12.360.9191/34.12/12.362.7670aTTTbKTT用M序列作为输入信号,得到输出信号,然后对参数进行辨识。程序如下:%最小二乘的递推算法%Z(k+1)=0.9191*Z(k)+2.7670*u(k)+v(k)%========================================clearclc%==========400个产生M序列作为输入===============x=[010110111];%initialvaluen=403;%n为脉冲数目M=[];%存放M序列fori=1:ntemp=xor(x(4),x(9));M(i)=x(9);forj=9:-1:2x(j)=x(j-1);endx(1)=temp;end%===========产生均值为0,方差为1的高斯白噪声=========v=randn(1,400);%==============产生观测序列z=================z=zeros(402,1);z(1)=-1;fori=2:401z(i)=0.9191*z(i-1)+2.7670*M(i-1)+v(i-1);end%递推求解P=10*eye(2);%协方差阵Theta=zeros(2,401);%参数的估计值,存放中间过程估值Theta(:,1)=[0.001;0.001];%参数估计值初始值a1=0.001,b1=0.001u=0.99;%遗忘因子fori=2:401h=[-z(i-1);M(i-1)];K=P*h/(h'*P*h+u);%增益矩阵Theta(:,i)=Theta(:,i-1)+K*(z(i)-h'*Theta(:,i-1));P=(eye(2)-K*h')*P/u;end%==========================输出结果及作图=============================disp('参数a1b1的估计值:')Theta(:,401)a1=zeros(1,401);a1(1,:)=-0.9191;b1=zeros(1,401);b1(1,:)=2.7670;i=1:401;figure(1)plot(i,Theta(1,:),'m',i,a1,'g',i,Theta(2,:),'b',i,b1,'r');e_a1=Theta(1,:)-a1;%a1的误差e_b1=Theta(2,:)-b1;%b1的误差figure(2)plot(i,e_a1,'m',i,e_b1,'b');%误差曲线图递推算法仿真曲线如图1所示:图1递推算法仿真曲线误差曲线如图2所示:图2误差曲线得到400个数据的a1b1估计值为:11ˆˆ0.9208,2.6564ab由估计值可得1ˆ12.63sT,1ˆ33.55K由递推算法仿真曲线图1可知,参数估计收敛速度较快,占用内存较少。由误差曲线图2可知,a1辨识效果较好,b1辨识误差较大。1.2一阶惯性迟延环节炉内燃烧与传热过程可以简化为磨煤机动态和水冷壁动态两个部分,在此我们将两者合并为一个一阶惯性迟延环节,研究表明此简化也能较好反映锅炉传热过程:212()()1sKeGsBsTs式中,B为炉膛的燃料量,为已知量;D为锅炉总有效吸热量;τ为纯迟延时间;K2、T2为传递函数的系数。针对纯迟延的参数应用改进的具有最小损失函数的递推最小二乘法辨识,具体辨识算法为:12,12()()()()[(k1),,(),(1),,u(td)][,,,,,,]nmykhkekhkyyknutdmaaabbbB为已知量,令:22()1sKeGsTs对τ、K2、T2进行辨识。假设采样时间1sT,*dT。将以上环节离散化,并写成差分方程的形式11111111()[(1)](1)(1)()/,/ykaykbukdvkaTTTbKTT相对于递推最小二乘法h(k)中多了一个时间常数d,其中,参数h(k)是各个参数的函数,输入输出观测向量是纯迟延时间d的函数,残差e(k)取决于各参数的拟合误差,最小二乘估计是使目标函数J(k,d)=min[J(k,d)]最小,由于d为离散值,当已知纯迟延时间在某一范围[dmin,dmax]内时,可以采用最小损失函数的方法将纯延迟时间d和其他参数向量一起辨识。具体实现方法可以分2步来进行:(1)假设纯迟延时间已知,利用最小二乘法对其他参数进行估计ˆˆ(,)min[(,)]JdJd;例如假设d=2,则11()[(1)](3)(1)ykaykbukvk类似一阶惯性环节,可以利用递推最小二乘法辨识程序辨识出11ˆˆˆ(,)ab。检查是否满足收敛条件或者达到搜索次数,若满足收敛条件或达到搜索次数,则输出辨识结果,否则进行下一步。(2)对于关于纯迟延的损失函数进行优化,得到纯迟延的估计值ˆˆˆ(,)min[(,)]iJdJd,di∈[dmin,dmax],再返回上一步。最小化损失函数的递推最小二乘算法程序框图如图3所示:2总结采用递推最小二乘法,基于某电厂的实时数据,在MATLAB中编写递推最小二乘法辨识程序,程序中可以根据实际需要设定采样时间和初始值,选取适当的初始值对火电厂两个典型的一阶惯性环节进行参数辨识。火电厂建模过程中,基于实际数据可以利用递推最小二乘法对其中的参数进行辨识,此方法具有收敛速度快、占用内存少、精度较高的优点。火电厂中的大部分环节都可以简化为一阶惯性环节,对一些建模要求较高的二阶或者更高阶数的模型,将其离散化后,也可利用本文中程序进行参数辨识,这种算法适用于现场热工对象的参数辨识。辨识数据导入,纯迟延时间设定递推最小二乘法运算输出辨识结果满足收敛条件或者达到搜索次数优化纯迟延时间图3最小化损失函数的递推最小二乘算法
本文标题:递推最小二乘法的应用
链接地址:https://www.777doc.com/doc-2017107 .html