基于BP神经网络的电力负荷预测附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

1 BP神经网络原理

1.1BP网络的学习过程

BP网络的学习过程,由信息的正向传播和误差的反向传播阶段组成。正向传播中,输入层各神经元接收外界输入信息,并传递给隐含层(可以是多层)进行信息处理,最后传向输出层,每一层神经元的状态只影响下一层神经元的状态。当实际输出与期望输出不符时,说明网络结构的权值还不够合理,这时进入误差的反向传播阶段,即将误差信号沿原通路逐层反传计算,按误差梯度下降的方法修正各层权值,从而使误差最小。周而复始的这一学习过程,是各层权值不断调整的过程,它一直进行到网络输出误差达到期望值,或者预先设定的学习次数为止。

图3为BP神经网络结构图。

BP网络将一层节点的输出传送至另一层时,是通过调整权系数来增强或削弱这些输出的作用的。除了输入层的节点外,隐层和输出层节点的净输入是前一层节点输出的加权和。每个节点的激活程度由其输入信号、激活函数和节点的偏值(阈值)决定。

1.2BP网络算法

1)网络初始化。置所有加权系数为最小的随机数。将BP网络的各个权重Wij和θj阈值初始化为介于[-1,1]中的随机数。设置最大迭代次数M和目标误差值,网络误差平方和SSE的初值为0。

2)给定输入输出训练集x及T。

3)输入信号正向传播。计算隐含层和输出层各神经元相对于前一层i的净输入向量Ij:

 

4)计算并检验网络误差平方和SSE:

其中,Oj为样本的期望输出。

5)误差反向传播。根据样本x所对应的期望输出向量Oj,计算输出层的各神经元的误差向量ERRj:

对从最后一个到第一个隐含层的神经元j,根据后一较高层中连接到j的所有神经元的误差加权和来计算误差向量ERRj:

6)调整权值及阈值。将网络中的各个权重向量Wij和阈值向量θj按照下式进行调整:

 式中,a为学习率。

7)误差是否满足要求,若不满足,返回步骤2直到误差满足或训练结束为止。

1.3BP网络的缺陷和改进

BP网络具有很强的生物背景,是目前最成熟的人工神经网络。虽然BP网络得到了广泛的应用,但自身也存在一些缺陷和不足。

1)网络的学习速率是固定的,因此网络的收敛速度慢,即使一个比较简单的问题,也需要几百甚至几千次的学习才能收敛,为此可采用变步长法加以改进。

2)BP算法不能保证权值收敛到误差平面的全局最小点,这是因为采用梯度下降法可能产生一个局部极值,为此可采用附加动量法来解决。

3)在学习过程中,系统可能会陷入某些局部最小值,或某些静态点,或是在这些点之间振荡。这种情况下系统误差很大,为此可引入惯性项加以避免。

4)网络的学习和记忆具有不稳定性,也就是说,网络对以前的权值和阈值是没有记忆的。如果增加了学习样本,训练好的网络必须同新加入的学习模式一起重新训练。

所以,现提出以神经网络为基础,利用和声搜索算法全局寻优和强鲁棒性特点,优化BP网络连接权和阈值。这样,先得到权值或阈值的一个范围,在此基础上训练网络就可以在相当大的程度上避免局部变量极小,训练次数和最终权值或阈值也可以相对稳定,训练速度也大大加快。

⛄ 部分代码

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

end

function [out] = my_pos_map(raw_data, raw_data_max, raw_data_min, max, min)

    for i = 1:length(raw_data')

        out(i) = (max - min) * (raw_data(i) - raw_data_min) / (raw_data_max - raw_data_min) + min;

    end

end

function [out] = my_rev_map(raw_data, raw_data_max, raw_data_min, max, min)

    for i = 1:length(raw_data')

        out(i) = (raw_data(i) - min) * (raw_data_max - raw_data_min) / (max - min) + raw_data_min;

    end

end

⛄ 运行结果

⛄ 参考文献

[1]马进, 黄鹏, 刘卫亮,等. 基于HS—BP预测模型的光伏发电系统MPPT研究[J]. 仪器仪表与分析监测, 2015(2):6.

[2]王志浩,孙先波. 基于遗传算法优化BP神经网络的风速预测[J]. 电力设备管理, 2020(8):3.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值