翻筋斗觅食海鸥优化算法-附代码

news2024/11/29 20:51:48

翻筋斗觅食海鸥优化算法

文章目录

  • 翻筋斗觅食海鸥优化算法
    • 1.海鸥优化算法
    • 2. 改进海鸥优化算法
      • 2.1 非线性参数 A 策略
      • 2.2 翻筋斗觅食策略
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:针对基本海鸥优化算法(SOA)在处理复杂优化问题中存在低精度、慢收敛和易陷入局部最优的不足,提出了一种基于翻筋斗觅食策略的SOA算法(SFSOA)。该算法首先采用基于倒S型函数的控制参数A非线性递减策略更新海鸥个体的位置,以改善个体的质量和加快收敛速度;引入一种基于翻筋斗觅食策略的学习机制以增加海鸥个体位置的多样性,避免算法在搜索后期陷入局部最优值。

1.海鸥优化算法

基础海鸥优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107535864

2. 改进海鸥优化算法

2.1 非线性参数 A 策略

在 SOA 中, 海鸥个体的迁移行为是算法的一种重要操作, 通过引人一个参数 A A A 来控制海鸥个体位置, 避免海鸥个体在 飞行寻优过程中与其他相邻个体发生碰撞, 不产生重复的位 置。因此,参数 A A A S O A \mathrm{SOA} SOA 搜索过程中对平衡算法的勘探和开 采能力起重要作用。然而, 从式 (2) 可以看出, 参数 A A A 的值随 迭代次数增加从 f c f_c fc 线性递减到 0 。一般来说, f c f_c fc 的取值为 2 , 即 在 SOA 迭代过程中 A A A 的值由 2 线性减少至 0 。
在利用 S O A \mathrm{SOA} SOA 解决优化问题中, 其搜索过程非常复杂且呈 现出一个非线性下降趋势。同时, 待求问题也需要算法的探索 性和开发性行为发生非线性变化, 以避免局部最优解。若控制 参数 A A A 纯粹地以线性递减的方式模拟海鸥群体的迁移过程, 就会降低 S O A \mathrm{SOA} SOA 的寻优搜索能力。因此, 本文提出一种基于倒 S S S 型函数的非线性递减控制参数 A A A 策略, 其数学表达式为
A = f c ,  max  − ( f c ,  max  − f c ,  min  ) × 1 1 + e η − μ (12) A=f_{c, \text { max }}-\left(f_{c, \text { max }}-f_{c, \text { min }}\right) \times \frac{1}{1+\mathrm{e}^{\eta-\mu}}\tag{12} A=fc, max (fc, max fc, min )×1+eημ1(12)
其中: f c ,  max  f_{c, \text { max }} fc, max  f c ,  min  f_{c, \text { min }} fc, min  分别为频率控制参数 f c f_c fc 的最大值和最小值; η \eta η μ \mu μ 均为常数。从式 (12) 可知, 在 SOA 的寻优过程中, 参数 A A A 的值以非线性方式进行递减可增强算法的全局搜索能力, 同 时既能避开海鸥个体之间的位置重叠, 也可在全局探索和局部 开发能力上获得一个较好的平衡。

2.2 翻筋斗觅食策略

