一文搞懂什么是蚁群优化算法(Ant Colony Optimization, ACO)【附应用举例】

Python代码链接放文末。

本文参考了很多张军老师《计算智能》的第五章知识。

本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453
蚁群优化算法
总感觉这些数学家们怎么都这么聪明。
有句话叫“艺术源于生活”,但其实数学也来源于生活哈哈。

1.1 基本原理
先来聊下该算法的思想来源:

自然界蚂蚁群体在寻找食物的过程中,通过一种被称为信息素(Pheromone)的物质实现相互的间接通信,从而能够合作发现从蚁穴到食物源的最短路径。
通过对这种群体智能行为的抽象建模,研究者提出了蚁群优化算法(Ant Colony Optimization, ACO),为最优化问题、尤其是组合优化问题的求解提供了一强有力的手段。

蚂蚁在寻找食物的过程中往往是随机选择路径的,但它们能感知当前地面上的信息素浓度,并倾向于往信息素浓度高的方向行进。信息素由蚂蚁自身释放,是实现蚁群内间接通信的物质。由于较短路径上蚂蚁的往返时间比较短,单位时间内经过该路径的蚂蚁多,所以信息素的积累速度比较长路径快。因此,当后续蚂蚁在路口时,就能感知先前蚂蚁留下的信息,并倾向于选择一条较短的路径前行。这种正反馈机制使得越来越多的蚂蚁在巢穴与食物之间的最短路径上行进。由于其他路径上的信息素会随着时间蒸发,最终所有的蚂蚁都在最优路径上行进。

在这里插入图片描述在这里插入图片描述
1.2 算法流程
下面以求解TSP(旅行商问题)为例,来描述蚁群优化算法的工作机制。
1.2.1 基本流程
蚂蚁系统(Ant System,AS)是最基本的ACO算法,是以TSP作为应用实例提出的。

AS对于TSP的求解流程大致可分为两部:路径构建和信息素更新。

(1)路径构建

伪随机比例选择规则(random proportional)。
在这里插入图片描述
对于每只蚂蚁k,路径记忆向量 R k R^k Rk按照访问顺序记录了所有k已经经过的城市序号。设蚂蚁k当前所在城市为i,则其选择城市j作为下一个访问对象的概率如上式。 J k J_k Jk(i)表示从城市i可以直接到达的、且又不在蚂蚁访问过的城市序列 R k R^k Rk中的城市集合。 η \eta η(i, j)是一个启发式信息,通常由 η \eta η (i, j)=1/ d i j d_ij dij直接计算。 τ \tau τ(i, j)表示边(i, j)上的信息素量。

长度越短、信息素浓度越大的路径被蚂蚁选择的概率越大。a和b是两个预先设置的参数,用来控制启发式信息与信息素浓度作用的权重关系。当a=0时,算法演变成传统的随机贪心算法,最邻近城市被选中的概率最大。当b=0时,蚂蚁完全只根据信息素浓度确定路径,算法将快速收敛,这样构建出的最优路径往往与实际目标有着较大的差异,算法的性能比较糟糕。

(2)信息素更新

  1. 在算法初始化时,问题空间中所有的边上的信息素都被初始化为t0。
  2. 算法迭代每一轮,问题空间中的所有路径上的信息素都会发生蒸发,我们为所有边上的信息素乘上一个小于1的常数。信息素蒸发是自然界本身固有的特征,在算法中能够帮助避免信息素的无限积累,使得算法可以快速丢弃之前构建过的较差的路径。
  3. 蚂蚁根据自己构建的路径长度在它们本轮经过的边上释放信息素。蚂蚁构建的路径越短、释放的信息素就越多。一条边被蚂蚁爬过的次数越多、它所获得的信息素也越多。
  4. 迭代(2),直至算法终止。

看不懂?那结合下面公式来看。

