一、简介
BP网络(Back Propagation),是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
BP神经网络模型BP网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。
2 BP神经网络模型及其基本原理
3 BP_PID算法流程
二、源代码
function main()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
month = 12; %训练月份
day_start = 5; %开始日期
day_len = 5; %训练天数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
file_path = '2018负荷预测数据';
map_maxmin = [];
output = [];
for day = day_start:1:(day_start + day_len - 1)
[raw_data, raw_max ,raw_min] = read_load_data_from_excel(file_path, month ,day);
data_temp = my_map(1, raw_data, raw_max, raw_min, 1, 0);
map_maxmin = cat(1, map_maxmin, [0 1]);
output = cat(1, output, data_temp);
target_day = day + 1;
end
[target_data, target_max, target_min] = read_load_data_from_excel(file_path, month ,target_day);
t_d = my_map(1, target_data, target_max, target_min, 1, 0);
net = newff(map_maxmin, [6,40,1], {'tansig','logsig','purelin'}, 'traincgf');
net.trainParam.epochs = 1000000;%设置最大迭代次数
net.trainParam.goal = 0.001;%设置神经网络的训练的目标误差
net.trainParam.lr = 0.1;%学习率
goal_net = train(net, output, t_d);%训练神经网络,返回训练好的网络和误差记录
function [output] = my_map(type, raw_data, raw_data_max, raw_data_min, max, min)
if type ~= 0
output = my_pos_map(raw_data, raw_data_max, raw_data_min, max, min);
end
if type ~= 1
output = my_rev_map(raw_data, raw_data_max, raw_data_min, max, min);
end
三、运行结果
四、备注
完整代码或者代写添加QQ1575304183
往期回顾>>>>>>