“十二生肖算法”+13种常用算法优化ICEEMDAN,五种适应度函数任意切换,学会这一篇,小白也会改代码!...
声明:对于作者的原创代码,禁止转售倒卖,违者必究!
“十二生肖“智能算法是作者之前自己娱乐,总结的十二种动物的智能优化算法。具体如下:
概述
十二生肖智能算法
子鼠---鼠群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列的时间序列数据,因此大家可以轻易替换数据!
这里随机挑选了几个算法进行展示,所有算法作者均已跑过,均无问题!
本文的部分代码
%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵,为目标函数(任选其一),采用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; %种群规模,这里最好设置为偶数,因为有些算法会取种群的一半
代码注释十分详细!基本上行行都有注释!
代码目录如下
点击下方卡片获取更多代码!