Python-实战:基于白鲸优化BWO算法的VMD超参数优化

news2025/1/22 21:51:24

 

目录

1、白鲸优化算法

 2、BWO优化VMD参数

3、实战

3.1 原始时间序列数据

 3.2 VMD分解--直接设置参数

 3.3 采用BWO优化VMD

4、代码


        在博客的基础上,本文利用白鲸优化算法对VMD的参数进行优化,采用python实现。

1、白鲸优化算法

        白鲸优化算法([Beluga whale optimization,BWO)是由是由 Changting Zhong 等于2022 年提出的一种群体智能优化算法。其灵感来源于白鲸的群体觅食行为,具有3个阶段,分别是:探索、开发、鲸落,如下

 2、BWO优化VMD参数

        时间序列越复杂,包络熵的计算值越大,反之亦然。因此,应用VMD对信号进行分解后,计算每个子序列的包络值,包络最小的序列为所分解序列的趋势项。

        当分解数K较小时,可能导致信号分解不足,趋势项中混入其他干扰项,导致包络熵值变大。当取适当的K值时,趋势项的包络熵变小。因此,将分解出的IMF中的最小的那个熵(局部包络熵)最小化时,VMD分解为最佳。

        那么如何去找到局部包络熵,就需要用到白鲸优化算法,当前其他的优化算法都是可以实现的。适应度函数如下:

'''适应度函数,最小化各VMD分量的局部包络熵'''
def fitness(pop,data):
    np.random.seed(0)
    
    K = int(pop[0])
    alpha = int(pop[1])
    #print(K,alpha)
    tau = 0  
    DC = 0         
    init = 1         
    tol = 1e-7
    imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)
    comp=np.vstack([imf,res.reshape(1,-1)])
    SE = 0
    se_imf=[]
    for i in range(comp.shape[0]):
        temp= BaoLuoShang(comp[i,:])
        SE +=temp
        se_imf.append(temp)
    # fit = SE
    # fit = SE/K
    fit = min(se_imf)
    
    
    np.random.seed(int(time.time()))
    return fit 

3、实战

3.1 原始时间序列数据

 3.2 VMD分解--直接设置参数

alpha = 10.0
K = 3    
tau = 0  
DC = 0         
init = 1         
tol = 1e-7
imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)

 3.3 采用BWO优化VMD

 

最优的k和alpha为5和4

t:1 ,best fit=2.7628 ,best pop= [2, 108]
t:2 ,best fit=2.7628 ,best pop= [2, 108]
t:3 ,best fit=2.7538 ,best pop= [4, 51]
t:4 ,best fit=2.7538 ,best pop= [4, 51]
t:5 ,best fit=2.7441 ,best pop= [2, 20]
t:6 ,best fit=2.7288 ,best pop= [5, 4]
t:7 ,best fit=2.7288 ,best pop= [5, 4]
t:8 ,best fit=2.7288 ,best pop= [5, 4]
t:9 ,best fit=2.7288 ,best pop= [5, 4]
t:10 ,best fit=2.7288 ,best pop= [5, 4]

4、代码

详细代码见评论区

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

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

相关文章

【Python】自动备份脚本

文章目录一、前言二、代码一、前言 之前因为疫情常常不知道会不会被封在家里,又不想把电脑带过来带过去,就做了这个自动备份的脚本。 功能如下: 自动从指定根目录里将找到的所有指定后缀名的文件备份到一个备份文件夹里;将备份…

ImageAdaptive-YOLO

又发现了一个yolo~~ 恶劣天气下的目标检测 也叫IA-YOLO 源代码:https://github.com/wenyyu/ImageAdaptive-YOLO 尽管基于深度学习的目标检测方法在传统数据集上取得了可喜的结果,但从恶劣天气条件下捕获的低质量图像中定位目标仍然具有挑战性。现有方…

三顾茅庐,七面阿里,25k*16offer,还原我的大厂面经

写在片头:声明,勿杠 首先简单说一下,这三次面试阿里并不是一次性去面的,实际上第一次面试时候还在大四,找的实习岗,不太清楚是什么部门,别问我为什么还记得面试题,有记录和复盘的习…

C++Easyx世界杯版跑酷小游戏

🐑本文作者:克隆窝🐑 🎮🔊本文代码适合编译环境:DEV-C💻 ✨🧨温馨提示:此文乃作者心血,如要转载请标注版权,否则视为抄袭!&#x1f38…

计算机毕设Python+Vue羊肉溯源系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python图形用户界面(GUI)之PyQt6入门及转换视频格式示例

