最短路径TSP遗传算法.doc

上传人:wj 文档编号:2504094 上传时间:2023-05-03 格式:DOC 页数:9 大小:73.50KB
下载 相关 举报
最短路径TSP遗传算法.doc_第1页
第1页 / 共9页
最短路径TSP遗传算法.doc_第2页
第2页 / 共9页
最短路径TSP遗传算法.doc_第3页
第3页 / 共9页
最短路径TSP遗传算法.doc_第4页
第4页 / 共9页
最短路径TSP遗传算法.doc_第5页
第5页 / 共9页
最短路径TSP遗传算法.doc_第6页
第6页 / 共9页
最短路径TSP遗传算法.doc_第7页
第7页 / 共9页
最短路径TSP遗传算法.doc_第8页
第8页 / 共9页
最短路径TSP遗传算法.doc_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

最短路径TSP遗传算法.doc

《最短路径TSP遗传算法.doc》由会员分享,可在线阅读,更多相关《最短路径TSP遗传算法.doc(9页珍藏版)》请在冰点文库上搜索。

最短路径TSP遗传算法.doc

第四章遗传算法与组合优化

4.1背包问题(knapsackproblem)

4.1.1问题描述

0/1背包问题:

给出几个尺寸为S1,S2,…,Sn的物体和容量为C的背包,此处S1,S2,…,Sn和C都是正整数;要求找出n个物件的一个子集使其尽可能多地填满容量为C的背包。

数学形式:

最大化

满足

广义背包问题:

输入由C和两个向量C=(S1,S2,…,Sn)和P=(P1,P2,…,Pn)组成。

设X为一整数集合,即X=1,2,3,…,n,T为X的子集,则问题就是找出满足约束条件,而使获得最大的子集T,即求Si和Pi的下标子集。

在应用问题中,设S的元素是n项经营活动各自所需的资源消耗,C是所能提供的资源总量,P的元素是人们从每项经营活动中得到的利润或收益,则背包问题就是在资源有限的条件下,追求总的最大收益的资源有效分配问题。

广义背包问题可以数学形式更精确地描述如下:

最大化

满足

背包问题在计算理论中属于NP—完全问题,其计算复杂度为O(2n),若允许物件可以部分地装入背包,即允许X,可取从0.00到1.00闭区间上的实数,则背包问题就简化为极简单的P类问题,此时计算复杂度为O(n)。

4.1.2遗传编码

采用下标子集T的二进制编码方案是常用的遗传编码方法。

串T的长度等于n(问题规模),Ti(1≤i≤n)=1表示该物件装入背包,Ti=0表示不装入背包。

基于背包问题有近似求解知识,以及考虑到遗传算法的特点(适合短定义距的、低阶的、高适应度的模式构成的积木块结构类问题),通常将Pi,Si按Pi/Si值的大小依次排列,即P1/S1≥P2/S2≥…≥Pn/Sn。

4.1.3适应度函数

在上述编码情况下,背包问题的目标函数和约束条件可表示如下。

目标函数:

约束条件:

按照利用惩罚函数处理约束条件的方法,我们可构造背包问题的适应度函数f(T)如下式:

f(T)=J(T)+g(T)

式中g(T)为对T超越约束条件的惩罚函数,惩罚函数可构造如下:

式中Em为Pi/S(1≤i≤n)i的最大值,β为合适的惩罚系数。

4.2货郎担问题(TravelingSalesmanProblem——TSP)

在遗传其法研究中,TSP问题已被广泛地用于评价不同的遗传操作及选择机制的性能。

之所以如此,主要有以下几个方面的原因:

(1)TSP问题是一个典型的、易于描述却难以处理的NP完全(NP-complete)问题。

有效地解决TSP问题在可计算理论上有着重要的理论价值。

(2)TSP问题是诸多领域内出现的多种复杂问题的集中概括和简化形式。

因此,快速、有效地解决TSP问题有着极高的实际应用价值。

