案例4:遗传算法优化神经网络-更好拟合函数.

上传人:s9****2 文档编号:470125363 上传时间:2022-12-29 格式:DOC 页数:15 大小:109.50KB
返回 下载 相关 举报
案例4:遗传算法优化神经网络-更好拟合函数._第1页
第1页 / 共15页
案例4:遗传算法优化神经网络-更好拟合函数._第2页
第2页 / 共15页
案例4:遗传算法优化神经网络-更好拟合函数._第3页
第3页 / 共15页
案例4:遗传算法优化神经网络-更好拟合函数._第4页
第4页 / 共15页
案例4:遗传算法优化神经网络-更好拟合函数._第5页
第5页 / 共15页
点击查看更多>>
资源描述

《案例4:遗传算法优化神经网络-更好拟合函数.》由会员分享,可在线阅读,更多相关《案例4:遗传算法优化神经网络-更好拟合函数.(15页珍藏版)》请在金锄头文库上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。遗传算法优化神经网络-更好拟合函数1.案例背景 BP神经网络是一种反向传递并且能够修正误差的多层映射函数,它通过对未知系统的输入输出参数进行学习之后,便可以联想记忆表达该系统。但是由于BP网络是在梯度法基础上推导出来的,要求目标函数连续可导,在进化学习的过程中熟练速度慢,容易陷入局部最优,找不到全局最优值。并且由于BP网络的权值和阀值在选择上是随机值,每次的初始值都不一样,造成每次训练学习预测的结果都有所差别。遗传算法是一种全局搜索算法,把BP神经网络和遗传算法有机融合,充分发挥遗传算法的全局搜索能力和BP神经网络的局部搜索能力,利用遗传算法来弥

2、补权值和阀值选择上的随机性缺陷,得到更好的预测结果。本案例用遗传算法来优化神经网络用于标准函数预测,通过仿真实验表明该算法的有效性。2.模型建立2.1预测函数2.2 模型建立 遗传算法优化BP网络的基本原理就是用遗传算法来优化BP网络的初始权值和阀值,使优化后的BP网络能够更好的预测系统输出。遗传算法优化BP网络主要包括种群初始化,适应度函数,交叉算子,选择算子和变异算子等。2.3 算法模型3.编程实现3.1代码分析 用matlabr2009编程实现神经网络遗传算法寻找系统极值,采用cell工具把遗传算法主函数分为以下几个部分:Contents 清空环境变量 网络结构确定 遗传算法参数初始化

3、迭代求解最佳初始阀值和权值 遗传算法结果分析 把最优初始阀值权值赋予网络预测 BP网络训练 BP网络预测主要的代码段分析如下:3.2结果分析 采用遗传算法优化神经网络,并且用优化好的神经网络进行系统极值预测,根据测试函数是2输入1输出,所以构建的BP网络结构是2-5-1,一共去2000组函数的输入输出,用其中的1900组做训练,100组做预测。遗传算法的基本参数为个体采用浮点数编码法,个体长度为21,交叉概率为0.4,变异概率为0.2,种群规模是20,总进化次数是50次,最后得到的遗传算法优化过程中最优个体适应度值变化如下所示:4 案例扩展4.1 网络优化方法的选择4.2 算法的局限性清空环境

4、变量clcclear网络结构建立%读取数据load data input output%节点个数inputnum=2;hiddennum=5;outputnum=1;%训练数据和预测数据input_train=input(1:1900,:);input_test=input(1901:2000,:);output_train=output(1:1900);output_test=output(1901:2000);%选连样本输入输出数据归一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train

5、);%构建网络net=newff(inputn,outputn,hiddennum);遗传算法参数初始化maxgen=50; %进化代数,即迭代次数sizepop=20; %种群规模pcross=0.4; %交叉概率选择,0和1之间pmutation=0.2; %变异概率选择,0和1之间%节点总数numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;lenchrom=ones(1,numsum);bound=-3*ones(numsum,1) 3*ones(numsum,1); %数据范围%-种群初始化-indivi

6、duals=struct(fitness,zeros(1,sizepop), chrom,); %将种群信息定义为一个结构体avgfitness=; %每一代种群的平均适应度bestfitness=; %每一代种群的最佳适应度bestchrom=; %适应度最好的染色体%初始化种群for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,bound); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量) x=individuals.chrom(i,:); %计算适应度 individual

7、s.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); %染色体的适应度end%找最好的染色体bestfitness bestindex=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色体avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度% 记录每一代进化中最好的适应度和平均适应度trace=avgfitness bestfitness;迭代求解最佳初始阀值

8、和权值进化开始for i=1:maxgen i % 选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound); % 计算适应度 for j

9、=1:sizepop x=individuals.chrom(j,:); %解码 individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); end %找到最小和最大适应度的染色体及它们在种群中的位置 newbestfitness,newbestindex=min(individuals.fitness); worestfitness,worestindex=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitnessnewbestfitnes

10、s bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness; avgfitness=sum(individuals.fitness)/sizepop; trace=trace;avgfitness bestfitness; %记录每一代进化中最好的适应度和平均适应度endi = 1i = 2i = 3i = 4i = 5i

11、 = 6i = 7i = 8i = 9i = 10i = 11i = 12i = 13i = 14i = 15i = 16i = 17i = 18i = 19i = 20i = 21i = 22i = 23i = 24i = 25i = 26i = 27i = 28i = 29i = 30i = 31i = 32i = 33i = 34i = 35i = 36i = 37i = 38i = 39i = 40i = 41i = 42i = 43i = 44i = 45i = 46i = 47i = 48i = 49i = 50遗传算法结果分析 figure(1)r c=size(trace);plot(1:r,trace(:,2),b-);title(适应度曲线 终止代数 num2str(maxgen);xlabel(进化代数);ylabel(适应度);legend(平均适应度,最佳适应度);disp(适应度 变量);x=bestchrom;Warning: Ignoring extra legend entries. 适应度 变量把最优初始阀值权值赋予网络预测%用遗传算法优化的BP网络进行值预测w1=x(1:inputnum*hiddennum);B1=x(inputnum*hid

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号