优化算法之蝙蝠算法BA::

蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。目前,对BA的改进算法多种多样,如基于DE算法改进的蝙蝠算法、混合蝙蝠算法、自适应变异蝙蝠算法、变步长自适应蝙蝠算法等。


BA特点:

优点:

  1. 算法简单、运算快速
  2. 改进效果明显

缺点:

  1. 后期收敛速度慢
  2. 收敛精度不高
  3. 易陷入局部极小点

BA原理:

蝙蝠是唯一长着翅膀的哺乳动物,而且它们有先进的回音定位能力。根据生物机制,依靠回声定位进行捕食。对于不同的蝙蝠,它们的脉冲是与狩猎的策略有关的。大多数蝙蝠通过一种滤波器用短且高频的信号扫描周围,而其他蝙蝠则经常使用固定频率的信号进行回声定位。其信号频宽的变化取决于蝙蝠的种类,且常常通过使用更多的谐波而增加。


BA流程:

Step1: 种群初始化,即蝙蝠以随机方式在D维空间中扩散分布一组初始解。

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

Step3: 蝙蝠的搜索脉冲频率、速度和位置更新。种群在进化过程中每一下公式进行变化:

fi=fmin+(fmax-fmin)xβ                    (1)

vi^t=vi^(t-1)+(xi^t-x*)xfi                   (2)

xi^t=xi^(t-1)+vi^(t)                           (3)

Step4:生成均匀分布随机数rand,如果rand>r,则对当前最优解进行随机扰动,产生一个新的解,并对新的解进行越界处理。

Step5:生成均匀分布随机数rand,如果rand<Ai且f(xi)<f(x*),则接受步骤4产生的新解,然后按如下公式对和进行更新:

Ai^(t+1)=αAi^(t)                              (4)

ri^(t+1)=R0[1-exp(-γt)]                   (5)

Step6:对所有蝙蝠的适应度值进行排序,找出当前的最优解和最优值。

Step7:重复步Step2~Step5直至满足设定的最优解条件或者达到最大迭代次数。

Step8:输出全局最优值和最优解。

MATLAB代码:

clc
clear all
%% 初始化参数
n=20;           % 种群规模
t_max=100;      % 迭代数
A=1;            % 响度
r0=1;           % 脉冲率
alpha=0.97;     % alpha
gamma=0.1;      % gamma
% 频率范围
Freq_min=0;     % 最小频率
Freq_max=2;     % 最大频率
t=0;           
d=10;           % 维度      
% 初始化矩阵
Freq=zeros(n,1);   
v=zeros(n,d);      
Lb=-5*ones(1,d);   % 下限变量
Ub=5*ones(1,d);    % 上限变量
% 计算适应度
for i=1:n
  Sol(i,:)=Lb+(Ub-Lb).*rand(1...

最优解结果:

  

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