(3)TSP问题因其典型性已成为各种启发式的搜索、优化算法的间接比较标准,而遗传算法就其本质来说,主要是处理复杂问题的一种鲁棒性强的启发式随机搜索算法。

因此遗传算法在TSP问题求解方面的应用研究,对于构造合适的遗传算法框架、建立有效的遗传操作以及有效地解决TSP问题等有着多方面的重要意义。

问题描述:

寻找一条最短的遍历n个城市的路径,或者说搜索整数子集X={1,2,…,n}(X的元素表示对n个城市的编号)的一个排列π(X)={v1,v2,…,vn},使

取最小值。

式中的d(vi,vi+1)表示城市vi到城市vi+1的距离。

4.2.1编码与适应度函数

编码

1.以遍历城市的次序排列进行编码。

如码串12345678表示自城市l开始,依次经城市2,3,4,5,6,7,8,最后返回城市1的遍历路径。

显然,这是一种针对TSP问题的最自然的编码方式。

这一编码方案的主要缺陷在于引起了交叉操作的困难。

2.采用“边”的组合方式进行编码。

例如码串24536871的第1个码2表示城市1到城市2的路径在TSP圈中,第2个码4表示城市2到城市4的路径在TSP圈中,以此类推,第8个码1表示城市7到城市1的路径在TSP圈中。

3.间接“节点”编码方式。

以消除“一点交叉”策略(或多点交叉策略)引起的非法路径问题。

码串长度仍为n,定义各等位基因的取值范围为(n–i+1),i为基因序号,解码时,根据相应基因位的取值,从城市号集合中不回放地取一个城市号,直至所有城市号被取完。

由于这种编码方式特征遗传性较差,因此现行的研究中很少采用。

适应度函数

适应度函数常取路径长度Td的倒数,即

f=1/Td

若结合TSP的约束条件(每个城市经过且只经过一次),则适应度函数可表示为:

f=1/(Td+α*Nt),

其中Nt是对TSP路径不合法的度量(如取付Nt为未遍历的城市的个数),α为惩罚系数,常取城市间最长距离的两倍多一点(如2.05*dmax)。

4.2.2交叉策略

问题:

基于TSP问题的顺序编码(其它编码如以边的组合状态进行编码也呈现相似特性),若采取简单的一点交叉或多点交叉策略,必然以极大的概率导致未能完全遍历所有城市的非法路径。

如8城市的TSP问题的两个父路径为

1234|5678

8765|4321

若采取一点交叉,且交叉点随机选为4,则交叉后产生的两个后代为

87655678

12344321

显然,这两个子路径均未能遍历所有8个城市,都违反TSP问题的约束条件。

可以采取上述构造惩罚函数的方法,但试验效果不佳。

可能的解释:

这一方法将本已十分复杂的TSP问题更加复杂化了。

因为满足TSP问题约束条件的可行解空间规模为n!

;而按构造惩罚函数的方法,其搜索空间规模变为nn;随着n的增大n!

与nn之间的差距是极其惊人的。

解决这一约束问题的另一种处理方法是对交叉、变异等遗传操作做适当的修正,使其自动满足TSP的约束条件。

常用的几种交叉方法:

1.部分匹配交叉(PMX,PartiallyMatchedCrossover)法

PMX操作是由Goldberg和Lingle于1985年提出的。

在PMX操作中,先依据均匀随机分布产生两个位串交叉点,定义这两点之间的区域为一匹配区域,并使用位置交换操作交换两个父串的匹配区域。

实例:

如两父串及匹配区域为

A=984|567|1320

B=871|230|9546

首先交换A和B的两个匹配区域,得到

A’=984|230|l320

B’=871|567|9546

对于A’、B’两子串中匹配区域以外出现的遍历重复,依据匹配区域内的位置映射关系,逐一进行交换。

对于A’有2到5,3到6,0到7的位置符号映射,对A’的匹配区以外的2,3,0分别以5,6,7替换,则得

A”=984|230|1657

同理可得:

