黏菌优化算法SMA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码

近期评论区有小伙伴私信需要黏菌算法SMA法化VMD的,所以打算再写一篇。

同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据前1024个数据点。没有数据的看我这篇文章。 西储大学轴承数据处理--附MATLAB代码_今天吃饺子的博客-CSDN博客

首先进行VMD分解,采用黏菌算法(SMA)对VMD的两个关键参数(惩罚因子α和模态分解数K)进行优化,以最小包络熵为适应度值。

不得不说一嘴哈,作者做了这么多智能算法优化VMD的,黏菌算法的速度是真的快,这其实也与黏菌算法的原理有关系哈,在程序中不像麻雀算法那样多次调用适应度函数,因此黏菌算法的速度是真的快,类似于粒子群和灰狼算法,在每次循环中只调用了一次目标函数。

老规矩,先上结果图:

 

 部分代码:

%%
%% 以最小包络熵为目标函数,采用SMA算法优化VMD,求取VMD最佳的两个参数
clear all
clc
addpath(genpath(pwd))
load 105.mat
D=2;             % 优化变量数目
lb = [100 3];
ub = [2500 10];
dim = 2;
Max_iter=60;       % 最大迭代数目
N=15;       % 种群规模
fobj=@Cost;
da = X105_DE_time(1:1024); %这里选取105的DEtime数据

[Destination_fitness,bestPositions,Convergence_curve]=SMA(N,Max_iter,lb,ub,dim,fobj,da);

%画适应度函数图
figure
plot(Convergence_curve,'Color',[0.7 0.1 0.7],'Marker','>','LineStyle','--','linewidth',1);

title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('SMA优化VMD')
display(['The best solution obtained by SMA is : ', num2str(round(bestPositions))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by SMA is : ', num2str(Destination_fitness)]);  %输出最佳适应度值

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

觉着不错的给博主留个小赞吧!您的一个小赞就是博主更新的动力!谢谢!

猜你喜欢

转载自blog.csdn.net/woaipythonmeme/article/details/131311496