改进遗传算法求解TSP问题
用于求解TSP问题的遗传算法改进

用于求解TSP问题的遗传算法改进一、TSP问题简介TSP问题,全称Traveling Salesman Problem,即旅行商问题。
所谓TSP问题是指,给定一些点和每一对点之间的距离,求出一条遍历每个点恰好一次的最短路径,该问题的解决方法对实际问题中的路径规划和优化有着很大的参考价值。
二、遗传算法的基本思想遗传算法,是模拟自然界中生物遗传进化过程的一种演化计算方法。
它通过模拟生物的繁殖、变异、适应性等生命过程来寻找问题的最优解。
其基本的过程如下:1. 初始化:随机生成一个初始群体,每个个体表示一种可能的解决方案。
2. 选择:根据适应度函数,选择一定数量的优秀个体作为繁殖的父亲。
3. 交叉:将所选父亲进行交叉操作,生成新的子代个体。
4. 变异:对于一部分子代个体,进行变异操作。
5. 替换:用新的子代个体替换掉一部分原有的个体,形成新一代群体。
6. 结束条件:当某种条件达到时结束算法,否则返回步骤二。
在TSP问题中,遗传算法的基本实现方法如下:1.初始化:随机生成一个初始群体,每个个体表示一个解决方案,其中每个基因表示一个城市的编号。
例如,假设有10个城市,则每个个体就是由这10个城市编号随机排列组成的,例如:1-2-5-8-4-3-7-9-6-10等。
2.适应度函数:对于每个个体,计算其总路程,将总路程作为适应度函数的值。
4.交叉:将所选父亲进行交叉操作,生成新的子代个体,交叉方式一般有:顺序交叉法、部分映射交叉法、环形交叉法、边交叉法等。
5.变异:对于一部分子代个体,进行变异操作,变异的方式一般是:交换变异、倒位变异、随机抽样变异等。
7.结束条件:当达到一定条件时结束算法,比如迭代次数达到上限或者群体的适应度达到一定的水平。
传统的遗传算法在求解TSP问题时,存在一些问题:1.收敛速度慢:由于集合了交叉、变异等算子,每一代都要进行大量的计算,所以收敛速度慢。
2.易受陷入局部最优解:由于遗传算法采用的是局部搜索策略,所以可能会陷入到局部最优解中。
用于求解TSP问题的遗传算法改进

用于求解TSP问题的遗传算法改进遗传算法是一种常用的求解旅行商问题(TSP)的优化方法,它通过模拟自然界的遗传过程,不断迭代进化产生最优解。
传统的遗传算法在处理TSP问题时存在一些问题,如收敛速度慢、局部最优解问题等。
对遗传算法进行改进,使其更好地应用于求解TSP问题,是一个具有挑战性且值得研究的课题。
一、遗传算法简介遗传算法是一种模拟生物进化过程的优化算法,它通过模拟生物的遗传、突变、适应度等机制来搜索最优解。
在TSP问题中,遗传算法通过表示候选解的染色体、交叉、变异等操作,不断迭代产生最优解。
遗传算法的基本流程如下:1. 初始化种群:随机生成初始的候选解,构成初始的种群。
2. 选择操作:根据每个候选解的适应度(即路径长度),按照一定的概率选择一部分候选解作为父代。
3. 交叉操作:对选中的父代进行交叉操作,产生子代。
4. 变异操作:对子代进行变异操作,引入新的遗传信息。
5. 新种群生成:将父代和子代合并,按照一定规则生成新的种群。
6. 重复以上步骤,直到满足停止条件。
1. 收敛速度改进传统的遗传算法在处理TSP问题时,由于计算量较大,收敛速度比较慢。
为了改进这一问题,可以引入多种启发式算法,如模拟退火算法、禁忌搜索算法等,对遗传算法进行改进。
将这些算法作为辅助操作,引入更多的信息,以提高收敛速度。
2. 局部最优解问题在遗传算法的迭代过程中,容易陷入局部最优解,无法达到全局最优解。
为了解决这一问题,可以引入多种变异操作,如部分反转、位变异等,增加搜索空间,以期获得更优的解。
3. 适应度函数改进适应度函数的设计对遗传算法的性能有着重要影响。
在TSP问题中,适应度函数通常是路径长度,但这样的函数可能会导致算法陷入局部最优解。
可以尝试设计更复杂的适应度函数,考虑路径的多个方面因素,以减小局部最优的影响。
4. 种群初始化种群初始化是遗传算法的一个重要环节,它直接影响了算法的收敛速度和最终的解。
传统的种群初始化是随机生成的,容易导致种群分布不均匀,影响算法的局部搜索能力。
实验六:遗传算法求解TSP问题实验2篇

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