在这里插入图片描述
m是蚂蚁个数;r是信息素的蒸发率,规定0<r≤1。 Δ \Delta Δ τ k \tau_k τk是第k只蚂蚁在它经过的边上释放的信息素量,它等于蚂蚁k本轮构建路径长度的倒数。 C k C_k Ck表示路径长度,它是 R k R^k Rk中所有边的长度和。

在这里插入图片描述
1.2.2 应用举例
接着,我们结合一个实例来做进一步理解。

在这里插入图片描述

在这里插入图片描述
步骤2.2中有提到轮盘赌法。是的,和我们遗传算法用的是一样的(当然后面新的方法会有不一样)。

轮盘赌法具体怎么操作,我这里稍微解释一下:
比方说,现在A占比为0.2,B占比为0.5,C占比为0.3。
则当你随机值大小位于为0-0.2时,选A,大小位于0.2-0.7时,选B,大小位于0.7-1.0时,选C。

1.3 改进版本
1.3.1 精华蚂蚁系统
精华蚂蚁系统(Elitist Ant System,EAS)是对基础AS的第一次改进,它在原AS信息素更新原则的基础上增加了一个对至今最优路径的强化手段。

在这里插入图片描述
引入这种额外的信息素强化手段有助于更好地引导蚂蚁搜索的偏向,使算法更快收敛。

1.3.2 基于排列的蚂蚁系统
基于排列的蚂蚁系统(rank-based Ant System, A S r AS_r ASr a _a a n _n n k _k k)在AS的基础上给蚂蚁要释放的信息素大小加上一个权值,进一步加大各边信息素量的差异,以指导搜索。在每一轮所有蚂蚁构建完路径后,它们将按照所得路径的长短进行排名,只有生成了至今最优路径的蚂蚁和排名在前( ω \omega ω-1)的蚂蚁才被允许释放信息素,蚂蚁在边(i, j)上释放的信息素 的权值由蚂蚁的排名决定。

在这里插入图片描述
权值( ω \omega ω−k)对不同路径的信息素浓度差异起到了一个放大的作用, A S r AS_r ASr a _a a n _n n k _k k能更有力度地指导蚂蚁搜索。

1.3.3 最大最小蚂蚁系统
最大最小蚂蚁系统(MAX-MIN Ant System,MMAS)在基本AS算法的基础上进行了四项改进:
(1)只允许迭代最优蚂蚁(在本次迭代构建出最短路径的蚂蚁),或者至今最优蚂蚁释放信息素。(迭代最优更新规则和至今最优更新规则在MMAS中会被交替使用。)

如果只使用至今最优更新规则进行信息素的更新,搜索的导向性很强,算法会很快收敛到 T b T_b Tb附近;反之,如果只使用迭代最优更新规则,则算法的探索能力会得到增强,但收敛速度会下降。实验结果表明,对于小规模的TSP问题,仅仅使用迭代最优信息素更新方式即可。随着问题规模的增大,至今最优信息素规则的使用变得越来越重要。

(2)信息素量大小的取值范围被限制在一个区间[ τ m \tau_m τm i _i i n _n n, τ m \tau_m τm a _a a x _x x]内。

当信息素浓度也被限制在一个范围内以后,位于城市i的蚂蚁k选择城市j作为下一城市的概率也将被限制在一个区间内。算法有效避免了陷入停滞状态(所有蚂蚁不断重复搜索同一条路径)的可能性。

(3)信息素初始值为信息素取值区间的上限,并伴随一个较小的信息素蒸发速率。

利好:增强算法在初始阶段的探索能力,有助于蚂蚁“视野开阔地”进行全局范围内的搜索。
随后蚂蚁逐渐缩小搜索范围。

(4)每当系统进入停滞状态,问题空间内所有边上的信息素量都会被重新初始化。(我们通常通过对各条边上信息素量大小的统计或是观察算法在指定次数的迭代内至今最优路径有无被更新来判断算法是否停滞。)

有效地利用系统进入停滞状态后的迭代周期继续进行搜索,使算法具有更强的全局寻优能力。

