✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

⛄ 内容介绍

光伏发电受天气与地理环境影响,呈现出波动性和随机多干扰性,其输出功率容易随着外界因素变化而变化,因此预测发电输出功率对于优化光伏发电并网运行和减少不确定性的影响至关重要.本文提出一种基于遗传算法(GA)优化的长短记忆神经网络混合模型(GA-LSTM),首先LSTM模块提取时间特征和附近隐藏状态向量,同时通过GA优化LSTM训练网络的超参数权重与偏置值.在初期对历史数据进行归一化处理,然后对本文提出来的经GA优化后的LSTM混合神经网络(GA-LSTM)算法模型进行光伏功率预测实验.同时与CNN,LSTM两个单一神经网络模型以及未经GA优化-LSTM混合神经网络模型的预测性能进行比较.结果显示在平均绝对误差率(MAPE)指标下,本文提出的GA-LSTM算法模型比单一神经网络模型最好的结果减少了1.537%的误差本文的算法模型对光伏发电功率具有更好的预测性能.

1.1 遗传算法

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第1张图片

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第2张图片

1.2 LSTM模型

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第3张图片

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第4张图片

⛄ 部分代码

function [z_rmse,X,YPred]=Objfunction(x,lenchrom,ps_input,ps_output,numFeatures,numHiddenUnits,numResponses,XTrain,YTrain,test_N,XTest,YTest)

%% 目标函数

% 输入     x:二进制编码

%   lenchrom:各变量的二进制位数

% 输出     Y:目标值

%          X:十进制数

bound=[0.0001 0.1];   % 函数自变量的范围

%% 将binary数组转化成十进制数组

X=bin2decFun(x,lenchrom,bound);

%% 计算适应度-函数值

% Y=sin(4*pi*X(1))*X(1)+sin(20*pi*X(1))*X(1);

layers = [ ...

    sequenceInputLayer(numFeatures)

    lstmLayer(numHiddenUnits)

    fullyConnectedLayer(numResponses)

    regressionLayer];

%指定训练选项,求解器设置为adam, 250 轮训练。

%梯度阈值设置为 1。指定初始学习率 0.005,在 125 轮训练后通过乘以因子 0.2 来降低学习率。

options = trainingOptions('adam', ...

    'MaxEpochs',250, ...

    'GradientThreshold',2, ...

    'InitialLearnRate',X, ...

    'LearnRateSchedule','piecewise', ...

    'LearnRateDropPeriod',125, ...

    'LearnRateDropFactor',0.1, ...

    'Verbose',0);

%训练LSTM

net = trainNetwork(XTrain,YTrain,layers,options);%训练网络

net = resetState(net);

net = predictAndUpdateState(net,XTrain);%

YPred1 = [];

numTimeStepsTest =test_N;%步数

for mm = 1:numTimeStepsTest

    [net,YPred1(:,mm)] = predictAndUpdateState(net,XTest(:,mm),'ExecutionEnvironment','cpu');%%预测

end

mint=ps_output.xmin;

maxt=ps_output.xmax;

YPred=postmnmx(YPred1,mint,maxt)';%反归一化

for mm = 1:numTimeStepsTest

    if isempty(find(XTest(:,mm)==0))

  YPred(mm)=YPred(mm);

    else

        YPred(mm)=0;

    end

end

%% 评判指标

z_mse = mean((YPred-YTest').^2);%mse

z_mae = mean(abs(YPred-YTest'));%mae

z_r=1-sum((YPred-mean(YTest')).^2)/sum((YPred-YTest').^2);%r

z_rmse = sqrt(mean((YPred-YTest').^2));%均方差

⛄ 运行结果

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第5张图片

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测..._第6张图片

⛄ 参考文献

[1] 王晨阳, 汪志勇, 段倩倩,等. 基于遗传算法优化卷积长短记忆混合神经网络模型的光伏发电功率预测[J]. 物理学报, 2020, 69(10):7.

[2] 费珊珊, 张忠林. 改进遗传算法优化GA-LSTM网络的时序预测模型.

[3] 邓惟绩, 肖辉, 李金泽,等. 基于改进长短期记忆网络和高斯过程回归的光伏功率预测方法[J]. 电器与能效管理技术, 2021.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料