第二十一章 基于鹰栖息(eagle perching)的无模型优化

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

第二十一章 基于鹰栖息(eagle perching)的无模型优化

  今天介绍一种新颖的优化算法—鹰栖息优化(eagle perching optimizer,EPO)[1],该算法模仿了老鹰栖息的天性,由Ameer Tamoor Khan和Shuai Li于2018年提出的,这篇文章也是李老师推荐给我学习的。总体感觉该算法原理简单,实现容易,参数较少,性能较优。

21.1 灵感

  鹰是许多大型食肉鸟类的统称,它们属于鹰科,也是食肉动物。它们的捕猎方式很独特,它们会飞到可能很高的地方,然后开始定位猎物。猎物一旦被跟踪,它们就俯冲下去捕获猎物。老鹰居住在高处,通常是高树、峭壁和大山上。它们有着天生的算法可以帮助追踪最高的地方,首先老鹰先高高地飞向空中,观察地面并采样一些点,在这些采样点中寻找最高位置,然后它们下降到那个点,随着越来越靠近,它们会再次进行采样,进一步明确最高点位置。就是通过这样迭代执行该过程并进行微调以寻找驻留的最高位置。图1展示了它们内置的栖息算法的本质。
在这里插入图片描述

图1 老鹰栖息的天性。(a)老鹰在搜索空间中盘旋。(b)老鹰进行采样并在其中寻找最高点。(c)老鹰到达采样点。(d)老鹰进一步对搜索空间采样,不过此时空间很小,同样寻找最高点。(e~h)老鹰遵循相同的模式,直至到达最高点。

  EPO就是利用了这种特性,然后用于获得最优解。在该算法中会有一群老鹰各自寻找最佳的驻留高度,然后再从所有的老鹰中寻找最优解。

21.2 EPO数学表达

  老鹰通过一种简单但独特的方式探索地形,在高空飞行时,它通过取样几个点来观察四周,然后向最高点移动,到达最高点后,它再次扫视四周,重复同样的过程,这种重复的过程使鹰能够到达最高点。当老鹰飞向高空俯瞰地面时,由于视野较为开阔,可以看到整体地貌,这实际上为探索的过程,当老鹰飞向采样点时,又会在其周围寻找是否还有更高的点,这就是利用的过程。在函数优化时,可以利用这种思想,先全局搜索再局部利用,从而达到较好的优化,而从探索到利用的转换是随机优化算法的关键所在,EPO算法通过以下实现这种转换:

l scale = l scale eta (1) l_{\text {scale}}=l_{\text {scale}} * \text {eta}\tag {1}

  其中lscale是缩放变量(scaling variable),该值随着迭代的进行会不断降低,使得算法由探索转向利用。eta是一收缩常量,满足0<eta<1,其可以根据最终值分辨率计算得到:

e t a = ( r e s l s c a l e ) 1 / t s (2) e t a=\left(\frac{r e s}{l_{s c a l e}}\right)^{1 / t_{s}}\tag {2}

  其中ts是最大迭代次数,res为分辨率范围参数,满足0<res<lscale以将eta限制在0到1之间。注意如果eta>1,那么就无法实现从探索到利用的目标,因为随着算法的运行,探索的空间会越来越大。

  为了实现更快的优化,文中采用了一群老鹰协同进行空间搜索。

在这里插入图片描述
  其中n表示粒子(老鹰)数量,m为决策空间维度。

  为了理解粒子(老鹰)在搜索空间中的移动,考虑一个位于x位置的粒子,它可以自由地、随机地向所有可能的方向移动。在每次迭代时,在当前位置增加一项ΔX(随机值),即X+ΔX,则有:

X = X + Δ X (4) X=X+\Delta X\tag {4}
其中
在这里插入图片描述

  R∈(0,1)表示随机值,对于X的每一个元素有

X i , j = X i , j + Δ X i , j (6) X_{i, j}=X_{i, j}+\Delta X_{i, j}\tag {6}
  其中i代表第i个粒子,j代表当前位置的第j维。

  群体中的每一只老鹰通过下式评估采样点的高度:

Y i , j = f ( X i , j ) (7) Y_{i, j}=f\left(X_{i, j}\right)\tag {7}

  对于最小化函数,为了寻找最小的Ymin,定义两个变量YBest和XBest,其进化过程如下:

在这里插入图片描述

  但在原文中式(8)应该是写错了。
在这里插入图片描述

图2 原文中的错误

21.3 EPO算法

  通过以上数学描述,可以给出如下的EPO的伪代码。

procedure
	初始化所有变量
	for <最大迭代次数 do
		根据式(5)计算ΔX
		根据式(4)计算X
		for <总粒子个数> do
			根据式(7)评估Y
		end for
		根据式(7)评估Ymin
		通过式(8)比较Ymin
		if 式(8)满足 then
			执行式(9)和(10)
			根据式(1)重新评估lscale
		end if
	end for
