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

文章目录

  • 生物学泛型
  • 数学模型
    • 迁徙(探索)
    • 攻击(利用)

海鸥优化算法是印度学者Gaurav Dhiman于2018年提出的一种受生物启发的智能优化算法,该算法的主要灵感来自于自然界中海鸥的迁徙和攻击行为,这些行为经过数学建模和实现,可以在给定搜索空间中进行探索和利用。扫码关注公众号,后台回复“海鸥”或“SOA”可以获取Matlab代码。

生物学泛型

一般来说,海鸥是群居性的,它们用自己的智慧来寻找并攻击猎物。海鸥最重要的是它们的迁徙和攻击行为。迁徙被定义为海鸥从一个地方到另一个地方的季节性迁移,以寻找最丰富食物来源,以提供足够的能量。该行为可描述为:

  • 在迁徙过程中,它们成群结队地迁徙。海鸥的初始位置不同,以避免相互碰撞;
  • 在一个群体中,海鸥可以朝着最适合生存的海鸥的方向前进;
  • 其他海鸥可以根据最适合的海鸥更新它们的初始位置。

海鸥在迁徙过程中,会经常攻击其他候鸟,在攻击过程中,它们可以做出螺旋形的自然运动,如图1所示。

数学模型

迁徙(探索)

在迁移过程中,海鸥优化算法模拟了海鸥群如何向一个位置移动到另一个位置。在这个阶段,海鸥应该满足三个条件:

  • 避免碰撞:为了避免与邻居(即其他海鸥)的碰撞,引入了额外的变量AAA,用于计算新搜索代理的位置,如图2所示:
    C⃗s=A×P⃗s(x)(5)\vec{C}_{s}=A \times \vec{P}_{s}(x)\tag{5} Cs​=A×Ps​(x)(5)

其中,C⃗s\vec{C}_{s}Cs​表示与其他搜索代理不发生碰撞的搜索代理的位置,P⃗s\vec{P}_{s}Ps​表示搜索代理的当前位置,xxx表示当前迭代次数,AAA表示给定搜索空间中搜索代理的移动行为。
A=fc−(x×(fc/Max iteration ))(6)A=f_{c}-\left(x \times\left(f_{c} / \text { Max }_{\text {iteration }}\right)\right)\tag{6} A=fc​−(x×(fc​/ Max iteration ​))(6)
where: x=0,1,2,…x=0,1,2, \ldotsx=0,1,2,…, Max iteration _{\text {iteration }}iteration ​
其中引入fcf_cfc​是为了控制采用变量AAA的频率,使其从fcf_cfc​线性递减至0。fcf_cfc​可以设置为2。

  • 朝最优的邻居方向移动:在邻居避免碰撞之后,搜索代理朝着最优邻居的方向移动,如图3所示:
    M⃗S=B×(Pbs→(x)−P⃗S(x))(7)\vec{M}_{S}=B \times\left(\overrightarrow{P_{b s}}(x)-\vec{P}_{S}(x)\right)\tag{7} MS​=B×(Pbs​​(x)−PS​(x))(7)

其中M⃗S\vec{M}_{S}MS​表示搜索代理P⃗S\vec{P}_{S}PS​与最优搜索代理Pbs→\overrightarrow{P_{b s}}Pbs​​的相对位置。BBB的行为是随机的,这是为了在探索和开发之间取得适当的平衡,BBB的计算公式为:
B=2×A2×rd(8)B=2 \times A^{2} \times r d\tag{8} B=2×A2×rd(8)
其中rdrdrd是[0,1]范围内的随机数。

  • 靠近最优搜索代理:最后,搜索代理可以根据最优搜索代理更新自己的位置,如图4所示。
    Ds⃗=∣Cs⃗+Ms⃗∣(9)\vec {D_s}=|\vec {C_s}+\vec {M_s}|\tag{9} Ds​​=∣Cs​​+Ms​​∣(9)
    其中Ds⃗\vec {D_s}Ds​​表示搜索代理与最优搜索代理之间的距离。

攻击(利用)

海鸥在迁徙过程中可以不断改变攻击角度和速度,并利用翅膀和重量来保持高度。当攻击猎物时,会在空中形成螺旋运动,如图5所示。


在x,y,zx,y,zx,y,z平面内的行为可以描述为:
x′=r×cos(k)(10)x^\prime=r\times cos(k)\tag{10}x′=r×cos(k)(10)

y′=r×sin(k)(11)y^\prime=r\times sin(k)\tag{11}y′=r×sin(k)(11)

z′=r×k(12)z^\prime=r\times k\tag{12}z′=r×k(12)

r=u×ekv(13)r=u\times e^{kv}\tag{13}r=u×ekv(13)

