大白鲨优化算法(WSO)(Matlab代码实现)

news2024/11/26 6:01:14

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

这是一种新颖的元启发式算法,称为白鲨优化优化算法(WSO),用于解决连续搜索空间上的优化问题。WSO的核心思想和基础受到大白鲨行为的启发,包括它们在导航和觅食时非凡的听觉和嗅觉。对行为的这些方面进行了数学建模,以适应WSO的探索和利用之间的充分平衡,并帮助搜索代理探索和利用搜索空间的每个潜在区域以实现优化。WSO的搜索代理随机更新其与迄今为止最佳解决方案相关的位置,以最终得出最佳结果。

📚2 运行结果

部分代码:

function [fmin0,gbest,ccurve]=WSO(whiteSharks,itemax,lb,ub,dim,fobj)
 
%% Convergence curve
ccurve=zeros(1,itemax);

%%% Show the convergence curve
    figure (1);
    set(gcf,'color','w');
    hold on
    xlabel('Iteration','interpreter','latex','FontName','Times','fontsize',10)
    ylabel('fitness value','interpreter','latex','FontName','Times','fontsize',10); 
    grid;

%% Start the WSO  Algorithm
% Generation of initial solutions
WSO_Positions=initialization(whiteSharks,dim,ub,lb);% Initial population

% initial velocity
v=0.0*WSO_Positions; 

%% Evaluate the fitness of the initial population
fit=zeros(whiteSharks,1);

for i=1:whiteSharks
     fit(i,1)=fobj(WSO_Positions(i,:));
end

%% Initalize the parameters of WSO
fitness=fit; % Initial fitness of the random positions of the WSO
 
[fmin0,index]=min(fit);

wbest = WSO_Positions; % Best position initialization
gbest = WSO_Positions(index,:); % initial global position

%% WSO Parameters
    fmax=0.75; %  Maximum frequency of the wavy motion
    fmin=0.07; %  Minimum frequency of the wavy motion   
    tau=4.11;  
       
    mu=2/abs(2-tau-sqrt(tau^2-4*tau));

    pmin=0.5;
    pmax=1.5;
    a0=6.250;  
    a1=100;
    a2=0.0005;
  %% Start the iterative process of WSO 
for ite=1:itemax

    mv=1/(a0+exp((itemax/2.0-ite)/a1)); 
    s_s=abs((1-exp(-a2*ite/itemax))) ;
 
    p1=pmax+(pmax-pmin)*exp(-(4*ite/itemax)^2);
    p2=pmin+(pmax-pmin)*exp(-(4*ite/itemax)^2);
    
 %% Update the speed of the white sharks in water  
     nu=floor((whiteSharks).*rand(1,whiteSharks))+1;

     for i=1:size(WSO_Positions,1)
           rmin=1; rmax=3.0;
          rr=rmin+rand()*(rmax-rmin);
          wr=abs(((2*rand()) - (1*rand()+rand()))/rr);       
          v(i,:)=  mu*v(i,:) +  wr *(wbest(nu(i),:)-WSO_Positions(i,:));
           %% or                

%          v(i,:)=  mu*(v(i,:)+ p1*(gbest-WSO_Positions(i,:))*rand+.... 
%                    + p2*(wbest(nu(i),:)-WSO_Positions(i,:))*rand);          
     end
 
 %% Update the white shark position
     for i=1:size(WSO_Positions,1)
       
        f =fmin+(fmax-fmin)/(fmax+fmin);
         
        a=sign(WSO_Positions(i,:)-ub)>0;
        b=sign(WSO_Positions(i,:)-lb)<0;
         
        wo=xor(a,b);

        % locate the prey based on its sensing (sound, waves)
            if rand<mv
                WSO_Positions(i,:)=  WSO_Positions(i,:).*(~wo) + (ub.*a+lb.*b); % random allocation  
            else   
                WSO_Positions(i,:) = WSO_Positions(i,:)+ v(i,:)/f;  % based on the wavy motion
            end
    end 
    
    %% Update the position of white sharks consides_sng fishing school 
for i=1:size(WSO_Positions,1)
        for j=1:size(WSO_Positions,2)
            if rand<s_s      
                
             Dist=abs(rand*(gbest(j)-1*WSO_Positions(i,j)));
             
                if(i==1)
                    WSO_Positions(i,j)=gbest(j)+rand*Dist*sign(rand-0.5);
                else    
                    WSO_Pos(i,j)= gbest(j)+rand*Dist*sign(rand-0.5);
                    WSO_Positions(i,j)=(WSO_Pos(i,j)+WSO_Positions(i-1,j))/2*rand;
                end   
            end
         
        end       
