基本原理、流程、适用场景

蚁群算法(Ant Colony Optimization, ACO)

算法概述

蚁群算法是一种模拟蚂蚁觅食行为的群体智能优化算法,由意大利学者Marco Dorigo于1992年首次提出。该算法通过模拟蚂蚁在寻找食物过程中释放信息素的行为,来解决组合优化问题。

基本原理

  1. 信息素机制

    • 蚂蚁在路径上释放信息素(pheromone)
    • 后续蚂蚁倾向于选择信息素浓度高的路径
    • 信息素会随时间挥发(evaporate)
  2. 正反馈机制

    • 较短的路径会被更多蚂蚁选择
    • 导致该路径上信息素浓度增加更快
    • 形成良性循环

算法步骤

1. 初始化阶段

  • 设置参数:蚂蚁数量m,信息素重要程度α,启发因子重要程度β,信息素挥发系数ρ
  • 初始化信息素矩阵τ_{ij}(0) = τ_0(通常设为小常数)

2. 迭代过程

对于每只蚂蚁k(k=1,2,...,m):

  1. 路径构建

    • 根据状态转移概率选择下一个节点
    • 概率公式:P_{ij}^k = [τ_{ij}]^α * [η_{ij}]^β / Σ[τ_{il}]^α * [η_{il}]^β
    • 其中η_{ij}为启发信息(如1/d_{ij})
  2. 信息素更新

    • 局部更新:每只蚂蚁完成路径后立即更新
      • τ_{ij} = (1-ξ)τ_{ij} + ξτ_0 (0<ξ<1)
    • 全局更新:所有蚂蚁完成路径后更新最优路径
      • τ_{ij} = (1-ρ)τ_{ij} + ρΔτ_{ij}
      • Δτ_{ij} = Q/L_k(Q为常数,L_k为路径长度)

3. 终止条件

  • 达到最大迭代次数
  • 解的质量满足要求
  • 算法收敛

改进算法

  1. 精英蚂蚁系统(Elitist Ant System)

    • 给予最优路径额外的信息素奖励
  2. 最大-最小蚂蚁系统(MMAS)

    • 限制信息素浓度在[τ_min, τ_max]范围内
    • 防止算法过早收敛
  3. 蚁群系统(Ant Colony System)

    • 引入伪随机比例规则
    • 采用不同的信息素更新策略

应用领域

  1. 经典组合优化问题

    • 旅行商问题(TSP)
    • 车辆路径问题(VRP)
    • 作业车间调度问题
  2. 网络优化

    • 路由优化
    • 网络负载均衡
    • 无线传感器网络部署
  3. 其他领域

    • 数据挖掘(聚类分析)
    • 图像处理
    • 机器学习参数优化

算法特点

  • 优点

    • 具有自组织性
    • 采用正反馈机制
    • 易于并行实现
    • 鲁棒性强
  • 缺点

    • 收敛速度较慢
    • 容易陷入局部最优
    • 参数设置对性能影响大

参数设置建议

参数典型取值范围说明
α0.5-1.5信息素重要程度
β2-5启发信息重要程度
ρ0.1-0.5信息素挥发系数
m10-50蚂蚁数量
Q100信息素常量

注:具体参数设置需根据问题特性进行调整

粒子群算法(PSO)

基本思想

粒子群算法就是把鸟看成一个个粒子,并且他们拥有位置和速度这两个属性,然后根据自身已经找到的离食物最近的解和参考整个共享于整个集群中找到的最近的解去改变自己的飞行方向,最后我们会发现,整个集群大致向同一个地方聚集。而这个地方是离食物最近的区域,条件好的话就会找到食物。

适用场景

函数优化、 神经网络 训练、模式识别、控制系统优化

关于速度和位置

粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。

鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。

速度和位置的更新

PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

对于公式(1):

公式(1)的第①部分称为【记忆项】,表示上次速度大小和方向的影响

公式(1)的第②部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;

公式(1)的第③部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。

以上面两个公式为基础,再来看一个公式:

公式(2)和 公式(3)被视为标准PSO算法。

标准PSO算法流程

1.标准PSO算法的流程

1)初始化一群微粒(群体规模为N),包括随机位置和速度;

2)评价每个微粒的适应度;

3)对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;

4)对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;

5)根据公式(2)、(3)调整微粒速度和位置;

6)未达到结束条件则转第2)步。

迭代终止条件根据具体问题一般选为最大迭代次数Gk或(和)微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。

2. PSO流程图解

3. 学习因子c1、c2分析

公式(2)和(3)中pbest和gbest分别表示微粒群的局部和全局最优位置。

当C1=0时,则粒子没有了认知能力,变为只有社会的模型(social-only):

  • 称为全局PSO算法。粒子有扩展搜索空间的能力,具有较快的收敛速度,但由于缺少局部搜索,对于复杂问题
    比标准PSO 更易陷入局部最优。

当C2=0时,则粒子之间没有社会信息,模型变为只有认知(cognition-only)模型:

  • 称为局部PSO算法。由于个体之间没有信息的交流,整个群体相当于多个粒子进行盲目的随机搜索,收敛速度慢,因而得到最优解的可能性小。

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