遗传算法MATLAB完整代码(不用工具箱)(共4页).doc
《遗传算法MATLAB完整代码(不用工具箱)(共4页).doc》由会员分享,可在线阅读,更多相关《遗传算法MATLAB完整代码(不用工具箱)(共4页).doc(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上遗传算法解决简单问题%主程序:用遗传算法求解y=200*exp(-0.05*x).*sin(x)在区间-2,2上的最大值clc;clear all;close all;global BitLengthglobal boundsbeginglobal boundsendbounds=-2,2;precision=0.0001;boundsbegin=bounds(:,1);boundsend=bounds(:,2);%计算如果满足求解精度至少需要多长的染色体BitLength=ceil(log2(boundsend-boundsbegin)./precision);po
2、psize=50; %初始种群大小Generationmax=12; %最大代数pcrossover=0.90; %交配概率pmutation=0.09; %变异概率%产生初始种群population=round(rand(popsize,BitLength);%计算适应度,返回适应度Fitvalue和累计概率cumsumpFitvalue,cumsump=fitnessfun(population);Generation=1;while GenerationGenerationmax+1 for j=1:2:popsize %选择操作 seln=selection(population,cu
3、msump); %交叉操作 scro=crossover(population,seln,pcrossover); scnew(j,:)=scro(1,:); scnew(j+1,:)=scro(2,:); %变异操作 smnew(j,:)=mutation(scnew(j,:),pmutation); smnew(j+1,:)=mutation(scnew(j+1,:),pmutation); end population=scnew; %产生了新的种群 %计算新种群的适应度 Fitvalue,cumsump=fitnessfun(population); %记录当前代最好的适应度和平均适应
4、度 fmax,nmax=max(Fitvalue); fmean=mean(Fitvalue); ymax(Generation)=fmax; ymean(Generation)=fmean; %记录当前代的最佳染色体个体 x=transform2to10(population(nmax,:); %自变量取值范围是-2,2,需要把经过遗传运算的最佳染色体整合到-2,2区间 xx=boundsbegin+x*(boundsend-boundsbegin)/(power(boundsend),BitLength)-1); xmax(Generation)=xx; Generation=Genera
5、tion+1;endGeneration=Generation-1;Bestpopulation=xx;Besttargetfunvalue=targetfun(xx);%绘制经过遗传运算后的适应度曲线。一般的,如果进化过程中的种群的平均适应度%与最大适应度在曲线上有相互趋同的形态,表示算法收敛进行地很顺利,没有出现震荡;%在这种前提下,最大适应度个体连续若干代都没有发生进化表示种群已经成熟figure(1);hand1=plot(1:Generation,ymax);set(hand1,linestyle,-,linewidth,1.8,marker,*,markersize,6);hold
6、 on;hand2=plot(1:Generation,ymean);set(hand2,color,r,linestyle,-,linewidth,1.8,marker,.h,markersize,6);xlabel(进化代数);ylabel(最大/平均适应度);xlim(1 Generationmax);box off;hold off;%子程序:计算适应度函数,函数名称存储为fitnessfunfunctionFitvalue,cumsump=fitnessfun(population)global BitLengthglobal boundsbeginglobal boundsendp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 遗传 算法 MATLAB 完整 代码 不用 工具箱
限制150内