BA蝙蝠算法优化(附MATLAB源码)
优化算法之蝙蝠算法BA::
蝙蝠算法( BA) 是 Yang 教授于 2010 年基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。目前,对BA的改进算法多种多样,如基于DE算法改进的蝙蝠算法、混合蝙蝠算法、自适应变异蝙蝠算法、变步长自适应蝙蝠算法等。
BA特点:
优点:
- 算法简单、运算快速
- 改进效果明显
缺点:
- 后期收敛速度慢
- 收敛精度不高
- 易陷入局部极小点
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...
最优解结果:

更多推荐
所有评论(0)