翻筋斗觅食策略改进海鸥优化算法

news2024/11/13 21:36:50

目录

一、非线性参数A策略

二、翻筋斗觅食策略 


       基本 SOA 有一些局限性,例如容易陷入局部最优值、后期收敛缓慢、勘探与开发能力不平衡等,在求解复杂优化问题时尤甚。为了改善基本SOA的不足,提出一种基于翻筋斗觅食策略的改进 SOA(SFSOA)。需要强调的是,所提 SFSOA 不改变基本 SOA 的算法框架,仅通过引入两种新策略改善SOA的性能。

一、非线性参数A策略

       在SOA中,海鸥个体的迁移行为是算法的一种重要操作,通过引入一个参数A来控制海鸥个体位置,避免海鸥个体在飞行寻优过程中与其他相邻个体发生碰撞,不产生重复的位置。因此,参数A在SOA搜索过程中对平衡算法的勘探和开采能力起重要作用。然而,参数A的值随迭代次数增加从f_{c}线性递减到0。一般来说,fc的取值为2,即在SOA迭代过程中A的值由2线性减少至0。

       在利用SOA解决优化问题中,其搜索过程非常复杂且呈现出一个非线性下降趋势。同时,待求问题也需要算法的探索性和开发性行为发生非线性变化,以避免局部最优解。若控制参数A纯粹地以线性递减的方式模拟海鸥群体的迁移过程,就会降低SOA的寻优搜索能力。因此,本文提出一种基于倒S型函数的非线性递减控制参数A策略,其数学表达式为:

A=f_{c,min}+(f_{c,max}-f_{c,min})e^{-(\frac{1.5t}{T})^4} (12)

       其中: f_{c,max}f_{c,min}分别为频率控制参数f_{c}的最大值和最小值。从式(12)可知,在SOA的寻优过程中,参数A的值以非线性方式进行递减可增强算法的全局搜索能力,同时既能避开海鸥个体之间的位置重叠,也可在全局探索和局部开发能力上获得一个较好的平衡。图1给出了控制参数A的值随迭代次数增加以非线性递减方式变化的曲线。

图1 控制参数A的值随迭代次数增加曲线

        从图1可以清晰地看出,与式(3)相比,式(12)有两个不同的特征:a)非线性变化参数A更符合海鸥群体的实际迁移过程,前后期递减缓慢和中期递减加快的特点能提高SOA的精度和加快收敛;b)非线性变化参数A在迭代过程中更趋向于局部开发搜索(约占最大迭代次数的60%)。 

二、翻筋斗觅食策略 

       在算法搜索后期,所有海鸥个体均向当前群体中最优个体所在区域靠拢;导致群体多样性会损失,如果当前最优个体不是全局最优解,则算法陷入局部最优,这是群体智能优化算法的固有的缺点。为了克服这个缺点,研究者在群体智能优化算法中引入许多策略如变异算子、反向学习、莱维飞行、透镜成像学习、小孔成像学习等。翻筋斗觅食是蝠鲼在捕食时最有效的一种方式,当找到食物源时,它们会做一系列向后翻筋斗动作,围绕浮游生物(猎物)旋转,将其吸引到自己身边。原理实现如下:在这种策略中,猎物的位置被视为一个支点,每只蝠鲼都倾向于围绕枢轴和翻筋斗来回游动到一个新的位置,其数学模型为:

X(t+1)=X(t)+S\cdot (r_{1}\cdot x_{best}-r_{2}\cdot X(t)) (13)

其中:X为蝠鲼个体位置;X_{best}是当前全局最优个体位置;S称为空翻因子;r_{1}r_{2}分别是[0,1]的随机数。为了降低 SOA 在搜索后期陷入局部最优的概率,将蝠鲼翻筋斗觅食策略引入到 SOA中,其数学表达式为:

P_{s}(t+1)=P_{s}(t)+S\cdot (r_{1}\cdot p_{bs}-r_{2}\cdot P_{s}(t)) (14)

 其中,空翻因子S=2,海鸥翻筋斗觅食示意图如图2所示。

图2 海鸥翻筋斗觅食示意图

        从图2和式(14)可以看出,在定义了翻筋斗范围后,每只海鸥都可以移动到新搜索域中的任何位置,该搜索域位于当前位置与其围绕目前找到的最佳海鸥位置的对称位置之间。随着当前海鸥个体位置与目前找到的最佳海鸥位置之间的距离减小,当前位置的扰动也会减小,所有个体逐渐逼近搜索空间中的最优解。因此,随着迭代次数的增加,翻筋斗觅食的范围自适应地减小,从而加速收敛。组合上述两个策略改进SOA,得到的ISOA流程如图3所示。

图3 ISOA流程图

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

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

相关文章

【Neo4j教程之CQL函数基本使用】

🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…

基于stm32单片机的ESP-01S模块(wifi模块)的使用

一、开发环境 开发板:野火stm32f407开发板 wifi模块:ESP-01S(核心处理器 ESP8266 ),固件版本(MQTT固件) 操作系统:rt-thread操作系统 二、ESP-01S模块介绍 ESP-01S 是由安信可科技开…

【已解决】Vue3使用Element-plus按需加载时消息弹框ElMessage没有样式

Vue3使用Element-plus时消息弹框ElMessage没有样式 问题描述 Element-plus在使用ElMessage消息弹框的时候没有样式,按照官方的按需加载的方式引入的 1、Element-plus使用了自动按需导入,vite.config.js配置如下: plugins: [vue(),AutoImpo…

【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)

