【蚁群算法】

需要研究一些创新,自己写的对于现有文献中蚁群算法描述的一些理解。手敲的部分会有点啰嗦


一、定义

    蚁群算法(Ant Colony Optimization, ACO)是通过模拟蚂蚁在路径选择过程中的行为,不断迭代搜索解空间,从而找到最优解或接近最优解。
    在每次迭代中,根据信息素和启发式信息(例如距离、费用等)做出路径选择,并更新信息素的浓度。
    随着迭代次数增加,信息素的分布逐渐趋于收敛,最终找到较优的解。


二、原理

    1、蚂蚁在路径上释放信息素。
    2、碰到还没走过的路口,就随机挑选一条路走。同时,释放与路径长度有关的信息素。
    3、信息素浓度与路径长度成反比。后来的蚂蚁再次碰到该路口时,就选择信息素浓度较高路径。
    4、最优路径上的信息素浓度越来越大。
    5、最终蚁群找到最优寻食路径。


三、优点

1、蚁群算法通过多只蚂蚁独立搜索路径并共享信息素实现并行计算,这种分布式特性使其能够同时探索解空间的不同区域,避免陷入局部最优。
2、蚁群算法对初始路径的选择不敏感,即使初始解较差,也能通过迭代逐步优化。
3、算法的核心优势是信息素的正反馈机制。优质路径上的信息素浓度会随着更多蚂蚁的选择而增加,从而加速收敛到最优解。


四、适用场景

   蚁群算法是基于仿生智能行为的寻优方法,最初用于解决TSP问题,经过多年的发展,已经陆续渗透到其他领域中,比如图着色问题、大规模集成电路设计、通讯网络中的路由问题以及负载平衡问题、车辆调度问题等。蚁群算法在若干领域己获得成功的应用,其中最成功的是在组合优化问题中的应用。蚁群算法 - MBA智库百科
    在图像处理领域,可用于图像边缘检测,将图像像素视为节点,利用蚂蚁在路径上的信息素累积模拟边缘梯度变化。蚂蚁倾向于选择灰度梯度高的区域移动,通过迭代强化边缘信息素分布,最终通过阈值判定边缘点。一种基于蚁群优化的网格分割方法.docx - 人人文库
    其次,可用于图像分割,将图像划分为网格,蚂蚁根据信息素和像素相似性合并相邻网格,最终形成区域边界。
    蚁群算法在组合优化问题的优势,使其也可用于医学影像等配准与匹配的问题。基于蚁群算法的准直图像处理研究
    并且基于蚁群算法的聚类方法,可用于轨道缺陷图像、纹理图像和硬币图像等的分类。
ScienceChina 中国科学文献服务系统
基于改进蚁群算法的二维MUSIC多谱峰搜索研究


五、与其他算法比较

    蚁群算法的原理是一种正反馈机制或者称为增强型学习系统,它通过最优路径上蚂蚁的信息素浓度(或者数量)增加,从而使后来蚂蚁选择该路径概率增大,最终收敛于最优路径。
    1)通用型随机优化:蚁群算法深度吸收蚂蚁觅食、路径选择的行为特征,通过人工蚂蚁构建仿真模型,具备极强的普适性。
相较于传统的梯度下降算法,梯度下降算法需要目标函数可导,且对初始值敏感,容易陷入局部最优解;遗传算法虽然也具有随机性,但需要精心设计遗传算子和编码方式。
蚁群算法无需依赖目标函数的梯度信息,也无需复杂的编码设计,对问题的数学性质要求低,能够广泛应用于旅行商问题、车辆路径规划、图着色等多种组合优化问题,甚至在机器学习、数据挖掘等新兴领域也展现出应用潜力 ,在复杂多变的优化场景中表现出良好的适应性。
    2)分布式优化:蚁群算法支持多个体同时并行搜索,这一本质并行性使其与串行执行的传统搜索算法(如动态规划算法)相比,在处理大规模问题时优势显著。
动态规划算法在求解复杂问题时,随着问题规模的增大,计算量呈指数级增长,而蚁群算法能够利用多个蚂蚁在不同路径上同时探索,大幅缩短搜索时间,提升搜索效率。
同时,相较于并行遗传算法,蚁群算法的并行机制更加灵活,不需要复杂的通信和同步机制,在分布式计算环境下,各蚂蚁独立进行搜索操作,仅通过信息素这一简单媒介进行间接协作,降低了算法实现的复杂度和通信成本。
    3)全局搜索能力强:蚁群算法属于启发式算法,在搜索过程中,蚂蚁会根据信息素浓度和启发式信息选择路径,这种机制使其不容易陷入局部最优解。
与局部搜索算法(如爬山算法)相比,爬山算法每次只选择当前邻域内的最优解,一旦陷入局部最优就难以跳出;模拟退火算法虽然通过引入“退火”机制在一定程度上避免局部最优,但对参数设置较为敏感。蚁群算法凭借信息素的积累和挥发,在探索新路径和利用已有路径之间取得平衡,更有机会找到全局最优解。
    4)适合离散问题:蚁群算法在离散问题求解上表现卓越,尤其适用于组合优化问题。
