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

合集下载

基于遗传算法的动态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篇

实验六:遗传算法求解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问题的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问题课件

利用遗传算法解决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问题实验报告

(完整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问题

基于遗传算法求解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问题说明:该文包括了基于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问题的遗传算法求解

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问题为例

遗传算法的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问题的一种算法

基于遗传算法求解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 进 化 论 的 自然选 择和 遗传 学机理 的生 物进 化过 程的计 算 模 型 , 一种 通过 模 拟 自然 进化 过 程 搜索 最 优解 的 是 方法 。 求解 问题 不通 过 问题 本 身的方 式 , 而是通 过搜索 这 个 高度非 线 性的 多维空 间 , 寻找 最小 费用点 , 来 也就

改进的遗传算法求解TSP问题_4_1遗传算法求解TSP问题的基本方法_34_38

改进的遗传算法求解TSP问题_4_1遗传算法求解TSP问题的基本方法_34_38

4 遗传算法求解TSP 问题4.1 遗传算法求解TSP 问题的基本方法4.1.1 编码用遗传算法求解TSP 问题时,TSP 的编码策略主要包括: ① 二进制表示二进制编码将TSP 问题的解空间映射到{0,1}l l B =上,然后在位串空间上进行遗传操作。

由于二进制表示不自然且需要额外的修正算子以保证个体的合法性,在实际中很少应用。

② 近邻表示近邻表示将路径表示为n 个城市的一个排列,且在第i 位城市为j 当且仅当路径中从i 所到达的下一个城市为j 。

例如,排列 (2 4 8 3 9 7 1 5 6) 表示路径: 1-2-4-3-8-5-9-6-7.显然,每一条路径都唯一对应一个近邻表示,然而,任一近邻排列却不一定都对应于合法路径,如近邻排列:(2 4 8 1 9 3 5 7 6)却导致不完全回路1-2-4-1。

③ 次序表示次序表示仍将路径表示成n 个城市的一个排列。

其表示方法为:先取城市集合C 的排列顺序C=(1 2 3 4 5 6 7 8 9)作为次序排列的一个参照点,然后按路径中城市处在C 的位置确定表示串中的点,且每确定一个则从C 中删除相应的城市。

例如,路径 1-2-4-3-8-5-9-6-7其次序表示为(1 1 2 1 4 1 3 1 1).次序表示的主要优点是可以使用传统的交叉算子。

即以次序表示的任两条路径,从某点截断后交换相应的子串所得到的两个后代仍是合法路径。

④ 路径表示路径表示是TSP 的自然、直观的表示方式。

它直接采用城市在路径中的相当位置来进行表示。

例如,路径:5-1-7-8-6-2-9-3-4直接表示成(5 1 7 8 6 2 9 3 4)人们对路径表示的编码策略的TSP 问题的交叉算子进行了大量研究,本文的研究也主要建立在路径表示的基础上。

⑤ 矩阵表示Fox 和 McMahon 等提出了旅程的矩阵表示方法,将一个旅程定义为一个优先权布尔矩阵M,当且仅当城市i 排在城市j 之前时矩阵元素1ij m =。

用一种含启发式变异策略的遗传算法求解TSP

用一种含启发式变异策略的遗传算法求解TSP
t n srt g rp s d i h sp p rh s ge tra v n a e i t e p o o e n t i a e a r a e d a tg . o a y
K y od ew rs
G nt l rh eei a oi ms( A) Tae i a s npo l ( S ) H u sc Muao prt c g t G rvln sl ma r e T P lg e bm e rt ii ttnoea r i o
S OLVI NG TRAVELLI NG ALES AN S M PRoBLEM BY GENETI ALG oRI C THM S WI TH EURI TI M UTATI H S C ON STRATEGY
Z a g X a l g Z o G o h o Ya g Ja h n i oi u u c a n n in
体现 了“ 优胜劣 汰 , 者生存” 适 的竞争 规则 , 过设计选 择算子 、 通
最小值 , 也就是求解~个城市的排列 仃=( , : … , ) 使得 仃。7 , 7 , r r 公式( ) 1 的值最小。
I 7l仃 , , Ⅳ = 厂 r, 2 … 7 ) ( r d 仃 ,川 ) 7 + ( f仃 r 1=7l r () 1
第2 7卷 第 3期
21 0 0年 3 月
计算机 应 用与软 件
Co u e mp t rAppi ai n n ot r l to sa d S fwae c
Vo. 7 No 3 12 .
M a . 01 r2 0
用 一 种 含启 发 式 变 异 策 略 的 遗传 算 法 求解 T P S
( o妇 efMahmai adC m ue Si c Dai n ei 6 10 Yn a , hn ) cf o te t n o p t c ne, l U ir t 70 3,un n C ia c r e v sy,

用一种免疫遗传算法求解MST、TSP问题

用一种免疫遗传算法求解MST、TSP问题

北京工业大学硕士学位论文用一种免疫遗传算法求解MST、TSP问题姓名:***申请学位级别:硕士专业:运筹学与控制论指导教师:***20040501摘要遗传算法是借鉴生物的自然选择和遗传化机制而开发出的一种全局优化自适应概率搜索算法,它更表现出比其他传统优化方法更加独特和优越的性能,隐含并行性和全局搜索特点是遗传算法的两大显著特征,因此关于遗传算法的研究越来越受到重视。

考虑到遗传算法中选择和交叉算子对群体多样性的影响,本文进一步明确遗传算法存在易陷入早熟收敛和后期收敛速度慢的缺点。

正是由于考虑到选择和交叉算子对算法的多样性影响,改进选择算子和交叉算子是本文主要关注的两个问题。

人体免疫功能的特点对于改进和提高遗传算法的能力是十分有启迪性的.本文在选择算予改进上不仅考虑适应度概率来选择,并加入浓度概率来加以选择,这样既确保了适应度高的个体能传到下一代,同时也保持了群体的多样性。

同时考虑算子的可行性和效率,采用了矢量距浓度概率的计算;在交叉算子设计上,为了避免多样性由交叉而丢失,采用的交叉算子应尽量减少由交叉所得群体中相似个体的比例;同时采用了最优保持策略,有益于群体多样性的保持。

图论是数学中有广泛实际应用的一个分支,其中典型问题包括:MST、TSP问题。

本文以图论中MST、TSP问题为例,以改进的遗传算法来求解,取得较好的结果;关键词:遗传算法免疫多样性交叉AbstractGeneticAlgorithm(GA)isanadaptableprobabilitysearchalgorithmthatiscreatedthroughadaptationinNatureandroleofGenetics.Ithassuperiortootherconventionaloptimizationalgorithminspecializedquality.ImplicitparallelandglobalsearchingaretworemarkablecharacteristicsofGA.ThestudyofGAisgettingmoreandmoreattentive.BecausetheselectingandcrossoveroperationsinGAplayasignificantroleinGA,thispaperfurthershowsthatGAhastwodeficiencies:prematureconvergenceandslowconvergencespeedinlaterphrase.Sothispapertakesmoreattentiontoselectandcrossoveroperations.ImmunequalityhasagoodedificatoryeffectinimprovingGA.Inthispaperweconsiderthatchoosingoperationactsbybothadaptprobabilityandconcen订ationprobability,soitcanassurethatchromosomewithhigheradaptabilitycanbegoroundtothenextgeneration.Meanwhileitretainscolonydiversity.Inevaluatingchromosomeconcentration,anewconcentrationprobabilitymethodisused.Incrossoveroperation,inordertoavoiddiversitylosingbycrossoveLweshouldreducesimilarchromosomepercentagethrou曲employingspecialcrossoveroperatortothequestion.Classicindividualreservationisbeneficialtokeepcolonydiversity.Graphtheoryisabranchofmathematics,whichhasextensiveapplication.InGraphtheorytypicalproblemsincludeMSTandTSEThispaperusesimprovedGAtoseekanswerstothetwoquestions,gainingbetteranswers.KeyWords:GeneticAlgorithms;Immune;Diversity;Crossover.独创性声踢本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果.尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育饥构的学位或证书面使用过的材料.与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意.签名缓盔H&日期:兰竺芏!』:墨关于论文使用授权的说明本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文.(保密的论文在解密后应遵守此规定)签名:二垂继导师签名;j数日期b坤.占第1章绪论基本遗传算法是一种新兴的优化算法,它有其很多的优点,为许多领域带来了全新的概念和解决思路;但基本遗传算法也有其弊端和不足,这篇文章主要想改进一般遗传算法,考虑到遗传算法是一新的算法,首先我们从介绍遗传算法开始。

一种基于遗传Hopfield神经网络求解TSP问题的算法

一种基于遗传Hopfield神经网络求解TSP问题的算法

一种基于遗传Hopfield神经网络求解TSP问题的算法帅训波;马书南【期刊名称】《微型机与应用》【年(卷),期】2009(028)021【摘要】For the Hopfield network in solving traveling salesman problem often getting invalid and not optimal solution, an improved constrained optimization energy function is used as fitness function of the genetie algorithm. A solving traveling salesman problem algorithm based on the genetic Hopfield network is constructed. Compared with traditional Hopfield network algorithm, the solving algorithm in this paper can easy obtain effective global optimd solution is proved by simulation experiment results.%针对Hopfield网络求解TSP问题时出现无效解和收敛性能差的问题,对约束条件能量函数进行改进,构造了一种求解TSP问题的遗传Hopfield神经网络算法,并与经典Hopfield神经网络求解TSP方法进行对比.实验结果表明,本文算法具有更好的整体求解性能.【总页数】4页(P7-9,15)【作者】帅训波;马书南【作者单位】中国石油勘探开发研究院廊坊分院,地球物理与信息研究所,河北,廊坊,065007;北京工业大学,计算机科学学院,北京,100022【正文语种】中文【中图分类】TP301.6【相关文献】1.基于遗传算法求解TSP问题的一种算法 [J], 敖友云;迟洪钦2.基于遗传算法求解TSP问题的一种算法 [J], 刘三满3.用Hopfield神经网络与遗传算法rn求解TSP问题的实验比较与分析 [J], 余一娇4.一种基于粒子群算法和Hopfield网络求解TSP问题的方法 [J], 龚淑蕾;张煜东;吴含前;韦耿5.一种基于遗传算法的TSP问题多策略优化求解方法 [J], 孙文彬;王江因版权原因,仅展示原文概要,查看原文内容请购买。

遗传算法解决TSP问题(C++)

遗传算法解决TSP问题(C++)

遗传算法解决TSP问题(C++版)遗传算法流程:交叉,编译,计算适应度,保存最优个体。

其中交叉过程是选择最优的两个染色体进行交叉操作,本文采用的是轮盘赌算法。

#include<iostream>#include<cstdlib>#include<ctime>using namespace std;#define population 200//种群数量#define pc 0.9//交叉的概率#define pm 0.1//变异的概率#define count 200//迭代的次数#define num 10//城市的数量int** city;//存放每个个体的访问顺序int path[10][10] = {//0, 1, 2, 3, 4, 5, 6, 7, 8, 9{ 0, 23, 93, 18, 40, 34, 13, 75, 50, 35 },//0{ 23, 0, 75, 4, 72, 74, 36, 57, 36, 22 },//1{ 93, 75, 0, 64, 21, 73, 51, 25, 74, 89 },//2{ 18, 4, 64, 0, 55, 52, 8, 10, 67, 1 }, //3{ 40, 72, 21, 55, 0, 43, 64, 6, 99, 74 }, //4{ 34, 74, 73, 52, 43, 0, 43, 66, 52, 39 },//5{ 13, 36, 51, 8, 64, 43, 0, 16, 57, 94 },//6{ 75, 57, 25, 10, 6, 66, 16, 0, 23, 11 }, //7{ 50, 36, 74, 67, 99, 52, 57, 23, 0, 42 },//8{ 35, 22, 89, 1, 74, 39, 94, 11, 42, 0 }//9};int* dis;//存放每个个体的访问顺序下的路径长度double* fitness;//存放灭个个体的适应度int min_dis = 1000000;int min_index = -1;int* min_path;//初始化种群void init(){int *a = new int[num];for (int i = 0; i<num; i++){a[i] = i;}city = new int*[population];for (int i = 0; i<population; i++){city[i] = new int[num];}for (int i = 0; i<population; i++){for (int j = num - 1; j >= 0; j--){int n = rand() % (j + 1);//产出的数是0-j,保证交换的后面的数不会再被交换swap(a[j], a[n]);//保证a里面全是0-(num-1)的数,无重复的数,只是顺序颠倒city[i][j] = a[j];}}delete[]a;dis = new int[population];fitness = new double[population];min_path = new int[num];}//计算适应度void compute(){//cout << "do compute now. " << endl;double total = 0;for (int i = 0; i<population; i++){//计算每种情况下,路径的长度dis[i] = 0;int a = city[i][0], b;for (int j = 1; j<num; j++){b = city[i][j];dis[i] += path[a][b];a = b;}dis[i] += path[b][city[i][0]];fitness[i] = 1.0 / dis[i];//以距离的倒数作为适应度函数值total += fitness[i];}}//选择适应度高的物种,采用轮盘赌算法int select(){double total = 0;for (int i = 0; i<population; i++){total += fitness[i];}double size = rand() / (double)RAND_MAX * total;//保证不产生0//cout << "size " << size << endl;double sum = 0;int i = 0;while (sum <= size&&i<population){sum += fitness[++i];}return --i;//返回被选中的个体}int getMinDis(){int result = dis[0];int index = 0;for (int i = 1; i<population; i++){if (result > dis[i]){result = dis[i];index = i;}}return index;}int getMaxDis(){int result = dis[0];int index = 0;for (int i = 1; i<population; i++){if (result < dis[i]){result = dis[i];index = i;}}return index;}void save(){int current_min_index = getMinDis();int current_max_index = getMaxDis();if (dis[current_min_index] < min_dis){min_dis = dis[current_min_index];for (int i = 0; i < num; i++){min_path[i] =city[current_min_index][i];}//cout << "current min dis is: " << min_dis << endl;}else{for (int i = 0; i<num; i++){city[current_max_index][i] = min_path[i];}dis[current_max_index] = min_dis;fitness[current_max_index] = 1.0 / min_dis;}}//最优保存算法bool isExist(int value, int* array, int len){for (int i = 0; i<len; i++){if (value == array[i])return true;}return false;}void convert(int p1, int p2, int* src, int* dst){int len = p2 - p1 + 1;int* temp = new int[len];for (int i = p1; i <= p2; i++){temp[i - p1] = src[i];}int j = (p2 + 1) % num;for (int i = 1; i <= num; i++){int index = (i + p2) % num;if (!isExist(dst[index], temp, len)){dst[j] = dst[index];j = (j + 1) % num;}}for (int i = p1; i <= p2; i++){dst[i] = src[i];}delete[]temp;}//交叉,采用次序交叉算法void cross(){//cout << "do cross now. " << endl;for (int k = 0; k<population; k += 2){int a = select();int b = select();while (a == b){b = select();//保证被选中的个体不是一样的//cout << "same " << b << endl;}//cout << "choose popuilation" << a << " " << b << endl;double p = rand() / double(RAND_MAX);//cout << "cross rate is " << p << endl;int* a1 = new int[num];int* a2 = new int[num];int* b1 = new int[num];int* b2 = new int[num];for (int i = 0; i<num; i++){a1[i] = city[a][i];a2[i] = city[b][i];b1[i] = a2[i];b2[i] = a1[i];}if (p<pc)//满足交叉条件{//选择交叉的两点,并保证p1<p2int p1 = -1;int p2 = -1;while (p1 == p2){p1 = rand() % num;p2 = rand() % num;if (p1>p2){swap(p1, p2);}}//cout << "choose pos " << p1 << " " << p2 << endl;//开始交叉convert(p1, p2, a1, b1);convert(p1, p2, a2, b2);for (int i = 0; i<num; i++){city[k][i] = b1[i];city[k + 1][i] = b2[i];}}else{for (int i = 0; i<num; i++){city[k][i] = a1[i];city[k + 1][i] = a2[i];}}delete[]a1;delete[]a2;delete[]b1;delete[]b2;}}//变异,采用对换操作进行变异void morphis(){//cout << "do morphis now. " << endl;for (int i = 0; i<population; i++){double p = rand() / double(RAND_MAX);//cout << "morphis rate is " << p << endl;if (p<pm)//执行变异{int a = -1, b = -1;while (a == b){a = rand() % num;b = rand() % num;}swap(city[i][a], city[i][b]);}}}int getdis(){//compute();int result = dis[0];int index = 0;for (int i = 1; i<population; i++){if (result > dis[i]){result = dis[i];index = i;}}return result;}//释放申请的数组的空间void dispose(){for (int i = 0; i<population; i++){delete[]city[i];}delete[]city;delete[]dis;delete[]fitness;}int main(){init();//初始化种群int i = 0;srand(time(0));compute();while (i<count){cross();//交叉morphis();//变异compute();//计算适应度save();//保存当前最优的个体//cout << "count " << i++ << endl;cout << getdis() << " ";//输出结果//cout << min_index << " ";if (++i % 10 == 0)cout << endl;}compute();cout << "min distance is: " << min_dis << endl;for (int i = 0; i<num; i++)cout << min_path[i] << " ";cout << endl;dispose();//释放空间return 0;}。

基于遗传算法的TSP问题优化求解

基于遗传算法的TSP问题优化求解
维普资讯
20 0 8年 销 2
文 章 编 号 :0 62 7 ( 0 8 0 - 4 -2 1 0 —4 5 2 0 ) 20 30 0
计 算 机 与 现 代 化 J U N IY I N A H A I A J U XA D IU S
ห้องสมุดไป่ตู้
传空间 的基 因型 串结构数 据 , 这些 串结构 数据 的不 同组合便
构成 了不同的点。
初始群体的生成 : 随机产生 N个 初始 串结 构数据 , 每个 串 结构数据称为一个个 体 ,N个个 体构 成 了一个 群体 。G 以 A 这 N个 串结构数据作为初始点开始迭代。
适 应性值评 估检 测 : 适应性函数表明个体 或解的优 劣性。 不同的问题 . 适应性 函数的定义方式也不同。 选择 : 选择的 目的是为 了从 当前群体 中选 出优 良的个 体 ,
制) 演化 而 来 的 随 机化 搜索 方 法 。它 是 由 美 国 的 J .
H ln ol d教授 17 a 9 5年首 先提 出的 。
我们习 惯 上 把 Hoad 9 5年 提 出 的 G l n 17 l A称 为 传 统 的
G 。 它 的 主 要 步骤 如 下 : A
编码 : A在进行搜索之前先将解空 间的解数 据表示成遗 G
交换操作可 以得到新一代 个体 , 额个 体组 合 了其 父辈 个体 的 特性。交换体现 了信息交换的思想 。 变异 : 变异首先 在群体中随机选择 一个个体 , 对于选 中的 个体 以一定 的概率随机地改变 串结构数据 中某个 串的值。同
总 第 10期 5
题 基 于 遗传 算 的 T P问 优化 求 解 法 S
刘青凤 , 李 敏
( 阳 工 学 院 ,河 南 安 阳 4 50 ) 安 50 0

