2023.11.1学习-蚁群算法

2023.11.1学习-蚁群算法

蚁群算法(Ant Colony Algorithm, ACA)

算法背景

模拟自然界中蚂蚁的觅食行为:蚂蚁在寻找食物源时,会在其经过的路上释放信息素,并能够感知其他蚂蚁释放的信息素,蚂蚁会以较大概率优先选择信息素浓度较高的路径。

在这里插入图片描述

若蚂蚁要从出发点A到达目的地E,中间存在障碍物,初始时由于没有信息素(或信息素相等),蚂蚁向左和向右走的概率是相等的,且都会留下信息素;但是,由于信息素浓度会随时间的推进而逐渐衰减,C侧路径的残余信息素浓度会高于H侧,导致吸引蚂蚁的概率更高,从而这条较短路径上积累的信息素浓度越来越高,又使得选择该路径的蚂蚁个数也越来越多,形成了正反馈;最终,所有蚂蚁都会集中到这条最佳的路径上。

从蚁群的行为上可以得到结论:信息素的浓度的大小表征路径的远近,信息素的浓度越高,表示对应的路径越短

使用蚁群算法解决优化问题的基本思路:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。由于正反馈机制,随着时间的推进,最终,所有蚂蚁都会集中到最佳的路径上,此时对应的便是问题的最优解。

蚁群算法最早在解决旅行商问题(Travelling salesman problem, TSP)较为有效。

(旅行商问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。)

TSP问题可以表达为:求解遍历图G=(V,E,C),所有的节点一次并且回到起始节点,使得连接这些节点的路径成本最低。

旅行商问题的算法流程图:

在这里插入图片描述

蚁群算法原理

设整个蚁群的蚂蚁数量为m城市数量为n,城市 i 与城市 j 之间的相互距离为dij(i, j = 1, 2, …, n),t时刻城市 i 与城市 j 连接路径上的信息素浓度为τij(t)。初始时刻,各个城市之间连接路径上的信息素浓度相同,τij(0) = τ0

蚂蚁k(k = 1, 2, …, m)根据各个城市间连接路径上的信息素浓度决定下一个访问城市,设其在t时刻从城市 i 转移到城市 j 的概率为Pk
在这里插入图片描述

其中,τij表示边(i, j)上的信息素量;ηij是一个启发函数,通常由ηij= 1/ dij直接计算,表示蚂蚁从城市 i 到城市 j 的期望程度;α为信息素重要程度因子,其值越大,表示信息素的浓度在转移中起的作用越大;β为启发函数重要程度因子,其值越大,表示启发函数在转移中的作用越大,即蚂蚁会以较大的概率转移到距离短的城市。

Jk(k = 1, 2, …, m)为蚂蚁k待访问的城市的集合;**禁忌表tabuk**记录了蚂蚁k当前走过的城市,当所有n座城市都加入禁忌表tabuk中时,蚂蚁k便完成了一次周游,此时蚂蚁k所走过的路径便是TSP问题的一个可行解。

在蚂蚁行走并释放信息素的同时,各个城市间连接路径上的信息素逐渐自然消失,设参数ρ(0 < ρ <1)表示信息素的挥发程度。当所有蚂蚁完成一次周游后,各路径上的信息素根据下式更新:
τ i j ( t + n ) = ( 1 − ρ ) ⋅ τ i j ( t ) + Δ τ i j \tau_{ij}(t+n)=(1-\rho)·\tau_{ij}(t)+\Delta \tau_{ij} τij(t+n)=(1ρ)τij(t)+Δτij

Δ τ i j = ∑ k = 1 m Δ τ i j k \Delta \tau_{ij} = \sum \limits^m \limits_{k = 1}\Delta \tau^k_{ij} Δτij=k=1mΔτijk

其中,\Delta \tau _{ij}^{k}表示所有蚂蚁在城市 i 与城市 j 连接路径上释放的信息素浓度之和。

M.Dorigo 3种蚁群算法模型

(1)ant-cycle模型

在这里插入图片描述

其中,Q为常数,表示蚂蚁循环一次所释放的信息素总量,Lk为第k只蚂蚁经过路径的长度。

(2)ant-quantity模型

在这里插入图片描述

(3)ant-density模型

在这里插入图片描述

蚁群算法步骤

核心步骤:路径构建信息素更新

(1)初始化参数

蚁群规模m、信息素重要程度因子α、启发函数重要程度因子β、信息素挥发因子ρ、信息素释放总量Q、最大迭代次数iter_max。

(2)构建解空间

将各个蚂蚁随机地置于不同出发点,对每个蚂蚁k(k = 1, 2, …, m),计算其下一次待访问的城市,直到所有蚂蚁访问完所有的城市。

(3)更新信息素

计算各个蚂蚁经过的路径程度Lk(k = 1, 2, …, m),记录当前迭代次数中的最优解(最短路径),同时对各个城市间连接路径上的信息素浓度进行更新。

(4)判断是否终止

若iter < iter_max,则iter = iter + 1,并清空蚂蚁经过路径的信息表,返回步骤(2);否则终止计算,输出最优解。

在这里插入图片描述

蚁群算法的特点

(1)采用正反馈机制,使搜索过程不断收敛至最优解。

(2)每个个体可以通过释放信息素改变周围环境,感知周围环境,个体间通过信息素间接通讯,

(3)搜索过程采用分布式计算,多个个体同时进行并行计算,提高了算法的计算能力和运行效率。

(4)启发式的概率搜索,不容易陷入局部最优,易于找到全局最优解。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值