资源描述:
《遗传算法和蚂蚁算法作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.题目1:z=2-exp[-(x2+y2)],x,y[-5,+5]Î,求函数最小值(1)用遗传算法来做:第一步:确定决策变量及其约束条件s.t.-5<=x<=5第二步:建立优化模型第三步:确定编码方法,用长度为50位的二进制编码串来表示决策变量x第四步:确定解码方法第五步:确定个体评价方法个体的适应度取为每次迭代的最小值的绝对值加上目标函数值,即第六步:确定参数本题种群规模n=30,迭代次数ger=200,交叉概率pc=0.65,变异概率pm=0.05代码:clearall;closeall;clc;tic;...n=30;ger=200;pc=0.65;pm=
2、0.05;%生成初始种群v=init_population(n,50);[N,L]=size(v);disp(sprintf('Numberofgenerations:%d',ger));disp(sprintf('Populationsize:%d',N));disp(sprintf('Crossoverprobability:%.3f',pc));disp(sprintf('Mutationprobability:%.3f',pm));%待优化问题xmin=-5;xmax=5;ymin=-5;ymax=5;f='-(2-exp(-(x.^2+y.^2)))'
3、;[x,y]=meshgrid(xmin:0.1:xmax,ymin:0.1:ymax);vxp=x;...vyp=y;vzp=eval(f);figure(1);mesh(vxp,vyp,-vzp);holdon;gridon;%计算适应度,并画出初始种群图形x=decode(v(:,1:25),xmin,xmax);y=decode(v(:,26:50),ymin,ymax);fit=eval(f);plot3(x,y,-fit,'k*');title('(a)染色体的初始位置');xlabel('x');ylabel('y');zlabel('f(x,y)
4、');%迭代前的初始化vmfit=[];vx=[];...it=1;%迭代计数器%开始进化whileit<=ger%Reproduction(Bi-classistSelection)vtemp=roulette(v,fit);%Crossoverv=crossover(vtemp,pc);%MutationM=rand(N,L)<=pm;%M(1,:)=zeros(1,L);v=v-2.*(v.*M)+M;%Resultsx=decode(v(:,1:25),xmin,xmax);y=decode(v(:,26:50),ymin,ymax);fit=eval(
5、f);[sol,indb]=max(fit);%每次迭代中最优目标函数值v(1,:)=v(indb,:);...fit_mean=mean(fit);%每次迭代中目标函数值的平均值vx=[vxsol];vmfit=[vmfitfit_mean];it=it+1;end%%%%最后结果disp(sprintf(''));%空一行%显示最优解及最优值disp(sprintf('Maximumfound[x,f(x)]:[%.4f,%.4f,%.4f]',x(indb),y(indb),-sol));%图形显示最优结果figure(2);mesh(vxp,vyp,
6、-vzp);holdon;gridon;plot3(x,y,-fit,'r*');title('染色体的最终位置');xlabel('x');ylabel('y');...zlabel('f(x,y)');%图形显示最优及平均函数值变化趋势figure(3);plot(-vx);%title('最优,平均函数值变化趋势');xlabel('Generations');ylabel('f(x)');holdon;plot(-vmfit,'r');holdoff;runtime=toc运行结果:Maximumfound[x,f(x)]:[0.0033,0.0017,
7、1.0000](2)用蚁群算法来做代码:%Antmainprogramclearall;closeall;clc;...tic;Ant=100;Ger=50;xmin=-5;xmax=5;ymin=-5;ymax=5;tcl=0.05;f='-(2-exp(-(x.^2+y.^2)))';%待优化的目标函数[x,y]=meshgrid(xmin:tcl:xmax,ymin:tcl:ymax);vxp=x;vyp=y;vzp=eval(f);figure(1);mesh(vxp,vyp,-vzp);holdon;%初始化蚂蚁位置...fori=1:AntX(i,1
8、)=(xmin+(xma