单目标应用:瞪羚优化算法(Gazelle Optimization Algorithm,GOA)优化BiLSTM权值和阈值(提供Matlab代码)

112 篇文章 26 订阅
111 篇文章 15 订阅

瞪羚优化算法(Gazelle Optimization Algorithm,GOA)由Agushaka等人于2022年提出,该算法模拟了瞪羚逃避捕食者的行为,思路新颖,性能高效。
瞪羚的身高60-110厘米,体重13-29千克。该属物种有像小鹿一样的浅棕色皮毛,身体的下部一般是白色的。然而,有些个体在背部和腹部的相邻部分有一个长长的黑色标记。雄性瞪羚有长而弯曲的角。瞪羚体质强壮,是非常敏捷的动物;脚上有4趾,但侧趾比鹿类更加退化,有适合长跑的腿,适于奔跑。可以以每小时50公里的速度持续奔跑。
在这里插入图片描述
瞪羚一般生活在沙漠和半沙漠、干旱的草原、树木繁茂的稀树草原、灌木丛生的草原、丘陵和浅林中。瞪羚是高度社会化的动物,所有的瞪羚都是群居的。一些群有多达700名成员,尽管一些瞪羚群很小并且按性别隔离。例如,雌性和年轻的幼羚生活在一起,还生活在10-30只雌性的群中。雄性单独生活或自己组群与其他雄性一起生活。雄性族群被称为单身汉族群。在迁徙过程中,雌雄混群,在交配季节,畜群的隔离更为突出,但只要有繁殖机会,它们就会被领地雄性分开。
瞪羚优化算法包含全局搜索,局部搜索和瞪羚逃生三个阶段:

一、种群随机初始化

 Elite  = [ x 1 , 1 ′ x 1 , 2 ′ ⋯ x 1 , d − 1 ′ x 1 , d ′ x 2 , 1 ′ x 2 , 2 ′ ⋯ x 2 , d − 1 ′ x 2 , d ′ ⋮ ⋮ x i , j ′ ⋮ ⋮ x n , 1 ′ x n , 2 ′ ⋯ x n , d − 1 ′ x n , d ′ ] \text { Elite }=\left[\begin{array}{lllll} x_{1,1}^{\prime} & x_{1,2}^{\prime} & \cdots & x_{1, d-1}^{\prime} & x_{1, d}^{\prime} \\ x_{2,1}^{\prime} & x_{2,2}^{\prime} & \cdots & x_{2, d-1}^{\prime} & x_{2, d}^{\prime} \\ \vdots & \vdots & x_{i, j}^{\prime} & \vdots & \vdots \\ x_{n, 1}^{\prime} & x_{n, 2}^{\prime} & \cdots & x_{n, d-1}^{\prime} & x_{n, d}^{\prime} \end{array}\right]  Elite =x1,1x2,1xn,1x1,2x2,2xn,2xi,jx1,d1x2,d1xn,d1x1,dx2,dxn,d
其中, x i , j = rand ⁡ × ( U B j − L B j ) + L B j x_{i, j}=\operatorname{rand} \times\left(\mathrm{UB}_{j}-\mathrm{LB}_{j}\right)+\mathrm{LB}_{j} xi,j=rand×(UBjLBj)+LBj
瞪羚优化算法中涉及布朗运动及莱维飞行:

1.1布朗运动

布朗运动是悬浮微粒被分子撞击后做无规则运动。布朗运动是将看起来连成一片的液体,在高倍显微镜下看其实是由许许多多分子组成的。液体分子不停地做无规则的运动,不断地随机撞击悬浮微粒。当悬浮的微粒足够小的时候,由于受到的来自各个方向的液体分子的撞击作用是不平衡的。在某一瞬间,微粒在另一个方向受到的撞击作用超强的时候,致使微粒又向其它方向运动,这样就引起了微粒的无规则的运动,即布朗运动。布朗运动满足正态(高斯)概率分布函数:
f B ( x ; μ , σ ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) = 1 2 π exp ⁡ ( − x 2 2 ) f_{B}(x ; \mu, \sigma)=\frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)=\frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{x^{2}}{2}\right) fB(x;μ,σ)=2πσ2 1exp(2σ2(xμ)2)=2π 1exp(2x2)

1.2莱维飞行

