基于VMD-SSA-LSTM的多维时序光伏功率预测MATLAB程序资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87950148参考文献:
《基于VMD-SSA-LSSVM的短期风电预测》
《基于改进鲸鱼优化算法的微网系统能量优化管理》
主要内容:
融合了两篇文献中的方法实现了光伏功率预测,该方法仍然可以用于风电、负荷等方面的预测。只需要自己更改相关数据即可!!!!
对比了LSTM、VMD-LSTM、VMD-SSA-LSTM三种方法的光伏功率预测曲线!!
程序完美运行,注释清晰,方便理解!!!!
运行时间较长,请耐心等待!!
主要程序:
%% LSTM预测
tic
load origin_data.mat
load vmd_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);
输出结果图: