【BP预测】基于和声搜索算法优化BP神经网络实现风速数据预测附matlab代码

简介: 【BP预测】基于和声搜索算法优化BP神经网络实现风速数据预测附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

为了提高BP神经网络预测短期风速的精度,本文提出了一种利用和声搜索算法优化的BP神经网络的模型(HSBP).用遗传算法获得BP神经网络的初始权值和阈值后反馈给BP神经网络,利用新建立的网络对我国某电场采样时间间隔为10min的不同两台电机的超短期风速序列建模,结果表明HSBP方法的预测精度优于传统BP神经网络.

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网络连接权和阈值。这样,先得到权值或阈值的一个范围,在此基础上训练网络就可以在相当大的程度上避免局部变量极小,训练次数和最终权值或阈值也可以相对稳定,训练速度也大大加快。

2 和声搜索算法优化BP神经网络原理

1)初始化算法参数。算法参数包含初始化和声记忆库大小(HarmonyMemorySize,HMS)、和声记忆库保留概率(HarmonyMemoryConsideringRate,HMCR)、微调扰动率(PitchAdjustingRate,PAR)、迭代次数(IterationNumber,IN)。HMS的大小是HS的一个重要参数,HS之所以具有更强的全局搜索能力,很大程度上依赖于HMS的存在,一般来说,HMS越大,找到全局最优区域的能力越强。但由于HS是多点开始的,随着HMS的增大,计算量将会变大,从而影响到达最优解的速度。HMCR是和声搜索的另一个重要因素,其取值范围是0到1之间的数,它决定每次迭代过程中新解产生的方式。在和声搜索算法中,因新解产生时每个变量都依赖于HMCR,所以HMCR应取较大的值。音调调解率PAR在和声搜索算法中起到控制局部搜索的作用,它可使搜索逃离局部最优,其值一般取0.1至0.5之间。通常取HMS=5,HMCR=0.9,PAR=0.3,IN=50,带宽bw=0.01。

2)和声记忆库初始化及目标函数的选取。随机产生一个初始群体放入和声记忆库,这个群体中的每个个体对应着神经网络的一组权值和阈值。本算法采用的目标函数是网络输出与期望输出之间的误差平方和ERRi,该值越低则表明个体越优越。

3)产生新解。每次可以通过三种机理产生一个新解:①学习和声记忆库中的分量;②随机选择产生音调;③对①、②进行微调扰动产生。新解的变量有HMCR的概率来自HM的一个值,有1-HMCR的概率来自HM之外的任意一个值。如果新的和声来自和声记忆库HM,要对其进行音量微调,操作如下:

Xnew=Xnew+rand*bw

其中,rand为(0,1)之间的随机数,bw为带宽。

4)更新记忆库。若新解优于记忆库中最差解,则用新解替换最差解,得到新的记忆库。

5)判断是否满足终止条件,若满足,停止迭代,输出最优解;否则,重复步骤3,4。

6)利用HS改进的权值和阈值进行神经网络的训练。

⛄ 部分代码

clc;clear all;close all

tic

speed04=xlsread('speed201104')';

% speed05=xlsread('speed201105')';

% speed=[speed04,speed05];

sample=speed04(1,133:144:end)';

% sample=speed04(1,1:3:end);

N=length(sample);

for i=1:6

   data(i,:)=sample(i:i+N-6);   %构造data

end

input_train=data(1:5,1:end);

output_train=data(end,1:end);

%节点个数

inputnum=5;

hiddennum=4;

outputnum=1;

%样本输入输出数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);

for z=1:10

%构建网络

net=newff(inputn,outputn,hiddennum);


n=8

[best,net]=BHS(n,inputnum,hiddennum,outputnum,net,inputn,outputn);


x=best';

%% BP网络训练

w1=x(1:inputnum*hiddennum);

B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);

w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);

B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);


net.iw{1,1}=reshape(w1,hiddennum,inputnum);

net.lw{2,1}=reshape(w2,outputnum,hiddennum);

net.b{1}=reshape(B1,hiddennum,1);

net.b{2}=B2;

%网络进化参数

net.trainParam.epochs=100;

net.trainParam.lr=0.1;

net.trainParam.goal=0.00001;


%网络训练

[net,per2]=train(net,inputn,outputn);

%% 预测接下来5个值

newx=sample(end-4:end);

new_x=mapminmax('apply',newx,inputps);

cn=sim(net,new_x);

t0(z)=mapminmax('reverse',cn,outputps);

end

t0'

realvalue=3.3

t=mean(t0)

%预测值的MSE、MAPE

newMSE=mean((t-realvalue)^2)

newRMSE=sqrt(newMSE)

MAE=mean(abs(t-realvalue))

newMAPE=mean(abs((t-realvalue)/realvalue)*100)

toc

⛄ 运行结果

⛄ 参考文献

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

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

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
321 0
|
2月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
195 8
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
205 8
|
2月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
357 0
|
2月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
179 0
|
2月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
169 0
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
288 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
238 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章