莱维飞行以法国数学家保罗·莱维命名,指的是步长的概率分布为重尾分布的随机行走,也就是说在随机行走的过程中有相对较高的概率出现大跨步。与步长分布没有重尾的随机行走相比,莱维飞行的运动轨迹就像时不时可以飞行一样,故名。当随机行走的空间维数高于一维时,莱维飞行通常还要求步长分布是各向同性的。
L ( x j ) ≈ ∣ x j ∣ 1 − α L\left(x_{j}\right) \approx\left|x_{j}\right|^{1-\alpha} L(xj)xj1α
f L ( x ; α , γ ) = 1 π ∫ 0 ∞ exp ⁡ ( − γ q α ) cos ⁡ ( q x ) δ q f_{L}(x ; \alpha, \gamma)=\frac{1}{\pi} \int_{0}^{\infty} \exp \left(-\gamma q^{\alpha}\right) \cos (\mathrm{qx}) \delta q fL(x;α,γ)=π10exp(γqα)cos(qx)δq
Levy ⁡ ( α ) = 0.05 × x ∣ y ∣ 1 α \operatorname{Levy}(\alpha)=0.05 \times \frac{x}{|y|^{\frac{1}{\alpha}}} Levy(α)=0.05×yα1x
其中, σ x = [ Γ ( 1 + α ) sin ⁡ ( π α 2 ) Γ ( ( 1 + α ) 2 ) α 2 ( α − 1 ) 2 ] 1 / α , σ y = 1 , α = 1.5 , x = Normal ⁡ ( 0 , σ x 2 ) , y = Normal ⁡ ( 0 , σ y 2 ) \sigma_{x}=\left[\frac{\Gamma(1+\alpha) \sin \left(\frac{\pi \alpha}{2}\right)}{\Gamma\left(\frac{(1+\alpha)}{2}\right) \alpha 2^{\frac{(\alpha-1)}{2}}}\right]^{1 / \alpha},\sigma_{y}=1, \alpha=1.5,x=\operatorname{Normal}\left(0, \sigma_{x}^{2}\right) , y=\operatorname{Normal}\left(0, \sigma_{y}^{2}\right) σx=[Γ(2(1+α))α22(α1)Γ(1+α)sin(2πα)]1/ασy=1,α=1.5x=Normal(0,σx2)y=Normal(0,σy2)

二、全局搜索

该阶段模拟瞪羚在没有捕食者或者捕食者跟踪情形下的自由放牧,瞪羚采取布朗运动,其位置更新如下:
在这里插入图片描述

 gazelle  i + 1 =  gazelle  i + S . R ∗ . R B ∗ (  Elite  i − R B ∗  gazelle  i ) \text { gazelle }_{i+1}=\text { gazelle }_{i}+S . R * . R_{B} *\left(\text { Elite }_{i}-R_{B} * \text { gazelle } _{i})\right.  gazelle i+1= gazelle i+S.R.RB( Elite iRB gazelle i)
其中,S表示瞪羚的移动速度, R B R_{B} RB表示基于布朗运动的随机向量,R是在取值为0~1之间的随数。

三、局部搜索

该阶段模拟瞪羚发现捕食者后的逃跑行为,分为两个阶段,并且每个阶段都依据迭代次数的奇偶性而采取两种相反运动。第一阶段:瞪羚在发现捕食者前期采取莱维飞行;第二阶段:瞪羚在发现捕食者后期采取布朗运动。
在这里插入图片描述

3.1第一阶段

瞪羚在发现捕食者的前期采取莱维飞行
 gazelle  i + 1 =  gazelle  i + S ⋅ μ ⋅ R ∗ ⋅ R L ∗ .  (  Elite  i − R L ∗  gazelle  i ) \text { gazelle }_{i+1}=\text { gazelle }_{i}+S \cdot \mu \cdot R * \cdot R_{L} * \text {. }\left(\text { Elite }_{i}-R_{L} * \text { gazelle }_{i}\right)  gazelle i+1= gazelle i+SμRRL( Elite iRL gazelle i)
其中, μ \mu μ为-1或1,表示两种运动方向; R L R_{L} RL表示基于 Lévy 分布的随机数向量。

3.2第二阶段

瞪羚在发现捕食者的后期采取布朗运动
 gazelle  i + 1 =  gazelle  i + S ⋅ μ ⋅ C F ∗ . R B ∗ (  Elite  i − R L ∗ ⋅  gazelle  i ) \text { gazelle }_{i+1}=\text { gazelle }_{i}+S \cdot \mu \cdot CF * . R_{B} *\left(\text { Elite }_{i}-R_{L} * \cdot \text { gazelle }_{i}\right)  gazelle i+1= gazelle i+SμCF.RB( Elite iRL gazelle i)
其中, C F = ( 1 − i t e r  Maxiter  ) ( 2  iter   Maxiter  ) C F=\left(1-\frac{i t e r}{\text { Maxiter }}\right)^{\left(2 \frac{\text { iter }}{\text { Maxiter }}\right)} CF=(1 Maxiter iter)(2 Maxiter  iter )表示捕食者的累积效应。

