【智能优化算法】IHAOAVOA(一种改进的混合天鹰优化算法(AO)和非洲秃鹫优化算法(AVOA))

发表在Mathematical Biosciences and Engineering的文章:IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems.icon-default.png?t=N7T8https://www.x-mol.com/paperRedirect/1572654041256222720

01.引言

天鹰优化器(AO)和非洲秃鹰优化算法(AVOA)是两种新开发的元启发式算法,分别模拟自然界中天鹰座和非洲秃鹰的几种智能狩猎行为。AO具有强大的全局探索能力,但其局部开发阶段不够稳定。另一方面,AVOA具有可观的开发能力,但探索机制不足。基于两种算法的特点,本文提出了一种改进的混合AO和AVOA优化器,称为IHAOAVOA,以克服单一算法的不足,为解决全局优化问题提供更高质量的解决方案。首先,将 AO 的探索阶段和 AVOA 的开发阶段结合起来,以保留各自有价值的搜索能力。然后,一种新的复合反对学习(COBL)旨在增加种群多样性并帮助混合算法摆脱局部最优。此外,为了更有效地指导搜索过程,平衡探索和利用,引入适应度-距离平衡(FDB)选择策略来修改核心位置更新公式。通过在 23 个经典基准函数和 IEEE CEC2019 测试套件上与基本 AO、AVOA 和六种最先进的算法进行比较,对所提出的 IHAOAVOA 的性能进行了全面调查和分析。实验结果表明,与其他比较方法相比,IHAOAVOA 在大多数测试函数上都实现了优越的求解精度、收敛速度和局部最优避免。此外,通过解决五个工程设计问题,突出了 IHAOAVOA 的实用性。我们的研究结果表明,在解决实际优化任务时,所提出的技术也具有很强的竞争力和前景。

02.代码流程图

3.部分代码

%___________________________________________________________________________________________________________%
%  IHAOAVOA: An improved hybrid Aquila optimizer and African vultures optimization algorithm(IHAOAVOA) source codes demo 1.0          
%                                                                                                           %
%  Developed in MATLAB R2017a                                                                               %
%                                                                                                           %
%  Author and programmer: Yaning Xiao,Yanling Guo, Hao Cui, Yangwei Wang, Jian Li, Yapeng Zhang             %
%                                                                                                           %
%         e-Mail: xiaoyaning@nefu.edu.cn, nefugyl@hotmail.com                                               %
%                                                                                                           %                                           
%___________________________________________________________________________________________________________%
% The IHAOAVOA Optimization Algorithm
function [ihaoavoa_score,ihaoavoa_pos,ihaoavoa_curve]=IHAOAVOA(N,max_iter,lb,ub,dim,fobj)
    tic
    % initialize Best_vulture1, Best_vulture2
    ihaoavoa_pos=zeros(1,dim);
    ihaoavoa_score=inf;
    Best_vulture2_X=zeros(1,dim);
    Best_vulture2_F=inf;
    %Initialize the first random population of vultures
    X=initialization(N,dim,ub,lb);   
   %%  Controlling parameter   
   %/********AVOA**********/
    p2=0.4;
    p3=0.6;
    alpha=0.8;
    betha=0.2;
    gamma=2.5;
    %/********AO**********/
    avto = 1:dim;
    u = .0265;
    r0 = 10;
    rao = r0 +u*avto;
    omega = .005;
    phi0 = 3*pi/2;
    phi = -omega*avto+phi0;
    x = rao .* sin(phi);  
    y = rao .* cos(phi); 
    %/********LOBL**********/
    k=12000; % Scale Coefficient
    
    t=1; % Loop counter
