智能优化算法:海鸥算法原理及Matlab代码

  • 文章导航
    • 1. 算法原理
    • 2. SOA算法流程
      • 2.1 迁徙行为(exploration ability)
      • 2.2 攻击行为(exploitation ability)
    • 3. SOA算法流程如下:
    • 4. 运行结果

文章导航

海鸥算法(Seagull optimization algorithm,SOA),是由Gaurav Dhiman和Vijay kumar于2018年提出的一种新型群体智能优化算法,该算法主要模拟了自然界中海鸥迁徙以及迁徙过程中的攻击行为(觅食行为)。

1. 算法原理

海鸥算法主要模拟了海鸥的迁徙行为和攻击行为 。迁徙行为即海鸥从一个现阶段不适宜生存的地方飞往另一个适宜生存的地方,迁徙行为影响着SOA算法的全局探索能力;攻击行为即海鸥在飞行过程中对地面、水域内食物的攻击觅食,攻击行为影响着SOA算法的局部开发能力。

2. SOA算法流程

2.1 迁徙行为(exploration ability)

根据原始文献所述,海鸥在迁徙行为即算法中个体从一个位置探索至另一个位置。在这个阶段,需要注意三点:避免碰撞、向最优个体靠拢、与最优代理保持密切联系。

为了避免与周围海鸥发生碰撞,算法采用附加变量A调整海鸥的位置。

Cs=A∗Ps(x)C_s=A*P_s(x)Cs​=A∗Ps​(x)其中A代表海鸥在给定搜索空间中的迁徙行为,A的大小通过fcf_cfc​进行控制。。A=fc−(x∗fc/Maxiteration)A =f_c-(x*f_c/Max_{iteration})A=fc​−(x∗fc​/Maxiteration​)最终A的大小根据迭代次数,从2→0呈线性下降。

在保证海鸥个体之间不会发生碰撞之后,令所有海鸥向着最佳海鸥靠拢。Ms=B∗(Pbest(x)−Ps(x))M_s=B*(P_{best}(x)-P_s(x))Ms​=B∗(Pbest​(x)−Ps​(x))其中,MsM_sMs​表示个体向最佳海鸥的收敛方向,BBB作为平衡算法探索和开发能力的重要算参数,其变化遵循:B=2∗A2∗randB=2*A^2*randB=2∗A2∗rand

在计算出每个海鸥的收敛方向后,海鸥开始向着这个位置进行移动:
Ds=∣Cs+Ms∣D_s=|C_s+M_s|Ds​=∣Cs​+Ms​∣其中DsD_sDs​即海鸥的新位置。

2.2 攻击行为(exploitation ability)

海鸥在觅食时产生的攻击行为呈螺旋状下降,通过不断改变角度和半径在空中进行移动。海鸥在三维空间中的具体位置为:
x=r∗cos(k)x=r*cos(k)x=r∗cos(k)y=r∗sin(k)y=r*sin(k)y=r∗sin(k)z=r∗kz=r*kz=r∗kr=u∗ekvr=u*e^{kv}r=u∗ekv其中,kkk是一个位于[0,2π][0,2\pi][0,2π]的随机数,算法通过uuu和vvv控制螺旋半径rrr,uuu和vvv通常取1。

结合海鸥新位置,得到整体海鸥位置更新公式如下:
Ps(x)=(Ds∗x∗y∗z)+Pbest(x)P_s(x)=(D_s*x*y*z)+P_{best}(x)Ps​(x)=(Ds​∗x∗y∗z)+Pbest​(x)

3. SOA算法流程如下:

step1:初始化参数
step2:计算每只海鸥的适应度值,即目标函数值
step3:根据上述公式(1-5)计算DsD_sDs​
step4:根据上述公式(6-10)计算Ps(x)P_s(x)Ps​(x)
step5:更新最佳海鸥的位置信息和适应度值,ineration=iteration+1ineration=iteration+1ineration=iteration+1
step6:如果interation>Maxiterationinteration>Max_{iteration}interation>Maxiteration​,跳转至step7,否则跳转至step3
step7:输出最佳海鸥位置和适应度值

4. 运行结果

以CEC标准测试函数——单峰函数、多峰函数进行2维和30维测试,测试结果如下图所示。


测试函数为:30维下的Sphere函数,所测结果可以看出SOA算法具有非常优秀的寻优能力!

具体Matlab代码链接如下:
https://mianbaoduo.com/o/bread/aZqamJc=

