如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
老师:这是简单的y=x1^2+x2^2,其中x1,x2在[-10,10]%产生初始种群pop,共a个个体,每个个体编码长度为bfunction[pop1,pop2]=initate(a,b)pop1=round(rand(a,b));pop2=round(rand(a,b));%通过number函数将个体编码转化为十进制并落在区间内function[x1,x2]=number(pop1,pop2)[a,b]=size(pop1);pop11=zeros(a,b);pop22=zeros(a,b);fori=1:bpop11(:,i)=pop1(:,i).*2^(b-i);pop22(:,i)=pop2(:,i).*2^(b-i);endpop11=sum(pop11,2);pop22=sum(pop22,2);x1=(pop11.*20)./2^b-10;x2=(pop22.*20)./2^b-10;%计算个体适应值functionfit=fitness(x1,x2)fit=x1.^2+x2.^2;%通过选择/交叉/变异产生新的种群function[newpop1,newpop2]=new(pop1,pop2,pm,pc)[a,b]=size(pop1);newpop1=pop1;newpop2=pop2;[x1,x2]=number(pop1,pop2);fit=fitness(x1,x2);fitvalue=fit/sum(fit);pw=fitvalue(1);ps=sort(rand(a));new=1;fori=1:aifps(i)<pwnewpop1(i)=pop1(new);newpop2(i)=pop2(new);elsenew=new+1;pw=pw+fitvalue(new);endendfori=1:aifrand<pcpoint1=round(rand*(b-1)+1);newpop1(i,1:point1)=pop1(a-i+1,1:point1);newpop1(a-i+1,1:point1)=pop1(i,1:point1);endifrand<pcpoint2=round(rand*(b-1)+1);newpop2(i,1:point2)=pop2(a-i+1,1:point2);newpop2(a-i+1,1:point2)=pop2(i,1:point2);endendfori=1:aifrand<pmpoint1=round(rand*(b-1)+1);newpop1(i,point1)=1-pop1(i,point1);endifrand<pmpoint2=round(rand*(b-1)+1);newpop2(i,point2)=1-pop2(i,point2);endend%主函数cleara=30;b=15;pc=0.6;pm=0.0001;[pop1,pop2]=initate(a,b);[x1,x2]=number(pop1,pop2);fit=fitness(x1,x2);[yy,xx]=min(fit);besty=yy;bestx1=x1(xx);bestx2=x2(xx);forN=1:200[newpop1,newpop2]=new(pop1,pop2,pm,pc);[x1,x2]=number(newpop1,newpop2);fit=fitness(x1,x2);[yy,xx]=min(fit);ifbesty>yybesty=yy;bestx1=x1(xx);bestx2=x2(xx);endpop1=newpop1;pop2=newpop2;end[x1,x2]=number(pop1,pop2);bestx1=x1(xx)bestx2=x2(xx)besty