独家原创!重磅推出!多策略改进鹈鹕优化算法,效果极好!五大经典测试集表现均为最佳!精品力荐!MATLAB代码..._poa改进策略-程序员宅基地

技术标签: 人工智能  

鹈鹕优化算法(Pelican Optimization Algorithm,POA)是2022年由Pavel Trojovský和Mohammad Dehghani 提出的,该算法模拟了鹈鹕在狩猎过程中的自然行为。该成果于2022年发表在知名SCI期刊Sensors上。目前谷歌学术上查询被引200次。

关于鹈鹕算法的具体原理公式可以查看这篇文章:智能优化算法之鹈鹕算法(POA),原理公式详解,附matlab代码

首先声明:本期算法由作者自行改进,内容与创新点足够支撑写一篇论文!且第一发布渠道就是微信公众号,此前作者并未在其他任何平台进行发布!也就是说这就是第一手资料!需要的速速下载!获取代码的方式放在文末了。

cae8bcdf03c38660a878835d6b7b1125.png

本期推出的新算法为:融合麻雀警戒机制与柯西变异的鹈鹕优化算法(IPOA),该简写只是为了区分原始鹈鹕算法而自己临时起的,大家可以根据自己的想法修改这个简写。

IPOA是作者在仔细考虑了原始鹈鹕算法公式的基础上,持续研究了很久才成功的。

改进亮点

①在五大经典测试集进行测试

在CEC2005,CEC2017,CEC2019,CEC2021,CEC2022五大经典测试集中,融合麻雀警戒机制与柯西变异的鹈鹕优化算法(IPOA)表现均为最佳!

②程序可一键运行,自动生成统计表格。

每个算法各跑30次,在当前目录下可自动生成excel表格,除了对每个算法的平均值,最佳值,标准差,最差值,中位值进行统计外,还有另外一个表格专门统计秩和检验的结果。

③与原始鹈鹕算法复杂度保持一致

本期推出的算法不会在循环中多次调用适应度函数,没有添加所谓的贪婪策略,反向学习等增添复杂度的手段。且改进前后的鹈鹕算法复杂度保持一致!

④与多种智能算法进行对比试验

本期算法一共与其余5种效率或热度较高的智能算法进行对比试验。包括:原始鹈鹕优化算法(POA),金豺算法(GJO),猫沙群算法(SCSO),减法优化器算法(SABO),北方苍鹰算法(NGO)。选用的这几个算法,都是近期比较热门,谷歌学术引用次数较多的算法,公信力较足!

改进策略详解

接下来直接上改进策略:

改进点1:加入Tent混沌映射,增加鹈鹕的多样性

由于基本鹈鹕优化算法的初始种群是随机生成的,无法保证个体的初始位置在搜索空间中的均匀分布,影响了算法的搜索速度和优化性能。在改进鹈鹕算法的初始化过程中引入了Tent 映射,增加初始种群的遍历性。 

其中,  为第    只鹈鹕的位置;  为变量边界下限;   为变量边界上限;  为混沌序列;α是常数,一般取0.3。Tent映射图如下所示:

2d76ee428b2e3c94248374eb40c16ec1.png

8882166de80a69b3d1b02751884d9917.png

进点2:在鹈鹕算法的移向猎物阶段引入非线性权重因子

协调元启发式算法的局部寻优能力和全局搜索能力是影响算法寻优精度与寻优速度的关键因素。由于鹈鹕个体位置的更新与当前鹈鹕的位置息息相关,因此使用非线性惯性权重因子  用于调整鹈鹕位置更新与当前鹈鹕位置信息的相关度。

在算法迭代初期,ω的值较小,寻优个体位置的更新受到当前鹈鹕位置的影响较小,有利于算法在更大的范围内进行搜索,提高算法的全局开发能力;随着寻优过程的推进,ω的值逐渐增大,寻优个体位置的更新受到当前鹈鹕位置的影响变大,缩小算法的寻优范围,有助于算法搜索最优解,不但提高了算法的局部勘探能力,而且提升了算法的收敛速度。

进点3:在鹈鹕算法的掠过水面阶段引入柯西变异策略

在鹈鹕算法的掠过水面阶段,引入柯西变异策略。每次迭代都比较一下当前鹈鹕适应度值与种群平均适应度值的大小关系。当鹈鹕适应度值比种群平均适应度值高时,表示当前鹈鹕为聚集状态,此时为了增加鹈鹕多样性,采用柯西变异策略。当鹈鹕适应度值比种群平均适应度值低时,采用原始的鹈鹕位置更新方法。

改进点4:融合麻雀警戒机制

在鹈鹕算法掠过水面阶段,增加麻雀警戒机制。将鹈鹕融合麻雀的警戒机制,可以使得鹈鹕算法更快的提升收敛速度。当鹈鹕意识到危险时,群体边缘的鹈鹕会迅速向安全区域移动,以获得更好的位置,位于种群中间的鹈鹕则会随机走动,以靠近其它鹈鹕。

算法原理会在压缩包中,有专门的word文档讲清楚,有详细的原理公式!

结果展示

在CEC2005中测试:

c94f8c65dca0b81645d623674365ccad.png

de38f6daf6004745253d124eba8ac0f1.png

1c88e35a5699994272a4b9beec8b9a01.png

747ebc5900449f00ac65a262c77f84c4.png

