采用多层人工神经网络的能源消耗的时间序列预测(Matlab代码实现)

news2024/11/25 7:12:30

     目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

该项目为能源消耗的时间序列预测,在Matlab中实现。该预测采用多层人工神经网络,基于Kaggle训练集预测未来能源消耗。

📚2 运行结果

 

 

 

 

 

🎉3 参考文献

[1]程静,郑定成,吴继权.基于时间序列ARMA模型的广东省能源需求预测[J].能源工程,2010(01):1-5.DOI:10.16189/j.cnki.nygc.2010.01.012.

👨‍💻4 Matlab代码


seed = 52
    rng(seed);                                                                  % Seeds the random number generator using the nonnegative integer seed     

    % Load the data
    load lasertrain.dat 
    load laserpred.dat
    clear net
    close all

    p = 18;                                                                     % Lag    
    n = 4;                                                                      % Difference between the inputs and the number of neurons    

    [TrainData, TrainTarget] = getTimeSeriesTrainData(lasertrain, p);           % This creates TrainData and TrainTarget, such as divided in time  intervales of 5. TrainData(:,1) -> TrainTarget(1). R5 --> R1

    % Create the ANN
    numN = p - n;                                                               % Number of neurons in the hidden layer
    numE = 200;                                                                 % Number of epochs
    trainAlg = 'trainlm';                                                       % Training Algorithm 
    transFun = 'tansig';                                                        % Transfer Function   

    net = feedforwardnet(numN, trainAlg);                                       % Create general feedforward netowrk
    net.trainParam.epochs = numE;                                               % Set the number of epochs for the training 
    net.layers{1}.transferFcn = transFun;                                       % Set the Transfer Function
%     net.divideParam.trainRatio = 0.8;
%     net.divideParam.valRatio = 0.2;
%     net.divideParam.testRatio = 0;

    P = TrainData;       
    T = TrainTarget;     
    net = train(net,P,T);

    TotMat = [lasertrain ; zeros(size(laserpred))];

    for j = 1:length(laserpred) 

        r = length(lasertrain) - p + j;
        P = TotMat(r:r+p-1);

        a = sim(net,P);
        TotMat(length(lasertrain) + j) = a;
%         TotMat(length(lasertrain) + j) = (abs(round(a))+round(a))/2;

    end
    err = immse(TotMat(length(lasertrain)+1:end),laserpred);
    
    x = linspace(1,length(TotMat),length(TotMat));