用于求解TSP问题的遗传算法改进【摘要】The traveling salesman problem (TSP) is a well-known combinatorial optimization problem that has been widely studied in the field of computer science. In this paper, we focus on using genetic algorithms to solve the TSP problem and explore various strategies to improve the performance of genetic algorithms in this context.【关键词】TSP问题、遗传算法、改进策略、实验设计、效果评估、实际应用、未来研究、背景介绍、研究意义、研究目的、遗传算法原理、遗传算法在TSP问题中的应用、改进方法实验设计、评估效果、展望未来1. 引言1.1 背景介绍Traditional methods for solving the TSP involve exhaustive search algorithms, such as the brute-force approach or dynamic programming. However, these methods become computationally expensive as the number of cities increases,making them impractical for real-world problems with large datasets.1.2 研究意义TSP问题(Traveling Salesman Problem)是一种经典的组合优化问题,用于描述一个旅行商从一个城市出发,经过每个城市且仅经过一次,最终回到出发城市的路径规划问题。
遗传算法求解TSP问题的实现与改进

遗传算法求解TSP问题的实现与改进
遗传算法求解TSP问题的实现与改进
摘要:旅行商问题(Traveling Salesman Problem,简称TSP)已经被证明为NP难题。
通过应用遗传算法求解TSP问题,给出了遗传算法中各算子的实现方法,并用遗传算法(Genetic Algorithm,简称GA)和穷举法分别求解了15个城市的TSP问题,结果表明,遗传算法具有明显的优越性。
引入模拟退火的思想对遗传算法的变异算子进行改进,并求解了50个城市的TSP,得到了满意的结果。
关键词:遗传算法;TSP;模拟退火
0 引言
本文在分析遗传算法的基础之上求解TSP问题,并与穷举法所得结果进行比较。
表明了遗传算法在求解此问题上的优越性。
针对遗传算法的不足,结合模拟退火思想对遗传算法进行改进,取得了理想的试验结果。
1 算法设计
TSP问题的模型是简单而易于描述的。
实际应用中,像印刷电路板工艺这样的应用可能是和模型比较接近的。
但是模型中的城市之间的距离代表的是某个解的耗费,实际中不一定是欧氏距离,有可能点与点之间的耗费需要另外用权值给出。
而且在实际中,两个城市之间的消耗不一定是对称的,例如乘船到另一城市和返回的费用可能是不同的。
这里对TSP问题模型进行简化,在500×500的平面内随机生成。
求解TSP问题的一种改进遗传算法_李晓英