在算法搜索后期,所有海鸥个体均向当前群体中最优个体所在区域靠拢, 导致群体多样性损失, 如果当前最优个体不是 全局最优解, 则算法陷人局部最优, 这是群体智能优化算法的 固有缺点。为了克服这个缺点, 研究者在群体智能优化算法中 引人许多策略如变异算子、反向学习、Lévy 飞行、透镜成像学 习、小孔成像学习等。翻筋斗受食是蝠鲼在捕食时最有效的一 种方式, 当找到食物源时, 它们会做一系列向后翻筋斗动作, 围 绕浮游生物 (猎物) 旋转, 将其吸引到自己身边。受这种现象 启发, Zhao 等人 提出了一种新型的翻筋斗受食策略用于群 体智能优化算法中, 原理实现如下: 在这种策略中, 猎物的位置 被视为一个支点, 每只蝠鲼都倾向于围绕枢轴和翻筋斗来回游 动到一个新的位置, 其数学模型为
X ( t + 1 ) = X ( t ) + S ⋅ ( r 1 ⋅ X b e s t − r 2 ⋅ X ( t ) ) (13) X(t+1)=X(t)+S \cdot\left(r_1 \cdot X_{b e s t}-r_2 \cdot X(t)\right) \tag{13} X(t+1)=X(t)+S(r1Xbestr2X(t))(13)
其中: X X X 为蝠鲼个体位置; X best  X_{\text {best }} Xbest  是当前全局最优个体位置; S S S 称 为空翻因子; r 1 r_1 r1 r 2 r_2 r2 分别是 [ 0 , 1 ] [0,1] [0,1] 的随机数。
为了降低 S O A \mathrm{SOA} SOA 在搜索后期陷人局部最优的概率, 将蝠鲼 翻筋斗受食策略引人到 SOA 中, 其数学表达式为
P s ( t + 1 ) = P s ( t ) + S ⋅ ( r 1 ⋅ P b s − r 2 ⋅ P s ( t ) ) (14) P_s(t+1)=P_s(t)+S \cdot\left(r_1 \cdot P_{b s}-r_2 \cdot P_s(t)\right)\tag{14} Ps(t+1)=Ps(t)+S(r1Pbsr2Ps(t))(14)
其中: 空翻因子 S = 2 S=2 S=2

在这里插入图片描述

3.实验结果

在这里插入图片描述

4.参考文献

[1]徐明,龙文,羊洋.用于函数优化和特征选择的翻筋斗觅食海鸥优化算法[J].计算机应用研究,2022,39(12):3639-3643+3650.DOI:10.19734/j.issn.1001-3695.2022.05.0224.

5.Matlab代码

6.python代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux会替代Windows吗?

Windows用户们,去还是留? Windows 依然是高居榜首的桌面操作系统,占据 90% 以上的市场份额,远超 macOS 和 Linux 。 从数据来看,尽管 linux 并不是 Windows 的头号接班人,但近几年越来越多用户转向 Ubunt…

Vue嵌套表单的 Dialog精美模板分享

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供vue组件之嵌套表单的 D…

通用权限管理系统+vue3项目实战(一)

1.创建项目 在某个工程文件夹下创建项目 npm init vuelatest各种工具选择都选是,并且安装环境node_modules之后,显示如图: 1.1 引入element-plus 在vue2的时候常用的ui框架是element-ui,在vue3时应该使用它的继承者element-p…

chatgpt赋能python:Python匹配空白字符的完整指南

Python匹配空白字符的完整指南 在Python编程中,处理文本数据是一项常见任务。当我们需要从文本中提取数据时,通常需要从字符串中匹配特定的模式。这些模式可能包括空格、制表符和换行符等空白字符。本文将介绍如何使用Python正则表达式来匹配空白字符&a…

chatgpt赋能python:Python动态Import简介

Python动态Import简介 在Python中,Import语句用于导入其他Python模块中的函数和变量。通常在Python编程中,我们使用静态Import方法来导入模块。但是,Python也支持动态Import,即在运行时根据需要导入模块中的函数和变量。 在本文…

day 39:62. 不同路径63. 不同路径 II

