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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)

文章目录 01. Kafka 消费者分区再均衡是什么?02. Kafka 消费者分区再均衡的触发条件?03. Kafka 消费者分区再均衡的过程?04. Kafka 如何判定消费者已经死亡?05. Kafka 如何避免消费者的分区再均衡?06. Kafka 消费者分区再均衡有什…

分布式 - 消息队列Kafka:Kafka 消费者的消费位移

文章目录 01. Kafka 分区位移02. Kafka 消费位移03. kafka 消费位移的作用04. Kafka 消费位移的提交05. kafka 消费位移的存储位置06. Kafka 消费位移与消费者提交的位移07. kafka 消费位移的提交时机08. Kafka 维护消费状态跟踪的方法 01. Kafka 分区位移 对于Kafka中的分区而…

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…

在 IntelliJ IDEA 中使用 Docker 开发指南

目录 一、IDEA安装Docker插件 二、IDEA连接Docker 1、Docker for Windows 连接 2、SSH 连接 3、Connection successful 连接成功 三、查看Docker面板 四、使用插件生成镜像 一、IDEA安装Docker插件 打开 IntelliJ IDEA,点击菜单栏中的 "File" -&g…

LeetCode 160.相交链表

文章目录 💡题目分析💡解题思路🚩步骤一:找尾节点🚩步骤二:判断尾节点是否相等🚩步骤三:找交点🍄思路1🍄思路2 🔔接口源码 题目链接👉…

谈谈网络协议的定义、组成和重要性

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络协议的定义 二、网络协议的组成 1、…

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…

Redis持久化

持久化是什么 额 就是永久化的保存数据呗 有两种持久化方式RDB和AOF 1.RDB (Redis Database),记录Redis某 个时刻的全部数据,这种方式本质就是数据快照,直接保存二进制数据到磁盘,后续通过加载RDB文件恢复数据。 2.AOF (Append…

项目介绍:《WeTalk》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

目录 引言: 前言: 技术栈: 主要功能: 功能详解: 1. 用户注册与登录: 2. 添加好友 3. 实时聊天 4. 消息未读 5. 删除聊天记录 6. 删除好友 未来展望: 项目地址: 结语&am…

Golang服务的请求调度

文章目录 1. 写在前面2. SheddingHandler的实现原理3. 相关方案的对比4. 小结 1. 写在前面 最近在看相关的Go服务的请求调度的时候,发现在gin中默认提供的中间件中,不含有请求调度相关的逻辑中间件,去github查看了一些服务框架,发…

Linux安装Docker

一、Docker系统版本介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相…

机器学习笔记:李宏毅diffusion model

1 概念原理 首先sample 一个都是噪声的vector然后经过denoise network 过滤一些杂质接着继续不断denoise,直到最后出来一张清晰图片 【类似于做雕塑,一开始只是一块石头(噪声很杂的雕塑),慢慢雕刻出想要的花纹】 同一个…