3adc4046d83c62c0006b09ce330e6c83.png

a54019a0405024098e9c056bd8fd7876.png

这里截了一些图,可以看到在CEC2005函数的测试效果是非常不错的。了解智能算法的小伙伴一定知道,F6,F12,F13这几个函数最能考验一个算法的优劣,本文推出的新算法在这几个函数的测试均为最佳!将每个算法迭代500次,种群个数设置为30个,每个函数运行30次,求最优值,标准差,平均值,最差值,中位数共五个指标如下,秩和检验结果,箱线图等如下所示。

运行后会自动出现一个excel表格,用来统计五种指标结果:

c5b7aa07bc9b0d09bf66bbf40f58347f.png

秩和检验结果:

d80ef6be81dbd50e59eee843a2dea4ce.png

CEC2005测试集对应的箱线图:

602d2655a3d6b1091252e58116fbb205.jpeg

在CEC2017中测试:

4242140801b6af18c4d5a4e5ff49b52b.png

ef93f645e54f3d25859cf02aec946c41.png

 这里截了一些图,有维度为30和50的,可以看到在CEC2017函数的测试效果是非常不错的。

将每个算法迭代500次,种群个数设置为30个,每个函数运行30次,求最优值,标准差,平均值,最差值,中位数共五个指标如下,秩和检验结果,箱线图等如下所示。

五种指标结果:

17fb5c9f50e4ba2520edaba555093c61.png

秩和检验结果:

268b75cbe9cfacea7cff0d50d87fbe75.png

CEC2017测试集对应的箱线图:

639d1ab09d2b752e1d62ef077ff86924.png

在CEC2019中测试:

箱线图:

4fad716f017eadebb96518f011d89fe0.png

五种指标统计结果:

29d32e6dd21fb9385f1cf327108ce8fd.png

秩和检验结果:

84e586e0c39d7a3c146e0f375528ff15.png

在CEC2021中测试:

箱线图:

d53f9bb68a0b705d7153c9e4ae38a184.png

五种指标结果:

66c3e749c361e28fe0b593a9dd79a11a.png

秩和检验结果:

39e17bf4d7fde9b545be2f54630d0118.png

在CEC2022中测试:

由于篇幅原因这里就只放箱线图了,从箱线图也完全能看出来算法的效果了。

3cb3a4b56d13fe353cecc156f46fd639.png

代码展示

代码目录如下:

c63aa3b47deb487e5e0cf938f2ec968b.png

每个文件子目录如下,以为CEC2005举例展示:

071256461e9fcce913d9310bfec58ccd.png

每个文件都包含一个作图的程序(plotCEC2005_Main.m)和一个统计指标一键生成excel和箱线图的程序(runsCEC2005_Main.m)

运行runsCEC2005_Main.m后,会直接生成表格,其中result.xls即为最优值,标准差,平均值,最差值,中位数指标统计结果,ranksumresult.xls为秩和检验结果。

部分代码展示:

RESULT=[];   %统计标准差,平均值,最优值等结果
rank_sum_RESULT=[];  %统计秩和检验结果


F = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23];


if box_pp ==1
    figure('Name', '箱型图', 'Color', 'w','Position', [50 50 1400 700])
end


for func_num = 1:length(F)    %CEC2005有23个函数
    % Display the comprehensive results
    disp(['F',num2str(F(func_num)),'函数计算结果:'])
    [lower_bound,upper_bound,variables_no,fhd]
=Get_Functions_details([
'F'
,num2str(F(func_num))]);
    resu = [];  %统计标准差,平均值,最优值等结果
    rank_sum_resu = [];   %统计秩和检验结果
    box_plot = [];  %统计箱型图结果
    %% Run the IPOA algorithm for "run" times
    for nrun=1:run
        [final,position,iter]=IPOA(pop_size,max_iter,lower_bound,upper_bound,variables_no,fhd);
        final_main(nrun)=final;
        z1(nrun) =  final;
    end
    box_plot = [box_plot;final_main]; %统计箱型图结果
    zz = [min(final_main);std(final_main);mean(final_main);median(final_main);max(final_main)];
    resu = [resu,zz];
    disp(['IPOA:最优值:',num2str(zz(1)),' 标准差:',num2str(zz(2)),' 平均值:',num2str(zz(3)),' 中值:',num2str(zz(4)),' 最差值:',num2str(zz(5))]);
    %% Run the GJO algorithm for "run" times
    for nrun=1:run
        [final,position,iter]=GJO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fhd);
        final_main(nrun)=final;
        z2(nrun) =  final;
    end
    box_plot = [box_plot;final_main]; %统计箱型图结果
    zz = [min(final_main);std(final_main);mean(final_main);median(final_main);max(final_main)];
    resu = [resu,zz];
    rs = ranksum(z1,z2);
    if isnan(rs)  %当z1与z2完全一致时会出现NaN值,这种概率很小,但是要做一个防止报错
    end
    rank_sum_resu = [rank_sum_resu,rs]; %统计秩和检验结果
    disp(['GJO:最优值:',num2str(zz(1)),' 标准差:',num2str(zz(2)),' 平均值:',num2str(zz(3)),' 中值:',num2str(zz(4)),' 最差值:',num2str(zz(5))]);
点击下方卡片获取更多代码!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/woaipythonmeme/article/details/134885410

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签