融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵...

今天给大家带来一期由融合正余弦和柯西变异的麻雀搜索算法优化VMD参数。

同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据中1000个数据点。没有数据的看这篇文章。西储大学轴承诊断数据处理,matlab免费代码获取

选取五种适应度函数进行优化,以此确定VMD的最佳k和α参数。四种适应度函数分别是:最小包络熵,最小样本熵,最小信息熵,最小排列熵,排列熵/互信息熵,代码中可以一键切换。至于应该选择哪种作为自己的适应度函数,大家可以看这篇文章。VMD为什么需要进行参数优化,最小包络熵/样本熵/排列熵/信息熵,适应度函数到底该选哪个

1.最小包络熵作为适应度函数

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第1张图片

9d5f453c9297a02255b59c82d73f31be.png

2.最小样本熵作为适应度函数

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第2张图片

e379468a1aa7b94bf54e2e6e1c7d042b.png

3.最小信息熵作为适应度函数

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第3张图片

750c2a73a20ac64448d9432d2ac3040c.png

4.最小排列熵作为适应度函数

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第4张图片

f70f79d9eaa9a9de3dc774429fd35e8e.png

5.复合指标作为适应度函数

有关复合指标的介绍如下:

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第5张图片

结果图:

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第6张图片

d81e8cd2646999099612858fa15201b9.png

代码:

%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵,排列熵/互信息熵,为目标函数(任选其一),采用SCSSA算法优化VMD,求取VMD最佳的两个参数
clear
clc
close all
xz = 2;  %xz, 选择1,以最小包络熵为适应度函数,
% 选择2,以最小样本熵为适应度函数,
% 选择3,以最小信息熵为适应度函数,
% 选择4,以最小排列熵为适应度函数,
% 选择5,以复合指标:排列熵/互信息熵为适应度函数。
if xz == 1  
    fobj=@EnvelopeEntropyCost;          %最小包络熵
elseif xz == 2
    fobj=@SampleEntropyCost;            %最小样本熵
elseif xz == 3
    fobj=@infoEntropyCost;              %最小信息熵
elseif xz == 4
    fobj=@PermutationEntropyCost;       %最小排列熵
elseif xz == 5
    fobj=@compositeEntropyCost;       %复合指标:排列熵/互信息熵
end
%% 选取数据
load 105.mat
da = X105_DE_time(6001:7000); %这里选取105的DEtime数据,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。


%% 设置参数
lb = [100 3];    %惩罚因子和K的下限
ub = [2500 10];  %惩罚因子和K的上限
dim = 2;            % 优化变量数目
Max_iter=20;       % 最大迭代数目
SearchAgents_no=20;       %种群规模


%% 调用SCSSA函数
[fMin , bestX, Convergence_curve ] = SCSSA(SearchAgents_no,Max_iter,lb,ub,dim,fobj,da);


%% 画适应度函数曲线图,并输出最佳参数
figure
plot(Convergence_curve,'Color',[0.9 0.5 0.1],'Marker','>','LineStyle','--','linewidth',1);
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('SCSSA优化VMD')
display(['The best solution obtained by SCSSA is : ', num2str(round(bestX))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by SCSSA is : ', num2str(fMin)]);  %输出最佳适应度值

大家注意看到xz这个变量,当选择1,以最小包络熵为适应度函数,选择2,以最小样本熵为适应度函数,选择3,以最小信息熵为适应度函数,选择4,以最小排列熵为适应度函数,选择5,以复合指标:排列熵/互信息熵为适应度函数。这样大家切换起来就很方便了。

代码包含融合正余弦和柯西变异的麻雀算法在CEC2005函数中的测试和SCSSA优化VMD。

融合正余弦和柯西变异的麻雀搜索算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵..._第7张图片

   完整代码获取,点击下方卡片,回复关键词:

SCSSAVMD

你可能感兴趣的:(VMD分解,算法)