基于Elman神经网络的电力负荷预测(附源码)

news2024/11/14 13:51:30

一、算法原理

    Elman神经网络是一种典型的动态递归神经网络,它是在BP网络基本结构的基础上,在隐含层增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特性的能力,增强了网络的全局稳定性,它比前馈型神经网络具有更强的计算能力,还可以用来解决快速寻优问题。ELMAN的构造分为四层神经元:输入层、隐含层、承接层以及输出层。如图1为Elman神经网络的结构图。下面对Elman神经网络的结构进行简述。

图1 Elman神经网络结构图

(1)输入层和输出层

     输入层的神经元数量与输入数据特征的维数是相等的,输出层的神经元节点数量也等同于输出数据标签的维度。

(2) 隐含层

    不管在BP还是ELMAN,或者其他的神经网络,隐含层的神经元个数都不是固定的。如果选择的隐含层神经元个数较少时,就会导致网络的学习程度减小甚至无法学习。节点个数较多时,则会导致网络训练的过程变慢,也很难得出预计的情况。只有当隐含层神经元数量只有控制在一个合理的范围内,才能使得网络模型好的进行学习运算。

(3)承接层

    承接层也叫做上下文层和状态层,主要功能是用来记忆隐含层上一个时间点的输出数值。所以承接层的神经元个数与隐含层相同,确定方法为:先根据训练误差最小确定最佳的隐含层神经元节点,再得到承接层的神经元节点个数。

二、代码实战

    以电力负荷预测为例。

%总共10天的数据,选取前面9天的数据作为神经网络的训练样本,每3天的负荷作为输入向量,
%第四天的负荷作为目标向量,这样可以得到6组训练样本。第10天的数据作为网络的测试样本
%验证网络能否准确预测当天的负荷数据
clear all
clc
% close all
% nntwarn off;
%导入题中所给样本数据
a=[0.37 0.51 0.71;...
    0.12 0.17 0.88;...
    0.32 0.99 0.69;...
    0.13 0.55 0.63;...
    0.11 0.42 0.84;...
    0.24 0.53 0.71;...
    0.33 0.44 0.9;...
    0.19 0.66 0.44;...
    0.31 0.67 0.49;...
    0.37 0.51 0.71];

%%%%%%%%%%选取训练数据和测试数据%%%%%%%%%%%%%
for i=1:7
    p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 训练数据输入
p_train=p(1:6,:);
% 训练数据输出
t_train=a(4:9,:);
% 测试数据输入
p_test=p(7,:);
% 测试数据输出
t_test=a(10,:);

%为适应网络结构,对数据做转置处理
p_train=p_train';
t_train=t_train';
p_test=p_test';


%%%%%%%%%%%网络的建立和训练%%%%%%%%%%%%%%%%%
%设置不同的隐藏层神经元个数
nn=[5 10 15 20];
for i=1:4
    threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
    %建立Elman神经网络 隐藏层为nn(i)个神经元
    net=newelm(threshold,[nn(i),3],{'tansig','purelin'});
    %设置网络训练参数
    net.trainparam.epochs=2000;
    net.trainparam.show=200;
    %初始化网络
    net=init(net);
    %Elman网络训练
    net=train(net,p_train,t_train);
    % 预测数据
    y(i,:)=sim(net,p_test);
    % 计算绝对误差
    error(i,:)=y(i,:)-t_test;
end

%观察网络在不同隐藏层神经元个数时的预测绝对误差
figure(1)
plot(1:3,error(1,:),'-ro','linewidth',2);
hold on;
plot(1:3,error(2,:),'b:x','linewidth',2);
hold on;
plot(1:3,error(3,:),'k-.s','linewidth',2);
hold on;
plot(1:3,error(4,:),'c--d','linewidth',2);
title('Elman预测误差图')
set(gca,'Xtick',[1:3])
legend('5','10','15','20','location','best')
xlabel('预测时间点')
ylabel('不同神经元网络预测的绝对误差')
hold off;
figure(2)
plot(1:3,y(1,:),'-ro','linewidth',2);
hold on;
plot(1:3,y(2,:),'b:x','linewidth',2);
hold on;
plot(1:3,y(3,:),'k-.s','linewidth',2);
hold on;
plot(1:3,y(4,:),'c--d','linewidth',2);
title('Elman预测结果图')
set(gca,'Xtick',[1:3])
legend('5','10','15','20','location','best')
xlabel('预测时间点')
ylabel('不同神经元网络预测的绝对误差')
hold off;

%计算相对误差
for i=1:4
    average(i)=(abs(error(i,1))+abs(error(i,2))+abs(error(i,3)))/3;
end

%绘制不同神经元个数时网络预测一天3个时间点的平均误差
figure(3)
plot(5:5:20,average,'k-.s','linewidth',2)
xlabel('建立网络的神经元个数')
ylabel('不同神经元网络预测的平均误差')
hold off;

 

 

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

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

相关文章

2017年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。🐳 💕兴趣爱好:b站天天刷&…