牛顿法、拟牛顿法等连续优化算法主要用于求解可微函数的极值问题,在处理离散变量和组合问题时面临巨大挑战。
    5)正反馈机制:蚁群算法的正反馈机制是其核心优势之一。蚂蚁在路径上释放信息素,随着时间推移,较短路径上信息素浓度逐渐积累变高,吸引更多蚂蚁选择该路径,形成“强者更强”的正反馈效应,使得搜索过程不断向最优解收敛,适用于求解对时间和精度要求较高的优化问题。
相比禁忌搜索算法,禁忌搜索虽然通过禁忌表避免重复搜索,但缺乏类似的强化机制,在搜索效率和收敛速度上往往不如蚁群算法。


六、算法思想

   蚁群算法的理论基础:
   (1) 群体协作行为的有效性:蚁群通过个体间的间接协作实现高效搜索。在觅食过程中,单只蚂蚁的行动具有随机性,但蚁群整体能够通过信息素的释放与感知,逐步发现从蚁巢到食物源的最短路径。众多蚂蚁在环境中随机探索,信息素在路径上不断积累,较短路径上的信息素浓度会因更多蚂蚁的选择而快速增加,形成正反馈机制,使得蚁群无需全局规划就能找到最优解。
   (2) 信息素的动态交互机制:信息素作为蚂蚁个体间交流的媒介,其浓度会随时间挥发,同时也会因蚂蚁的经过而得到加强。信息素浓度高的路径对蚂蚁更具吸引力,而信息素的挥发特性则避免了算法过早陷入局部最优。这种动态交互机制让蚁群在探索新路径和利用已有路径之间取得平衡,既能保持对解空间的广泛搜索,又能逐渐聚焦于更优的解,确保算法在复杂问题求解中具备良好的全局搜索能力和收敛性。


七、算法实现

7.1 初始化参数

   设置蚂蚁数量m,蚂蚁数量一般设置为目标解的1.5倍,比如tsp问题就是设置目标城市数量的1.5倍。
   初始化蚂蚁位置,设置信息素矩阵τ、挥发系数ρ、启发式因子权重α和β,设置最大迭代次数
   设置蚂蚁位置对应的解的目标函数(比如碳排放数据最小,或是成本最低,或是时间最短,或是综合设定),计算每个蚂蚁初始位置对应的目标函数值。
   (可选)设置禁忌表,表的对应关系为:一只蚂蚁对应一个禁忌表,当前蚂蚁每次走过的路径会记录在禁忌表中,禁止当前蚂蚁选择禁忌表中的路径节点,也就是不走回头路,禁忌表可以设置较小,保持一个小范围的防止回头,否则蚂蚁可能搜索到会无路可走。(限制重复访问)实际应用中,通常将禁忌表设置为问题的节点总数(如TSP中的城市数量)/问题规模,确保路径完整性的同时避免重复访问
   禁忌表还有两个要注意的问题是,1、也可以设置禁忌期限,若干迭代次数内不允许访问,之后移出;2、路径完成后,比如蚂蚁到达起点或者终点,应该清空禁忌表以便于下一次搜索。

7.2 路径构建

   每只蚂蚁根据目标函数和信息素浓度计算蚂蚁路径选择的概率公式,并且根据概率公式选择下一个路径节点,记录路径并更新禁忌表。
