基于鲸鱼优化算法 VMD(变分模态分解)参数 `K` 和 `α` 的 Python 实现

发布时间:2026/7/30 21:21:16

基于鲸鱼优化算法 VMD(变分模态分解)参数 `K` 和 `α` 的 Python 实现
基于鲸鱼优化算法 (Whale Optimization Algorithm, WOA)优化 VMD变分模态分解参数K和α的 Python 实现。文章目录**1. 安装依赖****2. 鲸鱼优化算法 (WOA) 核心code****3. VMD 模态分解与目标函数****4. 主程序结合 WOA 和 VMD****5. 结果说明****6. 注意**1. 安装依赖2. 主要文件结构3. 各个文件的内容WOA.py - 鲸鱼优化算法实现VMD.py - VMD 模态分解fitness_function.py - 目标函数main.py - 主程序4. 运行项目WOA 是一种元启发式优化算法可用于寻找最优的 VMD 参数组合。1. 安装依赖确保安装了必要的库pipinstallnumpy scipy matplotlib scikit-learn2. 鲸鱼优化算法 (WOA) 核心codeWOA 的核心实现代码importnumpyasnpfromscipy.optimizeimportminimize# WOA 算法实现defwhale_optimization_algorithm(objective_func,lb,ub,dim,search_agents30,max_iter100):# 初始化种群Xnp.random.uniform(lb,ub,(search_agents,dim))best_positionnp.zeros(dim)best_scorefloat(inf)fortinrange(max_iter):a2-t*(2/max_iter)# 线性递减参数 aforiinrange(search_agents):# 计算适应度fitnessobjective_func(X[i])iffitnessbest_score:best_scorefitness best_positionX[i]# 更新位置r1np.random.rand()r2np.random.rand()A2*a*r1-a C2*r2 b1# 螺旋形状参数lnp.random.uniform(-1,1)pnp.random.rand()ifp0.5:ifabs(A)1:Dabs(C*best_position-X[i])X[i]best_position-A*Delse:rand_leader_indexnp.random.randint(0,search_agents)X_randX[rand_leader_index]D_X_randabs(C*X_rand-X[i])X[i]X_rand-A*D_X_randelse:D_bestabs(best_position-X[i])X[i]D_best*np.exp(b*l)*np.cos(2*np.pi*l)best_position# 边界处理X[i]np.clip(X[i],lb,ub)returnbest_position,best_score3. VMD 模态分解与目标函数VMD 的目标是通过优化参数K和α来最小化重构误差或其他指标。我们使用scipy中的minimize函数来辅助优化并定义目标函数。fromvmdpyimportVMD# 需要安装 vmdpy 库pip install vmdpy# 目标函数基于 VMD 的重构误差defobjective_function(params,signal):K,alphaparams Kint(K)# 模态数量必须为整数alphamax(0,alpha)# 确保 α 为正数# 执行 VMD 分解try:u,u_hat,omegaVMD(signal,alphaalpha,tau0,KK,DC0,init1,tol1e-7)reconstructed_signalnp.sum(u,axis0)# 重构信号errornp.mean((signal-reconstructed_signal)**2)# 均方误差exceptException:errorfloat(inf)# 如果参数无效返回极大值returnerror4. 主程序结合 WOA 和 VMDxiamianzhege市 主程序结合 WOA 和 VMD 进行参数优化importnumpyasnpimportmatplotlib.pyplotasplt# 示例信号defgenerate_signal():tnp.linspace(0,1,500)signalnp.sin(2*np.pi*50*t)0.5*np.sin(2*np.pi*120*t)# 合成信号returnt,signalif__name____main__:# 生成信号t,signalgenerate_signal()# 定义搜索空间lb[2,0.1]# K 和 α 的下界ub[10,5000]# K 和 α 的上界dim2# 参数维度 (K 和 α)# 使用 WOA 优化 VMD 参数defwrapper(params):returnobjective_function(params,signal)best_params,best_scorewhale_optimization_algorithm(objective_funcwrapper,lblb,ubub,dimdim,search_agents20,max_iter50)# 输出优化结果K_optimal,alpha_optimalint(best_params[0]),best_params[1]print(fOptimal K:{K_optimal}, Optimal Alpha:{alpha_optimal:.2f})print(fBest Objective Score:{best_score:.4f})# 使用最优参数进行 VMD 分解u,u_hat,omegaVMD(signal,alphaalpha_optimal,tau0,KK_optimal,DC0,init1,tol1e-7)# 可视化结果plt.figure(figsize(10,6))plt.subplot(2,1,1)plt.plot(t,signal,labelOriginal Signal)plt.title(Original Signal)plt.legend()plt.subplot(2,1,2)foriinrange(K_optimal):plt.plot(t,u[i],labelfIMF{i1})plt.title(VMD Decomposition)plt.legend()plt.show()5. 结果说明优化过程WOA 会根据目标函数如均方误差调整K和α的值。最终输出优化后的K和α参数。VMD 分解使用优化后的参数对信号进行 VMD 分解得到多个固有模态函数IMFs。可视化原始信号和分解后的 IMFs。6. 注意参数范围K的取值范围通常在[2, 10]之间。α的取值范围可以根据信号特性调整。目标函数可根据具体需求修改目标函数例如使用其他性能指标如能量熵、频谱误差等。计算效率VMD 的计算复杂度较高建议在小规模数据集上测试。以上代码仅供参考。使用鲸鱼优化算法WOA来优化VMD参数的Python项目。图表展示了迭代次数与目标函数值的关系。完整的代码示例包括如何运行这个项目以及如何生成类似的图表。仅供参考。1. 安装依赖确保安装了必要的库pipinstallnumpy scipy matplotlib vmdpy2. 主要文件结构假设你的项目文件结构如下- WOA.py - VMD.py - fitness_function.py - main.py3. 各个文件的内容WOA.py- 鲸鱼优化算法实现importnumpyasnpdefwhale_optimization_algorithm(objective_func,lb,ub,dim,search_agents30,max_iter100):# 初始化种群Xnp.random.uniform(lb,ub,(search_agents,dim))best_positionnp.zeros(dim)best_scorefloat(inf)scores[]fortinrange(max_iter):a2-t*(2/max_iter)# 线性递减参数 aforiinrange(search_agents):# 计算适应度fitnessobjective_func(X[i])iffitnessbest_score:best_scorefitness best_positionX[i]# 更新位置r1np.random.rand()r2np.random.rand()A2*a*r1-a C2*r2 b1# 螺旋形状参数lnp.random.uniform(-1,1)pnp.random.rand()ifp0.5:ifabs(A)1:Dabs(C*best_position-X[i])X[i]best_position-A*Delse:rand_leader_indexnp.random.randint(0,search_agents)X_randX[rand_leader_index]D_X_randabs(C*X_rand-X[i])X[i]X_rand-A*D_X_randelse:D_bestabs(best_position-X[i])X[i]D_best*np.exp(b*l)*np.cos(2*np.pi*l)best_position# 边界处理X[i]np.clip(X[i],lb,ub)scores.append(best_score)returnbest_position,best_score,scoresVMD.py- VMD 模态分解fromvmdpyimportVMDdefvmd_decomposition(signal,K,alpha):u,u_hat,omegaVMD(signal,alphaalpha,tau0,KK,DC0,init1,tol1e-7)returnu,u_hat,omegafitness_function.py- 目标函数importnumpyasnpdefobjective_function(params,signal):K,alphaparams Kint(K)# 模态数量必须为整数alphamax(0,alpha)# 确保 α 为正数try:u,u_hat,omegavmd_decomposition(signal,K,alpha)reconstructed_signalnp.sum(u,axis0)# 重构信号errornp.mean((signal-reconstructed_signal)**2)# 均方误差exceptException:errorfloat(inf)# 如果参数无效返回极大值returnerrormain.py- 主程序importnumpyasnpimportmatplotlib.pyplotaspltfromWOAimportwhale_optimization_algorithmfromfitness_functionimportobjective_functionfromVMDimportvmd_decomposition# 示例信号defgenerate_signal():tnp.linspace(0,1,500)signalnp.sin(2*np.pi*50*t)0.5*np.sin(2*np.pi*120*t)# 合成信号returnt,signalif__name____main__:# 生成信号t,signalgenerate_signal()# 定义搜索空间lb[2,0.1]# K 和 α 的下界ub[10,5000]# K 和 α 的上界dim2# 参数维度 (K 和 α)# 使用 WOA 优化 VMD 参数defwrapper(params):returnobjective_function(params,signal)best_params,best_score,scoreswhale_optimization_algorithm(objective_funcwrapper,lblb,ubub,dimdim,search_agents20,max_iter50)# 输出优化结果K_optimal,alpha_optimalint(best_params[0]),best_params[1]print(fOptimal K:{K_optimal}, Optimal Alpha:{alpha_optimal:.2f})print(fBest Objective Score:{best_score:.4f})# 使用最优参数进行 VMD 分解u,u_hat,omegavmd_decomposition(signal,K_optimal,alpha_optimal)# 可视化结果plt.figure(figsize(10,6))plt.subplot(2,1,1)plt.plot(t,signal,labelOriginal Signal)plt.title(Original Signal)plt.legend()plt.subplot(2,1,2)foriinrange(K_optimal):plt.plot(t,u[i],labelfIMF{i1})plt.title(VMD Decomposition)plt.legend()plt.show()# 绘制迭代过程中的目标函数值plt.figure(figsize(8,6))plt.plot(scores,labelObjective Function Value)plt.xlabel(Iteration)plt.ylabel(Objective Function Value)plt.title(Convergence Curve)plt.legend()plt.show()4. 运行项目确保所有文件都在同一目录下并且已经安装了所需的库。然后在命令行中运行python main.py这将执行鲸鱼优化算法来优化VMD参数并绘制原始信号和分解后的IMFs以及收敛曲线。

