遗传算法优化神经网络MATLAB实现-_第1页
遗传算法优化神经网络MATLAB实现-_第2页
遗传算法优化神经网络MATLAB实现-_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、遗传算法优化的BP神经网络建模 (1)主程序 %清空环境变量 clc clear %读取数据 load data.mat %节点个数 inputnum=4; hiddennum=5; outputnum=1; %训练数据和预测数据 input_train=input(1:150,:' input_test=input(151:200,:' output_train=output(1:150' output_test=output(151:200' %选连样本输入输出数据归一化 inputn,inputps=mapminmax(input_train; outpu

2、tn,outputps=mapminmax(output_train; %构建网络 net=newff(inputn,outputn,hiddennum; % 遗传算法参数初始化 maxgen=200; %进化代数,即迭代次数 sizepop=30; %种群规模 pcross=0.9; %交叉概率选择,0和1之间 pmutation=0.1; %变异概率选择,0和1之间 %节点总数 numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum; lenchrom=ones(1,numsum; bound=-3*ones(nu

3、msum,1 3*ones(numsum,1; %数据范围 %-种群初始化-%- - individuals=struct('fitness',zeros(1,sizepop, 'chrom',; %将种群信息定义为一个结构体 %avgfitness=; %每一代种群的平均适应度 bestfitness=; %每一代种群的最佳适应度 bestchrom=; %适应度最好的染色体 %初始化种群 for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:=Code(lenchrom,bound; %编码 x=individuals

4、.chrom(i,:; %计算适应度 individuals.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=

5、avgfitness bestfitness; % 迭代求解最佳初始阀值和权值 % 进化开始 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

6、,sizepop,i,maxgen,bound; % 计算适应度 for j=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; % 代替上一次进化中最

7、好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness; bestchrom=indi 行性 flag2=test(lenchrom,bound,chrom(index(2,:; %检验染色体2的可行性 if flag1*flag2=0 flag=0; else flag=1; end %如果两个染色体不是都可行,则重新交叉 end end ret=chrom; (6变异操作Mutation.m function ret=Mutation(pmutation,lenchrom,chrom,sizepop,num,max

8、gen,bound % 本函数完成变异操作 % pcorss input : 变异概率 % lenchrom input : 染色体长度 % chrom input : 染色体群 % sizepop input : 种群规模 % opts input : 变异方法的选择 % pop input : 当前种群的进化代数和最大的进化代数信息 % bound input : 每个个体的上届和下届 % maxgen input :最大迭代次数 % num input : 当前迭代次数 % ret output : 变异后的染色体 for i=1:sizepop %每一轮for循环中,可能会进行一次变异

9、操作,染色体是随机选择的,变异位置也是随机选择的, %但该轮for循环中是否进行变异操作则由变异概率决定(continue控制) % 随机选择一个染色体进行变异 pick=rand; while pick=0 pick=rand; end index=ceil(pick*sizepop; % 变异概率决定该轮循环是否进行变异 pick=rand; if pick>pmutation continue; end flag=0; while flag=0 % 变异位置 pick=rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom; %随机选择了染色体变异的位置,即选择了第pos个变量进行变异 pick=rand; %变异开始 fg=(rand*(1-num/maxgen2; if pick>0.5 chrom(i,pos=chrom(i,pos+(bound(pos,2-c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论