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

news2024/10/6 6:40:11

鲸鱼优化算法(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 == 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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C/C++实现进程间通信 二】消息队列

文章目录 前情回顾思路源码Publisher.cppSubscriber.cpp 效果 前情回顾 上一期已经讲解过了进程的相关概念以及进程间通信的实现原理,下面仅展示消息传递机制实现1进程间通信的相关代码。 思路 /*本项目主要用于以消息传递机制的方式进行进程间通信的测试。1.主要…

很荣幸与屈晗煜在 GitLink 编程夏令营(GLCC)活动中协作

作为一名软件工程师,天然有着追求代码质量的执念。相信很多人对代码的优雅、质量有着自己的认识,业界也有不少的共识,其中有一条我认为是非常重要的——代码可测试。 作为一名研发,只关注功能可测(容易测)是…

BUUCTF old-fashion 1

题目描述: 密文: Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmy…

多元回归预测 | Matlab基于鲸鱼算法(WOA)优化混合核极限学习机HKELM回归预测, WOA-HKELM数据回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于鲸鱼算法(WOA)优化混合核极限学习机HKELM回归预测, WOA-HKELM数据回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 …

【软考程序员学习笔记】——数据结构与算法基础

目录 🍊一、数据结构概念和分类 🍊二、数组特点&存储方式 🍊三、矩阵 特殊矩阵 非特殊矩阵 🍊四、栈和队列 🍊 五、二叉树的性质 🍊六、二叉树的遍历 (1)前序遍历(先根遍历,先序遍历…

《MySQL》什么是数据库

文章目录 数据库的理解MySQL的架构SQL语句分类存储引擎 数据库的理解 我们所下的数据库软件(如MySQL)其实是中间件。如何理解呢,如图: 我们用户通过MySQL对数据进行管理。 mysql #客户端程序 mysqld #服务端程序,再修改配置后需要重新启动…

【MySQL】在Linux终端上使用MySQL的简单介绍

本文仅供学习参考! MySQL是一个开源的跨平台关系数据库管理系统(RDBMS)。MySQL使用标准查询语言(SQL)与MySQL软件进行通信。 数据库管理员和开发人员通过运行语句与 RDBMS 交互,这些语句在数据库管理中称为…

前端Vue自定义登录界面切换tabs 账号登录验证码登录模版 支持手机号校验邮箱校验验证码发送

前端Vue自定义登录界面切换tabs 账号登录验证码登录模版 支持手机号校验邮箱校验、验证码发送, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13298 效果图如下: # cc-loginTabs #### 使用方法 使用方法 …

Spring Boot中@RabbitHandler注解的介绍、原理和使用

Spring Boot中RabbitHandler注解的介绍、原理和使用 引言 在RabbitMQ中,消息的消费者需要根据不同的消息类型进行不同的处理。在Spring Boot中,我们可以通过RabbitHandler注解来实现这一功能。本文将介绍Spring Boot中RabbitHandler注解的介绍、原理和…

【聚类算法】DBSCAN基于密度聚类

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 瞬间感觉kmeans不香了,哈哈哈 说明: 该算法不仅能聚类,还能剔除离群点,聚类以后标签为-1的即噪声点&…

滑动折叠效果简单实现

绿色为标题&#xff0c;滑动时始终不会被折叠、不会滑动。红色和黑色会在滑动的时候折叠&#xff0c;先折叠红色&#xff0c;在折叠黑色。 activity_shop_search.xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <layout xmlns:androi…

css实现元素纵向排列自动换列

块级元素在容器类纵向排列&#xff0c;当达到最大高度后自动换到下一列 <div id"main-div"><div class"item">1 一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容一条内容…

王道考研计算机网络第四·章知识点汇总

4.1.1网络层功能概述 4.1.2 SDN基本概念 4.2.1 路由算法和路由协议概述 4.3.1 IP数据报格式 4.3.2 IP数据报分片 4.3.3 IPv4地址 4.3.4 网络地址转换NAT 4.3.5 子网划分和子网掩码 不同子网掩码得到的网络地址可能相同 网络号为B类地址&#xff0c;16位网络号&#xff1b;6位子…

从四个角度全面认识 ChatGPT

传统语言模型是什么样的&#xff1f;ChatGPT 涌现出了哪些新能力&#xff1f;这些能力都是怎么做到的&#xff1f;在 ChatGPT 大模型时代&#xff0c;我们应该怎么做&#xff1f; 当下最引人注目的语言模型 ChatGPT 如火如荼&#xff0c;主要还是因为其能力远远超越了传统模型。…

js中堆的操作和案例!

堆 什么是堆&#xff1f; 堆是一种特殊的完全二叉树。完全二叉树的含义就是每层节点都完全填满&#xff0c;除了最后一层外只允许最右边缺少若干个节点。在 JavaScript 中通常用数组表示堆&#xff08;按照广度优先遍历顺序&#xff09;。 最大堆 最小堆 特性 所有的节…

Python入门教程+项目实战-14.4节-lambda表达式

目录 14.4.1 理解匿名函数 14.4.2 lambda表达式 14.4.3 lambda表达式与具名函数 14.4.4 知识要点 14.4.5 系统学习python 14.4.1 理解匿名函数 匿名函数&#xff0c;从其字面意思来进行理解。所谓的匿名即不具名&#xff0c;没有名称。匿名函数&#xff0c;也就是没有函…

chatgpt赋能python:Python编程语言-让生活更有趣

Python编程语言-让生活更有趣 作为一名10年的Python工程师&#xff0c;我可以毫不犹豫地说&#xff0c;Python是一种编辑器最有趣的编程语言之一。作为Python的忠实拥护者和使用者&#xff0c;我深信Python可以让生活变得更轻松&#xff0c;更有趣。 Python简介 Python是一种…

std::function的讲解与实战

一、C语言中的函数指针 先看一个函数指针的例子 test_fun.cpp&#xff1a; #include<iostream>//定义函数指针 typedef int (*func)();using namespace std;int test1(){cout<<"hello, test1"<<endl;return 0; }int test2(){cout<<"h…

第三十五章Java面向对象概念及封装、继承、多态三种特性详解

面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统开发方式模型的研究。…

ch10_2控制单元的_微程序设计

1. 微程序设计 1.1 微程序设计思想 使用微程序的设计方式&#xff0c;实现计算机系统的控制器&#xff1b; 微程序的设计&#xff0c;是方便指令集的修改和扩展&#xff1b; 每个节拍发出的控制命令&#xff0c; 实际上就是一个电信号&#xff0c;或者是几个电信号&#xf…