【智能算法】海象优化算法(WO)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2024年,M Han等人受到海象群体自然行为启发,提出了海象优化算法(Walrus Optimizer, WO)。

在这里插入图片描述

在这里插入图片描述

2.算法原理

2.1算法思想

WO灵感来自海象通过接收关键信号(危险信号和安全信号)选择迁徙、繁殖、栖息、觅食、聚集和逃跑等行为。

在这里插入图片描述

2.2算法过程

危险信号和安全信号

海象在觅食和栖息时都非常警惕。周围会有1 ~ 2只海象作为警卫巡逻,一旦发现意外情况会立即发出危险信号。WO中的危险信号和安全信号定义:
D a n g e r _ s i g n a l = A ∗ R α = 1 − t / T A = 2 × α R = 2 × r 1 − 1 (1) Danger\_signal= A^{\ast }R\\ \alpha=1-t/T\\ A=2\times\alpha\\ R=2\times r_1-1\tag{1} Danger_signal=ARα=1t/TA=2×αR=2×r11(1)
A、R为危险因素,α随迭代次数t先从1减小到0,t为最大迭代次数。WO中危险信号对应的安全信号定义:
S a f e t y _ s i g n a l = r 2 (2) Safety\_signal=r_2\tag{2} Safety_signal=r2(2)

迁移行为

当危险因素过高时,海象群就会迁移到其他地区:
X i , j t + 1 = X i , j t + Migration − s t e p M i g r a t i o n _ s t e p = ( X m t − X n t ) ∙ β ∙ r 3 2 β = 1 − 1 1 + exp ⁡ ( − t − T 2 T × 10 ) (3) X_{i,j}^{t+1}=X_{i,j}^t+\text{Migration}_-step\\ \mathrm{Migration\_step}=(X_m^t-X_n^t)\bullet\beta\bullet{r_3}^2\\ \beta=1-\frac{1}{1+\exp(-\frac{t-\frac{T}{2}}{T}\times10)} \tag{3} Xi,jt+1=Xi,jt+MigrationstepMigration_step=(XmtXnt)βr32β=11+exp(Tt2T×10)1(3)
β是迁移步骤控制因素。

繁殖行为