相关新闻

ERP服务商的“订阅排名“,到底在排什么?

ERP服务商的“订阅排名“,到底在排什么?

2026/7/30 21:21:16

2026年7月24日,金蝶中国深圳区生态伙伴中期冲刺会在江西井冈山召开。在公布的2026年上半年业绩排名中,有一项数据特别值得注意——大中订阅业绩全国TOP1。注意,不是"销售业绩TOP1",是"订阅业绩TOP1"。这两个词…

如何快速掌握开源像素动画神器:LibreSprite完整入门指南

如何快速掌握开源像素动画神器:LibreSprite完整入门指南

2026/7/30 21:21:16

如何快速掌握开源像素动画神器:LibreSprite完整入门指南 【免费下载链接】LibreSprite Animated sprite editor & pixel art tool -- Fork of the last GPLv2 commit of Aseprite 项目地址: https://gitcode.com/gh_mirrors/li/LibreSprite 你是否梦想创…

深入解析Jetpack Compose底层原理与性能优化

深入解析Jetpack Compose底层原理与性能优化

2026/7/30 21:21:16

1. 为什么需要理解Compose的底层原理?Jetpack Compose作为Android现代UI开发工具包,其声明式编程模型彻底改变了我们构建用户界面的方式。但很多开发者在使用过程中会遇到这样的困惑:为什么我的重组(Recomposition)次数…

