Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

时间:2022-12-06 11:56:24


Giant Trevally Optimizer (GTO): A Novel Metaheuristic Algorithm for Global Optimization and Challenging
参考文献:H. T. Sadeeq and A. M. Abdulazeez, “Giant Trevally Optimizer (GTO): A Novel Metaheuristic Algorithm for Global Optimization and Challenging Engineering Problems,” in IEEE Access, vol. 10, pp. 121615-121640, 2022, doi: 10.1109/ACCESS.2022.3223388.
注:仅记录学习,如有侵权,联系删除。

一、灵感来源

  大鲹鱼是一种大型的海洋鱼类。属于鲹科鱼类。它也被称为巨型王鱼。他们在印度洋和太平洋上很丰富,例如在澳大利亚和新西兰周围地区。他们也在东非和夏威夷群岛周围被发现。
  大鲹鱼通常是银色的,有一些黑斑。它可以通过其尖锐的头部、强壮的尾部鳞片和许多其他解剖细节来识别。他们的身高可以达到170cm,体重可达到80公斤。他们的日常食物包括鱼类、头足类、甲壳类和海鸟。
  文献研究了随着搜索空间的扩大,巨鲹在其生态系统内和栖息地之间的移动。一些数据表明,成年巨鲹每天和季节性的移动在他们的漫游范围内可达9公里。幼小的能移动到距离它们的家园环礁70公里。
  在它的大多数栖息地,巨鲹是一个*的捕食者,并且使用只能方式进行捕猎。众所周知,巨鲹会单独和成群捕猎,根据研究,成群捕猎的效率更高。群体中捕捉猎物最有效的成员是领导者或者第一捕食者。
  在旱季,超过50万只燕鸥挤在印度洋的一个偏远环礁上。据报道,大概会有50只巨鲹会来捕食。在明确的捕食区域后,巨鲹开始跟踪其猎物,然后跳出水面,攻击猎物。
  这些新奇的捕猎策略,如觅食移动的牌子,在食物数量上选择合适的区域,以及跳出水面攻击和捕捉猎物,是设计GTO的主要灵感。

二、算法的初始化

  X代表GTO种群矩阵, X i = ( x i , 1 , x i , 2 , . . . , x i , m ) X_{i}=(x_{i,1},x_{i,2},...,x_{i,m}) Xi=(xi,1,xi,2,...,xi,m)是GTO的第i个成员(候选解)。
  F代表适应度函数值。
X = [ X 1 ⋮ X i ⋮ X N ] N × m = [ x 1 , 1 ⋯ x 1 , j ⋯ x 1 , m ⋮ ⋱ ⋮ ⋮ x i , 1 ⋯ x i , j ⋯ x i , m ⋮ ⋮ ⋱ ⋮ x N , 1 ⋯ x N , j ⋯ x N , m ] N × m X=\left[\begin{array}{c} X_{1} \\ \vdots \\ X_{i} \\ \vdots \\ X_{N} \end{array}\right]_{N \times m}=\left[\begin{array}{ccccc} x_{1,1} & \cdots & x_{1, j} & \cdots & x_{1, m} \\ \vdots & \ddots & \vdots & & \vdots \\ x_{i, 1} & \cdots & x_{i, j} & \cdots & x_{i, m} \\ \vdots & & \vdots & \ddots & \vdots \\ x_{N, 1} & \cdots & x_{N, j} & \cdots & x_{N, m} \end{array}\right]_{N \times m} X=X1XiXNN×m=x1,1xi,1xN,1x1,jxi,jxN,jx1,mxi,mxN,mN×m
x i , j = l b j +  rand  ⋅ ( u b j − l b j ) , i = 1 , 2 , … , N , j = 1 , 2 , … , m x_{i, j}=lb_{j}+\text { rand } \cdot\left(ub_{j}-lb_{j}\right), i=1,2, \ldots, N, j=1,2, \ldots, m xi,j=lbj+ rand (ubjlbj),i=1,2,,N,j=1,2,,m
F = [ F 1 ⋮ F i ⋮ F N ] N × 1 = [ F ( X 1 ) ⋮ F ( X i ) ⋮ F ( X N ) ] N × 1 F=\left[\begin{array}{c} F_{1} \\ \vdots \\ F_{i} \\ \vdots \\ F_{N} \end{array}\right]_{N \times 1}=\left[\begin{array}{c} F\left(X_{1}\right) \\ \vdots \\ F\left(X_{i}\right) \\ \vdots \\ F\left(X_{N}\right) \end{array}\right]_{N \times 1} F=F1FiFNN×1=F(X1)F(Xi)F(XN)N×1

  式中: x i , j x_{i, j} xi,j代表第i个成员的第j个变量的值;N是种群大小;m是维度;rand代表[0,1]之间的随机数; l b j lb_{ j} lbj代表下限; u b j ub_{ j} ubj代表上限。

