基于遗传算法求解TSP问题的一种算法
基于遗传算法的动态TSP问题求解

括数 学、 运筹学、 物 理、 生物和人工智能等不 同领域 的研究者 。 很 多实际问题可 以转化 为动态 T S P问题, 动态 T S P问题 已广 泛应 用于通信 、 路 由选择 、 机器人控制 、 车辆选路 、 移 动计算等 领域 。解 决动态 T S P问题有 很重 要的理论和 实际意义。
摘 要: T S P问题是一个经典的 N P难度的组合优化 问题 , 遗传算法是求解 T S P问题的有效方法之一 。 本文通过分析动 态T S P问 题 的特点 , 将2 - O P T算法 、 弹性松 弛算法和遗传算法结合起来 , 设 计并实现 了一种解决动态 T S P问题的算法 。 仿真 实验 结果表 明, 该算法有较快的收敛速度 , 能有效地遏止早熟; 无论在静 态环境 下还 是动态环境下都可行 、 高效。 关键词 : 动态 T S P ; 遗传算 法; 2 - O P T ; 弹性松 弛算法
m,
c ( 2 】 , c , …. . c ( w ) , 使得 闭合路径 【 【 f ) , ( m o d Ⅳ ] 为最小 。
f - 1
最后, 将两个临时数组中的数据写回到A、 B中, 交叉操作完毕。 ( 3 ) 变异算子 。
为 了实现变异运算 , 本文使用的变异算子如下 , 即在 个体 编码 串中随机选择两个城市 ,是第一个城市 的右城 市与第二 个城市之 间的编码倒序排列 , 从而 产生一个新个体 。 若染色体 A为 : 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 。
本文使用部分映射的双点交叉 。基本算法如下 : 根据 选择概率选择出两个染色体 A, B。产 生随机 数 i 、 i , 且i 、 j < 染色体最大长 度, + 2 。 下面以 9 个城市演示交又过程。
实验六:遗传算法求解TSP问题实验2篇

实验六:遗传算法求解TSP问题实验2篇第一篇:遗传算法的原理与实现1. 引言旅行商问题(TSP问题)是一个典型的组合优化问题,它要求在给定一组城市和每对城市之间的距离后,找到一条路径,使得旅行商能够在所有城市中恰好访问一次并回到起点,并且总旅行距离最短。
遗传算法作为一种生物启发式算法,在解决TSP问题中具有一定的优势。
本实验将运用遗传算法求解TSP问题,以此来探讨和研究遗传算法在优化问题上的应用。
2. 遗传算法的基本原理遗传算法是模拟自然界生物进化过程的一种优化算法。
其基本原理可以概括为:选择、交叉和变异。
(1)选择:根据问题的目标函数,以适应度函数来评估个体的优劣程度,并按照适应度值进行选择,优秀的个体被保留下来用于下一代。
(2)交叉:从选出的个体中随机选择两个个体,进行基因的交换,以产生新的个体。
交叉算子的选择及实现方式会对算法效果产生很大的影响。
(3)变异:对新生成的个体进行基因的变异操作,以保证算法的搜索能够足够广泛、全面。
通过选择、交叉和变异操作,不断迭代生成新一代的个体,遗传算法能够逐步优化解,并最终找到问题的全局最优解。
3. 实验设计与实施(1)问题定义:给定一组城市和每对城市之间的距离数据,要求找到一条路径,访问所有城市一次并回到起点,使得旅行距离最短。
(2)数据集准备:选择适当规模的城市数据集,包括城市坐标和每对城市之间的距离,用于验证遗传算法的性能。
(3)遗传算法的实现:根据遗传算法的基本原理,设计相应的选择、交叉和变异操作,确定适应度函数的定义,以及选择和优化参数的设置。
(4)实验流程:a. 初始化种群:随机生成初始种群,每个个体表示一种解(路径)。
b. 计算适应度:根据适应度函数,计算每个个体的适应度值。
c. 选择操作:根据适应度值选择一定数量的个体,作为下一代的父代。
d. 交叉操作:对父代进行交叉操作,生成新的个体。
e. 变异操作:对新生成的个体进行变异操作,以增加搜索的多样性。
tsp问题的memetic求解算法

