文章目录

  • 一、理论基础
    • 1、金鹰优化算法
      • (1)螺旋运动
      • (2)猎物选择
      • (3)攻击(开发)
      • (4)巡航(探索)
      • (5)移动到新位置
      • (6)从探索到开发的过渡
    • 2、GEO算法伪代码
  • 二、仿真实验与分析
  • 三、参考文献

一、理论基础

1、金鹰优化算法

本文提出了一种基于自然启发的元启发式算法来解决全局优化问题,称为金鹰优化算法(Golden eagle optimizer, GEO)。GEO的核心灵感是金鹰在其螺旋轨迹的不同阶段调整速度以进行狩猎的智能。在狩猎的最初阶段,它们更倾向于游弋和寻找猎物,在最后阶段,它们更倾向于攻击。金鹰通过调整这两个分量,在尽可能短的时间内捕获可行区域内最好的猎物。这种行为通过数学建模来强调对全局优化方法的探索和开发。

(1)螺旋运动

GEO基于金鹰的螺旋运动。如前所述,每只金鹰都会记住它迄今为止去过的最佳地点。鹰同时具有攻击猎物和寻找更好食物的吸引力。
在每次迭代中,每个金鹰iii随机选择另一只金鹰fff的猎物,并围绕金鹰fff迄今为止访问的最佳位置旋转。金鹰iii也可以选择存储自己的记忆,其中,f∈{1,2,⋯,PopSize}f\in\{1, 2,\cdots, PopSize\}f∈{1,2,⋯,PopSize}。

(2)猎物选择

在每次迭代中,每只金鹰都必须选择一只猎物来执行巡航和攻击操作。在GEO中,猎物被建模为金鹰群迄今为止找到的最佳解决方案。每只金鹰都能记住迄今为止找到的最佳解决方案。在每次迭代中,每个搜索代理从整个群体的记忆中选择一个目标猎物,然后计算每个金鹰相对于选定猎物的攻击和巡航向量。如果新位置(通过攻击和巡航矢量计算)优于内存中的前一个位置,则内存会更新。猎物选择策略在GEO中起着重要作用。选择可以以一种基本的方式进行,每只金鹰只在自己的记忆中选择猎物。为了让金鹰更好地探索空间,提出了一个随机一对一的映射方案,每个金鹰在当前迭代中从其他群体成员的记忆中随机选择其猎物。值得注意的是,选定的猎物不一定是最近或最远的猎物。在这个方案中,记忆中的每一个猎物都被分配或映射到一只金鹰。然后,每只金鹰对选定的猎物执行攻击和巡航操作。

(3)攻击(开发)

攻击行为可以通过一个向量来建模,该向量从金鹰的当前位置开始,以金鹰记忆中猎物的位置结束。金鹰iii的攻击向量可以通过式(1)计算:A→i=X→f∗−X→i(1)\overrightarrow A_i=\overrightarrow X_f^*-\overrightarrow X_i\tag{1}Ai​=Xf∗​−Xi​(1)其中,A→i\overrightarrow A_iAi​表示金鹰iii的攻击向量,X→f∗\overrightarrow X_f^*Xf∗​表示当前种群的最佳位置(猎物),X→i\overrightarrow X_iXi​表示金鹰iii的当前位置。由于攻击向量引导金鹰群朝向最佳访问的位置移动,因此它强调了GEO的开发阶段。

(4)巡航(探索)

