智能优化算法之蚁群算法(ACO)

蚁群算法优缺点

优点
  • 蚁群算法是一种本质上的并行算法。每只蚂蚁搜索的过程彼此独立,仅通过信息激素进行通信。不仅增加了算法的可靠性,也使得算法具有较强的全局搜索能力。
  • 蚁群算法是一种自组织的算法。
  • 蚁群算法具有较强的鲁棒性。相对于其他算法,蚁群算法对初始路线的要求不高
  • 此外,蚁群算法的参数较少,设置简单,因而该算法易于应用到组合优化问题的求解。
  • 蚁群算法是一种正反馈算法。正反馈是蚁群算法的重要特征,它使得算法进化过程得以进行。
缺点
  • 收敛速度慢。蚁群算法中信息素初值相同,选择下一个节点时倾向于随机选择。虽然随机选择能探索更大的任务空间,有助于找到潜在的全局最优解,但是需要较长时间才能发挥正反馈的作用,导致算法初期收敛速度较慢。
matlab代码和python代码实例

智能优化算法之蚁群算法代码实现matlab、python

1. 蚁群算法模拟TSP问题

  • 在时刻 t t t,蚂蚁 k k k 从城市 i i i 转移到城市 j j j 的概率 p i j k ( t ) 为 : p^k_{ij}(t)为: pijk(t)

在这里插入图片描述

  • 式中, J k ( i ) = { 1 , 2 , … , } − t a b u k J_k(i)=\{1,2,…, \}-tabu_k Jk(i)={12}tabuk 表示蚂蚁 k k k 下一步允许选择的城市集合。禁忌表 t a b u k tabu_k tabuk 记录了蚂蚁 k k k当前走过的城市。当所有 n n n 座城市都加入到禁忌表 t a b u k tabu_k tabuk 中时,蚂蚁 k k k 便完成了一次周游,此时, 蚂蚁 k k k 所走过的路径便是 TSP 问题的一个可行解。
  • (5.1) 中的 η i j η_{ij} ηij 是一个启发式因子,表示蚂蚁从城市 i i i 转移到城市 j j j 的期望程度。在蚁群算法中, η i j η_{ij} ηij 通常取城市 i i i与城市 j j j 之间距离的倒数。
  • α 和 β分别表示信息素和期望启发式因子的相对重要程度。当所有蚂蚁完成一次周游后,各路径上的信息素根据式(5.2)更新:
    在这里插入图片描述
  • 式中: ρ ( 0 < ρ < 1 ) ρ(0<ρ<1) ρ0ρ1表示路径上信息素的蒸发系数, 1 − ρ 1-ρ 1ρ 表示
    信息素的持久性系数; Δ τ i j Δτ_{ij} Δτij 表示本次迭代中边 i j ij ij 上信息素的增量,即
    在这里插入图片描述
  • 其中 Δ τ i j k Δτ_{ij}^k Δτijk 表示第 k k k 只蚂蚁在本次迭代中留在边 i j ij ij 上的信息素量,如果蚂蚁 k k k 没有经过边 ,则 Δ τ i j k Δτ_{ij}^k Δτijk 的值为零。 Δ τ i j k Δτ_{ij}^k Δτijk可表示为:
    在这里插入图片描述
  • 其中 Q Q Q为正常数, 表示第 L k L_k Lk只蚂蚁在本次周游中所走过路径的长度。
其他模型

智能优化算法之蚁群算法(ACO)_第1张图片