end
%     

%% Update global, best and new positions
 
    for i=1:whiteSharks 
        % Handling boundary violations
           if WSO_Positions(i,:)>=lb & WSO_Positions(i,:)<=ub%         
            % Find the fitness
              fit(i)=fobj(WSO_Positions(i,:));    
              
             % Evaluate the fitness
            if fit(i)<fitness(i)
                 wbest(i,:) = WSO_Positions(i,:); % Update the best positions
                 fitness(i)=fit(i);   % Update the fitness
            end
            
            %% Finding out the best positions
            if (fitness(i)<fmin0)
               fmin0=fitness(i);
               gbest = wbest(index,:); % Update the global best positions
            end 
            
        end
    end

%% Obtain the results
  outmsg = ['Iteration# ', num2str(ite) , '  Fitness= ' , num2str(fmin0)];
  disp(outmsg);

 ccurve(ite)=fmin0; % Best found value until iteration ite

 if ite>2
        line([ite-1 ite], [ccurve(ite-1) ccurve(ite)],'Color','b'); 
        title({'Convergence characteristic curve'},'interpreter','latex','FontName','Times','fontsize',12);
        xlabel('Iteration');
        ylabel('Best score obtained so far');
        drawnow 
 end 
  
end 
end

🎉3 参考文献

[1]Malik Braik, Abdelaziz Hammouri, Jaffar Atwan, Mohammed Azmi Al-Betar, Mohammed A.Awadallah

White Shark Optimizer: A novel bio-inspired meta-heuristic algorithm for global optimization problems

🌈4 Matlab代码实现

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

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

相关文章

2022年Java发展怎么样?现在学了Java技术出来是否还能找到工作?

马云爸爸说过&#xff0c;未来的制造业要的不是石油&#xff0c;最大的能源应该是数据。不管你是上网购物&#xff0c;还是手机浏览咨询&#xff0c;甚至是政府机构&#xff0c;大型跨国集团系统&#xff0c;银行&#xff0c;背后的庞大的数据处理都是由Java来完成&#xff0c;…

FPGA时序约束02——不同时序路径的分析方法

前言前文&#xff08;FPGA时序约束01——基本概念&#xff09;中介绍了四种时序路径&#xff0c;如下图所示。 分别是触发器到触发器&#xff0c;触发器到输出端&#xff0c;输入端到触发器&#xff0c;输入端到输出端&#xff0c;其中输入端到输出端是纯组合逻辑路径&#xff…

外包做的系统宕机了,逼得我重新设计一套MySQL数据库架构!

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 目录 一般业务系统运行流程图一台 4 核 8G 的机器能扛多少并发量呢&#xff1f;高并发来袭时数据库会先被打死吗&#xff1f;8 核 16G 的数据库每秒大概可以抗多少并发压力&#xff1f;数据库架构可以从哪些方面优…

[Android移动安全渗透基础教程] 如何为Android Studio 模拟器(AVD)设置Frida?

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 0x01 如何为Android Studio 模拟器&#xff08;AVD&#xff09;设置Frid…

全志V853 NPU 系统介绍

NPU 系统介绍 V853 芯片内置一颗 NPU&#xff0c;其处理性能为最大 1 TOPS 并有 128KB 内部高速缓存用于高速数据交换&#xff0c;支持 OpenCL、OpenVX、android NN 与 ONNX 的 API 调用&#xff0c;同时也支持导入大量常用的深度学习模型。 NPU 系统架构 NPU 的系统架构如下…

猿创征文| 六款我的开发者宝藏工具箱

目录 No.1 | 亿图图示 简介&#xff1a; 推荐之处&#xff1a; 下载途径&#xff1a; Show time&#xff1a; No.2 | 飞书 简介&#xff1a; 推荐之处&#xff1a; 下载途径&#xff1a; Show time&#xff1a; No.3 | 迅捷PDF转换器 简介&#xff1a; 推荐之处&#xff1a; …

Allegro SigXplorer 等长设置方法-比较简单

使用方法示一&#xff1a; 1、如图SDRAM的连线U2到U5、U6和U7的地址线均需要设置等长&#xff0c;常规我们对每个网络设置pin pair&#xff0c;会比较繁琐&#xff0c;设过的人都知道。 使用方法二&#xff1a; 2、开始设置&#xff0c;打开规则管理器&#xff0c;在电气规则…

HTML爱心代码 | 一起体验理工男的极致浪漫(电视剧男主同款)

