【光伏功率预测】经验模态分解和主成分分析的长短期记忆网络EMD-PCA-LSTM光伏功率预测【含Matlab源码 3320期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、经验模态分解和主成分分析的长短期记忆网络EMD-PCA-LSTM光伏功率预测简介

1 摘要
提高光伏功率预测精度,对于保证电力系统的安全调度和稳定运行具有重要意义。本文提出一种经验模态分解(EMD)、主成分分析(PCA)和长短期记忆神经网络(LSTM)相结合的光伏功率预测模型。充分考虑制约光伏输出功率的5种环境因素,首先利用EMD将环境因素序列进行分解,得到数据信号在不同时间尺度上的变化情况,降低环境因素序列的非平稳性;其次利用PCA提取特征序列的关键影响因子,消除原始序列的相关性和冗余性,降低模型输入的维度;最终利用LSTM网络对多变量特征序列进行动态时间建模,实现对光伏发电功率的预测。北半球的8个月实测数据进行验证,实验结果表明,该预测模型较传统光伏功率预测方法有更高的精确度。

2 研究背景
光伏功率的准确预测关乎电网的合理调度、安全运行和系统稳定。随着电厂规模的不断扩增,电厂的数据量也呈爆炸式的增长,传统的神经网络光伏功率预测模型一方面受电厂来源数据的制约,忽略了部分环境因素对光伏功率的影响,缺乏对多元环境序列信息的有效利用;另一方面,由于光伏功率与多元环境序列信息呈非线性变化,随着网络输入变量的增多,会导致模型收敛速度减慢,并出现过拟合问题;同时因欠缺对光伏功率随时间变化这一特性的考量,限制了预测精度的提升。因此,要提高光伏功率预测模型的准确性,不仅要充分利用影响光伏功率的关键环境因素,也要进一步挖掘光伏功率预测与关键环境因素随时间变化的本质特征。

3 研究思路
本文在充分考虑制约光伏发电功率的 5 个主要环境因素即太阳辐照度、组件温度、空气温度、相对湿度和大气压力的前提下,针对光伏发电功率具有不稳定性和明显的间歇波动的特点,提出一种基于 EMD-PCA-LSTM 的光伏输出功率预测模型。

4 经验模态分解
利用经验模态分解(empirical mode decomposition,EMD)方法首先将 5 种环境序列进行分解,得到不同时间尺度下的本征模态分量和剩余分量,通过将环境序列分解为各种不同的特征波动序列和细节性,从而将原始环境信号中存在的不同尺度波动或趋势逐级分解出来,产生一系列具有不同特征尺度的数据序列,增加特征的多样性。

该方法的关键是经验模式分解,它能使复杂信号分解为有限个本征模函数(Intrinsic Mode Function,简称IMF),所分解出来的各IMF分量包含了原信号的不同时间尺度的局部特征信号。经验模态分解法能使非平稳数据进行平稳化处理,然后进行希尔伯特变换获得时频谱图,得到有物理意义的频率。与短时傅立叶变换、小波分解等方法相比,这种方法是直观的、直接的、后验的和自适应的,因为基函数是由数据本身所分解得到。由于分解是基于信号序列时间尺度的局部特性,因此具有自适应性。

5 主成分分析方法
然后利用主成分分析方法(principal component analysis,PCA)筛选出影响光伏输出功率的关键因子,降低模型输入参数的维度,消除由 EMD分解得到的不同波动序列的冗余性和相关性。

主成分分析是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。主成分分析,是考察多个变量间相关性一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关.通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。

6 LSTM神经网络
最后,通过 LSTM 神经网络完成对多变量时间序列和光伏功率序列之间的动态时间建模,构建预测模型,最终实现对光伏输出功率的预测。与传统的 BP 神经网络、机器学习算法模型,以及单一的 LSTM 模型、EMD-LSTM模型进行对比分析,结果表明,本文提出的模型预测精度更高。

LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出 。

7 实现步骤
本文构建了 EMD-PCA-LSTM 的光伏输出功率预测模型,在实际预测过程中,首先构建适用于 LSTM 模型训练的数据集,利用 t - 1 时刻的环境因素数据和光伏功率数据,对 t 时刻的光伏功率数据进行预测。

⛄二、部分源代码

clc;
clear
close all

%% LSTM预测
tic
load origin_data.mat
load emd_data.mat
load KPCA_data.mat

disp(‘…………………………………………………………………………………………………………………………’)
disp(‘单一的LSTM预测’)
disp(‘…………………………………………………………………………………………………………………………’)

num_samples = length(X); % 样本个数
kim = 5; % 延时步长(kim个历史数据作为自变量)
zim = 1; % 跨zim个时间点进行预测
or_dim = size(X,2);

