改进二进制布谷鸟搜索算法求解TSP问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

改进二进制布谷鸟搜索算法求解TSP问题

:According to the characteristics TSP problem ,we design an improved TSP problem solving binary cuckoo algorithm. The algorithm uses a binary code string showing the location of the nest ,the nest of the cuckoo to find a new flight path of Levi binary code conversion ,this paper introduces the binary coded control coefficient transform binary coding mixed

update ,the paper retains the cuckoo egg method being eliminated mechanisms ,and introduces greedy thought ,this article will search for new and efficient cuckoo (CS)algorithm to improve a

binary search cuckoo (BCS)algorithm. The BCSalgorithm for solving TSP. By testing multiple sets of data ,compared to "TSP problem of data collection catalog (standard test

set )," The results show that better than tabu search algorithm ,genetic algorithm ,ant colony algorithm ,particle swarm optimization.

Keywords:Binary ;Cuckoo search algorithm ;traveling salesman problem ;greedy algorithm

1 引言

TSP(旅行商)问题是指已知n个城市之间的相互距离,寻

找一条遍访n 个城市,每个城市只访问一次。最终又回到出发城市的最短旅行路线。这是一个典型的组合优化问题,被证明是

NP完全问题,其所有的路线数为n,搜索空间随着城市数n的增大而迅猛增大,这就产生了所谓的“组合爆炸”问题。目前还没有一种完全有效的算法解决TSP问题。由于TSP问题有很高的理论价值和实际应用背景,如何以用来解决分配、调度和网络优化问题等,所以人们一直致力于研究新的算法达到高效求解TSP问题。求解TSP问题传统的方法有穷举搜索法、贪心法、动态规划法等,这些方法都面临着这样一个共同的问题,即当问题的规模N 大到一定程度时,问题的计算量极大地超出了机器所能允许的极限。现代流行的智能算法主要有遗传算法、郭涛算法、蚁群算法、粒子群优化算法。

英国剑桥大学的Yang等在研究了布谷鸟的繁殖行为和莱维飞行特性之后于2009 年创立了布谷鸟搜索(Cuckoo Search ,CS算法,并用大量的函数对其性能进行了测试,结果表明该算法在许多方面的性能已经超过了微粒群算法和遗传算法:CS算

法具有全局搜索能力强、选用参数少、搜索路径优、多目标问题求解能力强等优点。然而,原始的CS算法只能用于求解连续型的优化问题,不能用于求解离散型的优化问题如NP完全问题。

本文将原始的CS算法改进成为二进制布谷鸟搜索(Binary Cuckoo Search,BCS算法,并应用旅行商问题(TSP。

2 TSP 问题数学描述

TSP问题(Traveling Salesman Problem ),又称旅行商问题,每

两个城市i 和j 之间的距离为Dij ,城市行走的排列顺序用数学符号表示为:X= (C1, C2,……Cn),目标函数。

3求解TSP问题的改进的二进制布谷鸟算法

3. 1 编码方法

本文提采用的解码方案如下:采用二进制编码,设TSP问题

有n 个城市,则用长度为r=n*[log2n ] 个二进制位代表一个染色体。设有一染色体的二进制编码为T={t1 ,t2 ,... tr} ,其中

ti=0 或ti=1 。解码时,把T 平均分成n 段,然后把分别每一段看成一个二进制数还原成相应的整数,再对这n 个整数从小到大排序,用相应的位置当成一条路径中的城市编号。例如,设TSP问题有5个城市,则染色体编码的长度为15,设其中一个染色体的编码为[011010001010100] ,解码时,每 3 个二进制编码为一段,可化为有重复整数序列[3 2 1 2 4] ,从小到大排序后, 其相应的位置为[4 2 1 3 5] ,可看作无重复的城市编号解释为一条回路。在此编码方案下, 采用二进制的两点交叉及均匀变异, 不仅可以避免产生重复城市编号的问题, 而且产生的子代很好的继承了父代的优良路径, 使得种群得以进化, 并扩大了搜索的空间。 3. 2 适应度函数

适应度函数设置为路径的长度, 函数值越小, 也就表示个体的适应度越好。

3. 3 CS 算法

布谷鸟搜索算法是由布谷鸟的寄宿孵生的繁殖行为和levy 飞行机制演化而来的。在大自然中布谷鸟是一种会将自己的鸟蛋产在别的鸟类的巢穴里,让别的鸟来帮助它孵化它的后代的寄宿繁殖的鸟类。布谷鸟产的蛋在别的鸟巢时很有可能会被发现,那么寄宿其他鸟巢孵化自己后代的计划就失败,只能另寻更好的鸟巢,如果宿主鸟没有发现这个计划的实施,就会帮布谷鸟孵化鸟蛋,并且布谷鸟幼雏会比宿主鸟先被孵化出来,只要布谷鸟幼鸟被孵化出来它就会将其他的鸟蛋从鸟巢里推出去,以助其加快成长。Levy 飞行在自然界中很多动物和昆虫的飞行行为中普遍存在,比如在飞行过程中可能会突然转一个90 度的弯接着飞行。

布谷鸟搜索算法是在以下三个理想的假定前提下提出的:

(1)一只布谷鸟只产一个蛋,而且随机的寄宿在某个被选中的鸟巢中;

(2)最好的鸟巢位置将被保留到下一代;

(3)布谷鸟能够利用的多样性的鸟巢数量是固定的n 个,

布谷鸟蛋被发现的概率为pa, pa€ [0 , 1]。

莱维飞行取决于由公式(3)和公式(5)产生的两个正态分布的随机数v,u,v,u 可大可小,可正可负,故布谷鸟每次按Levy 飞行机制随机搜索的路径长短和方向都是高度随机改变的,很容易从一个区域跃入到另一个区域,是个CS算法的全局多样

性特别强。另一方面,CS算法借鉴了布谷鸟的繁殖行为,定义布谷鸟蛋被宿主鸟发现的概率pm=0.25,不适应环境的较差的布

相关文档
最新文档