【改进算法】【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_vulture2ihaoavoa_pos=zeros(1,dim);ihaoavoa_score=inf;Best_vulture2_X=zeros(1,dim);Best_vulture2_F=inf;%Initialize the first random population of vulturesX=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 Coefficientt=1; % Loop counter
%%Main loop
while t <= max_iter%% Evaluate the fitnessfor i=1:size(X,1)% Calculate the fitness of the populationcurrent_vulture_X = X(i,:);current_vulture_F=fobj(current_vulture_X);% Update the first best two vultures if neededif 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;%% FDBindex = fitnessDistanceBalance(X,ihaoavoa_score); %% Update the locationfor i=1:size(X,1)current_vulture_X = X(i,:);  % pick the current vulture back to the populationF=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.5opposite_X=lb+ub-rand*current_vulture_X;elseopposite_X=(ub + lb)/2 + (ub + lb)/(2*k) - current_vulture_X/k;endFlag_UB=opposite_X>ub; % check if they exceed (up) the boundariesFlag_LB=opposite_Xif they exceed (down) the boundariesopposite_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.5current_vulture_X=ihaoavoa_pos*(1-t/max_iter)+(mean(X(i,:))-ihaoavoa_pos)*rand();elsecurrent_vulture_X=ihaoavoa_pos.*Levy(dim)+X(index,:)+(y-x)*rand;  end%% Exploitation stage:AVOAelseif 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 equationendX(i,:) = current_vulture_X; % place the current vulture back into the populationend

程序结果

4 下载链接

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

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

相关文章

spring boot3解决跨域的几种方式

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 1.前言 2.何为跨域 3.跨域问题出现特征 4.方式一&#xff1a;使用 CrossOrigin 注解 5.方式二&#xff1a;自定义…

2024年3月2日 十二生肖 今日运势

小运播报&#xff1a;2024年3月2日&#xff0c;星期六&#xff0c;农历正月廿二 &#xff08;甲辰年丙寅月乙丑日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;鸡、蛇、鼠 需要注意&#xff1a;狗、马、羊 喜神方位&#xff1a;西北方 财神方位&#xff1a;东…

微服务间通信重构与服务治理笔记

父工程 依赖版本管理,但实际不引入依赖 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

力扣111 二叉树的最小深度 Java版本

文章目录 题目描述层序遍历解法递归解法 题目描述 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,nu…

Java中finally语句中的代码在什么情况下不会被执行?

在Java中&#xff0c;finally块中的代码几乎在任何情况下都会执行&#xff0c;无论是在try块中的代码正常执行完毕&#xff0c;还是遇到异常被catch块捕获时。finally块主要用于执行清理工作&#xff0c;比如释放资源等。然而&#xff0c;存在少数几种情况下finally块中的代码不…

[SS]语义分割_膨胀卷积

膨胀卷积 目录 一、概念 1、定义 2、知识点 二、详细介绍 1、引入 2、膨胀系数设定 一、概念 1、定义 膨胀卷积&#xff08;Dilated Convolution&#xff09;&#xff0c;也称为空洞卷积&#xff08;Atrous Convolution&#xff09;&#xff0c;是一种在卷积神经网络…

MySQLBackup备份数据库

环境&#xff1a;MySQL 8.0.36 1、安装部署 [rootnode5 ~]# wget -c https://edelivery.oracle.com/osdc/softwareDownload?fileNameV1040085-01.zip [rootnode5 ~]# ll total 22776 -rw-------. 1 root root 1066 Jan 21 14:59 anaconda-ks.cfg -r–r–r–. 1 root root 23…

Cloudera虚拟机配置(虚拟机环境自带Hadoop、Impala等大数据处理应用)

上学期的大数据处理课程&#xff0c;笔者被分配到Impala的汇报主题。然而汇报内容如果单纯只介绍Impala的理论知识&#xff0c;实在是有些太过肤浅&#xff0c;最起码得有一些实际操作来展示一下Impala的功能。但是Impala的配置实在是有些困难与繁琐&#xff0c;于是笔者通过各…

uni-app去除页面头部的标题栏

