【数据预测】基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测 短期功率预测【Matlab代码#54】

文章目录

    • 【可更换其他算法,`获取资源`请见文章第6节:资源获取】
    • 1. 白鲸优化算法BWO
    • 2. 变分模态分解VMD
    • 3. 核极限学习机KELM
    • 4. 部分代码展示
    • 5. 仿真结果展示
    • 6. 资源获取


【可更换其他算法,获取资源请见文章第6节:资源获取】


1. 白鲸优化算法BWO

白鲸优化算法详细介绍可参考BWO算法

2. 变分模态分解VMD

变分模态分解(Variational Mode Decomposition,简称VMD)是一种信号分解和降噪方法,用于从复杂的信号中提取出不同的成分或模态。

VMD是在2014年由Konstantin Dragomiretskiy和Dominique Zosso提出的。它基于变分原理,通过最小化信号的复杂度和不同成分之间的相互影响,将信号分解成多个固有模态(Intrinsic Mode Functions,简称IMFs)。IMFs是具有不同频率和振幅的函数,相当于将原始信号分解成一系列振动模态。

VMD适用于处理非线性和非平稳信号,例如振动信号、生物信号、地震信号、图像信号等。它在信号处理、振动分析、图像处理等领域有广泛的应用,特别是在提取信号中的隐含信息和去除噪声方面表现出色。

各个功率模态分量 u k u_{k} uk的频谱通过希尔伯特转换被传送至基带,并将其与一个指标对应的估计中心频率 w k w_{k} wk相对应,最终通过解调信号高斯平滑度来估算该带宽,从而将该约束的变分问题表达为:
在这里插入图片描述
式中, u k u_{k} uk代表第 k k k个功率模态分量; w k w_{k} wk代表功率模态分量的中心频率; δ ( t ) \delta (t) δ(t)代表单位冲击函数。同时,采用二次惩罚算子及拉格朗日乘子达到排除以上因素的限制的目的,将上面式子的最小化问题转变为下面式子的无约束优化问题。
在这里插入图片描述
式中, α \alpha α代表惩罚算子,在时间序列信号中混有噪声可保证其重构后的精度; λ \lambda λ代表拉格朗日的乘子; ⊗ \otimes 表示卷积算子。

随后更新功率模态分量 u k u_{k} uk,即:
在这里插入图片描述
式中, i i i n n n都是代表不同参数取得的任意值; ω \omega ω表示信号从时间域向 t t t频率域变换的符号; u ^ \hat{u} u^ f ^ ( ω ) \hat{f} (\omega ) f^(ω) λ ^ ( ω ) \hat{\lambda} (\omega) λ^(ω)是傅里叶变换后的 u {u} u f ( ω ) {f} (\omega ) f(ω) λ ( ω ) {\lambda} (\omega ) λ(ω)

最终,以上面式子同样的方式更新 ω k n + 1 \omega_{k}^{n+1} ωkn+1 λ k n + 1 \lambda_{k}^{n+1} λkn+1即可。

当满足特定的判别精度 δ \delta δ后,终止循环迭代。
在这里插入图片描述
式中, ε \varepsilon ε表示收敛进度。最终,将原功率序列分解为 k k k个窄频段IMF。

3. 核极限学习机KELM

KELM模型是在 ELM 的基础上延伸建立的,ELM 模型中的随机映射被替换成了核映射,通过把低维问题转换到完整的内积空间里解决,可以极大地减少网络的复杂性,与 ELM 相比具备更强的学习泛化能力和稳定性。

ELM算法采用随机生成各个神经元连接权值和阈值,这会导致算法的波动和不稳定,所以在ELM 算法中当映射函数 h ( x ) h(x) h(x)为未知时,引入了核函数,KELM 的数学描述如下:
在这里插入图片描述
式中, H H H表示隐含层输出矩阵; K ( x i , x j ) K(x_{i},x_{j}) K(xi,xj)表示核函数,本文采用RBF核函数,即:
在这里插入图片描述
式中, g g g为核参数。可以得到KELM的输出函数表达式为:
在这里插入图片描述
式中, β \beta β为输出权值矩阵; T T T为目标输出矩阵; I I I为单位矩阵; C C C为正则化系数。

综上,KELM的核参数 g g g和正则化系数 C C C是影响预测性能的重要因素,这也正是本文所使用的优化算法需要优化的两个参数。

4. 部分代码展示