tsp问题的memetic求解算法TSP问题是指旅行商问题(Traveling Salesman Problem),是一个已知的NP-hard问题。
在TSP问题中,一个旅行商要在一系列城市之间旅行,每个城市之间的距离已知,旅行商需要找到最短的路线,使得每个城市都恰好被访问一次,最后回到起点城市。
Memetic算法是一种将遗传算法(Genetic Algorithm)与局部(Local Search)相结合的元型算法,用于求解最优化问题。
在TSP问题的求解中,Memetic算法可以优化基于遗传算法的随机过程,并通过加入局部操作来进一步提高算法的效率和准确性。
Memetic算法的基本流程如下:1.初始化种群:创建一个初始的候选解集合,每个候选解表示为一个路径序列,通过随机生成一定数量的路径来构建初始种群。
2.遗传算法的操作:通过选择、交叉和变异等操作,生成新的候选解集合。
选择使用适应度函数来评估每个候选解的适应度,并根据适应度进行选择操作。
交叉和变异操作用于生成新的候选解。
3. 局部操作:对每个候选解应用局部操作,以进一步优化候选解。
局部算法可以是简单的2-opt、3-opt等操作,也可以是更复杂的局部算法,如Lin-Kernighan算法等。
4.评估和选择:对新生成的候选解进行评估,并根据适应度函数进行选择操作,保留适应度较高的候选解。
5.终止条件:当满足终止条件时,停止算法,并返回最优解。
Memetic算法的关键之处在于局部操作的设计,局部操作可以根据特定问题的特点进行优化。
对于TSP问题,局部操作可以通过交换两个城市的位置来改进解的质量,以逼近最优解。
通过将遗传算法和局部相结合,Memetic算法能够综合利用全局和局部的优势,减少遗传算法收敛速度慢的问题,并提高算法的求解效率和准确性。
它能够通过遗传算法的全局发现更好的解空间,并通过局部来优化这些候选解,以获得更接近最优解的解。
总结起来,Memetic算法是一种使用遗传算法和局部相结合的元启发式算法,用于求解TSP问题。
利用遗传算法解决TSP问题课件

给每个城市一个固定的基因编号,例如10个城市为 0 1 2 3 4 5 6 7 8 9 ,随机地组成一个染色体(以下所有情况都以10个城市为例说明)。 约定这10个城市之间的行走路线为: 0123456789 (其余基因序列的路线同样道理)
两个城市间的距离(用r[i][j]表示)
轮盘选择
for(mem=0;mem<PopSize;mem++) sum+=population[mem].fitness; for(mem=0;mem<PopSize;mem++) //使小的选中的可能性大 x[mem]=sum-population[mem].fitness; sum=0.0; for(mem=0;mem<PopSize;mem++) sum+=x[mem]; /* Calculate relative fitness */ for(mem=0;mem<PopSize;mem++) population[mem].rfitness=x[mem]/sum;
仿真结果
仿真结果
一个完整路线的长度
例如基因序列为:0 8 2 9 7 5 6 4 1 3,存放在gene[0]~gene[9]中。 表示行旅行路线为: 0829756413 总路程为: r[gene[0]][gene[1]]+r[gene[1]][gene[2]]~ +r[gene[9]gene[0]]
交叉
例如一个基因序列为: 0 2 5 6 9 8 1 3 4 7 产生两个0~9的int型随机数,如得到2和6,将gene[2]和gene[6]之间的基因反序,得到: 0 2 1 8 9 6 5 3 4 7
(完整word版)遗传算法求解TSP问题实验报告

人工智能实验报告实验六遗传算法实验II一、实验目的:熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。
二、实验原理:旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。
假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。
路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。
该问题可以被证明具有NPC计算复杂性。
因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。
遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。
它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。
这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。
后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。
群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。
要求利用遗传算法求解TSP问题的最短路径。
三、实验内容:1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。
2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。
4、上交源代码。
四、实验报告要求:1、画出遗传算法求解TSP问题的流程图。
2、分析遗传算法求解不同规模的TSP问题的算法性能。
规模越大,算法的性能越差,所用时间越长。
3、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。
基于遗传算法求解TSP问题

