“十二生肖算法”+13种常用算法优化ICEEMDAN,五种适应度函数任意切换,学会这一篇,小白也会改代码!...

03-01 1043阅读

声明:对于作者的原创代码,禁止转售倒卖,违者必究!


“十二生肖“智能算法是作者之前自己娱乐,总结的十二种动物的智能优化算法。具体如下:

概述

十二生肖智能算法

子鼠---鼠群RSO(Rat Swarm Optimizer)--2020年

丑牛---天牛须搜索BAS(Beetle Antenna Searching)--2017年

寅虎---蜂虎狩猎BEH(Bee-Eater-Hunting)--2022年

卯兔---人工兔ARO(Artificial Rabbits Optimization)--2022年

辰龙---变色龙CSA(Chameleon Swarm Algorithm)--2021年

巳蛇---蛇SO(Snake Optimizer)--2022年

午马---野马WHO((Wild Horse Optimizer)--2021年

未羊---羚羊优化算法GOA(Gazelle Optimization Algorithm)--2022年

申猴---卷尾猴搜索CapSA(capuchin search algorithm)--2020年

酉鸡---白骨顶鸡COOT(Coot optimization algorithm)--2021年

戌狗---澳洲野狗优化算法DOA(Dingo Optimization Algorithm)--2021年

亥猪---跳蛛优化算法JSOA(Jumping Spider Optimization Algorithm)--2021年

本期作者就采用这“十二生肖”算法对ICEEMDAN分解方法的两个参数进行优化!

当然算法代码包含了不止这十二种算法,还包含了常用的和比较火热的其他13种算法:

包括:  浣熊优化算法(COA)、蜣螂优化算法(DBO)、 金豺优化算法(GJO)、 灰狼优化算法(GWO)、 鱼鹰优化算法(OOA)、 粒子群算法(PSO)、 减法优化器算法(SABO)、 沙猫群优化算法(SCSO)、 麻雀优化算法(SSA)、 白鲸优化算法(BWO)、 霜冰优化算法(RIME)、 鲸鱼优化算法(WOA)、 哈里斯鹰优化算法(HHO)。

一共是25种算法!算法之间切换十分简单,作者已经写好了一个变量number,只要修改这个数字,即可实现算法的简单切换!仿照此写法,大家也可以简单的替换自己想要的算法!其实作者公众号上讲过的算法,基本上都可以替换进去!大家可以自行尝试。

算法一键切换代码如下:

修改这里的number数字,即可调用str字符串中不同的算法。程序的其他地方除了替换下数据之外,都不用动!

number = 1;   %修改数字,分别对应下面的算法,实现一键切换算法。1是RSO,2是BSA,3是BEH,以此类推
str={'RSO','BAS','BEH','ARO','CSA','SO','WHO','GOA','CapSA','COOT','DOA','JSOA','COA','DBO','GJO','GWO','OOA','PSO','SABO','SCSO','SSA','BWO','RIME','WOA','HHO'};
% 鼠群优化算法RSO
% 天牛须搜索BAS
% -蜂虎狩猎算法(BEH)
% -人工兔优化(ARO)算法
% -变色龙(CSA)
% -蛇优化算法(SO)
% 野马算法(WHO)
% 羚羊优化算法(GOA)
% 卷尾猴搜索算法(CAPSA)
% -白骨顶鸡优化算法(COOT)
% 澳洲州野狗优化算法(DOA)
% 浣熊优化算法(COA)
% 蜣螂优化算法(DBO)
% 金豺优化算法(GJO)
% 灰狼优化算法(GWO)
% 鱼鹰优化算法(OOA)
% 粒子群算法(PSO)
% 减法优化器算法(SABO)
% 沙猫群优化算法(SCSO)
% 麻雀优化算法(SSA)
% 白鲸优化算法(BWO)
% 霜冰优化算法(RIME)
% 鲸鱼优化算法(WOA)
% 哈里斯鹰优化算法(HHO)

代码还可以一键切换适应度函数,代码如下。改变这里的xz,即可随意切换适应度函数!

xz = 1;
% 选择1,以最小包络熵为适应度函数,
% 选择2,以最小样本熵为适应度函数,
% 选择3,以最小信息熵为适应度函数,
% 选择4,以最小排列熵为适应度函数,
% 选择5,以复合指标:排列熵/互信息熵为适应度函数。参考文献:参数优化变分模态分解的GNSS坐标时间序列降噪方法_鲁铁定
if xz == 1
    fobj=@(x)EnvelopeEntropyCost(x,da);          %最小包络熵
elseif xz == 2
    fobj=@(x)SampleEntropyCost(x,da);            %最小样本熵
elseif xz == 3
    fobj=@(x)infoEntropyCost(x,da);             %最小信息熵
elseif xz == 4
    fobj=@(x)PermutationEntropyCost(x,da);      %最小排列熵
elseif xz == 5
    fobj=@(x)compositeEntropyCost(x,da);     %以复合指标:排列熵/互信息熵为适应度函数。
end

关于本期提到的五种适应度函数的介绍,可以参考以下链接:

VMD为什么需要进行参数优化,最小包络熵/样本熵/排列熵/信息熵,适应度函数到底该选哪个

运行速度终于变快了!优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵

以上两篇文章虽然是讲VMD分解的,但是这个适应度函数对于ICEEMDAN分解同样适用!

结果展示

由于算法众多,本篇就以最小包络熵作为适应度函数为例进行展示:

数据选取西储大学轴承数据的105.mat,此数据就是一个60多万行1列的时间序列数据,因此大家可以轻易替换数据!

这里随机挑选了几个算法进行展示,所有算法作者均已跑过,均无问题!

“十二生肖算法”+13种常用算法优化ICEEMDAN,五种适应度函数任意切换,学会这一篇,小白也会改代码!...

本文的部分代码

%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵,为目标函数(任选其一),采用GWO算法优化ICEEMDAN,求取ICEEMDAN最佳的两个参数
clear
clc
close all
addpath(genpath(pwd))
%% 选取数据
load 105.mat
da = X105_DE_time(6501:6800); %这里选取105的DEtime数据,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。
xz = 1;
% 选择1,以最小包络熵为适应度函数,
% 选择2,以最小样本熵为适应度函数,
% 选择3,以最小信息熵为适应度函数,
% 选择4,以最小排列熵为适应度函数,
% 选择5,以复合指标:排列熵/互信息熵为适应度函数。参考文献:参数优化变分模态分解的GNSS坐标时间序列降噪方法_鲁铁定
if xz == 1
    fobj=@(x)EnvelopeEntropyCost(x,da);          %最小包络熵
elseif xz == 2
    fobj=@(x)SampleEntropyCost(x,da);            %最小样本熵
elseif xz == 3
    fobj=@(x)infoEntropyCost(x,da);             %最小信息熵
elseif xz == 4
    fobj=@(x)PermutationEntropyCost(x,da);      %最小排列熵
elseif xz == 5
    fobj=@(x)compositeEntropyCost(x,da);     %以复合指标:排列熵/互信息熵为适应度函数。
end

%% 设置参数
lb = [0.15 50];    %噪声幅值权重的优化范围设置为[0.15,0.6],噪声添加次数的优化范围为[50,600]
ub = [0.6 600];
dim = 2;            % 优化变量数目
Max_iter=15;       % 最大迭代数目
SearchAgents_no=20;       %种群规模,这里最好设置为偶数,因为有些算法会取种群的一半

代码注释十分详细!基本上行行都有注释!

代码目录如下

“十二生肖算法”+13种常用算法优化ICEEMDAN,五种适应度函数任意切换,学会这一篇,小白也会改代码!...

点击下方卡片获取更多代码!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]