ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:308.47KB ,
资源ID:20438795      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20438795.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(神经网络遗传算法函数极值寻优Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

神经网络遗传算法函数极值寻优Word文档格式.docx

1、inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);input_train、output_train是训练输入、输出原始数据,inputn、outputn是归一化后的数据,inputps、outputps为数据归一化后得到的结构体,里面包含了数据的最大值、最小值和平均值等信息,可以用于测试数据归一化和反归一化。测试数据归一化和反归一化程序一般如下:数据归一化inputn_test=mapminmax(apply,input_test,inputps);%网络输出反归一化BPoutput=m

2、apminmax(reverse,an,outputps);input_test是预测输入数据,input_test是归一化后的预测数据,apply表示根据inputps进行归一化;an是网络预测结果,outputs是训练输出数据归一化得到的结构体,BPoutput是反归一化后的网络预测输出,reverse表示对数据进行反归一化。2 BP神经网络训练 用训练数据训练神经网络,使网络对非线性函数具有预测能力.MATLAB神经网络工具箱中自带BP神经网络函数,使用时只需要调用相关的子程序即可.BP神经网络训练主要用到newff、sim两个函数.1.newff:BP神经网络参数设置函数函数功能:构建

3、一个BP网络.函数形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)2.train:BP神经网络训练函数用训练数据训练BP神经网络。函数形式:net,tr=train(NET,X,T,Pi,Ai)2.3 BP神经网络预测用训练好的BP神经网络预测非线性函数输出,并通过BP神经网络预测输出和期望输出分析BP网络的分析能力.MATLAB神经网络工具箱提供的BP神经网络预测函数是sim.1. sim:BP神经网络预测函数用训练好的BP神经网络预测函数输出y=sim(net,y) 以上三个函数的具体用法可以参考其自带的帮助,本文不作详述。根据需要拟合的函数有1个

4、输入参数、1个输出参数,确定BP神经网络为15-1。取函数的4000组输入输出数据,从中随机选取3900组训练网络,100组数据测试网络性能,网络训练好后用于非线性函数输出。3 遗传算法实现2.3.1 种群初始化 个体编码方法为实数编码,每个个体均为一个实数串,由输入层与隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4部分组成。个体包含了神经网络全部权值和阈值,在网络结构已知的情况下,就可以构成一个结构、权值、阈值确定的神经网络。3。2 适应度函数 根据个体得到的BP神经网络的初始权值和阈值,用训练数据训练BP神经网络后预测系统输出,把训练好的BP神经网络预测输出作为个体适应

5、度的值。2.3。3 选择操作遗传算法选择操作有轮盘赌法、锦标赛法等多种方法,本文采用采用轮盘赌法,即基于适应度比例的选择策略,每个个体i的选择为:其中,为个体i的适应度值,N为种群的个体数目。4 交叉操作 由于个体采用实数编码,所以交叉操作方法采用实数交叉法,d第k个染色体和第l个染色体在j位的交叉操作方法如下:其中,b是0,1间的随机数。3.5 变异操作 选取第i个个体的第j个基因进行变异,变异操作方法如下:式中,为基因的上界;的下界;;为一个随机数;g为当前迭代次数;是最大进化次数;r为0,1之间的随机数三、编程实现3.1 数据准备根据拟合函数得到4000组输入input和输出数据outp

6、ut,存入data中。for i=1:4000 input(i,:)=3*rand; output(i)=-input(i)(input(i)2-3。2input(i)+2.89)(input(i)-3)/2;endoutput=output;save data input output2 BP神经网络主函数 对于4000组数据,采用其中3900组用来训练神经网络,最后100组用来测试网络拟合性能。%清空环境变量clccleardata;tic% 训练数据预测数据提取及归一化%下载输入输出数据load data output input从1到4000间随机排序k=rand(1,4000);m,

