白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和“鲸鱼坠落”行为。
白鲸是高度社会化的动物,它们可以聚集在2到25名成员的群体中,平均有10名成员。白鲸是杂食性的,包括但不限于虾,蠕虫,鳕鱼,鳟鱼和鲑鱼。当夏天来临时,许多生物聚集在一些河口,所以鲸鱼聚集在一起吃东西。白鲸通常通过吸力将猎物带入嘴里,因为牙齿不锋利。有时,白鲸与协调小组通过引导鱼进入浅水来攻击和喂养鱼。此外,白鲸在夏季受到虎鲸,北极熊和人类的威胁,因为河口的人口密度很高。一些鲸鱼在迁徙过程中可能会死亡并落入深海,这被称为“鲸鱼坠落”,为大量没有阳光和氧气的生物提供充足的食物。
参考文献:Changting Zhong, Gang Li, Zeng Meng, Beluga whale optimization: A novel nature-inspired metaheuristic algorithm, Knowledge-Based Systems, 2022, 109215. doi:10.1016/j.knosys.2022.109215
白鲸优化算法包含三个阶段:游泳(全局勘探),觅食(局部开发)和“鲸鱼坠落”。
该阶段是模拟白鲸的游泳行为,根据位置的奇偶数采用不同的位置更新,其数学模型如下:
该阶段是模拟白鲸的捕食行为,当前白鲸可以根据其周围白鲸的位置移动和合作觅食。因此,白鲸通过相互共享位置信息来捕食,从而引入最佳位置和其他位置,其数学模型如下:
在迁徙和觅食期间,白鲸受到虎鲸,北极熊和人类的威胁。大多数白鲸都很聪明,可以通过彼此分享信息来逃避威胁。然而,少数白鲸没有幸存下来并落入深海海底,被其他生物所食,这种现象被称为“鲸鱼坠落”。
双向长短时记忆BiLSTM传统的权值和阈值更新方式采用梯度下降,由于梯度下降法容易使参数陷入局部最优。群智能优化算法具有较强的全局搜索能力,因此,本文采用白鲸优化算法BWO优化BiLSTM的权值和阈值,提高网络的求解精度。
BWO优化BiLSTM的目标函数为训练集上网络预测值与真实值的均方误差MSE,BiLSTM的隐藏层含5神经元,输入层为10个神经元,输出层为1个神经元,步长为1;BWO种群大小为50,最大迭代次数为100。数据集为:data=exp(sin(0:0.05:10*pi)).cos(0:0.05:10pi);%数据集(可以根据自己的需求更改)如下所示:
训练集和测试集各占数据集的70%和30%。
%% 白鲸优化算法BWO优化双向长短时记忆BiLSTM实现数据的预测。
data=exp(sin(0:0.05:10*pi)).*cos(0:0.05:10*pi);%数据集(可以根据自己的需求更改)
Dim=sum(sum(K(:,1).*K(:,2)));%维度
lb=-5;%下界
ub=5;%上界
fobj=@Fun;%计算训练集上的函数值(真实值与预测值的均方误差MSE)
SearchAgents_no=50; % 种群大小(可以修改)
Max_iteration=100; % 最大迭代次数(可以修改)
[bestX,fMin,BWO_curve]=BWO(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj); %白鲸优化算法BWO优化双向长短时记忆BiLSTM的权值阈值 bestX是最优权值阈值
o=TestFun(bestX);%在测试集上预测
o1=TrainFun(bestX);%在训练集上预测
save bestX bestX %保留白鲸优化算法BWO优化双向长短时记忆BiLSTM得到的最优参数
save BWO_curve BWO_curve %保留
%% 画出白鲸优化算法BWO优化双向长短时记忆BiLSTM的均方误差随迭代次数的图
figure
semilogy(BWO_curve,'Color','g')
xlabel('Iteration');
ylabel('MSE');
legend('BWO')
%%
display(['The best solution obtained by BWO is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by BWO is : ', num2str(fMin)]);%fMin越小说明白鲸优化算法BWO优化双向长短时记忆BiLSTM效果越好
训练集上MSE随迭代次数变化的曲线图:
训练集上真实值和预测值对比图:
测试集上真实值和预测值绝对误差(MAE):
由此可见,白鲸优化算法(Beluga whale optimization,BWO)优化双向长短时记忆BiLSTM的权值和阈值用于时间序列预测效果十分不错。