2. 基本蚁群算法的具体实现

  • (1)参数初始化。令时间 t = 0 t = 0 t=0 和循环次数 N c = 0 N_c = 0 Nc=0,设置最大循环次数 G G G,将 m m m 个蚂蚁置于 n n n 个元素(城市)上,令有向图上每条边 ( i , j ) (i,j) (i,j) 的初始化信息量 τ i j ( t ) = c τ_{ij}(t) =c τij(t)=c ,其中 c c c 表示常数,且初始时刻 Δ τ i j ( 0 ) = 0 Δτ_{ij}(0)=0 Δτij(0)=0
  • (2)循环次数: N c = N c + 1 N_c = N_c+1 Nc=Nc+1
  • (3)蚂蚁的禁忌表索引号: k = 1 k=1 k=1
  • (4)蚂蚁数目: k = k + 1 k= k+1 k=k+1
  • (5)蚂蚁个体根据状态转移概率公式(5.1)计算的概率选择元素 j j j 并前进, j ∈ { J k ( i ) } j∈\{J_k(i)\} j{Jk(i)}
  • (6)修改禁忌表指针,即选择好之后将蚂蚁移动到新的元素,并把该元素移动到该蚂蚁个体的禁忌表中
  • (7)若集合 C C C 中元素未遍历完,即 k < m k < m km,则跳转到第(4)步;否则执行第(8)步。
  • (8)记录本次最佳路线
  • (9)根据式(5.2)和式(5.3)更新每条路径上的信息量。
  • (10)若满足结束条件,即如果循环次数 N c ≥ G N_c≥G NcG ,则循环结束并输出程序优化结果;否则清空禁忌表并跳转到第(2)步。
    智能优化算法之蚁群算法(ACO)_第2张图片

3. 关键参数说明

信息素启发因子: α \alpha α
  • 其值越大,蚂蚁在选择以前走过的路径的可能性就越大,搜索的随机性就会减弱;
  • 而当启发式因子 α 的值过小时,则易使蚁群的搜索过早陷于局部最优。
  • 根据经验,信息素启发式因子 α 取值范围一般为 [ 1 , 4 ] [1,4] [14]时,蚁群算法的综合求解性能较好。
启发式因子: β \beta β
  • 期望启发因子 β 表示在搜索时路径上的信息素在指导蚂蚁选择路径时的向导性。
  • 期望启发因子 β 的值越大,蚂蚁在某个局部点上选择局部最短路径的可能性就越大,虽然这个时候算法的收敛速度得以加快,但蚁群搜索最优路径的随机性减弱,而此时搜索易于陷入局部最优解。
  • 根据经验,期望启发因子 β 取值范围一般为 [ 3 , 5 ] [3, 5] [35],此时蚁群算法的综合求解性能更好。
信息素蒸发系数: ρ \rho ρ
  • 信息素蒸发系数 ρ 大小的选择将直接影响到整个蚁群算法的收敛速度和全局搜索性能。
  • ρ 表示信息素蒸发系数,1-ρ 则表示信息素持久性系数。因此,ρ的取值范围应该是0~1之间的一个数
  • ρ 过小时,则表示以前搜索过的路径被再次选择的可能性过大,会影响到算法的随机性能和全局搜索能力;
  • ρ 过大时,说明路径上的信息素挥发的相对变多,虽然可以提高算法的随机搜索性能和全局搜索能力,但过多无用搜索操作势必会降低算法的收敛速度。
蚂蚁数目: m m m
  • 蚂蚁数目增大后,会使大量的曾被搜索过的解(路径)上的信息素变得趋于平均,信息正反馈的作用不明显。虽然搜索的随机性得到了加强,但收敛速度减慢。
  • 反之,(蚂蚁数量少),特别是当要处理的问题规模比较大时,会使那些从来未被搜索到的解(路径)上的信息素减小到接近于0,搜索的随机性减弱,虽然收敛速度加快了,但会使算法的全局性能降低,算法的稳定性差,容易出现过早停滞现象。
  • m m m 一般取 10 ~ 50 10~50 1050
信息素强度: Q Q Q
  • 参数 Q Q Q 不必作特别的考虑,可以任意选取。
最大进化代数: G G G
  • 一般 G G G 取 100 ∼ 500 取100\sim500 100500

笔记参考

《智能优化算法及其MTALAB算法实例》第二版

你可能感兴趣的:(智能算法,蚁群算法,智能优化算法)