end procedure

21.4 改进的EPO

  为了加速EPO的收敛,文中还对eta的计算进行了一点改进,每次迭代时,eta按下式进行计算:

e t a = e t a max t e t a max e t a min t s (11) e t a=e t a_{\max }-t * \frac{e t a_{\max }-e t a_{\min }}{t_{s}}\tag {11}

  其中etamax和etamin分别代表eta的最大值(初始值)和最小值(最终值),该eta可以使得从探索向利用的转换更贱快速和有效。文中还给出了具有可变eta的改进EPO算法。

procedure
	初始化所有变量
	for <最大迭代次数 do
		根据式(5)计算ΔX
		根据式(4)计算X
		for <总粒子个数> do
			根据式(7)评估Y
		end for
		根据式(7)评估Ymin
		通过式(8)比较Ymin
		if 式(8)满足 then
			执行式(9)和(10)
			根据式(1)重新评估lscale
			根据式(11)计算eta
		end if
	end for
end procedure

  另一个改进在于,根据式(7)评估完所有粒子的值后,又根据式(12)对解按照从优到劣的顺序进行排序,从中选择n个最好的解,并将这些解对应的坐标存于式(14)中的数组中,再对数组中的元素进行平均(式(15)),得到的结果用于根据式(7)计算函数值。这个改进的意义在于,通过平均值Xavg而不是单个最优Xbest,进一步扩大算法范围。

Y sort = [ Y best 1 Y best 2 Y best 3 Y best 4 Y worst ] (12) Y_{\text {sort}}=\left[Y_{\text {best}_{1}} \quad Y_{\text {best}_{2}} \quad Y_{\text {best}_{3}} \quad Y_{\text {best}_{4}} \quad \ldots Y_{\text {worst}}\right]\tag {12}

Y sort = [ Y best 1 Y best 2 Y best 3 Y best 4 Y best n ] (13) Y_{\text {sort}}=\left[Y_{\text {best}_{1}} \quad Y_{\text {best}_{2}} \quad Y_{\text {best}_{3}} \quad Y_{\text {best}_{4}} \ldots Y_{\text {best}_{n}}\right]\tag {13}

X sort = [ X best 1 X best 2 X best 3 X best 4 X best n ] (14) X_{\text {sort}}=\left[X_{\text {best}_{1}} \quad X_{\text {best}_{2}} \quad X_{\text {best}_{3}} \quad X_{\text {best}_{4}} \ldots X_{\text {best}_{n}}\right]\tag {14}

X a v g = X b e s t 1 + X b e s t 2 + X b e s t 3 + X b e s t n n (15) X_{a v g}=\frac{X_{b e s t_{1}}+X_{b e s t_{2}}+X_{b e s t_{3}} \ldots+X_{b e s t_{n}}}{n}\tag {15}

  文中在单峰函数和多峰函数上比较了两种算法的性能,结论是改进的EPO在精度和标准差上更优。

21.5 算法对比与应用

  文中比较了EPO与其他元启发式算法(蚁狮优化-ALO、蜻蜓优化-DA、粒子群-PSO、遗传算法-GA、花朵授粉算法-FPA、物质状态搜索算法-SMA、布谷鸟搜索-CS、蝙蝠算法-BA和萤火虫算法-FA)的性能,结果表明在单峰和多峰函数上都能得到很高的精度。
在这里插入图片描述

图3 单峰案例结果

在这里插入图片描述

图4 多峰案例结果

  在约束优化中,主要用EPO解决了悬臂梁设计问题、三杆桁架设计问题和齿轮系设计问题。
在这里插入图片描述

图5 悬臂梁设计问题

在这里插入图片描述

图6 三杆桁架设计问题

在这里插入图片描述

图7 齿轮系设计问题

21.6 结论

  其实论文中还给出了EPO算法的收敛性证明,以及一些关键参数对算法性能的影响,这里我没有详细地讲述,感兴趣的读者可以点击“阅读全文”查看原文。我说说一下自己的感受吧,论文中主要采用了一种从探索到利用的控制策略,是一个由粗调到细调的过程,但是有一点论文中没有指出,参数lscale到底是如何控制变量的取值空间的,是影响ΔX吗还是什么,相关公式和算法中都没有提及,最后的验证部分本质上还都是数值优化问题,这与算法对比部分有点重复,个人感觉如果可以解决一些组合优化问题就更好了。

参考文献

  1. Tamoor Khan, A., et al. Model-Free Optimization Using Eagle Perching Optimizer. arXiv e-prints, 2018.
发布了42 篇原创文章 · 获赞 56 · 访问量 5719

猜你喜欢

转载自blog.csdn.net/hba646333407/article/details/103529483