基于人工神经网络的空压机负荷预测(Matlab代码实现)

简介: 基于人工神经网络的空压机负荷预测(Matlab代码实现)

💥1 概述

本研究的目的是预测压缩空气系统的电气负载曲线,这对于行业从业者和软件提供商开发更好的负载管理和前瞻调度程序的实践和工具很有价值。使用两层前馈神经网络和长短期记忆两个人工神经网络来预测空压机的电气负荷。

📚2 运行结果

2.1 算例1

2.2 算例2

2.3 算例3

部分代码:

close all
clear all
% load data
load('data/ac1Data.mat')
% assign data to variables
Load = ac1.load;
Weekday = weekday(ac1.DATE);
Minute = minute(ac1.Time);
Hour = hour(ac1.Time);
Pressure = ac1.LinePressure_bar_;
Temp1 = ac1.InletAirTempC;
Temp2 = ac1.DischargeTemperature_degC_;
% form input 
exoData = [Weekday,Minute,...
    Hour,Pressure,Temp1,Temp2];
% define working day index
workingDayIdx = and(Weekday >1, Weekday < 7); 
% define non-working day index
nonworkingDayIdx = or(Weekday ==1,Weekday == 7); 
% data pre-process/apply hampel filter 
workingExoData = exoData(workingDayIdx,:);
workingLoad= hampel(Load(workingDayIdx),5,2);
nonworkingExoData = exoData(nonworkingDayIdx,:);
nonworkingLoad = hampel(Load(nonworkingDayIdx),5,2);
% define working day test set
inputTestSeries1 = num2cell(workingExoData(end-200:end,:)',1);
targetTestSeries1 = num2cell(workingLoad(end-200:end)');
% define non-working day test set
inputTestSeries2 = num2cell(nonworkingExoData(end-200:end,:)',1);
targetTestSeries2 = num2cell(nonworkingLoad(end-200:end)');
% load pre-trained networks
load('data/ac1_w_ffnn.mat') % for working days
load('data/ac1_nw_ffnn.mat') % for non-working days
netsw = removedelay(netw);
netsn = removedelay(netn);
% forecast values using pre-trained networks
[xsw,xisw,aisw,tsw] = preparets(netsw,inputTestSeries1,{},targetTestSeries1);
ys_w = netsw(xsw,xisw,aisw);
[xsn,xisn,aisn,tsn] = preparets(netsn,inputTestSeries2,{},targetTestSeries2);
ys_n = netsn(xsn,xisn,aisn);
% timeshfit forecasts back to the original positive -- see 'removedelay' documentation
yhat_w = cell2mat(ys_w(end-96:end-1));
y_w = workingLoad(end-(length(yhat_w)-1):end)';
yhat_n = cell2mat(ys_n(end-96:end-1));
y_n = nonworkingLoad(end-(length(yhat_n)-1):end)';
% calculate evaluation metrics
workingDayRMSE = sqrt(mean((y_w - yhat_w).^2));  % calculate root mean squared error for working day forcast
nonworkingDayRMSE = sqrt(mean((y_n - yhat_n).^2));  % calculate root mean squared error for non-working day forcast
RMSE = [workingDayRMSE;nonworkingDayRMSE];
workingDayMASE = mean(abs(y_w-yhat_w))/(mean(abs(y_w(2:end)-y_w(1:end-1)))); % calculate mean absolute scaled error for working day forecast
nonworkingDayMASE = mean(abs(y_n-yhat_n))/(mean(abs(y_n(2:end)-y_n(1:end-1)))); % calculate mean absolute scaled error for non-working day forecast
MASE = [workingDayMASE;nonworkingDayMASE];
mdl_w = fitlm(y_w,yhat_w);
workingDayR2 = mdl_w.Rsquared.Ordinary; % get R2 between observed and predicited for working day forecast
mdl_n = fitlm(y_n,yhat_n);
nonWorkingDayR2 = mdl_n.Rsquared.Ordinary ;% get R2 between observed and predicited for non-working day forecast
R2 = [workingDayR2;nonWorkingDayR2];
T =  table (RMSE,MASE,R2,'RowNames',{'Working Days';'Non-working Days'}); % construct output table
T.Properties.DimensionNames{1} = 'Mode';
figure
subplot(2,2,1)
plot(y_w)
hold on
plot(yhat_w,'.-')
hold off
legend(["Measured" "Predicted"])
xlabel("Timestep (15-minutes)") 
ylabel("Electrical Load (kW)")
title(["Forecast using FFNN";"Compressor 1 - Working Day"])
subplot(2,2,3)
stem(yhat_w - y_w)
xlabel("Timestep (15-minutes)")
ylabel("Error (kW)")
title("RMSE = " + workingDayRMSE)
subplot(2,2,2)
plot(y_n)
hold on
plot(yhat_n,'.-')
hold off
legend(["Measured" "Predicted"])
xlabel("Timestep (15-minutes)") 
ylabel("Electrical Load (kW)")
title(["Forecast using FFNN";"Compressor 1 - Non-Working Day"])
subplot(2,2,4)
stem(yhat_n - y_n)
xlabel("Timestep (15-minutes)")
ylabel("Error (kW)")
title("RMSE = " + nonworkingDayRMSE)
writetable(T,'results/ac1_ffnn_metrics.csv','WriteRowNames',true)
saveas(gcf, 'results/ac1_ffnn_result.png')


🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。


[1]Da-Chun Wu, Babak Bahrami Asl, Ali Razban, Jie Chen (2020) Air Compressor Load Forecasting using Artificial Neural Network


相关文章
|
18天前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
117 0
|
18天前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
14天前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
220 1
|
14天前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
|
16天前
|
机器学习/深度学习 并行计算 算法
【无人机避障三维航迹规划】基于人工原生动物优化器APO的复杂城市地形下无人机避障三维航迹规划研究(可以修改障碍物及起始点)(Matlab代码实现)
【无人机避障三维航迹规划】基于人工原生动物优化器APO的复杂城市地形下无人机避障三维航迹规划研究(可以修改障碍物及起始点)(Matlab代码实现)
111 3
|
10月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
226 17
|
10月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
178 10
|
10月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
10月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
187 10
|
10月前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。

热门文章

最新文章