三、GTO的数学模型

  所提出的GTO算法模仿了巨鲹猎杀海鸟时的行为。因此,所提出的GTO算法大致分为以下三个步骤:利用莱维飞行进行广泛搜索,选择区域步骤以确定狩猎区域,以及通过跳出水面追逐和攻击猎物。因此,GTO的探索阶段体现在第一个步骤中。第二三步骤代表GTO的开发阶段。巨鲹在大自然界捕食时的情况如下所示。

            Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

  Phase1:广泛搜索

  如果我们考虑到巨鲹的作用,并且如前面所述,巨鲹可以长途跋涉进行日常的饮食。因此,在这一步中,用下面的式子来模拟巨鲹的觅食运动模式。
X ( t + 1 ) =  Best  P × R + ( (  Maximm  −  Minimum  ) × R +  Minimum  ) ×  Levy  (  Dim  ) \begin{aligned} X(t+1)= & \text { Best }_{P} \times R+((\text { Maximm }-\text { Minimum }) \\ & \times R+\text { Minimum }) \times \text { Levy }(\text { Dim }) \end{aligned} X(t+1)= Best P×R+(( Maximm  Minimum )×R+ Minimum )× Levy ( Dim )
  其中  Best  P \text{ Best }_{P}  Best P 是上一次搜索的最佳位置,R是一个随机数,取值在0到1之间。  Levy  (  Dim  ) \text { Levy }(\text { Dim })  Levy ( Dim )Levy飞行,他是一类特殊的非高斯随机过程,其步长由所谓的levy分布决定。该算法进行全局搜索的能力得益于其偶尔的大步幅。此外,使用levy飞行的主要优点是避免了局部优化和提高了收敛率。
  在这方面,值得一提的是,许多研究表明,包括海洋捕食者在内的多种动物都表现出levy飞行的行为。levy飞行用下面的式子计算。
Levy ⁡ (  Dim  ) = step ⁡ × u × σ 1 1 / β \operatorname{Levy}(\text { Dim })=\operatorname{step} \times \frac{u \times \sigma}{1^{1} / \beta} Levy( Dim )=step×11/βu×σ
  step是步长,固定为0.01; β \beta β是levy飞行分布函数的指数,其值取值范围为0到2,本文设定为1.5;u和v是在(0,1)范围内正态分布的随机数。 σ \sigma σ通过下面的式子进行计算。
σ ⁡ = ( Γ ( 1 + β ) × sin ⁡ e ( π β 2 ) Γ ( 1 + β 2 ) × β × 2 ( β − 1 2 ) ) \operatorname\sigma=\left(\frac{\Gamma(1+\beta) \times \sin e\left(\frac{\pi \beta}{2}\right)}{\Gamma\left(\frac{1+\beta}{2}\right) \times \beta \times 2\left(\frac{\beta-1}{2}\right)}\right) σ=Γ(21+β)×β×2(2β1)Γ(1+β)×sine(2πβ)

  Phase2:选择区域

  在选择区域的步骤中,巨鲹在选定的搜索空间内识别和选择食物数量方面的最佳区域,在那里他们可以猎取事物。下面的式子模拟了这种行为。

X ( t + 1 ) =  Best  P × A × R + Meaninfo − X i ( t ) × R X(t+1)=\text { Best }_{P} \times A \times R+\text{Meaninfo}-Xi(t) \times R X(t+1)= Best P×A×R+MeaninfoXi(t)×R
  A是一个位置变化控制参数,范围为0.3至0.4。 X i ( t ) Xi(t) Xi(t)是当前巨鲹在当前迭代的位置。同时Meaninfo指的是平均值,表示这些巨鲹已经用完了以前各点的所有可用信息。计算公式如下。
MeanInfo = 1 N ∑ i = 1 N X i ( t ) \text {MeanInfo}=\frac{1}{N} \sum_{i=1}^{N} X i(t) MeanInfo=N1i=1NXi(t)

选择区域的有效性,文献在sphere函数上进行了测试。10个个体,5次迭代。表明,使用最佳点和平均值作为选择区域步骤的基础,提高了所有解决方案的质量。也有图表明,所有的搜索都位于最佳点附近。(我写这篇的时候还未进行验证,可自行参照原文进行验证)

  Phase3:攻击

  在上一步骤中,在指定了最佳狩猎区域后。在这个步骤中,代表了GTO的开发阶段,鲹鱼开始追逐猎物。在这里,也是最后,当鲹鱼足够接近鸟类时,它通过杂技般地跳出水面并抓住鸟类来攻击。
  为了模拟巨鲹在追逐和攻击猎物时的行为,在GTO中假定巨鲹会收到视觉扭曲的影响,这主要是由光的折射引起的。光的折射是指光波在穿越两种介质(如水、玻璃和空气)的界面时,其轨迹发生偏移。如下图所示。
          Matlab群体智能优化算法之大鲹鱼优化算法(GTO)
  在GTO中,如下图所示,鸟是物体,而大鲹是观察者,图中的虚线表示视觉失真。由于光的折射,鸟总是被看成比它实际高度高。如果我们知道了入射角,就有可能预测折射角是多少,同样,如果知道了折射角,就有可能预判入射角。
          Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

