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

2024-05-08 04:44

本文主要是介绍【智能优化算法】海象优化器(Walrus optimizer,WO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

海象优化器(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 childrent=0;% Loop counter
% fobj = @(x) funtest(x);
while t<Max_iterfor i=1:size(X,1)Flag4ub=X(i,:)>ub;Flag4lb=X(i,:)<lb;X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; % Check boundriesfitness=fobj(X(i,:)); % Calculate objective functionif fitness<Best_ScoreBest_Score=fitness;Best_Pos=X(i,:); % Update Best_posendif fitness>Best_Score && fitness<Second_ScoreSecond_Score=fitness;Second_Pos=X(i,:); % Update Second_posendendAlpha=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 0r1=rand();R=2*r1-1;Danger_signal=A*R;r2=rand();Satey_signal=r2;if abs(Danger_signal)>=1r3=rand();Rs=size(X,1);Migration_step=(Beta*r3^2)*(X(randperm(Rs),:)-X(randperm(Rs),:));X=X+Migration_step;elseif abs(Danger_signal)<1if Satey_signal>=0.5for i = 1:M_numberxy=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;endfor j = M_number+1:M_number+F_numberX(j,:) = X(j,:)+Alpha*(X(i,:)-X(j,:))+(1-Alpha)*(GBestX(j,:)-X(j,:));endfor i = SearchAgents_no-C_number+1:SearchAgents_noP=rand;o=GBestX(i,:)+X(i,:).*levyFlight(dim);X(i,:)=P*(o-X(i,:));endendif Satey_signal<0.5 && abs(Danger_signal)>=0.5for i = 1:SearchAgents_nor4=rand;X(i,:)=X(i,:)*R-abs(GBestX(i,:)-X(i,:))*r4^2;endendif Satey_signal<0.5 && abs(Danger_signal)<0.5for 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;endendendendt=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科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

这篇关于【智能优化算法】海象优化器(Walrus optimizer,WO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969338

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel