遗传算法及其在TSP问题中的应用摘要:本文首先介绍了遗传算法的基本理论与方法,从应用的角度对遗传算法做了认真的分析和研究,总结了用遗传算法提出求解组合优化问题中的典型问题——TSP问题的最优近似解的算法。
其次,本文在深入分析和研究了遗传算法基本理论与方法的基础上,针对旅行商问题的具体问题,设计了基于TSP的遗传算法的选择、交叉和变异算子等遗传算子,提出了求解旅行商问题的一种遗传算法,并用Matlab语言编程实现其算法,最后绘出算法的仿真结果,并对不同结果作出相应的分析。
然后,本文还针对遗传算法求解TSP时存在的一些问题对该算法进行了适当的改进。
如针对初始群体、遗传算子作出适当改进,或者将遗传算法与其他方法相结合,以及在编程过程中对算法流程的改进。
本人在用计算机模拟遗传算法求解TSP问题时,首先分析了用Matlab语言设计遗传算法程序的优越性,接着以遗传算法求解TSP问题为例,深入讨论了各个遗传算子的程序实现,并通过分析实验数据,得到各个遗传算子在搜索寻优过程中所起的作用,最后指出了用Matlab语言编程同用其它高级程序语言编程的差异所在,以及运用Matlab编写遗传算法程序的一些注意事项。
最后,本文提出将遗传算法与其它算法相结合来求解一般问题的想法;并将遗传算法的应用范围扩展,提出可以运用遗传算法求解由TSP衍生出的各类TSP扩展问题,如求解配送/收集旅行商问题的遗传算法(TSPD)、遗传算法在货物配送问题中的应用(ST-TSP)、多旅行商问题(MTSP)等。
引言:优化问题可以自然地分为两类:一类是连续变量的优化问题;另一类是离散变量的优化问题,即所谓组合优化问题。
对于连续变量的优化问题,一般是求一组实数或一个函数;而在组合优化问题中,一般是从一个无限集或有限的几个无限集中寻找一个对象——它可以是一个整数,一个集合,一个排列或者一个图,也即是从可行解中求出最优解的问题。
TSP问题就是其中的典型例子,就本质上而言它可抽象为数学上的组合优化,它描述的是旅行商经N个城市的最短路径问题,因而对TSP问题的求解是数学上,同时也是优化问题中普遍关注的。
旅行商问题(Traveling Salesman Problem,简称TSP)也称为货担郎问题,是一个较古的问题,最早可以追溯到1759年Euler提出的骑士旅行问题[9]。
旅行商问题可以解释为,一位推销员从自己所在城市出发,必须邀访所有城市且每个城市只能访问一次之后又返回到原来的城市,求使其旅行费用最小(和旅行距离最短)的路径。
TSP是一个典型的组合优化问题,并且是一个NP难题,所以一般很难精确地求出其最优解,因而寻找出其有效的近似求解算法就具有重要的理论意义。
另一方面,很多实际应用问题,如公安执勤人员的最优巡回路线、流水作业生产线的顺序问题、车辆调度问题、网络问题、切割问题以至机组人员的轮班安排、教师任课班级负荷分配等问题,经过简化处理后,都可建模为TSP问题,因而对旅行商问题求解方法的研究也具有重要的应用价值。
再者,在各种遗传算法应用实例中,其个体编码方法大多都是采用二进制编码方法或浮点数编码方法,而TSP问题是一种典型的需要使用符号编码方法的实际问题,所以,研究求解TSP问题的遗传算法,对促进遗传算法本身的发展也具有重要意义。
在过去的20年里,在求解旅行商问题的最优解方面取得了极大的进展。
尽管有这些成就,但旅行商问题还远未解决,问题的许多方面还要研究,很多问题还在期待满意的回答。
另外,遗传算法就其本质来说,主要是解决复杂问题的一种鲁棒性强的启发式随机搜索算法。
早在1983年,就有学者用GA 求解组合优化中著名的TSP 问题[5]。
Wetzel 、Brady 、Grefenstette 等人都曾用遗传算子来讨论TSP 问题[6,7,8]。
实践也证明,遗传算法对于组合优化中的NP 完全问题非常有效。
因此遗传算法在TSP 问题求解方面的应用研究,对于构造合适的遗传算法框架、建立有效的遗传操作以及有效地解决TSP 问题等有着多方面地重要意义。
3.TSP 问题的数学模型和基本解法遗传算法的主要应用领域就包括组合优化问题,而组合优化中主要是TSP 问题等。
TSP问题是一个NP 完全问题,近几年来,基于遗传算法求解TSP 问题的研究相当活跃,在遗传算法研究中,TSP 问题已被广泛地用于评价不同的遗传操作及选择机制的性能[14,15]。
TSP 问题的提出最早可追溯到18世纪的欧拉时代,但直到20司世纪中叶才由于优化技术的兴起逐渐为人所认识而著名。
1948年,由美国兰德公司推动,TSP 成为近代组合优化领域的一个典型难题。
它是一个具有广泛应用背景和重要理论价值的组合优化问题。
TSP 的搜索空间随着城市规模数n 的增加而增大,这类组合优化问题称之为NP 完全问题[16]。
3.1TSP 问题的数学模型TSP 问题可以简单地描述成:一名旅行商从一个城市出发,欲遍访n 个城市推销商品,每个城市到一次且仅到一次后返回原出发城市,求总距离最短的巡回路径。
旅行商问题可分为两类:(1)对称旅行商问题(n j i d d ji ij ,,2,1,,⋅⋅⋅=∀=);(2)非对称旅行商问题(n j i dji d ij ,,2,1,,⋅⋅⋅=∃≠)。
TSP 问题的数学模型如下:设有n 个城市,寻找一条巡回路径),,,(21n t t t T ⋅⋅⋅=,使得下列目标函数最小:∑-=++=1111),(),()(n i n i i t t d t t d T f其中i t 为城市号,取值为1到n 之间的自然数,),(j i d 为城市i 和城市j 之间的距离,对于对称式TSP ,有),(),(i j d j i d =。
旅行商问题属于典型的组合优化问题,并且是一个NP 完全问题,其可能的路径数目为(n-1)!/2 [11] ,至今尚未找到有效的解决方法。
在理论上一些方法是可以解这一问题,但 当n 较大时,解题的时间消耗会使这些方法显得没有任何实际价值,所以设计一种有效算法以获得问题的最优解或近似解是具有重要意义的。
目前已有很多求解TSP 近似最优解的算法,主要包括:分枝定界法(branch and bound )、最近邻法(nearestneighbor )、贪婪法(greedy algorithm )、最近插入法(nearest insertion )、最远插入法(farthest insertion )、双最小生成树法(double mining spaning tree )、剥脱法(strip)、空间填空曲线法(space-filling curve)、Karp法、Litke法、Christofides法、2-交叉法(2-opt)、k-交叉法及Lin-Kernighan法等[11,17,18]。
正是由于TSP问题在实际应用中所具有的典型意义,如可用来解决分配问题、路径问题、车辆调度问题等,以及算法理论研究上的价值,所以它一直吸引着各个领域的研究人员去研究各种新的算法。
3.2 TSP的传统解决方法几十年来对于求解TSP问题出现了很多传统方法,其中有精确算法如线性规划方法、动态规划方法、分枝定界法,近似优化算法如最近插入法、最近邻法、Clark&Wright算法、双最小生成树法、Christofides算法、r-opt算法、混合算法、概率算法等。
其中,线性规划方法是求解TSP的最早的一种算法,主要是采用整数规划中的割平面法。
动态规划方法一般用于很小规模的问题。
分枝定界算法是一种应用范围很广的搜索算法,它通过有效的约束界限来控制搜索进程使之能向着空间状态树上有最优解的分支推进,以便尽快找出一个最优解,该方法的关键在于约束界限的选取,不同的约束界限,可形成不同的分支定界法;但分枝定界算法对于解大规模问题不是很有效。
近似算法都是适用于对称TSP问题的。
其中r-opt方法是一种局部改进搜速算法。
混合算法是用某个近似算法求得初始解,然后借助一个或者若干个r-opt算法对解加以改进,这种混合型算法往往能获得较好的解,但也很耗时。
总而言之,传统的优化算法是一种局部搜索算法,一般得到局部最优解,很难达到全局最优解,并且很难适用于大规模的最优化问题。
3.3 TSP的智能优化算法近年来,有很多解决TSP问题的较为有效的智能优化方法不断被推出,例如禁忌搜索方法、模拟退火算法、遗传算法等。
禁忌搜索方法(TS)是对局部领域搜索的一种扩展,是一种全局逐步寻优算法,是对人类智力过程的一种模拟。
TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过藐视准则来赦免一些被禁忌的优良状态,进而保证多样化的有效搜索以实现全局优化。
模拟退火算法的出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。
模拟退火算法是在某一初温下,伴随温度参数的不断下降,结合概率突跳性在解空间中随机寻找目标函数的全局最优解,使得局部最优解能概率性的跳出并最终趋于全局最优解。
这两种方法是从一个解进行局域搜索,虽然都有其各自的长处,但却存在着全局搜索能力差的弱点,极有可能找到的是局部最优解;尽管可以采用一定机制有效避免陷入局部极小并最终趋于全局最优,但是时间效率比较低。
而遗传算法具有良好的全局搜索能力,是目前解决各种优化问题的最有效方法,已经形成研究热点。
因此,遗传算法在TSP问题求解方面的应用研究,对于构造合适的遗传算法框架、建立有效的遗传操作以及有效地解决TSP问题等有着多方面地重要意义。
传算法是按并行方式搜索一个种群数目的点,而不是单个点[16]。
它的并行性表现在两个方面,一是遗传算法的内在并行性,即可以多台机器各自进行独立种群的演化计算,运行过程中可以进行信息交换也可以不进行信息交换。
二是遗传算法的内含并行性,这是由于遗传算法采用种群的方式组织搜索。
此外,遗传算法还可以很好地与其它算法如上面讲到的禁忌搜索方法和模拟退火方法相结合,从而使得遗传算法更加有效。
图3-1就是传统优化方法与遗传算法的比较,从图中我们可以很直观的看出传统方法与遗传算法在求解具体问题时的区别。