前言
近日受友人所托助力电力负荷预测试验,本篇结合《巧借循环对神经网络输出值控制得理想值【MATLAB】》(使用部分数据(由于复现文章导致数据不全)进行原理上的数据模拟进行试验,整体框架可供大家参考。
BP流程
基于误差反向传播(Back Propagation,简称BP)可以看成正向传播信息与反向传播信息两个部分。当数据通过建立的BP神经网络模型,其输出值与实际值的误差大于我们规定的误差时,数据将反向传播。BP算法核心原理就是对各个节点输入变量求偏导,使得输出值与实际值误差达到最小,从而重新赋予全值与阈值。数据从输出层传送到中间的隐含层来调整其权值与阈值,并在输入层将权值与阈值重新定义再次正向传播数据。
直至误差值小于规定值时,完成-组历史数据的学习。
基本流程:
- 开始
- 输入数据矩阵
- 数据预处理,并进行分类
- 建立网络
- 采用BP算法进行训练,形成模型网络权值
- 基于误差反向传播完成负荷预测
- 输出预测结果
- 结束
仿真
试验数据表:
数据的选择和处理:
(1) 数据的选取与预处理
(2) 训练样本的选取
(3) 网络的初始化
神经网络算法模型
(1) 数据计算预处理
(2) 生成的预测矩阵
(3) 拆分数据集以创建培训和测试集
(4) 基于神经网络模型的预测
(5)产生的周线图\
demo 实现
整体框架可参考前言中所介绍,这里逐步介绍一下:\
- xlsread读取记录表中的数据并save方便调用
- 构造一个“死循环”:while 1 == 1 ---- end 结构
- 如下制作虚拟数据
new_data2014 = 1.14.*old_datas; new_data2015 = 1.16.*old_datas; new_data2016 = 1.18.*old_datas;
- 使用mapminmax 进行数据归一化(-1 1)之间
- 选择输入和输出
data_x = [X(1:72,3:5)';X(1:72,7:10)']; data_y = X(1:72,6:6)';
- 搭建网络
- 构造2017年数据,并重复第4和5步计算处理2017年数据
- 通过sim 函数得到预测值(test_Y)
- 计算预测值和真值的平均绝对误差
mae = mean(abs(真值 - 预测值))
- 作判断if(当mae< 0.0176)
- 满足时跳出while 1 ==1 ----- end循环
- 存储 BP训练的网络(save MyNet.mat net)
- 新建.m文件并调用网络(MyNet.mat)
- 绘制2017年数据