1.3.4 蚁群系统
1997年,蚁群算法的创始人Dorigo在“Ant colony system: a cooperative learning approach to the traveling salesman problem”一文中提出了一种具有全新机制的ACO算法——蚁群系统(Ant Colony System,ACS),进一步提高了ACO算法的性能。

在这里插入图片描述
(1)使用一种伪随机比例规则(pseudorandom proportional)选择下城市节点,建立开发当前路径与探索新路径之间的平衡。

在这里插入图片描述
(1)使用一种伪随机比例规则(pseudorandom proportional)选择下城市节点,建立开发当前路径与探索新路径之间的平衡。

q0是一个[0, 1]区间内的参数,当产生的随机数q≤q0时,蚂蚁直接选择使启发式信息与信息素量的指数乘积最大的下城市节点,我们通常称之为开发(exploitation);反之,当产生的随机数q>q0时ACS将和各种AS算法一样使用轮盘赌选择策略,我们称之为偏向探索(bias exploration)。

通过调整q0,我们能有效调节“开发”与“探索”之间的平衡,以决定算法是集中开发最优路径附近的区域,还是探索其它的区域。

(2)使用信息素全局更新规则,每轮迭代中所有蚂蚁都已构建完路径后,在属于至今最优路径的边上蒸发和释放信息素。

在这里插入图片描述
其中 Δ \Delta Δ τ b \tau_b τb(i, j) = 1 / C b C_b Cb,不论是信息素的蒸发还是释放,都只在属于至今最优路径的边上进行,这里与AS有很大的区别。因为AS算法将信息素的更新应用到了系统的所有边上,信息素更新的计算复杂度为O( n 2 n^2 n2),而ACS算法的信息素更新计算复杂度降低为O(n)。参数 ρ \rho ρ代表信息素蒸发的速率,新增加的信息素 被乘上系数 ρ \rho ρ后,更新后的信息素浓度被控制在旧信息素量与新释放的信息素量之间,用一种隐含的又更简单的方式实现了MMAS算法中对信息素量取值范围的限制。

(3)引入信息素局部更新规则,在路径构建过程中,对每一只蚂蚁,每当其经过一条边(i, j)时,它将立刻对这条边进行信息素的更新。
在这里插入图片描述
在这里插入图片描述
信息素局部更新规则作用于某条边上会使得这条边被其他蚂蚁选中的概率减少。这种机制大大增加了算法的探索能力,后续蚂蚁倾向于探索未被使用过的边,有效地避免了算法进入停滞状态。
在这里插入图片描述
顺序构建和并行构建。顺序构建是指当一只蚂蚁完成一轮完整的构建并返回到初始城市之后,下一只蚂蚁才开始构建;并行构建是指所有蚂蚁同时开始构建,每次所有蚂蚁各走一步(从当前城市移动到下一个城市)。对于ACS,要注意到两种路径构建方式会造成算法行为的区别。
在ACS中通常我们选择让所有蚂蚁并行地工作。

1.3.5 连续正交蚁群系统
连续正交蚁群算法(Continuous Orthogonal Ant Colony, COAC):近年来,将应用领域扩展到连续空间的蚁群算法也在发展,连续正交蚁群就是其中比较优秀的一种。COAC通过在问题空间内自适应地选择和调整一定数量的区域,并利用蚂蚁在这些区域内进行正交搜索、在区域间进行状态转移、并更新各个区域的信息素来搜索问题空间中的最优解。
COAC的基本思想是利用正交试验的方法将连续空间离散化。

1.4 参数设置
在这里插入图片描述

在这里插入图片描述

代码下载链接,有需要的请自行提取,不想hua前的朋友,可评论同我说,我会回复你,但可能会比较慢。祝好!

https://download.csdn.net/download/qq_44186838/62603929

智能优化算法大礼包

