【改进算法】【IHAOAVOA】天鹰优化算法和非洲秃鹫混合优化算法

目录

1 主要内容

IHAOAVOA流程图

主要创新点

2  部分代码

3 程序结果

4 下载链接


主要内容

该程序复现《IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems》,天鹰优化算法(AO)和非洲秃鹫算法(AVOA)各有优势:AO具有强大的全局勘探能力,但其局部开发阶段还不够稳定。另一方面,AVOA具有良好的开发能力,但勘探机制不足。基于这两种算法的特点,提出了一种改进的AO和AVOA混合优化算法,以克服单一算法的不足,为解决全局优化问题提供了更高质量的解决方案。

大家在学习和建立模型过程中,很难原创性的找到智能优化算法,一开始简单的算法改进,如粒子群中的权重非线性化或者种群精英化等均可以提升算法创新性,但是随着各种组合创新的出现,智能算法创新需要结合的方法越来越多,也需要越来越新颖,因此各种文献都祭出多种算法结合的“混合”优化算法,本次分享的两种算法结合的优化代码很具有参考意义,程序采用matlab编程,提供了23个测试函数,通过修改主函数的Function_name即可分别检查该算法对不同测试函数的性能。

  • IHAOAVOA流程图

  • 主要创新点

  1. 增加复合学习算法(COBL)
COBL是智能算法中一个强大的优化工具,已成功用于改进不同的原生元启发式算,主要思想是同时评价当前解的适应度值及其反向解,然后保留更适合的适应度值参与后续的迭代计算。因此,OBL可以有效地增加找到更好的候选解的可能性。
2.结合AO的勘探阶段和AVOA的开发阶段
综合两个算法的优势,实现更加快速找到最优值的作用。

2  部分代码

% 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_Fif current_vulture_F>ihaoavoa_score && current_vulture_F2,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_Xif they exceed (down) the boundaries
            opposite_X=(opposite_X.*(~(Flag_UB+Flag_LB)))+ub.*Flag_UB+lb.*Flag_LB;
            Fnew=fobj(opposite_X);
            if Fnewif Fnewif 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

程序结果

4 下载链接

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

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

相关文章

【c++】理解vec.push_back(vector<int>())

vector<vector> vec; vec.push_back(vector()); vec.back().push_back(10); 定义一个二维向量&#xff08;动态数组&#xff09;: vector<vector> vec; 这行代码定义了一个名为vec的变量&#xff0c;它是一个向量&#xff08;动态数组&#xff09;&#xff0c;其中…

Apache Echarts介绍与入门

介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;https://echarts.apache.org/zh/index.html 入门案例 Apache Echarts官方提供的快…

MySQL误truncate截断后数据恢复2024.3.1

近期很多MySQL数据丢失情况&#xff0c;很多是人为误操作导致。MySQL数据库丢失可能由truncate截断表、delete删除表中数据行、delete删除表、delete删除库、操作系统rm删除数据库文件、硬盘坏道等情况导致。本案例是一个误截断表导致的丢失。 不管哪种情况&#xff0c;第一时…

STM32USART串口数据包

文章目录 前言一、介绍部分数据包两种包装方式&#xff08;分割数据&#xff09;HEX数据包文本数据包 数据包的收发流程数据包的发送数据包的接收固定包长的hex数据包接收可变包长的文本数据包接收 二、实例部分固定包长的hex数据包接收连接线路代码实现 可变包长的文本数据包接…

JavaScript DOM操作笔记记录回忆总结

一、什么是DOM&#xff1f; 1、通过 HTML DOM&#xff0c;可访问 JavaScript HTML 文档的所有元素。 2、当网页被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff08;Document Object Model&#xff09; 二、操作DOM 1、在操作DOM之前&#xff0c;我们需要先获取到…

设计模式-结构型模式-外观模式

外观模式&#xff08;Facade&#xff09;&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。[DP] 首先&#xff0c;定义子系统的各个组件接口和具体实现类&#xff1a; // 子系统组件接…

1美元持有ZKFair PFP-CyberArmy,潜在收益分析

3月2日&#xff0c;ZKFair PFP-CyberArmy 将在 Element 上正式开始Public Sale。

yolov9从头开始训练