%%Main loop
while t <= max_iter
    %% Evaluate the fitness
        for i=1:size(X,1)
            % Calculate the fitness of the population
            current_vulture_X = X(i,:);
            current_vulture_F=fobj(current_vulture_X);
            % Update the first best two vultures if needed
            if current_vulture_F<ihaoavoa_score
                ihaoavoa_score=current_vulture_F; % Update the first best bulture
                ihaoavoa_pos=current_vulture_X;
            end
            if current_vulture_F>ihaoavoa_score && current_vulture_F<Best_vulture2_F
                Best_vulture2_F=current_vulture_F; % Update the second best bulture
                Best_vulture2_X=current_vulture_X;
            end
        end
        
        a=unifrnd(-2,2,1,1)*((sin((pi/2)*(t/max_iter))^gamma)+cos((pi/2)*(t/max_iter))-1);
        P1=(2*rand+1)*(1-(t/max_iter))+a;
        %% FDB
        index = fitnessDistanceBalance(X,ihaoavoa_score); 
        %% Update the location
        for i=1:size(X,1)
            current_vulture_X = X(i,:);  % pick the current vulture back to the population
            F=P1*(2*rand()-1);  
            random_vulture_X=random_select(ihaoavoa_pos,Best_vulture2_X,alpha,betha);
          %% Composite opposition-based learning strategy (COBL)
           if rand<0.5
               opposite_X=lb+ub-rand*current_vulture_X;
            else
               opposite_X=(ub + lb)/2 + (ub + lb)/(2*k) - current_vulture_X/k;
            end
            Flag_UB=opposite_X>ub; % check if they exceed (up) the boundaries
            Flag_LB=opposite_X<lb; % check if they exceed (down) the boundaries
            opposite_X=(opposite_X.*(~(Flag_UB+Flag_LB)))+ub.*Flag_UB+lb.*Flag_LB;
            Fnew=fobj(opposite_X);
            if Fnew<fobj(current_vulture_X)
                current_vulture_X=opposite_X;
            end
            if Fnew<ihaoavoa_score
                ihaoavoa_pos=current_vulture_X;
                ihaoavoa_score=Fnew;
            end
            %% Exploration stage:AO
            if abs(F) >= 1 
                if rand <0.5
                    current_vulture_X=ihaoavoa_pos*(1-t/max_iter)+(mean(X(i,:))-ihaoavoa_pos)*rand();
                else
                    current_vulture_X=ihaoavoa_pos.*Levy(dim)+X(index,:)+(y-x)*rand;  
                end
            %% Exploitation stage:AVOA
            elseif abs(F) < 1 
                current_vulture_X = exploitation(current_vulture_X, ihaoavoa_pos, Best_vulture2_X, random_vulture_X, F, p2, p3, dim, ub, lb); % Modified the position-weighted equation
            end
                X(i,:) = current_vulture_X; % place the current vulture back into the population
        end
        t=t+1;
        ihaoavoa_curve(t)=ihaoavoa_score;
        X = boundaryCheck(X, lb, ub);%check the boundary
end
toc
end

03.代码效果图

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 安装系统可视化监控工具 Netdata

目录 About 监控工具 NetdataLinux 系统安装 Netdata关于 openEuler1、查看内核信息2、查看主机信息3、查看 dnf 包管理器的版本 Netdata 安装1、更新系统环境相关 rpm 包2、查看 netdata 包信息3、安装 netdata 包4、编辑 netdata.conf 配置5、启动 netdata 服务6、查看 netda…

页面静态化:Freemarker入门案例和常用指令教程

页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页&#xff0c;这样用户在访问网页时&#xff0c;服务器直接给用户响应静态html页面&#xff0c;没有了动态查询数据库的过程。 那么这些静态HTML页面…

TestNG Include and exclude

在这篇文章中&#xff0c;我们将详细讨论TestNG的包含和排除标签。下面是我们将在这篇文章中看到的要点- 包含和排除包第二&#xff0c;包括和排除测试方法最后&#xff0c;包括和排除组 我们只能将exclude标记与packages、methods和run标记&#xff08;groups的子标记&#…

公园景区小红书抖音打造线上流量运营策划方案

【干货资料持续更新&#xff0c;以防走丢】 公园景区小红书抖音打造线上流量运营策划方案 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 共70页可编辑&#xff08;完整资料包含以下内容&#xff09; 目录 公园的线上运营方案&#xff1a; 一、运营目标 1. 品…

微电网优化:基于小龙虾优化算法COA的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元&#xff0c;用户现场的分布式发电可以支持用电需求。为此&#xff0c;您的微电网将接入、监控、预测和控制您本地的分布式能源系统&#xff0c;同时强化供电系统的弹性&#xff0c;保障您的用电更经济。您可以在连接…

TCP三次握手过程及抓包分析

TCP三次握手过程 一、TCP分段格式二、TCP三次握手三、Wireshark抓包分析 一、TCP分段格式 二、TCP三次握手 三、Wireshark抓包分析