基于遗传算法求解TSP问题的研究及Matlab实现

基于遗传算法求解TSP问题的研究及Matlab实现

第13卷㊀第7期Vol.13No.7㊀㊀智㊀能㊀计㊀算㊀机㊀与㊀应㊀用IntelligentComputerandApplications㊀㊀2023年7月㊀Jul.2023㊀㊀㊀㊀㊀㊀文章编号:2095-2163(2023)07-0058-06中图分类号:TP391.41文献标志码:A基于遗传算法求解TSP问题的研究及Matlab实现杨锦涛,赵春香,杨成福(云南师范大学信息学院,昆明650500)摘㊀要:TSP问题属于组合优化问题,同时也是一个NPC问题,因此人们一直致力于为其寻找有效的近似求解算法㊂遗传算法是模仿生物进化而构建的一种随机搜索方法,具有较强的全局搜索能力㊁潜在的并行性以及良好的可扩展性,能有效求解TSP问题㊂然而,如何确定遗传参数和选择遗传操作一直是一个难题,本文针对TSP问题的求解构建完整的遗传算法体系,选择合适的参数,设计多组交叉算子和变异算子,分别对TSP问题进行求解㊂通过多次实验以及对实验结果的分析比较,探究不同的交叉算子和变异算子求解TSP问题的效果,为遗传操作中交叉算子和变异算子的选择提供一定的参考㊂关键词:TSP问题;组合优化;遗传算法ResearchonsolvingTSPproblembasedongeneticalgorithmandMatlabimplementationYANGJintao,ZHAOChunxiang,YANGChengfu(SchoolofInformation,YunnanNormalUniversity,Kunming650500,China)ʌAbstractɔTheTSPproblembelongstocombinatorialoptimizationproblemsandisalsoanNPCproblem,sopeoplehavebeentryingtofindthecorrespondingeffectiveapproximationsolvingalgorithms.Geneticalgorithmisarandomsearchmethodbuilttoimitatebiologicalevolution,withstrongglobalsearchability,potentialparallelismandgoodscalability,whichcaneffectivelysolveTSPproblems.However,howtodeterminegeneticparametersandselectgeneticmanipulationhasalwaysbeenadifficultproblem.Inthispaper,acompletegeneticalgorithmsystemisconstructedforthesolutionofTSPproblems,appropriateparametersareselected,andmultiplesetsofcrossoperatorsandmutationoperatorsaredesignedtosolveTSPproblemsseparately.Throughmultipleexperimentsandtheanalysisandcomparisonofexperimentalresults,theeffectofdifferentcrossoveroperatorsandmutationoperatorsinsolvingTSPproblemsisexplored,whichprovidesacertainreferencefortheselectionofcrossoveroperatorsandmutationoperatorsingeneticoperations.ʌKeywordsɔTSPproblem;combinatorialoptimization;geneticalgorithm基金项目:云南师范大学博士科研启动基金(2021ZB019)㊂作者简介:杨锦涛(2002-),女,本科生,主要研究方向:深度学习;赵春香(2000-),女,本科生,主要研究方向:深度学习;杨成福(1986-),男,博士,讲师,硕士生导师,主要研究方向:信息超材料㊁深度学习㊁人工智能㊂通讯作者:杨成福㊀㊀Email:yangchengfu@ynnu.edu.cn收稿日期:2022-12-180㊀引㊀言TSP问题㊁即巡回旅行商问题,是组合优化领域中的一个典型问题㊂现实生活中的很多实际应用问题都可以简化为TSP问题㊂TSP问题可以用图论描述为:已知带权完全图G,求一条使得路径总和最小㊁且经过所有顶点的回路㊂TSP问题虽然描述简单㊁容易理解,但是求解是很困难的㊂当问题的规模较小时,仅使用枚举法就能找到一条最优路径,但当城市数量较多时,即使用计算机也无法将解全部列举,要求出TSP问题的最优解是不可能的㊂遗传算法是一种自组织㊁自适应的全局寻优算法,因其潜在的并行性㊁较高的鲁棒性,在应用研究方面取得了很多可观的成果,被广泛应用于函数优化㊁组合优化㊁生产调度㊁自适应控制㊁图像处理㊁机器学习㊁数据挖掘㊁人工生命㊁遗传编程等领域㊂1975年,Holland[1]受生物学中生物进化和自然选择学说的启发,提出了著名的遗传算法㊂2006年,何燕[2]对遗传算法进行改进,将其应用到车间调度领域㊂2010年,蒋波[3]将遗传算法应用于车辆路径优化问题,指出遗传算法求解该问题的优越性,并对其做出了改进,实验证明改进后的遗传算法能Copyright ©博看网. All Rights Reserved.够有效解决此类问题㊂2013年,乔阳[4]将遗传算法和Ostu图像分割法进行改进后结合在一起进行图像分割实验,得到了满意的结果㊂遗传算法是模拟生物进化的过程发展而来的一种算法,从一定规模的解集(初始种群)开始,通过选择㊁交叉和变异,将适应度低的解(个体)淘汰掉,将适应度高的解(个体)保留下来,并产生新的解(个体),生成新的解集(种群),通过不断地迭代,使解集(种群)中的解(个体)越来越接近问题的最优解㊂生物学和遗传算法概念之间的对应关系见表1㊂表1㊀生物学和遗传算法概念对照Tab.1㊀Comparisonofbiologicalandgeneticalgorithmconcepts生物学遗传算法外界环境约束条件个体问题的一个可行解个体对环境的适应度可行解的质量种群一定数量可行解的集合生物的繁衍算法的迭代种群的进化过程可行解的优化过程㊀㊀本文针对TSP问题构建完整的遗传算法体系,将求解TSP问题几种常用的交叉算子和变异算子两两组合在一起,分别对具体的TSP问题实例进行求解,从所得的最优解和求解的时间两方面对实验结果进行分析和总结,探究使用不同的交叉算子和变异算子时遗传算法求解对称式TSP问题的效果[5]㊂1㊀遗传算法求解TSP问题1.1㊀编码编码是指按照一定的构造方法,将问题的可行解转变为遗传算法能直接处理的个体㊂常用的编码方式有二进制编码㊁近邻编码㊁次序编码㊁路径编码[6]㊂使用路径编码求解TSP问题,不仅编码过程简单易操作,而且编码结果非常直观,即首先对城市进行编号,然后以城市编号作为城市的编码,因此本文选择使用路径编码方式对城市进行编码㊂1.2㊀初始种群一般地,初始种群采用随机方法生成,如果种群规模为M,则随机生成M个个体㊂1.3㊀适应度函数适应度函数用于对种群中的个体进行优劣程度的评价,由于算法在搜索最优解的过程中主要以个体的适应度作为依据,所以如果适应度函数构建不当,很可能导致算法的收敛速度缓慢㊁甚至无法收敛,即适应度函数直接决定着算法的收敛能力和寻优能力㊂对于TSP问题,适应度函数一般取路径总和的倒数,具体定义公式见如下:f(x)=1ðn-1i=1d(ti,ti+1)+d(tn,t1)(1)㊀㊀其中,n表示城市的数量;T=(t1,t2, ,tn)为种群中的一个个体;d(ti,tj)表示城市i到城市j的距离㊂TSP问题为最小值问题,由适应度函数可知,路径总和与个体适应度呈倒数关系㊂1.4㊀遗传操作1.4.1㊀选择算子选择是用选择算子对个体进行筛选的过程,这一过程中,差的个体被保留下来的概率小,好的个体被保留下来的概率大,会使种群中的个体向最优解进化㊂常用的选择算子有轮盘赌选择㊁最佳个体保存选择㊁锦标赛选择和排序选择[7]㊂轮盘赌选择是TSP问题求解最常用的选择算子,即使用适应度值计算出每个个体被选择的概率,并根据该概率值对种群中的个体进行选择㊂本文也使用轮盘赌选择作为选择算子,并在轮盘赌的基础上添加最佳个体保存选择,即把种群中出现过的适应度值最高的个体保留下来,避免种群中优秀的个体在遗传操作中被淘汰或破坏㊂1.4.2㊀交叉算子个体交叉是为了实现种群的更新,而交叉算子是进行交叉的手段,定义了个体之间以怎样的方式交叉㊂对于不同问题,由于编码方式的不同,交叉算子也有所不同㊂对此拟做研究分述如下㊂(1)部分匹配交叉(PMX):首先采用随机方式在父体中确定2个位置,由2个位置确定一个交叉段,然后将2个父体的交叉段进行交换,最后根据交叉段之间的映射关系消除子代中的重复基因㊂(2)顺序交叉(OX):首先从父体中随机选择2个位置,由2个位置确定一个基因段,然后将父体A的该基因段复制到子代A 的对应位置,最后将父体B除父体A被选择的基因段之外的基因依次复制到子代A 的其余位置,同理可得到子代B ㊂(3)循环交叉(CX):首先将父体A的第一个基因复制到子代,然后在父体B中的相同位置查看基因,随后在父体A中找到该基因复制到子代的相同位置,并在父体B中查看相同位置的基因,重复此步骤,直到在父体B中找到的基因已经在子代中,停止循环,在父体B中找到剩余的基因,并按照顺序复制到子代中的剩余位置㊂95第7期杨锦涛,等:基于遗传算法求解TSP问题的研究及Matlab实现Copyright©博看网. All Rights Reserved.1.4.3㊀变异算子变异操作的主要目的是维持种群多样性,在遗传算法后期,个体交叉产生新个体的能力弱,通过个体变异可以进一步产生新个体,扩大搜索空间㊂接下来给出剖析论述如下㊂(1)对换变异㊂首先用随机方式在父体中确定2个位置,然后交换这2个位置上的基因㊂(2)倒位变异㊂用随机方式在父体中确定2个位置,以确定一个基因段,然后将其进行逆序排列㊂(3)插入变异㊂用随机方式在父体中确定一个位置,以确定一个待插入的基因,再用随机方式确定2个位置,以确定插入点,最后将待插入的基因放入插入点㊂1.5㊀遗传算法求解TSP问题具体步骤根据上文选择的实现技术构建完整的遗传算法体系后,对TSP问题实例进行求解的具体步骤如下:Step1㊀获取城市数据,对城市进行编号㊂Step2㊀初始化种群㊂Step3㊀适应度评价㊂Step4㊀执行选择操作,采用轮盘赌选择对个体进行筛选,选出足够数量的个体㊂Step5㊀执行交叉操作,将选择操作中选出的个体两两组合作为父染色体,判断是否进行交叉,如果进行交叉,则按照选定的交叉算子进行交叉㊂Step6㊀执行变异操作,将执行交叉操作后的每个个体作为父染色体,判断是否进行变异,如果进行变异,则按照选定的变异算子进行变异㊂Step7㊀完成变异后,执行最佳个体保存策略,判断当前种群中的最优解是否优于历史最优解㊂如果是,更新历史最优解,否则找出种群中最差的解,用最优解将其替换掉㊂Step8㊀判断是否继续进行迭代,若是,回到Step3;否则,结束迭代,输出最优解㊂㊀㊀将前述的3种交叉算子和3种变异算子两两组合在一起,共有9种组合方式,见表2㊂基于表2中列出的9种组合,重复对TSP问题进行求解㊂表2㊀9组交叉算子和变异算子Tab.2㊀9setsofcrossoverandmutationoperators组合编号交叉算子变异算子第一组部分匹配交叉对换变异第二组部分匹配交叉倒位变异第三组部分匹配交叉插入变异第四组循序交叉对换变异第五组循环交叉倒位变异第六组循环交叉插入变异第七组顺序交叉对换变异第八组顺序交叉倒位变异第九组顺序交叉插入变异2㊀实验及结果分析2.1㊀实验仿真本文使用Matlab实现上文构建的遗传算法,从TSPLIB中选择测试样例进行具体分析㊂TSPLIB是包含对称旅行商问题㊁哈密顿回路问题㊁以及非对称旅行商问题的多种实例数据的文件库,数据规模多样㊂本文在对每个测试样例进行求解时,改变算法的交叉算子和变异算子,进行多次重复的实验,从问题的最优解和求解时间两方面对几组交叉算子和变异算子求解TSP问题的效果进行分析比较㊂在完成算法的编程后,初步设置参数,对实例Oliver30进行求解,根据实验结果对算法的参数进行调整,最终选定迭代次数G为500,交叉概率Pc为0.9,变异概率Pm为0.2,种群规模M根据待求解问题的规模来确定㊂一般地,城市个数越多,种群规模越大,对30个城市的实例Oliver30,种群规模取100㊂用上述9组交叉算子和变异算子分别对Oliver30求解10次的结果见表3㊂表3㊀遗传算法求解Oliver30Tab.3㊀GeneticalgorithmforOliver30序号第一组第二组第三组第四组第五组第六组第七组第八组第九组1511.98425.10526.40510.03425.48496.34532.75425.72472.362565.56429.62451.69538.10423.74479.01501.09428.04495.353495.80432.66468.32496.65476.12495.19514.30428.84476.094496.84425.10433.09534.14424.12457.73501.54431.71457.745541.80460.17464.91536.89451.72445.97496.24435.31474.216500.88429.83494.45525.44438.38483.92507.57450.41478.807501.92432.66521.33514.30425.27466.65561.85428.46460.748514.90450.69497.46488.21425.31484.18515.13423.74474.739529.06447.21487.60482.61434.61500.18571.79431.76466.6910556.31425.73507.64510.61433.54471.18456.79438.38483.2706智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀Copyright©博看网. All Rights Reserved.㊀㊀以文献[8]中求得的最优解423.74作为参考值,从表3可以看出第2组㊁第5组㊁第8组交叉算子和变异算子的求解结果都比较接近参考最优解,且较稳定,说明参数设置较合理㊂其中一次求解的收敛曲线如图1所示,最优路线如图2所示㊂其中,以圆圈标记的点为路线起点,其与路线终点用虚线相连,其余路线用实线连接㊂12001000800600400200400600迭代次数最优解图1㊀Oliver30收敛曲线Fig.1㊀ConvergencecurveofOliver301008060402020406080100城市横坐标城市纵坐标图2㊀Oliver30最优路线图Fig.2㊀OptimalroadmapofOliver302.2㊀实验结果从TSPLIB中选择测试样例进行求解,本文总共选择了5个实例,分别是ulysses16㊁dantzig42㊁eil51㊁eil76㊁eil101,根据问题的规模为每个实例设置合适的种群规模(M)㊂其中,ulysses16㊁dantzig42㊁eil51实例的种群规模取100,eil76实例的种群规模取150,eil101实例的种群规模取200,分别用上述9组交叉算子和变异算子求解10次,记录10次求解结果的最好值(Best)㊁平均值(AVR)和偏差率(Dr),以及求解的平均时间(Time),这里的偏差率可由式(2)来计算:Dr=Best-OptOpt(2)㊀㊀其中,Opt是TSPLIB数据集提供的最优解㊂实验结果见表4 表8㊂表4㊀遗传算法求解ulysses16Tab.4㊀Geneticalgorithmforulysses16序号AVGBestOptDrTime/s第1组第2组第3组第4组第5组第6组第7组第8组第9组75.0174.0174.2474.3674.0574.2074.6074.0974.2874.0073.9973.9973.9973.9973.9973.9973.9973.99740.000.000.000.000.000.000.000.000.001.21.11.40.70.70.70.50.50.5表5㊀遗传算法求解dantzig42Tab.5㊀Geneticalgorithmfordantzig42序号AVGBestOptDrTime/s第1组第2组第3组第4组第5组第6组第7组第8组第9组1022.34756.49915.69944.02733.00894.321061.21760.73937.22864.89713.99838.38858.26698.98794.02893.35725.37846.416990.240.020.200.230.000.140.280.040.211.41.62.81.01.01.00.70.60.7表6㊀遗传算法求解eil51Tab.6㊀Geneticalgorithmforeil51序号AVGBestOptDrTime/s第1组第2组第3组第4组第5组第6组第7组第8组第9组642.66516.35592.00646.09503.97580.39657.48511.91607.42613.87487.95532.90559.68481.67534.41604.81465.28551.704260.440.150.250.310.130.250.420.090.301.41.83.61.11.11.10.70.70.716第7期杨锦涛,等:基于遗传算法求解TSP问题的研究及Matlab实现Copyright ©博看网. All Rights Reserved.表7㊀遗传算法求解eil76Tab.7㊀Geneticalgorithmforeil76序号AVGBestOptDrTime/s第1组第2组第3组第4组第5组第6组第7组第8组第9组1037.94880.641002.011012.32835.37993.691073.78833.77992.89971.96806.53916.52949.17792.39925.741014.86781.88894.475380.810.500.700.760.470.720.890.450.662.23.29.51.81.81.80.91.01.0表8㊀遗传算法求解eil101Tab.8㊀Geneticalgorithmforeil101序号AVGBestOptDrTime/s第1组第2组第3组第4组第5组第6组第7组第8组第9组1470.941340.331452.021468.171194.491408.331479.121238.681438.391361.781286.641363.671352.241142.191297.431397.691168.251340.936291.161.051.171.150.821.061.220.861.133.25.320.42.72.72.71.21.21.2㊀㊀为了方便对比,将每个实例求解结果中的偏差率(Dr)和求解的平均时间(Time)分别统计在一起,由于实例ulysses16问题规模小,坐标数据也容易处理,不管选择哪种交叉算子和变异算子,求解结果都很接近最优解,因此在进行偏差率的比较时不将其考虑在内,具体见表9㊁表10㊂表9㊀偏差率对比Tab.9㊀Deviationratecomparison序号dantzig42eil51eil76eil101第1组第2组第3组第4组第5组第6组第7组第8组第9组0.240.020.200.230.000.140.280.040.210.440.150.250.310.130.250.420.090.300.810.500.700.760.470.720.890.450.661.161.051.171.150.821.061.220.861.13表10㊀求解平均时间对比Tab.10㊀Comparisonofaveragesolvingtime序号ulysses16dantzig42eil51eil76eil101第1组第2组第3组第4组第5组第6组第7组第8组第9组1.21.11.40.70.70.70.50.50.51.41.62.81.01.01.00.70.60.71.41.83.61.11.11.10.70.70.72.23.29.51.81.81.80.91.01.03.25.320.42.72.72.71.21.21.23㊀实验结论根据上述实验结果,可以得出如下结论:(1)表9中的偏差率描述了采用不同的交叉算子和变异算子时,所求得的最优解与TSPLIB中给出的最优解的差距,偏差率越小,说明算法求得的结果越接近最优解,算法的寻优能力越好㊂从表9中可以看出,第2组数据总是小于第1组和第3组㊁第5组数据总是小于第4组和第6组㊁第8组数据总是小于第7组和第9组,这说明每种交叉算子和逆转变异组合在一起时,问题的求解结果总是比与对换变异和插入变异组合在一起时更接近最优解㊂由此可知,遗传算法使用逆转变异作为变异算子时比选择对换变异和插入变异作为变异算子的寻优能力更强㊂(2)表10是采用每组交叉算子和变异算子求解每个实例10次所花时间的平均值,所花的时间越少,说明算法的搜索速度越快,执行效率越高,由于变异操作比较简单,所以遗传算法的执行效率主要由交叉操作决定㊂从表10中可以看出,遗传算法采用顺序交叉和循环交叉时,即使采用不同的变异算子,所花的时间也基本相同,但是采用部分匹配交叉所花的时间会因为变异算子的不同而有所不同㊂对于每一个实例,在得到的解的质量差别不大的情况下,遗传算法使用部分匹配交叉所花的时间最多,使用循环交叉所花的时间最少㊂综上所述,对于比较简单的TSP问题,由于使用遗传算法总能求得与最优解很接近的解,所以选择何种交叉算子和变异算子对算法的寻优能力影响不大,但是使用部分匹配交叉会花费比较多的时间,会导致算法的执行效率低,因此交叉算子选择循环26智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀Copyright©博看网. All Rights Reserved.交叉比较合适㊂对于不是总能求得最优解的TSP问题,与对换变异和插入变异相比,使用逆转变异会使算法具有更强的寻优能力,找到的最优解更接近最优解,使用部分匹配交叉和顺序交叉会花费比循环交叉更多的时间,使算法的执行效率变低,而且找到的最优解也不会更优㊂4 结束语本文对几种常用的交叉算子和变异算子求解TSP问题的效果进行了研究㊂实验结果表明,在几种常用的交叉算子和变异算子中,选择循环交叉和逆转变异算法的执行效率最高,寻优能力最好,这能为遗传算法中交叉算子和变异算子的选择提供一定的参考,同时有利于设计出更好的交叉算子和变异算子,提高算法的性能㊂参考文献[1]HOLLANDJ.Adaptationinnaturalandartificialsystems:anintro⁃ductoryanalysiswithapplicationtobiology[J].ControlArtificialIntelligence,1975.[2]何燕.基于遗传算法的车间调度优化及其仿真[D].武汉:武汉理工大学,2006.[3]蒋波.基于遗传算法的带时间窗车辆路径优化问题研究[D].北京:北京交通大学,2010.[4]乔阳.基于改进遗传算法的图像分割方法[D].成都:电子科技大学,2013.[5]张家善,王志宏,陈应显,等.一种求解旅行商问题的改进遗传算法[J].计算机系统应用,2012,21(09):192-194,191.[6]王娜.求解TSP的改进遗传算法[D].西安:西安电子科技大学,2010.[7]于丰瑞.基于改进的遗传算法求解TSP问题[D].呼和浩特:内蒙古农业大学,2016.[8]闫茹.基于改进遗传算法的旅游路线优化研究与应用[D].银川:北方民族大学,2021.(上接第57页)[3]田浩杰,杨晓庆,翟晓雨.基于深度学习的线圈炮缺陷自动检测与分类[J].现代计算机,2022,28(10):86-91.[4]张浩,吴陈,徐影.基于深度学习在海缆表面缺陷检测中的应用[J].电脑知识与技术,2022,18(15):88-91.[5]陈宗仁,谢文达,余君,等.基于深度学习的金属机械零件表面缺陷检测方法[J].制造业自动化,2021,43(12):170-173.[6]王昊,李俊峰.基于深度学习的车载导航导光板表面缺陷检测研究[J].软件工程,2022,25(03):34-38,16.[7]刘瑞珍,孙志毅,王安红,等.基于深度学习的偏光片缺陷实时检测算法[J].太原理工大学学报,2020,51(01):125-130.[8]王鸣霄,范娟娟,周磊,等.基于深度学习的排水管道缺陷自动检测与分类[J].给水排水,2020,46(12):106-111.[9]施恺杰,王颖,王嘉璐,等.基于深度学习的电子换向器表面缺陷检测[J].网络安全技术与应用,2021(06):113-115.[10]于宏全,袁明坤,常建涛,等.基于深度学习的铸件缺陷检测方法[J].电子机械工程,2021,37(06):59-64.[11]LECUNY,BOTTOUL,BENGIOY,etal.Gradient-basedlearningappliedtodocumentrecognition[J].ProceedingsoftheIEEE,1998,86(11):2278-2324.[12]KRIZHEVSKYA,SUTSKEVERI,HINTONGE.Imagenetclassificationwithdeepconvolutionalneuralnetworks[J].CommunicationsoftheACM,2017,60(6):84-90.[13]SIMONYANK,ZISSERMANA.Verydeepconvolutionalnetworksforlarge-scaleimagerecognition[J].arXivpreprintarXiv:1409.1556,2014.[14]SZEGEDYC,LIUWei,JIAYanqing,etal.Goingdeeperwithconvolutions[C]//IEEEConferenceonComputerVisionandPatternRecognition(CVPR).Boston,MA,USA:IEEE,2015:1-9.[15]HEKaiming,ZHANGXiangyu,RENShaoqing,etal.Deepresiduallearningforimagerecognition[C]//IEEEConferenceonComputerVisionandPatternRecognition(CVPR).LasVegas,NV,USA:IEEE,2016:770-778.36第7期杨锦涛,等:基于遗传算法求解TSP问题的研究及Matlab实现Copyright©博看网. All Rights Reserved.。

