智能优化算法(源码)-海鸥优化算法(SOA)
获取更多资讯,赶快关注上面的公众号吧!
文章目录
- 生物学泛型
- 数学模型
- 迁徙(探索)
- 攻击(利用)
海鸥优化算法是印度学者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)相关推荐
- 【老生谈算法】matlab实现FFT变换算法源码——FFT变换算法
Matlab实现FFT变换(单边谱及双边谱) 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]Matlab实现FFT变换程序源 ...
- 【老生谈算法】matlab实现Kmeans聚类算法源码——Kmeans聚类算法
matlab实现Kmeans聚类算法代码实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab实现Kmeans聚类 ...
- 【老生谈算法】matlab实现IIR滤波器算法源码——IIR滤波器算法
matlab的IIR滤波器的实现算法详解 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlabIIR滤波器设计.doc ...
- 【老生谈算法】matlab实现PCA人脸识别算法源码——人脸识别算法
基于主成分分析(Principal Component Analysis,PCA)方法的人脸识别讲解以及matlab代码实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序 ...
- Metis异常检测算法源码概要
Metis异常检测算法源码概要 算法源码目录 算法层目录 基于指数移动平均算法(EWMA) 孤立森林 xgboost gbdt 3-Sigma 多项式回归 特征层目录 拟合特征 分类特征 统计特征 其 ...
- python求素数积_用Python求素数的快速算法源码示例
本篇文章为Python算法相关,用Python求素数的快速算法源码示例.算法在Python的学习中算是一个要点,能研究明白算法的同学都可以算的上是Python的大牛了. 首先简单的来说下什么是素数:质 ...
- 【老生谈算法】matlab实现制动力优化源码——制动力优化
matlab制动力优化程序源码 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab制动力优化程序源码.doc 2.算 ...
- (源码)群体智能优化算法之灰狼优化(Grey Wolf Optimizer,GWO)
获取更多资讯,赶快关注上面的公众号吧! 文章目录 第三十三章 灰狼优化(Grey Wolf Optimizer,GWO) 启发 数学模型和算法 社会等级 包围捕食 狩猎 攻击猎物(利用) 搜索猎物(探 ...
- 基于LM的双目图像校准算法源码第一部分
这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...
- THOR:MindSpore 自研高阶优化器源码分析和实践应用
摘要:这篇文章跟大家分享下THOR的实践应用.THOR算法的部分内容当前已经在MindSpore中开源 本文分享自华为云社区<MindSpore 自研高阶优化器源码分析和实践应用>,原文作 ...
最新文章
- Windows Server 2012 RS 配置IIS8.0+发布网站
- html网页自动铺满屏幕,如何使HTML元素的区域铺满全屏
- 虚拟机dhcp服务器怎么检验,实验十二虚拟机上DHCP服务器的配置和验证.doc
- 16.validate_api
- android九宫格密码源码,Android九宫格解锁的实现
- 射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...
- 【数据库的备份与还原】 .
- 中牟好的计算机学校,中牟县职业中等专业学校
- Matlab中fsolve传递系数变量
- android实现1000次点击,android – AdMob收入和替代方案:展示次数和点击次数[已关闭]...
- 微电子 半导体 网址 一览表
- 【JavaSE基础 】Eclipse教程
- 做工作必须将心比心——感谢译者陈浩对我们的批评
- python日期间隔天数_Python编程题5--计算两个日期之间相隔的天数
- Delphi 用IdFtp控件实现ftp的全目录下载
- 正向代理 反向代理 CDN加速
- 关于新浪微信瘦身的问题
- PTA 一维数组 7-3 删除指定数据
- [转] 一个女人与和尚的对话!!!
- IBM大连工作室成立 Design thinking实现快速创新
热门文章
- JSP之jstl标签库
- FISCO BCOS(二)———配置及使用控制台
- java数组的基本使用
- c++如何实现对硬盘的操作_Python 小技巧:如何实现操作系统兼容性打包?
- 动态规划算法实验报告_动态规划与中心扩展算法
- linux c 语言编程如何把串口字符串数据写到txt文件中_C 语言简单编程速成 | Linux 中国...
- python中3个线程并发实现_Python3线程中的异步并发是什么?
- Git:git同步git push时候提示filename too long解决办法
- mysql8 bigint类型和datetime类型的转换
- HttpClient、HttpURLConnection、OKHttp和Volley