【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

1 简介

为了解决短期负荷预测精度低,准确性差等问题,采用一种使用鲸鱼优化算法(WOA)优化长短期记忆网络(LSTM)的短期负荷预测模型.针对模型的参数较难选择的问题,利用WOA对LSTM模型参数寻优.通过实例验证了预测模型的有效性,结果表明WOA-LSTM比LSTM模型具有更好的效果.

1.1 鲸鱼优化算法(Whale Optimization Algorithm,WOA)

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

1.2 LSTM模型

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码1.3 基于鲸鱼算法优化LSTM流程

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

2 部分代码

%%
clc
clear all
close all
%加载数据,重构为行向量
num=100;
x=1:num;
db=0.1;
data =abs(0.5.*sin(x)+0.5.*cos(x)+db*rand(1,num));
data1 =data;%把你的负荷数据赋值给data变量就可以了。
%data是行向量。要是还不明白,就留言吧。

%%
%序列的前 90% 用于训练,后 10% 用于测试
numTimeStepsTrain = floor(0.9*numel(data));
dataTrain = data(1:numTimeStepsTrain+1);
dataTest = data1(numTimeStepsTrain+1:end);

%数据预处理,将训练数据标准化为具有零均值和单位方差。
mu = mean(dataTrain);
sig = std(dataTrain);
dataTrainStandardized = dataTrain;

%输入LSTM的时间序列交替一个时间步
XTrain = dataTrainStandardized(1:end-1);
YTrain = dataTrainStandardized(2:end);
%%
%创建LSTM回归网络,指定LSTM层的隐含单元个数96*3
%序列预测,因此,输入一维,输出一维
numFeatures = 1;
numResponses = 1;
numHiddenUnits = 20*3;

layers = [ ...
   sequenceInputLayer(numFeatures)
   lstmLayer(numHiddenUnits)
   fullyConnectedLayer(numResponses)
   regressionLayer];
%% WOA
lb=0.001;%学习率下限
ub=0.1;%学习率上限

% Main loop

while t<Max_iter
   t
  
end

%将预测值与测试数据进行比较。
figure(1)
subplot(2,1,1)
plot(YTest,'gs-','LineWidth',2)
hold on
plot(YPred_best,'ro-','LineWidth',2)
hold off
legend('观测值','预测值')
xlabel('时间')
ylabel('数据值')
title('Forecast with Updates')

subplot(2,1,2)
stem(YPred_best - YTest)
xlabel('时间')
ylabel('均方差值')
title('均方差图 ' )


figure(2)
plot(dataTrain(1:end-1))
hold on
idx = numTimeStepsTrain:(numTimeStepsTrain+numTimeStepsTest);
plot(idx,[data(numTimeStepsTrain) YPred_best],'.-')
hold off
xlabel('时间')
ylabel('数据值')
title('预测图')
legend('观测值', '预测值')

figure(3)
plot(1:Max_iter,Convergence_curve,'bo-');
hold on;
title('鲸鱼优化后Error-Cost曲线图');
xlabel('迭代次数')
ylabel('误差适应度值')

3 仿真结果【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

4 参考文献

[1]曹开田, 高莘尧, 姜梦彦. 一种基于鲸鱼算法优化LSTM的频谱感知方法:.

[2]刘昊东, 邹必昌. 基于鲸鱼算法优化长短期记忆网络的短期负荷预测[J]. 电子世界(3):2.

【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码

上一篇:记录神经网络训练过程中的问题


下一篇:【lstm预测】基于粒子群算法改进的lstm预测matlab源码