简单对比遗传算法与蚁群算法求解旅行商问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单对比遗传算法与蚁群算法求解旅行商问题
简单对比遗传算法与蚁群算法求解旅行商问题
1、旅行商
1.1 旅行商问题简介
旅行商问题(Traveling Saleman Problem)又称作旅行推销员问题、货郎担问题等,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。
最早的旅行商问题的数学规划是由Dantzig(1959)等人提出,规则虽然简单,但在地点数目增多后求解却极为复杂。
TSP问题最简单的求解方法是枚举法。
它的解是多维的、多局部极值的、趋于无穷大的复杂解的空间,搜索空间是n个点的所有排列的集合,大小为(n-1)!。
有研究者形象地把解空间比喻为一个无穷大的丘陵地带,各山峰或山谷的高度即是问题的极值。
求解TSP,则是在此不能穷尽的丘陵地带中攀登以达到山顶或谷底的过程。
1.2 求解TSP方法简介
旅行推销员的问题属于NP-Complete的问题,所以旅行商问题大多集中在启发式解法。
Bodin(1983)等人将旅行推销员问题的启发式解法分成三种:
1.2.1 途程建构法(Tour Construction Procedures)
从距离矩阵中产生一个近似最佳解的途径,有以下几种解法:
(1)最近邻点法(Nearest Neighbor Procedure):一开始以寻找离场站最近的需求点为起始路线的第一个顾客,此后寻找离最后加入路线的顾客最近的需求点,直到最后。
(2)节省法(Clark and Wright Saving):以服务每一个节点为起始解,根据三角不等式两边之和大于第三边之性质,其起始状况为每服务一个顾客后便回场站,而后计算路线间合并节省量,将节省量以降序排序而依次合并路线,直到最后。
(3)插入法(Insertion procedures):如最近插入法、最省插入法、随意插入法、最远插入法、最大角度插入法等。
1.2.2 途程改善法(Tour Improvement Procedure)
先给定一个可行途程,然后进行改善,一直到不能改善为止。
有以下几种解法:
(1)K-Opt(2/3 Opt):把尚未加入路径的K条节线暂时取代目前路径中K条节线,并计算其成本(或距离),如果成本降低(距离减少),则取代之,直到无法改善为止,K通常为2或3。
(2)Or-Opt:在相同路径上相邻的需求点,将之和本身或其它路径交换且仍保持路径方向性,并计算其成本(或距离),如果成本降低(距离减少),则取代之,直到无法改善为止。
1.2.3 合成启发法(Composite Procedure)
先由途程建构法产生起始途程,然后再使用途程改善法去寻求最佳解,又称为两段解法(two phase method)。
有以下几种解法:
(1)起始解求解+2-Opt:以途程建构法建立一个起始的解,再用2-Opt的方式改善途程,直到不能改善为止。
(2)起始解求解+3-Opt:以途程建构法建立一个起始的解,再用3-Opt的方式改善途程,直到不能改善为止。
2、遗传算法
2.1 遗传算法简介
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。
遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。
其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。
遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域而成为现代有关智能计算中的关键技术。
2.2 遗传算法的基本运算过程如下:
(1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
(2)个体评价:计算群体P(t)中各个个体的适应度。
(3)选择运算:将选择算子作用于群体。
选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。
选择操作是建立在群体中个体的适应度评估基础上的。
(4)交叉运算;将交叉算子作用于群体。
所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。
遗传算法中起核心作用的就是交叉算子。
(5)变异运算:将变异算子作用于群体。
即是对群体中的个体串的某些基因座上的基因值作变动。
群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。
(6)终止条件判断:若t T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。
2.3 遗传算法的特点
遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。
每个个体实际上是染色体(chromosome)带有特征的实体。
染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现。
因此,在一开始需要实现从表现型到基因型的映射即编码工作。
由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
遗传算法具有以下几方面的特点:
(1)遗传算法从问题解的串集开始搜索,而不是从单个解开始。
这是遗传算法与传统优化算法的极大区别。
传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。
遗传算法从串集开始搜索,覆盖面大,利于全局择优。
(2)遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。
适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。
这一特点使得遗传算法的应用范围大大扩展。
(3)遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。
(4)具有自组织、自适应和自学习性。
遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。
2.4 遗传算法求解旅行商问题的基本步骤如下:
(1)确定染色体的编码方式,并随机产生初始种群。
针对TSP 问题,一般采用十进制形式对染色体进行编码,一个染色体即表示一个解序列。
染色体编码的方式直接影响着求解的过程和效率,目前主要有三种较为有效地表示方法:(1)顺序表示(1985 年, Grefenstet te 等提出;( 2) 路径表示(pat h representation) ;(3)布尔矩阵表示(1992 年Fox 和McMahon 等提出) 。
其中,第一种方法Grefenstet te 编码最为常见。
(2)确定评价染色体优劣的适应度函数,并依此求出每个染色体的适应度。
适应度函数可以依据个体路径的长度来确定,即将该旅行路线的总长度作为个体的适值函数,该个体的适应度越低,即路径越短,则该个体越好。
(3) 依据一定的选择策略选择父体进行复制。
本步骤的作用是从当前的种群中根据个体的适应度选择出一些比较优良的个体,并复制到下一代群体中。
常用的选择策略有:轮盘选择( Roulet tewheel Selection) 、最佳个体保存( Elitist Model ) 、期望值模型( Expected Value Model ) 、排序选择(Ranking)等。
(4) 以一定的交叉概率执行交叉操作。
本步骤是产生新个体的主要方法,它决定了遗传算法的全局搜索能力。
常用的交叉策略有:部分匹配交叉( Partially Matched Crossover,PMX) 、顺序交叉(Ordered Crossover ,OX) 、循环交叉(Cycle Crossover ,CX)等。
(5)以一定的变异概率进行变异操作。
该步骤是产生新个体的辅助方法,却又是不可或缺的一个运算步骤,它决定了遗传算法的局部搜索能力,能维持种群的多样性,防止解出现早熟现象。
主要的变异策略有:基本位变异、均匀变异、非均匀变异、位点变异、逆转变异等。
(6)判断算法是否满足终止条件,若满足则输出结果,否则转到步骤(2) 。
遗传算法的优点是使用简单、通用性强、易于实现,并具有并行性和全局搜索能力。
缺点是易出现早熟收敛和收敛性差的现象。
3、蚁群算法
3.1蚁群算法简介
蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。
它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。
蚁群算法是一种新型的模拟进化算法,它通过模拟蚁群在寻找食物中所体现出的寻优能力来解决现实中一些困难的优化问题。
蚂蚁在觅食的过程中会在所经过的路上留下不同浓度的信息素,路径越长则信息素的浓度越低 ,同时信息素会随着时间的流逝而挥发。
一条路径走过的蚂蚁越多 ,则留下的信息素浓度越高。
而当后来的蚂蚁寻找路径的时候 ,就会以较大的几率选择信息素较浓的路径。
这种过程就形成了一个正反馈 ,通过这种方式可以最终找到
一条最优路径。
3.2蚁群算法求解旅行商问题的基本步骤如下:
(1)初始化每条路径上的信息素浓度。
(2) 把m只蚂蚁随机的放在n 个城市上。
(3)让每一只蚂蚁根据概率函数寻找出一条可行的路径。
概率函数一般由两个城市间的距离以及两城市间的信息素浓度所构成。
(4)计算出m 只蚂蚁所找到的路径的长度 ,并选出本次最优路径。
(5)根据本次蚂蚁的访问情况 ,更新本次最优路径每条边上的信息素浓度。
(6) 判断算法是否满足终止条件 ,若满足则输出结果 ,否则转到步骤(2)。
3.3蚁群算法的特点
蚁群算法是一种新型的模拟进化算法 ,尽管人们对蚁群算法的研究时间不长 ,在这一领域还有一些问题需要进一步研究和解决 ,但是理论研究和实际应用表明它是一种很有前途的仿生优化算法。
通过对国内外的研究回顾 ,不难发现蚁群算法的主要优点在于:它是一种自适应、自组织、本质上并行的方法 ,而且是一种正向反馈的方法 ,可以促使整个系统向最优解进化 ,具有较强的鲁棒性 ,对蚁群算法模型稍加修改 ,就可以应用于其他问题 ,同时它可以与多种启发式算法结合 ,以改善算法的性能。
但是该算法也具有收敛速度慢、易陷入局部最优等缺点。
此外 ,算法中的参数设定目前尚无理论的依据 ,要靠实验来调整和确定。
因此 ,关于蚁群算法理论及其应用的研究必将是一个长期的研究课题。
相信随着人们对仿生智能系统理论及应用研究的不断深入 ,蚁群算法这一新型的仿生优化算法必将展现出更加广阔的发展前景。
4、结论
遗传算法和蚁群算法都是新型的模拟进化算法,前者模拟的生物进化过程,后者模拟的是蚂蚁觅食的过程。
而旅行商也成为近几年来使用现代优化问题解决的热点问题,因为其规则简单而求解困难,引得研究者们纷纷跃跃欲试,改进各种算法,或者提出有效的混合优化算法。
在之前有学者已经对比出遗传算法和粒子群算法的优缺点,显然的是粒子群算法原理更简单,参数少,实现更容易,但主要还是实用在连续的优化问题。
在本文中提到的蚁群算法和遗传算法都可以解决离散问题,典型的就有旅行商问题,由以上简单的对比可知:遗传算法的优点是使用简单、通用性强、易于实现,并具有并行性和全局搜索能力。
缺点是易出现早熟收敛和收敛性差的现象,所以参数设置是关键同是也是再研究的主要方向;蚁群算法是一种自适应、自组织、本质上并行的方法 ,而且是一种正向反馈的方法 ,可以促使整个系统向最优解进化 ,具有较强的鲁棒性 ,对蚁群算法模型稍加修改 ,就可以应用于其他问题 ,同时它可以与多种启发式算法结合 ,以改善算法的性能,但是该算法也具有收敛速度慢、易陷入局部最优等缺点。
其中关于两个算法应用于旅行商问题的关键都是参数设置的合理性讨论为重点,这些也促成了遗传算法和蚁群算法的改进以及和其他优化算法的结合来更好的解决旅行商问题。