您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 数学建模实验四:Matlab神经网络以及应用于汽油辛烷值预测
实验四:Matlab神经网络以及应用于汽油辛烷值预测专业年级:2014级信息与计算科学1班姓名:黄志锐学号:201430120110一、实验目的1.掌握MATLAB创建BP神经网络并应用于拟合非线性函数2.掌握MATLAB创建REF神经网络并应用于拟合非线性函数3.掌握MATLAB创建BP神经网络和REF神经网络解决实际问题4.了解MATLAB神经网络并行运算二、实验内容1.建立BP神经网络拟合非线性函数2212yxx第一步数据选择和归一化根据非线性函数方程随机得到该函数的2000组数据,将数据存贮在data.mat文件中(下载后拷贝到Matlab当前目录),其中input是函数输入数据,output是函数输出数据。从输入输出数据中随机选取1900中数据作为网络训练数据,100组作为网络测试数据,并对数据进行归一化处理。第二步建立和训练BP神经网络构建BP神经网络,用训练数据训练,使网络对非线性函数输出具有预测能力。第三步BP神经网络预测用训练好的BP神经网络预测非线性函数输出。第四步结果分析通过BP神经网络预测输出和期望输出分析BP神经网络的拟合能力。详细MATLAB代码如下:BP.m:1234567891011121314151617181920212223242526clc;clear%%训练数据预测数据提取及归一化%载入输入输出数据loaddatainputoutput%从1到2000间随机排序k=rand(1,2000);[m,n]=sort(k);%找出训练数据和预测数据input_train=input(n(1:1900),:)';output_train=output(n(1:1900));input_test=input(n(1901:2000),:)';output_test=output(n(1901:2000));%选连样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);%%构建和训练BP神经网络%BP神经网络构建net=newff(inputn,outputn,5);%网络参数配置(迭代次数,学习率,目标)net.trainParam.epochs=100;net.trainParam.lr=0.1;net.trainParam.goal=0.00004;%网络训练,并记录训练时间tic;%starttimerecordnet=train(net,inputn,outputn);t1=toc;%(end-start)timerecord27282930313233343536373839404142434445464748495051525354disp(['神经网络的训练时间为',num2str(t1),'秒']);%%BP网络预测%预测数据归一化inputn_test=mapminmax('apply',input_test,inputps);%网络预测输出an=sim(net,inputn_test);%网络输出反归一化BPoutput=mapminmax('reverse',an,outputps);%%结果分析figure(1);plot(BPoutput,':og');holdon;plot(output_test,'-*');legend('预测输出','期望输出');title('BP网络预测输出','fontsize',12);ylabel('函数输出','fontsize',12);xlabel('样本','fontsize',12);%预测误差error=BPoutput-output_test;figure(2);plot(error,'-*');title('BP神经网络预测误差','fontsize',12);ylabel('误差','fontsize',12);xlabel('样本','fontsize',12);figure(3);plot((output_test-BPoutput)./BPoutput,'-*');title('BP神经网络预测误差百分比');errorsum=sum(abs(error));MATLAB代码运行结果截图如下所示:MATLAB代码运行结果如下所示:图1BP神经网络预测输出图示图2BP神经网络预测误差图示图3BP神经网络预测误差百分比图示2.建立RBF神经网络拟合非线性函数22112220+10cos(2)10cos(2)yxxxx第一步建立exactRBF神经网络拟合,观察拟合效果详细MATLAB代码如下:RBF1.m:12345%RBF网络的回归--非线性函数回归的实现%建立exactRBF神经网络拟合,观察拟合效果clear;clc%%产生输入输出数据interval=0.01;67891011121314151617181920212223242526x1=-1.5:interval:1.5;x2=-1.5:interval:1.5;%按照函数先求得相应的函数值,作为网络的输出。F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);%%网络建立和训练%网络建立输入为[x1;x2],输出为F。Spread使用默认。net=newrbe([x1;x2],F);%%网络的效果验证%将原数据回代,测试网络效果:ty=sim(net,[x1;x2]);%使用图像来看网络对非线性函数的拟合效果figure();plot3(x1,x2,F,'rd');holdon;plot3(x1,x2,ty,'b-.');view(113,36);title('可视化的方法观察准确RBF神经网络的拟合效果');xlabel('x1');ylabel('x2');zlabel('F');gridon;MATLAB代码运行结果如下所示:图4RBF神经网络拟合效果图第二步建立approximateRBF神经网络拟合详细MATLAB代码如下:RBF2.m:123456789101112%RBF网络的回归--非线性函数回归的实现%建立approximateRBF神经网络拟合clear;clc%%产生训练样本(训练输入,训练输出)%ld为样本例数ld=400;x=rand(2,ld);%将x转换到[-1.51.5]之间x=(x-0.5)*1.5*2;x1=x(1,:);x2=x(2,:);%计算网络输出F值1314151617181920212223242526272829303132333435363738394041F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);%%建立RBF神经网络%采用approximateRBF神经网络。spread为默认值net=newrb(x,F);%%建立测试样本%generatethetestingdatainterval=0.1;[i,j]=meshgrid(-1.5:interval:1.5);row=size(i);tx1=i(:);tx1=tx1';tx2=j(:);tx2=tx2';tx=[tx1;tx2];%%使用建立的RBF网络进行模拟,得出网络输出ty=sim(net,tx);%%使用图像,画出3维图%真正的函数图像interval=0.1;[x1,x2]=meshgrid(-1.5:interval:1.5);F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);subplot(1,3,1);mesh(x1,x2,F);zlim([0,60]);title('真正的函数图像')%网络得出的函数图像v=reshape(ty,row);subplot(1,3,2);mesh(i,j,v);4243444546474849zlim([0,60]);title('RBF神经网络结果')%误差图像subplot(1,3,3);mesh(x1,x2,F-v);zlim([0,60]);title('误差图像');set(gcf,'position',[300,250,900,400]);MATLAB代码运行结果截图如下所示:MATLAB代码运行结果如下所示:图5RBF神经网络拟合结果图示讨论题:对于非线性函数220.252220.11212(){sin[50()]1}yxxxx(1)分别建立BP神经网络和RBF神经网络拟合并比较两者的性能差异。(2)就BP神经网络验证单线程运算和并行运算的运行时间差异。(1)详细MATLAB代码如下:f.m:12functiony=f(x1,x2)y=(x1.^2+x2.^2).^0.25.*(sin(50*(x1.^2+x2.^2).^0.1).^2+1);BP_RBF1.m:12345678910111213141516clc;clear%%产生训练样本(训练输入,训练输出)a=-2;b=2;interval=0.01;temp=a:interval:b;x=repmat(temp,2,1);y=f(x(1,:),x(2,:));%%训练数据归一化input_train=x;output_train=y;[input_n,input_ps]=mapminmax(input_train);[output_n,output_ps]=mapminmax(output_train);%%构建和训练BP神经网络%BP神经网络构建hiddenSizes=500;1718192021222324252627282930313233343536373839404142trainFcn='trainlm';%net=newff(input_n,output_n,hiddenSizes);net=fitnet(hiddenSizes,trainFcn);net.trainParam.epochs=300;net.trainParam.goal=0.00004;net.trainParam.lr=0.1;net=train(net,input_n,output_n);%%BP网络预测temp=a:interval:b;input_test=repmat(temp,2,1);output_test=f(input_test(1,:),input_test(2,:));inputn_test=mapminmax('apply',input_test,input_ps);prediction=sim(net,inputn_test);BP_output=mapminmax('reverse',prediction,output_ps);%%结果分析%使用图像来看网络对非线性函数的拟合效果figure();plot3(x(1,:),x(2,:),y,'rd');holdon;plot3(input_test(1,:),input_test(2,:),BP_output,'b-.');view(113,36);title('可视化的方法观察BP神经网络的拟合效果');xlabel('x1');ylabel('x2');zlabel('y');gridon;MATLAB代码运行结果截图如下所示:MATLAB代码运行结果如下所示:图6BP神经网络拟合效果图详细MATLAB代码如下:f.m:12functiony=f(x1,x2)y=(x1.^2+x2.^2).^0.25.*(sin(50*(x1.^2+x2.^2).^0.1).^2+1);BP_RBF2.m:1234567891011121314151617181920212223242526clc;clear%%产生训练样本(训练输入,训练输出)a=-2;b=2;interval=0.01;temp=a:interval:b;x=repmat(temp,2,1
本文标题:数学建模实验四:Matlab神经网络以及应用于汽油辛烷值预测
链接地址:https://www.777doc.com/doc-6982742 .html