智能优化算法:金鹰优化算法-附代码
智能优化算法:金鹰优化算法
文章目录
- 智能优化算法:金鹰优化算法
- 1.算法原理
- 1.1 猎物选择
- 1.2 攻击行为
- 1.3 巡航行为
- 1.4 移动到新的位置
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
摘要:金鹰优化算法(Golden Eagle Optimizer,GEO)是于2020年提出的新型智能优化算法,具有收敛速度快,寻优能力强的特点。
1.算法原理
GEO灵感来自于金鹰的智慧,它们在螺旋轨迹的不同阶段调整速度,进行狩猎。在狩猎的初期,它们表现出更多的巡游和寻找猎物的倾向,在最后阶段,它们表现出更多的攻击倾向。金鹰调整这两个部分,以便在最短的时间内,在可行的区域内捕捉到最佳的猎物。这种行为是数学模型,以突出探索和全局优化方法的开发。GEO是基于金鹰的螺旋运动。正如前面提到的,每只金鹰都记住了它到目前为止所到过的最佳位置。鹰同时具有攻击猎物和巡航寻找更好食物的吸引力。
1.1 猎物选择
每个迭代中的猎物选择,每只金鹰必须选择一个猎物来执行巡航和攻击操作。在 GEO,猎物被描绘成金鹰群,目前为止找到的最佳解决方案。每只金鹰都能记住目前为止找到的最好的解决方案。在每次迭代中,每个搜索代理,从整个群体的记忆中选择目标猎物。然后计算每只金鹰相对于选定猎物的攻击和巡航向量。如果新的位置(通过攻击和巡航向量计算)优于内存中的前一个位置,则更新内存。猎物选择策略在地理信息系统中占有重要地位。选择可以以一种基本的方式进行,每只金鹰只在自己的记忆中选择猎物。为了让金鹰更好地探索这片土地,我们提出了一个随机的一对一映射方案,每只金鹰从其他鸟群成员的记忆中,随机选择当前迭代中的猎物。值得注意的是,被选中的猎物不一定是最近或最远的猎物。在这个方案中,记忆中的每一个猎物,都被分配或映射给一只金鹰。然后每只金鹰对选定的猎物进行攻击和巡航。
1.2 攻击行为
攻击行为可以通过一个矢量来模拟,从金鹰当前的位置开始,到金鹰记忆中猎物的位置结束。通过式(1)可以计算出金鹰的攻击矢量:
Ai⃗=Xf∗⃗−Xi⃗(1)\vec{A_i}=\vec{X^*_f}-\vec{X_i}\tag{1} Ai=Xf∗−Xi(1)
Ai⃗\vec{A_i}Ai为第iii只金鹰的攻击矢量,Xf∗⃗\vec{X^*_f}Xf∗为当前金鹰所到达的最佳地点(猎物),Xi⃗\vec{X_i}Xi第i只老鹰目前的位置。
1.3 巡航行为
巡航向量是根据攻击向量计算的。巡航向量是圆的切向量,垂直于攻击向量。巡航也可以被认为是金鹰相对于猎物的线性速度。三维巡航矢量位于与圆相切的超平面内,因此,为了计算巡航矢量,我们必须首先计算切超平面的方程。超平面的维数方程可以由超平面的任意点和与超平面垂直的向量确定,这个向量称为超平面的法向量。方程(2)表示了超平面方程在三维空间中的标量形式。
h1x1+h2x2+...+hnxn=d⟹∑j=1nhjxj=d(2)h_1x_1+h_2x_2+...+h_nx_n=d\Longrightarrow \sum_{j=1}^nh_jx_j=d\tag{2} h1x1+h2x2+...+hnxn=d⟹j=1∑nhjxj=d(2)
此处,H=[h1,h2,...,hn]H=[h_1,h_2,...,h_n]H=[h1,h2,...,hn]为法向量,X=[x1,x2,...,xn]X=[x_1,x_2,...,x_n]X=[x1,x2,...,xn]为变量向量,设P⃗=[p1,p2,...,pn]\vec{P}=[p_1,p_2,...,p_n]P=[p1,p2,...,pn]为超平面上的任意点,d=H⃗P⃗=∑i=1nhjpjd=\vec{H}\vec{P}=\sum_{i=1}^nh_jp_jd=HP=∑i=1nhjpj。
把Ai⃗\vec{A_i}Ai(攻击向量)看作超平面的法线,那么Cit⃗\vec{C_i^t}Cit(在迭代中的金鹰巡航向量)就可以根据方程(3)表示出它所属的超平面。
∑j=1najxj=∑j=1najtxj∗(3)\sum_{j=1}^na_jx_j=\sum_{j=1}^na_j^tx_j^*\tag{3} j=1∑najxj=j=1∑najtxj∗(3)
此处,A=[a1,a2,...,an]A=[a_1,a_2,...,a_n]A=[a1,a2,...,an]为攻击向量,X=[x1,x2,...,xn]X=[x_1,x_2,...,x_n]X=[x1,x2,...,xn]为决策/设计变量向量,X∗=[x1∗,x2∗,...,xn∗]X^*=[x_1^*,x_2^*,...,x_n^*]X∗=[x1∗,x2∗,...,xn∗]为被选中的猎物的位置。
为了在巡航超平面上找到一个随机矢量,我们必须首先在这个超平面上找到一个随机目的点,而不是我们已经有的那个(金鹰的当前位置)。注意到巡航矢量的起点是金鹰的当前位置。由于超平面比它们的环境空间小一维,我们不能简单地生成一个随机的1×n1×n1×n点。三维空间中的简单随机点不能保证位于巡航超平面上。位于三维巡航超平面上的一个新点具有自由度,意味着维度可以自由选择,但超平面方程决定了最后的1维度,如方程式(2)所示。必须选择最后一个维数使其满足超平面方程,因此,我们有自由变量和一个固定变量。我们使用下面的程序来找到一个随机维度的目的地点,位于金鹰的巡航超平面上。具体步骤如下:
第一步:从变量中随机选择一个变量作为固定变量。
第二步:将随机值赋给除第k个变量以外的所有变量,因为第k个变量是固定的。
第二步:用方程(4)求出固定变量的值。
ck=d−∑j,j≠kajak(4)c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k}\tag{4} ck=akd−∑j,j=kaj(4)
此处ckc_kck为目标点CCC的第kkk个元素,aja_jaj攻击向量的Ai⃗\vec{A_i}Ai第jjj个元素,kkk为固定变量的编号。找到了巡航的随机目的地。方程(5)显示了巡航超平面上目的点的一般表示。
Ci⃗={c1=random,c2=random,...,ck=d−∑j,j≠kajak,...,cn=random}(5)\vec{C_i}=\{c_1=random,c_2=random,...,c_k=\frac{d-\sum_{j,j\neq k}a_j}{a_k},...,c_n=random\}\tag{5} Ci={c1=random,c2=random,...,ck=akd−∑j,j=kaj,...,cn=random}(5)
1.4 移动到新的位置
金鹰的位移由攻击和向量组成。我们将金鹰迭代的步长向量定义为方程(6)和(7)。
Δxi=r1⃗paAi⃗∣∣Ai⃗∣∣+r2⃗pcCi⃗∣∣Ci⃗∣∣(6)\Delta x_i = \vec{r_1}p_a\frac{\vec{A_i}}{||\vec{A_i}||}+\vec{r_2}p_c\frac{\vec{C_i}}{||\vec{C_i}||}\tag{6} Δxi=r1pa∣∣Ai∣∣Ai+r2pc∣∣Ci∣∣Ci(6)
∣∣Ai⃗∣∣=∑jnaj2,∣∣Ci⃗∣∣=∑jncj2(7)||\vec{A_i}||=\sqrt{\sum_j^na_j^2},||\vec{C_i}||=\sqrt{\sum_j^nc_j^2}\tag{7} ∣∣Ai∣∣=j∑naj2,∣∣Ci∣∣=j∑ncj2(7)
此处,pap_apa为攻击系数,pcp_cpc为巡航系数。r1⃗\vec{r_1}r1和r2⃗\vec{r_2}r2为[0,1]内的随机向量。因此,通过将迭代中的步向量加到迭代中的位置,可以简单地计算出金鹰在迭代中的位置:
xt+1=xt+Δxit(8)x^{t+1}=x^t+\Delta x_i^t \tag{8} xt+1=xt+Δxit(8)
此处,xt+1x^{t+1}xt+1为金鹰的第t+1t+1t+1次的位置,xtx^txt为金鹰的第ttt次的位置,Δxit\Delta x_i^tΔxit为金鹰的移动的步长大小。
如果金鹰新位置的适应性比它记忆中的位置更好,这只鹰的记忆会随着新位置而更新。否则,记忆仍然完好无损,但是鹰会在新的位置上。在新的迭代中,每只金鹰从种群中随机选择一只金鹰,围绕其最佳访问位置旋转,计算攻击矢量,计算巡航矢量,最后计算下一次迭代的步长矢量和新位置。这个循环将一直执行,直到满足任何终止条件。我们提到方程(6)中有两个系数,即攻击系数和巡航系数见式(9),用来控制攻击和巡航向量对步长矢量的影响。
{pa=pa0+tT∣paT−pa0∣pc=pc0+tT∣pcT−pc0∣(9)\begin{cases} p_a=p_a^0+\frac{t}{T}|p_a^T-p_a^0|\\ p_c=p_c^0+\frac{t}{T}|p_c^T-p_c^0| \end{cases}\tag{9} {pa=pa0+Tt∣paT−pa0∣pc=pc0+Tt∣pcT−pc0∣(9)
此处,pa0p_a^0pa0和paTp_a^TpaT为pap_apa的初始和最终的值,pc0p_c^0pc0和pcTp_c^TpcT为pcp_cpc的初始和最终的值。
算法流程:
步骤1:初始化金鹰的数量。
步骤2:计算适应度函数初始化群体记忆。
步骤3:初始化pap_apa和pcp_cpc。
步骤4:根据式(9)更新pap_apa和pcp_cpc.
步骤5:从种群的记忆计算攻击向量中随机选择猎物见式(1)。
步骤6:计算巡航向量(方程式(2)-(5))计算步长向量(方程式(6)-(8))更新位置(方程式(8))评估新位置的适应度函数。
步骤7:更新最优解及最优位置。
步骤7:判断是否满足最大迭代次数,若满足,则输出最优金鹰位置和全局最优解,否则,返回步骤4重新迭代计算。
2.算法结果
3.参考文献
[1] Mohammadi-Balani, A., Dehghan Nayeri, M., Azar, A., Taghizadeh-Yazdi, M., Golden Eagle Optimizer: A nature-inspired metaheuristic algorithm, Computers & Industrial Engineering (2020).
4.Matlab代码
智能优化算法:金鹰优化算法-附代码相关推荐
- 智能优化算法:闪电搜索算法-附代码
智能优化算法:闪电搜索算法-附代码 文章目录 智能优化算法:闪电搜索算法-附代码 1.算法原理 1.1 过渡放电体 1.2 空间放电体 1.3 引导放电体 2.算法结果 3.参考文献 4.Matlab ...
- 智能优化算法:布谷鸟搜索算法-附代码
智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...
- 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码
基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...
- 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码
基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...
- 相位 unwrap 与 wrap 算法详解(附代码)
相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...
- 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)
相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-Apriori算法 数据挖掘领域十大经 ...
- 二分查找算法详解(附代码)
二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...
- 数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)
相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-SVM算法(超详细附代码) 数据挖掘领 ...
- 麻雀优化算法_多种智能优化算法应用案例分享-附代码
1.智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码_Jack旭的博客-CSDN博客blog.csdn.net 2.智能优化算法 ...
- 智能优化算法:麻雀搜索算法-附代码
2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...
最新文章
- getAttribute方法在IE6/7下获取href/src属性值的问题
- 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
- 【C语言】while后接分号“ ;”的用法
- HYSBZ - 1588 营业额统计(Splay)
- 动态绑定 datagridview
- Linux I2C核心、总线与设备驱动(一)
- 移动端APP扁平化UI设计解析
- webharvest-sample-1
- swift可选类型_Swift可选
- 64位CentOS 6.4下安装wine
- 一文了解机器学习以及其相关领域(下)
- html5 crop,HTML5内联SVG autocrop空格
- layui实现简单分页
- PS如何制作火焰效果图特效步骤教程
- php办公电脑配置,性能不俗的办公电脑推荐配置 八代奔腾G5400搭配H310电脑配置推荐...
- html页面字体飞入飞出特效,JS网页特效:星空飞入效果
- 全新体验的飞冰 2.0 正式发布
- 2 Linux内核目录概述
- QVGA、WVGA、VGA、WQVGA、SQVGA等几种手机分辨率扫盲!
- Vista主题包(高仿真)_方舟系统站
热门文章
- 31. 了解各种与排序有关的选择
- static、const、static const分析
- lingo软件的基本使用方法_(PS软件)PHOTOSHOP基础操作和基本工具的使用
- arnold官方帮助文档_Python用不好英语水平不够?这里有官方中文文档你看不看
- 使用lombok注解,在代码编写过程中可以调用到get/set方法,但在编译的时候报错找不到get/set方法
- 服务器虚拟化底层系统安装,服务器虚拟化安装步骤 虚拟化会动摇操作系统的地位吗?...
- 软件需求最佳实践pdf_| 专家观点 | 彭瑜:PackML成功的秘诀 ——简论软件定义包装过程的最佳实践...
- vue 多个回调_vue中多层组件间参数的传递、子孙组件回调父组件执行结果
- vmnet0 子网ip和子网掩码_IP地址知识介绍及子网划分与汇总
- opencv获取人脸眼镜位置_用opencv检测人眼并定位瞳孔位置