遗传算法蚂蚁算法作业_第1页
遗传算法蚂蚁算法作业_第2页
遗传算法蚂蚁算法作业_第3页
遗传算法蚂蚁算法作业_第4页
遗传算法蚂蚁算法作业_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目1:z=2-exp-(x2+y2),x,y-5,+5?,求函数最小值1)用遗传算法来做:第一步:确定决策变量及其拘束条件.-5=x=5第二步:建立优化模型maxf(x)-(2-exp(-(x.2+y.2)第三步:确定编码方法,用长度为50位的二进制编码串来表示决策变量x第四步:确定解码方法5(5)x50y21第五步:确定个体议论方法个体的适应度取为每次迭代的最小值的绝对值加上目标函数值,即F(x)|minf(x)|f(x)第六步:确定参数本题种群规模n=30,迭代次数ger=200,交织概率pc=,变异概率pm=代码:clearall;closeall;clc;tic;n=30;ger=2

2、00;pc=;pm=;生成初始种群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);x,y=meshgrid(xmin:xmax,ymin:yma

3、x);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);迭代前的初始化vmfit=;vx=;it=1;%迭代计数器开始进化whileit=gerReproduction(Bi-classistSel

4、ection)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(f);sol,indb=max(fit);%每次迭代中最优目标函数值v(1,:)=v(indb,:);fit_mean=mean(fit);%每次迭代中目标函数值的平均值vx=vxsol;vmfit=vmfit

