【智能优化算法】海象优化器(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

相关文章

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

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... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将