B”=801|567|9243

这样,每个子串的次序部分地由其父串确定。

2.顺序交叉法(OX,OrderCrossover)法

与PMX法相似,Davis(1985)等人提出了一种OX法,此方法开始也是选择一个匹配区域:

A=984|567|1320

B=871|230|9546

并根据匹配区域的映射关系,在其区域外的相应位置标记H,得到

A’=984|567|1HHH

B’=8H1|230|9H4H

再移动匹配区至起点位置,且在其后预留相等于匹配区域的空间(H数目),然后将其余的码按其相对次序排列在预留区后面,得到

A”=567HHH1984

B”=230HHH9481

最后将父串A,B的匹配区域相互交换,并放置到A”,B”的预留区内,即可得到两个子代:

A”’=567|230|1984

B”’=230|567|9481

虽然,PMX法与OX法非常相似,但它们处理相似特性的手段却不同。

PMX法趋向于所期望的绝对城市位置,而OX法却趋向于期望的相对城市位置。

3.循环交叉(CX,cyclecrossover)法

Smith等人提出的CX方法与PMX方法和OX方法有不同之处。

循环交叉的执行是以父串的特征作为参考,使每个城市在约束条件下进行重组。

假设两个个体:

A=123456789

B=412876935

进行交叉。

以后代A’为例说明生成后代的过程:

(1)从A中取第一个元素填人A’的第一个位置:

A’=1########

(2)B的第一个元素为“4”,则在A中查找“4”的位置,并将它填入A’相应的位置中:

A’=1##4#####

(3)B的第四个元素为“8”,则在A中查找“8”的位置,并将它填入A’相应的位置中:

A’=1##4###8#

(4)B的第八个元素为“3”,则在A中查找“3”的位置,并将它填入A’相应的位置中:

A’=1#34###8#

(5)B的第三个元素为“2”,则在A中查找“2”的位置,并将它填人A’相应的位置中:

A’=1234###8#

(6)B的第二个元素为“1”,而“1”在A’中已经出现,这样就构成了一个循环。

此时将剩下的位置填入B中对应位置的值:

A’=123476985

同理,若以A为参照,可以得到B’。

最后交叉所得的后代为:

A’=123476985

B’=412856739

循环交叉算子的特点是保留了父代个体中序列的绝对位置。

4.基于知识的交叉方法

这种方法是一种启发式的交叉方法,按以下规划构造后代:

(1)随机地选取一个城市作为子代圈的开始城市。

(2)比较父串中与开始城市邻接的边,选取最小的边添加到圈的路径中。

(3)重复第

(2)步,如果发现按最小边选取的规划产生非法路径(重复经过同一城市),则按随机法产生一合法的边,如此反复,直至形成一完整的TSP圈。

使用这一方法,可获得较好的结果。

不过,这一方法使用了基于问题的一些知识,损失了遗传算法的通用性和鲁棒性。

关于TSP问题的遗传交叉方法还有各种各样的变形方法,一般来说,交叉方法应能使父串的待征遗传给子串,子串应能部分或全部地继承父串的结构特征和有效基因。

4.2.3变异技术

从遗传算法的观点来看,解的进化主要靠选择机制和交叉策略来完成,变异只是为选择、交叉过程中可能丢失的某些遗传基因进行修复和补充,变异在遗传算法的全局意义上只是一个背景操作。

针对TSP问题,主要的变异技术如下:

1.位点变异

变异仅以一定的概率(通常较小)对串的某些位作值的变异。

2.逆转变异

在串中随机选择两点,再将这两点内的子串按反序插入到原位置中,如串A的逆转点为3,6,则经逆转后,变为A’

A=123|456|7890

A’=123|654|7890

3.对换变异

随机选择串中的两点,交换其值(码)。

对于串A

A=123456789

若对换点为4,7,则经对换后,A’为

A’=123756489

4.插人变异

从串中随机选择1个码,将此码插入随机选择的插入点中间,对于上述A而言.若取插入码为5,选取插入点为2~3之间.则

