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

文章目录

  • 第二十一章 基于鹰栖息(eagle perching)的无模型优化
    • 21.1 灵感
    • 21.2 EPO数学表达
    • 21.3 EPO算法
    • 21.4 改进的EPO
    • 21.5 算法对比与应用
    • 21.6 结论
    • 参考文献

第二十一章 基于鹰栖息(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算法通过以下实现这种转换:

lscale=lscale∗eta(1)l_{\text {scale}}=l_{\text {scale}} * \text {eta}\tag {1} lscale​=lscale​∗eta(1)

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

eta=(reslscale)1/ts(2)e t a=\left(\frac{r e s}{l_{s c a l e}}\right)^{1 / t_{s}}\tag {2} eta=(lscale​res​)1/ts​(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} X=X+ΔX(4)
其中

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

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

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

Yi,j=f(Xi,j)(7)Y_{i, j}=f\left(X_{i, j}\right)\tag {7} Yi,j​=f(Xi,j​)(7)

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

  但在原文中式(8)应该是写错了。

图2 原文中的错误

21.3 EPO算法

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

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

21.4 改进的EPO

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

eta=etamax⁡−t∗etamax⁡−etamin⁡ts(11)e t a=e t a_{\max }-t * \frac{e t a_{\max }-e t a_{\min }}{t_{s}}\tag {11} eta=etamax​−t∗ts​etamax​−etamin​​(11)

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

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

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

Ysort=[Ybest1Ybest2Ybest3Ybest4…Yworst](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} Ysort​=[Ybest1​​Ybest2​​Ybest3​​Ybest4​​…Yworst​](12)

Ysort=[Ybest1Ybest2Ybest3Ybest4…Ybestn](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} Ysort​=[Ybest1​​Ybest2​​Ybest3​​Ybest4​​…Ybestn​​](13)

Xsort=[Xbest1Xbest2Xbest3Xbest4…Xbestn](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} Xsort​=[Xbest1​​Xbest2​​Xbest3​​Xbest4​​…Xbestn​​](14)

Xavg=Xbest1+Xbest2+Xbest3…+Xbestnn(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} Xavg​=nXbest1​​+Xbest2​​+Xbest3​​…+Xbestn​​​(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.

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

  1. 鸟哥的Linux私房菜(服务器)- 第二十一章、文件服务器之三: FTP 服务器

    第二十一章.文件服务器之三: FTP 服务器 最近更新日期:2011/08/08 FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行档案的传输,尤其是大 ...

  2. 数字图像处理:第二十一章 视频压缩标准

    第二十一章视频压缩标准 目录 引言 H.261标准 MPEG-1标准 MPEG-2标准 MPEG-4标准 MPEG-7标准 作业 1. 引言 视频压缩标准是多媒体领域中的重要内容,针对视频会议.网络通 ...

  3. input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  4. Visual C++ 2008入门经典 第二十一章更新数据源

    /* 第二十一章更新数据源 本章主要内容:1 数据库事务2 如何使用记录集对像更新数据库3 如何在更新操作中将数据从记录集传输到数据库4 如何更新表中的现有行5 如何添加新行到表中21.1 更新操作2 ...

  5. 20190922 On Java8 第二十一章 数组

    第二十一章 数组 一等对象 对象数组和基元数组在使用上是完全相同的.唯一的不同之处就是对象数组存储的是对象的引用,而基元数组则直接存储基本数据类型的值. 多维数组 Array.deepToString ...

  6. 频谱仪的更改ip_【正点原子FPGA连载】第五十一章 基于FFT IP核的音频频谱仪-摘自【正点原子】开拓者 FPGA 开发指南 (amobbs.com 阿莫电子论坛)...

    本帖最后由 正点原子 于 2020-10-24 15:19 编辑 203429z6c3os33t8albi33.png (66.36 KB) 2019-7-28 15:14 上传 第五十一章 基于FF ...

  7. 计算机网络离不开光缆,九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt...

    九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt 第二十一章信息的传递,第四节越来越宽的信息之路,1微波的性质更接近光波,大致沿_______传播,需要每隔_____k ...

  8. 羊皮卷的实践-第二十一章

    第二十一章 高山滑雪是人与环境以及时间的竞赛.每当我看到输赢之间只差极短的时间时,我就不禁摇头同情那些输家. 第一名的时间是一分三十七秒二二. 第二名的时间是一分二十七秒二五. 也就是说,冠军与平庸之 ...

  9. 数字图像处理:第二十三章 基于内容的图象与视频检索

    第二十三章基于内容的图象与视频检索 目录 1.    引言 2.    基于内容检索的图象特征 3.    基于内容的视频标注与检索 作业 1. 引言 随着社会的信息化发展日益深入,互连网日益普及,越 ...

  10. 数字图像处理:第十一章基于特征向量的变换

    第十一章基于特征向量的变换 目录 1.    主分量分析(PCA).K-L变换(Hotelling变换) 2.    奇异值分解(SVD) 3.    DCT与K-L变换的关系 1. 主分量分析(PC ...

最新文章

  1. 207. Course Schedule 210. Course Schedule II
  2. oracle解除锁表【原】
  3. 使用免费的云服务 AWS EC2
  4. Java中的8种原始类型
  5. Java List接口概述
  6. Ubuntu 13.04开机亮度调节
  7. 更快,可扩展性更强的 Apache Cassandra 4.0 正式发布
  8. eclipse 中安装activitil流程插件步骤
  9. 5.Magento资源配置(Setup Resource)
  10. php函数: urlencode
  11. Tableau实战 楼市降温分析(七)现期房销售额及累计增长
  12. 柳夜熙又更新了,虚拟人的底层技术是什么?
  13. 双击桌面计算机删除,笔记本电脑点击图标自动删除怎么办
  14. XSS Filter Evasion Cheat Sheet 中文版
  15. 用户行为分析(Python)
  16. woocommerce 下单失败也会清空购物车
  17. python基于django校园信息管理平台设计与实现(项目源码+视频录制+截图)
  18. ROS下如何将GPS数据在卫星地图显示(两种开源方法)
  19. zigzag convert
  20. 初学Arduino环境下WeMos D1制造简单智能垃圾桶项目(蜂鸣器、 SG90舵机、超声波模块)

热门文章

  1. C++ 简单的SQL注入过滤
  2. 07. 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
  3. docker自定义网络
  4. 组词组合 php,PHP实现的简单组词算法示例
  5. ajax发送html标识,如何在jQuery的.ajax函数中正确转义作为数据发送的html
  6. 2021-1-31linux学习纪要
  7. (day 30 - 二叉树的先序遍历 )剑指 Offer 55 - I. 二叉树的深度
  8. spring AOP概念及xml配置
  9. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  10. JavaWeb:Tomcat、Servlet