η 1 sin ⁡ θ 1 = η 2 sin ⁡ θ 2 \eta_{1} \sin \theta_{1}=\eta_{2} \sin \theta_{2} η1sinθ1=η2sinθ2
  其中 η 1 = 1.00029 \eta_{1}=1.00029 η1=1.00029, η 2 \eta_{2} η2=1.33分别表示空气和水的绝对折射率。而 θ 1 \theta_{1} θ1 θ 2 \theta_{2} θ2分别表示入射角和折射角。 θ 2 \theta_{2} θ2是区间[0,360]中的一个随机数。

   θ 1 \theta_{1} θ1通过下面的式子来得到。
sin ⁡ θ 1 = η 2 η 1 sin ⁡ θ 2 \sin \theta_{1}=\frac{\eta_{2}}{\eta_{1}} \sin \theta_{2} sinθ1=η1η2sinθ2
  V是视觉失真,sin是变量的正弦,单位是度,D是猎物和攻击者之间的距离。式子如下面两个所示。
V = sin ⁡ ( θ 1 ∘ ) × D \mathcal{V}=\sin \left(\theta_{1}^{\circ}\right) \times \mathcal{D} V=sin(θ1)×D

D = ∣ (  Best  P − X i ( t ) ) ∣ \mathcal{D}=\mid\left(\text { Best }_{P}-X i(t)\right) \mid D=( Best PXi(t))
  然后用下面的式子对打鲹追赶和跳出水面时的行为进行数学模拟。L表示模拟追赶鸟的发射速度。其中 × F − o b j ( X i ( t ) ) \times F_{-} o b j(X i(t)) ×Fobj(Xi(t))指的是X在当前迭代的的适应度值。
X ( t + 1 ) = L + V + H X(t+1)=\mathcal{L}+\mathcal{V}+\mathcal{H} X(t+1)=L+V+H

L = X i ( t ) × sin ⁡ ( θ 2 ∘ ) × F − o b j ( X i ( t ) ) \mathcal{L}=X i(t) \times \sin \left(\theta_{2}^{\circ}\right) \times F_{-} o b j(X i(t)) L=Xi(t)×sin(θ2)×Fobj(Xi(t))
  最后这一项H指定了跳跃斜率函数,是算法能够自适应地进行从探索阶段到开发阶段的适当过度,用下面的式子进行计算。其中t和T分别指当前迭代和最大迭代次数,R是一个随机数,这里指开发步骤中大鲹的不同运动感。值得一提的是,在迭代过程中,H有一个从2到0的递减趋势,而且该算法在开发步骤中尝试开发解的邻域(开发解的领域这个我不大理解,先备注上)。
H = R × ( 2 − t × 2 T ) \mathcal{H}=R \times\left(2-t \times \frac{2}{T}\right) H=R×(2t×T2)

四、流程图

Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

五、伪代码

Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

六、实验分析和结果

  为了适当验证GTO算法的性能,原作者进行了两组实验,对GTO提供的实验结果进行评估,并于其他算法得到的结果进行比较
  案例1:第一个实验使用具有各种类型特征的四十个基本测试函数从多个角度评估算法的性能。
  案例2:使用五个具有挑战性的工程设计有话问题对GTO算法的有效性进行了评估。

  注:原文已经进行大量实验结果分析,感兴趣的请阅读原文,学习学习一篇好的论文是怎么写的。源代码也已公开,我就不点运行和截图了,大家自行下载。

  特别提示:不要买什么基本的算法,这些算法都是全网公开的,优秀的东西从来都不保密,不怕任何人抄袭的,各位不要再交智商税了。

Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

收获:

  1. GTO分三个阶段,其实都是在位置更新上,第一个阶段levy这个没有什么新意
  2. 第二个阶段就用到了一个平均值,可能是我看的少,觉得由些许创新型
  3. 第三个阶段,算是这篇文章的亮点,引入了折射率这个想法,加入了视觉误差和自动调整两个。
  4. 做了大量的对比试验,很完整的分析,优秀的论文不是通篇说自己哪里哪里都好,看清晰的完整的分析。
  5. 没了。。。