用于旅行商问题的离散布谷鸟算法

article/2025/10/4 11:54:40

英文:Discrete Cuckoo Search for Traveling Salesm Problem

摘要

杜鹃搜索(CS)属于一类新颖的自然启发算法,其灵感来源于一些杜鹃物种的专性卵寄生,将它们的卵放在其他寄主鸟类(其他物种)的巢穴中。CS已成功地应用于解决连续优化问题,但其在离散问题中的潜力尚未得到充分的探索。本文在现有CS算法的基础上,构造了一个离散杜鹃搜索(DCS)来求解旅行销售问题(TSP)。研究了两种方案,即离散步长和杜鹃的更新方案。与其他方法相比,DCS在TSP问题上进行了评估。实验结果表明,所提出的算法能够很好地解决一些TSP实例,但对于一些其他实例,它可能会陷入局部最优解。

1. 介绍

旅行销售问题(TSP)被称为传统上难以解决的经典优化问题之一。这个问题在1930年被表述为数学问题,是世界上研究最为深入的问题之一。基本上,在这种情况下,销售人员需要一次访问每个城市,然后从旅行的起点返回城市。该问题的精确解决将涉及算法,这些算法需要寻求所有现有解决方案的可能性,因此该问题也属于非确定性多项式经济完整性(NPComplete)问题([1],[2],[3]),并已证明没有在多项式时间运行的方案或算法来解决TSP[4]。因此,该算法的执行时间经济复杂度将与给定输入的大小成指数关系。关于这一研究领域的全面概述,请参见【5】。

已经开发了许多方法来解决TSP,如启发式搜索[6]、神经计算网络[7]和动态规划[8],但进化计算尤其是元启发式算法显示出解决TSP等全局优化问题的一个非常有前途的方向。许多已发表的求解TSP的方法、Luciana Buriol提出的模因算法(已经开发了许多方法来解决TSP,如启发式搜索[6]、神经计算网络[7]和动态规划[8],但进化计算尤其是元启发式算法显示出解决TSP等全局优化问题的一个非常有前途的方向。许多已发表的求解TSP的方法、Luciana Buriol提出的模因算法(memetic algorithm)[9]、Salmani Niasar提出的离散模糊粒子群优化[10]、Marcin L.Pilat提出的遗传算法与蚁群系统相结合[11]、,使用Li Pei Wong[12]提出的基于频率的修剪改进了蜂群优化,以及Huai Kuang Tsai[13]提出的称为异质选择进化算法(HeSEA)的先进方法。这些研究人员提出了将元启发式算法与局部搜索或其他元启发式方法相结合的方法。在[9]、[10]、[11]和[12]中,研究人员专注于具有数百个城市(节点)的小型TSP。通常,当产生的解非常接近已知的最优解时,方法的精度非常高。在[13]中,研究人员关注了拥有数千个城市的大型TSP。他们提出的称为HeSEA的方法能够解决多达3038个城市的TSP,与已知的最优解相比,偏差为0%。它还解决了13509个城市的TSP,偏差仅为0.74%)[9]、Salmani Niasar提出的离散模糊粒子群优化[10]、Marcin L.Pilat提出的遗传算法与蚁群系统相结合[11]、,使用Li Pei Wong[12]提出的基于频率的修剪改进了蜂群优化,以及Huai Kuang Tsai[13]提出的称为异质选择进化算法(HeSEA)的先进方法。这些研究人员提出了将元启发式算法与局部搜索或其他元启发式方法相结合的方法。在[9]、[10]、[11]和[12]中,研究人员专注于具有数百个城市(节点)的小型TSP。通常,当产生的解非常接近已知的最优解时,方法的精度非常高。在[13]中,研究人员关注了拥有数千个城市的大型TSP。他们提出的称为HeSEA的方法能够解决多达3038个城市的TSP,与已知的最优解相比,偏差为0%。它还解决了13509个城市的TSP,偏差仅为0.74%。

杜鹃搜索(CS)是Xin She Yang和SuashDeb[14]开发的自然启发元启发式算法之一,最初设计用于解决持续优化问题。CS获得的最优解远优于通过高效粒子群优化和遗传算法获得的最佳解[15]。在本研究中,提出了离散CS(DCS)来解决TSP。研究了两种方案,即离散步长和解更新方案。本研究集中于CS的简单形式,不与任何其他方法相结合。这里研究的一些TSP实例是拥有666个城市的小型TSP实例。