A’=125346789

4.2.4选择机制和群体构成

在遗传算法中,最常见的选择机制是适应度比例选择机制;在有限规模的群体中,适应度较高的个体有较大的机会繁殖后代,即生物进化论上的适者生存规则。

在新一代群体构成方法方面存在:

N方式:

全部替换上一代群体的全刷新代际更新方式。

E方式:

保留一个最好的父串的最佳保留(elitist)群体构造方式。

G方式:

按一定比例更新群体中的部分个体的部分更新方式(或称代沟方法,这种情况的极端是每代仅删去一个最不适的个体的最劣死亡方式)。

B方式:

从产生的子代和父代中挑选最好的若干个个体的群体构成形式。

从群体规模来看,有变化规模的方式,也有恒定规模的群体构成方式等。

一般讲,N方式的全局搜索性能最好,但收敛速度最慢;B方式收敛速度最快,但全局搜索性能最差;E方式和G方式的性能介于N方式和B方式之间。

在求解货郎担问题的应用中,多选用E方式。

4.2.5基于遗传算法求解TSP的算法实现

1.编码与适应度函数

我们以n城市的遍历次序作为遗传算法的编码,适应度函数取为路径长度的倒数(无惩罚函数)。

2.选择机制

用随机方法产生初始种群。

适应度比例选择,E方式(精英保留)产生新一代种群。

3.交叉方法

选用的交叉方法与OX法有点类似,现介绍如下:

(1)随机在串中选择一个交配区域,如两父串及交配区域选定为

A=12|3456|789

B=98|7654|321

(2)将B的交配区域加到A的前面或后面,A的交配区域加到B的前面或后面得到

A’=7654|123456789

B’=3456|987654321

(3)在A’中自交配区域后依次删除与交配区相同的城市码,得到最终的两子串为

A’=765412389

B’=345698721

4.变异技术

采取连续多次对换的变异技术,使可行解有较大的顺序排列上的变化,以抑制“进化逆转”的同化作用。

变异操作发生的概率取得比较小(1%左右),一旦变异操作发生,则用随机方法产生交换次数K,对所需变异操作的串进行K次对换(对换的两码位也是随机产生的)。

5.“进化逆转”操作

引入“进化逆转”操作的主要目的是改善遗传算法的局部搜索能力。

在针对TSP问题的遗传算法中,“逆转”是一种常见的“变异”技术。

这里使用的“进化逆转”是一种单方向的(朝着改进的方向)和连续多次的“逆转”操作,即对于给定的串,若“逆转”使串(可行解)的适应度提高,则执行逆转换作,如此反复,直至不存在这样的逆转操作为止。

这一操作实际上使给定的串改良到它的局部极点,这种局部爬山能力与基本遗传算法的全局搜索能力相结合在实验中显示了较好的效果。

6.算法的流程框图

7.实验结果

实验中,群体规模定为100,交叉概率为0.95,变异概率为0.003,初始可行解群体由随机法产生。

实验结果表明:

(1)当n<15时,随机样本实验表明,本算法可100%搜索到用穷举法求得的最优解。

(2)当15<M<30时,我们对一组样本进行了测试,结果表明本算法能收敛到一稳定的“最好解”(难以确认其最优性);多次实验的误差结果为0,模拟退火法也可找到相同的“最好解”,但运行时间约为遗传算法的6倍。

(3)对n=50,M=60,M=80及M=100的测试结果表明,遗传算法在求解质量上略优于模拟退火法(α=0.95),优化效率高于模拟退火法。

表所示为遗传算法(GA)与模拟退火方法(SA法)的比较实验结果,表中所列TSP路径长度为相对长度,其值由下式算出:

上式中,Td为实际路径的长度,X为包含TSP所有城市的最小正方形的边长,N为TSP问题的城市数目。

图为城市规模N=100的TSP问题的初始群体中的最佳路径,图为经本算法优化得到的最佳路径。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2