【数据预测】基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测 短期功率预测【Matlab代码#53】

news2024/9/23 19:27:32

文章目录

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


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


1. 蜣螂优化算法DBO

蜣螂优化算法可参考DBO介绍

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]=DBO(pop,Max_iteration,lb,ub,dim,fun);

x=Best_pos  ;                %最优个体 
C = x(1);                    %正则化系数
Kernel_type = 'RBF';         %核函数名
Kernel_para = x(2);          %核函数参数矩阵
output_train=shuchu(nn(1:geshu),:);
output_test=shuchu(nn((geshu+1):end),:);

figure
plot(output_train )
hold on
plot(train_simu1  )
legend('真实值','预测值')
title('训练集')

figure
plot(output_test )
hold on
plot(test_simu1 )
legend('真实值','预测值')
title('测试集')

figure
plot(Convergence_curve)
title('适应度曲线')
xlabel('迭代次数')
ylabel('适应度')
%%
reay = output_train;   % 真实数据
prey = train_simu1 ;   % 仿真数据
reay = reshape(reay,1,size(reay,1)*size(reay,2));   % 真实数据
prey = reshape(prey,1,size(prey,1)*size(prey,2));   % 仿真数据
num=length(reay);%统计样本总数
error=prey-reay;  %计算误差
mae=sum(abs(error))/num; %计算平均绝对误差
me=sum((error))/num; %计算平均绝对误差
mse=sum(error.*error)/num;  %计算均方误差
rmse=sqrt(mse);     %计算均方误差根
r=min(min(corrcoef(prey,reay)));
R2=r*r;

5. 仿真结果展示

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

6. 资源获取

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

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

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

相关文章

【雕爷学编程】Arduino动手做(175)---机智云ESP8266开发板模块8

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

二、vagrant中安装centos-7

篇章二、vagrant中安装centos-7 前言 使用Vagrant创建镜像时,需要指定一个镜像,也就是box,若不存在Vagrant则会先从网上下载,而后缓存在本地目录下。 Vagrant有一个 镜像网站 ,可以根据需要在这个网站中下载所需镜像…

Banana Pi 推出带有 2 个 2.5GbE 端口的迷你路由器开源硬件开发板

Banana Pi 今天推出了一款迷你路由器板,基于 MediaTek MT7986 无线网络片上系统,针对路由器进行了优化。Banana Pi BPI-R3 迷你路由器板还支持无线连接,起价约为 78.95 美元。 产品公告显示,这款新路由器板集成了 MediaTek Filog…

LAL v0.34.3发布,G711音频来了,Web UI也来了

Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本。 LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新增了对音频G711A/G711U(也被称为PCMA/PCMU)的支持。主要表现在: ✒ 1) rtmp G71…

《向量数据库指南》——使用Milvus Cloud操作员安装Milvus Cloud独立版

Milvus cloud操作员HelmDocker Compose Milvus cloud Operator是一种解决方案,帮助您在目标Kubernetes(K8s)集群上部署和管理完整的Milvus cloud服务堆栈。该堆栈包含所有Milvus cloud组件和相关依赖项,如etcd、Pulsar和MinIO。本主题介绍如何使用Milvus cloud Operator安…

Git的安装以及本地仓库的创建和配置

文章目录 1.Git简介2.安装Git2.1在Centos上安装git2.2 在ubuntu上安装git 3.创建本地仓库4.配置本地仓库 1.Git简介 Git是一个分布式版本控制系统,用于跟踪和管理文件的更改。它可以记录和存储代码的所有历史版本,并可以方便地进行分支管理、合并代码和协…

01_补充)docker学习 centos7 yum指令在线安装docker

安装前环境确认 目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 1.查看Linux 版本 …

DLA :pytorch添加算子

pytorch的C extension写法 这部分主要介绍如何在pytorch中添加自定义的算子,需要以下cuda基础。就总体的逻辑来说正向传播需要输入数据,反向传播需要输入数据和上一层的梯度,然后分别实现这两个kernel,将这两个kernerl绑定到pytorch即可。 a…

iOS开发-聊天emoji表情与自定义动图表情左右滑动控件

iOS开发-聊天emoji表情与自定义动图表情左右滑动控件 之前开发中遇到需要实现聊天emoji表情与自定义动图表情左右滑动控件。使用UICollectionView实现。 一、效果图 二、实现代码 UICollectionView是一种类似于UITableView但又比UITableView功能更强大、更灵活的视图&#x…

window.location.href is not a function

在使用uniapp跳转到外部页面时,使用window.location.href报错 解决: 当出现"window.location.href is not a function"的错误时,这通常是因为在某些浏览器中,window.location.href被视为只读属性,而不是函…

时频分析方法的matlab实现

傅里叶变换 function [ output_args ] example3_7( input_args ) %EXAMPLE3_7 Summary of this function goes here % Detailed explanation goes here clc; clear; fs12800;%采样频率 s1load(Sig1.txt); s2load(Sig2.txt); lslength(s1); figure(1) subplot(211) plot…

c++11 标准模板(STL)(std::basic_filebuf)(八)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_filebuf : public std::basic_streambuf<CharT, Traits> std::basic_filebuf 是关联字符序列为文件的 std::basic_streambuf 。输入序…

【力扣每日一题】2023.7.29 环形链表

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个链表&#xff0c;让我们判断这个链表是否有环。我们可以直接遍历这个链表&#xff0c;最后能走到链表末尾也就是空指针那就…

Go语言进阶语法八万字详解,通俗易懂

文章目录 File文件操作FileInfo接口权限打开模式File操作文件读取 I/O操作io包 文件复制io包下的Read()和Write()io包下的Copy()ioutil包总结 断点续传Seeker接口断点续传 bufio包bufio包原理Reader对象Writer对象 bufio包bufio.Readerbufio.Writer ioutil包ioutil包的方法示例…

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置&#xff1f; MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP&#xff0c;全连接网络&#xff0c;DNN三者的关系 wps表格横纵坐标轴怎么设置&#xff1f; 1、打开表格点击图的右侧…

LeetCode559. N 叉树的最大深度

559. N 叉树的最大深度 文章目录 [559. N 叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-n-ary-tree/)一、题目二、题解方法一&#xff1a;迭代方法二&#xff1a;递归 一、题目 给定一个 N 叉树&#xff0c;找到其最大深度。 最大深度是指从根节点到最远叶…

互联网医院建设|互联网医疗系统|互联网医院开发功能及特点

互联网医院是一种通过互联网技术与医疗服务相结合的创新模式。它可以让患者在家中或办公室&#xff0c;通过智能终端与医生进行在线咨询、预约挂号、开具电子处方等。这种模式打破了传统医疗的时间与空间限制&#xff0c;为患者提供了更为便捷、高效的医疗服务。 互联网医院功能…

LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

1、问题&#xff1a; https://github.com/CocoaPods/Specs.git/&#xff1a;LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443的解决办法 出现这个问题的原因基本都是代理的问题&#xff1a; 只需要加上代理就可以了&#xff1a; #http代理 git conf…

算法39:Excel 表列序号

一、需求 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入: columnTitle “A” 输出: 1 示例 2&…

Elasticsearch:通过动态修剪实现更快的基数聚合

作者&#xff1a;Adrien Grand Elasticsearch 8.9 通过支持动态修剪&#xff08;dynamic pruning&#xff09;引入了基数聚合加速。 这种优化需要满足特定的条件才能生效&#xff0c;但一旦实现&#xff0c;通常会产生惊人的结果。 我们观察到&#xff0c;通过此更改&#xff0…