一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系) 前言介绍降低沟通成本问题:各自建立属于自己领域/层面的语言标准解决方案1:专业术语转换为接地气的话术解决方案2:用简单的案例和背景信息进行描…

【无监督学习】1、MOCOv1 | 用于提升无监督学习效果的动量对比学习

文章目录 一、背景二、方法2.1 对比学习(字典查表)2.2 动量对比函数2.3 Pretext Task 三、效果3.1 数据集3.2 训练细节3.3 实验 论文:Momentum Contrast for Unsupervised Visual Representation Learning 代码:https://github.c…

【Java|多线程与高并发】wait和notify方法详解

文章目录 1.前言2.wait和notify的基本使用3. notifyAll方法4. wait和sleep方法的对比5. 总结 1.前言 在Java多线程环境中,线程之间是抢占式执行的,线程的调度是随机的.这就很难受了. 在很多情况下我们希望线程以我们想要的顺序来执行. 这就需要wait和notify这两个方法 2.wait和…

Java——《面试题——MySQL篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 目录 前文 1、数据库的三范式是什么? 2、MySQL数据库引擎有哪些 3、说说…

【五子棋实战】第2章 博弈树负值极大alpha-beta剪枝算法

【五子棋实战】第2章 博弈树极大极小值alpha-beta剪枝算法 博弈树 极大极小值搜索Minimax 负值极大法Negamax alpha-beta剪枝 博弈树负值极大alpha-beta剪枝算法代码实现 ## 初始化输入、确定输出 ## 开始回溯 ## 判赢 ## 评估-计算分数 总结 继续学习下一篇实战&…

注解和异常的详细笔记

注解的理解 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。在 JavaSE 中&am…

OpenMMLab-AI实战营第二期——相关1. COCO数据集格式和pycocotools使用(目标检测方向)

文章目录 1. COCO数据集1.1 COCO数据集介绍1.2 COCO数据集格式1.2.1 常见目标检测数据格式1.2.2 COCO数据集文件结构及标注文件说明1.2.3 COCO的evaluation指标 1.3 其他 2. pycocotools2.1 pycocotools简介和安装2.2 基本使用 3. 图像的EXIF使用3.1 图像的EXIF3.1.1 基本介绍3…

车载以太网MACsec

车载以太网MACsec 1.概述 MACsec(Media Access Control Security)定义了基于 IEEE 802 局域网络的数据安全通信的方法。MACsec 可为用户提供安全的 MAC 层数据发送和接收服务,包括用户数据加密(Confidentiality)、数…

新浪股票接口获取历史数据

这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细&#…

Linux【系统学习】(shell篇)

第 1 章 Shell 概述 1)Linux 提供的 Shell 解析器有 Ubuntu 使用的是dash 2)bash 和 sh 的关系 3)Centos 默认的解析器是 bash 第 2 章 Shell 脚本入门 1)脚本格式 (结尾不是必须以 .sh 结尾,只是为了区…

《网络安全0-100》VPN 讲解

1、前言 VPN虽好可不要贪玩哦 2、VPN的概念和结构 VPN:虚拟专用网(virtual personal network)是利用internet等公共网络的基础设施,通过隧道技术,为用户提供的专用网络具有相同通信功能的安全数据通道。 ‘虚拟’是指用户无需建立各逻辑上的专用物理线…

​AVS3支持下的8K内容生产和传输应用实践

AVS标准经过20年发展,到AVS3这一代实现了国产标准从跟跑到领跑的突破。博雅睿视团队深度参与AVS3标准制定,开发的8K AVS3实时、离线编解码设备有力支持了我国8K超高清视频产业的落地和推广。 本次分享将会分为三个部分,第一部分重点介绍AVS标…

MusicGen配乐工具开源,教你怎么给抖音短视频配乐,助你涨粉1000!

大家好,我是千与千寻,好久不见了,很多粉丝私信我说,千寻哥这是去哪了?难道被野外捕捉了。 哈哈哈,当然不是了,千寻依然在学习ChatGPT的道路上和大家一起学习,一起搞钱! 但…

TC8:TCP_MSS_OPTIONS_05-09

TCP_MSS_OPTIONS_05: Illegal option length for MSS in a SYN-ACK segment 目的 TCP能够处理SYN+ACK报文段中MSS选项的长度非法,而不会崩溃 可以正常地响应,就是不崩溃,这里指的应该是DUT发送ACK 测试步骤 Tester:让DUT侧的应用程序发起主动open调用DUT:发送SYNTester:…

C++类和对象--构造函数和析构函数

0.前言 在我们写某些需要动态开辟内存空间的函数时候,会经常忘记初始化、销毁,而且有时候程序返回的情况很多,那么销毁函数写起来就会很繁琐,那么有没有什么办法解决这个问题呢?答案是:当然有!在…

Java类 继承

Java是一种面向对象的编程语言,类是Java中最基本的编程单元。一个类可以包含变量、方法和构造函数等。类的定义需要使用关键字class,例如: public class Person { private String name; private int age; public Person(St…

文心一言 VS 讯飞星火 VS chatgpt (44)-- 算法导论6.1 1题

一、在高度为h的堆中,元素个数最多和最少分别是多少? 文心一言: 在高度为 h 的二叉搜索树(BST)中,元素个数最多和最少的情况分别如下: 1.最多情况:当每个节点都包含两个子节点时&#xff0c…