当前位置: 首页 > news >正文

鲸鱼算法WOA优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码...

鲸鱼优化算法(Whale optimization algorithm, WOA)是Mirjalili根据座头鲸的捕食行为而提出来的,算法对座头鲸的狩猎行为进行模仿,通过对猎物的寻找,然后攻击进行觅食,以此来达到优化的目的,已有很多学者将算法用于实际工程问题中,今天咱们用鲸鱼优化算法优化一下VMD参数。

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

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

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

d2d2493a82c46dcd99c5a804b37d3f18.png

bd92454c8cf9205076240667a9bc8c87.png

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

b0cef0d2f61ed22e5025a2ff4d65569f.png

701cf027d27f99c825d03d31ef1b2d4b.png

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

0275405b40edfea9bcb230abf1082bf3.png

231c8781c5114634c8f319c75b5f9f43.png

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

ca44b6b15448bc4f5a274cad6e72b03c.png

6eab749b8a2a6e6bbd0fdd533e6cffc0.png

代码:

%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采用WOA算法优化VMD,求取VMD最佳的两个参数
clear
clc
close all
xz = 4;  %xz=1 or 2, 选择1,以最小包络熵为适应度函数,选择2,以最小样本熵为适应度函数,选择3,以最小信息熵为适应度函数,选择4,以最小排列熵为适应度函数
if xz == 1  fobj=@EnvelopeEntropyCost;          %最小包络熵
elseif xz == 2fobj=@SampleEntropyCost;            %最小样本熵
elseif xz == 3fobj=@infoEntropyCost;              %最小信息熵
elseif xz == 4fobj=@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

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

 

http://www.lryc.cn/news/94245.html

相关文章:

  • ELK日志收集系统集群实验
  • 用Python写了一个下载网站所有内容的软件,可见即可下
  • gin使用embed打包html
  • Android启动优化实践
  • ROS:通信机制实操
  • C/C++内存管理(内存分布、动态内存分配、动态内存分配与释放、内存泄漏等)
  • 【云原生】软件架构的演进以及各个架构的优缺点
  • 力扣刷题笔记——二叉树
  • 【华为OD机试】工号不够用了怎么办?(python, java, c++, js)
  • 【leetcode】198. 打家劫舍
  • 【react全家桶学习】react的 (新/旧) 生命周期(重点)
  • Gradio私网和公网的使用
  • ant design vue 配置菜单外部打开
  • YOLOv5/v7 添加注意力机制,30多种模块分析⑦,CCN模块,GAMAttention模块
  • IDEA下Logback.xml自动提示功能配置
  • CUDA编程模型系列八(原子操作 / 规约 / 向量元素求和)
  • go语言系列基础教程总结(4)
  • 网络基础一:网络协议初识与网络传输基本流程
  • Mysql找出执行慢的SQL【慢查询日志使用与分析】
  • 设计模式3:单例模式:JMM与volatile和synchronized的关系
  • 一个简单的OPC UA/ModbusTCP 网关(Python)
  • 线性代数行列式的几何含义
  • python用flask将视频显示在网页上
  • 【数据挖掘】时间序列教程【一】
  • 优化索引粒度参数提升ClickHouse查询性能
  • selenium\webdriver\remote\errorhandler.py:242: SessionNotCreatedException问题解决
  • MySQL 备份与恢复
  • js中改变this指向的三种方式
  • 小程序中如何进行数据传递和通信
  • Vue3项目中引入ElementUI使用详解