【ACO TSP】蚁群算法求解旅行商问题【含 GUI Matlab源码 929期】

💥💥💞💞欢迎来到Matlab仿真科研站博客之家💞💞💥💥

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。

🍎个人主页:Matlab仿真科研站博客之家

🏆代码获取方式:
💥扫描文章底部QQ二维码💥

⛳️座右铭:行百里者,半于九十;路漫漫其修远兮,吾将上下而求索。
在这里插入图片描述

⛄更多Matlab路径规划(仿真科研站版)仿真内容点击👇
Matlab路径规划(仿真科研站版)

⛄一、TSP简介

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP的数学模型
在这里插入图片描述

⛄二、蚁群算法简介

1 引言
在自然界中各种生物群体显现出来的智能近几十年来得到了学者们的广泛关注,学者们通过对简单生物体的群体行为进行模拟,进而提出了群智能算法。其中, 模拟蚁群觅食过程的蚁群优化算法(Ant
Colony Optimization, A CO) 和模拟鸟群运动方式的粒子群算法(ParticleS warm Optimization,PSO) 是两种最主要的群智能算法。
蚁群算法是一种源于大自然生物世界的新的仿生进化算法,由意大利学者M.Dorigo, V.Mani ezzo和A.Color ni等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径行为而提出的一种基于种群的启发式随机搜索算法[1].蚂蚁有能力在没有任何提示的情形下找到从巢穴到食物源的最短路径,并且能随环境的变化,适应性地搜索新的路径,产生新的选择。其根本原因是蚂蚁在寻找食物时,能在其走过的路径上释放一种特殊的分泌物――信息素2,随着时间的推移该物质会逐渐挥发,后来的蚂蚁选择该路径的概率与当时这条路径上信息素的强度成正比。当一条路径上通过的蚂蚁越来越时,其留下的信息素也越来越多,后来蚂蚁选择该路径的概率也就越高,从而更增加了该路径上的信息素强度。而强度大的信息素会吸引更多的蚂蚁,从而形成一种正反馈机制。通过这种正反馈机制,蚂蚁最终可以发现最短路径。
最早的蚁群算法是蚂蚁系统(Ant System, AS) , 研究者们根据不同的改进策略对蚂蚁系统进行改进并开发了不同版本的蚁群算法,并成功地应用于优化领域。用该方法求解旅行商(TSP) 问题、分配问
题、车间作业调度(job-shop) 问题, 取得了较好的试验结果[3-6] 。蚁群算法具有分布式计算、无中心控制和分布式个体之间间接通信等特征,易于与其他优化算法相结合,它通过简单个体之间的协作表现出了求解复杂问题的能力,已被广泛应用于求解优化问题。蚁群算法相对而言易于实现,且算法中并不涉及复杂的数学操作,其处理过程对计算机的软硬件要求也不高,因此对它的研究在理论和实践中都具有重要的意义。
目前,国内外的许多研究者和研究机构都开展了对蚁群算法理论和应用的研究,蚁群算法已成为国际计算智能领域关注的热点课题。虽然目前蚁群算法没有形成严格的理论基础,但其作为一种新兴的进
化算法已在智能优化等领域表现出了强大的生命力。