基于攻击向量计算巡航向量。巡航向量是圆的切线向量,垂直于攻击向量。巡航也可以被认为是金鹰相对于猎物的线性速度。nnn维巡航向量位于圆的切线超平面内,因此,为了计算巡航向量,我们必须首先计算切线超平面的方程。nnn维超平面的方程可以由该超平面上的任意点和与该超平面垂直的向量确定,该向量称为该超平面的法向量。式(2)显示了nnn维空间中超平面方程的标量形式:h1x1+h2x2+⋯+hnxn⇒∑j=1nhjxj=d(2)h_1x_1+h_2x_2+\cdots+h_nx_n\Rightarrow\sum_{j=1}^nh_jx_j=d\tag{2}h1​x1​+h2​x2​+⋯+hn​xn​⇒j=1∑n​hj​xj​=d(2)其中,H→=[h1,h2,⋯,hn]\overrightarrow H=[h_1,h_2,\cdots,h_n]H=[h1​,h2​,⋯,hn​]为法向量,X→=[x1,x2,⋯,xn]\overrightarrow X=[x_1,x_2,\cdots,x_n]X=[x1​,x2​,⋯,xn​]为平面内某一向量,P→=[p1,p2,⋯,pn]\overrightarrow P=[p_1,p_2,\cdots,p_n]P=[p1​,p2​,⋯,pn​]为超平面上的任一向量,d=H→⋅P→=∑j=1nhjpjd=\overrightarrow H\cdot\overrightarrow P=\sum_{j=1}^nh_jp_jd=H⋅P=∑j=1n​hj​pj​。如果把X→i\overrightarrow X_iXi​(金鹰iii的位置)看作超平面上的任一点,A→i\overrightarrow A_iAi​(攻击向量)看作超平面的法线,那么C→it\overrightarrow C_i^tCit​(第ttt次迭代中金鹰iii的巡航向量)可根据式(3)计算出其所属的超平面。∑j=1najxj=∑j=1najtxj∗(3)\sum_{j=1}^na_jx_j=\sum_{j=1}^na_j^tx_j^*\tag{3}j=1∑n​aj​xj​=j=1∑n​ajt​xj∗​(3)其中,A→i=[a1,a2,⋯,an]\overrightarrow A_i=[a_1,a_2,\cdots,a_n]Ai​=[a1​,a2​,⋯,an​]为攻击向量,X→=[x1,x2,⋯,xn]\overrightarrow X=[x_1,x_2,\cdots,x_n]X=[x1​,x2​,⋯,xn​]为决策向量,X→∗=[x1∗,x2∗,⋯,xn∗]\overrightarrow X^*=[x_1^*,x_2^*,\cdots,x_n^*]X∗=[x1∗​,x2∗​,⋯,xn∗​]为选择的猎物的位置。
为了在巡航超平面上找到一个随机向量,必须首先在这个超平面上找到一个随机的目的点CCC,而不是金鹰iii的当前位置。使用以下三个步骤来寻找金鹰iii巡航超平面上的随机nnn维目的地CCC。
Step 1. 从nnn个变量中随机选择一个变量作为固定变量。用kkk表示选择变量的索引,注意,不能从攻击向量A→i\overrightarrow A_iAi​中对应元素为零的变量中选择固定变量。原因是,当式(2)中某个变量的系数等于零时,超平面平行于该变量的轴,该变量可以取其他n−1n-1n−1个变量的随机组合的任何值。例如,在三维平面3x1+2x2=103x_1+2x_2=103x1​+2x2​=10,如果选择k=3,{x1=2,x2=5}k=3,\{x_1=2,x_2=5\}k=3,{x1​=2,x2​=5},就找不到唯一的点;相反,在这个平面上得到了无穷多个点,它们都满足平面方程{[2,5,1],[2,5,2],[2,5,3],⋯}\{[2,5,1],[2,5,2],[2,5,3],\cdots\}{[2,5,1],[2,5,2],[2,5,3],⋯}。
Step 2. 将随机值分配给除第kkk个变量之外的所有变量,因为第kkk个变量是固定的。
Step 3. 使用式(4)找到固定变量的值:ck=d−∑j,j≠kajak(4)c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k}\tag{4}ck​=ak​d−∑j,j​=k​aj​​(4)其中,ckc_kck​是目标点CCC的第kkk个元素,aja_jaj​是攻击向量A→i\overrightarrow A_iAi​的第jjj个元素,ddd由式(2)计算所得,aka_kak​是攻击向量A→i\overrightarrow A_iAi​的第kkk个元素,kkk是固定变量的索引。式(5)给出了巡航超平面上目的地的一般表示:C→i=(c1=random,c2=random,⋯,ck=d−∑j,j≠kajak,⋯,cn=random)(5)\overrightarrow C_i=\left(c_1=\text{random},c_2=\text{random},\cdots,c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k},\cdots,c_n=\text{random}\right)\tag{5}Ci​=(c1​=random,c2​=random,⋯,ck​=ak​d−∑j,j​=k​aj​​,⋯,cn​=random)(5)现在确定了目标点,可以在第ttt次迭代中计算金鹰iii的巡航向量。获得的目标点的元素是0探索阶段。