求解TSP问题的一种启发式遗传算法

求解TSP问题的一种启发式遗传算法

计一种启发式 交叉算子和换位 变异算 子, 主要 特 点是 给 出算子在程 序 中的 实现技 巧 , 高搜 索的速度 。经 实例 分 提 析, 算法性 能较好 , 能较 快得到 问题的满意解。 关键词 : 旅行商 问题 ; 启发 式算法 ; 遗传 算法; 交叉算子
中 图分 类 号 : 5 ; P 0 O1 7T 3 文献 标 识 码 : A 文 章 编 号 :0 85 9 (0 0 0—0 60 1 0—6 6 2 1 )20 3—3
H.H ln 教授及其学生首先提出的遗传算法便 ol d a 是一个 重要 的研 究 方 向 , 传 算 法 _ ] 遗 l 的本 质 是

种不依 赖 问题本 身且具 有高效 的并行 全局 随机搜 种 值得 探讨 的好 方法 。本 文 通 过 将 T P问题模 S
索 算法 , 以用 遗传 算 法来 求 解 旅 行 商问 题不 失 为 所
( c o l fTrfi 1 S h l o af 5 c -Tr n p rain,La z o io o g Unv r i ,L n h u7 0 7 a s ot t o n h uJa tn iest y a z o 3 0 0,Chn ) ia
Ab ta t Trv l g S ls n P o lm safmo sn n d tr iitcp ln milh r r b e sr c : a ei ae ma r be i a u o — e em nsi oy o a a d p o lm. An th s n d i a ma ya pia in n c mb n t ra p i z t n I hsp p r n p l t si o iao il t c o o mia i . n t i a e ,weds u s dh w Os lei b sn e — o ic s e o t ov t yu ig h u