在研究海象群的繁殖行为时,主要考虑了海象在陆地栖息和水下觅食这两种行为模式。海象群体分为雄性、雌性和幼年个体,每个群体成员在栖息地的选择和更新行为中表现出不同的策略,以适应环境和提高繁殖效率。
雄性海象的位置更新采用拟蒙特卡罗方法中的Halton序列,这种方法通过生成随机但均匀分布的序列来确保种群在搜索空间中的广泛分布。Halton序列的使用能够有效地均匀覆盖整个搜索区域,提高种群多样性,从而有利于在迭代过程中找到更优的解。
雌海象的位置更新则受到雄海象和领头海象的双重影响。随着迭代过程的进行,雌性海象逐渐减少对配偶的依赖,而增加对领头海象的跟随,这种策略有助于雌性海象在繁殖期间更有效地寻找食物和安全的栖息地,确保幼崽的成活率:
F e m a l e i , j t + 1 = F e m a l e i , j t + α ∙ ( M a l e i , j t − F e m a l e i , j t ) + ( 1 − α ) ∙ ( X b e s t t − F e m a l e i , j t ) (4) \begin{aligned} Female_{i,j}^{t+1} =Female_{i,j}^{t}+\alpha\bullet\left(Male_{i,j}^{t}-Female_{i,j}^{t}\right)+(1-\alpha)\bullet\left(X_{best}^t-Female_{i,j}^t\right) \end{aligned}\tag{4} Femalei,jt+1=Femalei,jt+α(Malei,jtFemalei,jt)+(1α)(XbesttFemalei,jt)(4)
海象幼崽的位置更新处于种群边缘的海象幼崽经常成为虎鲸和北极熊的目标,幼海象需要调整当前的位置以避免被捕食:
J u v e n i l e i , j t + 1 = ( O − J u v e n i l e i , j t ) ∙ P O = X b e s t t + J u v e n i l e i , j t ∙ L F (5) \begin{aligned}&Juvenile_{i,j}^{t+1}=\left(O-Juvenile_{i,j}^t\right)\bullet P\\&O=X_{best}^t+Juvenile_{i,j}^t\bullet LF\end{aligned}\tag{5} Juvenilei,jt+1=(OJuvenilei,jt)PO=Xbestt+Juvenilei,jtLF(5)
LF为莱维飞行,水下觅食行为包括逃离和聚集行为,逃跑行为海象在水下觅食时也会受到自然捕食者的攻击,它们会根据同伴发出的危险信号逃离当前活动区域:
X i , j t + 1 = X i , j t ⋅ R − ∣ X b e s t t − X i , j t ∣ ⋅ r 4 2 (6) X_{i,j}^{t+1}=X_{i,j}^{t}\cdot R-\left|X_{best}^{t}-X_{i,j}^{t}\right|\cdot{r_{4}}^{2}\tag{6} Xi,jt+1=Xi,jtR XbesttXi,jt r42(6)
海象可以根据种群中其他海象的位置合作觅食和移动,共享位置信息可以帮助整个海象群找到食物丰富度更高的海域:
X i , j t + 1 = ( X 1 + X 2 ) / 2 { X 1 = X b e s t t − a 1 × b 1 × ∣ X b e s t t − X i , j t ∣ X 2 = X s e c o n d t − a 2 × b 2 × ∣ X s e c o n d t − X i , j t ∣ a = β × r 5 − β b = tan ⁡ ( θ ) (7) \begin{aligned} &X_{i,j}^{t+1}=(X_{1}+X_{2})/2 \\ &\left.\left\{\begin{array}{c}X_1=X_{best}^t-a_1\times b_1\times\left|X_{best}^t-X_{i,j}^t\right|\\\\X_2=X_{second}^t-a_2\times b_2\times\left|X_{second}^t-X_{i,j}^t\right|\end{array}\right.\right. \\ &a=\beta\times r_{5}-\beta \\ &b=\tan(\theta) \end{aligned}\tag{7} Xi,jt+1=(X1+X2)/2 X1=Xbestta1×b1× XbesttXi,jt X2=Xsecondta2×b2× XsecondtXi,jt a=β×r5βb=tan(θ)(7)

伪代码

在这里插入图片描述

3.结果展示

使用测试框架,测试WO性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2005-F14
在这里插入图片描述

在这里插入图片描述

4.参考文献

[1] Han M, Du Z, Yuen K F, et al. Walrus optimizer: A novel nature-inspired metaheuristic algorithm[J]. Expert Systems with Applications, 2024, 239: 122413.

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-01 设计模式单例模式

设计模式-01 设计模式单例模式 目录 设计模式-01 设计模式单例模式 1定义 2.内涵 3.使用示例 4.具体代码使用实践 5.注意事项 6.最佳实践 7.总结 1 定义 单例模式是一种设计模式,它确保一个类只能被实例化一次。它通过在类内部创建类的唯一实例并提供一个全…

飞书API(6):使用 pandas 处理数据并写入 MySQL 数据库

一、引入 上一篇了解了飞书 28 种数据类型通过接口读取到的数据结构,本文开始探讨如何将这些数据写入 MySQL 数据库。这个工作流的起点是从 API 获取到的一个完整的数据,终点是写入 MySQL 数据表,表结构和维格表结构类似。在过程中可以有不同…

完美解决AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

遇到这种错误通常是因为matplotlib的后端配置问题。在某些环境中,尤其是在某些特定的IDE或Jupyter Notebook环境中,可能会因为后端配置不正确而导致错误。错误信息提示 module backend_interagg has no attribute FigureCanvas 意味着当前matplotlib的后…

首页最新 多IP浏览器防关联:如何配置多个独立且稳定的IP地址?

在互联网时代,IP地址的重要性不言而喻。然而,IP关联问题却成为一项令人担忧的隐私和安全挑战。针对这个问题,多IP浏览器是一种解决方案,可以帮助用户单独配置多个独立且稳定的IP地址,有效地防止IP关联。 一、IP关联是…

【Python小练】求斐波那契数列第n个数

题目 输出斐波那契数列第n个数。 分析 首先我们要知道,斐波那契数列,这个数列从第三位开始等于前两个数的和,要知道数列第n个数(n>2),就要知道其前两相的值,着就需要用到递归了。来看一下吧…

开源、轻量、易用的服务器实时监控工具:哪吒探针

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 哪吒探针是一个开源、轻量、易用的服务器监控、运维工具,它有以下几个特点: 一键安装:可以一键安装面板与 Agent,并且支持 Linux、Windows、MacOS、OpenWRT…

纯血鸿蒙APP实战开发——发布图片评论

介绍 本示例将通过发布图片评论场景,介绍如何使用startAbilityForResult接口拉起相机拍照,并获取相机返回的数据。 效果图预览 使用说明 通过startAbilityForResult接口拉起相机,拍照后获取图片地址。 实现思路 创建CommentData类&#…

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考:VSCode 配置 C/C 环境 1 配置C/C编译环境 方案一 如果是在Windows,需要安装 MingW,可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows…

虚析构与纯虚析构

这里的new Cat("Tom"&#xff09;是由于基类函数中的构造函数里面带有string变量 1. 法一:利用虚函数&#xff0c;虚化基类中的析构函数 virtual ~Animal() { cout << "动物的析构函数调用" << endl; } 2. 法二:利用纯…

VitePress 构建的博客如何部署到 Netlify 平台?

VitePress 构建的博客如何部署到 Netlify 平台&#xff1f; 前言 之前写了篇文章【使用 Vitepress 构建博客并部署到 github 平台】&#xff0c;有个老哥说 github page 访问太慢了&#xff0c;希望放到 Netlify 平台上面。 咱也没部署过&#xff0c;就试了一下&#xff0c;发…

低功耗数字IC后端设计实现典型案例| UPF Flow如何避免工具乱用Always On Buffer?

下图所示为咱们社区低功耗四核A7 Top Hierarchical Flow后端训练营中的一个案例&#xff0c;设计中存在若干个Power Domain&#xff0c;其中Power Domain2(简称PD2)为default Top Domain&#xff0c;Power Domain1&#xff08;简称PD1&#xff09;为一个需要power off的domain&…

【再探】设计模式—抽象工厂及建造者模式

抽象工厂模式和建造者模式都属于创建型模式。两者都能创建对应的对象&#xff0c;而创建者模式更侧重于创建复杂对象&#xff0c;将对象的创建过程封装起来&#xff0c;让客户端不需要知道对象的内部细节。 1 抽象工厂模式 需求&#xff1a; 在使用工厂方法模式时&#xff0…

Postgresql 从小白到高手 十一 :数据迁移ETL方案

文章目录 Postgresql 数据迁移ETL方案1、Pg 同类型数据库2 、Pg 和 不同数据库 Postgresql 数据迁移ETL方案 1、Pg 同类型数据库 备份 : pg_dump -U username -d dbname -f backup.sql插入数据&#xff1a; psql -U username -d dbname -f backup.sqlpg_restore -U username…

【Godot4.2】自定义Todo清单类 - myTodoList

概述 在写myList类的时候&#xff0c;就想到可以写一个类似的Todo清单类。 基础思路 本质还是在内部维护一个数组&#xff0c;在其基础上进行增删改查操作的封装为了方便存储数据&#xff0c;编写一个自定义内置类TodoItem&#xff0c;内部数组就变成了Array[TodoItem]类型的…

JENKINS 安装,学习运维从这里开始

Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarehttps://www.jenkins.io/download/首先点击上面。下载Jenkins 为了学习&#xff0c;从windows开始&#x…

mysql-sql练习-5-行列互转

目录 成绩单 简单互转 需求 多行转多列 分组 判断 聚合 理解 分组 合并 逆向需求 多列转多行 输出 合并 abc 去重 合并 拆分 需求 建表 多行转多列 逆向需求 多列转多行 拆分 按长度 拆分 按个数 成绩单 简单互转 需求 多行转多列 分组 判断 聚合 with tmp as(--…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇&#xff0c;我们已学习&#xff1a;【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图&#xff1a; 本篇&#xff1a;把Gui Guider设计好的界面&#xff0c;移植到STM32工程。 特别地&#xff1a; 在使用Gui Guider进行界面设计时&#xff0c;应…

如何在Linux上安装Python?2024Python安装教程

在Linux上安装Python并不难&#xff0c;对于Ubuntu或Debian系统&#xff0c;使用命令sudo apt install python3&#xff1b;对于CentOS、Red Hat或Fedora系统&#xff0c;使用命令sudo yum install python3。 如何在Linux上安装Python&#xff1f; 确切的安装步骤有所不同&am…

LabVIEW 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到LabVIEW.2024”。 返回解压后的文件夹&#xff0c;鼠标右击“ni_labview-2024”选择“装载”。 鼠标右击“Install”选择“以管理员身份运行”。 点击“我接受上述2条许可协议”&#xff0c;然后点击“下一步”。 点击“下一步”。 …

用html画一个四叶草

<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>四叶草</title> <link href"" rel"stylesheet"> <link rel"stylesheet" href"css/style.css&q…