yolov9从头开始训练 一、准备数据集 数据集相关文件存放布局如下 yolov9-datasets ├── train │ ├── images │ │ ├── image.jpg │ │ ├── │ └── labels │ ├── image.txt │ ├── ├── valid │ ├── images │ │ ├── image.jpg │ │ ├─…

Android minigbm框架普法

Android minigbm框架普法 引言 假设存在这么一个场景&#xff0c;我的GPU的上层实现走的不是标准的Mesa接口&#xff0c;且GPU也没有提专门配套的gralloc和hwcompoer实现。那么我们的Android要怎么使用到EGL和GLES库呢&#xff0c;并且此GPU驱动是支持drm实现的&#xff0c;也有…

【Sql Server】Update中的From语句,以及常见更新操作方式

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

翻译论文:Beating Floating Point at its Own Game: Posit Arithmetic(一)

仅作记录学习使用&#xff0c;侵删 原文Beating Floating Point at its Own Game: Posit Arithmetic 参考翻译Posit: 替换IEE754的新方式 | SIGARCH 摘要 IEEE标准754浮点数&#xff08;浮点数&#xff09;的直接接点替换 Posit的优势 不需要区间算术或可变大小操作数 如…

Freesia 项目引用的依赖

UML图 项目总依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version> </parent> <groupId>com.freesia</groupId> <artifa…

Java ElasticSearch面试题

Java ES-ElasticSearch面试题 前言1、ElasticSearch是什么&#xff1f;2. 说说你们公司ES的集群架构&#xff0c;索引数据大小&#xff0c;分片有多少 &#xff1f;3. ES的倒排索引是什么&#xff1f;4. ES是如何实现 master 选举的?5. 描述一下 ES索引文档的过程&#xff1a;…

【Kubernetes】k8s中容器之间、pod之间如何进行网络通信?

目录 PodKubernetes 网络模型同一Pod上的容器之间进行通信同一Node上的不同Pod之间进行通信不同Node上的Pod之间进行通信Service参考 Pod 首先来回顾一下Pod&#xff1a; Pod 是用于构建应用程序的最小可部署对象。单个 Pod 代表集群中正在运行的工作负载&#xff0c;并封装一…

mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操

MyBatis-Plus是一个基于MyBatis的增强工具&#xff0c;旨在简化开发、提高效率。它提供了通用的mapper和service&#xff0c;可以在不编写任何SQL语句的情况下&#xff0c;快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 功能代码测试前提&#xff1a; 需要对mybatisPl…

git介绍4.2

git(版本控制工具) 一、git 介绍 1、git是目前世界上最先进的分布式版本控制系统&#xff0c;可以有效&#xff0c;高速的处理从小到大的项目版本管理。 2、git是linux torvalds 为了帮助管理linux内核开发二开发的一个开放源码的版本控制软件。 3、git作用&#xff1a;更好…

Kubernetes(k8s第二部分)

资源清单相当于剧本 什么是资源&#xff1a; k8s中所有的内容都抽象为资源&#xff0c;资源实例化后&#xff0c;叫做对象。 1.K8S中的资源 集群资源分类 名称空间级别&#xff1a; kubeadm k8s kube-system kubectl get pod -n default 工作负载型资源&#xff0c;&a…

光栅化算法

多数计算机图形图像&#xff0c;是通过光栅显像显示给用户的&#xff0c;这种系统将图像作为像素阵列进行显示&#xff0c;像素&#xff08;pixel&#xff09;即图像元素&#xff08;picture element&#xff09;的简称。这些像素采用RGB颜色空间。本文讨论光栅显像的基本原理&…

基于ceph-deploy部署Ceph 集群

Ceph分布式存储一、存储基础1、单机存储设备1.1 单机存储的问题 2、分布式存储(软件定义的存储SDS)2.1 分布式存储的类型 二、Ceph简介1、Ceph优势2、Ceph架构3、Ceph 核心组件4、OSD 存储后端5、Ceph 数据的存储过程6、Ceph 版本发行生命周期 三、Ceph 集群部署1、 基于 ceph-…

【软考】数据结构之队列和栈

目录 1.例题一1.1题目1.2 题目截图1.3 题目分析 1.例题一 1.1题目 输出受限的双端队列是指元素可以从队列的两端输入&#xff0c;但只能从队列的一端输出&#xff0c;如下图所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次进入输出受限的双端队列&…