2 蚁群算法理论
蚁群算法是对自然界蚂蚁的寻径方式进行模拟而得出的一种仿生算法。蚂蚁在运动过程中,能够在它所经过的路径上留下信息素进行信息传递,而且蚂蚁在运动过程中能够感知这种物质,并以此来指导
自己的运动方向。因此,由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大[7]。
2.1真实蚁群的觅食过程
为了说明蚁群算法的原理,先简要介绍一下蚂蚁搜寻食物的具体过程。在自然界中,蚁群在寻找食物时,它们总能找到一条从食物到巢穴之间的最优路径。这是因为蚂蚁在寻找路径时会在路径上释放出
一种特殊的信息素。蚁群算法的信息交互主要是通过信息素来完成的。蚂蚁在运动过程中,能够感知这种物质的存在和强度。初始阶段,环境中没有信息素的遗留,蚂蚁寻找事物完全是随机选择路径,
随后寻找该事物源的过程中就会受到先前蚂蚁所残留的信息素的影响,其表现为蚂蚁在选择路径时趋向于选择信息素浓度高的路径。同时,信息素是一种挥发性化学物,会随着时间的推移而慢慢地消逝。如果每只蚂蚁在单位距离留下的信息素相同,那对于较短路径上残留的信息素浓度就相对较高,这被后来的蚂蚁选择的概率就大,从而导致这条短路径上走的蚂蚁就越多。而经过的蚂蚁越多,该路径上残留的信息素就将更多,这样使得整个蚂蚁的集体行为构成了信息素的正反馈过程,最终整个蚁群会找出最优路径。
若蚂蚁从A点出发,速度相同,食物在D点,则它可能随机选择路线ABD或A CD。假设初始时每条路线分配一只蚂蚁, 每个时间单位行走一步。图5.1所示为经过8个时间单位时的情形:走路线ABD的蚂蚁到达终点:而走路线A CD的蚂蚁刚好走到C点, 为一半路程。
在这里插入图片描述
图5.2表示从开始算起, 经过16个时间单位时的情形:走路线ABD的蚂蚁到达终点后得到食物又返回了起点A,而走路线A CD的蚂蚁刚好走到D点.
在这里插入图片描述
图5.2蚂蚁出发后经过16个时间单位时的情形
假设蚂蚁每经过一处所留下的信息素为1个单位,则经过32个时间单位后,所有开始一起出发的蚂蚁都经过不同路径从D点取得了食物。此时ABD的路线往返了2趟, 每一处的信息素为4个单位; 而A CD的路线往返了一趟,每一处的信息素为2个单位,其比值为2:1。
寻找食物的过程继续进行, 则按信息素的指导, 蚁群在ABD路线上增派一只蚂蚁(共2只) , 而A CD路线上仍然为一只蚂蚁。再经过32个时间单位后,两条线路上的信息素单位积累为12和4,比值为3:1。若按以上规则继续, 蚁群在ABD路线上再增派一只蚂蚁(共3只) , 而A CD路线上仍然为一只蚂蚁。再经过32个时间单位后, 两条线路上的信息素单位积累为24和6,比值为4:1.若继续进行, 则按信息素的指导, 最终所有的蚂蚁都会放弃A CD路线, 而选择ABD路线。这也就是前面所提到的正反馈效应。

2.2人工蚁群的优化过程
基于以上真实蚁群寻找食物时的最优路径选择问题,可以构造人工蚁群, 来解决最优化问题, 如TSP问题。人工蚁群中把具有简单功能的工作单元看作蚂蚁。二者的相似之处在于都是优先选择信息素浓度大的路径。较短路径的信息素浓度高,所以能够最终被所有蚂蚁选择,也就是最终的优化结果。两者的区别在于人工蚁群有一定的记忆能力,能够记忆已经访问过的节点。同时,人工蚁群再选择下一条路径的时候是按一定算法规律有意识地寻找最短路径,而不是盲目的。例如在TSP问题中, 可以预先知道当前城市到下一个目的地的距离。在TSP问题的人工蚁群算法中, 假设m只蚂蚁在图的相邻节点间移动,从而协作异步地得到问题的解。每只蚂蚁的一步转移概率由图中的每条边上的两类参数决定:一是信息素值,也称信息素痕迹:二是可见度,即先验值。
信息素的更新方式有两种:一是挥发,也就是所有路径上的信息素以一定的比率减少,模拟自然蚁群的信息素随时间挥发的过程;二是增强,给评价值“好”(有蚂蚁走过)的边增加信息素。蚂蚁向下一个目标的运动是通过一个随机原则来实现的,也就是运用当前所在节点存储的信息,计算出下一步可达节点的概率,并按此概率实现一步移动,如此往复,越来越接近最优解。蚂蚁在寻找过程中,或在找到一个解后,会评估该解或解的一部分的优化程度,并把评价信息保存在相关连接的信息素中。

2.3真实蚂蚁与人工蚂蚁的异同
蚁群算法是一种基于群体的、用于求解复杂优化问题的通用搜索技术。与真实蚂蚁通过外信息的留存、跟随行为进行间接通信相似,蚁群算法中一群简单的人工蚂蚁通过信息素进行间接通信,并利用该信息和与问题相关的启发式信息逐步构造问题的解。
人工蚂蚁具有双重特性:一方面,它们是真实蚂蚁的抽象,具有真实蚂蚁的特性:另一方面,它们还有一些真实蚂蚁没有的特性,这些新的特性使人工蚂蚁在解决实际优化问题时,具有更好地搜索较优解的能力。
人工蚂蚁与真实蚂蚁的相同点为:
(1)都是一群相互协作的个体。与真实蚁群一样,蚁群算法由一群人工蚂蚁组成,人工蚂蚁之间通过同步/异步协作来寻找问题的最优解。虽然单只人工蚂蚁可以构造出问题的解,但只有当多只人工蚂蚁
通过相互协作,才能发现问题的最优(次优)解。人工蚂蚁个体间通过写/读问题的状态变量来进行协作。
(2)都使用信息素的迹和蒸发机制。如真实蚂蚁一样,人工蚂蚁通过改变所访问过的问题的数字状态信息来进行间接的协作。在蚁群算法中,信息素是人工蚂蚁之间进行交流的唯一途径。这种通信方式在群体知识的利用上起到了至关重要的作用。另外,蚁群算法还用到了蒸发机制,这一点对应于真实蚂蚁中信息素的蒸发现象。蒸发机制使蚁群逐渐忘记过去的历史,使后来的蚂蚁在搜索中较少受到过去较差解的影响,从而更好地指导蚂蚁的搜索方向。
(3)搜索最短路径与局部移动。人工蚂蚁和真实蚂蚁具有相同的任务,即以局部移动的方式构造出从原点(蚁巢)到目的点(食物源)之间的最短路径。
(4)随机状态转移策略。人工蚂蚁和真实蚂蚁都按照概率决策规则从一种状态转移到另一种相邻状态。其中的概率决策规则是与问题相关的信息和局部环境信息的函数。在状态转移过程中,人工蚂蚁和
真实蚂蚁都只用到了局部信息,没有使用前瞻策略来预见将来的状态。
人工蚂蚁和真实蚂蚁的不同点为:
(1)人工蚂蚁生活在离散的时间,从一种离散状态到另一种离散状态。
(2)人工蚂蚁具有内部状态,即人工蚂蚁具有一定的记忆能力,能记住自己走过的地方。
(3)人工蚂蚁释放信息素的数量是其生成解的质量的函数。
(4)人工蚂蚁更新信息素的时机依赖于特定的问题。例如,大多数人工蚂蚁仅仅在蚂蚁找到一个解之后才更新路径上的信息素。

