您好,欢迎访问三七文档
(1)设计内容:选用多层前馈网络和BP算法对下面系统进行辨识仿真,控制对象如下:))1(),(),2(),1(),(()1(kukukykykyfkypppp其中2223435321543211)1(),,,,(xxxxxxxxxxxxxf(2)设计要求:选用多层前馈网络和BP算法课题进行辨识仿真,给出辨识结果并写出研究报告。(3)设计思想首先:BP网络只要有足够多的隐层和隐层节点,BP网络可以逼近任何非线性映射关系,且具有较强的泛化能力,输入和输出之间的关联信息分布的存储在网络的连接权中,个别网络的损坏只对输入输出具有较小的影响,其具有较好的容错性。其次:神经网络的系统辨识不依赖于实际的系统模型,只根据系统的输入\输出数据拟合出与实际系统相似的模型,并且通过在测试数据作用下实际输出与期望输出的误差不断的调整辨识模型的参数,从而使辨识系统更加接近实际模型。神经网络的优点还有其收敛速度不依赖于待辨识系统的维数,只与神经网络本身及其所选用的算法有关系。(4)仿真流程(1)、测试数据神经网络估计器常规控制器对象tydtetuty+-gˆ,ˆf1000750,)40/sin(6.0)32/sin(1.0)25/sin(3.0750500,0.1500250,0.1250,)25/sin()(kkkkkkkkku(2)、这里用不同的的函数来激发隐层神经源输出。a:当激发函数为:y=(1-exp(-x))/(1+exp(-x))时仿真结果为:functiony=sigmoid2(x)y=(1-exp(-x))/(1+exp(-x))end“.”的曲线为训练数据,直线曲线为对象的输出,+为系统辨识的结果。由系统仿真的结果可以说明神经网络能很好的辨识实际系统。上图为神经网络辨识系统的误差曲线,由图可知辨识系统误差逐渐降低并趋于稳定。b:当激发函数为:y=1/(1+exp(-x))functiony=sigmoid2(x)y=1/(1+exp(-x))end仿真结果如下:“.”的曲线为训练数据,直线曲线为对象的输出,“+”为系统辨识的结果。由系统仿真的结果可以说明神经网络能很好的辨识实际系统。绿色的曲线为训练数据,红色曲线为对象的输出,蓝色为系统辨识的结果。由系统仿真的结果可以说明神经网络能很好的辨识实际系统。数据分析:有以上的仿真结果可以得到采用不同的不同的函数激发隐层输出,结果bp算法的计算结果是不同的,也就是说隐层激发函数会影响函数的逼近,会影响bp的结果。(5)程序代码%BP算法的实现%初始化程序clearall;in=5;hid=5;out=1;N=2000;w2=rand(hid,in)-0.5;w3=rand(out,hid)-0.5;a=0.1;y(:,1:3)=zeros(1,3);u=2*(rand(1,N)-.5);fork=4:Ny(k)=(y(k-1)*y(k-2)*y(k-3)*u(k-2)*(y(k-3)-1)+u(k-1))/(1+y(k-2)^2+y(k-3)^2);end%前向计算fork=4:Nx1=[y(k-1)y(k-2)y(k-3)u(k-1)u(k-2)];fori=1:hidx2(:,i)=sigmoid2(x1*w2(i,:)');endy1(k)=sigmoid2(x2*w3');e(k)=y(k)-y1(k);e1(k)=e(k)*e(k);mste(k)=sum(e1)/k;disp([kmste(k)]);%误差反向传播delt3=e(k)*(1-y1(k))*(1+y1(k))/2;forj=1:hiddelt2(j)=(1+x2(j)).*(1-x2(j))./2.*delt3.*w3(j);w3(j)=w3(j)+a*delt3*x2(j)endforj=1:hidforl=1:inw2(j,l)=w2(j,l)+a*delt2(j)*x1(l);endendend%Endofthetrain%测试数据产生fork=1:250u(k)=sin(pi*k/25);endfork=250:500u(k)=1;endfork=501:750u(k)=-1;endfork=751:1000u(k)=0.3*sin(pi*k/25)+0.1*sin(pi*k/32)+0.6*sin(pi*k/40);endfork=4:1000y(k)=(y(k-1)*y(k-2)*y(k-3)*u(k-2)*(y(k-3)-1)+u(k-1))/(1+y(k-2)^2+y(k-3)^2);endfork=4:1000x1=[y(k-1)y(k-2)y(k-3)u(k-1)u(k-2)]fori=1:hidx2(:,i)=sigmoid2(x1*w2(i,:)');endy1(k)=sigmoid2(x2*w3');ee(k)=y(k)-y1(k);disp([k,ee(k)]);end%学习结果显示clft=1:1000;subplot(211),plot(t,u(t),'.',t,y(t),'-',t,y1(t),'+')legend('控制对象输入','控制对象输出','辨识系统')xlabel('Timek')gridsubplot(212),plot(mste)xlabel('Timek')
本文标题:课程设计报告
链接地址:https://www.777doc.com/doc-7339386 .html