四、瞪羚逃生

瞪羚面对捕食者时的存活率为0.66,这意味着捕食者有34%的机会狩猎成功,用PSRs表示捕食者的狩猎成功率,并以此对瞪羚逃生过程建立数学模型:
 gazelle  i + 1 = {  gazelle  i + C F [ L B + R ∗ . ( U B − L B ) ] ∗ . U  if  r ≤ P S R s  gazelle  i + [ P S R s ( 1 − r ) + r ] (  gazell  r 1 −  gazelle  r 2 )  else  \text { gazelle }_{i+1}=\left\{\begin{array}{ll} \text { gazelle }_{i}+C F[L B+R * .(U B-L B)] * . U & \text { if } r \leq P S R s \\ \text { gazelle }_{i}+[P S R s(1-r)+r]\left(\text { gazell }_{r_{1}}-\text { gazelle }_{r_{2}}\right) & \text { else } \end{array}\right.  gazelle i+1={ gazelle i+CF[LB+R.(UBLB)].U gazelle i+[PSRs(1r)+r]( gazell r1 gazelle r2) if rPSRs else 
其中,r为0~1之间的随机数。

五、GOA算法描述

在这里插入图片描述

五、GOA算法流程

在这里插入图片描述

参考文献:Agushaka, J.O., Ezugwu, A.E. & Abualigah, L. Gazelle optimization algorithm: a novel nature-inspired metaheuristic optimizer. Neural Comput & Applic (2022). https://doi.org/10.1007/s00521-022-07854-6

六、双向长短时记忆BiLSTM

在这里插入图片描述
双向长短时记忆BiLSTM传统的权值和阈值更新方式采用梯度下降,由于梯度下降法容易使参数陷入局部最优。群智能优化算法具有较强的全局搜索能力,因此,本文采用瞪羚优化算法GOA优化BiLSTM的权值和阈值,提高网络的求解精度。

七、实验结果

GOA优化BiLSTM的目标函数为训练集上网络预测值与真实值的均方误差MSE,BiLSTM的隐藏层含5神经元,输入层为10个神经元,输出层为1个神经元,步长为1;GOA种群大小为30,最大迭代次数为300。数据集为:data=exp(sin(0:0.1:20*pi)).cos(0:0.05:10pi);%数据集(可以根据自己的需求更改)如下所示:

%% 瞪羚优化算法(Gazelle Optimization Algorithm,GOA)优化双向长短时记忆BiLSTM实现数据的预测。
close all
clear
clc
global net K XTrain YTrain XTest YTest mappingy method
data=exp(sin(0:0.1:20*pi)).*cos(0:0.05:10*pi);%数据集(可以根据自己的需求更改)
lb=-10;%下界
ub=10;%上界
fobj=@Fun;%计算训练集上的函数值(真实值与预测值的均方误差MSE)
SearchAgents_no=30; % 种群大小(可以修改)
Max_iteration=300; % 最大迭代次数(可以修改)
[bestX,fMin,GOA_curve]=GOA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);  %瞪羚优化算法GOA优化双向长短时记忆BiLSTM的权值阈值 bestX是最优权值阈值
o=TestFun(bestX);%在测试集上预测
o1=TrainFun(bestX);%在训练集上预测
save bestX bestX %保留瞪羚优化算法GOA优化双向长短时记忆BiLSTM得到的最优参数
save GOA_curve GOA_curve %保留
%% 画出瞪羚优化算法GOA优化双向长短时记忆BiLSTM的均方误差随迭代次数的图
figure
semilogy(GOA_curve,'Color','g')
xlabel('Iteration');
ylabel('MSE');
legend('GOA')
%%
display(['The best solution obtained by GOA is : ', num2str(bestX)]);
display(['The best optimal value of the objective funciton found by GOA is : ', num2str(fMin)]);%fMin越小说明瞪羚优化算法GOA优化双向长短时记忆BiLSTM效果越好

%代码
链接:https://pan.baidu.com/s/11I6eMyMU3k-UHfUu1O_mIA 
提取码:1234

训练集上MSE随迭代次数变化的曲线图:
在这里插入图片描述

训练集上真实值和预测值对比图:
在这里插入图片描述

训练集上真实值和预测值绝对误差(MAE):
在这里插入图片描述

测试集上真实值和预测值对比图:
在这里插入图片描述

测试集上真实值和预测值绝对误差(MAE):
在这里插入图片描述

由此可见,瞪羚优化算法(Gazelle Optimization Algorithm,GOA)优化双向长短时记忆BiLSTM的权值和阈值用于时间序列预测效果十分不错。

八、参考代码

文件夹内包含GOA优化BiLSTM的完整Matlab代码
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值