【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

article/2025/10/31 0:37:16

目录

1 概述

2 基于神经网络的负荷预测(Matlab实现)

2.1 代码

2.2 结果 

2.3 回归树模型的进一步改进 

3 基于神经网络的价格预测(Matlab代码实现) 

4 阅读全文(Matlab代码)


1 概述

这个例子演示了用MATLAB建立一个短期电力负荷(或价格)预测系统。两个非线性回归模型(神经网络和袋式回归树)被校准,以预测给定温度预测、假日信息和历史负荷的每小时前日负荷。这些模型在数据上进行训练,并在2008年的样本外数据上进行测试。这些模型被证明能够产生高度准确的日前预测,平均误差在1-2%左右。能够通过MATLAB部署的DLL调用训练好的负荷预测模型。

准确的负荷预测对于公用事业的短期运营和长期规划至关重要。负荷预测会影响许多决策,包括在给定时期内承诺哪些发电机,并广泛影响批发电力市场价格。负荷和价格预测算法通常在简化形式的电价混合模型中也很突出,这是用于模拟市场和模拟能源衍生品的一些最准确的模型。市场参与者在许多交易和风险管理应用程序中也广泛使用电价预测。负荷预测会影响许多决策,包括在给定时期内承诺哪些发电机,并广泛影响批发电力市场价格。负荷预测算法通常在电价混合模型中也很突出,这是电力市场建模最准确的一类方法。市场参与者在许多交易和风险管理应用程序中广泛使用电价预测。传统上,公用事业和营销人员使用商业软件包来执行负荷预测。这些方法的主要缺点是它们是一个黑匣子,不提供如何计算负载预测的透明度。它们通常也只提供实用程序所需功能的 80-90%。在许多情况下,不可能通过现成的产品满足所有要求,例如考虑到区域负载、不同的天气模式等。


2 基于神经网络的负荷预测(Matlab实现)

2.1 部分代码