二,预备知识

A、levy飞行

在自然界中,动物以随机或准随机的方式寻找食物。一般来说,动物的觅食路径实际上是随机行走,因为下一次移动是基于当前位置/状态和到下一个位置的转移概率。它选择哪一个方向隐含地取决于可以用数学建模的概率。各种研究表明,许多动物和昆虫的飞行行为证明了levy飞行的典型特征[16]。Levy飞行是一种随机行走,其中步长根据重尾heavy-tailed概率分布分布。经过大量步数后,距离随机游动原点的距离趋于稳定分布。

B、布谷鸟算法

自然启发的方法是优化问题最强大的算法之一。CS是一种新颖的自然启发算法,灵感来自一些杜鹃物种的专性卵寄生,将它们的卵放在其他寄主鸟类(其他物种)的巢穴中。一些寄主鸟类可以和入侵的杜鹃发生直接冲突。例如,如果一只寄主鸟发现这些蛋不是自己的,它要么扔掉这些外来蛋,要么干脆放弃自己的巢穴,在其他地方建一个新的巢穴。一些杜鹃物种,如新世界的寄生杜鹃,其进化方式使得雌性寄生杜鹃可以模仿少数选定寄主物种的卵的颜色和图案。这降低了卵子被遗弃的概率,从而提高了它们的繁殖能力[18]。值得一提的是,几只寄主鸟与入侵的杜鹃发生了直接冲突。在这种情况下,如果寄主鸟发现蛋不是自己的,它们要么将蛋扔掉,要么干脆放弃自己的巢穴,在其他地方建立新的巢穴。寄生杜鹃经常选择寄主鸟刚刚产卵的巢穴。一般来说,杜鹃鸟卵孵化的时间略早于寄主卵。一旦第一只杜鹃雏鸟孵化出来,它的第一本能反应就是盲目地将寄主的蛋推出巢穴,从而将寄主蛋赶走。这一行动导致杜鹃雏鸟在其宿主鸟提供的食物中所占份额增加[18]。此外,研究表明,杜鹃雏鸟可以模仿寄主雏鸟的叫声,以获得更多的喂食机会。

通过理想化一些杜鹃的专性繁殖寄生,XinShe Yang和Suash Deb于2009年开发了杜鹃启发算法[15]。CS使用以下表示:巢中的每个蛋代表一个解决方案,而布谷鸟蛋代表一种新的解决方案。目的是使用新的、可能更好的解决方案(杜鹃鸟)来替代巢穴中不太好的解决方案。在最简单的形式中,每个巢有一个蛋。该算法可以扩展到更复杂的情况,其中每个巢都有代表一组解的多个蛋。CS基于三个理想化规则:

1)每只杜鹃一次产一个蛋,然后把蛋倒在一个随机选择的窝里

2) 最好的窝和高质量的蛋将传给下一代

3) 可用寄主巢穴的数量是固定的,杜鹃产卵的概率为Pa∈ (0,1)。在这种情况下,寄主鸟可以摆脱蛋,或者干脆放弃巢穴,建立一个全新的巢穴。

为了简单起见,最后一个假设可以近似为n个巢穴的pa部分被新的巢穴替换,具有新的随机解。对于最大化问题,解的质量或适合度可以简单地与目标函数的值成比例。其他形式的适应度可以以类似于遗传算法中的适应度函数的方式定义。

在原始CS中,在迭代t处,根据以下运动方程更新每个杜鹃的位置:

其中α>0是步长,该步长应与兴趣问题的尺度相关,并可由用户选择。在大多数情况下,α=O(1)。上述方程本质上是随机行走的随机方程。一般来说,随机游走是马尔可夫链,其下一状态/位置仅取决于当前位置(上述等式中的第一项)和转移概率(第二项)。符号⊕ 表示入口乘法[19]。这种入门符号类似于PSO中使用的符号,但在这里,通过Levy飞行的随机行走在探索搜索空间方面更有效,因为从长远来看,它的步长要长得多。利维飞行基本上提供了随机行走,而随机步长是从levy分布中得出的。

 

其具有无穷的方差和无穷的平均值。在这里,布谷鸟的连续跳跃/步长基本上形成了一个随机行走过程,具有幂律步长分布和重尾。

