遗传算法的matlab通用程序

上传人:ni****g 文档编号:499520964 上传时间:2023-01-18 格式:DOCX 页数:2 大小:15.18KB
返回 下载 相关 举报
遗传算法的matlab通用程序_第1页
第1页 / 共2页
遗传算法的matlab通用程序_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《遗传算法的matlab通用程序》由会员分享,可在线阅读,更多相关《遗传算法的matlab通用程序(2页珍藏版)》请在金锄头文库上搜索。

1、已知n个城市之间的相互距离,现有一个推销员必须遍访这n个城市,并且每个城市只能访问一次,最后又必须返回出发城市。如何安排他对这些城市的访问次序,可使其旅行路线的总长度最短?用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只通过一次的具有最短距离的回路。这个问题可分为对称旅行商问题(dij=dji,任意i,j=1,2,3,n)和非对称旅行商问题(dij丰dji,任意i,j=1,2,3,n)。若对于城市v=v1,v2,v3,vn的一个访问顺序为t=(t1,t2,t3,t

2、i,tn),其中tiv(i=1,2,3,n),且记tn+1=t1,则旅行商问题的数学模型为:minl=(Td(t(i),t(i+1)(i=1,n)旅行商问题是一个典型的组合优化问题,并且是一个np难问题,其可能的路径数目与城市数目n是成指数型增长的,所以一般很难精确地求出其最优解,本文采用遗传算法求其近似解。遗传算法:初始化过程:用v1,v2,v3,vn代表所选n个城市。定义整数pop-size作为染色体的个数,并且随机产生pop-size个初始染色体,每个染色体为1到18的整数组成的随机序列。适应度f的计算:对种群中的每个染色体vi,计算其适应度,f=dd(t(i),t(i+1).评价函数e

3、val(vi):用来对种群中的每个染色体vi设定一个概率,以使该染色体被选中的可能性与其种群中其它染色体的适应性成比例,既通过轮盘赌,适应性强的染色体被选择产生后台的机会要大,设alpha(0,1),本文定义基于序的评价函数为eval(vi)=alpha*(1-alphaF(i-1)。随机规划与模糊规划选择过程:选择过程是以旋转赌轮pop-size次为基础,每次旋转都为新的种群选择一个染色体。赌轮是按每个染色体的适应度进行选择染色体的。stepl、对每个染色体vi,计算累计概率qi,qO=O;qi=creval(vj)j=1,i;i=1,pop-size.step2、从区间(0,pop-siz

4、e)中产生一个随机数r;step3、若qi-1step4、重复step2和step3共pop-size次,这样可以得到pop-size个复制的染色体。grefenstette编码:由于常规的交叉运算和变异运算会使种群中产生一些无实际意义的染色体,本文采用grefenstette编码遗传算法原理及应用可以避免这种情况的出现。所谓的grefenstette编码就是用所选队员在未选(不含淘汰)队员中的位置,如:815216107431114612951813171对应:81421386325734324221。交叉过程:本文采用常规单点交叉。为确定交叉操作的父代,从到pop-size重复以下过程:从

5、0,1中产生一个随机数r,如果r将所选的父代两两组队,随机产生一个位置进行交叉,如:81421386325734324221123568563185633211交叉后为:814213863251856332116123568563734324221变异过程:本文采用均匀多点变异。类似交叉操作中选择父代的过程,在r选择多个染色体vi作为父代。对每一个选择的父代,随机选择多个位置,使其在每位置按均匀变异(该变异点xk的取值范围为ukmin,ukmax,产生一个0,1中随机数r,该点变异为xk=ukmin+r(ukmax-ukmin)操作。如:81421386325734324221变异后:8142

6、13106322734524121反grefenstette编码:交叉和变异都是在grefenstette编码之后进行的,为了循环操作和返回最终结果,必须逆grefenstette编码过程,将编码恢复到自然编码。循环操作:判断是否满足设定的带数xzome,否,则跳入适应度f的计算;是,结束遗传操作,跳出。matlab代码distTSP.txt061848017374404520192402281660%GATSP.mfunctiongatsp1()clear;loaddistTSP.txt;distance=distTSP;N=5;ngen=100;ngpool=10;%ngen=input(

7、#ofgenerationstoevolve=);%ngpool=input(#ofchromosomsinthegenepool=);%sizeofgenepoolgpool=zeros(ngpool,N+1);%genepoolfori=1:ngpool,%intializegenepoolgpool(i,:)=1randomize(2:N)1;forj=1:i-1whilegpool(i,:)=gpool(j,:)gpool(i,:)=1randomize(2:N)1;endendendcostmin=100000;tourmin=zeros(1,N);cost=zeros(1,ngpo

8、ol);increase=1;resultincrease=1;fori=1:ngpool,cost(i)=sum(diag(distance(gpool(i,:),rshift(gpool(i,:);end%recordcurrentbestsolutioncostmin,idx=min(cost);tourmin=gpool(idx,:);disp(num2str(increase)minmumtriplength=num2str(costmin)costminold2=200000;costminold1=150000;resultcost=100000;tourminold2=zero

9、s(1,N);tourminold1=zeros(1,N);resulttour=zeros(1,N);while;10(abs(costminold2-costminold1);100)&(abs(costminold1-costmin)0)&(increase;500)costminold2=costminold1;tourminold2=tourminold1;costminold1=costmin;tourminold1=tourmin;increase=increase+1;ifresultcostcostminresultcost=costmin;resulttour=tourmi

10、n;resultincrease=increase-1;endfori=1:ngpool,cost(i)=sum(diag(distance(gpool(i,:),rshift(gpool(i,:);end%recordcurrentbestsolutioncostmin,idx=min(cost);tourmin=gpool(idx,:);%=%copygensinthgpoolaccordingtotheprobilityratio%1.1copytwice%=0.9copyonce%;0.9removecsort,ridx=sort(cost);%sortfromsmalltobig.c

11、sum=sum(csort);caverage=csum/ngpool;cprobilities=caverage./csort;copynumbers=0;removenumbers=0;fori=1:ngpool,ifcprobilities(i)1.1copynumbers=copynumbers+1;endifcprobilities(i)0.9removenumbers=removenumbers+1;endendcopygpool=min(copynumbers,removenumbers);fori=1:copygpoolforj=ngpool:-1:2*i+2gpool(j,:

12、)=gpool(j-1,:);endgpool(2*i+1,:)=gpool(i,:);endifcopygpool=0gpool(ngpool,:)=gpool(1,:);end%=%whengenarationismorethan50,orthepatternsinacouplearetooclose,domutationfori=1:ngpool/2%sameidx=gpool(2*i-1,:)=gpool(2*i,:);diffidx=find(sameidx=0);iflength(diffidx)1,ifn=1,col=1;elseifn1,error(xmustbeavector!break);end%xisacolumnvectorelseifm=1,ifn=1,y=x;returnelseifn1,col=0;%xi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号