版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上求解TSP问题的遗传算法实现 邱文(湖北工业大学机械学院,湖北,武汉,)摘要:本文应用遗传算法(GA)解决TSP(travel salesman problem)问题,在此采用基于对各个城市访问顺序的编码方案,同时在探讨影响GA性能的遗传算子的基础上,介绍了可以改善解的质量的倒位算子。最后通过在VC+6.0上运行该算法的程序得到问题的最优解。关键词:遗传算法(GA)TSP问题 倒位算子 最优解Genetic Algorithm for Solving TSP Problems Qiu Wen(School of Science, Hubei University of
2、 Technology, Hubei, Wuhan,)Abstract: This paper apply genetic algorithm to solve TSP(travel salesman problems) problem .The encoding scheme based on sequence of each city .During the same time , on the studying of the performance of genetic algorithm which based on the genetic operators , we introdu
3、ce an inversion operator to improve the quality of solution . Keywords: genetic algorithm (GA); TSP problem; inversion optimal solution1 引言TSP问题(Traveling Salesman Problems 可描述为:已知n个城市之间的相互距离,现有一推销员必须遍历这n个城市,并且每个城市只能访问一次,最后又必须返回出发城市。如何安排他对这些城市的访问次序,可使其旅行路线的总长度最短。用图论的术语来说,假设有一个图G=(V,E),其中V是顶点集,E是边集,设
4、D=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶点且每个顶点只能通过一次的具有最短距离的回路。若对于城市V=v1,V2,V3,vn的一个访问顺序为T=(t1, t2, t3, , ti, , tn),且记tn+1=t1,则TSP问题的数学模型为:Min L=i=1ndti,ti+1TSP问题是一个典型的组合优化问题,并且是一个NP难题,其可能的路径数与城市数目n是成指数型增长的,所以一般很难精确的求出自由解因而寻找出其他有效的近似求解算法就具有重要的理论意义,另一方面,很多实际应用问题,比如印制电路板的钻孔路线方案、连锁店的货物配送路线等,经过简化处
5、理后,均可以建模为TSP问题,因而对TSP问题的求解具有重要的应用价值,同时研究TSP问题对促进遗传算法也有重大意义。遗传算法(GA)是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。它包括对表示可行解的个体编码,再对这些编码进行选择、交叉和变异等遗传操作。与传统的优化算法相比,遗传算法的优越性主要表现在:(1) 它在搜索过程中不易陷入局部最优,即使在所定义的适应函数是不连续的、非规则的或有噪声的情况下,它也能以最大的概率找到群体最优解;(2) 由于它固有的并行性,遗传算法非常适合大规模并行计算机。2 初始群体设定由于遗传操作是对众多个体同时进行的,这众多的个体组成
6、了群体,在遗传算法中考虑到初始群体的多样性,群体中的个体是随机产生的,先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。/*群体初始化*/void initpop ()unsigned char j1;unsigned int j, k, j2,j3,j4,p5maxstring;j=0;for(k=0;k<lchrom;k+)oldpopj.chromk=k;for(k=0;k<lchrom;k+)p5k=oldpopj.chromk;srand(unsigned)time(NULL); for(j=0;j
7、<popsize;j+)j2=rand()%(lchrom);for(k=0;k<j2+20;k+)j3=rand()%(lchrom);j4=rand()%(lchrom);j1=p5j3;p5j3=p5j4;p5j4=j1;for(k=0;k<lchrom;k+)oldpopj.chromk=p5k;for(k=0;k<lchrom;k+)for(j=0;j<lchrom;j+)ddk*lchrom+j=_hypot(xk-xj,yk-yj); for(j=0;j<popsize;j+)oldpopj.x=(double)decode(oldpopj.c
8、hrom);oldpopj.fitness=objfunc (oldpopj.x);oldpopj.parent1=0;oldpopj.parent2=0;oldpopj.xsite=0;3 目标函数和适应度函数的设计遗传算法的一个特点是它仅适用所求问题的目标函数值就可以得到下一步的有关搜索信息,对目标函数值的使用是通过评价个体的适应度来体现的。评价个体适应度的一般过程是:(1)对个体编码串进行解码处理后,可得到个体的表现型。(2)由个体的表现型可计算出对应个体的目标函数值。(3)由目标函数值按一定的转换规则求出个体的适应度。在TSP的求解中,将求取距离总和L的最小值Min L作为目标函数,适
9、应度函数常取路径长度L的倒数,即f=1/L。/*个体适应度计算*/double objfunc(double x1)double y;y=100.0*ff/x1;return y;/*群体适应度统计*/void statistics( pp *pop)unsigned int j;sumfitness=pop0.fitness;min=pop0.fitness;max=pop0.fitness;maxpp=0;minpp=0;for(j=1;j<popsize;j+)sumfitness=sumfitness+popj.fitness;if(popj.fitness>max) ma
10、x=popj.fitness;maxpp=j;if(popj.fitness<min)min=popj.fitness;minpp=j;avg=sumfitness/(double)popsize;4 遗传算法4 .1 编码设计在遗传算法的运行过程中,它不对所求解的问题的实际决策直接进行操作,而是对表示可行解的个体编码施加遗传运算,通过这种遗传操作来达到优化的目的,在遗传算法中把一个问题的解空间转换到遗传算法所能处理的搜索空间的转换方法就叫做编码。在TSP问题的求解方法中,本文描述旅行路线的方法为巡回旅行路线所经过的各个城市的顺序排列。它是采用所遍历的城市的排序来表示各个个体的编码串,由
11、于一般的个体编码方法进行的交叉运算、变异运算会使群体中产生一些不满足问题约束条件或无实际意义的巡回路线。因此本文采用Grefenstetee 等提出的一种新的巡回路线编码方法,该方法能够使得任意的基因型个体都能够对应于一条具有实际意义的巡回路线。即对于TSP问题的N个城市列表W,对各个城市的一个访问顺序为T:T=(t1, t2, t3, , tn),规定每访问完一个城市,就从城市列表W中将其去掉,则用第i(i=1,2,3,n)个所访问的城市ti在所有未访问的城市列表W= t1, t2, t3, , ti-1 中的对应位置序号gi (i<gi<=N-i+1)就可具体访问哪个城市,如此
12、这样直接处理完W中的所有城市。如对十个城市作如下排列: W=(A B C D E F G H I J)现有如下所述的两条巡回路线:TX=(A D B H F I J G E C) TY=(B C A D E J H I F G)按照Grefenstetee所提出的编码方法,这两条巡回路线可编码为:GX= (1 3 1 5 3 4 4 3 2 1) GY=(2 2 1 1 1 5 3 3 1 1 )4. 2 遗传算子 标准遗传算法的操作算子一般都包括选择(selection),交叉(crossover),变异(mutation)三种基本形式。它们构成了遗传算法具备强大搜索能力的核心,是模拟自然选
13、择以及遗传过程中发生的繁殖,杂交和突变现象的主要载体。遗传算法利用遗传算子产生新一代群体来实现群体进化,算子的设计是遗传策略的主要组成部分,也是调整和控制进化过程的基本工具。4.2.1 选择算子选择操作是建立在对个体适应度进行评价的基础之上,是从群体中选择优胜个体即适应度较高的个体,淘汰劣质个体的操作,其操作的主要目的是为了避免基因缺失,提高全局收敛性和计算效率。TSP问题采用的是基本遗传操作中的比例选择方法,其代码实现如下:/*选择*/int select()double rand1, partsum;unsigned int j;partsum =0.0;j=0;srand (unsign
14、ed)time(NULL);rand1=rand ()/32767.0*sumfitness;dopartsum =partsum+oldpopj.fitness;j=j+1; while (partsum<rand1)&&(j<T);return j-1;4.2.2 交叉算子交叉算子在遗传算法中起着核心作用,它是指将个体进行两两配对,并以交叉概率Pc把配对的父代个体加以替换重组而生成新个体的操作。杂交操作一般分为以下几个步骤:(1) 从交配池中随机选取出要配对的一对个体;(2) 根据位串长度L,对要配对的一对个体,随机选取1,L-1中一个或者对个的整数k作为交叉位
15、置;(3) 根据交叉概率Pc(0<Pc<1)实施交叉操作,配对个体在交叉位置,相互交换各自的部分内容,从而形成新的一对个体。本文采用的交叉方法是常规单点交叉法,即随机选取两条巡回路线上随机设定一个交叉点i(i=1,2,3,n),互换两条巡回路线上基因座i上的基因。从而得到两条新巡回路线。配对个体: Gx=(1 3 1 5 3 4 |4 3 2 1) (1 3 1 5 3 4 |3 3 2 1) 新个体Gx1 Gy=(2 2 1 1 1 5 |3 3 1 1 ) (2 2 1 1 1 5| 4 3 1 1) 新个体Gy1 交叉点4.2.3 变异算子变异操作是以变异概率Pm对群体中个体
16、串某些基因位上的基因值做变动,若变异后子代的适应度值更加优异,则保留子代染色体,否则,仍保留父代染色体。这里采用的方法是倒位变异法。倒位操作(Inverse Operation)是指颠倒个体编码串中随机指定的二个基因座之间的基因排列顺序,从而形成一个新的染色体,即产生一条新的巡回路线。假设当前个体X的编码串为(1 3 1 5 3 4 4 3 2 1)。如果产生的随机数rand()<Pm ,那么随机选择来自同一个体的两点,比如说3和7,倒置3和7之间的部份,产生下面的子代X1为(1 3 1 4 3 5 3 2 1)。4.3 关键参数确定在遗传算法的运行过程中,存在着对其性能产生极大影响的一
17、组参数。这组参数在初始阶段或群体进化过程中需要合理的选择和控制,以使遗传算法以最佳的搜索轨迹达到最优解。主要参数包括:个体编码串长度L、群体规模M、交叉概率Pc、变异概率Pm、进化代数T等。这些参数对遗传算法的运行性能影响很大,需要谨慎选取。(1)编码串长度L:编码串长度的选取与求取精度有关,本文采用符号编码来表示个体,编码串长度为50。(2)群体大小M:群体大小M表示群体中所含个体数量,当M取值较小时,可提高遗传算法的运算速度,但是却会降低群体的多样性,可能引起早熟现象,而当M取值较大时,又会使得遗传算法的运行效率较低,所以本文群体规模取值100。(3)交叉概率:交叉概率一般取大值,但是取值
18、太大,会破坏群体中的优良模式,取值太小,产生新个体的速度较慢,本文采用的取值为0.8。(4)变异概率若取值较大,可能破坏掉很多较好的模式,是的遗传算法接近于随机算法,若取值太小,操作产生新个体的能力就会变差,这里Pm=0.02。(5) 终止代数T:表示遗传算法运行结束条件,并将当前群体中的最佳个体作为所求问题的最优解输出。建议取值为500. 表 遗传算法参数表LMPcPmT501000.80.02500结束语 由于遗传算法不依赖于问题的具体领域,对问题的种类有很强的的鲁棒性,所以广泛应用于很多领域,比如:函数优化、组合优化、生产调度、人工生命等。应用遗传算法求解TSP问题是遗传算法的应用的一个典型实例,本文应用新的变异算法倒位算子,这种算子只是对个体编码串重新排序,而不改变其特性,既保证了变异过程中个体的合法性,同时也为遗传算法性能的改进提供了希望。遗传算法早在本世纪40年代,就有学者开始研究,进入60年代后,Holland教授及其学生才创造出了遗传算法,在后来学者们的不断努力之下,形成了今天遗传算法用于求解复杂系统优化问题的通用框架。随着众多学者们对遗产算法的研究更加深入,其理论日趋完善。相信在不久的将来,我们可以看到遗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级科学上册第二单元人与植物4保护植物教案首师大版1
- 生活培训课件下载
- 《芳香油植物资源》课件
- 辞退告知书-企业管理
- 护理肝脓肿考试试题及答案
- 《复习课鲁教版》课件
- 五年级数学(小数除法)计算题专项练习及答案
- 北师大版八年级数学下册全册单元测试题
- 小班运动安全课件
- 三位数除以一位数(首位不够除)
- 汽车租赁流程图
- “以案促改”心得体会
- 2025届高考语文复习:散文的结构与行文思路 课件
- 审计工作述职报告
- 安全事故现场处置方案(3篇)
- 广东省广州海珠区2023-2024学年八年级上学期期末物理试卷(含答案)
- 中国通 用技术集团招聘笔试题库
- 【MOOC】工程材料学-华中科技大学 中国大学慕课MOOC答案
- 就业招聘服务行业市场前瞻与未来投资战略分析报告
- 收购居间服务合同
- 银行贷款保证合同范本
评论
0/150
提交评论