2.4蚁群算法的特点
蚁群算法是通过对生物特征的模拟得到的一种优化算法,它本身具有很多优点:
(1)蚁群算法是一种本质上的并行算法。每只蚂蚁搜索的过程彼此独立,仅通过信息激素进行通信。所以蚁群算法可以看作一个分布式的多智能体系统,它在问题空间的多点同时开始独立的解搜索,不仅增加了算法的可靠性,也使得算法具有较强的全局搜索能力。
(2)蚁群算法是一种自组织的算法。所谓自组织,就是组织力或组织指令来自于系统的内部,以区别于其他组织。如果系统在获得空间、时间或者功能结构的过程中,没有外界的特定干预,就可以说系统是自组织的。简单地说,自组织就是系统从无序到有序的变化过程。
(3)蚁群算法具有较强的鲁棒性。相对于其他算法,蚁群算法对初始路线的要求不高,即蚁群算法的求解结果不依赖于初始路线的选择,而且在搜索过程中不需要进行人工的调整。此外,蚁群算法的参
数较少,设置简单,因而该算法易于应用到组合优化问题的求解。
(4)蚁群算法是一种正反馈算法。从真实蚂蚁的觅食过程中不难看出,蚂蚁能够最终找到最优路径,直接依赖于其在路径上信息素的堆积,而信息素的堆积是一个正反馈的过程。正反馈是蚁群算法的重
要特征,它使得算法进化过程得以进行。

3 基本蚁群算法及其流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4 改进的蚁群算法
针对基本蚁群算法一般需要较长的搜索时间和容易出现停滞现象等不足,很多学者在此基础上提出改进算法,提高了算法的性能和效率。
4.1精英蚂蚁系统
在这里插入图片描述
4.2 最大最小蚂蚁系统
为了克服基本蚁群系统中可能出现的停滞现象, Thomas Stutz le等人提出了最大-最小(MAX-MIN) 蚁群系统[10] , 主要有三方面的不同:
(1)与蚁群系统相似,为了充分利用循环最优解和目前为止找出的最优解,在每次循环之后,只有一只蚂蚁进行信息素更新。这只蚂蚁可能是找出当前循环中最优解的蚂蚁(迭代最优的蚂蚁),也可能是找出从实验开始以来最优解的蚂蚁(全局最优的蚂蚁);而在蚂蚁系统中,对所有蚂蚁走过的路径都进行信息素更新。
(2) 为避免搜索的停滞, 在每个解元素(TSP中是每条边) 上的信息素轨迹量的值域范围被限制在[min,Tmax] 区间内; 而在蚂蚁系统中信息素轨迹量不被限制,使得一些路径上的轨迹量远高于其他边,从而蚂蚁都沿着同条路径移动,阻止了进一步搜索更优解的行为。
(3)为使蚂蚁在算法的初始阶段能够更多地搜索新的解决方案,将信息素初始化为tmax;而在蚂蚁系统中没有这样的设置。