5、fit_mean;it=it+1;end%最后结果disp(sprintf(n);%空一行显示最优解及最优值disp(sprintf(Maximumfoundx,f(x):%.4f,%.4f,%.4f,x(indb),y(indb),-sol);图形显示最优结果figure(2);mesh(vxp,vyp,-vzp);holdon;gridon;plot3(x,y,-fit,r*);title(染色体的最后地址);xlabel(x);ylabel(y);zlabel(f(x,y);图形显示最优及平均函数值变化趋势figure(3);plot(-vx);%title(最优,平均函数值变化趋势);

6、xlabel(Generations);ylabel(f(x);holdon;plot(-vmfit,r);holdoff;runtime=toc运行结果:Maximumfoundx,f(x):,(2)用蚁群算法来做代码:%Antmainprogramclearall;closeall;clc;tic;Ant=100;Ger=50;xmin=-5;xmax=5;ymin=-5;ymax=5;tcl=;f=-(2-exp(-(x.2+y.2);%待优化的目标函数x,y=meshgrid(xmin:tcl:xmax,ymin:tcl:ymax);vxp=x;vyp=y;vzp=eval(f);fi

7、gure(1);mesh(vxp,vyp,-vzp);holdon;初始化蚂蚁地址fori=1:AntX(i,1)=(xmin+(xmax-xmin)*rand(1);X(i,2)=(ymin+(ymax-ymin)*rand(1);T0-信息素,函数值越大,信息素浓度越大T0(i)=exp(-(X(i,1).2+X(i,2).2)-2;endplot3(X(:,1),X(:,2)-T0,k*);holdon;gridon;title(蚂蚁的初始分布地址);xlabel(x);ylabel(y);zlabel(f(x,y);%开始寻优fori_ger=1:GerP0=;%P0-全局转移选择因子

8、P=;%P-信息素蒸发系数lamda=1/i_ger;%转移步长参数T_Best(i_ger),BestIndex=max(T0);forj_g=1:Ant%求取全局转移概率r=T0(BestIndex)-T0(j_g);Prob(i_ger,j_g)=r/T0(BestIndex);endforj_g_tr=1:AntifProb(i_ger,j_g_tr)P0temp1=X(j_g_tr,1)+(2*rand(1)-1)*lamda;temp2=X(j_g_tr,2)+(2*rand(1)-1)*lamda;elsetemp1=X(j_g_tr,1)+(xmax-xmin)*(rand(1

9、);temp2=X(j_g_tr,2)+(ymax-ymin)*(rand(1);endiftemp1xmaxtemp1=xmax;endiftemp2ymaxtemp2=ymax;endif-(2-exp(-(temp1.2+temp2.2)-(2-exp(-(X(j_g_tr,1).2+X(j_g_tr,2).2)X(j_g_tr,1)=temp1;X(j_g_tr,2)=temp2;endend%信息素更新fort_t=1:AntT0(t_t)=(1-P)*T0(t_t)-(2-exp(-(X(t_t,1).2+X(t_t,2).2);endc_iter,i_iter=max(T0);m

10、axpoint_iter=X(i_iter,1),X(i_iter,2);max_local(i_ger)=-(2-exp(-(X(i_iter,1).2+X(i_iter,2).2);%将每代全局最优解存到max_global矩阵中ifi_ger=2ifmax_local(i_ger)max_global(i_ger-1)max_global(i_ger)=max_local(i_ger);elsemax_global(i_ger)=max_global(i_ger-1);endelsemax_global(i_ger)=max_local(i_ger);endend%figure(2);m

11、esh(vxp,vyp,-vzp);holdon;x=X(:,1);y=X(:,2);plot3(x,y,-eval(f),b*);holdon;gridon;title(蚂蚁的最后分布地址);xlabel(x);ylabel(y);zlabel(f(x,y);figure(3);plot(1:Ger,-max_global,b-)holdon;title(最优函数值变化趋势);xlabel(iteration);ylabel(f(x);gridon;c_max,i_max=max(T0);maxpoint=X(i_max,1),X(i_max,2)maxvalue=-(2-exp(-(X(i

12、_max,1).2+X(i_max,2).2)runtime=toc结果:maxvalue=题目2:利用蚁群算法求下面加权有向图中从A到G的最短路:解:第一步:初始化N只蚂蚁,也就是N条道路第二步:初始化运行参数,开始迭代第三步:在迭代步数范围之内,计算转移概率,若是小于全局转移概率就进行小范围的搜寻,否则就进行大范围的搜寻第四步:更新信息素,记录状态,准备进行下一次迭代第五步:转第三步第六步:输出结果代码:functionshortroad_ant_mainAntmainprogramclearall;closeall;clc;%清屏tic;%计时开始Ant=50;Ger=100;%运行参数

13、初始化PMPN=size(power);初始化蚂蚁地址v=init_population(Ant,PN);v(:,1)=1;v(:,PN)=1;%始点和终点纳入路径%把距离当信息素浓度fit=short_road_fun(v,power);%距离越小越好,所以要和信息素浓度相对应。T0=max(fit)-fit;画出图形figure(1);gridon;holdon;plot(fit,k*);title(a)蚂蚁的初始地址);xlabel(x);ylabel(f(x);%初始化vmfit=;vx=;P0=;%P0-全局转移选择因子P=;%P-信息素蒸发系数%C=;开始寻优fori_ger=1:

14、Gerlamda=1/i_ger;%转移步长参数T_Best(i_ger),BestIndex=max(T0);%最大信息素浓度forj_g=1:Ant%求取全局转移概率r=T0(BestIndex)-T0(j_g);%与最正确的蚂蚁的距离Prob(i_ger,j_g)=r/T0(BestIndex);%应该以多大的速率向它靠拢endforj_g_tr=1:AntifProb(i_ger,j_g_tr)P0%局部转移-小动作转移M=rand(1,PN)lamda;temp=v(j_g_tr,:)-2.*(v(j_g_tr,:).*M)+M;else%全局转移-大步伐转移M=rand(1,PN)

15、P0;temp=v(j_g_tr,:)-2.*(v(j_g_tr,:).*M)+M;end%始点和终点重新加入。即不能够在搬动过程中发生改变。temp(:,1)=1;temp(:,end)=1;ifshort_road_fun(temp,power)short_road_fun(v(j_g_tr,:),power)%记录v(j_g_tr,:)=temp;endend%信息素更新,准备下一次迭代fit=short_road_fun(v,power);T0=(1-P)*T0+(max(fit)-fit);%信息素蒸发sol,indb=min(fit);v(1,:)=v(indb,:);%记录本次迭

16、代的状态media=mean(fit);vx=vxsol;vmfit=vmfitmedia;end%最后结果disp(sprintf(n);%空一行显示最优解及最优值disp(sprintf(Shortroadis%s,num2str(find(v(indb,:);%num2str数据转换成字符。disp(sprintf(Mininumis%d,sol);v(indb,:)图形显示最优结果figure(2);gridon;holdon;plot(fit,r*);title(蚂蚁的最后地址);xlabel(x);ylabel(f(x);图形显示最优及平均函数值变化趋势figure(3);plot(vx);title(最优,平均函数值变化趋势);xlabel(Generations);ylabel(f(x);holdon;plot(vmfit,r);holdoff;runtime=toc%时间结束end%functionfit=short_road_fun(v,power)vmvn=size(v);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论