遗传算法实现TSP问题.docx

遗传算法实现TSP问题.docx

ID:59127535

大小:17.89 KB

页数:13页

时间:2020-09-13

遗传算法实现TSP问题.docx_第1页
遗传算法实现TSP问题.docx_第2页
遗传算法实现TSP问题.docx_第3页
遗传算法实现TSP问题.docx_第4页
遗传算法实现TSP问题.docx_第5页
资源描述:

《遗传算法实现TSP问题.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、遗传算法实现TSP问题问题提出旅行商问题(travelingsalemanproblem,简称tsp):已知n个城市之间的相互距离,现有一个推销员必须遍访这n个城市,并且每个城市只能访问一次,最后又必须返回出发城市。如何安排他对这些城市的访问次序,可使其旅行路线的总长度最短?解题思路用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只通过一次的具有最短距离的回路。这个问题可分为对称旅行商问题(di

2、j=dji,,任意i,j=1,2,3,…,n)和非对称旅行商问题(dij≠dji,,任意i,j=1,2,3,…,n)。若对于城市v={v1,v2,v3,…,vn}的一个访问顺序为t=(t1,t2,t3,…,ti,…,tn),其中ti∈v(i=1,2,3,…,n),且记tn+1=t1,则旅行商问题的数学模型为:minl=σd(t(i),t(i+1))(i=1,…,n)旅行商问题是一个典型的组合优化问题,并且是一个np难问题,其可能的路径数目与城市数目n是成指数型增长的,所以一般很难精确地求出其最优解,本文采用遗传算法求其近似

3、解。遗传算法求解TSP的基本步骤1.种群初始化个体编码方法有二进制编码和实数编码,在解决TSP问题过程中个体编码方法为实数编码。对于TSP问题,实数编码为1-n的实数的随机排列,初始化的参数有种群个数M、染色体基因个数N(即城市的个数)、迭代次数C、交叉概率Pc、变异概率Pmutation。2.适应度函数在TSP问题中,对于任意两个城市之间的距离D(i,j)已知,每个染色体(即n个城市的随机排列)可计算出总距离,因此可将一个随机全排列的总距离的倒数作为适应度函数,即距离越短,适应度函数越好,满足TSP要求。3.选择操作遗传

4、算法选择操作有轮盘赌法、锦标赛法等多种方法,本程序采用基于适应度比例的选择策略,即适应度越好的个体被选择的概率越大,同时在选择中保存适应度最高的个体。4.交叉操作遗传算法中交叉操作有多种方法。本程序中对于个体,随机选择两个个体,在对应位置交换若干个基因片段,同时保证每个个体依然是1-n的随机排列,防止进入局部收敛。5.变异操作本程序中对于变异操作,随机选取个体,同时随机选取个体的两个基因进行交换以实现变异操作。开始流程图产生初始种群个体评价选择交叉变异N满足终止条件Y输出最优结果结束实验结果MATLAB实现程序如下:(1)

5、适应度函数fit.mfunctionfitness=fit(len,m,maxlen,minlen)fitness=len;fori=1:length(len)   fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen+0.0001)).^m;end(2)个体距离计算函数 mylength.mfunctionlen=myLength(D,p)[N,NN]=size(D);len=D(p(1,N),p(1,1));fori=1:(N-1)   len=len+D(p(1,i),p(

6、1,i+1));end  end(3)交叉操作函数 cross.mfunction[A,B]=cross(A,B)L=length(A);ifL<10   W=L;elseif((L/10)-floor(L/10))>=rand&&L>10   W=ceil(L/10)+8;else   W=floor(L/10)+8;endp=unidrnd(L-W+1);fprintf('p=%d',p);fori=1:W   x=find(A==B(1,p+i-1));   y=find(B==A(1,p+i-1));   [A(1

7、,p+i-1),B(1,p+i-1)]=exchange(A(1,p+i-1),B(1,p+i-1));   [A(1,x),B(1,y)]=exchange(A(1,x),B(1,y));end end(4)对调函数exchange.mfunction[x,y]=exchange(x,y)temp=x;x=y;y=temp; end(5)变异函数Mutation.mfunctiona=Mutation(A)index1=0;index2=0;nnper=randperm(size(A,2));index1=nnper(1

8、);index2=nnper(2);%fprintf('index1=%d',index1);%fprintf('index2=%d',index2); temp=0;temp=A(index1);A(index1)=A(index2);A(index2)=temp;a=A;end(6)连点画图函数pl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。