【智能优化算法】海象优化器(Walrus optimizer,WO)

news2024/11/27 21:48:10

海象优化器(Walrus optimizer,WO)是期刊“EXPERT SYSTEMS WITH APPLICATIONS”(中科院一区 IF 8.3)的2024年智能优化算法

01.引言

海象优化器(Walrus optimizer,WO)的灵感来自海象通过接收关键信号(危险信号和安全信号)选择迁徙、繁殖、栖息、觅食、聚集和逃跑的行为。为了测试所提出算法的能力,使用了IEEE(电气和电子工程师协会)2021年进化计算大会(CEC)的23个标准函数和基准套件。此外,为了评估所提出的算法在解决各种现实优化问题中的实用性,对6个标准的经典工程优化问题进行了检验和比较。出于统计目的,通过考虑预定义的停止准则,进行100次独立的优化运行,以确定统计度量,包括程序的平均值、标准差和计算时间。

02.优化算法的流程

03.优化算法论文中的效果展示

04.部分代码

function [Best_Score,Best_Pos,Convergence_curve]=WO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
% Initialize Best_pos and Second_pos
Best_Pos=zeros(1,dim); Second_Pos=zeros(1,dim);
Best_Score=inf; Second_Score=inf;%change this to -inf for maximization problems
GBestX=repmat(Best_Pos,SearchAgents_no,1);
%Initialize the positions of search agents
X=initialization(SearchAgents_no,dim,ub,lb);
Convergence_curve=zeros(1,Max_iter);
% fitness=inf(SearchAgents_no,1);
P=0.4; % Proportion of females
F_number=round(SearchAgents_no*P); % Number of females
M_number=F_number; % The males are equal in number to the females
C_number=SearchAgents_no-F_number-M_number; % Number of children
    
t=0;% Loop counter
% fobj = @(x) funtest(x);
while t<Max_iter
    for i=1:size(X,1)
        Flag4ub=X(i,:)>ub;
        Flag4lb=X(i,:)<lb;
        X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; % Check boundries
        fitness=fobj(X(i,:)); % Calculate objective function
        if fitness<Best_Score
            Best_Score=fitness;
            Best_Pos=X(i,:); % Update Best_pos
        end
        
        if fitness>Best_Score && fitness<Second_Score
            Second_Score=fitness;
            Second_Pos=X(i,:); % Update Second_pos
        end
    end
    
    Alpha=1-t/Max_iter;
    Beta=1-1/(1+exp((1/2*Max_iter-t)/Max_iter*10));
    A=2*Alpha; % A decreases linearly fron 2 to 0
    r1=rand();
    R=2*r1-1;
    Danger_signal=A*R;
    r2=rand();
    Satey_signal=r2;
    
    if abs(Danger_signal)>=1
        r3=rand();
        Rs=size(X,1);
        Migration_step=(Beta*r3^2)*(X(randperm(Rs),:)-X(randperm(Rs),:));
        X=X+Migration_step;
    elseif abs(Danger_signal)<1
        if Satey_signal>=0.5
            for i = 1:M_number
                xy=zeros(M_number,0);
                base=7;
                xy(i,1)=hal(i,base);
                M=[];
                m1=xy(i,:);
                m1=lb+m1.*(ub-lb);
                M=[M; m1];
                X(i,:)=M;
            end
            for j = M_number+1:M_number+F_number
                X(j,:) = X(j,:)+Alpha*(X(i,:)-X(j,:))+(1-Alpha)*(GBestX(j,:)-X(j,:));
            end
            for i = SearchAgents_no-C_number+1:SearchAgents_no
                P=rand;
                o=GBestX(i,:)+X(i,:).*levyFlight(dim);
                X(i,:)=P*(o-X(i,:));
            end
        end
                
        if Satey_signal<0.5 && abs(Danger_signal)>=0.5
            for i = 1:SearchAgents_no
                r4=rand;
                X(i,:)=X(i,:)*R-abs(GBestX(i,:)-X(i,:))*r4^2;
            end
        end
        
        if Satey_signal<0.5 && abs(Danger_signal)<0.5
            for i=1:size(X,1)
                for j=1:size(X,2)
                    
                    theta1=rand();
                    a1=Beta*rand()-Beta;
                    b1=tan(theta1.*pi);
                    X1=Best_Pos(j)-a1*b1*abs(Best_Pos(j)-X(i,j));
                    
                    theta2=rand();
                    a2=Beta*rand()-Beta;
                    b2=tan(theta2.*pi);
                    X2=Second_Pos(j)-a2*b2*abs(Second_Pos(j)-X(i,j));
                    
                    X(i,j)=(X1+X2)/2;
                end
            end
        end
    end
    t=t+1;
    Convergence_curve(t)=Best_Score;
