
欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab优化求解仿真内容点击①Matlab优化求解 进阶版②付费专栏Matlab优化求解初级版⛳️关注CSDN海神之光更多资源等你来⛄一、蚁群算法简介1 引言在自然界中各种生物群体显现出来的智能近几十年来得到了学者们的广泛关注学者们通过对简单生物体的群体行为进行模拟进而提出了群智能算法。其中 模拟蚁群觅食过程的蚁群优化算法(AntColony Optimization A CO) 和模拟鸟群运动方式的粒子群算法(ParticleS warm OptimizationPSO) 是两种最主要的群智能算法。蚁群算法是一种源于大自然生物世界的新的仿生进化算法由意大利学者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个单位其比值为21。寻找食物的过程继续进行 则按信息素的指导 蚁群在ABD路线上增派一只蚂蚁(共2只) 而A CD路线上仍然为一只蚂蚁。再经过32个时间单位后两条线路上的信息素单位积累为12和4比值为31。若按以上规则继续 蚁群在ABD路线上再增派一只蚂蚁(共3只) 而A CD路线上仍然为一只蚂蚁。再经过32个时间单位后 两条线路上的信息素单位积累为24和6比值为41.若继续进行 则按信息素的指导 最终所有的蚂蚁都会放弃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中是每条边) 上的信息素轨迹量的值域范围被限制在[minTmax] 区间内 而在蚂蚁系统中信息素轨迹量不被限制使得一些路径上的轨迹量远高于其他边从而蚂蚁都沿着同条路径移动阻止了进一步搜索更优解的行为。(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取值范围一般为[14]时蚁群算法的综合求解性能较好。期望启发因子β期望启发因子β表示在搜索时路径上的信息素在指导蚂蚁选择路径时的向导性它的大小反映了蚁群在搜索最优路径的过程中的先验性和确定性因素的作用强度。期望启发因子β的值越大蚂蚁在某个局部点上选择局部最短路径的可能性就越大虽然这个时候算法的收敛速度得以加快但蚁群搜索最优路径的随机性减弱而此时搜索易于陷入局部最优解。根据经验期望启发因子β取值范围一般为[35]此时蚁群算法的综合求解性能较好。实际上信息素启发式因子α和期望启发因子β是一对关联性很强的参数蚁群算法的全局寻优性能首先要求蚁群的搜索过程必须要有很强的随机性而蚁群算法的快速收敛性能又要求蚁群的搜索过程必须要有较高的确定性。因此两者对蚁群算法性能的影响和作用是相互配合、密切相关的算法要获得最优解就必须在这二者之间选取一个平衡点只有正确选定它们之间的搭配关系才能避免在搜索过程中出现过早停滞或陷入局部最优等情况的发生。信息素蒸发系数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 [bestroute,routelength]Antclccleartic% 读入城市间距离矩阵数据文件CooCity load( ‘CooCity.txt’ ) ;% 城市网络图坐标数据文件txt形式给出NClength(CooCity); % 城市个数for i1:NC % 计算各城市间的距离for j1:NCdistance(i,j)sqrt((CooCity(i,2)-CooCity(j,2))2(CooCity(i,3)-CooCity(j,3))2);endend% distancexlsread(‘DistanceCity.xls’); % 城市间距离矩阵数据文件excel形式给出MAXIT10; % 最大循环次数Citystart[]; % 起点城市编号tauones(NC,NC); % 初始时刻各边上的信息痕迹为1rho0.5; % 挥发系数alpha1; % 残留信息相对重要度beta5; % 预见值的相对重要度Q10; % 蚁环常数NumAnt20; % 蚂蚁数量%bestroutezeros(1,48); % 用来记录最优路径routelengthinf; % 用来记录当前找到的最优路径长度for n1:MAXITfor k1:NumAnt %考查第K只蚂蚁deltatauzeros(NC,NC); % 第K只蚂蚁移动前各边上的信息增量为零%[routek,lengthk]path(distance,tau,alpha,beta,[]); % 不靠率起始点[routek,lengthk]path(distance,tau,alpha,beta,Citystart); % 指定起始点if lengthkroutelength % 找到一条更好的路径 routelengthlengthk; bestrouteroutek; end for i1:NC-1 % 第K只蚂蚁在路径上释放的信息量 deltatau(routek(i),routek(i1))deltatau(routek(i),routek(i1))Q/lengthk; % 信息素更新 end %deltatau(routek(NC),1)deltatau(routek(NC),1)Q/lengthk; % end length_n(n)routelength; % 记录路径收敛 tau(1-rho).*tau; % 信息素挥发end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%costtimetoc;subplot(1,2,1),plot([CooCity(bestroute,2)],[CooCity(bestroute,3)],‘-‘)subplot(1,2,2),plot([1:MAXIT],length_n,’-’)[routelength,costtime]⛄三、运行结果⛄四、matlab版本及参考文献1 matlab版本2014a2 参考文献[1]吴恬微.改进蚁群算法在配电网故障定位中的应用[J].兰州文理学院学报(自然科学版). 2022,36(02)3 备注简介此部分摘自互联网仅供参考若侵权联系删除 仿真咨询1 各类智能优化算法改进及应用生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化2 机器学习和深度学习方面卷积神经网络CNN、LSTM、支持向量机SVM、最小二乘支持向量机LSSVM、极限学习机ELM、核极限学习机KELM、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断3 图像处理方面图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知4 路径规划方面旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化5 无人机应用方面无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配6 无线传感器定位及布局方面传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化7 信号处理方面信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化8 电力系统方面微电网优化、无功优化、配电网重构、储能配置9 元胞自动机方面交通流 人群疏散 病毒扩散 晶体生长10 雷达方面卡尔曼滤波跟踪、航迹关联、航迹融合