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

news2025/1/19 23:08:23

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

简介

简单说一下本期内容:

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

②采用极限学习机(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.coloradmin.cn/o/884231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux命令详解 | du命令】 du命令用于查看文件或目录的磁盘使用情况,帮助管理存储空间。

文章标题 简介一,参数列表二,使用介绍1. 基本用法2. 以人类可读的格式显示大小3. 显示总计磁盘使用量4. 包括每个文件的大小5. 限制显示的目录深度6. 排除特定文件或目录7. 指定块大小总结 简介 在Linux操作系统中,存储空间管理是至关重要的…

docker打包运行中的容器,生成镜像文件保存到本地

因为想着方便部署,将所有没问题的项目容器打包成镜像,走到哪儿都离线安装自动部署。 第一步先把运行中的容器打包成镜像 docker commit 运行中容器id 像打包成的镜像名称第二步将大象装进冰箱,不好意思说错了,把镜像保存到本地 …

spring框架核心技术讲解--超详细教程加案例分析

目录 一.spring简介 1.1 含义: 1.2 优点 1.3 官方网站:Spring | Why Springhttps://spring.io/why-spring 二.spring 控制反转IOC(依赖注入)的特点 2.1 控制反转是什么 2.2 案例(讲解控制反转) 三.sprin…

35_windows环境debug Nginx 源码-CLion配置CMake和启动

文章目录 生成 CMakeLists.txt 组态档35_windows环境debug Nginx 源码-CLion配置CMake和启动生成 CMakeLists.txt 组态档 修改auto目录configure文件,在 . auto/make 上边增加 . auto/cmake, 大概在 106 行。在 auto 目录下创建cmake 文件其内容如下: #!/usr/bin/env bash NG…

BLIP-Diffusion

论文大意 BLIP2 结合 Stable Diffusion,实现 主题驱动的图像生成与编辑。 分为两个阶段: 1.BLIP2 的multimodal encoder 输出与 text对齐的 visual representation; 2.上述生成的 特征 与 text embedding 共同引导 Stable Diffusion 的生…

Object 类的常见方法

文章目录 一、对象创建和销毁方法:二、对象信息获取方法:三、对象比较方法:四、线程相关方法:五、锁相关方法:六、使用案例:1、对象创建和销毁方法:2、对象信息获取方法:3、对象比较…

使用Python调用Java的jar包

当使用JPype时,你可以按照以下步骤调用Java的JAR包: 1. 安装JPype库: 你可以使用pip来安装JPype库,运行以下命令: pip install JPype1 2. 导入JPype库并启动JVM: 在Python中导入JPype库…

C++_深究继承

文章目录 1. 继承的概念和定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2 继承关系和访问限定符 2. 基类和派生类对象赋值转换3.继承中的作用域4. 派生类的默认成员函数5. 继承和友元6. 继承与静态成员7. 菱形继承即菱形虚拟继承菱形虚拟继承 8. 继承的总结与反思 1. 继承的…

scope(三)

前面两节讲了没有scoped的可以直接修改,现在讨论下把scoped这个属性去掉会是怎么样 1.准备的两个页面 放置的两个时间属性。 2.有hash值的页面 3.对比:另外的页面 可以看出只修改了当前页面的值 4.去掉scoped对比 两个页面多发生了更改,scoped对当前的页面起到一个保护的作用…

C++ primer 3.1节 课后练习

练习1.9 编写程序&#xff0c;使用while循环将50到100的整数相加。 #include <iostream> using namespace std; int main(){int i50,sum0;while (i < 100) {sum sum i;i;}cout << sum;return 0; } 练习1.10: 除了运算符将运算对象的值增加1之外&#xff0c…

mac 可以进行单片机(stm32)的开发吗?

当涉及到在Mac上进行单片机开发时&#xff0c;是完全可行的。以下是为什么Mac适合单片机开发的解释&#xff1a;开发工具&#xff1a;针对STM32单片机&#xff0c;你可以使用多种开发工具。一个常用的选择是Segger Embedded Studio&#xff0c;它是一个功能强大的集成开发环境&…

Windows系统提权(一)

权限提升概述 windows系统常见的权限&#xff1a; 用户权限 管理员权限 系统权限 访客权限 什么是提权 权限提升&#xff08;privilege escalation&#xff09;&#xff1a;攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制&#xff0c;提权到高权限的管理员用户&…

opentcs初次运行

openTCS简介 openTCS是一个开放的交通控制系统&#xff0c;可以实现机器人的任务分配、路径规划、调度等一系列的功能&#xff0c;也有相应的仿真平台&#xff0c;既可以使用该软件及仿真平台进行基本的任务分配、路径规划等操作&#xff0c;也可以基于该平台进行二次开发&…

机器学习重要内容:特征工程之特征抽取

目录 1、简介 2、⭐为什么需要特征工程 3、特征抽取 3.1、简介 3.2、特征提取主要内容 3.3、字典特征提取 3.4、"one-hot"编码 3.5、文本特征提取 3.5.1、英文文本 3.5.2、结巴分词 3.5.3、中文文本 3.5.4、Tf-idf ⭐所属专栏&#xff1a;人工智能 文中提…

2023“钉耙编程”联赛 Day 3 L 题 Inference 题解

原题描述 给定 m m m 个特征&#xff0c;你想基于大量的数据,再通过 Alice \text{Alice} Alice 的前 m − 1 m−1 m−1 个特征的值推断出她的最后一个特征的值。 特征之间的关系可以表示为一个有向无环图&#xff0c;其中一个节点 A A A 指向一个节点 B B B 表示 B B B…

Python基础语法入门(第二十天)——文件操作

一、基础内容 在Python中&#xff0c;路径可以以不同的表现形式进行表示。以下是一些常用的路径表现形式&#xff1a; 1. 绝对路径&#xff1a;它是完整的路径&#xff0c;从根目录开始直到要操作的文件或文件夹。在Windows系统中&#xff0c;绝对路径以盘符开始&#xff0c;…

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

【C++11保姆级教程】auto和decltype

文章目录 前言总结一、auto1.初识auto关键字 2.auto使用二、decltype1.初识decltype2.使用decltype 总结 前言 在C11中引入了一些新的关键字和特性&#xff0c;其中包括auto和decltype。这两个关键字提供了更方便、更灵活的类型推断机制&#xff0c;使得代码编写更加简洁和可读…

TCS3200颜色识别模块

TCS3200颜色识别模块 TCS3200简介 供电电源(2.7V to 5.5V)可配置颜色滤波器和输出信号频率高分辨率光强转换到频率(工作原理) TCS3200工作原理 TCS3200是TAOS公司推出的可编程彩色光到频率的转换器&#xff0c;它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMO…

Python找出列表中出现次数最多的元素三种方式

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 方式一&#xff1a; 原理&#xff1a;创建一个新的空字典&#xff0c;用循环的方式来获取列表中的每一个元素&#xff0c;判断获取的元素是否存在字典中的key&#xff0c;如果不存在的话&#xff0c;将元素作为key&#xf…