其中,rrr为螺旋每一圈的半径,kkk是[0≤k≤2π][0\le k \le 2\pi][0≤k≤2π],uuu和vvv是定义螺旋形状的常量,eee是自然对数的底。搜索代理更新后的位置计算如下:
P⃗s(x)=(Ds⃗×x′×y′×z′)+P⃗bs(x)(14)\vec{P}_s(x)=(\vec{D_s}\times x^\prime \times y^\prime \times z^\prime)+\vec{P}_{bs}(x)\tag{14} Ps​(x)=(Ds​​×x′×y′×z′)+Pbs​(x)(14)

其中P⃗s(x)\vec{P}_s(x)Ps​(x)保存了最优解并更新其他搜索代理的位置。

提出的SOA首先随机初始化种群,搜索代理在迭代过程中更新其相对于最优搜索代理的位置,完整算法见Algorithm 1。

智能优化算法(源码)-海鸥优化算法(SOA)相关推荐

  1. 【老生谈算法】matlab实现FFT变换算法源码——FFT变换算法

    Matlab实现FFT变换(单边谱及双边谱) 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]Matlab实现FFT变换程序源 ...

  2. 【老生谈算法】matlab实现Kmeans聚类算法源码——Kmeans聚类算法

    matlab实现Kmeans聚类算法代码实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab实现Kmeans聚类 ...

  3. 【老生谈算法】matlab实现IIR滤波器算法源码——IIR滤波器算法

    matlab的IIR滤波器的实现算法详解 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlabIIR滤波器设计.doc ...

  4. 【老生谈算法】matlab实现PCA人脸识别算法源码——人脸识别算法

    基于主成分分析(Principal Component Analysis,PCA)方法的人脸识别讲解以及matlab代码实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序 ...

  5. Metis异常检测算法源码概要

    Metis异常检测算法源码概要 算法源码目录 算法层目录 基于指数移动平均算法(EWMA) 孤立森林 xgboost gbdt 3-Sigma 多项式回归 特征层目录 拟合特征 分类特征 统计特征 其 ...

  6. python求素数积_用Python求素数的快速算法源码示例

    本篇文章为Python算法相关,用Python求素数的快速算法源码示例.算法在Python的学习中算是一个要点,能研究明白算法的同学都可以算的上是Python的大牛了. 首先简单的来说下什么是素数:质 ...

  7. 【老生谈算法】matlab实现制动力优化源码——制动力优化

    matlab制动力优化程序源码 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab制动力优化程序源码.doc 2.算 ...

  8. (源码)群体智能优化算法之灰狼优化(Grey Wolf Optimizer,GWO)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第三十三章 灰狼优化(Grey Wolf Optimizer,GWO) 启发 数学模型和算法 社会等级 包围捕食 狩猎 攻击猎物(利用) 搜索猎物(探 ...

  9. 基于LM的双目图像校准算法源码第一部分

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  10. THOR:MindSpore 自研高阶优化器源码分析和实践应用

    摘要:这篇文章跟大家分享下THOR的实践应用.THOR算法的部分内容当前已经在MindSpore中开源 本文分享自华为云社区<MindSpore 自研高阶优化器源码分析和实践应用>,原文作 ...

最新文章

  1. Windows Server 2012 RS 配置IIS8.0+发布网站
  2. html网页自动铺满屏幕,如何使HTML元素的区域铺满全屏
  3. 虚拟机dhcp服务器怎么检验,实验十二虚拟机上DHCP服务器的配置和验证.doc
  4. 16.validate_api
  5. android九宫格密码源码,Android九宫格解锁的实现
  6. 射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...
  7. 【数据库的备份与还原】 .
  8. 中牟好的计算机学校,中牟县职业中等专业学校
  9. Matlab中fsolve传递系数变量
  10. android实现1000次点击,android – AdMob收入和替代方案:展示次数和点击次数[已关闭]...
  11. 微电子 半导体 网址 一览表
  12. 【JavaSE基础 】Eclipse教程
  13. 做工作必须将心比心——感谢译者陈浩对我们的批评
  14. python日期间隔天数_Python编程题5--计算两个日期之间相隔的天数
  15. Delphi 用IdFtp控件实现ftp的全目录下载
  16. 正向代理 反向代理 CDN加速
  17. 关于新浪微信瘦身的问题
  18. PTA 一维数组 7-3 删除指定数据
  19. [转] 一个女人与和尚的对话!!!
  20. IBM大连工作室成立 Design thinking实现快速创新

热门文章

  1. JSP之jstl标签库
  2. FISCO BCOS(二)———配置及使用控制台
  3. java数组的基本使用
  4. c++如何实现对硬盘的操作_Python 小技巧:如何实现操作系统兼容性打包?
  5. 动态规划算法实验报告_动态规划与中心扩展算法
  6. linux c 语言编程如何把串口字符串数据写到txt文件中_C 语言简单编程速成 | Linux 中国...
  7. python中3个线程并发实现_Python3线程中的异步并发是什么?
  8. Git:git同步git push时候提示filename too long解决办法
  9. mysql8 bigint类型和datetime类型的转换
  10. HttpClient、HttpURLConnection、OKHttp和Volley