智能优化算法:金枪鱼群优化算法-附代码
智能优化算法:金枪鱼群优化算法
文章目录
- 智能优化算法:金枪鱼群优化算法
- 1.算法原理
- 1.1 初始化
- 1.2 螺旋觅食
- 1.3 抛物线觅食
- 2.实验结果
- 3.参考文献
- 4.Matlab
摘要:金枪鱼群优化算法(Tuna swarm optimization,TSO),是于2021年提出的一种新型智能优化算法,该算法通过模拟金枪鱼群体的觅食行为,来对问题进行寻优。具有寻优能力强,收敛速度快等特点。
1.算法原理
1.1 初始化
与其他智能优化算法一样,金枪鱼种群在搜索空间内随机初始化。
Xiint=rand⋅(ub−lb)+lb,i=1,2,⋯,NP(1)\mathbf{X}_{i}^{\mathrm{int}}=\mathbf{r a n d} \cdot(\mathbf{u b}-\mathbf{l b})+\mathbf{l b}, i=1,2, \cdots, N P \tag{1} Xiint=rand⋅(ub−lb)+lb,i=1,2,⋯,NP(1)
其中,XiintX_i^{int}Xiint是第iii个个体的初始位置,ububub和lblblb分别是搜索空间的上界和下界,NPNPNP是金枪鱼种群的数量,randrandrand是一个均匀分布的[0,1]内的随机向量。
1.2 螺旋觅食
金枪鱼群通过形成紧密的螺旋来追逐猎物,除了追逐猎物,成群的金枪鱼还相互交换信息。每一条金枪鱼都跟在前一条鱼的后面,因此可以在相邻的金枪鱼之间共享信息。基于上述原理,螺旋觅食策略的数学公式如下:
Xit+1={α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xit,i=1α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xi−1t,i=2,3,⋯,NP(2)\mathbf{X}_{i}^{t+1}=\left\{\begin{array}{ll} \alpha_{1} \cdot\left(X_{\text {best }}^{t}+\beta \cdot\left|X_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i}^{t}, & i=1 \\ \alpha_{1} \cdot\left(X_{\text {best }}^{t}+\beta \cdot\left|X_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i-1}^{t}, & i=2,3, \cdots, N P \end{array}\right.\tag{2} Xit+1={α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xit,α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xi−1t,i=1i=2,3,⋯,NP(2)
α1=a+(1−a)⋅ttmax(3)\alpha_{1}=a+(1-a) \cdot \frac{t}{t_{\max }}\tag{3} α1=a+(1−a)⋅tmaxt(3)
α2=(1−a)−(1−a)⋅ttmax(4)\alpha_{2}=(1-a)-(1-a) \cdot \frac{t}{t_{\max }} \tag{4} α2=(1−a)−(1−a)⋅tmaxt(4)
β=ebl⋅cos(2πb)(5)\beta=e^{b l} \cdot \cos (2 \pi b) \tag{5} β=ebl⋅cos(2πb)(5)
l=e3cos(((tmax+1)/t)−1)π)(6)l=e^{\left.3 \cos \left(\left(\left(t_{\max }+1\right) / t\right)-1\right) \pi\right)} \tag{6} l=e3cos(((tmax+1)/t)−1)π)(6)
Xit+1X_i^{t+1}Xit+1是第t+1t+1t+1次迭代的第iii个个体,XbesttX_{best}^tXbestt是当前最佳个体(食物),α1\alpha_1α1 和 α2\alpha_2α2是控制个体向最佳个体和前一个个体移动趋势的权重系数,aaa是一个常数,用于确定金枪鱼在初始阶段跟随最佳个体和前一个体的程度,ttt表示当前迭代次数,tmaxt_{max}tmax表示最大迭代次数,bbb是均匀分布在0到1之间的随机数。当最优个体找不到食物时,盲目跟随最优个体觅食不利于群体觅食。因此,考虑在搜索空间中生成一个随机坐标,作为螺旋搜索的参考点。它使每个个体都能在更广阔的空间里探索,并使TSO具有全局探索能力。具体的数学模型描述如下:
Xit+1={α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xit,i=1α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xi−1t,i=2,3,⋯,NP(7)\mathbf{X}_{i}^{t+1}=\left\{\begin{array}{ll} \alpha_{1} \cdot\left(X_{\text {rand }}^{t}+\beta \cdot\left|X_{\text {rand }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i}^{t}, & i=1 \\ \alpha_{1} \cdot\left(X_{\text {rand }}^{t}+\beta \cdot\left|X_{\text {rand }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i-1}^{t}, & i=2,3, \cdots, N P \end{array}\right. \tag{7} Xit+1={α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xit,α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xi−1t,i=1i=2,3,⋯,NP(7)
其中,XrandtX_{rand}^tXrandt是搜索空间中随机生成的参考点。启发式算法通常在早期阶段进行广泛的全局探索,然后逐渐过渡到精确的局部开发。因此,随着迭代次数的增加,TSO将螺旋觅食的参考点从随机个体更改为最优个体。综上所述,螺旋觅食策略的最终数学模型如下:
Xit+1={{α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xit,i=1α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xi−1t,i=2,3,⋯,NP,if rand <ttmax{α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xit,i=1α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xi−1t,i=2,3,⋯,NP,if rand ≥ttmax(8)\mathbf{X}_{i}^{t+1}=\left\{\begin{array}{ll} \left\{\begin{array}{ll} \alpha_{1} \cdot\left(X_{\text {rand }}^{t}+\beta \cdot\left|X_{\text {rand }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i}^{t}, & i=1 \\ \alpha_{1} \cdot\left(X_{\text {rand }}^{t}+\beta \cdot\left|X_{\text {rand }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i-1}^{t}, & i=2,3, \cdots, N P \end{array}, \text { if rand }<\frac{t}{t_{\max }}\right. \\ \left\{\begin{array}{ll} \alpha_{1} \cdot\left(X_{\text {best }}^{t}+\beta \cdot\left|X_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i}^{t}, & i=1 \\ \alpha_{1} \cdot\left(X_{\text {best }}^{t}+\beta \cdot\left|X_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right|\right)+\alpha_{2} \cdot \mathbf{X}_{i-1}^{t}, & i=2,3, \cdots, N P \end{array}, \text { if rand } \geq \frac{t}{t_{\max }}\right. \end{array}\right. \tag{8} Xit+1=⎩⎪⎪⎨⎪⎪⎧{α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xit,α1⋅(Xrand t+β⋅∣Xrand t−Xit∣)+α2⋅Xi−1t,i=1i=2,3,⋯,NP, if rand <tmaxt{α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xit,α1⋅(Xbest t+β⋅∣Xbest t−Xit∣)+α2⋅Xi−1t,i=1i=2,3,⋯,NP, if rand ≥tmaxt(8)
1.3 抛物线觅食
金枪鱼除了形成螺旋觅食外,还形成抛物线合作觅食。金枪鱼以食物为参照点形成抛物线形。此外,金枪鱼通过在周围搜索来寻找食物。假设两种方法的选择概率均为50%,则两种方法同时进行。具体的数学模型描述如下:
Xit+1={Xbest t+rand⋅(Xbest t−Xit)+TF⋅p2⋅(Xbest t−Xit),if rand <0.5TF⋅p2⋅Xit,if rand ≥0.5(9)\mathbf{X}_{i}^{t+1}=\left\{\begin{array}{ll} \mathbf{X}_{\text {best }}^{t}+\operatorname{rand} \cdot\left(\mathbf{X}_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right)+T F \cdot p^{2} \cdot\left(\mathbf{X}_{\text {best }}^{t}-\mathbf{X}_{i}^{t}\right), & \text { if rand }<0.5 \\ T F \cdot p^{2} \cdot \mathbf{X}_{i}^{t}, & \text { if rand } \geq 0.5 \end{array}\right. \tag{9} Xit+1={Xbest t+rand⋅(Xbest t−Xit)+TF⋅p2⋅(Xbest t−Xit),TF⋅p2⋅Xit, if rand <0.5 if rand ≥0.5(9)
p=(1−ttmax)t/tmax(10)p=\left(1-\frac{t}{t_{\max }}\right)^{t / t_{\max }} \tag{10} p=(1−tmaxt)t/tmax(10)
其中,TFTFTF是一个值为1或−1的随机数。
算法流程图如下:
2.实验结果
3.参考文献
[1] Lei Xie, Tong Han, Huan Zhou, et al. Tuna Swarm Optimization: A Novel Swarm-Based Metaheuristic Algorithm for Global Optimization[J]. Computational Intelligence and Neuroscience, vol. 2021, Article ID 9210050, 22 pages, 2021.
4.Matlab
智能优化算法:金枪鱼群优化算法-附代码相关推荐
- 基于粒子群算法优化的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去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...
最新文章
- Matlab与线性代数 -- 数组与矩阵的乘幂
- python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法
- firewalld/iptables防火墙维护和状态查询命令(防火墙重载,区域操作命令,开启服务或端口,堵塞端口,iptables规则添加和删除)
- Python 将字符串转换成单个字符;将单个字符合并成字符串
- jQuery实现多条件筛选
- 避免数据二次提交的处理方式
- OFDM学习笔记(四)(信道估计简介)
- 一生不要瞎忙,只要做对三件事
- 论文中的常见缩写(w.r.t/i.e./et al等)的意思
- 积极心态的力量——杨吉
- Linux vmwaver下安装cenos联网时出现 network is unreachable问题
- 昨日种种,昨日死.今日种种,今日生.--看了几篇影评有感
- 哈密顿算子在直角坐标系的矩阵表示
- 将十进制正整数m转换成k进制(2≤k≤9)数的数字输出
- 最大子矩阵(C语言)
- 《Kaggle》Tweet Sentiment Extraction 实战(一)构建数据加载器
- ERROR: Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'
- C语言学习记录——팔 函数和递归(1)
- 初次使用 python poetry 包管理模块踩坑
- Ubuntu(Linux)下的整站下载工具
热门文章
- php 修改文件所有者,PHP 改变文件的所有者
- mysql8 docker镜像源_Docker 搭建 MySQL 8版本
- scrapy实例三 【豆瓣电影Top250】
- 湖南省公务员考试计算机专业,湖南省2018年普通高等学校对口招生考试计算机应用类专业综合知识试题...
- adb echo shell 覆盖_Shell脚本的应用(一)
- React:工程化开发
- HTML:canvas画圆形加矩形组合
- Javascript特效:封装元素动画函数
- oracle高级函数api,Oracle函数-高阶篇
- C++_auto_ptr与unique_ptr智能指针