动态规划 [62. 不同路径](https://leetcode.cn/problems/unique-paths/description/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序5.代码 [63. 不同路径 II:有障碍物](https://leetcode.cn/problems/unique-paths-ii/description/)1. dp数组以及…

银行从业——法律法规——经济基础知识

第一章、经济基础知识 第一节、宏观经济分析 【 知识点1】 宏观经济发展目标 宏观经济发展的总体目标一般包括四个: 宏观经济发展的总体目标 衡量指标1、经济增长国内生产总值(GDP)2、充分就业 失业率3、物价稳定通货膨胀率4、国际…

【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录

说明 Package Process Unit虚拟项目是HISI部分部门芯片设计与验证新员工的培训项目,一般会分配6~10周的时间独立开发该项目并完成验收。在整个项目中,新员工需要熟悉工作站、项目流程、公共环境与代码等,并根据方案文档独立设计ppu模块,之后进行功能验证与综合等芯片交付流…

代码随想录算法训练营第四十六天|139.单词拆分、关于多重背包,你该了解这些!、背包问题总结篇!

文章目录 一、139.单词拆分二、关于多重背包&#xff0c;你该了解这些&#xff01;三、背包问题总结篇&#xff01;总结 一、139.单词拆分 public boolean wordBreak(String s, List<String> wordDict) {//完全背包问题&#xff0c;因为可以重复&#xff0c;背包正序排列…

chatgpt赋能python:Python匹配符号:快速有效地处理文本

Python匹配符号&#xff1a;快速有效地处理文本 什么是Python匹配符号&#xff1f; Python是一种灵活的编程语言&#xff0c;可以轻松地处理文本数据。在Python中&#xff0c;使用正则表达式来匹配符号。正则表达式是一种模式匹配工具&#xff0c;可以帮助用户找到特定的文本…

day 44 完全背包:518. 零钱兑换 II;377. 组合总和 Ⅳ

完全背包&#xff1a;物品可以使用多次 完全背包1. 与01背包区别 518. 零钱兑换 II1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:不能颠倒两个for循环顺序5. 代码 377. 组合总和 Ⅳ:与零钱兑换类似&#xff0c;但是是求组合数1. dp数组以及下标名义2. 递归…

ASP.NET Core MVC 从入门到精通之自动映射(二)

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

034:Mapbox GL双屏地图联动

第034个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现双屏联动功能。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共110行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://…

Redis入门到实战笔记-数据类型

这里写目录标题 SQL与NoSQL关系型数据库&#xff1a;查询方式&#xff1a; 非关联数据库&#xff1a;查询方式&#xff1a; 总结 认识RedisRedis安装远程连接防火墙设置关闭防火墙开启防火墙检查防火墙状态开放指定端口 Redis数据类型和常见命令keysdelEXISTexpired&#xff0c…

day 41:343. 整数拆分;96.不同的二叉搜索树

动态规划 [343. 整数拆分](https://leetcode.cn/problems/integer-break/description/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:遍历i是从前向后遍历&#xff0c;先有dp[i - j]再有dp[i]5. 代码 96.不同的二叉搜索树1. dp数组以及下标名义2. 递归公式…

计组 第二章错题 2.3 浮点数的表示与运算

4.变形补码就是采用双符号位 &#xff0c;不能避免溢出&#xff0c;只是更方便判断是否溢出 5. 9.B 2047:阶码全1表示正无穷 -&#xff08;11-2*(-52&#xff09;) 10.没有想到用移位 10100是20 12.移码看做无符号数 B、无论有无规格化 都要对阶&#xff0c;并没有方便浮…

【Java 多态】面向对象编程の重要概念,多态是什么,附带小案例

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 专属&#xff1a;六月一日 | 儿童节 Java 多态 多态 &#x1f9a0;在继承中实现多态 &#x1f3a1;在接口中实现多态 &#x1f9ff; 多态 &#x1f9a0; Java的多态是指同一个方法在不同的对象上有…

深度剖析数据在内存中的存储(C语言)

[目录] 目录 #数据类型详细介绍 数据类型介绍 整型家族归类&#xff1a; 浮点型家族归类: 构造类型&#xff1a; 指针类型: 空类型: #整型在内存中的存储 #大小端字节序存储 #浮点数在内存中的存储 为什么会这样&#xff1f; 一&#xff1a;不是全0也不是全1 二&…

皮卡丘File Inclusion

1.File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 比如 在PHP中&#xff0c;提供了&#xff1a; incl…

day 42:01背包问题;416. 分割等和子集

动态规划:01背包问题 01背包问题基础1. 暴力解法2. 二维dp数组01背包1.确定dp数组以及下标的含义2.递推公式3.dp数组如何初始化4.遍历顺序5.测试代码 01背包理论基础&#xff08;滚动数组&#xff09;&#xff1a;将二维dp转换为一维dp1. dp数组以及下标名义2. 递归公式3. dp数…