有网友私聊我,想让我分享一下海鸥算法的改进与创新,那么他来了。大家可以去看我的第三篇文章——基于量子的鸽群优化算法,将两者结合可以发表不错的文章哦。文章链接

智能优化算法:海鸥算法原理及Matlab代码相关推荐

  1. 【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列

    [综合评价分析]熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj ...

  2. 【GA算法】遗传算法原理及其Matlab代码

    翻阅几篇遗传算法的文章,这篇通俗易懂,且逻辑清楚,最适合入门,不用担心遗漏关键点. 遗传算法,先选择,交叉和变异顺序可更换. 轮盘赌部分,参考了另外一篇文章的解释. 此外,还有一些有价值的文献: 选择 ...

  3. MUSIC算法原理及MATLAB代码 阵列信号处理

    MUSIC算法原理及MATLAB代码 阵列信号处理 MUSIC(multiple signal classification algorithm)算法是一种基于矩阵特征空间分解的方法.从几何角度讲,信 ...

  4. ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题

    ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题 原创文章!转载需注明来源:©️ Sylvan Ding's Blog ❤️ 实验目的 了解 ADMM, ISTA, ...

  5. 货物配送问题的matlab,免疫算法求解配送中心选址问题matlab代码

    免疫算法求解配送中心选址问题matlab代码 所属分类:matlab例程 开发工具:matlab 文件大小:31KB 下载次数:3 上传日期:2020-12-01 16:11:00 上 传 者:代码大 ...

  6. k-中心点算法(k-medoids)及Matlab代码实现

    k-中心点算法(k-medoids)及Matlab代码 1. 提出: 上篇文章给出了 k-means算法的具体思想和代码实现:https://blog.csdn.net/qiu1440528444/a ...

  7. 快速行进算法(fast_marching_kroon)的matlab代码

    快速行进算法(fast_marching_kroon)的matlab代码 快速行进算法用于求解程函方程得到走时场,源代码转载于link 文章目录 快速行进算法(fast_marching_kroon) ...

  8. 非线性光纤光学中分步傅里叶算法(SSFFT)的matlab代码实现

    非线性光纤光学中分步傅里叶算法(SSFFT)的matlab代码实现 SSFFT(分布傅里叶算法)函数代码如下: function [waveform, f_spectrum] = SSFFT_arra ...

  9. 傅里叶描述子、HOG特征描述子原理及matlab代码

    一.傅里叶描述子 傅里叶描述子的作用是用来描述图像的轮廓信息,具有平移.旋转.尺度不变性特征. 对于一幅图像,通过傅里叶描述子获得其图像轮廓信息,其本质就是空间.频域变换问题.通过将图像中的像素点进行 ...

最新文章

  1. 极客新闻——16、数据库设计中的5个常见错误
  2. 人群密度估计--Structured Inhomogeneous Density Map Learning for Crowd Counting
  3. 数字信号处理与音频处理(使用Audition)
  4. 安装alien,DEB与RPM互换
  5. 一维卷积详细解释(转载+自己笔记)
  6. 2022虎年背景全新UI头像框制作微信小程序源码
  7. C++中若类中没有默认构造函数,如何使用对象数组
  8. MySQL -- binlog 操作与恢复
  9. Spring讲解二:Spring中的Bean配置0
  10. HDU 1874 畅通工程续 最短路
  11. Java中的委托模式
  12. 【优化分类】基于matlab麻雀算法优化核极限学习机KELM分类【含Matlab源码 1791期】
  13. python中write的用法_python中write方法是如何使用?
  14. linux下用arcconf做raid5,arcconf工具相关命令V1.0
  15. java linux socket编程_linux下socket编程实例?javasocket编程流程?java socket编程实例代码讲解...
  16. Ubuntu 安装 ROS 教程
  17. YALMIP工具箱之解决半定规划问题的SDPT3求解器安装
  18. 3D可视化黑科技,VR线上智慧城市在线三维展示
  19. 平时开发搜集的一些网址
  20. python安装/pycharm破解与安装

热门文章

  1. Imazing2023免费版苹果手机iOS数据管理软件
  2. Python - 内置函数详解(截至v3.6.x)
  3. 比知识更重要的,是元认知和深度思考
  4. 关于word安全模式
  5. 第三周作业-循环与判断语句(网络131黄宇倩)
  6. PHP对接语音验证码接口代码示例
  7. 常用的企业邮箱有哪些?企业邮箱有哪几种?
  8. Python网络爬虫和信息提取
  9. python酒店数据分析_python数据分析实战——AirBnb用户分群
  10. IDA F5堆栈不平衡的处理