SABO-ELM电力负荷短期预测,MATLAB代码

关于电力负荷预测,后台留言的呼声很高。今天就为大家带来一期关于电力负荷预测的文章。

简介

简单说一下本期内容:

①对电力负荷数据进行处理

②采用极限学习机(ELM)对电力负荷数据进行训练和预测

③采用减法平均优化器算法优化极限学习机的权值阈值,降低预测误差

④采用白鲸算法优化ELM,并与减法优化器算法对比,突出减法优化器的高效准确性

内容详解
 

①对电力负荷数据进行处理

本次数据包含负荷值,温度,湿度,风速,压强,降水量,能见度,水汽压和体感温度,部分数据截图如下:

0cb3f357f1305935c3e224669e6789ea.png

选取900个样本作为训练集,每个样本组成为:当天24个小时的全部数据,因此训练集的输入数据大小为900*216,其中216=24*9,24代表24个小时,9代表9个特征。训练集的输出数据大小为:900*1。1代表未来一小时的负荷值。

选取300个样本作为测试集,同理,测试集的输入数据大小为300*216,训练集的输出数据大小为:300*1。

②采用极限学习机(ELM)对电力负荷数据进行训练和预测

预测结果如下:

fff45e8237e5d7c403e6a8a881d5036c.png

可以看到,未优化的ELM预测效果不是很理想。

③采用减法平均优化器算法优化极限学习机的权值阈值,并与白鲸算法做对比。

d153eda022536c9a7e81ff902f7faeb5.png

33ed8c4f9585ac7e6a721a45751b74c6.png

34ca6fc88229248af5144a720e271e70.png

aacd37de63dcc5f1180e4e5a6bba5742.png

由误差对比曲线和预测结果对比,可以看到减法优化器算法优化ELM的收敛精度是非常高的!

原理代码

数据替换较为简单,代码简单易懂,可以二次开发,部分代码如下:

clear
clc
close all
%% 准备数据
data =  readmatrix('data.csv');
data = data(:,2:10);
w=1;                  % w是滑动窗口的大小
s=24;                  % 选取前24小时的所有数据(这里的所有数据包含温度,湿度,风速,负荷值等所有变量)去预测未来一小时的数据
m = 900;            %选取m个样本作训练集
n = 300;             %选取n个样本作测试集
%% 数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
%% 获取输入层节点、输出层节点个数
inputnum=size(input_train,1);
outputnum=size(output_train,1);
disp('/')
disp('神经网络结构...')
disp(['输入层的节点数为:',num2str(inputnum)])
disp(['输出层的节点数为:',num2str(outputnum)])
hiddennum = 40;   %手动赋值
activation = 'sig';
% ELM训练
TYPE=0;  %0代表预测,1代表分类
[IW1,B1,LW,TF1,TYPE1] = elmtrain(inputn,outputn,hiddennum,'sig',TYPE);


% ELM仿真测试
tn_sim = elmpredict(inputn_test,IW1,B1,LW,TF1,TYPE1);
%5.1. 反归一化
T_sim0 = mapminmax('reverse',tn_sim,outputps);
error0 = output_test-T_sim0;
%误差指标
mse0=mse(output_test,T_sim0);
%% 标准ELM神经网络作图
figure
plot(output_test,'b-','markerfacecolor',[0.5,0.5,0.9],'MarkerSize',6)
hold on
plot(T_sim0,'r--','MarkerSize',6)
legend('真实y','预测的y')
xlabel('样本数')
ylabel('负荷')
title(['标准ELM预测结果',newline,'MSE误差为:',num2str(mse0)])
disp(['标准ELM测试集的均方误差为:',num2str(mse0)])


%% 调用SABO优化ELM
[score,bestchrom,trace]=SABOforELM(inputnum,hiddennum,TYPE,activation,inputn,outputn,inputn_test,output_test,outputps);
% 优化后结果分析
figure
set(gca,'looseInset',[0 0 0 0])
plot(trace,'r-','linewidth',1)
title('SABO适应度曲线图','fontsize',12,'fontname','TimesNewRoman');
xlabel('进化代数','fontsize',12,'fontname','TimesNewRoman');ylabel('诊断正确率','fontsize',12,'fontname','TimesNewRoman');

代码获取

代码目录如下:

f62c3c8351d3ae96f901df8ebd80a128.png

完整代码获取,下方卡片回复关键词:

SABOELM

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天吃饺子

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值