7、n=sort(k);%找出训练数据和预测数据input_train=input(n(1:3900),:)output_train=output(n(1:3900),:input_test=input(n(3901:4000),:);output_test=output(n(3901:4000),:%选连样本输入输出数据归一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);%BP网络训练初始化网络结构net=newff(inputn,outputn,5);net.trainParam。e

8、pochs=100;net。trainParam.lr=0.1;trainParam。goal=0.0000004;网络训练net=train(net,inputn,outputn);%BP网络预测预测数据归一化apply,input_test,inputps);网络预测输出an=sim(net,inputn_test);BPoutput=mapminmax(reverse,an,outputps);%结果分析figure(1)plot(BPoutput,:og)hold onplot(output_test,*);legend(预测输出,期望输出,fontsize,12)title(BP网络

9、预测输出,fontsize,12)xlabel(样本fontsize,12)ylabel(输出print dtiff -r600 43%预测误差error=BPoutputoutput_test;figure(2)plot(error,*)title(神经网络预测误差figure(3)plot(output_testBPoutput)。/BPoutput,*);title(神经网络预测误差百分比errorsum=sum(abs(error)tocsave data net inputps outputps3 编码函数function ret=Code(lenchrom,bound)% lenc

10、hrom input : 染色体长度 bound input : 变量的取值范围% ret output: 染色体的编码值flag=0;while flag=0pick=rand(1,length(lenchrom);%线性插值,编码结果以实数向量存入ret中ret=bound(:,1)+(bound(:,2)-bound(:,1)。*pick; flag=test(lenchrom,bound,ret); 检验染色体的可行性4 适应度函数function fitness = fun(x) x input 个体% fitness output 个体适应度值load data net input

11、ps outputpsx=xinputn_test=mapminmax(apply,x,inputps);an=sim(net,inputn_test);fitness=mapminmax(reverse,an,outputps);5 选择操作function ret=select(individuals,sizepop) individuals input : 种群信息% sizepop input : 种群规模% ret output : 经过选择后的种群fitness1=individuals。fitness;sumfitness=sum(fitness1);sumf=fitness1。

12、/sumfitness;index=;for i=1:sizepop %转sizepop次轮盘 pick=rand; while pick=0 end for i=1:sizepop pick=pick-sumf(i); if pickpmutation continue; flag=0; % 变异位置 pos=ceil(picksum(lenchrom); v=chrom(i,pos); v1=vbound(pos,1); v2=bound(pos,2)-v; 变异开始 if pick0.5 delta=v2(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v+

13、delta; else delta=v1(1-pick(1pop(1)/pop(2)2); chrom(i,pos)=vdelta; end 变异结束 flag=test(lenchrom,bound,chrom(i,: %检验染色体的可行性8 遗传算法主函数清空环境变量%初始化遗传算法参数%初始化参数maxgen=50; 进化代数,即迭代次数sizepop=30; %种群规模pcross=0.4; %交叉概率选择,0和1之间pmutation=0.2; %变异概率选择,0和1之间lenchrom=1; 每个变量的字串长度,如果是浮点变量,则长度都为1bound=0 3; 数据范围indivi

14、duals=struct(fitness,zeros(1,sizepop), chrom,);%将种群信息定义为一个结构体avgfitness=; %每一代种群的平均适应度bestfitness=; 每一代种群的最佳适应度bestchrom=; 适应度最好的染色体%初始化种群计算适应度值初始化种群sizepop %随机产生一个种群 individuals。chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); 计算适应度 individuals.fitness(i)=fun(x); 染色体的适应度找最好的染色体bestfitness

15、 bestindex=max(individuals。fitness);bestchrom=individuals。chrom(bestindex,: %最好的染色体avgfitness=sum(individuals。fitness)/sizepop; %染色体的平均适应度%记录每一代进化中最好的适应度和平均适应度trace=avgfitness bestfitness;迭代寻优进化开始maxgen i 选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals。fitness)/sizepop; %交叉chr

16、om=Cross(pcross,lenchrom,individuals。chrom,sizepop,bound); %变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals。chrom,sizepop,i maxgen,bound); for j=1: x=individuals。chrom(j,: %解码 individuals.fitness(j)=fun(x); 找到最小和最大适应度的染色体及它们在种群中的位置 newbestfitness,newbestindex=max(individuals。fitness); w

17、orestfitness,worestindex=min(individuals.fitness); %代替上一次进化中最好的染色体 if bestfitnessnewbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,: individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness;trace=trace;avgfitness bestfitness;记录每一代进化中最

18、好的适应度和平均适应度%进化结束r c=size(trace);plot(1:r,trace(:,2),r-);适应度曲线,fontsize,12);xlabel(进化代数,fontsize,12);ylabel(适应度,fontsize,12);axis(0,100,0,1)disp(Xmax Fmaxx=bestchrom;窗口显示disp(x bestfitness);四、结果分析4.1 BP神经网络拟合结果分析 因为个体的适应度值为神经网络的预测值,因此BP神经网络预测精度对最优位置的寻找具有非常重要的意义.由于寻优非线性函数有1个输入参数和1个输出参数,所以构成BP神经网络的结构为1

19、-5-1。共取非线性函数4000组数据,从中选择3900组数据训练BP神经网络,100组数据作为测试数据BP神经网络拟合性能,BP神经网络预测输出和期望输出对比如图所示:图41 BP网络预测输出图42 BP网络预测误差图4-3 BP网络预测误差百分比从BP神经网络预测结果可以看出,BP神经网络可以准确预测非线性函数输出,可以把网络预测输出近似看成函数实际输出。4.2遗传算法寻优结果分析 BP神经网络训练结束后,可以用遗传算法寻找该非线性函数的最小值。遗传算法的迭代次数是50次,种群规模是30,交叉概率为0。2,采用浮点数编码,个体长度为2,优化过程中最优化个体适应度值变化曲线如图所示:图4-4 遗传算法适应度曲线遗传算法得到的最优化个体适应度为0.5373,最优个体为0。9652,可以发现该结果与精确值(0.537,0.9655)坐标非常接近,说明神经网络遗传算法函数极值寻优这种方法非常有效。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1