碳排放预测模型 | Python实现基于SVR支持向量机回归的碳排放预测模型

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于SVR支持向量机回归的碳排放预测模型 研究内容 碳排放被认为是全球变暖的最主要原因之一。 该项目旨在提供各国碳排放未来趋势的概述以及未来十年的全球趋势预测。 其方法是…

Quiz 16_3-1: Databases | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 16_3-1: Databases单选题(1-11)操作题Autograder: Single Table SQL Python for Everybody 课程简介 Python for Everybody 零基础程序设计(Python 入门) This course aims to teach …

CS CK VT系列贴片型铝电解电容器特点

CS CK VT系列贴片型铝电解电容器就是宽温通用品,也就说电性和RVT贴片电解电容器和RST贴片电解电容器一样,105℃2000小时寿命,用于消费类电子。偶尔CS贴片电解电容器,CK贴片电解电容器和VT贴片电解电容器会有缩体产品。

菜鸡shader:L6 人物材质基础模型以及三种透明特效AC、AB和AD

文章目录 人物材质基础模型unity练练看实现代码实现最后效果 透明特效AC效果展示 AB效果展示 AD效果展示 自定义混合模式效果展示 人物材质基础模型 这里是老师布置的作业,要求把之前学过的所有模型都组合起来,组成一个基本的人物材质模型。这里在上作业…

基于安卓的接的快接单平台/基于Android的快的接单平台

【摘要】 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用接的快接单平台也在不断的使用…

设计模式学习之模板方法模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式设计模式学习之抽象工厂模式设计模式学习之策略模式和简单工厂模式的对比设计模式学习之观察者模式 模板方法模式是行为型设计模式的一…

获取Alibaba Nacos控制台管理权限

人活着,就得随时准备经受磨难。他已经看过一些书,知道不论是普通人还是了不起的人,都要在自己的一生中经历许多磨难。 磨难使人坚强。 漏洞复现 访问漏洞url 输入默认账号密码:nacos/nacos 成功获取Alibaba Nacos控制台管理权…

全面揭秘!火山引擎边缘 IaaS 混合部署架构实践

2023年6月16日-17日 51CTO WOT全球技术创新大会在北京成功举办。在快速发展的数字化时代,云计算和边缘计算作为科技领域的两大核心驱动力,正引领着全球技术变革的潮流。为了探讨云时代基础设施在科技发展中的关键作用,推动边缘云行业的进一步…

【夏虫语冰】Office操作技巧汇总

文章目录 1、Word技巧1.1 添加题注 2、Visio技巧2.1 快捷键2.2 格式刷 结语 1、Word技巧 1.1 添加题注 在 Word 中添加、删除标题或设置其格式: 可以为图表、公式或其他对象添加题注。 题注是带编号的标签,可将其添加到图表、表格、公式或其他对象。 …

springboot+echarts +mysql制作数据可视化大屏(四图)

作者水平低,如有错误,恳请指正!谢谢!!!!! 项目简单,适合大学生参考 分类专栏还有其它的可视化博客哦! 专栏地址:https://blog.csdn.net/qq_559…

C++类和对象——(对象的赋值拷贝构造函数)

目录 对象的赋值 目录 对象的赋值 1、提出问题: 2、解决办法: 拷贝构造函数 1、拷贝构造函数的原型: 2、调用机制: 3、使用例程代码 总代码工程: 对象的赋值 1、提出问题: 能否使用一个已经构造…

Java——《面试题——网络篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

Java——《面试题——设计模式篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

QThread

QThread的执行从run()函数的执行开始; 在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。 QThread的使用 链接 work对象 1,继承Qobject; 2,dowork(); 使…

(stm32)Unix时间戳

时间戳计时系统和常用的年月日时分秒计时系统有很大差别 时间戳:只计算从1970年1月1日0点整为0秒,只用最基本的秒来计时,用不进位。 常用计时系统:60秒进位1分钟,60分钟进位1小时,24小时进位1天&#xff…

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库

介绍 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&a…

电子器件系列44:IGBT的内部电容

对两款igbt进行比较,确定两者是否可以互换 A: B: 一、 从电路图上分析,在启动的时候,电路会提供一个15v的电压,两者都能顺利导通,可以替换 二、 开关时间 从实际使用电路上分析,这些参数对于本电路的功能…

随机数检测(二)

随机数检测(二)- 扑克检测、重叠子序列、游程总数、游程分布 3.4 扑克检测方法3.5 重叠子序列检测方法3.6 游程总数检测3.7 游程分布检测 3.4 扑克检测方法 扑克检测方法如下图。 以下实现代码供参考。 def alterOffsetBit(m, offset, listSub:list)…

HoloLens2与Unity的Socket通信踩坑日记

最近想让Hololens中获取电脑中更新的数据,打算使用套接字的方式进行通信,明明在unity中模拟测试可以进行正常通信,但是将软件部署到HoloLens上通信总是失败,找了很久的原因,找了很久的原因,终于能够正常通信…