蚁群优化算法(AS)的基本原理与算法流程总结

AS用来解决TSP问题的基本计算公式

n个城市的TSP,城市间的距离为 d i j d_{ij} dij
选择概率公式:若 j ∈ A j\in A jA P i j k ( t ) = τ i j ( t ) α η i j β ∑ l ∈ A k [ τ i j ] α η i l β P_{ij}^k (t)=\frac{\tau_{i j}(t)^{\alpha} \eta_{i j}^{\beta}}{\sum_{l \in A_{k}}\left[\tau_{i j}\right]^{\alpha} \eta_{i l}^{\beta}} Pijk(t)=lAk[τij]αηilβτij(t)αηijβ
否则, P i j k ( t ) = 0 P_{ij}^k(t)=0 Pijk(t)=0
距离的影响: η i j = 1 / d i j \eta _{ij}=1/d_{ij} ηij=1/dij
A k = N − t a b u k ( t ) , A k 表 示 蚂 蚁 k 没 走 过 的 城 市 , t a b u k ( t ) 表 示 蚂 蚁 k 走 过 的 城 市 A_k=N -tabu_k(t),A_k表示蚂蚁k没走过的城市,tabu_k(t)表示蚂蚁k走过的城市 Ak=Ntabuk(t),Akktabuk(t)k
α β \alpha \beta αβ是指数权重,用来调节信息素和距离的重要程度
α = 0 , β = 1 贪 婪 启 发 式 \alpha =0, \beta =1 贪婪启发式 α=0,β=1
α = 1 , β = 0 只 考 虑 信 息 素 \alpha =1, \beta =0 只考虑信息素 α=1,β=0
τ i j ( t + n ) = ( 1 − ρ ) τ i j ( t ) + Δ τ i j , ρ 为 遗 忘 因 子 , Δ 为 信 息 素 增 量 \tau _{ij}(t+n)=(1-\rho )\tau_{ij}(t)+\Delta \tau_{ij},\rho为遗忘因子,\Delta 为信息素增量 τij(t+n)=(1ρ)τij(t)+Δτij,ρΔ
Δ τ i j = ∑ k = 1 M Δ τ i j k 累 计 所 有 蚂 蚁 留 下 的 信 息 \Delta \tau_{ij}=\sum_{k=1}^M\Delta \tau_{ij}^k 累计所有蚂蚁留下的信息 Δτij=k=1MΔτijk
如果边ij在蚂蚁k的巡回上,则 Δ τ i j k = Q / L k \Delta \tau_{ij}^k=Q/L_k Δτijk=Q/Lk否则 Δ τ i j k = 0 \Delta\tau_{ij}^k=0 Δτijk=0

ACO的基本算法步骤
  • 1、初始化
    令t=0,NC=0(巡回次数),对所有的边(i,j)令 τ i j ( t ) = c , Δ τ = 0 \tau_{ij}(t)=c, \Delta\tau=0 τij(t)=c,Δτ=0将m个蚂蚁分散到n个城市中

  • 2、令S=1,(S是tabu表的指标,即走过的城市数)将所有的初始城市计入 t a b u k ( t ) tabu_k(t) tabuk(t)

  • 3、重复以下步骤,直到tabu表填满(所有城市走过)。令S=S+1,对k=1到m个城市,以 P i j k ( t ) P_{ij}^k(t) Pijk(t)选择城市j的移动,将j加入 t a b u k ( s ) tabu_k(s) tabuk(s)

  • 4、对k=1到M,计算L_k,更新最短巡回(即历史最优解)对边(i,j)计算 Δ τ i j k → Δ τ i j \Delta\tau_{ij}^k\to \Delta\tau_{ij} ΔτijkΔτij

  • 5、对所有边计算 τ i j ( t + n ) \tau_{ij}(t+n) τij(t+n)令t=t+1,NC=NC+1

  • 6、若NC大于NC_max停止,否则转第二步,并清空tabu表

算法流程
Created with Raphaël 2.2.0 参数初始化,N_c=0 N_c=N_c+1 k=1 k=k+1 按照P_ij计算状态转移概率,选择下一个转移城市 修改禁忌表 k<m? 更新每条路径上的信息量 满足结束条件? 输出结果 yes no yes no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值