基于[14]和[19],CS在找到具有高成功率的全局最优值方面非常有效。XinShe Yang的模拟表明,CS在效率和成功率方面都优于PSO和GA[15]。这些事实为研究如何在求解TSP中优化CS提供了启发。挑战在于如何设计杜鹃的更新方案。

三、离散布谷鸟

A、布谷鸟的含义

TSP的解表示是如图1所示的排列表示。在这种情况下,蛋、巢或杜鹃没有区别,因为每个巢对应一个蛋,也代表一只杜鹃。这里,杜鹃代表一种解决方案。在遗传算法中,它就像一条代表个体的染色体。在这种表示法中,数组的一个元素代表一个城市(节点),索引代表一次旅行的顺序。

 B、离散步长

在连续优化问题[15]中,步长(α)与所关注问题的规模有关。在大多数情况下,α>0或α=1。对于TSP,杜鹃的步长可以定义为杜鹃与同代最佳杜鹃之间的距离。步长方程现在可以表示为:

任意两个杜鹃i和j之间的距离可以定义为它们之间不同弧的数量。在图2中,杜鹃ii中的三个弧12-7、6-15和5-11在杜鹃j中不存在。因此,杜鹃i和杜鹃j之间的不同弧的数目为三。

 

 C、 基于全局的更新方案

在原始CS中,每只杜鹃都用一个步长α和一个随机步长进行更新,该步长是从称为Levy飞行的Levy分布中提取的。在我们的方法中,我们不使用Levy飞行(Levy飞行=1)。CS更新方程式现在可以用以下公式表示:

 对于最佳杜鹃的更新方案,通过使用局部随机游走来围绕最佳解进行开发

 其中εt是[0,n/2]中的随机数发生器,具有均匀分布,这实际上成为标准随机游走。其中n是城市总数。从快速查看来看,在解决方案更新方案中,DCS和爬山之间似乎有一些相似之处。但有显著的不同。DCS是一种基于概率的算法,其方式类似于GA和PSo。

D、多重进化

当布谷鸟更新解决方案时,布谷鸟中的现有解决方案将被更改。由于杜鹃的表示是置换表示,所以我们使用反转突变来表示更新方案。通过反转突变,可以保持已形成的路径,从而不会损坏先前形成的良好路径。

 DCS中的杜鹃使用进化策略(ES)概念更新解决方案。随机选择的杜鹃将使用反转突变进行m次更新。首先,染色体上的索引将在携带反转突变后随机选择。换句话说,随机选择的杜鹃将有m个新的解决方案。如果杜鹃所产的蛋被寄主鸟发现,那么更糟糕的杜鹃也会使用反转突变进行m次更新。因此,在一代人结束时,将有2m个新的解决方案,n只最好的杜鹃将被选为新的种群。

E、DCS方案

DCS的方案由以下伪代码说明。首先,每只杜鹃随机生成初始解。随机得到一只杜鹃,然后生成多达m次的新解,并用最好的杜鹃做同样的事情。然后,生成随机实数,如果随机数小于Pa,则找到最差的布谷鸟,并从最差的杜鹃鸟中生成m倍的新解。如果随机数小于Pa,那么在迭代结束时将出现(3m+n−1) 杜鹃。如果随机数大于Pa,那么在迭代结束时将出现(2m+n)只杜鹃。在迭代结束时,将根据下一次迭代的目标函数选择n个最佳杜鹃,并且这种情况将持续到达到最大迭代。

 F、选择n个最佳杜鹃

这个过程是为下一代挑选n只最好的杜鹃。这个选择过程必须保证在一代人中,没有任何杜鹃有相同的解决方案。因此,可以保持种群的多样性,并有助于以高概率生成良好的解决方案。

四、实验结果

在本研究中,DCS应用于从TSPLIB[20]下载的7个TSP问题。表1列出了问题名称、城市数量和最佳行程长度。在[20]中,TSP实例的类型是欧几里得距离。TSP实例提供了一些城市的坐标。实例名称中的数字表示提供的城市数量。例如,ulysses16提供了16个城市的坐标。问题是,根据欧几里得距离,在每个城市只能参观一次的条件下,参观16个城市的最佳路线是什么。

 A、DCS的性能

