目录
0 引言
蝙蝠算法(Bat Algorithm,BA)是杨教授于2010年基于蝙蝠群体移动和搜寻猎物提出的启发式算法。算法主要假设理想化模拟蝙蝠回声定位感知距离、探索猎物和避免障碍物。从而建立数学模型进行求解问题。
1 数学模型
BA算法的数学模型主要对模拟蝙蝠探索猎物、避免障碍物和感知距离进行以下理想化假设:
(1)回声定位:蝙蝠利用回声定位系统寻找猎物进行捕猎行为,主要分为速度、位置更新,具体数学模型见下式:
式(1)为超声频率,其中fin/max为超声频率边界,β为随机变量。式(2)蝙蝠速度更新,x*为最优蝙蝠个体;式(3)为蝙蝠对应位置更新。
(2)随机飞行:回声定位确定最优解,引入脉冲频率,当随机数大于脉冲频率,利用局部随机飞行为每个蝙蝠生成一个新的解决方案,避免局部收敛。
式ε为-1到1的随机值,At为响度,即所有蝙蝠随机维度步长。
(3)响度和脉冲发射的变化:随着迭代过程的进行,响度A和脉冲发射的速率r必须相应地更新。一旦蝙蝠找到猎物,响度通常会降低,而脉冲发射率会增加。
式中α和γ是常数,
2 优化长短期记忆神经网络
2.1 优化的方式
前篇对长短期记忆神经网络原理讲解(长短期记忆神经网络LSTM原理及matlab代码-CSDN博客),从长短期记忆神经网络matlab代码运算过程中,可以看到LSTM受多个超参数影响(隐藏层节点、学习率、分批量、正则化等等)。因此结合上述BA原理介绍,可以将这些超参数作为蝙蝠种群,每一个种群对应LSTM的预测值,将这个预测值作为适应度更新蝙蝠位置进行上述活动。
2.2 伪代码
3 matlab代码
3.1 主函数代码
%%参数
% A 响度 (不变或者减小)
% r 脉冲率 (不变或增加))
% r0 常数
% Af 常数
% Rf 常数
% Qmin 最小频率
% Qmax 最大频率
% maxT 最大迭代
% sizep 种群
% SYD 适应度函数
%% 主函数
while t <= maxT
for i = 1:sizep
bata = rand();
Q(i)=Qmin+(Qmax-Qmin)*bata;% eq(1)
popv(i,:)=popv(i,:)+(pop(i,:)-bestS)*Q(i);% eq(2)速度
Stemp = pop(i,:)+popv(i,:);% eq(3)
% 脉冲率
if rand>r(i)
Stemp=bestS-1+2*rand(1,dim);
end
fitTemp = SYD(Stemp,net);
net.trainParam.showWindow = 0;
if (fitTemp<=pfitness(i))&&(rand()<A(i))
pop(i,:) = Stemp;
pfitness(i) = fitTemp;
A(i) = Af*A(i);
r(i) = r0*(1-exp(-Rf*t));
end
if fitTemp <= bestMin
bestMin = fitTemp;
bestS = Stemp;
end
end
bestArchive(t) = bestMin;
t = t +1;
end
end
3.2 BA-LSTM
1)时间序列:时间序列:蝙蝠算法优化长短期记忆神经网络(BA-LSTM)
4 视频讲解
B站搜索:‘ 不想学习的陈成 ’