遗传算法matlab实现.docx

遗传算法matlab实现.docx

ID:59127538

大小:17.71 KB

页数:8页

时间:2020-09-13

遗传算法matlab实现.docx_第1页
遗传算法matlab实现.docx_第2页
遗传算法matlab实现.docx_第3页
遗传算法matlab实现.docx_第4页
遗传算法matlab实现.docx_第5页
资源描述:

《遗传算法matlab实现.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MATLAB程序实现初始化:%初始化种群%pop_size:种群大小%chromo_size:染色体长度functioninitilize(pop_size,chromo_size)globalpop;fori=1:pop_sizeforj=1:chromo_sizepop(i,j)=round(rand);endendcleari;clearj;计算适应度:(该函数应该根据具体问题进行修改,这里优化的函数是前述的一维函数)%计算种群个体适应度,对不同的优化目标,此处需要改写%pop_size:种群大小%chromo_size:染色体长度f

2、unctionfitness(pop_size,chromo_size)globalfitness_value;globalpop;globalG;fori=1:pop_sizefitness_value(i)=0.;endfori=1:pop_sizeforj=1:chromo_sizeifpop(i,j)==1fitness_value(i)=fitness_value(i)+2^(j-1);endendfitness_value(i)=-1+fitness_value(i)*(3.-(-1.))/(2^chromo_size-1);f

3、itness_value(i)=-(fitness_value(i)-1).^2+4;endcleari;clearj;对个体按照适应度大小进行排序:%对个体按适应度大小进行排序,并且保存最佳个体%pop_size:种群大小%chromo_size:染色体长度functionrank(pop_size,chromo_size)globalfitness_value;globalfitness_table;globalfitness_avg;globalbest_fitness;globalbest_individual;globalbest

4、_generation;globalpop;globalG;fori=1:pop_sizefitness_table(i)=0.;endmin=1;temp=1;temp1(chromo_size)=0;fori=1:pop_sizemin=i;forj=i+1:pop_sizeiffitness_value(j)

5、)=temp;fork=1:chromo_sizetemp1(k)=pop(i,k);pop(i,k)=pop(min,k);pop(min,k)=temp1(k);endendendfori=1:pop_sizeifi==1fitness_table(i)=fitness_table(i)+fitness_value(i);elsefitness_table(i)=fitness_table(i-1)+fitness_value(i);endendfitness_tablefitness_avg(G)=fitness_table(pop_

6、size)/pop_size;iffitness_value(pop_size)>best_fitnessbest_fitness=fitness_value(pop_size);best_generation=G;forj=1:chromo_sizebest_individual(j)=pop(pop_size,j);endendcleari;clearj;cleark;clearmin;cleartemp;cleartemp1;选择操作:%轮盘赌选择操作%pop_size:种群大小%chromo_size:染色体长度%cross_rat

7、e:是否精英选择functionselection(pop_size,chromo_size,elitism)globalpop;globalfitness_table;fori=1:pop_sizer=rand*fitness_table(pop_size);first=1;last=pop_size;mid=round((last+first)/2);idx=-1;while(first<=last)&&(idx==-1)ifr>fitness_table(mid)first=mid;elseifr

8、last=mid;elseidx=mid;break;endmid=round((last+first)/2);if(last-first)==1idx=last;break;e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。