检查DCS以解决7个TSP实例,以查看其性能。在本研究中,DCS使用15只杜鹃的种群大小,进化次数为15。使用这些参数,DCS使用7个TSP实例进行了检验。表2显示了7个实例的最差、最佳和平均精度。通过等式(6)中的公式计算精度。DCS每次运行都能为ulysses16、ulysses22、gr202和gr666提供最佳解决方案。然而,DCS对于tsp225、a280和pcb442这三种情况不是最佳的。

B、 杜鹃种群

总体规模(n)关键性地决定了计算时间。这里,对问题gr202使用不同的总体规模来测试DCS,以研究其与DCS所需的试验数量的相关性,从而获得最佳解决方案。图5表示了群体规模与达到最佳解决方案的平均试验的相关性(准确率为100%)。平均试验随着人口规模的增加而增加。人口众多并不能保证杜鹃会很快找到最佳的解决方案。根据图5,最佳人口规模为5人。

 

五、结论

所提出的方法DCS已成功地用于解决TSP。仿真结果表明,该方法对简单TSP具有很好的性能。但是,DCS无法获得复杂TSP的最佳解决方案。理论上,该方法可以与其他技术相结合,如贪婪杜鹃种群的初始化或Lin Kernighan算法,以进一步提高旅游质量


http://chatgpt.dhexx.cn/article/WYmD8hnR.shtml

相关文章

布谷鸟hash算法的并行化实现(一)

由于本人最近在写一个项目,为了实现数据查找以及数据修改部分的快速操作,所以采用hash对数据进行存储,而在此过程中接触到了布谷鸟hash,觉得这个hash算法还是很有意思并且高效,所以想着进行一些记录,本系列…

【算法学习】布谷鸟搜索算法【CuckooSearch(CS)】

原文链接:布谷鸟搜索算法 布谷鸟搜索(Cuckoo Search,CS)是由 Xin-She Yang 和 Suash Deb 于 2009 年开发的自然启发式算法。CS 基于布谷鸟的寄生性育雏(brood parasitism,又巢寄生)行为。该算法…

【LSTM回归预测】基于matlab布谷鸟算法优化LSTM回归预测【含Matlab源码 2037期】

⛄一、布谷鸟算法优化LSTM预测 1 布谷鸟搜索算法 布谷鸟算法是一种新型的群智能搜索算法,布谷鸟算法具有参数数目少、鲁棒性强、通用性好和全局寻优能力突出等多方面综合优势。布谷鸟算法以寻得全局最优鸟窝为目标,采用如式(3)所示的方法进行鸟窝位置更…

智能优化算法:布谷鸟搜索算法-附代码

智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码1.算法原理2.算法结果3.参考文献4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search ,cs),是由剑桥大学Yang等提出的一种群智能优化算法,…

python---布谷鸟搜索算法

布谷鸟搜索算法(Cuckoo Search,CS) 布谷鸟算法的启发当然来自于布谷鸟,因为布谷鸟这种鸟很有意思,生出来的孩子自己不养,直接被扔到其他鸟的鸟巢中去了,但有时候,这些布谷鸟蛋会被被…

通俗易懂的布谷鸟算法与莱维飞行,(附求解函数最小值matlab源码)