%%  白鲸优化算法参数设置
% 优化参数的个数dim为2 。
% 目标函数
fun = @getObjValue; dim = 2;
% 优化参数的取值上下限(正则化系数C 核函数参数矩阵g )
lb = [25 2];
ub = [60 5];%%  参数设置
pop =20; %种群数量
Max_iteration=100;%最大迭代次数             
%% 优化(调用函数)
[Best_pos,Best_score,Convergence_curve]=BWO(pop,Max_iteration,lb,ub,dim,fun);x=Best_pos  ;                 %最优个体 
C = x(1);                    %正则化系数
Kernel_type = 'RBF';             %核函数名
Kernel_para = x(2);                    %核函数参数矩阵%%
xunlian=[];
cesi=[];
for mode=1:Kshuchu1 = uoutput(mode,:)';input_train =shuru(nn(1:geshu),:);input_train=input_train';output_train=shuchu1(nn(1:geshu),:);output_train=output_train';input_test =shuru(nn((geshu+1):end),:);input_test=input_test';output_test=shuchu1(nn((geshu+1):end),:);output_test=output_test';%%%样本输入输出数据归一化[aa,bb]=mapminmax([input_train input_test]);[cc,dd]=mapminmax([output_train output_test]);inputn=mapminmax('apply',input_train,bb);outputn=mapminmax('apply',output_train,dd);x_test=mapminmax('apply',input_test,bb);y_test=mapminmax('apply',output_test,dd);train_x=inputn;train_y=outputn;test_x=x_test;test_y=y_test ;[predict_trainy, predict_testy] = KELM(train_x,train_y,test_x,test_y, C, Kernel_type, Kernel_para);% 测试集test_s1=mapminmax('reverse',predict_testy,dd);%反归一化% 训练集train_s1=mapminmax('reverse',predict_trainy,dd);%反归一化xunlian=[xunlian;train_s1];cesi=[cesi;test_s1;];
end

5. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 资源获取

可以获取完整代码资源,可更换其他群智能算法。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云原生应用里的服务发现

服务定义: 服务定义是声明给定服务如何被消费者/客户端使用的方式。在建立服务之间的同步通信通道之前,它会与消费者共享。 同步通信中的服务定义: 微服务可以将其服务定义发布到服务注册表(或由微服务所有者手动发布)…

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…

8.1 配置环境/Linux进程管理总结/Argument/saveload Module/切片

文章目录 一、配置环境二、Linux 进程管理总结三、ArgumentParser四、Saving and Loading Models nn.ModulesWarmstarting Model Using Parameters from a Different Model五、切片!拓展: 一、配置环境 github配置环境可以直接赋值到txt中,然…

【小沐学前端】VuePress制作在线电子书、技术文档(VuePress + Markdown + node)

文章目录 1、简介1.1 VuePress简介1.2 它是如何工作的? 2、安装node3、安装VuePress4、配置VuePress4.1 修改标题4.2 修改导航条4.3 修改右侧栏4.4 修改正文 结语 1、简介 Vue驱动的静态网站生成器,生成的网页内容放到自己服务器上管理,可用于…

HTML+CSS+JavaScript:渲染电商站购物车页面

一、需求 根据下图渲染购物车页面 二、代码素材 以下是缺失JS部分的代码&#xff0c;感兴趣的小伙伴可以先自己试着写一写 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatib…

【总结】p50蓝图概念、面向对象思想、函数事件宏的区别

p50蓝图概念、面向对象思想、函数事件宏的区别 函数的概念&#xff08;纯虚函数和函数&#xff09;宏的概念函数、事件、宏的区别变量的概念面向对象思想&#xff08;封装、继承、多态&#xff09;类和对象的关系Object、actor、pawn、Character、component之间的区别控制权、玩…

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步&#xff0c;自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种&#xff0c;给人们的生活和财产安全带来了极大的威胁。因此&#xff0c;进行山体滑坡的安全监测显得尤为重要。振…

uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)

基于上次文章做了优化和改良,保证在登录状态下才获取定位信息 uniapp 小程序实时且持续获取定位信息(全局设置一次)(单页面监听定位改变)(不采用定时器)_uniapp小程序定位_前端小胡兔的博客-CSDN博客本篇文章实现了uniapp 微信小程序实时获取定位信息,小程序打开即可持续获取定…

补充JDK源码-IDEA集成工具

在阅读JDK8源码的时候发现&#xff0c;只有一小部分常用包是存在源码及其注释的&#xff0c;而很多内部包是没有源码&#xff0c;class文件在阅读的时候对阅读者十分不友好。在网上搜集了很多资料都没有解决问题。 解决问题办法&#xff1a;参考文档。本文主要是根据这篇文章记…

笔记本WIFI连接无网络【实测有效解决方案,不用重启电脑】

笔记本Wifi连接无网络实测有效解决方案 问题描述&#xff1a; 笔记本买来一段时间后&#xff0c;WIFI网络连接开机一段时间还正常连接&#xff0c;但是过一段时间显示网络连接不上解决方案&#xff1a; 1.编写网络重启bat脚本&#xff0c;将以下内容写到文本文件&#xff0c;把…

Dockerfile构建lamp镜像

1、构建目录 [rootdocker ~]# mkdir compose_lamp [rootdocker ~]# cd compose_lamp/ 2、编写Docekerfile [rootdocker compose_lamp]# vim Dockerfile #基础镜像 FROM centos:7#维护该镜像的用户信息 MAINTAINER Crushlinux <crushlinux163.com>#安装httpd RUN yum -…

【小沐学前端】GitBook制作在线电子书、技术文档(gitbook + Markdown + node)

文章目录 1、简介1.1 工具简介1.2 使用费用 2、安装2.1 安装node2.2 安装gitbook 3、测试3.1 编辑文档3.2 编译工程3.3 预览工程 结语 1、简介 官网地址&#xff1a; https://www.gitbook.com/1.1 工具简介 什么是 GitBook&#xff1f; GitBook 是一个现代文档平台&#xff…