当前位置:文档之家› 遗传算法和模拟退火法在解决tsp问题上的对比分析

遗传算法和模拟退火法在解决tsp问题上的对比分析

遗传算法和模拟退火法在解决TSP 问题上的
对比研究
邓朝丞
摘要:TSP 问题是组合优化领域的经典问题之一,旨在求出遍历若干个城市的最短路径。

针对在用各种算法解决TSP 问题的不同点,本文分析比较了运用遗传算法,模拟退火法处理TSP 问题的优缺点,得出解决TSP 问题的最适宜算法。

关键词:TSP 问题,遗传算法,模拟退火法
1 引言:
TSP 问题也称为巡回旅行商问题,是一个相当古老的优化问题,最早可以追溯到1759年Euler 提出的骑士旅行问题【1】。

TSP 问题是一个典型的容易描述但是难以处理的NP 完全问题,是运筹学有代表性的组合优化问题,可简单描述为 有n 个城市.一位销售商从某个城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。

其实际模型在印刷电路板的钻孔路线方案、连锁店的货物配送、网络布线等优化问题中有着广泛的应用【2】。

同时TSP 问题也是诸多领域内出现的多种复杂问题的集中概括和简化形式.所以,有效地解决TSP 问题在计算理论和实际应用上都有很高的价值。

目前求解TSP 问题的主要方法有遗传算法,模拟退火算法,本文将该两种算法在解决TSP 问题时所存在的不同,通过实验对比,分析这两种算法在求解组合优化上的优劣性 ,同时提出改进的建议。

2.遗传算法简介
遗传算法(GA)是一种基于自然群体遗传演化机制的算法,它模拟自然界生物进化过程,采用人工进化的方式对目标空间进行随机化搜索。

它将问题域中的可能解看作是群体的个体,并将个体编码成符号串形式(即染色体),模拟生物进化过程,对群体反复进行交叉、变异、选择等操作,根据预定的适应度函数对每个个体进行评价,依据优胜劣汰的进化规则,不断得到更优的群体,同时搜索优化群体中的最优个体,求得满足要求的最优解。

GA 采用一定的编码技术构造染色体(个体),而基因是组成染色体的单元,可以表示为一个二进制位,一个整数或一个字符等。

染色体表示待求解问题的一个可能解,由若干个基因组成,是GA 操作的基本对象。

而一定数量的个体组成了种群,表示GA 的搜索空间。

在GA 的执行过程中,每一代有许多不同的种群个体同时存在。

根据这些个体对环境的适应能力来决定下一代的个体,适应性强的有更多的机会被选择保留下来。

适应性强弱是通过适应度函数)(x f 的值来判别的,适应度函数)(x f 的构成与目标函数有密切关系,往往是目标函数的变种【3】。

3 用遗传算法求解TSP
用遗传算法解Tsp 问题,采用十进制编码,基因定义为一个城市,染色体定义为到各城市顺序的一种组合,适应度为一条旅行路径对应的距离,路径越短的染色体适应度越高。

例如,取N=10,城市代号为1,2,3,4,5,6,7,8,9,10,则种群中的染色体:2 8 4 10
5 1 7 3
6 9:表示一条旅行路径:2---8---4---1---5---1---7---3---6---9---2:其总路径长97693673175110541084281D D D D D D D D D D D +++++++++=∑,并把最小化优化目标函数变换为以最大值为目标的适应度函数,适应度函数定义如下:)(x f =∑1
1D 。

3.1选择算子:模仿自然选择作用,选择适应性强的个体组成新的种群,保留它们的部分基因到下一代,这里采用最简单的轮盘赌选择法【5】。

一开始用随机方法产生初始群体。

随着遗传算法的执行,则保留N 个较优的个体作为群体。

在每一代运算过程中,个体被选中的概率与其在群体中的相对适应度成正比。

3.2交叉算子:把两个父本的部分结构加以替换重组而生成新的个体,它是遗传算法取得新优良个体的最重要手段。

这里采用改进的顺序交叉方式(IOX ,improved order crossover)
【6】.即先用随机均匀分布方法在欲交换两父染色体串中各产生两个交换点,把这两点之间的区域定义为交配区域.将两个交配区域交换后分别放到两个父本的前面.为了保证基因的唯一性.再将父本中原有的重复个体删除。

举例如下:
A=1 2 (3 4 5 6) 7 8 9
B=9 8 (7 6 5 4 )3 2 1
将B 的交配区域加到A 的前面,A 的交配区域加到B 的前面,得到:
A’=7 6 5 4 1 2 3 4 5 6 7 8 9
B’=3 4 5 6I 9 8 7 6 54 3 2 1
然后在A ’中自交配区域依次删除与交配区相同的城市码,达到最终的子串如下 A”=7 6 541 2 3 8 9
B”=3 4 5 6 9 8 7 2 1
这样,在两个父代串相同的情况下仍能产生一定程度的变异效果,维持群体内一定的多样化特性,在一定程序上有效抵制了早熟现象【7】。

4.3变异算子:变异保持了种群的多样性,与选择、交叉算子结合在一起,保证了遗传算法的有效性,防止出现非成熟收敛。

这里采用交换变异,也称为对换变异,即随机选择串中的两点,交换码值。

如在下面的串中交换4和7,得到A ’:
A=1 2 3 4 5 6 7 8 9
A’=1 2 3 7 5 6 4 8 9
1 . 1 模拟退火算法简介
模拟退火算法(Simulated Annealing ,简称SA) 是基于Monte Carlo 迭代求解策略的一种随机寻优算 法【8】, 其出发点是基于物理退火过程与组合优化之问的相识性, SA 由某一较高温度开始, 利用具有概率突跳 特性的 Metropolis 抽样策略在解空间中进行随机搜索, 伴随温度的不断下降重复抽样过程,最终得到问题的全局最优解。

模拟退火算法能够有效地解决连续变量和离散变量的全局寻优问题, 相对于传统的优化方法, 模拟退火算法具有许多优点, 如高效性、 简化性、 健壮性、 稳定性、 通用性和灵活性等等。

但模拟退火算法也有不足, 如为了求得一个高质量的近似最优 解花费的时间较长,尤其是当问题规模不可避免地增 大时, 难以承受的执行时间将使算法丧失可行性。

2 用拟退火算法解决TSP 问题
下面针对 T S P 问题给出模拟退火算法的基本步骤:
( 1 ) 给定初始温度t = t 。

,确定降温准则,并随机产生初始状态s = s 0 ,令初始最优解为s = s ’= s 。

,令k= 0 ;
( 2 ) 判断是否满足优化结束的收敛条件,如果满足则输出优化的结果,不满足继续步骤( 3 ) ;
( 3 ) 由状态产生函数产生新状态s ,即S j =G e n . e r a t e ( s ) ,并计算路程目标的增量值,设路程目标函数为c ( ) ,则增量A E= C ( s t ) 一c ( .s ) ;
( 4 ) 判断A E的值。

如果A C , < 0 ,则接受s 为当前解,即s = S t ,并判断C( s )<C( s ’) 是否成立,如果正确令s ’= s t ;如果A E> 0 ,判断条件m i n { 1 ,e x p [一3 c /t 。

] } ≥r a n d o m[ 0 ,1 ] 是否满足,如果满足同样接受s 为当前解,即s =s t ,如果不满足则保持当前状态不变;
4 ) 判断是否满足Me t r o p ol i s 抽样稳定性准则,如果满足则转到步骤( 2 ) ,并令k=k+1 ,t …=u p d a t e ( t ) ;如果不满足则转到步骤(3)。

相关主题