路径选择概率公式为:
P i j k = [ τ i j ] α ⋅ [ η i j ] β ∑ k N [ τ i k ] α ⋅ [ η i k ] β P_{i j}^{k}=\frac{\left[\tau_{i j}\right]^{\alpha} \cdot\left[\eta_{i j}\right]^{\beta}}{\sum_{k}^{N}\left[\tau_{i k}\right]^{\alpha} \cdot\left[\eta_{i k}\right]^{\beta}} Pijk=kN[τik]α[ηik]β[τij]α[ηij]β
latex格式:P_{i j}^{k}=\frac{\left[\tau_{i j}\right]^{\alpha} \cdot\left[\eta_{i j}\right]{\beta}}{\sum_{k}{N}\left[\tau_{i k}\right]^{\alpha} \cdot\left[\eta_{i k}\right]^{\beta}}
   其中 P i j k P_{i j}^{k} Pijk表示蚂蚁选择路径(i,j)的概率, τ i j \tau_{i j} τij为路径(i,j)的信息素浓度, η i j \eta_{i j} ηij为目标函数值,比如在距离选择问题上, η i j = 1   d i j \eta_{i j}=\frac{1}{\mathrm{~d}_{i j}} ηij= dij1 d i j d_{i j} dij为路径(i,j)的距离),并且可以称 η i j \eta_{i j} ηij为启发式因子,α和β分别为信息素浓度与目标函数值的权重。N为路径起点为i时,下一条路径节点的个数。
   对于α和β进行一些说明,如果信息素浓度权重过大,并且初始路径信息素浓一致,则该算法初始相当于随机走动,收敛速度可能会有点慢,因为没有参考信息只能依靠多次迭代;而目标函数值的权重过大,则蚂蚁每次行走几乎都是根据目标函数值去选择,这相当于“人工蚂蚁”有预见性的知道了当前路径的好坏,并且选择算法接近于贪心策略,对于贪心策略,比较难搜索到全局最优解,根据一些其他文档的说明,通常将设置为1,为一个大于的值,比如6。
   公式表示,遍历起点为i的所有的下个路径节点j,根据路径(i,j)的信息素浓度(多次迭代过程中之前的蚂蚁留下的,如果当前路径之前搜索过觉得比较好,比如距离比较短,就会留下信息素比较多,也就是说有一个前置的辅助判断,但是如果根据当前目标函数评估,这条道路已经改变了一些,因此导致目标函数值不理想,就可以辅助判断从而避免道路变化之后还选择这一条路,其次,刚开始蚂蚁搜索的路径不够全,高信息素路径也可能不是最优,因此蚂蚁有概率选择其他路径,从而避免陷入局部最优)和目标函数值根据不同权重占比计算得到一个数值,根据这个数值占所有路径数值的比值来分配选择当前路径的可能性,由于选择路径是根据可能性去选的,因此可能较小的路径也有选中的可能性,不易陷入局部最优,并且综合判断,提高了鲁棒性(同上述解释)。

7.3 信息素更新

   这一步有三种常见的算法,其一是全局更新,所有蚂蚁选择完路径之后开始更新,这种做法与第二种算法相区分,更新复杂度更低一点;其二是局部更新,每只蚂蚁在选择完路径之后就开始更新信息素,即下一只蚂蚁可以根据当前更新完的信息素浓度做判断,随机性会第低于第一种,但是更快收敛到较优解。其三是一些改进的策略,比如只更新一些比较优秀的解的信息素浓度。
其次,部分策略会包括挥发旧信息素这一步骤,符合生物学特性,避免信息素浓度累计,最终取值过大。(也就是下述公式的第一项挥发系数)
   信息素更新公式如下:
τ i j ( t + 1 ) = ( 1 − ρ ) τ i j ( t ) + ∑ k = 1 m i j Δ τ i j k \tau_{i j}(t+1)=(1-\rho) \tau_{i j}(t)+\sum_{k=1}^{m_{i j}} \Delta \tau_{i j}^{k} τij(t+1)=(1ρ)τij(t)+k=1mijΔτijk
latex格式:\tau_{i j}(t+1)=(1-\rho) \tau_{i j}(t)+\sum_{k=1}^{m_{i j}} \Delta \tau_{i j}^{k}
   其中, τ i j ( t + 1 ) \tau_{i j}(t+1) τij(t+1)为t+1时刻(下一时刻)的路径(i,j)的信息素浓度, τ i j ( t ) \tau_{i j}(t) τij(t)为t时刻(当前时刻)路径(i,j)的信息素浓度;
    ρ \rho ρ为挥发系数(0.2~0.5),比如为0.3时,代表着这一时刻只有70%的信息素浓度会保留到下一时刻,其余的30%已经挥发掉了。
    m i j m_{i j} mij为之前根据概率公式选择之后,选择路径(i,j)的蚂蚁个数。
    Δ τ i j k \Delta \tau_{i j}^{k} Δτijk为选择路径(i,j)的第k只蚂蚁在路径(i,j)上释放的信息素量,通常与目标函数值成正比,比如如果是路径选择问题,这个值应该就是一个与路径长度成反比的数值。

7.4 迭代终止

   达到初始设定的最大迭代次数(一般为100次到500次),或者解质量稳定(每次全局更新或是局部更新之后的最优解在多次迭代过程中的变化值较小或者保持不变,变化值自行设定),输出信息素浓度最高的路径作为最优解。
   其他说明:1、对于其他求解问题的拓展,比如图像处理,蚂蚁的观察范围可以设置为一个3*3大小的像素块中,即下一个路径节点选择就变成了像素块中的像素点,类似的,根据需要求解的问题去设定解的实际空间。
   2、概率公式中,由于蚂蚁根据概率公式选择路径,则有小概率选择当前策略中不那么优秀的路径,这在实际生活中给可以理解为蚂蚁有小概率会犯错,非常的鲁棒性。
   3、禁忌表的作用是防止愚蠢的蚂蚁在原地转圈,并且尽量保持一个前行的趋势而不是后退。
   4.这个文件中有介绍一些更高级的蚁群算法,主要是基于信息素释放的优先度,或者是对于走上最优路径的蚂蚁给以激励:蚁群算法及其优化:原理与代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值