Android离线中文TTS引擎:Chinese TTS TF Lite全面解析

Android离线中文TTS引擎:Chinese TTS TF Lite全面解析

2026/7/30 22:21:18

Android离线中文TTS引擎:Chinese TTS TF Lite全面解析 【免费下载链接】ChineseTtsTflite Android Chinese TTS Engine Base On Tensorflow TTS , use for TfLite Models Test。安卓离线中文TTS引擎,在TensorflowTTS基础上开发,用于TfLite模型…

【单片机毕业设计推荐】基于 51/STM32 单片机的环境多参数智能监测调控系统设计 基于 51/STM32 单片机的温室环境智能监测与自动调控装置设计(017904)

【单片机毕业设计推荐】基于 51/STM32 单片机的环境多参数智能监测调控系统设计 基于 51/STM32 单片机的温室环境智能监测与自动调控装置设计(017904)

2026/7/30 22:21:18

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能基础功能核心功能辅助功能技术路线项目演示关于我们项目案例源码获取温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶…

KMS_VL_ALL_AIO:Windows和Office智能激活的终极指南

KMS_VL_ALL_AIO:Windows和Office智能激活的终极指南

2026/7/30 22:21:18

KMS_VL_ALL_AIO:Windows和Office智能激活的终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活烦恼吗?Office功能受限让你工作效率大打折扣&a…

Bedrock Launcher:为Windows玩家打造的Minecraft基岩版专业管理工具

Bedrock Launcher:为Windows玩家打造的Minecraft基岩版专业管理工具

2026/7/30 22:21:18

Bedrock Launcher:为Windows玩家打造的Minecraft基岩版专业管理工具 【免费下载链接】BedrockLauncher 项目地址: https://gitcode.com/gh_mirrors/be/BedrockLauncher 在Windows平台上管理Minecraft基岩版游戏体验,你是否曾感到官方启动器的功能…

如何突破显卡限制:3步配置游戏性能优化神器OptiScaler

如何突破显卡限制:3步配置游戏性能优化神器OptiScaler

2026/7/30 22:21:18

如何突破显卡限制:3步配置游戏性能优化神器OptiScaler 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nukem mo…

企业级即时通讯消息防撤回解决方案深度解析与内存补丁技术实现

企业级即时通讯消息防撤回解决方案深度解析与内存补丁技术实现

2026/7/30 22:11:18

企业级即时通讯消息防撤回解决方案深度解析与内存补丁技术实现 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/G…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/30 9:53:22

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/30 1:17:46

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/30 2:52:37

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

粉笔直播课适合周末集中备考考生突破吗

粉笔直播课适合周末集中备考考生突破吗

2026/7/30 0:09:54

本文面向在职备考、工作日难以抽出整块时间、只能依靠周末集中复习的公考考生,围绕"该平台直播课是否适配周末集中备考节奏、能否支撑瓶颈突破"这一核心问题做客观拆解。文中数据来源于公开财报、官网公示价格、第三方投诉平台公开投诉及用户社区讨论&…

ThreadLocal(存取变量)实战获取当前登录的员工

ThreadLocal(存取变量)实战获取当前登录的员工

2026/7/30 0:09:54

注意AOP所应用的注解以及service方法上自定义的Log注解

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案

2026/7/30 0:09:54

INAV飞控配置终极指南:从零到稳定飞行的完整解决方案 【免费下载链接】inav INAV: Navigation-enabled flight control software 项目地址: https://gitcode.com/gh_mirrors/in/inav INAV飞控配置是每个无人机爱好者必须掌握的核心技能,但很多新手…