计算智能--用遗传算法解决TSP问题.docx

计算智能--用遗传算法解决TSP问题.docx

ID:57221311

大小:60.31 KB

页数:8页

时间:2020-08-06

计算智能--用遗传算法解决TSP问题.docx_第1页
计算智能--用遗传算法解决TSP问题.docx_第2页
计算智能--用遗传算法解决TSP问题.docx_第3页
计算智能--用遗传算法解决TSP问题.docx_第4页
计算智能--用遗传算法解决TSP问题.docx_第5页
资源描述:

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

1、计算智能作业三用遗传算法求解TSP问题ZY于驷男一、旅行商问题旅行商问题(TravellingSalesmanProblem,TSP),是典型的、易于描述却难以处理的组合优化问题。由于遗传算法方法的本质是处理复杂问题的一种鲁棒性强的启发性随机搜索算法,故而利用遗传算法求解这类问题是有效的。假设平面上有n个点代表n个城市的位置,寻找一条最短的闭合路径,使得可以遍历每一个城市恰好一次。这就是旅行商问题。旅行商的路线可以看作是对n个城市所设计的一个环形,或者是对一列n个城市的排列。由于对n个城市所有可能的遍历数目可达(n-1)!个,因此解决这个问题需要0(n!)

2、的计算时间。假设每个城市和其他任一城市之间都以欧氏距离直接相连。也就是说,城市间距可以满足三角不等式,也就意味着任何两座城市之间的直接距离都小于两城市之间的间接距离。是一个典型的优化组合问题。二、遗传算法遗传算法是由美国J.Holland教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的

3、候选解群,重复此过程,直到满足某种收敛指标为止。遗传算法,在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。遗传算法在模式识别、神经网络、图像处理、机器学习、工业优化控制、自适应控制、负载平衡、电磁系统设计、生物科学、社会科学等方面都得到了应用。在人工智能研究中,现在人们认为“遗传算法、自适应系统、细胞自动控制、混沌理论与人工智能一样,都是对今后十年的计算技术有重大影响的关键技术”。三、算法实现标准的遗传算法包括群体的初始化,选择,交叉,变异操作。流程图如下所示,其主要步骤可描述如下:(1)随机产生一组初始个体构成的初始种群

4、,并评价每一个个体的适配值。(2)判断算法的收敛准则是否满足。若满足输出搜索结果;否则执行以下步骤。(3)根据适配值大小以一定方式执行选择操作。(4)按交叉概率Pc执行交叉操作。(5)按变异概率Pm执行变异操作。(6)返回步骤(2)。对于n个城市的问题,每个个体即每个解的长度为n,用s行,t列的pop矩阵,表示初始群体,s表示初始群体的个数,t为n+1,矩阵的每一行的前n个元素表示城市编码,最后一个元素表示这一路径的长度。城市的位置可以手动输入,使用一个N×N矩阵D存储,D(i,j)代表城市i和城市j之间的距离。D(i,j)=sqrt((Xi-Xj).^2

5、+(Yi-Yj).^2)。在TSP的求解中,可以直接用距离总和作为适应度函数。个体的路径长度越小,所得个体优越,距离的总和越大,适应度越小,进而探讨求解结果是否最优。选择就是从群体中选择优胜个体、淘汰劣质个体的操作,它是建立在群体中个体适应度评估基础上。这里采用方法是最优保存方法。本实例中交叉采用部分匹配交叉策略,先随机选取两个交叉点,然后将两交叉点中间的基因段互换,将互换的基因段以外的部分中与互换后基因段中元素冲突的用另一父代的相应位置代替,直到没有冲突。变异操作是以变异概率Pm对群体中个体串某些基因位上的基因值作变动,若变异后子代的适应度值更加优异,则

6、保留子代染色体,否则,仍保留父代染色体。这有助于增加种群的多样性,避免早熟收敛(非全局最优)。判断结束准则是固定指定了迭代的次数当算法达到迭代次数时,算法结束,输出当前的最优解。在根据适配值计算并选择的时候,记录下来的当前最优值,在变异后加入跟新的群体,保证新的迭代循环中TSP解越来越好(不会变差)。在选择的一种操作是拿最优的K个替换最差的K个个体,本例是按适配值选择,并使群体数目变少,当每次变异操作后,产生随机路径补充群体是群体数目不变,再次循环,一定程度上防止因初始群体的选择问题而陷入局部最优。四、实验代码及结果#include#i

7、nclude#include#include#includeusingnamespacestd;typedefvectorVI;typedefvectorVVI;#definePBpush_back#defineMPmake_pairintnext_int(){returnrand()*(RAND_MAX+1)+rand();}doublenext_double(){return(double(rand()*(RAND_MAX+1)+rand()))/((RAND_MAX+

8、1)*RAND_MAX+RAND_MAX);}voidpmx(VI

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

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

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