智能优化算法:旗鱼优化算法-附代码
2019智能优化算法:旗鱼优化算法-附代码
文章目录
- 2019智能优化算法:旗鱼优化算法-附代码
- 1.算法原理
- 1.1初始化
- 1.2 旗鱼位置更新
- 1.3 沙丁鱼的位置更新
- 1.4 综合考虑旗鱼和沙丁鱼的位置
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
- 5.Python代码
摘要:旗鱼优化器(Sailed fish Optimizer,SFO)是于2019提出的一种新型优化算法,具有寻优能力强,收敛快的优点。
1.算法原理
旗鱼优化器(SFO),它的灵感来自一群捕猎的旗鱼。这一方法由两个方面组成,一是加强对目前为止最佳群体的搜索,二是沙丁鱼种群的多样性搜索空间。
1.1初始化
旗鱼算法初始化包括旗鱼的初始化和沙丁鱼的初始化。其初始化是在给定的搜索空间内随机初始化。其中旗鱼种群用XSFX_{SF}XSF表示,沙丁鱼种群用XFX_FXF表示。初始化后,其中旗鱼适应度值最好的种群用XeliteSFX_{eliteSF}XeliteSF表示。沙丁鱼适度值最好的种群用XinjuredSX_{injuredS}XinjuredS表示。
1.2 旗鱼位置更新
旗鱼的位置更新用下式表示:
XnewSFi=XeliteSFi−λi∗(rand(0,1)∗(+XeliteSFi+XinjuredSi2)−XoldSFi)(1)X_{newSF}^i=X_{eliteSF}^i - \lambda_i*(rand(0,1)*(\frac{ + X_{eliteSF}^i + X_{injuredS}^i}{2}) - X_{oldSF}^i) \tag{1} XnewSFi=XeliteSFi−λi∗(rand(0,1)∗(2+XeliteSFi+XinjuredSi)−XoldSFi)(1)
其中XeliteSFiX_{eliteSF}^iXeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。XinjuredSiX_{injuredS}^iXinjuredSi表示在当前迭代次数i时,沙丁鱼的最佳位置。其中λi\lambda_iλi系数的定义入下:
λi=2∗rand(0,1)∗PD−PD(2)\lambda_i = 2*rand(0,1)*PD-PD \tag{2} λi=2∗rand(0,1)∗PD−PD(2)
其中PD代表猎物群的密度用如下表达式表示:
PD=1−NSFNSF+NS(3)PD = 1 - \frac{N_{SF}}{N_{SF} + N_S}\tag{3} PD=1−NSF+NSNSF(3)
其中NSF,NSN_{SF},N_SNSF,NS分别代表旗鱼和沙丁鱼的数量。
1.3 沙丁鱼的位置更新
沙丁鱼的位置更新如下式:
XnewSi=r∗(XeliteSFi−XoldSi+AP)(4)X_{newS}^i = r*(X_{eliteSF}^i - X_{oldS}^i + AP) \tag{4} XnewSi=r∗(XeliteSFi−XoldSi+AP)(4)
其中XeliteSFiX_{eliteSF}^iXeliteSFi表示在当前迭代次数i时,旗鱼的最佳位置。AP代表旗鱼的攻击力度。其计算方式如下:
AP=A∗(1−2∗Itr∗e)(5)AP = A*(1-2*Itr*e) \tag{5} AP=A∗(1−2∗Itr∗e)(5)
其中A,e控制控制攻击力度的变换,使A线性变换到0.当AP>0.5时用上式更新沙丁鱼全部位置。当AP<0.5时。更新沙丁部分位置。
部分位置的范围定义如下:
α=NS∗AP(6)\alpha = N_S*AP\tag{6} α=NS∗AP(6)
β=di∗AP(7)\beta = d_i*AP \tag{7} β=di∗AP(7)
其中α\alphaα代表要更新沙丁鱼的数量,β\betaβ表示要更新的维度数量。
1.4 综合考虑旗鱼和沙丁鱼的位置
如果沙丁鱼的位置优于旗鱼的位置,将沙丁鱼的位置付给旗鱼,并且被移除。
XSFi=XSi,iff(Si)<f(SFi)(8)X_{SF}^i = X_S^i , if\, f(Si)<f(SF_i) \tag{8} XSFi=XSi,iff(Si)<f(SFi)(8)
算法流程如下:
Step1. 初始化种群和参数。
Step2.计算旗鱼和沙丁鱼的适应度值,并且记录最优适应度值和位置。
Step3.更新旗鱼位置。更新沙丁鱼位置。如果攻击力度小于0.5,计算α,β\alpha,\betaα,β的值,并且更新部分位置。否则,全部跟新更新沙丁鱼位置。
Step4 . 沙丁鱼,旗鱼位置替换。
Step5.计算所有适应度值,并更新记录最优适应度值和位置。
Step7.是否满足迭代停止条件,如果满足则输出结果,否则重复Step2 - Step7;
2.算法结果
3.参考文献
[1]S. Shadravan,H.R. Naji,V.K. Bardsiri. The Sailfish Optimizer: A novel nature-inspired metaheuristic algorithm for solving constrained engineering optimization problems[J]. Engineering Applications of Artificial Intelligence,2019,80.
4.Matlab代码
5.Python代码
个人资料介绍
智能优化算法:旗鱼优化算法-附代码相关推荐
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 基于蜣螂优化的Elman神经网络数据预测-附代码
基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 【AI超级美发师】深度学习算法打造染发特效(附代码)
[新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...
- 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)
本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...
- Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...
最新文章
- mysql一些原生基本操作
- 浅谈移动端中的视口(viewport)
- ACM MM 2020视频目标检测挑战赛冠军DeepBlueAI团队技术分享
- 标题:浅析图卷积神经网络
- java怎么输入数据_java怎么键盘输入数据啊?
- 【渝粤教育】广东开放大学 劳动人事争议处理法 形成性考核 (51)
- Hbase入门——安装
- 外贸电商ERP都有哪些值得用?
- c# asp.net 修改webconfig文件 配置
- 为安装有系统及应用程序的服务器更换硬盘方法一例
- 模式匹配算法逐步精简
- 吐槽 intent:#Intent;S.K_1171477665=;end
- 电脑壁纸软件(Bing Wallpaper)
- 输入框过滤表情和颜文字
- 分库分表就能无限扩容吗
- 如何移动桌面文件到计算机,怎么样把电脑桌面文件全部转移到指定文件夹
- 安卓Trustzone有巨大漏洞?降级攻击为你做出解析!
- 看完它你就造了!为什么AR直播是淘宝造物节最火的黑科技
- 【LeetCode】1337. 矩阵中战斗力最弱的 K 行(C++)
- 故障报修系统php,【假期挖坑】PHP综合报修系统 V1.0
热门文章
- java仿百度分页_java仿百度假分页代码实现
- git提交代码 visual_git/github相关介绍
- div旋转45度_一看就会,一做不废的旋转楼梯建模
- 大学使用python 编辑器_Python数据分析|最多人用的代码编辑器推荐
- ftp 上传文件夹_8uftp上传工具,8uftp上传工具的使用方法
- oa系统租用云服务器安全吗,oa系统放在云服务器上安全吗
- android在副屏中运行一个应用_android一个app打开另一个app的指定页面
- python采用强制自动缩进使代码具有极佳的可读性_Python的详细介绍
- Cesium:向地图中添加点的方法
- 静态include与动态include的区别