10体的某个或某些基因。
群体p(t)经过选择、交叉和变异后得到下一代群体p(t+1);⑥终止条件判断:如果满足终止条件,则将当前群体中具有最大适应度的个体作为最优解,终止计算。
否则返回②。
遗传算法具有良好的全局搜索能力,常用于求解TSP问题。
但传统的遗传算法收敛速度慢并且易于陷入局部最优解,针对这一缺点,我们提出了一种求解TSP问题的改进遗传算法。
该算法在适应度函数的选择、遗传操作的设计以及遗传算法重要参数的设置上,都进行了改进。
该算法应用于C-TSP问题,表现出比传统遗传算法更好的收敛性和计算效率。
3求解TSP问题的改进遗传算法本文提出的遗传算法描述如下:3.1TSP的染色体针对TSP问题的特殊性,为充分利用TSP信息,采用直观的路径表示,即将染色体定义为TSP一条旅程的城市号序列。
设有m个城市,旅程(3-2-5-…-m-…-1)可直接表示为(3 2 5…m…1)。
该表示方法要求个体(即一条旅程)的染色体编码中不允许有重复的基因码,也就是说要满足任一个城市必须而且只能访问一次的约束。
3.2染色体的适应度函数在遗传算法中,以个体适应度作为进化搜索的依据,个体适应度越大,该个体被遗传到下一代的概率也就越大。
这里采用基于序的适应度分配[1]。
在该方法中,种群按路径长度进行排序,其中路径长度计算公式由(1)给出。
而适应度取决于个体在种群中的序位,而不是实际的目标值。
采用Michalewicz[1]提出的线性排序的适应度计算公式:f(ri)=c(1-c)j-1(其中j为个体ri在种群中的排序序号,c为指定的基于序的评价基数)。
3.3选择操作采用轮盘赌选择法。
为选择交配个体,需进行多轮选择。
每一轮产生一个[0,1]均匀随机数,将该随机数作为选择指针来确定被选个体。
3.4交叉操作在“非常规码的常规交配法”[2]基础上,我们提出一种改进的交叉操作:随机选择两个不相同的交配位,称为交叉区域。
在交叉区域,后代继承双亲的基因,其它的基因按异方基因顺序选取不重基因[2]。
用于求解TSP问题的遗传算法改进
用于求解TSP问题的遗传算法改进遗传算法是一种常用于解决旅行商问题(TSP)的优化算法。
TSP问题是指在给定一组城市和其之间的距离,找到一条最短路径,使得每个城市只访问一次并最终返回起始城市。
传统的遗传算法在解决TSP问题时存在一些缺点,例如收敛速度慢、易于陷入局部最优解等问题。
对遗传算法进行改进以提高求解TSP问题的效果和效率尤为重要。
改进初始化的方法。
传统的遗传算法一般采用随机生成的方法来初始化种群,但这样会导致种群的多样性不足、容易陷入局部最优解。
可以采用相邻交换法、插入法等启发式方法来生成初始化种群,增加种群的多样性,有助于全局搜索。
改进交叉和变异的操作。
传统的遗传算法中,交叉和变异操作一般是均匀随机进行的,但这样可能会导致交叉和变异带来的新个体的子路径中出现重复的城市,从而违反了TSP问题的约束条件。
可以采用部分映射交叉(PMX)等方法来保证交叉后子路径不会出现重复的城市,同时保持了种群的多样性;可以采用2-opt、3-opt等局部搜索方法来修复变异带来的子路径中出现的重复的城市,提高种群的质量。
可以引入自适应权重的选择策略。
传统的遗传算法中,选择策略一般是基于个体适应度的排序或轮盘赌选择的。
但这种选择策略可能会导致选择压力过大或过小,使种群收敛速度过快或过慢。
可以采用自适应权重的选择策略,根据种群适应度的分布情况动态调整选择概率,使得适应度较高的个体能够更有机会被选中,增加种群的多样性,提高全局搜索能力。
可以引入一些启发式的局部搜索方法。
传统的遗传算法中,局部搜索往往仅在变异操作中进行,但这样可能局部搜索的范围有限,难以跳出局部最优解。
可以在种群进化的过程中,根据种群的适应度情况,选择某些个体进行局部搜索,以进一步改善个体的质量。
对于求解TSP问题的遗传算法改进,可以从初始化方法、交叉和变异操作、选择策略和局部搜索等方面进行改进,以提高算法的效果和效率。
通过引入合适的启发式方法,增加种群的多样性,改善交叉和变异的操作,优化选择策略,加强局部搜索,可以有效地提高遗传算法在求解TSP问题中的性能。
改进的遗传算法求解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
1 改 进的遗传算法
1 1 2Op 算 法 . - t
方法 是使 用 遗传 算 法 等 近 似 算 法 。 相对 传 统 解 法 , 遗传 算法 不 考虑 得 到 路 径 的过 程 , 是 直 接 将 目标 而 指 向距 离最 短 , 此 能很 快得 到结 果 。但 遗 传算 法 因 搜 索空 间 大 , 索 时 间 较 长 ; 初 值 敏 感 , 大 型 搜 对 对
码 重复 , 去掉 ; 直至 扫描到 第三段 最后 一个 编码 。这
关键词
遗传算 法
TP S
局部优化
O X交叉 A
中 图法分类 号
T232 ; P 7 . 3
文献标志码
T P 旅 行商 问题 ) 一 类被 广 泛 研究 的组 合 优 S( 是
出 了一种 新 的变异 算法 , 随机产 生 变异基 因的位置 ,
化 问题 。对 于一 个 城 市 的 T P 问题 归 结 为 求 一 S, 条 穿过 所有 个 城 市 且 每 个 城 市 只 能通 过 一 次 的 最 短 闭合路 径 。对 个 城 市 , 一共 存 在 ( 一1 !/ M )
2条 可 能 的 路 径 , 此 , S 因 T P是 一 个 N 完 备 问 P 题 _ 。由于 ( 一1 !/ 1 M ) 2随 增 长 极 快 , 检查 所 有路 径 的枚 举 法 是 不 切 实 际 的 。解 决 T P的有 效 S
算 法 简单 , 运算 量小 , 可通 过改 变变 异次 数调 整运算 结 果 。通 过调 整变数 , 到 了较好 的试 验结 果 。 得
T P收 敛速 度较 慢 。局 部 优 化算 法 对 于 寻 找 T P S S
2O t - p 算法 是一 种 局部 启发 式搜 索算 法 , 其原理 示 意 图如 图 1 示 。算 法 的实 质 是 将 节 点 a 所 与 a 。
改进遗传算法求解TSP问题
( e a ste f cec n eh ooy Xn i g 5 0 3 C ia H nnI tu i e d cn l , i a 3 0 , hn ) n i oS n a T g xn4
Absr c :G n t grtms ( t a t e ei Aloi c h GA)sarn o s ac lo tm pi z t nis u td b h ee i v lt n i a d m erh ag r h o t ai n t ce yteh rdt e oui i mi o r y o
Ke r :g n t loi ms s pis i t nco sv ro eao ,n raigp t r ac igo eao , a eig y wo ds e ei ag rh ,wa npr i rso e p rtr ice sn at n p thn p rtr t v l c t ao e r n
存 在 着 相 互 制 约 的 关 系 , 以对 地 形 极 其 复 杂 、 无 规 律 的 T P的 应 用 效 果 并 不 十 分 理 想 . 过 利 用 互 换 启 所 极 S 通
迪 交 叉 算 子 加 快 局部 搜 索 算法 的 收 敛 速 度 , 用 模 式 增 加 修 补 算 子 防 止算 法 早 熟 收 敛 , 出 了一 种 求 解 T P 利 给 s 问题 的 新 型 遗传 算 法 . 真 实 验 表 明 该 算法 是有 效 的和 可 行 的 . 仿
d i 0 99 .s. 0 - 5 62 1.1 2 o 1 . 6 6i n1 8 7 1. 00 . 3 : 3 s 0 0 0
改进遗传算法求解 T P问题 S
炎 士涛
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 1 1
m (H , t)
1 2
要判断当 m 增大时, 概率 p 是否增大. 由于 (m - 1) 2 + m N - 1 m (m - 1) m (n - m ) 1 2m 2 - 2m + m N - m 2 p = + = = N (N - 1) N (N - 1) 2 2N (N - 1) 2N (N - 1) 由此得出当 m 增大时, 概率 p 也增大. 也就是经过选择、 交叉算子超出平均适应值的模式可 以增多. 总体来说, 影响收敛速度和收敛效率的主要取决于好的模式的重组, 和模式的多样性. 下面的数值试验结果也给上面的分析提供了依据 . 我们对本文提出的算法用 C + + ) 进行了数值 语言在 PC ( Pen t ium 算法 试 验, 每一种方法运行 30 次, 计算结 改进算法 果 见表 2. 标准遗传算法得到最优解 为 43215558, 浓度控制策略的遗传算 法得到最优解为 42317601. 遗传模拟 退火算法得到最优解 423174, 但是产 生 500000 个个体, 用免疫算法得到最 优解, 但是产生 150000 个个体. 本文
摘要: 提出了一种改进遗传算法求解T SP. 该方法在迭代初期引入不适应度函数作为评价标准, 结合启发
式交叉和边重组交叉算子设计了一种新的交叉算子, 并对变异后个体进行免疫操作. 此外对操作后群体进 行整理, 删除群体中相同个体, 得到规模为 N 1 的中间群体, 对较优的 N - N 1 个个体进行启发式变异, 并将 变异后个体补充进中间群体, 生成规模为N 的新群体, 这样保证群体中没有相同个体, 从而保证群体多样性. 数值结果表明这种改进遗传算法是有效的.
2 改进遗传算法求解 TSP 问题
211 编码
本文采用序表达方法, 例如: [ 3 2 5 4 7 1 6 9 8 ], 表示从城市3 出发依次经
收稿日期: 2004209205
130
数 学 的 实 践 与 认 识
35 卷
过城市 2、 5、 4、 7、 1、 6、 9、 8 然后返回城市 3 的一条路径 . 212 不适应度函数 对于求解最小值问题, 本文提出用目标函数直接作为不适应度函数, 不适应度越低表明 个体越好. 对于 T SP 问题, 用 Λf i 来表示个体的不适应度.
2期
文 杰, 等: 改进遗传算法求解 T SP 问题
131
个体经过变异后适应度降低, 从而丢失有用信息. 本文对群体中相同个体进行变异, 来保证 群体多样性. 216 替代策略、 种群规模和最优搜索 徐宗本等[ 4 ] 证明了, 如果父代参与子代竞争, 可以保证几乎必然收敛到最优解. 本文采 用的方法是如果交叉、 变异所产生的子代, 优于父代, 则代替父代, 否则以概率 A ij ( tk ) =
表1
城市
1 2 3 4 5 6 7 8 9 - 2, - 1, 2, 3, - 4, 5, - 6, - 7, 8,
与之相连的城市
9, 8, 4, - 5, 6, - 7, - 8 9, 1, 2 6, 3 4 3 5, 1 3 9 9
选择 2 → 3, 从 3 开始, 如果 3 不包含在数组中, 就从 3 开始右转使得 3 成为第一位置城市, 根 据两点距离选择下一个城市得 1 2 3 5 × × × × × 因为 5 包含在数组中, 直接选择与之相邻 4 的得到 1 2 3 5 4 × × × 依此类推得到一个个体 1, 2, 3, 5, 4, 6, 7, 8, 9. 215 变异 标准遗传算法是对交叉后得到的中间代进行变异, 这样可能会使得交叉后的某些好的
218 结果分析
对遗传算法进行严格的理论分析是比较困难的. 现在我们用模式来分析算法的优越 性 . 本文用二阶长度为二的模式, 即把相邻城市作为模式 . ( ) 假设在进化过程中的第 t 代时, 当前群体 P t 中能与模式 H 匹配的个体数记为 m (H , t) , 下一代群体 P ( t + 1) 中能与模式 H 匹配的个体数记为 m (H , t + 1). 下面对改进遗传 算法在选择算子、 交叉算子和变异算子的连续作用下, 模式 H 的个体数 m (H , t) 变化情况 进行分析. 1. 选择算子对模式 H 生存数量的影响 θ , H 的生存数量增加; 当 f (H ) < f θ, 由于采用比例选择算子, 前人已经证明 f (H ) > f
列为其下一个城市, 而使原先的遍历路径调整为 L 1 = {A 0 , … A
, A
j+ 1
, … A N }, 由于这么做改变了路径中三个相连城市距离, 可能变动较大, 很难达 , …A , A , A , … A N }. 这样只改变两条路经, 使得由于个体的
到更好的解. 本文将其改为把 A i 与 A j 之间的路径片断进行逆序排序, 得 L 1 = {A 0 , …
i- 1
, A i, A j , A
j- 1
i+ 2
i+ 1
j+ 1
概率增大.
217 算法结构
步骤1: t ( 迭代次数) = 0, 用混合算法生成N 个初始群体, T 0 = (m ax li - m in li) × 019. 其中 m ax li 表示初始群体中最差的个体的路径长度,M in li 表示初始群体中最好的个体的路 径长度. B estofnow 赋值为当前群体中最好的个体. 步骤 2: 群体 P ( t) 中的每个个体 x i 用 ( 211) 式计算其不适应度 uf ( x i ). 步骤3: 若终止条件满足则算法终止, 否则用 ( 212) 式计算概率 p i , 并以概率 p i 从 P ( t) 中 随机选择一些个体构成一个种群 R P ( t). 对种群应用交叉算子生成 cro sspop ( t) , 对其中相 同个体进行变异, 对于群体中其它个体进行启发式变异. 变异后群体进行接种疫苗, 对最优 解进行局部细搜索. 然后使用自适应代沟替代策略, 并除去群体中的相同个体, 得到规模为 N 1 的新群体 . 补充 N - N 1 个新个体得到规模为 N 的下一代群体 P ( t + 1). 步骤5: 判断是否满足终止条件, 如果满足则停止, 并输出最优解 . 否则, t = t + 1, 转步 骤 2.
A A
j- 1 i- 1 j- 1
→A i →A
, A j, A
j+ 1
i+ 1
和A
j- 1
→A j →A
j+ 1
, 当前的遍历路径为 L = {A 0 , … A
i- 1
i- 1
, A i, A
i+ 1
i+ 1
,
, … A N }, 对其进行接种疫苗, 对 A i 而言, 免疫算子将把其邻近城市 A j 排 , A i, A j , A , …
m in 1, exp ( f ( j ) - f ( i) )
tk
接受.
为了加强算法的局部搜索能力, 本文对变异后的个体进行免疫操作, 就是接种疫苗. 如 果产生的个体优于接种前的个体, 则代替那个个体并继续对新个体进行接种疫苗, 直至劣于 接种前的个体 . 但不同的是在免疫算法中接种疫苗是把 A j 加入到 A i 之后, 也就是: 设 T SP 问题中所有与城市 A i 距离最近的城市为 A j , 并且二者非直接连接而是处于某一路径的两 段A …A
1
其中 uf (X i ) 表示种群 X 中的个体 X i 的不适应值, P {X i } 表示每个个体被选择的概率, 这 与 uf (X i ) 有关, uf (X i ) 越小表示第 i 个体越好, 被选择的概率越大. 上述选择算子称为不 适应度函数的比例选择算子. 214 交叉 本文将启发式交叉算子和边重组交叉算子两种交叉算子相结合, 设计了启发式边重组 交叉算子. 设两个个体为 P 1 = 1 2 3 4 5 6 7 8 9 P 2 = 4 1 2 8 7 6 9 3 5 首先根据边重组交叉得到表 1: 然后把带有负号的城市对保存到一个数组, 得 ( 1, 2) ( 4, 5) ( 6, 7 ) ( 7, 8 ). 再随机选择一个初始点来开始 构造后代, 一般取父代个体中得第一个城市作为初始 点, 本例取为 1, 由于 1 包含在数组中, 直接选出 1 →2, 得到 1 2 × × × × × × ×, 从 2 开始右转使得 2 称为两个父本的第一个位置城市得: 2 3 4 5 6 7 8 9 2 8 7 6 9 3 5 4 判断 d ( 2, 3) 与 d ( 2, 8) 大小, 如果 d ( 2, 3) < d ( 2, 8) ,
132
H 的生存数量减少 .
数 学 的 实 践 与 认 识
35 卷
2. 交叉算子对模式 H 生存数量的影响
根据本文设计的交叉算子, 对于两个父本都有的模式, 以概率 1 遗传到下一代. 如果一 个父本有, 而另一个没有, 他以 1 2 的概率遗传到下一代. 对于 t 代模式当前群体 P ( t) 中能 与模式 H 匹配的个体数记为 m (H , t) , 那么不包含模式 H 的个体数就为 N - m (H , t). 根 据本文设计的交叉算子, 模式 H 在下一代出现的概率为:
n
uf i = l i =
∑d (c ,
j j= 1
c j + 1 ) + d ( c 1 , cn )
( 2. 1)
不适应度越小, 就表明路径越好. 213 选择算子 本文对于不适应度函数, 设定选择算子为
N
1 - uf (X i )
P {X i } = N -
∑uf
k= 1