【风电功率预测】减法平均算法优化长短时记忆SABO-LSTM风电功率预测【含Matlab源码 3736期】

在这里插入图片描述

⛄一、减法平均算法优化长短时记忆SABO-LSTM风电功率预测

LSTM(长短时记忆)是一种常用的深度学习模型,用于处理时间序列数据的预测和建模。在风电数据预测中,LSTM模型可以帮助我们更好地理解和预测风电发电量的变化。而基于减法平均算法优化的SABO-LSTM模型,可以进一步提高预测的准确性和稳定性。

在风电数据预测中,我们经常面临的挑战之一是数据的不稳定性和不确定性。风速和风向的变化会直接影响风电发电量,而这种变化往往是不规律的,难以用传统的方法进行建模和预测。因此,我们需要一种能够有效捕捉数据变化特征的模型,以提高预测的准确性和稳定性。

SABO-LSTM模型是一种基于减法平均算法优化的长短时记忆模型,它在传统的LSTM模型基础上进行了改进和优化。通过引入减法平均算法,SABO-LSTM模型可以更好地捕捉风电数据的变化特征,提高预测的准确性和稳定性。这种模型在风电数据预测中具有很大的潜力,可以帮助我们更好地理解和预测风电发电量的变化趋势。

在实际的风电数据预测中,SABO-LSTM模型可以通过对历史数据的学习和分析,来预测未来风电发电量的变化情况。通过引入减法平均算法,模型可以更好地捕捉数据的变化特征,提高预测的准确性和稳定性。这对于风电行业来说具有重要的意义,可以帮助企业更好地制定发电计划和调度方案,提高发电效率和经济效益。

总的来说,基于减法平均算法优化的SABO-LSTM模型在风电数据预测中具有很大的潜力。它可以帮助我们更好地理解和预测风电发电量的变化趋势,提高预测的准确性和稳定性。随着深度学习技术的不断发展和成熟,相信这种模型将在风电行业得到广泛的应用和推广。

⛄二、部分源代码

clear
close all
%% 数据读取
geshu=200;%训练集的个数
%读取数据
shuru=xlsread(‘数据的输入.xlsx’);
shuchu=xlsread(‘数据的输出.xlsx’);
nn = randperm(size(shuru,1));%随机排序
% nn=1:size(shuru,1);%正常排序
input_train =shuru(nn(1:geshu)😅;
input_train=input_train’;
output_train=shuchu(nn(1:geshu)😅;
output_train=output_train’;
input_test =shuru(nn((geshu+1):end)😅;
input_test=input_test’;
output_test=shuchu(nn((geshu+1):end)😅;
output_test=output_test’;
%样本输入输出数据归一化
[aa,bb]=mapminmax([input_train input_test]);
[cc,dd]=mapminmax([output_train output_test]);
global inputn outputn shuru_num shuchu_num
[inputn,inputps]=mapminmax(‘apply’,input_train,bb);
[outputn,outputps]=mapminmax(‘apply’,output_train,dd);
shuru_num = size(input_train,1); % 输入维度
shuchu_num = 1; % 输出维度
%% 利用哈里斯鹰算法选择最佳的BP参数
SearchAgents_no=6; % 狼群数量
Max_iteration=30; % 最大迭代次数
%优化维度
numsum=2;
dim=numsum;
ub=[200 0.15];%上限
lb=[10 0.01]; %下限
fboj=@(x)fun(x,inputn,outputn,shuru_num,shuchu_num);
[Alpha_score,Alpha_pos,Convergence_curve]=SABO(SearchAgents_no,Max_iteration,lb,ub,dim,fboj);

%% 参数选择结果赋值
x=Alpha_pos;
zhongjian1_num = round(x(1));
xue = x(2);
%% 模型建立与训练
layers = [ …
sequenceInputLayer(shuru_num) % 输入层
bilstmLayer(zhongjian1_num) % LSTM层
fullyConnectedLayer(shuchu_num) % 全连接层
regressionLayer];

options = trainingOptions(‘adam’, … % 梯度下降
‘MaxEpochs’,50, … % 最大迭代次数
‘GradientThreshold’,1, … % 梯度阈值
‘InitialLearnRate’,xue,…
‘Verbose’,0, …
‘Plots’,‘training-progress’); % 学习率
%% 训练LSTM
net = trainNetwork(inputn,outputn,layers,options);
%% 预测
net = resetState(net);% 网络的更新状态可能对分类产生了负面影响。重置网络状态并再次预测序列。
[~,Ytrain]= predictAndUpdateState(net,inputn);
test_simu=mapminmax(‘reverse’,Ytrain,dd);%反归一化
rmse = sqrt(mean((test_simu-output_train).^2)); % 训练集
%测试集样本输入输出数据归一化
inputn_test=mapminmax(‘apply’,input_test,bb);
[net,an]= predictAndUpdateState(net,inputn_test);
test_simu1=mapminmax(‘reverse’,an,dd);%反归一化
error1=test_simu1-output_test;%测试集预测-真实
%计算均方根误差 (RMSE)。
rmse1 = sqrt(mean((test_simu1-output_test).^2)); % 测试集
%% 画图
figure
plot(Convergence_curve);
xlabel(‘迭代次数’);
ylabel(‘RMSE’)
%将预测值与测试数据进行比较。
figure
plot(output_train)
hold on
plot(test_simu,‘.-’)
hold off
legend([“真实值” “预测值”])
xlabel(“样本”)
title(“训练集”)

figure
plot(output_test)
hold on
plot(test_simu1,‘.-’)
hold off
legend([“真实值” “预测值”])
xlabel(“样本”)
title(“测试集”)

% 真实数据,行数代表特征数,列数代表样本数output_test = output_test;
T_sim_optimized = test_simu1; % 仿真数据

num=size(output_test,2);%统计样本总数
error=T_sim_optimized-output_test; %计算误差
mae=sum(abs(error))/num; %计算平均绝对误差
me=sum((error))/num; %计算平均绝对误差
mse=sum(error.error)/num; %计算均方误差
rmse=sqrt(mse); %计算均方误差根
% R2=r
r;
tn_sim = T_sim_optimized’;
tn_test =output_test’;
N = size(tn_test,1);
R2=(N*sum(tn_sim.*tn_test)-sum(tn_sim)*sum(tn_test))2/((N*sum((tn_sim).2)-(sum(tn_sim))2)*(N*sum((tn_test).2)-(sum(tn_test))^2));

disp(’ ‘)
disp(’----------------------------------------------------------')

disp(['平均绝对误差mae为: ',num2str(mae)])
disp(['平均误差me为: ',num2str(me)])
disp(['均方误差根rmse为: ',num2str(rmse)])
disp(['相关系数R2为: ’ ,num2str(R2)])

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]赵侃,师芸,牛敏杰,王虎勤.基于改进麻雀搜索算法优化BP神经网络的PM2.5浓度预测[J].测绘通报. 2022(10)

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

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值