end
end
function halton=hal(index,base)
result=0;
f=1/base;
i=index;
while(i>0)
    result=result+f*mod(i,base);
    i=floor(i/base);
    f=f/base;
end
halton=result;
end
function [ o ]=levyFlight(d)
  
    beta=3/2;
    sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
    u=randn(1,d)*sigma;
    v=randn(1,d);
    step=u./abs(v).^(1/beta);
    o=step;
end

05.本代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

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

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

相关文章

网络基础(1)详解

目录 1.计算机网络背景 2.网络协议 3.网络中的地址管理 1.计算机网络背景 1.1 网络发展 (1)计算机从独立模式到网络互联(多态计算机连接共享数据)再到局域网LAN(通过交换机和路由器连接)接着是广域网WAN 1.2 协议 协议就是双方的一种约定. 为什么要有协议? 因为在数据长距…

练习项目后端代码解析切面篇(Aspect)

前言 之前注解篇时我说&#xff0c;通常情况下一个自定义注解一般对应一个切面&#xff0c;虽然项目里的切面和注解个数相同&#xff0c;但是好像有一个名字看起来并不对应&#xff0c;无所谓&#xff0c;先看了再说。 ExceptionLogAspect切面 我在里面做了具体注释&#x…

Java 线程池 ( Thread Pool )的简单介绍

想象一下&#xff0c;你正指挥着一支超级英雄团队&#xff0c;面对蜂拥而至的敌人&#xff08;任务&#xff09;&#xff0c;不是每次都召唤新英雄&#xff08;创建线程&#xff09;&#xff0c;而是精心调配现有成员&#xff0c;高效应对。这就是Java线程池的魔力&#xff0c;…

口感与风味的完善结合:精酿啤酒的多样风格

啤酒的世界是丰富多彩的&#xff0c;不同的啤酒有着各自与众不同的口感和风味。而Fendi club啤酒&#xff0c;作为精酿啤酒的代表&#xff0c;以其多样化的风格和卓着的口感&#xff0c;吸引了无数啤酒爱好者的目光。 Fendi club啤酒的多样风格&#xff0c;首先体现在其原料的选…

【教学类-50-14】20240505“数一数”图片样式12:数一数(12个“人物”图案)

作品展示 背景需求&#xff1a; 前文做了“”材料”图片的数一数学具&#xff0c;效果不错&#xff0c; https://blog.csdn.net/reasonsummer/article/details/138466325https://blog.csdn.net/reasonsummer/article/details/138466325 为了让图案内容更丰富&#xff0c;我又…

2024-05-07 商业分析-如何在社会层面做一个更好的工具人-记录

摘要: 2024-05-07 商业分析-如何成为一个靠谱的工具人 如何在社会层面做一个更好的工具人 那么今天讲的这个主题呢&#xff0c;对吧&#xff1f;你们一看啊&#xff0c;就觉得这个就不应该我讲是吧啊&#xff0c;但是呢这个逻辑呢我还得跟你们讲一下啊&#xff0c;就是如何成为…

java面向对象实现文字格斗游戏

面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;是一种程序设计思想&#xff0c;它利用“对象”来封装状态和行为&#xff0c;使得代码更易于维护和扩展。 下面我们使用java中的面向对象编程&#xff0c;来实现一个文字格斗的游戏联系&#xff01; 实…

Day21 代码随想录打卡|字符串篇---右旋转字符串

题目&#xff08;卡码网 T55&#xff09;&#xff1a; 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面 k 个字符移到字符串的前面&#xff0c;实现字符串的右旋转…

京东生产环境十万并发秒杀系统三高架构

