蚁群算法
蚁群算法(Ant Colony Optimization, ACO)是由意大利学者 Marco Dorigo 于 1992 年提出的一种群智能优化算法,其核心思想源于对蚂蚁群体觅食行为的仿生学模拟。通过模拟蚂蚁群体在觅食过程中通过信息素进行间接通信的行为机制,利用正反馈原理动态调整路径选择策略,最终在复杂搜索空间中寻找到最优或近似最优解。
作为一种典型的元启发式算法,蚁群算法尤其擅长处理组合优化领域的 NP 难问题,如旅行商问题(TSP)、车辆路径规划、车间调度等,目前已被广泛应用于物流管理、网络路由优化、生物信息学等多个领域。
运行机制
- 分布式的并行机制
所有蚂蚁之间存在信息素的信息共享,但是各自搜索的路径并无关系,单只蚂蚁的路径可能不是最优路径,对最终的最优路径影响较小,通过信息素的累计,提高了寻找最优路径的概率。 - 信息素的正反馈机制
每一代蚂蚁在觅食过程中会留下信息素,信息素的浓度依赖于路径的长短,单只蚂蚁运行到终点的路径越短,信息素浓度越高,会提高下一代蚂蚁选择该路径的概率,这种信息素的正反馈机制是蚁群算法的核心机制。 - 信息素的挥发机制
信息素是一种具有挥发性质的化学物质,会随着时间不断挥发,通过周期性减少信息素浓度 τ = ( 1 − ρ ) τ \tau = (1-\rho)\tau τ=(1−ρ)τ,防止某些路径因历史信息积累过多而形成绝对优势,蚁群不断搜索新的路径,避免算法提前收敛 - 自组织的机制
在第一代蚂蚁出去觅食时,路径上信息素含量为零,则蚂蚁没有“经验”,经过时间的推移,较短路径上的信息素含量会更多,则会聚集更多的蚂蚁
公式原理
转移概率
蚂蚁在选择下一步位置时,依赖于信息素浓度和启发式信息。在 t t t时刻,蚂蚁 k k k从节点 i i i移动到节点 j j j的概率为
p i j k ( t ) = { [ τ i j ( t ) ] α [ η i j ( t ) ] β ∑ j ∈ a l l o w e d k [ τ i j ( t ) ] α [ η i j ( t ) ] β , j ∈ a l l o w e d k 0 , o t h e r w i s e p_{ij}^{k}(t)= \begin{cases} \frac{[\tau_{ij}(t)]^{\alpha}[\eta_{ij}(t)]^{\beta}}{\sum_{j\in allowed_{k}} [\tau_{ij}(t)]^{\alpha}[\eta_{ij}(t)]^{\beta}}, & j \in allowed_{k} \\ 0, & otherwise \end{cases} pijk(t)=⎩
⎨
⎧∑j∈allowedk[τij(t)]α[ηij(t)]β[τij(t)]α[ηij(t)]β,0,j∈allowedkotherwise
其中, α \alpha α为蚁群算法中信息素的启发因子,如果 α \alpha α越大,则蚁群的正反馈能力越强。 β \beta β为期望度启发因子, β \beta β越大,则表明群体的贪婪度越高。 a l l o w e d k allowed_{k} allowedk表示蚂蚁 k k k从节点 i i i可行的相邻栅格标号的集合, τ i j ( t ) \tau_{ij}(t) τij</