uniapp项目 每个界面都会有一个标题栏 配置在我们项目根目录的 pages.json中 我们将它全部去掉 上面还是有一条黑的 体验非常差 我们只需要在pages.json中 指定page的 style中加入 "navigationStyle": "custom"对应的page 就没有这个标题栏了

【王道数据结构】【chapter8排序】【P371t6】

试设计一个算法&#xff0c;判断一个数据序列是否构成一个小根堆&#xff08;下面代码中的堆排序的部分仅仅是为了方便设计测试用例&#xff09; #include <iostream> #include<time.h> #include<stdlib.h>int * buildarray(int size) {int* tmp(int *) mall…

蓝桥杯备赛第四篇(高级数据结构)

1.树状数组 public static int getSum(int i) {int sum 0;for (int j i; j > 1; j - lowbit(j)) {sum tree[j];}return sum;}public static void update(int i, int update) {for (int j i; j < n; j lowbit(j)) {tree[j] update;}}public static int lowbit(int n…

00x集体——cad 中DB(database)对象—— vba实现

Database 对象 外部参照块的内容。 VBA 类名 AcadDatabase 创建方法 不可使用 访问途径 Block.XRefDatabase 该对象提供对外部参照块的访问。只有IsXRef属性为TRUE的块才适用。 方法 CopyObjects 属性 Application Blocks Dictionaries DimStyles Ele…

Mybatis 主从表有名字相同,只能查询出一条数据

Mybatis 主从表有名字相同&#xff0c;只能查询出一条数据 重新命名后&#xff0c;可以正常查询

力扣SQL50 使用唯一标识码替换员工ID 查询

Problem: 1378. 使用唯一标识码替换员工ID 思路 left join&#xff1a;左连接 Code select eu.unique_id,e.name from Employees e left join EmployeeUNI eu # left join 左连接 on e.id eu.id;

勒索病毒防范建议——企业缓解措施

勒索病毒防范建议——企业缓解措施 为公司的作业系统和应用程序保持为更新版本。 应用最新的安全补丁&#xff0c;确保关键软件是最新的&#xff0c;移动设备亦一样。可以的话&#xff0c;启用自动更新选项。 定時更新将确保设备更安全&#xff0c;性能亦更好。评估是否需要安…

零基础小白到底适不适合学鸿蒙,请看完这篇再决定吧~

随着华为鸿蒙系统的问世&#xff0c;不少技术小白在是否学习鸿蒙的问题上犹豫不决。鸿蒙作为华为自主研发的操作系统&#xff0c;拥有许多独特的技术优势和市场前景。但对于小白来说&#xff0c;是否值得投入时间和精力去学习鸿蒙开发呢&#xff1f; 1.鸿蒙系统开发&#xff1…

【总结】对大量函数进行trace调用流程+国际AIS3题

现在混淆的主要目的之一就有让逆向分析人员不清楚函数的调用流程&#xff0c;给你一堆函数&#xff0c;加了高强度的OLLVM&#xff0c;更不能看了。那么Trace跟踪技术就显得很重要的&#xff0c;如果清楚了函数调用流程&#xff0c;那么逐个分析&#xff0c;距离成功不就很快了…

前段时间公司招人,面了一个要20K的,一问自动化只会点皮毛···

前段时间公司要招2个自动化测试&#xff0c;同事面了几十个候选人&#xff0c;发现了一个很奇怪的现象&#xff0c;面试的时候&#xff0c;如果问的是框架api、脚本编写这些问题&#xff0c;基本上个个都能对答如流&#xff0c;等问到实际项目的时候&#xff0c;类似“怎么从0开…

Spring - InitializingBean、@PostConstruct、@Bean(initMethod = “init“)和构造方法执行优先级比较

执行顺序优先级 构造方法 > postConstruct > afterPropertiesSet > init方法 代码案例 Component public class InitializingBeanTest implements InitializingBean {public InitializingBeanTest(){System.out.println("构造方法");}Overridepublic void…

《滴滴》24校招Java后端

1.问项目 2.Java的基本数据类型&#xff1f; 3.浮点型从二进制的视角是怎么存储的&#xff1f;&#xff08;IEEE 754&#xff09;小数位如何计算出来的&#xff1f; 4.浮点型的正4.5和负4.5转为int会怎么样&#xff1f; 5.Int型999除float的100再乘100结果&#xff1f; 6.Strin…