资源描述:
《进化算法程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、进化算法作业1全局优化问题(1),此问题的全局最优值。一.程序(1)主函数:main.mclearall;clc;popsize=60;%种群规模chromlength=34;%二进制编码,编码精度为0.0001,所以串长l为17pc=0.7;%杂交概率pm=0.1;%变异概率t=0;%进化代数初始为0pop=initpop(popsize,chromlength);%随机产生初始种群whilet<500%迭代次数t=t+1;[objvalue]=calobjvalue(pop);%计算目标函数值fitvalue=calfitvalue(objvalue)
2、;%计算群体中每个个体的适应度[bestindividual,bestfit]=best(pop,fitvalue);%求出群体中适应度最大的个体及其适应度值x11=decodechrom(bestindividual,1,14);%将二进制数转换为十进制数x22=decodechrom(bestindividual,15,14);x1(t)=-5+10*x11/(pow2(14)-1);%将二值域中的数转换为变量域的数x2(t)=-5+10*x22/(pow2(14)-1);y(t)=4*x1(t)^2-2.1*x1(t)^4+1/3*x1(t)^6+x
3、1(t)*x2(t)-4*x2(t)^2+4*x2(t)^4;%计算最佳个体的目标函数值[newpop1]=selection(pop,fitvalue);%选择算子[newpop2]=crossover(newpop1,pc);%交叉算子[newpop3]=mutation(newpop2,pm);%变异算子objvalue1=calobjvalue(newpop3(1,:));ifobjvalue1>y(t)newpop3(1,:)=bestindividual;%保留最佳个体endpop=newpop3;%产生新种群endy;%每代的最佳目标函数值x
4、1;%每代的最佳目标函数值对应的自变量x2;[gy,k]=min(y)%gy为全局最优值,k为最优值对应的进化代数gx1=x1(k)%全局最优值对应的自变量gx2=x2(k)plot(y)%最优值收敛曲线title('收敛性曲线');xlabel('进化代数');ylabel('函数值');axis([0,500,-1.5,1.5]);(2)初始种群:initpop.mfunctionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand随机产生[0,1]区间的一
5、个小数,rand四舍五入取整end(3)计算目标函数值::calobjvalue.mfunction[objvalue]=calobjvalue(pop)temp1=decodechrom(pop,1,14);temp2=decodechrom(pop,15,14);x1=-5+(10*temp1)/(pow2(14)-1);%将二值域中的数转化为变量域中的数x2=-5+(10*temp2)/(pow2(14)-1);objvalue=4*x1.^2-2.1*x1.^4+1/3*x1.^6+x1.*x2-4*x2.^2+4*x2.^4;%计算目标函数end
6、a.二进制转换为十进制:decodechrom.mfunctiontemp=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);%按变量个数分组转换,spoint为起始点,length为一个变量的长度temp=decodebinary(pop1);endb.求二进制串对应的十进制数:decodebinary.mfunctiontemp=decodebinary(pop)[px,py]=size(pop);%求pop行数和列数fori=1:pypop1(:,i)=2.^(py-i)
7、.*pop(:,i);endtemp=sum(pop1,2);%每一行求和end(4)计算个体适应度:calfitvalue.mfunctionfitvalue=calfitvalue(objvalue)fitvalue=1./(1+exp(objvalue));end(5)种群中最大适应度个体及其值:best.mfunction[bestindividual,bestfit]=best(pop,fitvalue)[px,py]=size(pop);bestindividual=pop(1,:);bestfit=fitvalue(1);fori=2:px;
8、iffitvalue>bestfitbestindividual=