cmake中报错undefined reference to `pthread_create‘的解决方法

出现报错&#xff1a; 解决方法 一般网上会建议在终端指令g/gcc后面增加参数-pthread,但是我们没有用到g/gcc指令. cmake的解决方法是在CMakeLists.txt文件里面增加一行. add_executable(server2 main.cpp) target_link_libraries(server2 pthread)问题就解决了

[VulnHub靶机渗透] pWnOS 2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

lora pingpang系统 4

1 深入了解LoRa技术原理 1.1 LoRa扩频通信原理 1.1.1 模拟无线通信&#xff1a; 模拟无线通信是一种使用模拟信号传输数据的通信方式。这种通信方式已经被数字无线通信所取代&#xff0c;因为数字通信具有更高的效率和可靠性。 天线&#xff1a;从空中接收到的无线电波转换成…

用友NC Cloud importhttpscer 任意文件上传漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,基于云原生架构,深度应用新一代数字技术,打造开放、 互联、融合、智能的一体化云平台,支持公有云、混合云、专属云…

ViewModel 使用及原理解析

public final MutableLiveData mUserLiveData new MutableLiveData<>(); public UserModel() { //模拟从网络加载用户信息 mUserLiveData.postValue(new User(1, “name1”)); } //模拟 进行一些数据骚操作 public void doSomething() { User user mUserLiveDat…

【RMSNorm】Root Mean Square Layer Normalization

【RMSNorm】Root Mean Square Layer Normalization 论文信息 阅读评价 Abstract Introduction Related Work Background RMSNorm Experiments 论文信息 名称内容论文标题Root Mean Square Layer Normalization论文地址https://arxiv.org/abs/1910.07467发表时间2019-…

linux练习-交互式传参

在shell脚本中&#xff0c;read 向用户显示一行文本并接受用户输入 #!/bin/bash read -p 依次输入你的姓名、年龄、家乡 name age home echo 我是$name,年龄$age,我来自$home

12种常见的软件架构风格

什么是软件架构&#xff1f; 软件架构是定义软件系统的高级结构和组织的过程。它涉及识别和选择正确的组件&#xff0c;决定它们之间如何交互&#xff0c;以及确定它们应该如何组织以实现特定的目标。软件架构的目标是创建一个可维护、可扩展和安全的系统&#xff0c;能够满足…

小红书自动化仿写发文机器人了解一下

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

权限认证SpringCloud GateWay、SpringSecurity、OAuth2.0、JWT一网打尽!

权限认证SpringCloud GateWay、SpringSecurity、OAuth2.0、JWT一网打尽 一、SpringCloud GateWay 1.它是如何工作的&#xff1f; ​ 客户端向 Spring Cloud Gateway 发出请求。如果Gateway处理程序映射确定一个请求与路由相匹配&#xff0c;它将被发送到Gateway Web处理程序。…

蓝桥杯第十四届--异或和之和

题目描述 给定一个数组 Ai&#xff0c;分别求其每个子段的异或和&#xff0c;并求出它们的和。或者说&#xff0c;对于每组满足 1 ≤ L ≤ R ≤ n 的 L, R &#xff0c;求出数组中第 L 至第 R 个元素的异或和。然后输出每组 L, R 得到的结果加起来的值。 输入格式 输入的第一…

基于ACO蚁群优化的VRPSD问题求解matlab仿真,输出规划路径结果和满载率

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 关键概念与模型 4.2数学模型 5.完整程序 1.程序功能描述 基于ACO蚁群优化的VRPSD问题求解matlab仿真,输出ACO优化的收敛曲线&#xff0c;规划路径结果和每一条路径的满载率。 2.测试软…

C# MES通信从入门到精通(8)——C#调用Webservice服务进行数据交互

前言 在上位机开发领域,使用webservice来访问客户的终端Mes系统是一项必备的技能,本文详细介绍了如何在c#中调用webservice服务,不仅介绍了使用添加服务引用直接调用webservice中的方法外还介绍了使用http的post方法调用webservice方法,过程详细且均为实战经验总结,对于初…

十个排序算法

目录 冒泡排序(Bubble Sort) 选择排序(Select Sort) 插入排序&#xff08;InsertSort&#xff09; 希尔排序&#xff08;ShellSort&#xff09; 计数排序&#xff08;CountSort&#xff09; 快速排序&#xff08;QuickSort&#xff09; 归并排序&#xff08;Merge Sort&a…