% 重构数据集
for i = 1: num_samples - kim - zim + 1
res(i, 😃 = [reshape(X(i: i + kim - 1,:), 1, kim*or_dim), X(i + kim + zim - 1,:)];
end

% 训练集和测试集划分
outdim = 1; % 最后一列为输出
num_size = 0.7; % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim; % 输入特征维度

P_train = res(1: num_train_s, 1: f_)‘;
T_train = res(1: num_train_s, f_ + 1: end)’;
M = size(P_train, 2);

P_test = res(num_train_s + 1: end, 1: f_)‘;
T_test = res(num_train_s + 1: end, f_ + 1: end)’;
N = size(P_test, 2);

% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax(‘apply’, P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax(‘apply’, T_test, ps_output);

% 格式转换
for i = 1 : M
vp_train{i, 1} = p_train(:, i);
vt_train{i, 1} = t_train(:, i);
end

for i = 1 : N
vp_test{i, 1} = p_test(:, i);
vt_test{i, 1} = t_test(:, i);
end

% 创建LSTM网络,
layers = [ …
sequenceInputLayer(f_) % 输入层
lstmLayer(100)
reluLayer
fullyConnectedLayer(outdim) % 回归层
regressionLayer];

% 参数设置
options = trainingOptions(‘adam’, … % 优化算法Adam
‘MaxEpochs’, 100, … % 最大训练次数
‘MiniBatchSize’,25,…
‘GradientThreshold’, 1, … % 梯度阈值
‘InitialLearnRate’, 0.01, … % 初始学习率
‘LearnRateSchedule’, ‘piecewise’, … % 学习率调整
‘LearnRateDropPeriod’, 70, … % 训练60次后开始调整学习率
‘LearnRateDropFactor’,0.2, … % 学习率调整因子
‘L2Regularization’, 0.001, … % 正则化参数
‘ExecutionEnvironment’, ‘cpu’,… % 训练环境
‘Verbose’, 0, … % 关闭优化过程
‘Plots’, ‘training-progress’); % 画出曲线

% 训练
net = trainNetwork(vp_train, vt_train, layers, options);
%analyzeNetwork(net);% 查看网络结构
% 预测
t_sim1 = predict(net, vp_train);
t_sim2 = predict(net, vp_test);

% 数据反归一化
T_sim1 = mapminmax(‘reverse’, t_sim1, ps_output);
T_sim2 = mapminmax(‘reverse’, t_sim2, ps_output);
T_train1 = T_train;
T_test2 = T_test;

% 数据格式转换
T_sim1 = cell2mat(T_sim1);% cell2mat将cell元胞数组转换为普通数组
T_sim2 = cell2mat(T_sim2);

% 指标计算
disp(‘训练集误差指标’)
[mae1,rmse1,mape1,r1,error1]=calc_error(T_train1,T_sim1’);
fprintf(‘\n’)

disp(‘测试集误差指标’)
[mae2,rmse2,mape2,r2,error2]=calc_error(T_test2,T_sim2’);
fprintf(‘\n’)
toc

tic
disp(‘…………………………………………………………………………………………………………………………’)
disp(‘EMD-LSTM预测’)
disp(‘…………………………………………………………………………………………………………………………’)

data=[u’ X(:,end)];

num_samples = length(data); % 样本个数
kim = 5; % 延时步长(kim个历史数据作为自变量)
zim = 1; % 跨zim个时间点进行预测
or_dim = size(data,2);
res=[];
% 重构数据集
for i = 1: num_samples - kim - zim + 1
res(i, 😃 = [reshape(data(i: i + kim - 1,:), 1, kim*or_dim), data(i + kim + zim - 1,:)];
end

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]张炜, 崔娟. 基于麻雀算法优化的核极限学习机在风电功率预测中的应用[J]. 电力科学与工程, 2018, 34(2): 1-7.

[2]师晓龙, 王楠, 李颖, 等. 基于改进的麻雀算法和核极限学习机的风电功率预测[J]. 电力系统保护与控制, 2016, 44(16): 39-45.

[3]殷定庆, 程晓杰, 程肖飞, 等. 基于麻雀算法优化的核极限学习机在风电功率预测中的应用[J]. 计算机与数字工程, 2014, 42(12): 2858-2863

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于EMD-PCA-LSTM光伏功率预测模型是一种利用EMD-PCA-LSTM算法进行光伏输出功率预测的模型。该模型首先使用经验模态分解(EMD)方法对光伏功率数据进行分解,将其分解为多个固有模态函数(IMF)和一个趋势函数。然后,利用主成分分析(PCA)方法对得到的IMF进行降维处理,选取其中的主要成分作为输入特征。最后,使用长短期记忆(LSTM)神经网络对选取的特征进行训练和预测,得到光伏功率预测结果。该模型在考虑了光伏发电功率的主要环境因素的基础上,能够有效地预测光伏输出功率的不稳定性和间歇波动特点。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [基于EMD-PCA-LSTM光伏功率回归预测模型论文复现——附代码](https://blog.csdn.net/widhdbjf/article/details/129176044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【光伏功率预测】基于EMD-PCA-LSTM光伏功率预测模型(Matlab代码实现)](https://blog.csdn.net/weixin_46039719/article/details/128880698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值