BP及RBP神经网络逼近

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《BP及RBP神经网络逼近、药品销售预测、基本遗传算法设计实验》实验指导书雷菊阳编机械工程学院2012年6月实验一、BP及RBP神经网络逼近一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、加深对BP算法的理解和掌握4、掌握工具包入口初始化及调用5、加深BP、RBP神经网络对任意函数逼近的理解二、实验内容1、MATLAB基本指令和语法。2、BP算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序1、BP算法的matlab实现程序%lr为学习步长,err_goal期望误差最小值,max_epoch训练的最大次数,隐层和输出层初值为零lr=0.05;err_goal=0.01;max_epoch=3000;a=0.9;Oi=0;Ok=0;%两组训练集和目标值X=[11;-1-1;11];T=[11;11];%初始化wki,wij(M为输入节点j的数量;q为隐层节点i的数量;L为输出节点k的数量)[M,N]=size(X);q=8;[L,N]=size(T);wij=rand(q,M);wki=rand(L,q);wij0=zeros(size(wij));wki0=zeros(size(wki));forepoch=1:max_epoch%计算隐层各神经元输出NETi=wij*X;forj=1:Nfori=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元输出NETk=wki*Oi;fori=1:Nfork=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endend%计算误差函数E=((T-Ok)'*(T-Ok))/2;if(Eerr_goal)break;end%调整输出层加权系数deltak=Ok.*(1-Ok).*(T-Ok);w=wki;wki=wki+lr*deltak*Oi';wki0=w;%调整隐层加权系数deltai=Oi.*(1-Oi).*(deltak'*wki)';w=wij;wij=wij+lr*deltai*X';wij0=w;endepoch%显示计算次数%根据训练好的wki,wij和给定的输入计算输出X1=X;%计算隐层各神经元的输出NETi=wij*X1;forj=1:Nfori=1:qOi(i,j)=2/(1+exp(-NETi(i,j)))-1;endend%计算输出层各神经元的输出NETk=wki*Oi;fori=1:Nfork=1:LOk(k,i)=2/(1+exp(-NETk(k,i)))-1;endendOk%显示网络输出层的输出2、BP逼近任意函数算法的matlab实现程序X=-4:0.08:4;T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);net=newff(minmax(X),[20,1],{'tansig','purelin'});net.trainParam.epochs=15000;net.trainParam.goal=0.001;net=train(net,X,T);X1=-1:0.01:1;y=sim(net,X1);figure;plot(X1,y,'-r',X,T,':b','LineWidth',2);-4-3-2-10123400.511.522.533.RBF能够逼近任意的非线性函数X=-4:0.08:4;T=1.1*(1-X+2*X.^2).*exp(-X.^2./2);net=newrb(X,T,0.002,1);X1=-1:0.01:1;y=sim(net,X1);figure;plot(X1,y,'-r',X,T,':b','LineWidth',3);-4-3-2-10123400.511.522.53-4-3-2-1012342468101214五、思考题1、试设计一个函数并将结果用图画出。2、假设训练样本X=[11;-1-1;11],目标输出T=[11;11],建立一个输入层3个神经元,单隐层8个神经元,输出层2个神经元的网络结构,其中隐层、输出层神经元的传递函数均为sigmoid函数,(1)试利用BP学习算法实现该网络的训练过程;(2)利用增加动量项的BP学习算法实现该网络;(3)观察两种学习算法的运行结果,比较两种算法的优缺点3、训练参数的改变对逼近性能的影响实验二、药品销售预测实验一、实验目的1、了解利用神经网络处理实际问题的一般思路2、掌握MATLAB中常用神经网络函数二、实验内容1、数据预处理。2、神经网络的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序下表为某药品的销售情况,现构建一个如下的三层BP神经网络对药品的销售进行预测:输入层有三个结点,隐含层结点数为5,隐含层的激活函数为tansig;输出层结点数为1个,输出层的激活函数为logsig,并利用此网络对药品的销售量进行预测,预测方法采用滚动预测方式,即用前三个月的销售量来预测第四个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、3、4月的销售量为输入预测第5个月的销售量.如此反复直至满足预测精度要求为止。月份123456销量205623952600229816341600月份789101112销量187314781900150020461556程序实现:production=[205623952600229816341600187314781900150020461556];gyhvector=(production-1478)/(2600-1478);P=[0.51520.81731.0000;0.81731.00000.7308;1.00000.73080.1390;0.73080.13900.1087;0.13900.10870.3520;0.10870.35200.0000;]';T=[0.73080.13900.10870.35200.00000.3761];net=newff([01;01;01],[5,1],{'tansig','logsig'},'traingd');net.trainParam.epochs=500;%%%%可以改net.trainParam.goal=0.005;LP.lr=0.1;net=train(net,P,T);test=[0.01960.50620.0695;0.37610.01960.5062;00.37610.0196;0.51520.81731.0000;0.81731.00000.7308;1.00000.73080.1390;0.73080.13900.1087;0.13900.10870.3520;0.10870.35200.0000;0.352000.3761;00.37610.0196;0.37610.01960.5062;]';y=sim(net,test);x=[1:12];figure;plot(x,gyhvector,'rs',x,y,'bo');set(gca,'xtick',x);实验结果:goal=0.005五、思考题简述利用MATLAB神经网络函数处理实际工程问题的一般方法和步骤实验三、基本遗传算法设计实验一、实验目的1、了解基本遗传算法全局优化一般思路2、掌握选择、交叉、变异算子如何实现3、轮盘赌方法(roulettewheelmodel)如何用程序方法实现4、适应度函数设计方法二、实验内容1、初始化处理。2、神经网络的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入参考程序3、设置断点,运行程序,观察运行结果四、参考程序1、初始化functionresult=Initial(length)fori=1:lengthr=rand();result(i)=round(r);end2、Matlab实现----十进制与二进制转换functiony=Dec(a,b,x,L)base=2.^((L-1):-1:0);y=dot(base,x);y=a+y*(b-a)/(2^L-1);3、Matlab实现---适应度函数计算functionF=fitness(x)F=20+x+10*sin(4*x)+8*cos(3*x);4、Matlab实现----GA()function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm)L=24;%L=ceil(log((b-a)/eps+1))L=24x=zeros(NP,L);fori=1:NP;x(i,:)=Initial(L);fx(i)=fitness(Dec(a,b,x(i,:),L));endfork=1:NGsumfx=sum(fx);px=fx/sumfx;ppx=0;ppx(1)=px(1);fori=2:NPppx(i)=ppx(i-1)+px(i);endfori=1:NPsita=rand();forn=1:NPifsita=ppx(n)SelFather=n;break;endendSelMother=floor(rand()*(NP-1))+1;posCut=floor(rand()*(L-2))+1;r1=rand();ifr1=pcnx(i,1:posCut)=x(SelFather,1:posCut);nx(i,(posCut+1):L)=x(SelMother,(posCut+1):L);r2=rand();ifr2=pmposMut=round(rand()*(L-1)+1);nx(i,posMut)=~nx(i,posMut);endelsenx(i,:)=x(SelFather,:);endendx=nx;fori=1:NPfx(i)=fitness(Dec(a,b,x(i,:),L));endendfv=-inf;fori=1:NPfitx=fitness(Dec(a,b,x(i,:),L));iffitxfvfv=fitx;xv=Dec(a,b,x(i,:),L);endend5、Matlab实现----主程序a=0;b=10;NP=10;%%%%改NG=2000;%%%该pc=0.6;pm=0.04;[xv,fv]=GA(@fitness,a,b,NP,NG,pc,pm);disp“最优个体xvdisp“最优适应度fv6、实验结果五、思考题1、求y=x*x在【0,31】的最大值2、如何求最小值并考虑怎样修改程序:f(x)=x2-10x+16【0,31】的最小值?实验四、模糊PID控制器设计实验一、实验目的1、掌握常规PID算法如何用程序来实现2、掌握过程输出如何仿真3、模糊PID控制器程序设计方法4、比较两种控制器的控制效果二、实验要求具体要求如下:1、模糊PID控制器设计方法。2、过程输出仿真。3、Matlab程序设计实现及调试。三、实验原理对于已知系统的传递函数为:,假设系统给定为阶跃值R=10,系统的初始值R(0)=0,试分析设计:a、常规的PID控制器b、模糊PID控制器c、比较两种控制器的控制效果控制规则:If(erroriserror0)then(duisdu0)(1)0.51()101SGSSe-=+If(erroriserror=0)then(duisdu=0)(1)If(erroriserror0)then(duisdu0)(1)If(erroriserror0)and(deisde0)then(duisdu0)(1)If(erroriserror0)and(deisde0)then(duisdu0)(1)过程输出仿真:四阶龙格库塔法三、实验参考程序模糊PID控制器:常规的PID控制器:05001000150020002500300002468101214五、思考题1、模糊控

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功