### 回答1: 蚁群优化算法 (Ant Colony Optimization, ACO) 是一种模拟蚂行为的优化算法。它可以应用于寻找最优解的问题。 对于 XGBoost,蚁群优化算法可以提升模型的性能。 XGBoost 通常通过交叉验证和网格搜索来确定最佳超参数。然而,这个过程可能是非常缓慢和复杂的,特别是当超参数空间很大时。蚁群优化算法可以加速这个过程,并且更快地找到更好的超参数组合。 蚁群优化算法是基于蚂的行为来模拟搜索过程。蚁群中的每只蚂都是一个独立的搜索代理,它们通过在超参数空间中选择最优的解来搜索最佳解。在蚁群中,蚂之间的信息交流和协作有助于更快地找到全局最优解。 因此,在 XGBoost 中使用蚁群优化算法可以带来显著的提升,因为它可以更快地确定最佳超参数,从而提高模型的性能。 ### 回答2: 蚁群优化算法是受到蚂觅食行为启发而提出的一种启发式优化算法。它通过模拟蚂在觅食时释放信息素和在路径选择中的正反馈行为,以寻找最优解。蚁群优化算法能够较好地应用于组合优化问题,并已在多个领域取得了成功。 将蚁群优化算法应用于XGBoost模型中,可以带来以下几方面的提升: 首先,蚁群优化算法可以改善XGBoost模型的参数调优效果。XGBoost模型中的参数选择对模型的性能影响较大,而蚁群优化算法能够通过搜索参数空间来找到更优的参数组合,提高模型的预测准确性。 其次,蚁群优化算法可以加速XGBoost模型的训练过程。XGBoost模型的训练过程需要经过多轮迭代,而蚁群优化算法可以通过并行计算和信息素更新策略,快速搜索到较优的解,从而加速模型的训练过程,提高效率。 此外,蚁群优化算法还可以解决XGBoost模型中存在的过拟合问题。XGBoost模型在处理复杂问题时容易过拟合,而蚁群优化算法能够通过信息素的正反馈机制,在搜索过程中引入随机性,有效地减少模型的过拟合程度,使模型更具泛化能力。 综上所述,蚁群优化算法对XGBoost模型的提升主要体现在参数调优、训练速度和过拟合问题上。通过应用蚁群优化算法,可以提高XGBoost模型的性能和效率,提升其应用范围和实际效果。 ### 回答3: 蚁群优化算法是一种模拟蚂寻找食物的行为模式而设计的优化算法。它与XGBoost这种梯度提升决策树算法相结合可以带来一些提升。 首先,蚁群优化算法与XGBoost都属于集成学习的范畴,它们通过结合多个弱分类器来提高整体预测性能。蚁群优化算法通过模拟蚂在搜索过程中的信息交流和集体智慧,能够帮助XGBoost更有效地组合弱分类器并学习出更好的模型。 其次,蚁群优化算法的搜索方式与XGBoost的梯度提升决策树算法互补。XGBoost通过优化损失函数对模型进行训练,但可能会陷入局部最优解。而蚁群优化算法通过启发式搜索,在解空间中能够绕过局部最优解,以全局最优解为目标进行搜索,提升了整体搜索性能。 另外,蚁群优化算法引入了正反馈机制和信息素的概念。蚁群中的蚂会释放信息素来标记已经发现的较好路径,其他蚂可以通过这些信息素来选择路径。这种正反馈机制能够帮助XGBoost避免陷入局部最优解,并引导模型朝着更优的方向进行学习。 最后,蚁群优化算法还具有并行处理能力,可以加速算法的执行速度。在XGBoost中,通过并行化处理可以提高模型训练的效率,同时蚁群优化算法的并行处理特性可以更好地发挥出来,缩短算法的运行时间。 综上所述,蚁群优化算法对XGBoost的提升主要体现在两个方面:一是通过全局搜索能够避免局部最优解,帮助XGBoost找到更好的模型;二是通过正反馈机制和并行处理提高了算法的效率。这些优势使得蚁群优化算法能够更好地与XGBoost相结合,提升整体性能。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

报告,今天也有好好学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值