遗传算法求解TSP问题的具体方法与其时间复杂性研究.docVIP

遗传算法求解TSP问题的具体方法与其时间复杂性研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法求解TSP问题的具体方法及其时间复杂性研究 邢冲 (上海交通大学计算机系 学号5010339138) 摘要:首先介绍遗传算法解决TSP问题的基因表示方法以及相应的几种交叉变异方法。然后研究不同的方法与参数设置对于路径最优解,路径平均值以及所用处理器时间的影响,主要研究方向是在尽可能短的时间内求出TSP问题的次优解。得出结论:使用路径基因表示法,选择较大的变异率(0.3左右),使用倒置变异算法进行求解,能够得到较好的次优值(处理器时间:2000,100个城市,大致可以达到相距最优值1%-2%的效果),同时速度比较快。此研究针对那些只需次优解,但对时间要求比较高的问题有一定指导意义。 关键字 : 遗传算法 TSP 联赛 排序 次优解 时间复杂度 引言:TSP(Travelling Salesman Problem) 是一个著名的NP组合优化问题. 旅行商需要以尽可能少的路程遍历所有城市,回到出发点.TSP具有很大的广泛性,无论是城市交通问题,航空问题,还是集成电路制造问题都需要解决相应的TSP问题. 对于TSP问题,穷举的时间复杂度为N!(N为城市数量) , 随着N增加时间以指数级增加,对于如今的硬件技术这样的时间复杂度是难以接受的. 而利用遗传算法(GA)求解TSP是个不错的选择.GA是一种模拟生命进化的算法;它利用适者生存的进化原则,通过演化逐步逼近问题的最优解.本文将讨论使用GA求解TSP问题的各种具体方法和及其参数设置的影响. 基因的表示方法 TSP问题可以选择城市序列作为基因。首先对城市进行编号,比如10个城市0,1,……,9 旅行序列:4-1-2-3-0-5-9-8-7-6 则基因为(4 ,1, 2, 3, 0, 5, 9, 8, 7, 6)。这样的表示方法需要解决交叉的问题,普通的交叉方法会引起不合理的基因,比如 父代一:(0,1,2,3,4,5,6,7,8,9) 父代二:(9,8,7,1,2,3,4,5,6,0) 子代的可能结果:(一点交叉,交叉位置假设5) (0,1,2,3,4,3,4,5,6,0) (9,8,7,1,2,5,6,7,8,9) 这样的子代结果显然是不符合TSP问题要求的,而且这样方法使得不合理基因在子代中占绝对优势比例,为了解决这一问题,尝试以下两种方法: 改变基因编码,使用Grefenstette等提出的一种新的巡回路线编码(以下简称G法)。编码描述如下: 对于旅行商问题的城市列表W,假定对各个城市的一个访问顺序为T:T=(T1,T2...Tn) 规定每访问完一个城市,就从城市列表W中将该城市去掉,则用第i(i=1,2,3...,n)个所访问的城市ti在所有未访问城市列表W-{t1,t2,...ti-1}中的对应位置序号gi(1=gi=n-i+1)就可表示具体访问哪个城市。G=(g1 g2 g3....gn) 就可表示一条巡回路线。[1] 这样编码交叉得出的就是合理基因,变异时只要保证gin-i得到的也将是合理基因。 特点:父代交叉点之前的性状得到继承,交叉点之后的性状丢失。 基因编码路径表达:就是上述提到的方法。现在通过改变交叉和变异方法来避免不合理基因的产生。 交叉方法: 1.PMX(Partially Matched crossover)。 主要思想是首先按照两点交叉方法进行交换,然后根据两个基因交叉区域的映射关系,修改相应城市编号,使得子代基因合理化。 特点:保留城市的绝对访问顺序。 2.OX(Ordered Crossover) 主要思想是从一个父代中挑选一个子序列并保存另一个父代其它城市的相应序列来构造子代。 特点:保留相对访问顺序。 3.CX(Cycle Crossover) 主要思想:两个父代之间可能组成一些不相交的循环回路,交换其中几个循环回路的城市编码就可产生新的基因。 特点:保留城市的绝对位置。 变异方法: 1.倒置:选择基因中的两个位置,颠倒两个位置中间的字串 如 (0 1 2 3 |4 5 6 |7 8 9) 倒置结果:(0 1 2 3 |6 5 4| 7 8 9) 2.交换:交换两个随即位置处的基因。 如 (0 1 2 3 4 5 6 7 8 9) 交换结果:(随即位置1和5):(0 5 2 3 4 1 6 7 8 9 ) 3.插入:随机选择一个城市插入一个随机位置。 如 (0 1 2 3 4 5 6 7 8 9) 插入结果:(随即选择位置4,随机插入位置8): 如 ( 0 1 2 3 5 6 7 8 4 9) 各种基因表示法的效果比较 变异率:0.2 群体规模:50 选择算法:排序选择 变异:路径编码使用倒置方法,而G法使用普通的随即改变一位的方法. (本实验的城市如无特殊说明,即为分布在9*9 矩形定点的100个城市,

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档