文章目录 三高——高并发、高可用、高可扩展用数据库乐观锁解决超卖阿里巴巴&#xff1a;为了提升数据库性能&#xff0c;对数据库的源码级别做了改造——在DB内部实现内存队列&#xff0c;一次性接收很多的请求&#xff0c;一次性更新。京东&#xff1a;redis&#xff0c;mq&a…

微软开发新模型;YouTube 推出新AI功能;可折叠iPhone 或发布?

微软或开发新模型与 Google、OpenAI 竞争 The Information 报道&#xff0c;微软正在训练一种新的 AI 大模型「MAI-1」&#xff0c;规模上足以与 Google、Anthropic 乃至 OpenAI 的先进模型抗衡。 据报道&#xff0c;这个 MAI-1 模型由微软聘请的 Inflection 前 CEO Mustafa S…

【Linux】Linux线程

一、Linux线程的概念 1.什么是线程 1.一个进程的一个执行线路叫做线程&#xff0c;线程的一个进程内部的控制序列。 2.一个进程至少有一个执行线程 3.线程在进程内部&#xff0c;本质是在进程地址空间内运行 4.操作系统将进程虚拟地址空间的资源分配给每个执行流&#xff0…

每日OJ题_DFS解决FloodFill⑤_力扣417. 太平洋大西洋水流问题

目录 力扣417. 太平洋大西洋水流问题 解析代码 力扣417. 太平洋大西洋水流问题 417. 太平洋大西洋水流问题 难度 中等 有一个 m n 的矩形岛屿&#xff0c;与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界&#xff0c;而 “大西洋” 处于大陆的右边界和下…

题目----力扣--移除链表元素

题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&…

2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.17,华为机试

2024年4月17日华为春招实习试题【三题】-题目题解在线评测 &#x1f52e;题目一描述&#xff1a;扑克牌消消乐输入描述输出描述样例一样例二Limitation解题思路一&#xff1a;模拟&#xff0c;遇到连续3张相同牌号的卡牌&#xff0c;直接删除解题思路二&#xff1a;栈解题思路三…

【备战软考(嵌入式系统设计师)】08 - 多媒体技术信息安全

多媒体技术 这内容比较杂&#xff0c;而且跟咱嵌入式的关系不大&#xff0c;但是软考里会考一些&#xff0c;下面我就结合我已经刷过的一千多道往年真题概括总结一下常考的知识点。 媒体分类 首先媒体分为五类&#xff1a; 感觉媒体&#xff0c;让人直接感觉得到的媒体&…

热敏电阻怎么进行性能测试?并以LabVIEW为例进行说明

过程也可用于执行热敏电阻测量。RTD和热敏电阻遵循非常相似的功能原理&#xff0c;测量步骤与下面提供的步骤相同。有关热敏电阻的更多信息&#xff0c;请参阅本文档。 查找设备引脚排列 在连接任何信号之前&#xff0c;请找到您的设备引脚排列。 打开NI MAX并展开设备和接口。…

【Java笔记】多线程:一些有关中断的理解

文章目录 线程中断的作用线程的等待状态WAITINGTIMED_WAITING 线程从等待中恢复 java.lang.Thread中断实现相关方法中断标识interrupted 一些小练习Thread.interrupt() 只唤醒线程并修改中断标识sleep() 清除中断状态标识 Reference 线程中断的作用 线程中断可以使一个线程从等…

关于2024年上半年软考考试批次安排的通告

按照《2024年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作安排及有关事项的通知》&#xff08;计考办〔2024〕1号&#xff09;文件精神&#xff0c;结合各地机位实际&#xff0c;现将2024年上半年计算机软件资格考试有关安排通告如下&#xff1a; 一、考…

鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多&#xff0c;比如中断控制器&#xff0c;中断源&#xff0c;中断向量&#xff0c;中断共享&#xff0c;中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.用海公公打比方说明白中断各个概念…

GORM 与 MySQL(一)

GORM 操作 Mysql 数据库&#xff08;一&#xff09; 温馨提示&#xff1a;以下关于 GORM 的使用&#xff0c;是基于 Gin 框架的基础上&#xff0c;如果之前没有了解过 Gin 可能略微困难。 GORM 介绍 GORM 是 Golang 的一个 orm 框架。简单说&#xff0c;ORM 就是通过实例对象…