蚁群算法(密恐勿入)
蚁群算法--给你一个感性认识
1. 算法简介
1.1 基本原理
蚁群算法是一种模拟蚂蚁觅食行为的启发式算法,被广泛应用于优化问题的求解。蚁群算法的基本思想是,将一群蚂蚁放在问题的解空间上,让它们通过信息素的传递和挥发,逐渐找到最优解。
1.1.1 模拟蚂蚁在简单地形,寻找食物
https://ucc.alicdn.com/images/user-upload-01/ce08ccb14559400788f4640d8aacfc34.gif
阶段一:在蚁群算法的初始阶段,我们在地图上不放置任何食物,因为蚂蚁需要在没有任何信息素的情况下开始摸索前进。一开始,蚂蚁们在洞外随机移动,试图找到食物的位置。每只蚂蚁的速度相同,它们会按照随机的方向前进,直到遇到障碍物或者到达了边界。此时,它们会再次随机选择一个方向,并继续前进。这个过程会持续进行,
https://ucc.alicdn.com/images/user-upload-01/43bb8baaa67c49d597fc8616bd9cfbaa.gif
阶段二:当蚂蚁们找到了食物后,它们会将一些信息素沿着它们的路径释放出来,并且在回到蚁巢的路上也会释放信息素。
蚁群之间的规则:
蚂蚁发现食物并将其带回巢穴时,通常会遵循已经标记的路径返回,即原路返回。在返回过程中,蚂蚁会释放归巢素和信息素,这些化学物质可以吸引其他蚂蚁跟随它的路径前往食物源。如果路径上有较多的归巢素或信息素,则越来越多的蚂蚁将会选择这条路径前往食物。
阶段三:当蚂蚁们回到巢穴时,它们会在原来的路径上释放更多信息素,增强这条路径的吸引力,并且尝试着寻找更短的路径。蚂蚁们会在路径上选择合适的地方停下来,释放信息素,然后返回巢穴。这个过程将持续进行,直到蚂蚁们找到了最优路径。
根据以上规则,随着时间的推移,蚂蚁们终会(可能)找到的最优路径。
1.1.2 模拟蚂蚁在复杂地形,找到食物
https://ucc.alicdn.com/images/user-upload-01/7ff19ca3a3104f05acdc09794c229ab2.gif
https://ucc.alicdn.com/images/user-upload-01/541aa2729aef43b8a71e20df70cd50eb.gif
1.2 算法应用
蚁群算法已经应用于多种优化问题的求解,比如:
- 旅行商问题
- 图着色问题
- 网络路由问题
- 调度问题
- 生产计划问题
在这些问题中,蚁群算法通常能够找到较优的解。此外,蚁群算法还可以用于机器学习领域中的聚类和分类等问题。
2. 算法解析
想要理解算法?需要去理解以下内容:
蚁群是如何找到解的?解的步骤是什么?
- 蚂蚁在初始时随机选择一个起点,并向前行走。
- 当蚂蚁走到一个节点时,它会选择一个下一个节点进行移动。蚂蚁选择下一个节点的概率与该节点上的信息素浓度成正比。信息素浓度越高的节点,被选择的概率也越高。
- 当蚂蚁移动到一个节点时,它会在该节点上释放一定量的信息素。
- 当蚂蚁找到解后,它会回到起点,并在路径上释放更多的信息素,增强这条路径的吸引力。
- 当其他蚂蚁在寻找解的过程中遇到已经被标记的路径时,它们会更有可能选择这条路径。
- 随着时间的推移,信息素会挥发,路径上信息素的浓度会逐渐降低。这样,路径上的信息素浓度会经历一个上升和下降的过程。
- 蚂蚁们会根据路径上的信息素浓度来选择下一个节点。当信息素浓度很高时,它们更有可能选择这条路径。
- 蚂蚁们持续寻找解,直到找到最优解或者达到预设的迭代次数。
作者个人理解:
蚂蚁个体之间就是通过这种间接的通信机制实现协同搜索最短路径的目标的。我们举例简单说明蚂蚁觅食行为:
现阶段 蚂蚁有A→B→C 和 A→D→C两种较优路径, A→D→C的距离要大于A→B→C
因为大量蚂蚁的选择概率会不一样,会将蚂蚁大致分为两批,一批走A→B→C ,另一批走A→D→C,单位时间内A→B→C通过蚂蚁也要大于 A→D→C,随着时间的推移,A→B→C的信息素越来越多,正反馈调节下,走此条路径的蚂蚁也越来越多。所以越短路径的浓度会越来越大,经过此短路径达到目的地的蚂蚁也会比其他路径多。这样大量的蚂蚁实践之后就找到了最短路径。所以这个过程本质可以概括为以下几点:
- 路径概率选择机制信息素踪迹越浓的路径,被选中的概率越大
- 信息素更新机制路径越短,路径上的信息素踪迹增长得越快
- 协同工作机制蚂蚁个体通过信息素进行信息交流。
蚂蚁在蚁群算法中通过信息素的传递和挥发来进行交流。通过信息素的传递和挥发,整个蚁群就会产生信息正反馈现象、种群分化等。
正反馈现象
由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象。某一路径上走过的蚂蚁越多,则后来者选择该路径的可能性就越大。
💡 在一个人流量比较大的商场,人们往往会选择人流量比较大的走廊或者通道来走,因为人流量越大,越能够说明这个通道是正确的,这样就会产生一种信息正反馈现象,后来的人也会选择这条路线,进一步增加这条路线的人流量。与蚁群算法类似,人们会根据前人的经验来选择路线,从而产生类似的正反馈现象。
种群分化
种群分化是蚁群算法中的一个现象,当蚂蚁在搜索过程中遇到了局部最优解时,会一直围绕这个局部最优解寻找,并且释放信息素。这会导致其他蚂蚁也会被吸引过来,导致整个蚁群陷入局部最优解,而无法找到全局最优解的情况。这种现象在蚁群算法中是非常常见的,需要特别注意。为了避免种群分化,蚂蚁需要具有一定的随机性,同时需要及时更新信息素,以便发现全局最优解。
💡一个人在某个领域上有很高的专业技能,但是如果他过于专注于这个领域,就可能会失去对其他领域的了解和认识,进而导致对问题的认识出现偏差,甚至无法解决某些问题。
就比如图1. 我如果此刻将原有阻碍去掉一部分,此时只靠信息素交流的蚁群会产生种群分化现象。陷入了局部最有解。
https://ucc.alicdn.com/images/user-upload-01/6e685ae93acf4d2bacf26a3006ec4a9b.gif
当蚁群算法陷入局部最优解时,可以使用以下方法进行优化:
- 增加蚂蚁的数量。增加蚂蚁的数量可以增加搜索的广度,从而有更大的可能性找到全局最优解。
- 调整信息素挥发速度。通过适当降低信息素挥发速度,可以增加信息素在路径上的积累,从而增加蚂蚁选择该路径的概率。
- 引入随机因素。在蚁群算法中引入随机因素,可以使蚂蚁更具有探索性,从而有可能跳出局部最优解,进而找到全局最优解。
- 改变参数。通过改变蚁群算法中的参数,如信息素浓度、信息素挥发速度、启发式因子等,可以使算法更加灵活,从而更容易找到全局最优解。
- 使用局部搜索算法。在蚁群算法的基础上,可以结合局部搜索算法,如模拟退火算法、遗传算法等,来寻找全局最优解。
上述的情况,可以利用第三条和第四条解决。