写在前面 大家好&#xff0c;我是陈橘又青&#xff0c;今天中午刷微博&#xff0c;看到最近《点燃我温暖你》中男主角——理工男李峋的爱心代码撩到了无数人&#xff0c;于是把代码开源分享给大家。 文章目录写在前面运行示例完整代码保姆级运行教学添加背景图片修改爱心颜色运…

软件工程毕业设计课题(17)基于python的毕业设计python鲜花水果商城系统毕设作品源码

项目背景和意义 目的&#xff1a;伴随着互联网技术的不断发展和完善&#xff0c;在人们的生活和工作的各个方面&#xff0c;互联网都有着非常重大的影响。伴随着国内电子商务行业的迅猛发展&#xff0c;消费者现在能够轻松的实现足不出户的&#xff0c;仅仅通过网络购物平台就可…

这些包括我在内都有的Python编程陋习,趁早改掉

B站|公众号&#xff1a;啥都会一点的研究生 相关阅读 整理了几个100%会踩的Python细节坑&#xff0c;提前防止脑血栓 整理了十个100%提高效率的Python编程技巧&#xff0c;更上一层楼 Python-列表&#xff0c;从基础到进阶用法大总结&#xff0c;进来查漏补缺 Python-元组&…

pytest参数化详解

文章目录一.概念二.单个参数三.多个参数案例1案例2:使用py文件存放测试数据案例3:使用yaml文件存放测试数据案例4:使用json文件存放测试数据四.对测试类参数化案例1一.概念 参数化&#xff0c;就是把测试过程中的数据提取出来&#xff0c;通过参数传递不同的数据来驱动用例运行…

健身房信息管理系统(PHP+Html+MySQL)

3.需求分析 3.1 健身房管理系统功能需求 健身房管理信息系统&#xff0c;提供动作教学&#xff0c;健身基本动作可视化&#xff0c;健身知识层次化&#xff0c;一个完整的健身房管理系统&#xff0c;为健身爱好者对健身知识的了解和健身动作的了解提供了便利&#xff0c;系统应…

网络协议:透彻解析HTTPS协议

本篇内容包括&#xff1a;HTTPS 协议概述&#xff0c;SSL 与 TLS&#xff08;SSL 与 TLS 概述、SSL证书 和 SSL 与 TLS 二者之间关系&#xff09;&#xff0c;以及 HTTPS 下浏览器访问一个网站的全过程的内容&#xff01; 文章目录一、HTTPS 协议概述二、SSL 与 TLS1、SSL 与 T…

两种让python输出更加美观的方式,三分钟看完就会

嗨害大家好鸭&#xff01;我是小熊猫❤ 最近要给大家持续带来干货输出啦&#xff01; 赶紧收藏起来&#xff0c;以后查漏补缺要用到的喔~ 源码、资料电子书点击这里 1.输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 (第三种方式是使用文件对象的 write…

Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

二选一工作器引入的Verilog语法

二选一工作器引入的Verilog语法 ——XILINX 基于BASYS 3板 状态机、线性序列机、学习仿真 DDS&#xff1a;矩阵键盘、DAC,LCD/数码管&#xff0c;这些模块间的接口逻辑 常见的接口设计&#xff1a;SPI、IIC、UART 学习&#xff1a;三八译码器、计数器电灯、学习开发工具的使用…

年轻人不用太过于努力

周末和一个毕业一年多的朋友聊天&#xff0c;我随口问了一句「你有什么想跟我分享的」&#xff0c;然后他就说了上面的那句话。「年轻人不用太过于努力」和读者聊天会做成我的一个公众号专栏&#xff0c;内容有也会越来越丰富&#xff0c;全部的内容都会收录到我的程序人生专栏…

RK3568平台开发系列讲解(音频篇)Audio 音量控制流程

🚀返回专栏总目录 文章目录 一、安卓音量控制流程简介二、什么是AudioService沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍安卓音量控制流程。 一、安卓音量控制流程简介 Android音频系统,分为数据流和策略两部分。 数据流描述了音频数据从数据源…

【C++哈希表】哈希碰撞,线性探测,二次探测 ,荷载因子,闭散列的实现及string需要特化

目录 1.哈希概念 2.哈希碰撞 3.解决哈希冲突 4.哈希表闭散列实现 框架&#xff1a; 4.3插入 1.哈希概念 线性表以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。线性表查找…

首届数据安全大赛初赛web

文章目录easy_nodeeasy_webeasy_phar刮刮乐my_cloudeasy_node 访问src得到源码 第一步需要伪造admin用户 可以看到都是通过jwt进行加密解密 很容易想到jwt的几种攻击方式&#xff0c;可以参考下文章https://blog.csdn.net/miuzzx/article/details/111936737 首先试下改为n…