Bat algorithm (BA)

论文:A newmetaheuristic bat-inspired algorithm

算法描述

step1:初始化种群,即在D维度空间中随机散布初始蝙蝠,最大脉冲音量A0, 最大脉冲率R0 , 搜索脉冲频率范围 【fmin , fmax】,音量衰减系数α, 搜索频率的增强系数γ , 搜索精度ε , 最大迭代次数 iter_max。

step2:随机初始化蝙蝠位置xi , 并根据适应度值寻找当前最优解x*。

step3: 对蝙蝠的搜索脉冲频率,速度以及 位置进行更新。规则如下:
搜索脉冲频率:fi = fmin+(fmax-fmin)*β
速度 : vi^(t+1) = vi^t + (xi^t - x * ) *fi
位置 : xi^(t+1) = xi^t +vi^(t+1)
β 为【0,1】均匀分布的随机数; fi属于【fmin,fmax】; x *为当前蝙蝠最优解。

step4:生成均匀分布随机数 rand , 如果rand>r,则对当前最优解进行随机扰动 ,产生一个新解,并对新解做越界处理(好像是强制归到搜索区间内,超出的解强制放到界线上)。
局部搜索:x(new) = x(old) + ε* A^t
式中ε属于【-1,1】的随机数,A^t 为当前步数中所有蝙蝠中的平均音量;
实现时,提供一个缩放参数来控制布步长:
局部搜索:x( new) =x(old)+ε^t * δ *A^t
δ是缩放因子(应与实际操作时所需优化的变量尺度有关) ε^t 服从高斯正态分布

step5:生成均匀随机分布数 rand,如果rand Ai^(t+1) = αAi^t
ri^(t+1) = r0i*[1-exp(-γ*t)]
α与γ是常数,事实上,α与模拟退火中冷却进度表(cooling schedule)的冷却因子相似。对于任何0<α<1和 γ>0有
Ai^t–>0, ri^t–>0, as t–>无限大

理解:
只有新解被接受后才会 更新音量与脉冲发射率,越靠近目标,音量更小,脉冲发射率提高。

蝙蝠算法寻找最优的方法主要依靠蝙蝠个体之间的相互作用与影响,一旦受到某个局部极值的约束影响同时全局最优在其局部搜索之外自身很难摆脱,并且会吸引其他蝙蝠个体向其靠拢,大大降低了其多样性,同时收敛速度大大降低甚至出现停滞,种群进一步的丧失其进化能力,

改进主要是提高个体变异能力,在其可能陷入局部最优时加入变异能力使其摆脱约束。或者加大蝙蝠数量使其在迭代期间始终保持持续的优化能力

你可能感兴趣的:(Bat algorithm (BA))