figure
subplot(3,1,2)
plot(x(1:length(lasertrain)), TotMat(1:length(lasertrain)),'r', x(length(lasertrain)+1:end), TotMat(length(lasertrain)+1:end),'g', x(length(lasertrain)+1:end), laserpred','b');
xlim([1 1100])
title('Real set and forecast set');
legend('Training Data','Forecasted Data', 'Test data');

subplot(3,1,1)
plot(x(1:length(lasertrain)), TotMat(1:length(lasertrain)),'r', x(length(lasertrain):end), TotMat(length(lasertrain):end),'g');
xlim([1 1100])
title('Forecasted set');
legend('Training Data','Forecasted Data');

subplot(3,1,3)
plot(x(length(lasertrain)+1:end), TotMat(length(lasertrain)+1:end),'g', x(length(lasertrain)+1:end), laserpred','b');
xlim([1000 1100])
title('Detailed forcast data vs Test data');
legend('Forecasted Data', 'Test data');

formatSpec = 'The mean squared error is %4.2f \n';
fprintf(formatSpec, err)

主函数部分代码:

%% Exercise 2 - Recurrent Neural Networks

%% Initial stuff
clc
clearvars
close all

%% 1 - Hopfield Network

% Note: for this exercise, it will be interesting to check what happens if
% you add more neurons, i.e. modify T such as N is bigger.

T = [1 1; -1 -1; 1 -1]';                                                    % N x Q matrix containing Q vectors with components equal to +- 1.
                                                                            % 2-neuron network with 3 atactors
net = newhop(T);                                                            % Create a recurrent HOpfield network with stable points being the vectors from T

A1 = [0.3 0.6; -0.1 0.8; -1 0.5]';                                          % Example inputs
A2 = [-1 0.5 ; -0.5 0.1 ; -1 -1 ]';
A3 = [1 0.5  ; -0.3 -0.4 ; 0.8 -0.6]';
A4 = [0 -0.1 ; 0.1 0 ; -0.5 0.1]';
A5 = [0 0 ; 0 0.1  ; -0.1 0 ]';
A0 = [1 1; -1 -1; 1 -1]';
% Simulate a Hopfield network
% Y_1 = net([],[],Ai);                                                      % Single step iteration    

num_step = 20;                                                              % Number of steps                
Y_1 = net({num_step},{},A1);                                                % Multiple step iteration
Y_2 = net({num_step},{},A2);  
Y_3 = net({num_step},{},A3);  
Y_4 = net({num_step},{},A4);  
Y_5 = net({num_step},{},A5);

%% Now we try with 4 Neurons

T_ = [1 1 1 1; -1 -1 1 -1; 1 -1 1 1]';                                      % N x Q matrix containing Q vectors with components equal to +- 1.
                                                                            % 4-neuron network with 3 atactors
net_ = newhop(T_);                                                          % Create a recurrent HOpfield network with stable points being the vectors from T

A1_ = [0.3 0.6 0.3 0.6; -0.1 0.8 -0.1 0.8; -1 0.5 -1 0.5]';                 % Example inputs
A2_ = [-1 0.2 -1 0.2 ; -0.5 0.1  -0.5 0.1 ; -1 -1 -1 -1 ]';
A3_ = [1 0.5 1 0.5 ; -0.3 -0.4 -0.3 -0.4 ; 0.8 -0.6 0.8 -0.6]';
A4_ = [-0.5 -0.3 -0.5 -0.3 ; 0.1 0.8 0.1 0.8 ; -0.7 0.6 -0.7 0.6]';
% Simulate a Hopfield network
% Y_1 = net([],[],Ai);                                                      % Single step iteration    

num_step_ = 40;                                                             % Number of steps                
Y_1_ = net_({num_step_},{},A1_);                                            % Multiple step iteration
Y_2_ = net_({num_step_},{},A2_);  
Y_3_ = net_({num_step_},{},A3_);  
Y_4_ = net_({num_step_},{},A4_); 

%% Execute rep2.m || A script which generates n random initial points and visualises results of simulation of a 2d Hopfield network 'net'

% Note: The idea is to understand what is the relation between symmetry and
% attractors. It does not make sense that appears a fourth attractor when
% only 3 are in the Target T
close all 

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

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

相关文章

【Python机器学习】梯度下降法的讲解和求解方程、线性回归实战(Tensorflow、MindSpore平台 附源码)

需要全部源码请点赞关注收藏后评论区留言私信~~~ 基本思想 迭代关系式是迭代法应用时的关键问题,而梯度下降(Gradient Descent)法正是用梯度来建立迭代关系式的迭代法。 机器学习模型的求解一般可以表示为: 其中,f(x)…

LSTM返向传播代码实现——LSTM从零实现系列(4)

一、前言 这个LSTM系列是在学习时间序列预测过程中的一些学习笔记,包含理论分析和源码实现两部分。本质属于进阶内容,因此神经网络的基础内容不做过多讲解,想学习基础,可看之前的神经网络入门系列文章: https://blog.…

IntelliJ IDEA建立SSM论文基本增删改查管理系统

IntelliJ IDEA建立SSM论文基本增删改查管理系统 1、启动IntelliJ IDEA程序 2、点击File----->New ------>Project建立项目 3、在弹出的对话框中,左边点击”maven”建立maven项目,右边的选择框不要选择,选择maven-archetype-webapp不能…

GAN2 ~

这也是第二季了 近年来,基于生成对抗式网络(Generative Adversarial Network, GAN)的图片生成研究工作取得了显著的进展。除了能够生成高分辨率、逼真的图片之外,许多创新应用也应运而生,诸如图片个性化编辑、图片动画…

C++ STL算法(一)利用STL算法解决很常见的一些子问题

文章目录next_permutationlower_bound 与 upper_boundpartial_sumsort 与 uniquenext_permutation cplusplus: next_permutation 作用:得到所有的全排列 例题: P1706 全排列问题 void test1() {int n;cin >> n;int* arr new int[n…

Oracle基础版

这是上上周的事情,我们甲方强烈要求使用oracle数据库,也就上学的时候玩过Oracle也忘得差不多了,所以一直不想弄,我们开会产品说要提测了,我还没弄,这不得哐哐开始干活,过程吧还算顺利&#xff0…

Java学习之第八章练习题-1

目录 第一题 题目 我的代码 Person类 错误 正确写法 输出结果 附加要求 代码 结果 第二题 题目 答案 第三题 题目 代码 总结不足 创建对象并运行 第四题 题目 运行结果​编辑 第五题 题目 第六题 题目 第一题 题目 我的代码 Person类 package com.hspedu…

DBCO-NHS 1353016-71-3,二苯基环辛炔-活性酯 可用于以高特异性和反应性标记叠氮化物修饰的生物分子

名称 DBCO-NHS ester 中文名称 二苯基环辛炔-活性酯 英文名称 DBCO-NHS NHS-DBCO 分子量 402.40 CAS 1353016-71-3 溶剂 溶于DMSO, DMF, DCM, THF, Chloroform 存储条件 -20冷冻保存 保存时间 一年 结构式 DBCO(二苯并环辛炔)是一种环炔烃&…

怎么将视频转为音频mp3格式?这些转换方法一分钟就能学会

随着现在娱乐方式的多样化,我们可以在闲暇时间做一些令人放松的事情。对于我来说,就很喜欢一边听歌一边发呆。我之前喜欢的一位歌手,他的翻唱歌曲以及原创音乐都得到了网友很高的评价,但是有些歌曲在平台上没有音源,我…

【内网安全-CS】Cobalt Strike启动运行上线方法

目录 一、启动运行 1、第一步:进入cs目录 2、第二步:查看本机ip 3、第三步:启动"团队服务器" 4、第四步:客户端连接 二、上线方法 1、第一步:生成监听器 2、第二步:生成木马 3、第三步&…

如何将智能设备关联至云开发中的项目?

将应用中已经连接的设备关联至云项目后,就可以在 涂鸦 IoT 开发平台 通过云开发主动管理和控制对应的设备。云开发提供多种应用中的设备关联方式: 关联自有 App 账号关联自有小程序关联涂鸦 App 账号关联 SaaS 方式一:关联自有 App 大家可以…

深度学习入门(六十)循环神经网络——门控循环单元GRU

深度学习入门(六十)循环神经网络——门控循环单元GRU前言循环神经网络——门控循环单元GRU课件关注一个序列门候选隐状态隐状态总结教材1 门控隐状态1.1 重置门和更新门1.2 候选隐状态1.4 隐状态2 从零开始实现2.1 初始化模型参数2.2 定义模型2.3 训练与…

前端本地存储数据库 IndexedDB 存储文件

介绍 IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据。目前各浏览器都已支持,兼容性很好。 特点 IndexedDB 是一个基于 JavaScript 的面向对象数据库,IndexedDB 允许您存储和检索用键索引的对象;可以存储结构化克隆…

MySQL8.0基础篇

文章目录一、MySQL概述1、数据库概述1.1 数据库作用1.2 数据库的相关概念2、MySQL概述2.1 概述2.2 RDBMS与非RDBMS3、MySQL环境安装3.1 MySQL的下载、安装、配置(win)3.2 MySQL登录3.3 MySQL演示使用3.4 MySQL目录结构与源码二、SQL查询1、SQL详情1.1 SQL分类1.2 SQL语言的规则…

Docker和docker-compose中部署nginx-rtmp实现流媒体服务与oob和ffmpeg推流测试

场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_霸道流氓气质的博客-CSDN博客_nginx-rtmp-win64 上面讲的是在windows中搭建nginx-rtmp,如果实在centos中使用docker或…

使用Git拉取和推送到仓库

使用Git拉取和推送到仓库 0、前置工作 首先安装和配置git ,参考: git安装教程_嘴巴嘟嘟的博客-CSDN博客_全局安装gitGit上传文件代码到GitHub(超详细)_蓝布棉的博客-CSDN博客_git上传文件到github仓库 没有仓库的情况 创建仓…

项目总结篇

注意会话管理:cookie,session的作用;(Redis等) 过滤敏感词(相关算法),事务(Spring怎么管理) Redis的数据结构适合那种情况 kafka:框架背后通用的原则,模式,生…

jsp+ssm计算机毕业设计房屋租赁管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

大数据 集群测试部分

查看HDFS集群状态 在浏览器里访问http://master:9870 不能通过主机名master加端口9870的方式,原因在于没有在hosts文件里IP与主机名的映射,现在只能通过IP地址加端口号的方式访问:http://192.168.1.101:9870 修改宿主机的C:\Windows\System…

2023年大学毕业生,我有话想对你说

虽然每年都说大学毕业生有多少多少,就业难,但貌似以往的经济寒冬,互联网寒冬都不如2022年2023年这么寒冷。 可以说,2022年一整年都是在裁员的声音中度过的,有的公司逐渐取消年终奖,原本熙熙攘攘的办公室&am…