1 从布谷鸟的育雏到布谷鸟算法2 布谷鸟算法3 萊维飞行与公式(1)的深层含义4 附:CS算法求解函数最小值代码5 源码下载6 参考文献 1 从布谷鸟的育雏到布谷鸟算法 布谷鸟不会做窝,也不会育雏,在春末夏初,向北飞,趁别的鸟(…

布谷鸟算法(C++实现)

算法思想 布谷鸟鸟群最终只有最健康的蛋才能孵化出来。 布谷鸟群每只鸟都在拼命寻找好巢穴以达到下最健康的蛋的母的。 算法步骤 步骤一 初始化 初始化布谷鸟种群数量(鸟窝个数),计算各个鸟窝(解)的函数适应值&…

Python优化算法07——布谷鸟搜索算法

和前面的系列不同,布谷鸟这里没有现成的Python的包,使用我们需要自己写各种源码模块进行组合,达到布谷鸟搜索算法(CS)的功能。 这里的CS算法是面向过程的编程,都是自定义函数,不涉及类与对象。…

一个例子入坑布谷鸟算法(附完整py代码)

布谷鸟是比较新的启发式最优化算法,但其与传统的遗传算法,退火算法等相比,被证明收敛速度更快,计算效率更高! 文章目录 本文诞生的缘由布谷鸟算法思想简介更新位置的方式莱维飞行局部随机行走 抛出个栗子一些参数的建议完整的python实现运行结果参考文献 本文诞生的缘由 由于布…

基于布谷鸟搜索算法的函数寻优算法

文章目录 一、理论基础1、算法原理2、算法流程图 二、Matlab代码三、参考文献 一、理论基础 1、算法原理 布谷鸟采用一种特殊的寄生宿主巢穴的方式孕育繁殖,它将孵育的蛋置入寄生宿主的巢穴,让寄生宿主孵化布谷鸟蛋。由于布谷鸟幼雏能发出比寄生宿主幼雏更闪亮的叫…

布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析

目录 一、布谷鸟算法理论二、CS算法应用于函数优化1.流程图3.代码解析3.1 主函数 Csmain.m3.2 Levy飞行 func_levy.m3.3 与上一代比较,返回较优的鸟巢 func_bestNestPop.m3.4 根据发现概率,舍弃一个鸟巢并建立一个新鸟巢 func_newBuildNest.m3.5 目标函数…

智能优化算法——布谷鸟搜索算法原理(附代码)

目录 基本概念 算法具体流程 算法流程图 测试函数 优化结果 visual studio2017C代码 基本概念 布谷鸟搜索算法(Cuckoo Search,缩写 CS)是由剑桥大学杨新社教授和S.戴布于2009年提出的一种新兴启发算法。根据昆虫学家的长期观察研究发现&#…

布谷鸟算法

布谷鸟算法是将布谷鸟育雏行为与Levy飞行算法相结合的一种算法。 在布谷鸟算法中,有两个算法或者说两个位置更新是关键: 第一个是布谷鸟寻找最优解时的算法: 一个是布谷鸟寻找鸟窝下蛋的寻找路径是采用早已就有的萊维飞行3,如上…

布谷鸟算法浅谈与简单应用

简介 布谷鸟算法是由剑桥大学Xin-She Yang教授和S.Deb于2009年提出的一种新兴的启发算法,是一种通过模拟自然界当中布谷鸟(也就是杜鹃,故该算法也称为杜鹃算法)在繁育后代的行为而提出的一种搜索算法。 本文章将以在工程实践当中…

布谷鸟搜索算法学习

0、引言 布谷鸟搜索算法(Cuckoo Search, CS)是2009年Xin-She Yang 与Suash Deb在《Cuckoo Search via Levy Flights》一文中提出的一种优化算法。布谷鸟算法是一种集合了布谷鸟巢寄生性和莱维飞行(Levy Flights)模式的群体智能搜索…

布谷鸟搜索算法

布谷鸟搜索(Cuckoo Search,缩写 CS),也叫杜鹃搜索,是由剑桥大学杨新社(音译自:Xin-She Yang)教授和S.戴布(S.Deb)于2009年提出的一种新兴启发算法。 1.定义 …

优化算法|布谷鸟算法原理及实现

布谷鸟算法 一、布谷鸟算法背景知识二、布谷鸟算法思想简介三、布谷鸟算法流程四、布谷鸟算法的Python实现五、布谷鸟算法matlab实现 一、布谷鸟算法背景知识 2009年,Xin-She Yang 与Suash Deb在《Cuckoo Search via Levy Flights》一文中提出了布谷鸟算法(简称CS)…

CS_2022_01

2022-1-3 08:33:52 用OBS录完之后的视频是mkv格式的,PR不支持mkv格式的视频,于是需要转码,一开始用FFmpeg,有点不方便,但是也能用。后来一看OBS原本自带转码工具。 发现过程: 打开OBS,点击左下角…

CSP-S 2020

[CSP-S2020] 动物园 题目描述 动物园里饲养了很多动物,饲养员小 A 会根据饲养动物的情况,按照《饲养指南》购买不同种类的饲料,并将购买清单发给采购员小 B。 具体而言,动物世界里存在 2 k 2^k 2k 种不同的动物,它…

cs231n(1)

图像分类 目标:已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像。 图像分类流程 输入:输入是包含N个图像的集合,每个图像的标签是K种分类标…