4.3基于排序的蚁群算法
基于排序的蚁群算法(Rank-BasedAntSystem)是Bull n heimer、Hartl和Strauss等人提出的[11] 。在该算法中, 每个蚂蚁释放的信息素按照它们不同的等级进行挥发,另外类似于精英蚁群算法,精英蚂蚁在每次循环中释放更多的信息素。在修改信息素路径前,蚂蚁按照它们的旅行长度进行排名(短的靠前),蚂蚁释放信息素的量要和蚂蚁的排名相乘。在每次循环中,只有排名前w-1位的蚂蚁和精英蚂蚁才允许在路径上释放信息素。己知的最优路径给以最强的反馈,和系数w相乘;而排名第r位的蚂蚁则乘以系数“w-(≥0)。信息素如下式所示:
在这里插入图片描述
4.4自适应蚁群算法
基本蚁群系统让信息量最大的路径对每次路径的选择和信息量的更新起主要作用,但由于强化了最优信息反馈,就可能导致“早熟”停滞现象。而最大最小蚁群算法将各个路径上的信息量的更新限定在固定的范围内,这虽然在一定程度上避免了“早熟”停滞现象,但在解分布较分散时会导致收敛速度变慢。以上方法的共同缺点在于:它们都按一种固定不变的模式去更新信息量和确定每次路径的选
择概率。
为了克服以上算法的不足, L.M.Gambardella和M.Dorigo提出了基于调节信息素挥发度的自适应蚁群算法[12]。相对基本蚁群算法的改进如下:
(1)在每次循环结束后求出最优解,并将其保留。
(2)自适应地改变p值。当问题规模比较大时,由于信息量的挥发系数p的存在,使那些从未被搜索到的信息量会减小到接近于0,降低了算法的全局搜索能力;当p过大且解的信息量增大时,以前搜索过的解被选择的可能性过大,也会影响到算法的全局搜索能力;通过减小p虽然可以提高算法的全局搜索能力,但又会使算法的收敛速度降低。因此可以自适应地改变p的值。p的初始值p(to)=1;当算法求得的最优值在N次循环内没有明显改进时,p减为:
在这里插入图片描述
5 关键参数说明
在蚁群算法中,不仅信息素和启发函数乘积以及蚂蚁之间的合作行为会严重影响到算法的收敛性,蚁群算法的参数也是影响其求解性能和效率的关键因素。信息素启发式因子α、期望启发因子β、信息
素蒸发系数p、信息素强度Q、蚂蚁数目m等都是非常重要的参数,其选取方法和选取原则直接影响到蚁群算法的全局收敛性和求解效率。
信息素启发式因子a
信息素启发式因子a代表信息量对是否选择当前路径的影响程度,即反映蚂蚁在运动过程中所积累的信息量在指导蚁群搜索中的相对重要程度。a的大小反映了蚁群在路径搜索中随机性因素作用的强度,其值越大,蚂蚁在选择以前走过的路径的可能性就越大,搜索的随机性就会减弱;而当启发式因子a的值过小时,则易使蚁群的搜索过早陷于局部最优。根据经验,信息素启发式因子a取值范围一般为[1,4]时,蚁群算法的综合求解性能较好。
期望启发因子β
期望启发因子β表示在搜索时路径上的信息素在指导蚂蚁选择路径时的向导性,它的大小反映了蚁群在搜索最优路径的过程中的先验性和确定性因素的作用强度。期望启发因子β的值越大,蚂蚁在某个局部点上选择局部最短路径的可能性就越大,虽然这个时候算法的收敛速度得以加快,但蚁群搜索最优路径的随机性减弱,而此时搜索易于陷入局部最优解。根据经验,期望启发因子β取值范围一般为[3,
5],此时蚁群算法的综合求解性能较好。实际上,信息素启发式因子α和期望启发因子β是一对关联性很强的参数:蚁群算法的全局寻优性能,首先要求蚁群的搜索过程必须要有很强的随机性;而蚁群算法的快速收敛性能,又要求蚁群的搜索过程必须要有较高的确定性。因此,两者对蚁群算法性能的影响和作用是相互配合、密切相关的,算法要获得最优解,就必须在这二者之间选取一个平衡点,只有正确选定它们之间的搭配关系,才能避免在搜索过程中出现过早停滞或陷入局部最优等情况的发生。
信息素蒸发系数p
蚁群算法中的人工蚂蚁是具有记忆功能的,随着时间的推移,以前留下的信息素将会逐渐消逝,蚁群算法与其他各种仿生进化算法一样,也存在着收敛速度慢、容易陷入局部最优解等缺陷,而信息素蒸
发系数p大小的选择将直接影响到整个蚁群算法的收敛速度和全局搜索性能。在蚁群算法的抽象模型中,p表示信息素蒸发系数,1-p则表示信息素持久性系数。因此,p的取值范围应该是0~1之间的一个
数,表示信息素的蒸发程度,它实际上反映了蚂蚁群体中个体之间相互影响的强弱。p过小时,则表示以前搜索过的路径被再次选择的可能性过大,会影响到算法的随机性能和全局搜索能力:p过大时,说
明路径上的信息素挥发的相对变多,虽然可以提高算法的随机搜索性能和全局搜索能力,但过多无用搜索操作势必会降低算法的收敛速度。
蚂蚁数目m
蚁群算法是一种随机搜索算法,与其他模拟进化算法一样,通过多个候选解组成的群体进化过程来寻求最优解,在该过程中不仅需要每个个体的自适应能力,更需要群体之间的相互协作能力。蚁群在搜
索过程中之所以表现出复杂有序的行为,是因为个体之间的信息交流与相互协作起着至关重要的作用。
对于旅行商问题,单个蚂蚁在一次循环中所经过的路径,表现为问题可行解集中的一个解,m只蚂蚁在一次循环中所经过的路径,则表现为问题解集中的一个子集。显然,子集增大(即蚂蚁数量增多),可以提高蚁群算法的全局搜索能力以及算法的稳定性;但蚂蚁数目增大后,会使大量的曾被搜索过的解(路径)上的信息素的变化趋于平均,信息正反馈的作用不明显,虽然搜索的随机性得到了加强,但收敛速度减慢;反之,子集较小(蚂蚁数量少),特别是当要处理的问题规模比较大时,会使那些从来未被搜索到的解(路径)上的信息素减小到接近于0,搜索的随机性减弱,虽然收敛速度加快了,但会使算法的全局性能降低,算法的稳定性差,容易出现过早停滞现象。m一般取10~50.
信息素强度Q对算法性能的影响
在蚁群算法中,各个参数的作用实际上是紧密联系的,其中对算法性能起着主要作用的是信息启发式因子α、期望启发式因子β和信息素挥发因子p这三个参数,总信息量(对算法性能的影响有赖于上述三个参数的选取, 以及算法模型的选取。例如, 在ant-cycle模型和ant-quantity模型中, 总信息量4所起的作用显然是有很大差异的, 即随着问题规模的不同,其影响程度也将不同。相关人员研究结果表
明:总信息量Q对ant-cycle模型蚁群算法的性能没有明显的影响。因此,在算法参数的选择上,参数Q不必作特别的考虑,可以任意选取。
最大进化代数G
最大进化代数6是表示蚁群算法运行结束条件的一个参数,表示蚁群算法运行到指定的进化代数之后就停止运行,并将当前群体中的最佳个体作为所求问题的最优解输出。一般6取100~500。

⛄三、部分源代码

function varargout = TspACA(varargin)
%TSPACA M-file for TspACA.fig
% TSPACA, by itself, creates a new TSPACA or raises the existing
% singleton*.
%
% H = TSPACA returns the handle to a new TSPACA or the handle to
% the existing singleton*.
%
% TSPACA(‘Property’,‘Value’,…) creates a new TSPACA using the
% given property value pairs. Unrecognized properties are passed via
% varargin to TspACA_OpeningFcn. This calling syntax produces a
% warning when there is an existing singleton*.
%
% TSPACA(‘CALLBACK’) and TSPACA(‘CALLBACK’,hObject,…) call the
% local function named CALLBACK in TSPACA.M with the given input
% arguments.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help TspACA

% Last Modified by GUIDE v2.5 18-Mar-2021 19:19:03

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @TspACA_OpeningFcn, …
‘gui_OutputFcn’, @TspACA_OutputFcn, …
‘gui_LayoutFcn’, [], …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% — Executes just before TspACA is made visible.
function TspACA_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin unrecognized PropertyName/PropertyValue pairs from the
% command line (see VARARGIN)

% Choose default command line output for TspACA
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes TspACA wait for user response (see UIRESUME)
% uiwait(handles.figure1);

global AntsCod
global bContinue
global Change
bContinue = 0;
Change =0;
CityNum = str2num(get(handles.CityNumber,‘String’));
AntsCod =round(100*rand(CityNum,2));
%if MapIndex == 1
%AntsCod(:,1) = (unidrnd(100,1,CityNum) - 1)‘;
%AntsCod(:,2) = (unidrnd(100,1,CityNum) - 1)’;
plot(AntsCod(:,1),AntsCod(:,2),‘mo’,‘LineWidth’,1.5,‘MarkerEdgeColor’,‘r’,‘MarkerFaceColor’,‘b’,‘Parent’,handles.CityMap);

% — Outputs from this function are returned to the command line.
function varargout = TspACA_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

function CityNumber_Callback(hObject, eventdata, handles)
% hObject handle to CityNumber (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of CityNumber as text
% str2double(get(hObject,‘String’)) returns contents of CityNumber as a double

% — Executes during object creation, after setting all properties.
function CityNumber_CreateFcn(hObject, eventdata, handles)
% hObject handle to CityNumber (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

function MaxIteration_Callback(hObject, eventdata, handles)
% hObject handle to MaxIteration (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of MaxIteration as text
% str2double(get(hObject,‘String’)) returns contents of MaxIteration as a double

% — Executes during object creation, after setting all properties.
function MaxIteration_CreateFcn(hObject, eventdata, handles)
% hObject handle to MaxIteration (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

function AntNum_Callback(hObject, eventdata, handles)
% hObject handle to AntNum (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of AntNum as text
% str2double(get(hObject,‘String’)) returns contents of AntNum as a double

% — Executes during object creation, after setting all properties.
function AntNum_CreateFcn(hObject, eventdata, handles)
% hObject handle to AntNum (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

function PhoromCoe_Callback(hObject, eventdata, handles)
% hObject handle to PhoromCoe (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of PhoromCoe as text
% str2double(get(hObject,‘String’)) returns contents of PhoromCoe as a double

% — Executes during object creation, after setting all properties.
function PhoromCoe_CreateFcn(hObject, eventdata, handles)
% hObject handle to PhoromCoe (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

function PhoromEvap_Callback(hObject, eventdata, handles)
% hObject handle to PhoromEvap (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of PhoromEvap as text
% str2double(get(hObject,‘String’)) returns contents of PhoromEvap as a double

% — Executes during object creation, after setting all properties.
function PhoromEvap_CreateFcn(hObject, eventdata, handles)
% hObject handle to PhoromEvap (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

function Q_Callback(hObject, eventdata, handles)
% hObject handle to Q (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of Q as text
% str2double(get(hObject,‘String’)) returns contents of Q as a double

⛄四、运行结果

在这里插入图片描述

⛄五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]胡纯德,祝延军,高随祥.基于人工免疫算法和蚁群算法求解旅行商问题[J].计算机工程与应用. 2004,(34)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用

1.1 PID优化
1.2 VMD优化
1.3 配电网重构
1.4 三维装箱
1.5 微电网优化
1.6 优化布局
1.7 优化参数
1.8 优化成本
1.9 优化充电
1.10 优化调度
1.11 优化电价
1.12 优化发车
1.13 优化分配
1.14 优化覆盖
1.15 优化控制
1.16 优化库存
1.17 优化路由
1.18 优化设计
1.19 优化位置
1.20 优化吸波
1.21 优化选址
1.22 优化运行
1.23 优化指派
1.24 优化组合
1.25 车间调度
1.26 生产调度
1.27 经济调度
1.28 装配线调度
1.29 水库调度
1.30 货位优化
1.31 公交排班优化
1.32 集装箱船配载优化
1.33 水泵组合优化
1.34 医疗资源分配优化
1.35 可视域基站和无人机选址优化

2 机器学习和深度学习分类与预测
2.1 机器学习和深度学习分类
2.1.1 BiLSTM双向长短时记忆神经网络分类
2.1.2 BP神经网络分类
2.1.3 CNN卷积神经网络分类
2.1.4 DBN深度置信网络分类
2.1.5 DELM深度学习极限学习机分类
2.1.6 ELMAN递归神经网络分类
2.1.7 ELM极限学习机分类
2.1.8 GRNN广义回归神经网络分类
2.1.9 GRU门控循环单元分类
2.1.10 KELM混合核极限学习机分类
2.1.11 KNN分类
2.1.12 LSSVM最小二乘法支持向量机分类
2.1.13 LSTM长短时记忆网络分类
2.1.14 MLP全连接神经网络分类
2.1.15 PNN概率神经网络分类
2.1.16 RELM鲁棒极限学习机分类
2.1.17 RF随机森林分类
2.1.18 SCN随机配置网络模型分类
2.1.19 SVM支持向量机分类
2.1.20 XGBOOST分类

2.2 机器学习和深度学习预测
2.2.1 ANFIS自适应模糊神经网络预测
2.2.2 ANN人工神经网络预测
2.2.3 ARMA自回归滑动平均模型预测
2.2.4 BF粒子滤波预测
2.2.5 BiLSTM双向长短时记忆神经网络预测
2.2.6 BLS宽度学习神经网络预测
2.2.7 BP神经网络预测
2.2.8 CNN卷积神经网络预测
2.2.9 DBN深度置信网络预测
2.2.10 DELM深度学习极限学习机预测
2.2.11 DKELM回归预测
2.2.12 ELMAN递归神经网络预测
2.2.13 ELM极限学习机预测
2.2.14 ESN回声状态网络预测
2.2.15 FNN前馈神经网络预测
2.2.16 GMDN预测
2.2.17 GMM高斯混合模型预测
2.2.18 GRNN广义回归神经网络预测
2.2.19 GRU门控循环单元预测
2.2.20 KELM混合核极限学习机预测
2.2.21 LMS最小均方算法预测
2.2.22 LSSVM最小二乘法支持向量机预测
2.2.23 LSTM长短时记忆网络预测
2.2.24 RBF径向基函数神经网络预测
2.2.25 RELM鲁棒极限学习机预测
2.2.26 RF随机森林预测
2.2.27 RNN循环神经网络预测
2.2.28 RVM相关向量机预测
2.2.29 SVM支持向量机预测
2.2.30 TCN时间卷积神经网络预测
2.2.31 XGBoost回归预测
2.2.32 模糊预测
2.2.33 奇异谱分析方法SSA时间序列预测

2.3 机器学习和深度学习实际应用预测
CPI指数预测、PM2.5浓度预测、SOC预测、财务预警预测、产量预测、车位预测、虫情预测、带钢厚度预测、电池健康状态预测、电力负荷预测、房价预测、腐蚀率预测、故障诊断预测、光伏功率预测、轨迹预测、航空发动机寿命预测、汇率预测、混凝土强度预测、加热炉炉温预测、价格预测、交通流预测、居民消费指数预测、空气质量预测、粮食温度预测、气温预测、清水值预测、失业率预测、用电量预测、运输量预测、制造业采购经理指数预测

3 图像处理方面
3.1 图像边缘检测
3.2 图像处理
3.3 图像分割
3.4 图像分类
3.5 图像跟踪
3.6 图像加密解密
3.7 图像检索
3.8 图像配准
3.9 图像拼接
3.10 图像评价
3.11 图像去噪
3.12 图像融合
3.13 图像识别
3.13.1 表盘识别
3.13.2 车道线识别
3.13.3 车辆计数
3.13.4 车辆识别
3.13.5 车牌识别
3.13.6 车位识别
3.13.7 尺寸检测
3.13.8 答题卡识别
3.13.9 电器识别
3.13.10 跌倒检测
3.13.11 动物识别
3.13.12 二维码识别
3.13.13 发票识别
3.13.14 服装识别
3.13.15 汉字识别
3.13.16 红绿灯识别
3.13.17 虹膜识别
3.13.18 火灾检测
3.13.19 疾病分类
3.13.20 交通标志识别
3.13.21 卡号识别
3.13.22 口罩识别
3.13.23 裂缝识别
3.13.24 目标跟踪
3.13.25 疲劳检测
3.13.26 旗帜识别
3.13.27 青草识别
3.13.28 人脸识别
3.13.29 人民币识别
3.13.30 身份证识别
3.13.31 手势识别
3.13.32 数字字母识别
3.13.33 手掌识别
3.13.34 树叶识别
3.13.35 水果识别
3.13.36 条形码识别
3.13.37 温度检测
3.13.38 瑕疵检测
3.13.39 芯片检测
3.13.40 行为识别
3.13.41 验证码识别
3.13.42 药材识别
3.13.43 硬币识别
3.13.44 邮政编码识别
3.13.45 纸牌识别
3.13.46 指纹识别

3.14 图像修复
3.15 图像压缩
3.16 图像隐写
3.17 图像增强
3.18 图像重建

4 路径规划方面
4.1 旅行商问题(TSP)
4.1.1 单旅行商问题(TSP)
4.1.2 多旅行商问题(MTSP)
4.2 车辆路径问题(VRP)
4.2.1 车辆路径问题(VRP)
4.2.2 带容量的车辆路径问题(CVRP)
4.2.3 带容量+时间窗+距离车辆路径问题(DCTWVRP)
4.2.4 带容量+距离车辆路径问题(DCVRP)
4.2.5 带距离的车辆路径问题(DVRP)
4.2.6 带充电站+时间窗车辆路径问题(ETWVRP)
4.2.3 带多种容量的车辆路径问题(MCVRP)
4.2.4 带距离的多车辆路径问题(MDVRP)
4.2.5 同时取送货的车辆路径问题(SDVRP)
4.2.6 带时间窗+容量的车辆路径问题(TWCVRP)
4.2.6 带时间窗的车辆路径问题(TWVRP)
4.3 多式联运运输问题

4.4 机器人路径规划
4.4.1 避障路径规划
4.4.2 迷宫路径规划
4.4.3 栅格地图路径规划

4.5 配送路径规划
4.5.1 冷链配送路径规划
4.5.2 外卖配送路径规划
4.5.3 口罩配送路径规划
4.5.4 药品配送路径规划
4.5.5 含充电站配送路径规划
4.5.6 连锁超市配送路径规划
4.5.7 车辆协同无人机配送路径规划

4.6 无人机路径规划
4.6.1 飞行器仿真
4.6.2 无人机飞行作业
4.6.3 无人机轨迹跟踪
4.6.4 无人机集群仿真
4.6.5 无人机三维路径规划
4.6.6 无人机编队
4.6.7 无人机协同任务
4.6.8 无人机任务分配

5 语音处理
5.1 语音情感识别
5.2 声源定位
5.3 特征提取
5.4 语音编码
5.5 语音处理
5.6 语音分离
5.7 语音分析
5.8 语音合成
5.9 语音加密
5.10 语音去噪
5.11 语音识别
5.12 语音压缩
5.13 语音隐藏

6 元胞自动机方面
6.1 元胞自动机病毒仿真
6.2 元胞自动机城市规划
6.3 元胞自动机交通流
6.4 元胞自动机气体
6.5 元胞自动机人员疏散
6.6 元胞自动机森林火灾
6.7 元胞自动机生命游戏

7 信号处理方面
7.1 故障信号诊断分析
7.1.1 齿轮损伤识别
7.1.2 异步电机转子断条故障诊断
7.1.3 滚动体内外圈故障诊断分析
7.1.4 电机故障诊断分析
7.1.5 轴承故障诊断分析
7.1.6 齿轮箱故障诊断分析
7.1.7 三相逆变器故障诊断分析
7.1.8 柴油机故障诊断

7.2 雷达通信
7.2.1 FMCW仿真
7.2.2 GPS抗干扰
7.2.3 雷达LFM
7.2.4 雷达MIMO
7.2.5 雷达测角
7.2.6 雷达成像
7.2.7 雷达定位
7.2.8 雷达回波
7.2.9 雷达检测
7.2.10 雷达数字信号处理
7.2.11 雷达通信
7.2.12 雷达相控阵
7.2.13 雷达信号分析
7.2.14 雷达预警
7.2.15 雷达脉冲压缩
7.2.16 天线方向图
7.2.17 雷达杂波仿真

7.3 生物电信号
7.3.1 肌电信号EMG
7.3.2 脑电信号EEG
7.3.3 心电信号ECG
7.3.4 心脏仿真

7.4 通信系统
7.4.1 DOA估计
7.4.2 LEACH协议
7.4.3 编码译码
7.4.4 变分模态分解
7.4.5 超宽带仿真
7.4.6 多径衰落仿真
7.4.7 蜂窝网络
7.4.8 管道泄漏
7.4.9 经验模态分解
7.4.10 滤波器设计
7.4.11 模拟信号传输
7.4.12 模拟信号调制
7.4.13 数字基带信号
7.4.14 数字信道
7.4.15 数字信号处理
7.4.16 数字信号传输
7.4.17 数字信号去噪
7.4.18 水声通信
7.4.19 通信仿真
7.4.20 无线传输
7.4.21 误码率仿真
7.4.22 现代通信
7.4.23 信道估计
7.4.24 信号检测
7.4.25 信号融合
7.4.26 信号识别
7.4.27 压缩感知
7.4.28 噪声仿真
7.4.29 噪声干扰

7.5 无人机通信

7.6 无线传感器定位及布局方面
7.6.1 WSN定位
7.6.2 高度预估
7.6.3 滤波跟踪
7.6.4 目标定位
7.6.4.1 Dv-Hop定位
7.6.4.2 RSSI定位
7.6.4.3 智能算法优化定位
7.6.5 组合导航

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子群算法(PSO)和蚁群算法ACO)是两种常用的启发式算法,可以用于解决旅行商问题TSP问题)。 在粒子群算法中,假设有一群粒子在解空间中搜索最优解,每个粒子代表一种解。粒子具有位置和速度,通过更新位置和速度,粒子可以选择性地探索和利用已知的好解。在TSP问题中,每个粒子的位置表示访问各个城市的顺序,速度表示每次迭代改变位置的变化。通过迭代更新,最终找到较好的解。 蚁群算法是受到蚂蚁觅食行为的启发,模拟了蚂蚁在搜索食物时留下信息素、遵循信息素和路径长度的度量等行为。在TSP问题中,每只蚂蚁随机选择下一座城市,并在路径上释放信息素。信息素浓度越高的路径越有可能被其他蚂蚁选中。通过迭代更新信息素浓度和蚂蚁的路径选择,最终找到较好的解。 在20个城市的TSP问题中,可以按照以下步骤使用粒子群算法或蚁群算法求解: 1. 根据粒子群算法或蚁群算法的要求,初始化一群粒子或蚂蚁的位置和速度,使得每个粒子或蚂蚁代表一个城市。 2. 计算每个粒子或蚂蚁的适应度(路径长度),并记录当前最优的解。 3. 根据算法的规则和策略,更新粒子或蚂蚁的位置和速度。 4. 判断是否满足终止条件,如达到指定迭代次数或找到可接受的最优解。 5. 如果终止条件未满足,返回步骤2;否则输出最优解。 需要注意的是,具体的算法参数和策略设置会对求解结果产生影响,可以根据实际情况进行调整和优化。同时,由于粒子群算法和蚁群算法都是启发式算法,无法保证找到全局最优解,只能找到较优的解。因此,在求解TSP问题时,可能需要运行多次算法并选择最优的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值