第二十一章 基于鹰栖息(eagle perching)的无模型优化
获取更多资讯,赶快关注上面的公众号吧!
文章目录
- 第二十一章 基于鹰栖息(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=(lscaleres)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−etamints(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∗tsetamax−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=[Ybest1Ybest2Ybest3Ybest4…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=[Ybest1Ybest2Ybest3Ybest4…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=[Xbest1Xbest2Xbest3Xbest4…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吗还是什么,相关公式和算法中都没有提及,最后的验证部分本质上还都是数值优化问题,这与算法对比部分有点重复,个人感觉如果可以解决一些组合优化问题就更好了。
参考文献
- Tamoor Khan, A., et al. Model-Free Optimization Using Eagle Perching Optimizer. arXiv e-prints, 2018.
第二十一章 基于鹰栖息(eagle perching)的无模型优化相关推荐
- 鸟哥的Linux私房菜(服务器)- 第二十一章、文件服务器之三: FTP 服务器
第二十一章.文件服务器之三: FTP 服务器 最近更新日期:2011/08/08 FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行档案的传输,尤其是大 ...
- 数字图像处理:第二十一章 视频压缩标准
第二十一章视频压缩标准 目录 引言 H.261标准 MPEG-1标准 MPEG-2标准 MPEG-4标准 MPEG-7标准 作业 1. 引言 视频压缩标准是多媒体领域中的重要内容,针对视频会议.网络通 ...
- input自适应_【正点原子FPGA连载】第十一章基于OV5640的自适应二值化实验-领航者ZYNQ之HLS 开发指南...
1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...
- Visual C++ 2008入门经典 第二十一章更新数据源
/* 第二十一章更新数据源 本章主要内容:1 数据库事务2 如何使用记录集对像更新数据库3 如何在更新操作中将数据从记录集传输到数据库4 如何更新表中的现有行5 如何添加新行到表中21.1 更新操作2 ...
- 20190922 On Java8 第二十一章 数组
第二十一章 数组 一等对象 对象数组和基元数组在使用上是完全相同的.唯一的不同之处就是对象数组存储的是对象的引用,而基元数组则直接存储基本数据类型的值. 多维数组 Array.deepToString ...
- 频谱仪的更改ip_【正点原子FPGA连载】第五十一章 基于FFT IP核的音频频谱仪-摘自【正点原子】开拓者 FPGA 开发指南 (amobbs.com 阿莫电子论坛)...
本帖最后由 正点原子 于 2020-10-24 15:19 编辑 203429z6c3os33t8albi33.png (66.36 KB) 2019-7-28 15:14 上传 第五十一章 基于FF ...
- 计算机网络离不开光缆,九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt...
九年级物理全册 第二十一章 第四节 越来越宽的信息之路习题课件 新人教版.ppt 第二十一章信息的传递,第四节越来越宽的信息之路,1微波的性质更接近光波,大致沿_______传播,需要每隔_____k ...
- 羊皮卷的实践-第二十一章
第二十一章 高山滑雪是人与环境以及时间的竞赛.每当我看到输赢之间只差极短的时间时,我就不禁摇头同情那些输家. 第一名的时间是一分三十七秒二二. 第二名的时间是一分二十七秒二五. 也就是说,冠军与平庸之 ...
- 数字图像处理:第二十三章 基于内容的图象与视频检索
第二十三章基于内容的图象与视频检索 目录 1. 引言 2. 基于内容检索的图象特征 3. 基于内容的视频标注与检索 作业 1. 引言 随着社会的信息化发展日益深入,互连网日益普及,越 ...
- 数字图像处理:第十一章基于特征向量的变换
第十一章基于特征向量的变换 目录 1. 主分量分析(PCA).K-L变换(Hotelling变换) 2. 奇异值分解(SVD) 3. DCT与K-L变换的关系 1. 主分量分析(PC ...
最新文章
- 207. Course Schedule 210. Course Schedule II
- oracle解除锁表【原】
- 使用免费的云服务 AWS EC2
- Java中的8种原始类型
- Java List接口概述
- Ubuntu 13.04开机亮度调节
- 更快,可扩展性更强的 Apache Cassandra 4.0 正式发布
- eclipse 中安装activitil流程插件步骤
- 5.Magento资源配置(Setup Resource)
- php函数: urlencode
- Tableau实战 楼市降温分析(七)现期房销售额及累计增长
- 柳夜熙又更新了,虚拟人的底层技术是什么?
- 双击桌面计算机删除,笔记本电脑点击图标自动删除怎么办
- XSS Filter Evasion Cheat Sheet 中文版
- 用户行为分析(Python)
- woocommerce 下单失败也会清空购物车
- python基于django校园信息管理平台设计与实现(项目源码+视频录制+截图)
- ROS下如何将GPS数据在卫星地图显示(两种开源方法)
- zigzag convert
- 初学Arduino环境下WeMos D1制造简单智能垃圾桶项目(蜂鸣器、	SG90舵机、超声波模块)
热门文章
- C++ 简单的SQL注入过滤
- 07. 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- docker自定义网络
- 组词组合 php,PHP实现的简单组词算法示例
- ajax发送html标识,如何在jQuery的.ajax函数中正确转义作为数据发送的html
- 2021-1-31linux学习纪要
- (day 30 - 二叉树的先序遍历 )剑指 Offer 55 - I. 二叉树的深度
- spring AOP概念及xml配置
- sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
- JavaWeb:Tomcat、Servlet