适应度函数
适应度函数用于评估每个染色体的优劣程 度,根据问题的不同,适应度函数需要进 行定制设计。
交叉操作
交叉操作将两个染色体的基因进行交换, 以产生新的个体。常见的交叉方法有单点 交叉、多点交叉等。
选择操作
选择操作根据适应度函数的评估结果,选 择优秀的个体进入下一代种群。常见的选 择方法有轮盘赌选择、锦标赛选择等。
通过选择操作,优秀的个体有更大的机会被选中并参与交叉和变异操作 。交叉操作将两个个体的染色体进行交换,以产生新的个体。变异操作 则对染色体的某些基因进行随机改变,以增加种群的多样性。
遗传算法构成要素
种群
种群是由一组染色体组成的集合,每个染 色体都是优化问题的潜在解。
变异操作
变异操作对染色体的某些基因进行随机改 变,以增加种群的多样性。常见的变异方 法有位点变异、倒位变异等。
04
基于遗传算法的TSP问题求解
TSP问题的遗传算法建模
编码方式
使用染色体编码方式,将TSP问题的解编码 为染色体。
适应度函数
使用距离作为适应度函数,评估染色体的优 劣。
解码方法
通过解码方式将编码后的染色体还原为TSP 问题的解。
遗传操作
包括选择、交叉和变异等操作,用于产生新 的染色体。
编码方式与解码方法
VS
实验环境
本次实验在Windows 10操作系统下进行 ,使用Python 3.8作为编程语言,并利用 NumPy和Matplotlib等库进行数据处理 和可视化。
实验结果展示
最优解
通过运行遗传算法程序,我们得到了最优解为207.9km,与TSPLIB中的最优解206.2km相TSP问题是一个NP-hard问题,它具有以下特征
基于Matlab的遗传算法解决TSP问题的报告
报告题目:基于Matlab的遗传算法解决TSP问题说明:该文包括了基于Matlab的遗传算法解决TSP问题的基本说明,并在文后附录了实现该算法的所有源代码。
此代码经过本人的运行,没有发现错误,结果比较接近理论最优值,虽然最优路径图有点交叉。
因为本人才疏学浅,本报告及源代码的编译耗费了本人较多的时间与精力,特收取下载积分,还请见谅。
若有什么问题,可以私信,我们共同探讨这一问题。
希望能对需要这方面的知识的人有所帮助!1.问题介绍旅行商问题(Traveling Salesman Problem,简称TSP)是一个经典的组合优化问题。
它可以描述为:一个商品推销员要去若干个城市推销商品,从一个城市出发,需要经过所有城市后,回到出发地,应如何选择行进路线,以使总行程最短。
从图论的角度看,该问题实质是在一个带权完全无向图中。
找一个权值最小的Hemilton回路。
其数学描述为:设有一个城市集合其中每对城市之间的距离(),i j d c c R +∈,求一对经过C中每个城市一次的路线()12,,n c c c ΠΠΠ⋯使()()()1111min ,,n i n i i d c c d c c −ΠΠΠΠ+=+∑其中()12,,12n n ΠΠΠ⋯⋯是,的一个置换。
2.遗传算法2.1遗传算法基本原理遗传算法是由美国J.Holland 教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。
遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。
遗传算法,在本质上是一种不依赖具体问题的直接搜索方法,是一种求解问题的高效并行全局搜索方法。
遗传算法在模式识别、神经网络、图像处理、机器学习、工业优化控制、自适应控制、负载平衡、电磁系统设计、生物科学、社会科学等方面都得到了应用。
TSP问题的遗传算法求解
TSP问题的遗传算法求解一、问题描述假设有一个旅行商人要拜访N个城市,要求他从一个城市出发,每个城市最多拜访一次,最后要回到出发的城市,保证所选择的路径长度最短。
二、算法描述(一)算法简介遗传算法(GeneticAlgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过模拟自然进化过程搜索最优解。
遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择个体,并借助于自然遗传学的遗传算子(geneticoperators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
(摘自百度百科)。
(二)遗传算子遗传算法中有选择算子、交叉算子和变异算子。
选择算子用于在父代种群中选择进入下一代的个体。
交叉算子用于对种群中的个体两两进行交叉,有Partial-MappedCrossover、OrderCrossover、Position-basedCrossover等交叉算子。
变异算子用于对种群中的个体进行突变。
(三)算法步骤描述遗传算法的基本运算过程如下:1.初始化:设置进化代数计数器t=0、设置最大进化代数T、交叉概率、变异概率、随机生成M个个体作为初始种群P2.个体评价:计算种群P中各个个体的适应度3.选择运算:将选择算子作用于群体。
以个体适应度为基础,选择最优个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代4.交叉运算:在交叉概率的控制下,对群体中的个体两两进行交叉5.变异运算:在变异概率的控制下,对群体中的个体两两进行变异,即对某一个体的基因进行随机调整6.经过选择、交叉、变异运算之后得到下一代群体P1。
遗传算法的C语言实现(二)-----以求解TSP问题为例
遗传算法的C语⾔实现(⼆)-----以求解TSP问题为例上⼀次我们使⽤遗传算法求解了⼀个较为复杂的多元⾮线性函数的极值问题,也基本了解了遗传算法的实现基本步骤。
这⼀次,我再以经典的TSP问题为例,更加深⼊地说明遗传算法中选择、交叉、变异等核⼼步骤的实现。
⽽且这⼀次解决的是离散型问题,上⼀次解决的是连续型问题,刚好形成对照。
⾸先介绍⼀下TSP问题。
TSP(traveling salesman problem,旅⾏商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问题规模的增⼤按指数⽅式增长,到⽬前为⽌还没有找到⼀个多项式时间的有效算法。
TSP问题可以描述为:已知n个城市之间的相互距离,某⼀旅⾏商从某⼀个城市出发,访问每个城市⼀次且仅⼀次,最后回到出发的城市,如何安排才能使其所⾛的路线最短。
换⾔之,就是寻找⼀条遍历n个城市的路径,或者说搜索⾃然⼦集X={1,2,...,n}(X的元素表⽰对n个城市的编号)的⼀个排列P(X)={V1,V2,....,Vn},使得Td=∑d(V i,V i+1)+d(V n,V1)取最⼩值,其中,d(V i,V i+1)表⽰城市V i到V i+1的距离。
TSP问题不仅仅是旅⾏商问题,其他许多NP完全问题也可以归结为TSP问题,如邮路问题,装配线上的螺母问题和产品的⽣产安排问题等等,也使得TSP问题的求解具有更加⼴泛的实际意义。
再来说针对TSP问题使⽤遗传算法的步骤。
(1)编码问题:由于这是⼀个离散型的问题,我们采⽤整数编码的⽅式,⽤1~n来表⽰n个城市,1~n的任意⼀个排列就构成了问题的⼀个解。
可以知道,对于n个城市的TSP问题,⼀共有n!种不同的路线。
(2)种群初始化:对于N个个体的种群,随机给出N个问题的解(相当于是染⾊体)作为初始种群。
这⾥具体采⽤的⽅法是:1,2,...,n作为第⼀个个体,然后2,3,..n分别与1交换位置得到n-1个解,从2开始,3,4,...,n分别与2交换位置得到n-2个解,依次类推。
基于遗传算法求解TSP问题的一种算法
Absr c : t a t The u e o e e i l rt m o s f g n tc a go ih f r TSP i e e r he s r s a c d.A a me nwhie t i l he s mpl e ho n tc e m t d ofge e i
基 于 遗 传 算 法 求 解 T P 问题 的一 种 算 法 S
文 章 编 号 :0 3 5 5 ( 0 2 0 — 0 0 0 1算 法 求解 T P问题 的一 种算 法 S
刘 三 满 ( 山西 警 官 高 等 专 科 学 校 , 原 太 002) 3 0 1
遗传 算法 的 核心思想 , 纯数值 函数 , 对 进行 了大 量 的优
化 计算 试验 。G lb r od eg在 8 O年代通 过 归纳总结 , 使遗 传 算法 构建 了基本 框架 。进入 9 O年代 , 遗传算 法迎 来 了兴盛 发展 时期 , 初期 的求 解组合 优 化 , 从 发展 到 多方
面 的工 程应 用L 。1 9 年 D. i y在他 的论 文 中提 2 91 ] Wht e 出 了 基 于 领 域 交 叉 的 交 叉 算 子 ( j e c a e Ada ny b sd c
Ke r s: e e i l rt y wo d g n tca go ihms,r vei a e ma r b e , ta lng s ls n p o l m TSP r l m p ob e
遗传算 法 ( n t g r h 是 模拟 达尔 文生物 Ge ei Aloi m) c t 进 化 论 的 自然选 择和 遗传 学机理 的生 物进 化过 程的计 算 模 型 , 一种 通过 模 拟 自然 进化 过 程 搜索 最 优解 的 是 方法 。 求解 问题 不通 过 问题 本 身的方 式 , 而是通 过搜索 这 个 高度非 线 性的 多维空 间 , 寻找 最小 费用点 , 来 也就
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于遗传算法求解TSP问题的一种算法Ξ敖友云 迟洪钦(上海师范大学数理学院 上海 200234)摘 要:TSP问题是一个经典的NP难度的组合优化问题,遗传算法是求解TSP问题的有效方法之一。
利用交换启发交叉算子实现局部搜索加快算法的收敛速度和利用变换变异算子维持群体的多样性防止算法早熟收敛,给出了一种求解TSP问题的遗传算法。
仿真实验结果表明了该算法的有效性和可行性。
关键词:旅行商问题 遗传算法 组合优化中图分类号:TP301A MethodB ased on G enetic Algorithm for Solving TSPAo Youyun Chi H ongqin(Mathematics and Science C ollege,Shanghai N ormal University,Shanghai 200234)Abstract:TSP(T raveling Salesman Problem)is a typical NP-hard problem in combinatorial optimization and G enetic Alg orithm is one of methods for s olving TSP.By employing exchange heuristic cross over and exchange mutation operators,a new method based genetic alg o2 rithm for s olving TSP is presented.The experimental results simulated on several TSPs show that this alg orithm is effective and feasible to s olve TSP.K ey w ords:traveling salesman problem(TSP),genetic alg orithm,combinatorial optimizationClass number:TP3011 引言旅行商问题(Traveling Salesman Problem,TSP)也称货郎担问题,是一个经典的NP难度的组合优化问题,其计算量随问题规模的增长呈指数增长趋势。
TSP问题的提出可以追溯到18世纪,1759年,欧拉的文献中就提出了这个问题。
直到1948年,兰德(RAND)公司引入了这个问题,此时正是对线性规划和组合优化问题研究的开始时期,TSP问题立刻引起了众多学者的注意。
对TSP问题的大量研究使得TSP问题成为了一个著名的组合优化问题[7]。
目前,求解TSP问题的较为常用的方法有二叉树描述法、启发式搜索法、最近邻法、神经网络法、模拟退火法和遗传算法等[3,4,5]。
遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局概率搜索算法,具有良好的全局寻优能力,成为解决TSP问题的有效方法之一。
本文利用交换启发交叉算子实现局部搜索加快算法的收敛速度和利用变换变异算子维持群体的多样性防止算法早熟收敛,给出了一种求解TSP 问题的遗传算法。
仿真实验表明该算法是有效的和可行的。
2 TSP问题描述TSP问题是经典的组合优化问题。
一个TSP 问题可以描述如下[7]:给定n个城市和城市之间的距离矩阵或坐标位置。
一个旅行商从一个城市出发巡回售货,问这个旅行商应该如何选择线路,使每个城市经过一次且仅一次,并且经过的路径长度最短。
设D=[d ij]是距离矩阵,其元素d ij表示城市i,j间的距离。
TSP 问题的一个解可表述为一个循环排列,π=(π1,π2,πn)这个解也可表示为π1→π2→...→πn→π1的一条路径,πi(1ΦiΦn)是该路径中第i个经过的城市。
显然,满足πi≠πj,若i≠j的解才是可行解。
所有可行解集合构成解空间S,即问题解空间的规模为|S|=(n-1)!2。
路径长度f(π)=25 计算机与数字工程 第34卷Ξ收到本文时间:2005年7月11日∑ni =1d πi ,πi +1(注意到约定πn +1=π1)是TSP 问题的目标函数。
TSP 问题的目标是使路径长度最短,即使目标函数f (π)最小。
3 一种基于遗传算法求解TSP 问题的算法 本文采用整数编码,使用交换启发交叉算子[2]和变换变异算子[1],种群体替换模型采用最小代数代沟模型[6,8],这种模型较好地均衡了算法的探索和开发能力,将重组算子和选择算子按照以下方式交叉进行:(1)从第t 代群体P (t )中随机地选取μ个父体;(2)对μ个父体使用重组算子产生λ个后代;(3)从群体中随机选取两个父体,一个由λ个后代中最好的个体替换掉,另一个由剩下的(λ-1)个后代使用赌轮选择算子替换掉。
3.1交换启发交叉算子交换启发交叉算子通过多个父体参与交叉利用父体的局部优良基因信息产生后代来加快算法的搜索速度。
以八个城市为例来说明这种算子的交叉过程:八个城市之间的距离如表1所示。
表1 8个城市之间的距离12345678103112756325074181233503164947190789558661013516147320527978871018121138716 下面随机选择三个个体进行交换启发交叉产生一个后代:P 1=3 2 1 4 8 7 6 5P 2=2 4 6 8 1 3 5 7P 3=8 7 5 6 4 3 2 1f (P 1)=42,f (P 2)=40,f (P 3)=46分别为三条路径所走的距离总和。
随机选出初始城市j =1,πj =3右转动,使3成为三个父体的第1位置。
P 1=3 2 1 4 8 7 6 5P 2=3 5 7 2 4 6 8 1P 3=3 2 1 8 7 5 6 4π=××××××××由于d (3,2)>d (3,5),所以有P 1=× 5 2 1 4 8 7 6P 2=× 5 7 2 4 6 8 1P 3=× 5 6 4 2 1 6 7π=3×××××××由此规则计算得后代π=3 5 7 6 8 4 2 1f (π)=24产生后代所走的距离总和,显然f (π)小于f (P 1),f (P 2),f (P 3)。
需要说明的是,TSP 问题分对称TSP 问题和非对称TSP 问题。
上述八城市的TSP 问题就是一个取自文献[2]的非对称TSP 问题。
3.2变换变异算子变异可通过分别或交替使用以下两种变换方法进行:(1)2-变换法任选访问的序号u 和v ,逆转u 和v 及其之间的访问顺序(设u <v )。
此时新路径为π1...πu -1πv πv -1...πu +1πu πv +1...πn 。
例如,随机产生序号u =2和v =4,下面对个体π=3 2 1 4 8 7 6 5通过2-变换法进行变异,变异后的个体为π=3 4 1 2 8 7 6 5(2)3-变换法任选访问序号u ,v 和w ,将u 和v 之间的路径插到w 之后访问(设u Φ=v <w )。
对应的新路径为:π1=πu -1πv +1...πw πu ...πv πw +1...πn 。
例如,随机产生序号u =2,v =4和w =6,下面对个体π=3 2 1 4 8 7 6 5通过3-变换法进行变异,变异后的个体为π=3 8 7 2 1 4 6 53.3求解TSP 问题的遗传算法本文求解TSP 问题的遗传算法描述如下:(1)初始化群体P (0)(群体规模为N ),置t =0;(2)从第t 代群体P (t )中随机选取u 个父体;(3)对u 个父体使用交换启发交叉算子产生u 个后代;(4)从群体中随机选取两个父体,一个由u 个后代中最优者替换掉,另一个由剩下的(u -1)个后代经变异变换算子后得到的最优者替换掉;(5)重复(2)到(4)步,直到选取N 个后代,由这N 个个体组成下一代群体P (t +1);35第34卷(2006)第4期 计算机与数字工程 (6)如果满足停机条件则停机,否则t =t +1,转(2)。
4 仿真实验为检验本文算法的性能,我们对算法进行了仿真实验。
其中,仿真实验1实例取自文献[3],仿真实验2实例取自文献[4]。
4.1仿真实验1对于美国中部一个规模为10个城市TSP 问题,城市之间的距离如表2所示。
表2 美国中部10个城市之间的距离City 123456789101.Chicag o 096105504186462956702.Dallas 078499421646341373.Denver 0608461548676514.K ansass 04535202617185.Minneapolis 080365559646.Oklahoma 046502887.Omaha 04537308.S t.louis 021459.S pring field 02510.Whichita本文算法求解该问题的参数取值:群体规模为50,进化代数为20,参与交叉的父体数为2,求解结果与原文献的求解结果如表3所示。
表3 各种方法求解的结果方法最短路径长度最近邻法349贪婪可行法323最邻近插值法372支撑树加倍法323最大相似算法323本文算法323 本文算法求得最短路径长度时的路径为(189410623751)。
4.2仿真实验2对于Oliver 的30个城市的TSP 问题,30个城市的位置坐标为{(87,7),(91,38),(83,46),(71,44),(64,60),(68,69),(83,69),(87,76),(74,78),(71,71),(58,69),(54,62),(51,67),(37,84),(41,94),(2,99),(7,64),(22,60),(25,62),(18,54),(4,50),(13,40),(18,40),(24,42),(25,38),(41,26),(45,21),(44,35),(58,35),(62,32)}。
文献[4]算法参数取值:群体规模为1000,进化代数为150;文献[5]算法参数取值:群体规模为500,进化代数为4329,交叉概率Pc =0.90,变异概率Pm =0.20;本文算法求解该问题的参数取值:群体规模为50,进化代数为20,参与交叉的父体数为3,求解结果与原文献的求解结果如表4所示。
表4 各种方法求解的结果方法最短路径长度二叉树描述法428.90启发式搜索法436.01文献[4]算法424.86文献[5]算法424.8693本文算法424.86929 本文算法求得最短路径长度时的路径如图1所示。