上篇文章中学习的wxPython用户界面,没有拖拽组件等操作,不是很方便,下面来看个更加强大的GUI>PyQt系列,拥有拖拽组件界面,这样设计界面就显得非常简单与方便了。Qt库由 Riverbank Computing开发,是最强大…

【Linux】版本控制器Git

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉Git概述&a…

Pytorch~单卡改多卡

搬来了这个,这是尝试单卡改多卡加速的过程中出现的bug记录:一是继承DistributedSampler的漏洞百出,二是master进程无法正常结束,这里详细的阐述了出错的细节以及给出了修改的方法。 先说明一下背景,目前正在魔改以下这篇论文的代…

JavaScript 中事件循环(eventloop)、垃圾回收机制、闭包、递归函数的理解及示例

事件循环(eventloop) 概念 js 是单线程,为防止阻塞代码,把同步代码交给 js 引擎执行 异步代码交给宿主环境, 同步代码放入执行栈中 异步代码等待时机送入任务队列中, 执行栈执行完毕 会去任务队列看是否有异步任务 有就送到执行…

Postman核心功能解析-参数化和测试报告

参数化处理 参数化:针对于某一个接口,有大量的的测试数据需要批量验证,一个一个的更改请求参数太耗时耗力,使用参数化批量处理数据会比较高效,常规通过文档参数化实现。 创建文件 格式CSV 文件内第一行信息 需要和参数…

谈谈转行数据分析以及工作的心得

由于两个月前写了一篇文章叫《自己找数据分析师时犯的错误》,然后这期间就一直有人问我找到工作了吗?面试的时候,面试官都是问你的什么呢?你从事数据分析工作之后主要干什么呢?所以想在这里为大家分别解答下。 首先回…

【Linux】编译器gcc / g++的使用

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉gcc / g的…

快速玩转ChatGPT全攻略

本文内容: 准备工作。 注册接嘛平台。 注册OpenAI账号。 开始畅聊。 一.准备工作: Proxy,美国,日本,韩国,新加坡,印度,不能用香港。 Chrome浏览器。 二、注册接嘛平台&#x…

在ARM微控制器上部署MATLAB/Simulink仿真模型

在ARM微控制器上部署MATLAB/Simulink仿真模型 苏勇,suyong_yq126.com,2022年12月 文章目录在ARM微控制器上部署MATLAB/Simulink仿真模型IntroductionOverviewMATLAB、Simulink、StateFlow、Real-Time Workshop之间的关系MATLAB Coder、Simulink Coder、…

最新版Android原生集成RN

前言 现在不少应用都是采用了混合开发模式,不论是原生加RN,或是原生加Flutter,或是原生加H5。原生实现主业务线,其他部分可以借助跨平台方案开发,提高开发效率,或者实现热更新,调高业务迭代效率。 下面简单介绍一下A…

如何调整参数来更好地使用频谱分析仪

前言 使用频谱分析仪,最简单最直观的目的就是寻找并观测范围内的频谱信号,乃至将其保存下来做更进一步的数字处理或分析。因此在除了最基本的中心频率与扫宽设置外,合理使用VBW,RBW等参数设置才能获取更为真实准确的信号。 图一 合理调整参数…

Diffusion Model合集 part3

扩散模型原理介绍3八,Diffusion Probabilistic Model的算法代码而我们可以有多种建模目标:Lt−1Eq[12σt2∣∣μt∼(xt,x0)−μθ(xt,t)∣∣2]CL_{t-1}\mathbb{E}_{q}\left[\frac{1}{2\sigma_{t}^{2}}||\overset{\sim}{\mu_{t}}(\mathbf{x}_{t},\mathbf{…

系统调用(Linux)

目录 1.内核态和用户态: 1.1CPU的两种状态: 1.2CPU 指令集权限: 1.3用户态与内核态的空间: 1.4用户态与内核态的切换: 2.系统调用: 2.1linux框架图: 2.2系统调用和API: 2.3系…

The release Method

The release Method The role of the release method is the reverse of open. Sometimes youll find that the method implementation is called device_close instead of device_release. Either way, the device method should perform the following tasks: 释放方法的作用…

跟我学 UML 系统建模

UML 系统建模 1 概述 1.1 课程概述 汇集 UML 及其相关的一些话题回顾 UML 相关的符号与概念以电商订单相关业务为例,借助 UML 完成系统建模将 UML 变成提升建模效率,表达架构思想的工具 1.2 什么是 UML ​ Unified Modeling Language 统一建模语言&a…