赞
踩
鲸鱼优化算法(Whale optimization algorithm, WOA)是Mirjalili根据座头鲸的捕食行为而提出来的,算法对座头鲸的狩猎行为进行模仿,通过对猎物的寻找,然后攻击进行觅食,以此来达到优化的目的,已有很多学者将算法用于实际工程问题中,今天咱们用鲸鱼优化算法优化一下VMD参数。
同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据中1000个数据点。没有数据的看我这篇文章。西储大学轴承诊断数据处理,matlab免费代码获取
选取四种适应度函数进行优化,以此确定VMD的最佳k和α参数。四种适应度函数分别是:最小包络熵,最小样本熵,最小信息熵,最小排列熵。至于应该选择哪种作为自己的适应度函数,大家可以看这篇文章。VMD为什么需要进行参数优化,最小包络熵/样本熵/排列熵/信息熵,适应度函数到底该选哪个
1.最小包络熵作为适应度函数
2.最小样本熵作为适应度函数
3.最小信息熵作为适应度函数
4.最小排列熵作为适应度函数
代码:
- %% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采用WOA算法优化VMD,求取VMD最佳的两个参数
- clear
- clc
- close all
- xz = 4; %xz=1 or 2, 选择1,以最小包络熵为适应度函数,选择2,以最小样本熵为适应度函数,选择3,以最小信息熵为适应度函数,选择4,以最小排列熵为适应度函数
- if xz == 1
- fobj=@EnvelopeEntropyCost; %最小包络熵
- elseif xz == 2
- fobj=@SampleEntropyCost; %最小样本熵
- elseif xz == 3
- fobj=@infoEntropyCost; %最小信息熵
- elseif xz == 4
- fobj=@PermutationEntropyCost; %最小排列熵
- 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=25; %种群规模
-
-
- %% 调用WOA函数
- [fMin , bestX, Convergence_curve ] = WOA(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('WOA优化VMD')
- display(['The best solution obtained by WOA is : ', num2str(round(bestX))]); %输出最佳位置
- display(['The best optimal value of the objective funciton found by WOA is : ', num2str(fMin)]); %输出最佳适应度值
大家注意看到xz这个变量,当选择1,以最小包络熵为适应度函数,选择2,以最小样本熵为适应度函数,选择3,以最小信息熵为适应度函数,选择4,以最小排列熵为适应度函数。这样大家切换起来就很方便了。
完整代码获取,点击下方卡片回复关键词:WOAVMD
觉着不错的给博主留个小赞吧!您的一个小赞就是博主更新的动力,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。