(5)移动到新位置

金雕的位置更新包括攻击和向量。将迭代ttt中金鹰iii的步长向量定义为式(6):Δxi=r→1patA→i∣∣A→i∣∣+r→2pctC→i∣∣C→i∣∣(6)\Delta x_i=\overrightarrow r_1p_a^t\frac{\overrightarrow A_i}{||\overrightarrow A_i||}+\overrightarrow r_2p_c^t\frac{\overrightarrow C_i}{||\overrightarrow C_i||}\tag{6}Δxi​=r1​pat​∣∣Ai​∣∣Ai​​+r2​pct​∣∣Ci​∣∣Ci​​(6)其中,patp_a^tpat​是迭代ttt中的攻击系数,pctp_c^tpct​是迭代ttt中的巡航系数,并调整金鹰受到攻击和巡航的影响;r→1\overrightarrow r_1r1​和r→2\overrightarrow r_2r2​是元素位于区间[0,1][0,1][0,1]内的随机向量;∣∣A→i∣∣||\overrightarrow A_i||∣∣Ai​∣∣和∣∣C→i∣∣||\overrightarrow C_i||∣∣Ci​∣∣是攻击和巡航向量的欧几里德范数,使用式(7)计算:∣∣A→i∣∣=∑j=1naj2,∣∣C→i∣∣=∑j=1ncj2(7)||\overrightarrow A_i||=\sqrt{\sum_{j=1}^na_j^2},\,\,||\overrightarrow C_i||=\sqrt{\sum_{j=1}^nc_j^2}\tag{7}∣∣Ai​∣∣=j=1∑n​aj2​​,∣∣Ci​∣∣=j=1∑n​cj2​​(7)迭代t+1t+1t+1中金鹰的位置只需将迭代ttt中的步长向量与迭代ttt中的位置相加即可计算出来。xt+1=xt+Δxit(8)x^{t+1}=x^t+\Delta x_i^t\tag{8}xt+1=xt+Δxit​(8)如果金鹰iii的新位置的适应度比其记忆中的位置更好,则该鹰的记忆将用新位置更新。否则,记忆将保持,但鹰将驻留在新位置。在新的迭代中,每个金鹰随机地从种群中选择一只金鹰绕它的最佳访问位置旋转,计算攻击向量和巡航向量,最后,更新下一次迭代的步长向量和新位置。执行此循环,直到满足终止条件。

(6)从探索到开发的过渡