%% 利用神经网络进行电力负荷预测
% 这个例子展示了用MATLAB建立和验证一个短期的
% 本例演示了用MATLAB建立和验证短期电力负荷预测模型。这些模型考虑到了
% 考虑到多种信息来源,包括温度和
% 假期等多种信息,以构建一个日前负荷预测器。这个脚本使用
% 神经网络。%% 导入天气和负荷数据
% 所使用的数据集是一个地区2004 - 2008年的历史小时负荷和温度观测表。
% 天气信息包括干球温度和露点。
load Data\DBLoadData.mat
addpath ..\Util%% 从Excel电子表格中导入假期列表[num, text] = xlsread('..\Data\Holidays.xls'); 
holidays = text(2:end,1);%% 生成预测矩阵
% 函数*genPredictors*生成了作为模型输入的预测变量。
% 的输入。对于短期预测,这些变量包括
% * 干球温度
% * 露点
% *一天中的小时
% * 一周中的一天
% *表明是否为假日/周末的标志
% * 前一天的平均负荷
% * 前一天同一小时的负荷
% * 前一周同一小时和同一天的负荷
% 如果目标是中期或长期的负荷预测,只需输入
% 如果目标是中期或长期的负荷预测,只有一天中的小时,一周中的一天,一年中的时间和节假日可以被使用
% 确定性地使用。天气/负荷信息将需要被指定为
% 指定为一个平均数或一个分布
%% 选择预测范围
term = 'short';[X, dates, labels] = genPredictors(data, term, holidays);%% 讲数据集分为训练和测试集
% 该数据集被分为两组,一个是包括2004年至2007年数据的_训练_组,
% 另一个是包括2008年数据的_测试_组。
% 训练集包括2004至2007年的数据,测试集包括2008年的数据。
% 训练集用于建立模型(估计其参数)。测试集仅用于预测,以测试模型在样本外数据上的表现。
%++++++ 建立训练集++++++++++
trainInd = data.NumDate < datenum('2008-01-01');
trainX = X(trainInd,:);
trainY = data.SYSLoad(trainInd);%++++++创建测试集并保存以备不时之需++++++
testInd = data.NumDate >= datenum('2008-01-01');
testX = X(testInd,:);
testY = data.SYSLoad(testInd);
testDates = dates(testInd);save Data\testSet testDates testX testY
clear X data trainInd testInd term holidays dates ans num text%% 构建负荷预测模型
% 接下来的几个单元建立了一个神经网络回归模型,
% 用于给定训练数据的日前负荷预测。
% 然后,该模型被用于测试数据以验证其准确性。
%% 初始化和训练网络
% 初始化一个包含 20 个神经元的两层默认网络。使用“平均
% 绝对误差”(MAE)性能指标。然后,用
% 默认的 Levenburg-Marquardt 算法。为了提高效率,预先训练
% 除非特别强制执行重新训练,否则网络会被加载。
reTrain = false;
if reTrain || ~exist('Models\NNModel.mat', 'file')net = newfit(trainX', trainY', 20);net.performFcn = 'mae';net = train(net, trainX', trainY');save Models\NNModel.mat net
elseload Models\NNModel.mat
end%% 采用神经网络模型进行预测
% 一旦建立了模型,对独立的测试集进行预测. load Data\testSet
forecastLoad = sim(net, testX')';%% 比较预测负荷和实际负荷
% 创建一个图表来比较实际负荷和预测负荷以及
% 并计算出预测误差。除了可视化之外,还可以使用平均绝对值等指标来量化
% 预测器的性能,如平均绝对误差(MAE)、平均绝对百分比误差(MAPE)和每日峰值误差(MAPE)等指标。
% 误差(MAE),平均绝对误差(MAPE)和每日峰值预测
% 误差。
err = testY-forecastLoad;
fitPlot(testDates, [testY forecastLoad], err);errpct = abs(err)./testY*100;fL = reshape(forecastLoad, 24, length(forecastLoad)/24)';
tY = reshape(testY, 24, length(testY)/24)';
peakerrpct = abs(max(tY,[],2) - max(fL,[],2))./max(tY,[],2) * 100;MAE = mean(abs(err));
MAPE = mean(errpct(~isinf(errpct)));fprintf('平均绝对百分比误差 (MAPE): %0.2f%% \n平均绝对误差 (MAE): %0.2f MWh\n每日峰值 MAPE: %0.2f%%\n',...MAPE, MAE, mean(peakerrpct))%% 检查误差的分布情况
% 除了报告标量误差指标(如MAE和MAPE)外,误差分布图和绝对误差也有助于建立
% 误差和绝对误差的分布图可以帮助建立
% 围绕预测者的表现建立直觉
%% 可视化图像
figure;
subplot(3,1,1); hist(err,100); title('误差分布');
subplot(3,1,2); hist(abs(err),100); title('绝对误差分布');
line([MAE MAE], ylim); legend('误差', 'MAE');
subplot(3,1,3); hist(errpct,100); title('绝对百分比误差分布');
line([MAPE MAPE], ylim); legend('误差', 'MAPE');%% 误差的集体分析
% 为了进一步了解预报器的性能,我们可以
% 为了进一步了解预报员的表现,我们可以按一天中的每一小时、
% 一周中的每一天和一年中的每一个月来直观地显示预报误差百分比。
% 年的月份
[yr, mo, da, hr] = datevec(testDates);%% 按小时计算
clf;
boxplot(errpct, hr+1);
xlabel('小时'); ylabel('误差百分比的统计');
title('按小时划分的预测误差统计数据');% 按工作日
figure
boxplot(errpct, weekday(floor(testDates)), 'labels', {'Sun','Mon','Tue','Wed','Thu','Fri','Sat'});
ylabel('误差百分比统计');
title('按工作日划分的预测误差统计明细表');% 按月份
figure
boxplot(errpct, datestr(testDates,'mmm'));
ylabel('误差百分比统计');
title('按月份划分的预测误差统计细目表');%% 制作每周图表
%在测试集上每周建立预测负荷与实际负荷的对比。
generateCharts = true;
if generateChartsstep = 168*2;for i = 0:step:length(testDates)-stepclf;fitPlot(testDates(i+1:i+step), [testY(i+1:i+step) forecastLoad(i+1:i+step)], err(i+1:i+step));title(sprintf('MAPE: %0.2f%%', mean(errpct(i+1:i+step))));snapnowend
end

2.2 结果 

  

 

 

2.3 回归树模型的进一步改进 

 

3 基于神经网络的价格预测(Matlab代码实现) 

 

 

 

4 完整Matlab代码实现


http://chatgpt.dhexx.cn/article/URDUU6u4.shtml

相关文章

LSTM-多变量-单时间步-pytorch-负荷预测(多时间步采用滚动预测)

问题描述 使用LSTM做负荷预测问题&#xff0c;数据共计456行&#xff0c;每一行3个特征&#xff0c;用过去N个时间段特征&#xff0c;预测未来第N1个时间点的特征&#xff0c;数据格式如下&#xff0c;用00:00:00-04:00:00的[feature1&#xff0c;feature2&#xff0c;feature…

【负荷预测、电价预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Charles抓包web、手机、小程序配置

一、下载地址 二、web抓包 Charles Web抓包&#xff0c;启动Charles会自动与浏览器设置成代理&#xff0c;不需要进行过多的设置。接下来就是通过浏览器发送网络请求&#xff0c;Charles就会直接抓取到这些信息和响应信息。 1、抓取HTTPS协议 Charles配置 点击顶部菜单栏【He…

Charles抓包使用及常用问题

简介 Charles其实是一款代理服务器&#xff0c;通过成为电脑或者浏览器的代理&#xff0c;然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的&#xff0c;能够在Windows&#xff0c;Mac&#xff0c;Linux上使用&#xff0c;安装Charles的时候要先装好Java环境。 …

Charles抓包显示<unknown>解决方案

上篇 &#xff1a;Charles抓包微信小程序数据 charles抓包会出现&#xff0c;请求前都加了锁&#xff0c;具体地址为<unknown>的情况。 解决<unknown>问题 首先电脑上需要安装charles&#xff0c;然后需要设置手机上的WiFi设置&#xff0c;修改配置中的代理设置&a…

charles抓包配置具体操作步骤

Charles主要功能 截取Http和Https网络封包 支持重发网络请求&#xff0c;方便后端调试 支持修改网络请求参数 支持网络请求的截获并动态修改 支持模拟慢速网络 Charles下载安装 charles下载地址&#xff1a;https://www.charlesproxy.com/download/ 注&#xff1a; 浏览…

Charles抓包https接口指南

Charles抓包https接口 作为一名iOS攻城狮&#xff0c;如果你没有听说过青花瓷这款软件&#xff0c;我只能说你还是回家洗洗睡吧。 最近在写一个需求&#xff0c;服务端不知道怎么设计接口。我只好找来了一个又类似功能的app&#xff0c;想要一睹芳容。于是主角Charles软件开始…

Charles抓包 - 手机

目的&#xff1a;抓IOS、Android端接口数据&#xff0c;保证IOS、Android和电脑在同一网络下&#xff1a; 1、首先需要将 Charles 的代理功能打开&#xff0c;在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”&#xff0c;填入代理端口 8888&#xff0c;并且勾上…

抓包工具-Charles

目录 1.环境搭建 2.Charles的界面&功能介绍 2.1提供两种封包视图&#xff1a;Structure和Sequence 2.2模拟网速 2.3重复发送请求 2.4修改服务器返回内容 2.4.1断点功能Breakpoints 2.4.2重写功能Rewrite 2.4.3重定向MAP&#xff08;后面在介绍&#xff09; 2.5修改…

Charles抓包微信小程序数据

本文中使用的是mac上的抓包工具charles进行抓包&#xff0c;手机是apple11。 Charles 上的设置&#xff1a; 要截取 iPhone 上的网络请求&#xff0c;我们首先需要将 Charles 的代理功能打开。 在 Charles 的菜单栏上选择 Proxy – Proxy Settings 点击进入如下界面 填入代…

【测试】Charles抓包

一、Charles 简介 Charles 是一款抓包软件&#xff0c;更专业&#xff0c;可以抓取电脑上所有软件发的包。 抓包原理&#xff1a;charles 自动创建了一个代理&#xff0c;发送数据都要经过代理&#xff0c;同时把所有 路过的数据全部展示出来。 Charles激活码计算器&#xff1…

如何使用Charles抓包,手机、电脑web端。Charles抓包看这一篇就够了

直接分步骤来讲了。 下载Charles&#xff1a; Charles下载地址 对软件进行常规操作&#xff1a; 一个好用的工具地址 打开网址之后&#xff0c;输入一个名称&#xff0c;然后点击“生成”即可。生成之后如下图&#xff1a; 安装软件就不多说了。装完之后打开&#xff0c;点击H…

抓包工具 之 Charles 的使用

目录 一、下载Charles 二、绿化Charles 1. 打开绿化网址 2. 生成注册码 3. 打开Charles 三、功能说明 四、代理设置 1. proxies 2. options 3. macOS 五、安装信任证书 1. 安装证书 2. 在钥匙串中找到证书 3. 双击设置信任 六、电脑接口代理开启 1. 开启 2. 问…

Charles 抓包工具教程(二) Charles 抓包HTTPS请求

本文为在霍格沃兹测试开发学社中学习到的一些技术&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ Charles 抓包HTTPS请求 一、MacOS 安装 Chares 证书二、Charles 设置 HTTPS 代理三、客户端(安卓手机)安装 Charles 证…

Charles抓包工具实战教程(完结)

Charles抓包工具测试实战教程 文章目录 Charles抓包工具测试实战教程学习准备目标文章介绍Charles介绍Charles是什么?Charles工作原理?Charles能做什么?Charles简介 Charles安装和配置Charles组件介绍Charles主导航栏介绍Charles代理配置Charles访问控制windows代理设置mac代…

charles抓包工具使用教程

声明&#xff1a;本文转载自https://www.cnblogs.com/Clairewang/p/Charles.html 一、Charles官网下载链接&#xff1a;https://www.charlesproxy.com/download/ 二、抓包步骤&#xff1a; 1、安装Charles&#xff0c;并打开 2、电脑设置代理端口&#xff1a;打开charles->…

手把手教你如何使用Charles抓包

目录 一、为什么使用charles 二、下载地址 三、web抓包 四、App抓包 五、Charles过滤 六、弱网测试 七、打断点篡改数据 八、修改请求数据 九、重复发送请求 一、为什么使用charles 前几天因为需要通过抓包定位问题&#xff0c;打开了尘封已久的fiddler&#xff0c;结…

charles抓包(别名:茶壶)

一、Charles简介 Charles 是PC端的一款网络抓包工具&#xff0c;在做移动开发时&#xff0c;我们为了调试与服务器端的网络通讯协议&#xff0c;常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器&#xff0c;使得所有的网络访问请求都通过它来完…

【干货】手把手教你如何使用Charles抓包

一、为什么使用charles 前几天因为需要通过抓包定位问题&#xff0c;打开了尘封已久的fiddler&#xff0c;结果打开软件后什么也干不了&#xff0c;别说手机抓包了&#xff0c;打开软件什么请求也抓不到。很多时候都是如此&#xff0c;如果一个方案不行&#xff0c;肯定要有替…

手把手教你Charles抓包工具使用

Charles简介 Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器&#xff0c;当浏览器连接Charles的代理访问互联网时&#xff0c;Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信&#xff0c;这些包括request, response和HTTP…