遗传算法解决TSP问题的matlab程序

遗传算法解决TSP问题的matlab程序

1.遗传算法解决TSP 问题(附matlab源程序)2.知n个城市之间的相互距离,现有一个推销员必须遍访这n个城市,并且每个城市3.只能访问一次,最后又必须返回出发城市。

如何安排他对这些城市的访问次序,可使其4.旅行路线的总长度最短?5.用图论的术语来说,假设有一个图g=(v,e),其中v是顶点集,e是边集,设d=(dij)6.是由顶点i和顶点j之间的距离所组成的距离矩阵,旅行商问题就是求出一条通过所有顶7.点且每个顶点只通过一次的具有最短距离的回路。

8.这个问题可分为对称旅行商问题(dij=dji,,任意i,j=1,2,3,…,n)和非对称旅行商9.问题(dij≠dji,,任意i,j=1,2,3,…,n)。

10.若对于城市v={v1,v2,v3,…,vn}的一个访问顺序为t=(t1,t2,t3,…,ti,…,tn),其中11.ti∈v(i=1,2,3,…,n),且记tn+1= t1,则旅行商问题的数学模型为:12.min l=σd(t(i),t(i+1)) (i=1,…,n)13.旅行商问题是一个典型的组合优化问题,并且是一个np难问题,其可能的路径数目14.与城市数目n是成指数型增长的,所以一般很难精确地求出其最优解,本文采用遗传算法15.求其近似解。

16.遗传算法:17.初始化过程:用v1,v2,v3,…,vn代表所选n个城市。

定义整数pop-size作为染色体的个数18.,并且随机产生pop-size个初始染色体,每个染色体为1到18的整数组成的随机序列。

19.适应度f的计算:对种群中的每个染色体vi,计算其适应度,f=σd(t(i),t(i+1)).20.评价函数eval(vi):用来对种群中的每个染色体vi设定一个概率,以使该染色体被选中21.的可能性与其种群中其它染色体的适应性成比例,既通过轮盘赌,适应性强的染色体被22.选择产生后台的机会要大,设alpha∈(0,1),本文定义基于序的评价函数为eval(vi)=al23.pha*(1-alpha).^(i-1) 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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所示。

相关文档
最新文档