如前所述,金鹰在狩猎飞行的初始阶段表现出更高的巡航倾向,在最后阶段表现出更高的攻击倾向,这对应于在算法中,前期迭代中更多的探索和后期迭代中更多的开发。
GEO使用pap_apa​和pcp_cpc​从探索转向开发。该算法从低pap_apa​和高pcp_cpc​开始。随着迭代的进行,pap_apa​逐渐增加,而pcp_cpc​逐渐减少。这两个参数的初始值和最终值由用户定义。中间值可以使用式(9)中的线性转换进行计算。{pa=pa0+tT∣paT−pa0∣pc=pc0−tT∣pcT−pc0∣(9)\begin{dcases}p_a=p_a^0+\frac tT\left|p_a^T-p_a^0\right|\\[2ex]p_c=p_c^0-\frac tT\left|p_c^T-p_c^0\right|\end{dcases}\tag{9}⎩⎪⎨⎪⎧​pa​=pa0​+Tt​∣∣​paT​−pa0​∣∣​pc​=pc0​−Tt​∣∣​pcT​−pc0​∣∣​​(9)其中,ttt表示当前迭代次数,TTT表示最大迭代次数,pa0p_a^0pa0​和paTp_a^TpaT​分别是攻击倾向(pap_apa​)的初始值和最终值,pc0p_c^0pc0​和pcTp_c^TpcT​分别是巡航倾向(pcp_cpc​)的初始值和最终值。 本文攻击倾向和巡航倾向的初始值和最终值的取值分别为[pa0,paT]=[0.5,2],[pc0,pcT]=[1,0.5][p_a^0,p_a^T]=[0.5,2],[p_c^0,p_c^T]=[1,0.5][pa0​,paT​]=[0.5,2],[pc0​,pcT​]=[1,0.5]。

2、GEO算法伪代码

根据前面给出的基本概念及其相应的数学模型,下图给出了GEO单目标实现的伪代码。

图1 GEO算法伪代码

二、仿真实验与分析

将GEO与GWO和CSA进行对比,以文献[1]中表2和表3的F1、F9、F10为例,实验设置种群规模为50,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:

函数:F1
GEO:最差值: 3.5745e-31, 最优值: 0, 平均值: 1.1915e-32, 标准差: 6.5262e-32, 秩和检验: 1
GWO:最差值: 0.76207, 最优值: 1.5964e-09, 平均值: 0.050805, 标准差: 0.19334, 秩和检验: 1.7203e-12
CSA:最差值: 1.7079e-23, 最优值: 7.3018e-27, 平均值: 2.5369e-24, 标准差: 4.0567e-24, 秩和检验: 1.7203e-12
函数:F9
GEO:最差值: -959.6407, 最优值: -959.6407, 平均值: -959.6407, 标准差: 5.7815e-13, 秩和检验: NaN
GWO:最差值: -718.167, 最优值: -959.6407, 平均值: -920.422, 标准差: 68.0541, 秩和检验: 1.2118e-12
CSA:最差值: -894.5789, 最优值: -959.6407, 平均值: -951.6125, 标准差: 13.7516, 秩和检验: 1.1547e-12
函数:F10
GEO:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 3.3547e-06, 最优值: 6.9144e-08, 平均值: 1.3357e-06, 标准差: 1.0689e-06, 秩和检验: 1.2118e-12
CSA:最差值: 4.6537e-22, 最优值: 4.8687e-25, 平均值: 4.1093e-23, 标准差: 9.5057e-23, 秩和检验: 1.2118e-12

实验结果验证了GEO算法的优越性,表明GEO算法能够有效地找到全局最优解,避免局部最优解。

三、参考文献

[1] Abdolkarim Mohammadi-Balani, Mahmoud Dehghan Nayeri, Adel Azar, et al. Golden eagle optimizer: A nature-inspired metaheuristic algorithm[J]. Computers & Industrial Engineering, 2021,152: 107050.

基于金鹰优化算法的函数寻优算法相关推荐

  1. 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法

    <MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...

  2. 基于蚁群算法的函数寻优算法

    文章目录 一.理论基础 二.案例背景 1.问题描述 2.解题思路及步骤 三.MATLAB程序实现 1.清空环境变量 2.初始化参数 3.构建解空间和目标函数 4.迭代寻优 5.结果显示 6.绘图 四. ...

  3. 基于沙猫群优化算法的函数寻优算法

    文章目录 一.理论基础 1.沙猫群优化算法 (1)初始化种群 (2)搜索猎物(探索) (3)攻击猎物(开发) (4)探索和开发 2.SCSO算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基 ...

  4. 基于蜉蝣优化算法的函数寻优算法

    文章目录 一.理论基础 1.蜉蝣优化算法 (1)雄性蜉蝣的更新 (2)雌性蜉蝣的更新 (3)蜉蝣的交配过程 2.MA算法伪代码 二.仿真实验与结果分析 1.函数测试与数值分析 2.WSN三维覆盖优化 ...

  5. 基于金豺优化算法的函数寻优算法

    文章目录 一.理论基础 1.金豺优化算法 (1)搜索空间公式 (2)探索阶段或搜索猎物 (3)开发阶段或围捕和突袭猎物 (4)从探索转向开发 2.GJO伪代码 二.仿真实验与结果分析 三.参考文献 一 ...

  6. 基于果蝇优化算法的函数寻优算法

    文章目录 一.理论基础 二.算法步骤 1.启发 2.方向和距离 3.气味浓度判断值 4.适应度评估 5.寻找最优个体 6.飞行 7.迭代优化 三.案例背景 问题描述 四.MATLAB程序实现 1.清空 ...

  7. 基于蜂鸟优化算法的函数寻优算法

    文章目录 一.理论基础 1.自搜索阶段 2.引导搜索阶段 3.HOA伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 蜂鸟优化算法(Hummingbirds optimization algor ...

  8. 基于藤壶交配优化算法的函数寻优算法

    文章目录 一.理论基础 1.藤壶交配优化算法 1.1 哈迪-温伯格(Hardy-Weinberg)法则 1.2 BMO 1.2.1 初始化 1.2.2 选择过程 1.2.3 繁殖 2.BMO算法伪代码 ...

  9. 基于阿基米德优化算法的函数寻优算法

    文章目录 一.理论基础 1.算法步骤 (1)初始化 (2)更新密度和体积 (3)转移算子与密度算子 (4)勘探阶段 <1> 物体之间发生碰撞 <2> 物体之间无碰撞 <3 ...

最新文章

  1. 风向变了 网络安全又占股市风口
  2. ubuntu安装npm(npm install)时报错:run `npm audit fix` to fix them, or `npm audit` for details
  3. Vue中使用can-autoplay插件实现浏览器不支持自动播放音频时提示点击
  4. ref:ThinkPHP Builder.php SQL注入漏洞(= 3.2.3)
  5. work php高性能,RabbitMQ之工作(Work)模式(PHP版)-Go语言中文社区
  6. 用python祝福父亲节_父亲节到来 最适合给年老的父亲祝福语
  7. Python中用字典的映射来代替switch语句
  8. Java并发编程的艺术 记录(三)
  9. 拓端tecdat|R软件SIR模型网络结构扩散过程模拟
  10. 如何在JUnit5中使用Mockito
  11. 集成电路可测性设计(DFT,Design For Testability)
  12. WEB 视频开发-视频播放器
  13. android坐标计算器,函数科学计算器算坐标
  14. android xposed软重启,Xposed插件安装更新免重启手机方案
  15. 2019年小白学习web前端路线图及学习攻略
  16. 数学之美-读书笔记6-10章
  17. 动画骨骼【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)...
  18. python获取摄像头数据_用Python获取摄像头并实时控制人脸 !
  19. Lingo的基础语法(一)
  20. 浅谈使用git进行版本控制

热门文章

  1. mysql 日程设计_客服-电销日程表 - 数据库设计 - 数据库表结构 - 果创云
  2. faxicon.ico制作(笔记)
  3. oracle查看当前的数据库实例名称,主机名称
  4. HTTP(9):新增功能协议
  5. R︱sparkR的安装与使用、函数尝试笔记、一些案例
  6. 优雅地寻找网站源码(一)
  7. 《Thinking In Java》作者:不要使用并发
  8. Vuetify——使用icon图标
  9. Antd表单项根据后端返回字段显示错误的校验提示语
  10. RealView MDK开发工具