




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于遗传算法求解TSP问题班级,学号,姓名摘要:巡回旅行商问题(TSP)是一个组合优化方面的问题,从理论上讲,使用穷举法不但可以求解TSP问题,而且还可以得到最优解。但是,利用穷举法所耗费的时间巨大的,当问题的规模很大时,穷举法的执行效率较低,不能满足及时的需要。 遗传算法是计算机科学人工智能领域中用于解决最优化的一种搜索启发式算法,是进化算法的一种。该算法通过模拟生物学交叉、变异等方式,是当前向最优解的方向进化,因此使用于TSP问题的求解。关键词:人工智能;TSP问题;遗传算法本组成员:林志青,韩会雯,赵昊罡本人分工:掌握遗传算法的基本原理,编写遗传算法中部分匹配交叉、循环交叉和循序交叉的具体实现过程。1 引言旅行商问题,即TSP问题,是一个最优解的求解问题。假设有n个城市,并且每个城市之间的距离已知,则如何只走一遍并获得最短路径为该问题的具体解释。对于TSP问题的解决,有穷举法、分支限界法等求解方式,该文章主要介绍遗传算法求解过程。遗传算法简称GA,在本质上是一种求解问题的高效并行全局搜索方法。遗传算法从任意一个初始化的群体出发,通过随机选择、交叉和变异等遗传操作,使群体一代一代的进化到搜索空间中越来越好的区域,直至抵达最优解。在遗传算法中,交叉操作为主要操作之一,包括部分匹配交叉、循环交叉和顺序交叉等。2 算法原理与系统设计执行遗传算法,根据需要设定相应的交叉因子、变异因子和迭代次数,并选择相应的交叉算法,当程序图形显示并运算时会得到当前的最优解,判断是否获得最终的最优解,若已得到所需结果,则停止运行,否则继续执行。具体流程图如下所示:部分匹配交叉(PMX):先随机生成两个交叉点,定义这两点间的区域为匹配区域,并交换两个父代的匹配区域。如下图所示:父代A:872|130|9546父代B:983|567|1420交换后变为:tempA:872|567|9546tempB:983|130|1420对于tempA、tempB中匹配区域以外出现的数码重复,要依据匹配区域内的位置逐一进行替换。匹配关系:153670子代A:802|567|9143子代B:986|130|5427顺序交叉法(OX):从父代随机选一个编码子串,放到子代的对应位置;子代空余的位置从父代B中按B的顺序选取(与己有编码不重复)。同理可得子代B,如下所示:父代A:872|139|0546父代B:983|567|1420交叉过程:对于父代A,选择139进行遗传到下一代,其余部分从父代B中按照顺序随机选取,且不能和1、3、9数字相同,放到子代的对应位置,得到下一代。交叉后:子代A:856|139|7420子代B:821|567|3904循环交叉法(CX):根据父代中的相应位置的基因得到相应的循环因子,该循环因子为子代的一部分,其余的因子从另一个父代中查找,找到不同于循环因子的基因并放到子代的对应位置,形成新的子代。父代A:123456789父代B:546923781交叉过程:随机选择一个城市,如1,找到在父代B中对应的城市为5,再再返回到父代A中的城市5,对应的父代B中的城市为2,依次查找,直达最终的城市为1为止。因此父代A的循环因子为152491,另一子代的处理过程相似。交叉后:用循环的基因构成子代A,顺序与父代A一样12459,用父代B剩余的基因填满子代A:1264537893 系统实现部分匹配交叉:/先随机产生两个交叉点,定义这两点间的区域为匹配区域,并用交换两个父代的匹配区域。double rand = Math.random();if(randn)int temp = m;m = n;n = temp;int tempA = new intn-m;int tempB = new intn-m;for(int e=m;en;e+)tempAe-m = populationa.genee;tempBe-m = populationb.genee;for(int e=m;en;e+)populationa.genee = tempBe-m;populationb.genee = tempAe-m;/对于tempA、tempB中匹配区域以外出现的数码重复,要依据匹配区域内的位置逐一进行替换for(int e=0;em;e+)int p;while(p = Search(populationa.genee, tempB)!=-1) populationa.genee = tempAp;while(p = Search(populationb.genee, tempA)!=-1)populationb.genee = tempBp;for(int e=n;ecityNum;e+)int p;while(p = Search(populationa.genee, tempB)!=-1)populationa.genee = tempAp;while(p = Search(populationb.genee, tempA)!=-1)populationb.genee = tempBp;顺序交叉:/选择一定长度的基因段进行交换double rand = Math.random();if(randn)int temp = m;m = n;n = temp; int tempA = new intn-m;int tempB = new intn-m;for(int e=m;en;e+)tempAe-m = populationa.genee;tempBe-m = populationb.genee;int temp = new intcityNum;for(int e=0;ecityNum;e+) tempe = populationa.genee; /剩余部分从另一个父代中按照顺序进行选取,并随机选取未在上述交换序列中的数字按位置/存放到子代中if(m=0)int q = n;for(int e=0;ecityNum;e+)if(Search(populationb.genee, tempA)=-1)populationa.geneq = populationb.genee; q+; q=n;for(int e=0;ecityNum;e+)if(Search(tempe, tempB)=-1)populationb.geneq = tempe; q+; elseint q=0;for(int e=0;ecityNum;e+)if(Search(populationb.genee, tempA)=-1)populationa.geneq = populationb.genee;if(q=m-1) q = q+1+(n-m); else q+; q=0;for(int e=0;ecityNum;e+)if(Search(tempe, tempB)=-1)populationb.geneq = tempe;if(q=m-1) q = q+1+(n-m); else q+; 循环交叉:/从当前染色体A中随机找到基因位置,对应得到另一染色体B中相应位置的基因,/找到新基因在染色体A中的位置,继续寻找下一基因,直到和最开始的基因相同int q = (int)(Math.random()*cityNum);int v = populationa.geneq;tempAq = 1;int t=0;while(t=populationb.geneq)!=v)q = Search(t, populationa.gene);tempAq = 1; /将染色体B中不属于循环因子的基因按位置填充到下一代染色体中for(int e=0;ecityNum;e+)if(tempAe=0) populationa.genee = populationb.genee; q = (int)(Math.random()*cityNum);v = populationb.geneq;tempBq = 1;t = 0;while(t=tempq)!=v)q = Search(t, populationb.gene);tempBq = 1;for(int e=0;ecityNum;e+)if(tempBe=0) populationb.genee = tempe; 4 实验或测试结果部分匹配算法: 当前迭代次数:102539 当前路径长度:144283顺序交叉法: 当前迭代次数:111974 当前路径长度:153466循环交叉法: 当前迭代次数:71302 当前路径长度:1397145 结论从上面的三个算法的实现效果来看,当迭代的次数有限时并没有得到最终的最优解,只是获得了当前情况下花费最短和适应度最高的路径。从中可以了解到,遗传算法能够向最优解的方向进行进化,但是进化的方向是随机的,即不一定在最开始迭代中就得到最优解的方向,而且不同的搜索算法所得到的最优解尽管不是最终的解,但是各算法的当前最优解是相近的,因此遗传算法不同方向的进化程度是相似的,并有达到最优解的可能性。该次求解过程中,主要考虑了交叉操作对问题求解的影响情况,仅仅是遗传算法中的一个部分(选择、交叉、变异),该操作对进化的贡献是有限的,因此要得到最终的路径,需要综合考虑各种操作对进化的影响。参考文献1 王小平,曹立明.遗传算法理论应用于软件实现M.西安:西安交通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防洪设施监测与检测技术考核试卷
- 呼吸衰竭患者的抢救配合
- 校园心肺复苏急救方法
- 安全教育饮食卫生
- 外科血气分析临床案例解析
- 婴儿窒息复苏急救方法
- 教师优则校优
- RMC-4998-formic-生命科学试剂-MCE
- “特朗普经济学”系列之十六:限制对华投资美国有哪些手段
- 干细胞疗法的临床应用
- 法院聘用书记员考试试题及答案
- 学校预防性侵教育活动开展情况总结
- 剖腹产延长产假申请书
- 2023年06月江苏南通如东县司法局等17家单位招录政府购买服务人员124人笔试题库含答案详解
- 湖南三支一扶考试历年真题
- 心肺运动试验-PPT-医学课件
- 物流公司安全生产规章制度汇编
- 门诊急危重症优先处置制度及程序全套资料
- 灭火和疏散应急预案流程图
- 西藏自治区建筑与市政工程竣工验收报告
- 文化产业经济学 焦斌龙课件第五章 文化产业结构
评论
0/150
提交评论