PSO-BP神经网络(共5篇)
PSO-BP神经网络 篇1
摘要:传统网络流量预测采用线性方法进行处理,不能很好地满足要求。根据互联网通信量的自相似性,提出一种基于BP网络的粒子群优化PSO-BP算法进行网络流量预测,用PSO算法对BP网络节点的初始权值进行优化,并利用历史记录训练BP网络,采用Matlab进行仿真。试验结果表明,PSO-BP算法加快了BP网络收敛速度,训练结果的均方误差函数mse在5%以内,提高了网络流量预测精度。
关键词:BP算法,粒子群优化,网络流量,流量预测
0 引 言
互联网通信量的测量是人们研究互联网络的一个工具,同时是网络性能分析和网络规划设计的基础。网络流量测量可以用来检测可能的性能问题,有助于跟踪站点相互传输内容中的等待时间,对高性能网络协议、网络拓扑结构、预处理测量数据及负载均衡具有重要意义。同时针对网络流量用户网络行为的建模以及预测对于改进入侵检测,提前发现网络的异常或者攻击行为提供了一个方向。
1 网络流量模型
互联网通信量的一个重要性质是自相似性。自相似性指在不同的标度下,分布曲线的形状是相似的、不可区分的。网络上的数据流没有一个本质的突发长度,在每个时间规模上,从微秒到分钟,从分钟到小时,突发期由一些突发子周期构成,这些突发子周期又由一些更小的突发子周期构成,这就是互联网通信量的自相似性。但一些传统模型通常假设网络流量满足线性关系,然后用线性递推与组合来满足关系,而实际网络流量数据包含很多非线性因素,为了延长可预见期和提高预测精度,有必要在网络流量预测中采用非线性模型。
一个时间连续的随机过程被称为自相似随机过程,X(λt)=dλHX(t),t≥0,其中λ>0,0<H<1,=d分布意义上的相等,H自相似参数或Hurst参数。分形布朗运动FBm过程是一个典型的自相似随机过程,已成功应用于网络业务中。
实际上,网络流量的分析已经被严格限制为离散时间的二阶或近似自相似过程,定义如下:令X={Xt;t=0,1,2,…}为一个协方差平稳的随机过程,其均值为μ,方差为δ2,自相关函数为r(k),k≥0,r(k)~k-β,k→∞,0<β<1,注意到∑kr(k) = ∞被称为随机过程的长相关性。对于m=1,2,3,…,令X(m)={X
2 粒子群优化BP神经网络算法
用数学模型来描述网络流量,虽然能对未来时刻的网络流量进行一定的预测,但要更加灵活、有效地进行流量预测还需要采用人工智能的一些方法。同时网络流量行为随着时间和地域的不同会呈现出很大的变化,理想的预测方式应该是自适应的,而且能够给用户提供足够的可信信息。
2.1 BP神经网络算法
BP算法实质是将一输入/输出问题变为一个非线性优化问题,即以网络连接权矩阵W为变量,误差函数E(W)为目标的多元极小值问题。通常由输入层、输出层和隐含层构成,通过一定容量样本的学习和训练,确定网络有关参数。
BP网络工作过程包括信息正向传播和误差反向传播,两个过程反复交替,直到收敛为止。正向传播过程是学习样本、网络权值w从输入层→隐含层→输出层逐次算出各层节点的输出。第k层第j个神经元的输入输出关系为:
其中,j=1,2,…,nk,k=1,2,…,M,f(x)为激活函数,w
信息反向传播过程由实际输出与计算输出构成的误差函数E(wk),采用梯度下降法调节网络权值,使误差函数达到最小。在训练过程中为避免出现数值震荡,常加入动量项,w(k+1)=w(k)-η∂E/∂W(k)+αΔw(k),η为学习效率,α为动量项系数。
模型通过样本进行学习调整,网络权重达到输入输出之间的匹配,网络调整后的权矩阵也为非线性函数的隐含形式。调整后的网络即可以用于预测。
BP网络的特点:BP网络具有很好的逼近非线性映射的能力,但收敛速度慢;局部极值;难以确定隐含层和隐节点的个数。为此对BP算法进行改进,引入粒子群优化算法对BP初始权值进行优化,加快BP网络收敛。
2.2 粒子群优化算法
粒子群优化PSO(Particle Swarm Optimization)算法是基于群智能的全局优化技术,它通过粒子间的相互作用,对解空间进行智能搜索,从而发现最优解。PSO方法首先生成初始种群,即在可行解空间中随机初始化一群粒子,每个粒子都为寻优问题的一个可行解,并用某个函数计算出相应的适应值以确定是否达到寻优目标。每个粒子将在解空间中运动,并由一个矢量决定其运动方向和位移。PSO算法需要初始化一群随机粒子(随机解),然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解称为个体极值(pbest)。另一个是整个种群目前找到的最优解,这个解称为全局极值 (gbest)。
PSO算法主要步骤:(D维空间中,有N个粒子)
1) 粒子i位置:
2) 粒子i速度:
3) 粒子i个体极值点位置:
4) 种群的全局极值点位置:
粒子i的第n维速度和位置更新公式:
vin(t+1)=w*vin(t)+c1*r1*(pbestin(t)-xin(t))+c2*r2*
(gbestn-xin(t))xin(t+1)=xin(t)+vin(t+1) (5)
c1,c2-学习因子,经验值取c1=c2=2,调节学习最大步长,r1,r2—两个随机数,取值范围(0,1),以增加搜索随机性,w—惯性因子,非负数,调节对解空间的搜索范围;
5) 检查结束条件,若满足则结束优化,否则t=t+1,转。结束条件为寻优达到最大进化代数Tmax或评价值小于给定精度ε。
2.3 粒子群优化BP神经网络
为了改善BP网络学习速度慢和局部收敛性等缺陷,采用粒子群算法与神经网络相结合的预测模型。算法过程如下:粒子开始搜索时随机产生[-1,1]的初始权值,作为粒子的初始位置,神经网络学习过程主要是新权值的更新过程,PSO利用公式不断更新粒子的速度和位置,神经网络的权值与粒子的位置相对应,算法的最终结果得到一个权值矩阵,对应PSO一个最优位置。在此基础上,再用BP算法对上面得到的网络参数进一步精确优化,直至搜索到最优网络参数为止,此时即可得到精确的最优参数组合。由于粒子群算法代替了神经网络的初始寻优,网络仅在已接近最优解的基础上进行参数寻优,从而有效地提高了网络的寻优精度和速度。
用粒子群算法训练BP网络时,定义粒子群的位置向量X(t)的元素是BP网络的全体连接权和阈值。首先初始化位置向量X(t),然后用粒子群算法搜索最优位置,使均方误差指标(适应值)达到最小。
基于PSO的BP网络学习算法流程如下:
1) 选定粒子数m,阈值,最大进化代数Tmax,c1、c2和w,初始化X和V为(0,1)间随机数;
2) 根据PSO算法进行计算;
3) 将优化后的网络权值和阈值作为BP算法的网络初始权值和阈值;
4) 进行BP算法直到网络达到性能指标,保存权值和阈值。
3 流量预测模型
3.1 BP神经网络结构
为了对网络流量进行预测,通常将其表述成一个随机过程。预测问题可以表述为对于给定当前以及过去时刻的观察值,预测将来时刻的值。
在本算法中BP神经网络采用输入层节点(其为预测日前七天的网络实际流量)为7,隐含层1节点为5,隐含层2节点为5,输出层节点(预测日的网络流量)为1,网络结构采用四层结构,即7×5×5×1(如图1所示)。
3.2 PSO粒子群优化参数设定
· 惯性权重w 用于控制过去速度对现在速度的作用大小,从而影响粒子的全局和局部的搜索能力。较大的惯性权重有利于全局搜索,较小的惯性权重则有利于局部的精确搜索。因此必须恰当地选择权重,使系统同时具有较好的全局和局部搜索能力,这样可以用较少的进化代数找到一个精确的最优解,取[0.4,0.9]可以得到较好的结果。
· 粒子数 粒子数主要和搜索空间有关。根据BP网络结构确定需要权值为60,即粒子在60维空间中搜索。
· 适应度函数 sphere函数其表达式为
3.3 BP神经网络数据预处理
归一化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。同时由于奇异样本数据存在所引起的网络训练时间增加,并可能引起网络无法收敛,故对于训练样本存在奇异样本数据的数据集在训练之前,最好先进行归一化,若不存在奇异样本数据,则不需要事先归一化。
本算法中使用Matlab提供的标准归一化函数premnmx、postmnmx、tramnmx。premnmx函数对神经元训练的样本数据进行归一化,对要进行预测的样本数据在进行仿真前,必须要用tramnmx函数进行事先归一化处理,然后才能用于预测,最后的仿真结果要用postmnmx进行反归一,这时的输出数据才是所需要的预测结果。
3.4 BP神经网络传输函数
神经元的传输函数选用双曲正切函数及对数正切函数:
以logsig或tansig函数作为隐含层激活函数,分别使用这两种函数作网络训练。
4 算法Matlab实现
4.1 PSO算法实现
function Solution=PSO(W1)
%……初始化种群的个体(可以在这里限定位置和速度的范围)
%……先计算各个粒子的适应度,并初始化Pi和Pg
for i=1:N
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
pg=x(1,:); %Pg为全局最优
for i=2:N
if fitness(x(i,:),D)<fitness(pg,D)
pg=x(i,:);
end
end
%--进入主要循环,按照公式依次迭代,直到满足精度要求
for t=1:MaxDT
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:),D)<p(i)
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
if p(i)<fitness(pg,D)
pg=y(i,:);
end
end
Pbest(t)=fitness(pg,D);
end
Solution=pg′
%……算法结束
适应度函数
%适应度函数源程序,本例中采用适应函数sphere
function result=fitness(x,D)
sum=0;
for i=1:D
sum=sum+x(i)^2;
end
result=sum;
4.2 BP神经元网络算法实现
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
net=newff(minmax(pn),[1,5],{′logsig′ ′tansig′ ′purelin′},′trainlm′);
%输出输入接点范围
net.inputs{1}.range=[0 1 0 1 0 1 0 1 0 1 0 1 0 1];
net.IW{1}%赋初值来源PSO
net.LW{2,1}%赋初值来源PSO
p3=p3' %预测数据输入
p3n=tramnmx(p3,minp,maxp);
a3n=sim(net,p3n);
a3=postmnmx(a3n,mint,maxt)
5 仿真实验结果及结论
5.1 数据来源
本测试数据来源于alia.org.au的日志文件,共385组数据(如图2所示)。
5.2 预测结果
预测结果如图3,图4所示。
5.3 预测误差
贝叶斯正则化方法是通过修正神经网络的训练性能函数来提高推广能力的。一般情况下,神经网络的训练性能函数采用均方误差函数mse,如图5所示。
5.4 结 论
由图3和图4可以看出网络流量实测数据基本与预测值相符,从图5可以看出误差值在5%以内,但由于有奇异数据的存在,使个别预测值误差较大。同时由于采用PSO算法预先对BP网络初始权值进行优化,使BP网络的收敛速度加快。
综上所述,采用PSO优化BP算法能达到所要求的精度,为网络流量预测提供一种方法。
参考文献
[1]Abdelnaser Adas.Traffic models in broadband networks.IEEE Commu-nicaiionsMagazine,1997,35(7):82-89.
[2]Clerc M,Kennedy J.The Particle Swarm-Explosion,Stability,and Con-vergence in AMultidimensional Comlex Trans.on Evolutionary Compu-tation[J].2002,6(I)Space IEEE:58-73.
[3]Vapnik V N.The nature of statistical learning theory[M].New YorkSprineer-Verlag,1995.
[4]Hongkyu Jo,Ingoo Han.Integration of Case-Based Forecasting,Nerualnetwork,and Discriminant Analysis for Bankruptcy Prediction.ExpertSystem with Applications,1996,11(4):415-422.
[5]罗四维.大规模人工神经网络理论基础.清华大学出版社.
PSO-BP神经网络 篇2
人工神经网络特有的非线性信息处理能力,使之在故障诊断领域得到了广泛应用,但其缺点是网络收敛速度慢并且易于陷入局部极值。因此,近年来出现了人工神经网络与模糊系统、遗传算法及蚁群算法等结合的新算法来对网络参数进行优化的智能故障诊断系统[2]。
粒子群优化(Particle Swarm Optimizer,PSO)算法是基于群体的演化算法,由Kennedy J和Eberhart R C于1995年提出,该算法源于对鸟群捕食行为的研究,是一种基于迭代的优化算法[3,4],目前已广泛应用于函数优化、神经网络训练、数据挖掘及模糊系统控制等领域。PSO在全局搜索的初始阶段收敛迅速,但在最优解附近收敛速度变慢;而梯度下降法收敛很快,但容易陷入局部极值。笔者提出的PSO-BP算法是一种从粒子群搜索到梯度下降搜索的启发式算法,首先利用PSO算法的全局搜索能力来训练神经网络的权值和阈值;然后在接近全局最优解其搜索速度变得很慢时,由具有局部快速搜索能力的梯度下降法训练网络;最后将PSO-BP算法应用于发动机的故障诊断,并对算法的性能进行对比分析。
1 PSO算法及其改进*
PSO算法的基本思想是,每个优化问题的潜在解都是搜索空间的粒子,所有粒子都有一个被优化的函数决定的适应值,每个粒子还有一个速度向量决定其飞翔方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索[5]。PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己:一个是粒子本身目前所找到的最优解,称为个体极值pbest;另一个是整个种群目前找到的最优解,即全局极值gbest。在找到这两个最优值后,每个粒子根据下式来更新自己的速度和位置:
式中c1、c2———群体认知系数,也称为学习因子,通常取c1=c2=2;
v、x———每个粒子的速度和位置;
ω———加权系数。
相比于遗传算法,PSO算法没有交叉与变异运算,所以算法结构简单、运行速度快。但是,PSO算法在解空间内搜索时,有时会出现粒子在全局最优解附近振荡的现象,为避免这种现象,作如下改进:随着迭代的进行,速度更新公式中的加权因子ω由最大加权因子ωmax线性减小到最小加权因子ωmin[6],表达式为:
式中iter———当前迭代次数;
itermax———最大迭代次数。
2 基于PSO-BP算法的故障诊断
将BP算法与PSO算法结合,就是将PSO算法的全局搜索能力和BP算法的局部快速搜索能力较好地结合起来。为了解决PSO算法在全局最优解附近搜索变慢的问题,笔者采用一种从PSO搜索到BP搜索的启发式算法,求出最优的网络结构,然后通过这个神经网络结构进行故障诊断[7,8]。基于PSO-BP算法的故障诊断流程如图1所示。
基于PSO-BP算法故障诊断的具体步骤为:
a.确定PSO-BP神经网络的结构和参数。选取故障样本,根据样本的输入向量长度确定网络的输入神经元数I,根据样本的输出向量长度确定网络的输出层神经元数O,根据经验确定隐层神经元数H和粒子群的规模N,设置ωmax和ωmin、c1和c2、网络训练的itermax,初始化每个粒子的位置和速度。
b.建立PSO中粒子与需要优化的参数之间的映射关系。这些待优化的参数合并在一起组成的矩阵可表示为I×H+H×O+H+O,也就是每个粒子的维数,它们对应的就是神经网络的权值和阈值。
c.计算适应度函数。将网络的均方误差作为PSO的适应度函数来评价每个粒子的初始适应度,每个粒子的当前位置作为粒子自身当前的最优解pbest,gbest设置为初始化粒子中最好粒子的位置。
d.如果算法运行达到最大迭代次数,或者训练误差mse小于规定的误差标准E,则转到步骤i;否则转到步骤e。
e.保存当前最好的粒子。根据式(1)、(2)更新粒子的位置和速度,并对速度进行限制。如果v>vmax,则v=vmax;如果v<-vmax,则v=-vmax;否则v为式(1)的计算结果,实时更新所有粒子的位置和速度。
f.评价每个粒子的适应度。如果粒子的新位置比当前的pbest值好,则更新pbest的值为当前粒子的个体最好位置;如果所有新粒子的最好位置优于gbest,则更新gbest为所有新粒子的最好位置。
g.线性减少惯性权重ω。
h.如果gbest的值在5次迭代内的改变小于预设误差10-8,则转到步骤i;否则转到步骤d。
i.使用BP算法在gbest附近进行局部深度搜索,如果搜索结果比gbest好,则用此搜索结果代替gbest并输出;否则输出全局结果gbest,得到优化后的神经网络,进行故障诊断。
也可以使用另外一种情况,用下面的步骤代替步骤g~i:
j.运用BP算法在gbest附近搜索,如果搜索结果比gbest好,则将其设为当前搜索的最好结果gbest;否则,以搜索结果代替所有粒子中最差的粒子位置,转到步骤d;
k.线性减少惯性权重ω;
l.输出全局结果gbest,得到优化后的神经网络,进行故障诊断。
3 PSO-BP在发动机故障诊断中的应用
失火故障是发动机燃烧过程中最常见的故障现象,结合发动机的结构分析,导致失火的原因主要是燃料供给系统发生故障、进气系统故障和点火系统故障。因此,尾气(包括CO、HC、CO2及O2等)中包含了大量发动机燃烧过程的信息。笔者通过分析在不同故障状态下发动机排放气体中HC、CO2、CO和O2的浓度,建立故障状态与特征气体相对含量的非线性关系。为了能实时对发动机的故障模式进行快速又准确的判断,采用PSO-BP算法与BP算法的神经网络来进行诊断,并对比二者的仿真结果。
3.1 数据归一化处理
为避免网络无法收敛并缩短网络训练时间,对文献[8]中的30组发动机失火故障数据进行归一化处理,其归一化方法是最大最小归一法,即把数据统一到[-1,1]区间:
3.2 故障模式的建立
此处选取6种故障情况下发动机排放尾气中的特征气体体积含量作为输入,故障模式用二进制表示,故障模式与故障原因的对应关系见表1。
3.3 神经网络训练
取样本数据的前24组作为训练样本,最后6组作为测试样本,建立一个三层神经网络,设定输入层节点数为4、输出层节点数为6、隐含层节点数为6。定义粒子群规模为30,c1=c2=2,最大速度vmax为2,粒子位置的最大值为1、最小值为-1,ωmax=0.9、ωmin=0.3,最大迭代次数itermax,预设误差为10-8。
采用Matlab软件对PSO-BP算法与BP算法进行仿真比较,两种网络训练的均方误差mse的比较结果如图2、3所示,BP网络在训练初期下降速度比较快,迭代100次后网络误差曲线趋于平缓,接近0.05,无法达到预期误差10-8,这时网络已经陷入局部极小;而PSO-BP网络误差曲线迅速收敛到期望误差曲线,迭代120次左右就达到了预期的误差值。证实PSO-BP神经网络可以使网络迅速收敛且不陷入局部极值。
3.4 故障诊断
采用已训练好的网络对样故障库中的组样本进行故障诊断,识别结果见表2。从检验样本的诊断结果来看,与BP网络算法相比PSO-BP神经网络能够显著提高故障诊断的准确度和精度。
4 结束语
利用PSO-BP算法训练神经网络,其训练结果在收敛速度和收敛效果上均有显著提高,而且能有效解决BP神经网络训练时间较长及容易陷入局部极值等问题。发动机故障诊断实例表明,PSO-BP算法训练的神经网络提高了发动机故障诊断的准确性和可靠性,满足发动机故障诊断的要求,在实际工程中有一定的应用价值,为实现改进的车载自诊断系统更广泛的应用奠定了基础。
摘要:提出一种将粒子群优化算法与BP网络结合的新算法——PSO-BP来训练神经网络的权值和阈值,并将该算法用于汽车发动机的故障诊断。仿真结果表明:PSO-BP算法较传统BP网络的故障诊断结果具有收敛速度快、准确度和精度高的特点。
关键词:发动机故障诊断,PSO-BP,权值和阈值,仿真
参考文献
[1]Hu J,Yan F W,Tian J,et al.Developing PC-based Au-tomobile Diagnostic System Based on OBD System[C].Power and Energy Engineering Conf APPEEC2010.AsiaPacific,2010:1~5.
[2]Eberhart R C,Shi Y.Comparison between Genetic Al-gorithms and Particle Swarm Optimization[C].Pro-ceedings of 7th ANN Conf on Evolutionary Computa-tion.Springer,1998:611~616.
[3]Eberhart R C,Kenetdy J.A New Optimizer Using Parti-cles Swarm Theory[C].Proceedings of Sixth Int Sympon Micro Machine and Human Science.Nagoya,1995:39~43.
[4]Eberhart R C,Kenetdy J.Particle Swarm Optimization[C].Proceedings of IEEE Int Conf on Neural Net-works.Perth,1995:1942~1948.
[5]李丽,牛奔.粒子群优化算法[M].北京:冶金工业出版社,2009:78~92.
[6]Kenetdy J,Eberhart R C,Shi Y.Swarm Intelligence[M].San Francisco:Morgan Kaufman Publishers,2001:20~28.
[7]Zhang J R,Zhang J,Tat-Ming Lok,et al.A Hybrid Par-ticle Swarm Optimization Back-propagation Algorithmfor Feed-forward Neural Network Training[J].AppliedMathematics and Computation,2007,185(5):1026~1037.
PSO-BP神经网络 篇3
航天器在飞行过程中需要实时校正自身的飞行姿态,星敏感器[1]由于其体积小、重量轻、精度高、无误差累积等优点,成为航天器首选的姿态敏感器。星敏感器为了解决“Lost-In-Space”问题,采用自主星图识别算法[2],在没有任何先验姿态信息的指导下,通过将当前视场内的观测星与其存储的导航星表进行对应匹配,确定当前光轴指向,完成姿态定位与调整。目前自主星图识别算法有很多种,常见的有三角形算法、多边形算法、匹配组算法、KMP算法等等。他们都有一个共同点,都是通过将星图按照某个模式建模,然后将导航星表衍生出若干星表,再按照固定模式去查找星表完成匹配。虽然有若干改进算法提出,但都避免不了重复查找星表,导致实时性不高,而且出现冗余信息等待筛选增加工作量。随着BP神经网络在模式识别领域内的应用日益广泛,已有很多国内学者将其应用到星图识别。但是BP神经网络受初始权值影响大,不仅收敛速度缓慢,而且容易陷入局部极值,在处理海量星图信息时必定受到限制。在本论文中针对BP神经网络的缺点,提出一种适合星图特点的三角形剖分算法提取星图特征,利用PSO训练神经网络使权值快速收敛到全局最优附近,然后再用BP算法求出最佳权值。
1 三角形剖分算法
导航星在星表中的排列可以看做无序点集,如果要描述导航星与其邻近导航星之间的拓扑连接关系,就必须按照某种模式将他们组合起来。国内学者有很多利用三角形建模,提出三角形算法以及在其基础上的凸多边形算法,这主要是利用三角形是单纯形的特点。但是传统三角形算法在识别过程中建立的三角形数目庞大而且冗余度高,不但需要较大存储空间,而且识别的压力也很大,若不改进则很难在实际中应用。由于三角形剖分方法可以很好的描述点集中离散点之间的关系,本文采用该方法建立星图描述模型。
1.1 平面点集三角形剖分的定义
定义1:给定平面内顶点集合{Vi},i=1,2,…,n,用不相交的直线段连接Vi与Vj,1≤i,j≤n,i≠j使得n个点的凸壳内的每一个区域是一个三角形,如图1所示,这个过程称为三角剖分。剖分后形成的三角网格T也成为顶点集合{Vi}的一个三角剖分。
一般来说,对离散点集的三角剖分不是唯一的,其中Delaunay三角剖分为最优[3],它满足最小内角最大准则。为了降低剖分算法复杂度并充分利用恒星的星等信息,本文提出基于星图特征的三角形剖分算法。
1.2 基于星图特征的三角形剖分算法
基于星图特征的三角形剖分(以下简称星三角剖分)步骤如下:
1)将出现在星敏感器视场中的恒星按照星等由高到低排列,并从1开始标记号码,如果有两颗或两颗以上的恒星星等相同时,则按照赤经坐标由小到大排序,如图2(a)所示;
2)以1号星为端点顺次连接其他星,如图2(b);
3)以2号星为端点,顺次连接比它星号大的星,由三角剖分的定义可知两两三角形之间三角形边不能相交,因此在连接两颗星过程中,如果与之前已经连接的线段相交,则取消本次连接,例如在连接线段P2j,j>2的过程中,要判断其与已经连接线端P1h,(h>1且h≠2,h≠j)是否相交,其判断依据是两个不等式:
此恒星连接过程如图2(c)所示;
4)按照星号由小到大按照3)步描述的连接过程依次连接,最后即可得到平面点集的三角剖分,如图2(d)所示。
关于星三角剖分算法有几个实用结论,为了叙述方便首先给出几个定义:
定义2:视场内最亮的星即1号星为主星,其它星为副星;主星和副星之间的连接称为主距,副星之间的连接称为副距。
定义3:不同n颗星分布一般不同,应用星三角剖分得到的角距个数可能也不同,对于角距个数最多的n颗星分布,称为n颗星的最大分布;对于角距个数最少的n颗星分布,称为n颗星的最小分布。
由星三角剖分过程可以得到以下结论:
结论1:星三角剖分中每颗副星至少和其他一颗副星相连接。
证明:反证法,如果一颗副星仅和主星相连接,则无法构成一个完整的三角形。
结论2:如果n-1颗星最大分布的角距个数为m,则对于n颗星最大分布的角距个数为m+3。
证明:由于最大分布的n颗星凸壳呈三角形,如果再增加一颗暗星,最多增加一个主距和两个副距。
结论3:星三角剖分n颗星,构成三角形的角距个数最少为2n-3,最多为3n-6。
证明:主距个数为n-1个。对于已经剖分完毕的星图,再多加一颗星,为了讨论方便假设多加的星亮度比其它星都暗。下面利用数学归纳法证明:
首先证明角距个数最小值:3颗星时,角距个数为3=2×3-3;多加一颗星即4颗星时,角距个数至少为5=2×4-3;如果“星三角剖分n颗星,构成三角形的角距个数最少为2n-3”结论成立,则n-1颗星时角距个数最少为2×(n-1)-3=2n-5,如果多加一颗星即n颗星时,由结论1可知它至少和其他一颗副星相连,并且和主星相连,则角距个数为2n-5+2=2n-3,由数学归纳法可知结论成立。
下面证明角距个数最大值:3颗星时,角距个数为3=3×3-6;多加一颗星即4颗星时,角距个数最多为6=3×4-6;如果“星三角剖分n颗星,构成三角形的角距个数最多为3n-6”结论成立,则n-1颗星时角距个数最多为3×(n-1)-6=3n-9,如果多加一颗星即n颗星时,由结论2可知n颗星时角距个数最多为3n-9+3=3n-6,由数学归纳法可知结论成立。
由于出现在视场中的恒星分布随机,且考虑到神经网络输入层结构,在星三角剖分时会遇到如下问题:
1)星图模式提取的方法很多,如提取星对角距、提取星三角形面积等。考虑到提取星三角形面积需要计算一对星对角距之间的夹角,容易造成误差累计,于是本文提取星对角距作为星图的模式特征。
2)三角剖分以三角形为基础,即视场中至少要出现3颗星,如果视场中出现的恒星个数少于3个则不予识别。
3)当视场中仅出现3颗星时,只能形成1个三角形即3个星对角距,由于神经网络的输入个数是一定的,如果神经网络考虑3颗星的情况,即神经网络的输入个数为3,则每帧星图都提取3个星对角距。这样会造成星图信息大量丢失,导致神经网络的样本出现输入模式相同而学习目标不同的情况。本文实验表明,在大熊星座下随机出现在视场中的恒星个数平均为6.7颗星,由结论3可知,6颗星三角剖分后的星对角距个数至少为9个,将神经网络的输入个数设置为9,至于剖分星点后星对角距个数多于9个,则取长度最长的9个角距作为输入。对于角距小于9个的样本可以单独训练,其神经网络的输入个数为3,至于剖分星点后星对角距个数多于3个而小于9个的,则取长度最长的3个角距作为输入。
4)当视场中出现较多星点时,有些星点距离很近,先将距离很近(设一阈值)的星点归为一类,并只保留该类中最亮星点。对于三颗星共线的情况,由于取最长角距作为模式输入,因此不影响三角形剖分。
由于飞行器的滚动,造成所拍摄的星图围绕着星敏感器的视轴产生转动,导致一些基于恒星在视场内坐标的星图模式提取算法对旋转过敏,如图3所示。由于本文提出的星三角剖分算法与恒星在视场内的坐标无关,只与剖分后提取的恒星之间角距有关,因此只要恒星之间的相对位置不变,所提取的星图模式就不会变化,即本文提出的星三角剖分算法具有模式提取旋转、平移不变性。
2 基于BP神经网络的星图识别算法
神经网络是模仿人脑结构及功能的非线性信息处理系统,具有大规模的并行计算与分布式存储能力,且在处理信息的同时,通过对信息的有监督和无监督学习,实现对任意复杂函数的实值映射。神经网络应用到星图识别上,其优点为:模式的特征体现为各个神经元间权值的连接强度,以权值矩阵代替了模式库,不需要迭代就可以获得最终的识别结果,可以大幅度地降低星载计算机系统的资源和星图匹配时间,并且能提高图像匹配的识别率,也可以改善目前识别系统的识别时间长、存储容量大的缺点。其中BP神经网络应用比较广泛,下面简单介绍BP(Back Propagation)算法。
2.1 BP神经网络模型
理论证明一个三层BP神经网络(输入层、一个隐层和输出层)可以以任意精度逼近一个连续函数。假设输入层节点个数为n,隐层节点个数为l,输出层节点个数为m,则该前馈网络模型如图4所示。其中隐层节点个数的确定采用经验公式(3)确定范围,再逐个实验取使神经网络性能最优的值,经验公式为
式中:n为输入层神经元数,m为输出层神经元数,l为隐层神经元个数,a为1~10之间的整数。
2.2 BP算法的缺陷
三层BP神经网络算法由两部分组成:信息的正向传递和误差的反向传输。在正向传递中,输入信息从输入层经隐层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。BP算法由于其通过一些学习规则来调整神经元之间的连接权值,并通过非线性计算来识别目标,具有思路清晰、状态稳定、结构严谨、实现容易等特点,在模式识别等领域得到广泛应用。
传统的BP学习算法是一种随机梯度最小均方算法[4,5],每次迭代的梯度值受样本中噪声干扰的影响较大,一般使用批处理方法将多个样本的梯度进行平均以得到梯度估值。但是在训练模式样本数很大的情况下(例如本文星图模式的数量)这种方法势必增加每次迭代的计算量,并且这种平均作用将会忽略训练样本个体的差异性,使网络收敛速度慢和容易陷入局部极小值而无法继续训练等缺点,虽然采用自适应学习速率以及增加动量项改进方法,却仍没有改变BP算法的本质。本文引入PSO算法来优化BP神经网络。
2.3 利用PSO算法优化BP神经网络
在利用神经网络做星图识别的过程中,由于星点分布的离散性、星图模式的多样性以及初始权值和阈值的随机性,神经网络在训练过程中初始性能误差较大,而且有时会出现神经网络收敛到某个误差值而无法继续训练达到预期训练误差,即出现神经网络陷入局部极小值而偏离全局最优的情况。PSO(粒子群算法)为克服这一缺点提供了一个有效的途径[7,8,9],本文利用PSO算法对BP神经网络进行初始权值训练,其基本思想是:将当前BP网络中所有的连接权值和神经元阈值的集合看作粒子群中的一个粒子,因此每个粒子的维数表示网络中起连接作用的权和神经元阈值的数量。以给定训练样本集的神经网络输出误差作为神经网络训练问题的适应函数,适应度值表示神经网络的误差阈值。误差越小则表明粒子在搜索中具有更好的性能,粒子在权值空间内移动搜索使得网络输出层的误差越小。标准PSO算法早期收敛速度较快,但到了寻优后期速度比较缓慢,这主要是因为算法收敛到局部极小值即早熟的原因,因此应该寻找保持其粒子多样性的算法来改进标准PSO[10,11,12]。
为了改进标准PSO存在的缺陷,在这里引进人工免疫系统算法中的定义:抗原、抗体、抗原和抗体之间的亲和度对应于目标函数、解、目标函数与解的适应度。在抗体初始化后,按照下面式(4)、式(5)进行迭代计算,首先选择亲和度高的抗体进行克隆操作,是抗体较多的聚集在“优”的位置,加快收敛速度;然后使用变异算子对克隆操作后的抗体进行变异操作,使抗体在“优”位置附近的各个方向进行搜索;最后使用基于浓度机制的多样性保持策略对其他抗体进行选择,以保证多样性。
搜寻BP神经网络最佳初始权值和阈值的实现过程为:
1)PSO变量设置
设当前种群中的粒子i的位置为BP神经网络权值和阈值的集合xi:Xi=[v11…v1l…vN1...vNl…w11…w1m…wl1…wlm]T。当前粒子的维数为D=l×N+m×l+l+m,设当前粒子的飞翔速度为Vi,迄今为止搜索到的个体极值表示为pbi,整个粒子群中所有粒子搜索到的全局极值表示为gb,则第i个粒子就是按照下面公式来更新自己速度和位置:
其中w为惯性权重,较大的权重可以加强全局搜索能力,较小的权重能加强局部搜索能力。为了使算法具有较快的收敛速度,这里采用Eberhart的线性递减权重策略:
其中:t为当前进化迭代次数,Tmax为最大迭代次数,wini为初始惯性权重,wend为最大惯性权重。
2)PSO改进
这里使用人工免疫系统中的克隆选择机制改进标准PSO算法。对于变异算子,采用增加随机扰动的方法使其能够脱离局部最优解,如式(7)所示:
其中η是服从Gauss(0,1)分布的随机变量。对于克隆变异操作后其他粒子的选择,采用基于浓度机制的多样性保持策略,定义第i个粒子的浓度为
其中:M为克隆粒子数,N为粒子群大小,f(xi)为第i个粒子的适应度。由式(8)可以得出基于粒子浓度的概率选择:
3)评价函数与迭代终止条件
将更新后的粒子位置向量拆解为神经网络的权值和阈值并更新神经网络,将神经网络的训练误差作为PSO的评价函数即适应度函数:
其中:d、Y表示第样本输入时的期望输出和实际输出。当评价函数满足误差精度要求时或达到最大迭代次数时即可终止迭代循环。
3 实验与仿真
本文选用SAO星表,恒星的赤经赤纬坐标采用J2000历元,对大熊星座做星图识别。在该星座下,星等高于6的恒星共有114颗,以10o×10o为视场大小搜索该星座,首先对出现在视场中的星做三角剖分;然后计算视场内剖分后相连接的恒星星对角距,并按对角距的长度由大到小排列取前9个星对角距作为星图模式特征;再取各个视场内星等最高的星的星号作为学习目标,在这里基于BP神经网络的输出特点,可以将这些目标导航星分类后用二进制表示;最后利用PSO训练BP神经网络的算法训练神经网络。至于提取角距个数少于9个的视场按照1.2节的方法提取3个最长的对角距单独训练。在本文实验中,由于两种样本集的建立和训练方式相同,这里只讨论特征个数足够9个的样本集训练结果。
本文就一般的附加动量因子并自适应调整学习率算法和PSO选择初始权值算法分别给出训练误差曲线,设定误差阈值为0.01,迭代次数上限为7 000次,结果如图5所示。
从上图可以看出附加动量因子的自适应调整学习率算法经过7 000多次迭代训练仍没有使BP神经网络收敛至理想精度,这是因为该算法随机选择初始权值,如图所示性能曲线变化缓慢的区域说明网络陷入局部极小,此时只有通过调整学习率使之脱离局部极值;而性能曲线下降明显的区域说明此时网络正朝着梯度下降的方向进行,即朝着全局最小的方向训练。但由于随机的初始权值离全局最小的距离过大,导致网络训练不断的重复陷入局部极小、脱离局部极小的过程,虽然最终能够达到全局最小,但是需要长时间多迭代的训练。PSO算法从全局着手进行搜索,经过粒子速度与位置的更新,能够搜索到靠近全局极小的区域,为网络训练提供一个优秀的初始权值,如图6所示PSO训练性能曲线初始的误差就要比前者小。虽然在之后的训练过程有可能陷入局部极小,但由于此时已经很靠近全局最小,经过学习率的自适应调整,很快就可以到达全局最小,如图所示性能曲线一直下降,很少出现网络训练停滞不前的情况,只需要4 000多次迭代即可达到理想精度。
本文在HNSKY 2.3.0模拟星空软件中,将CCD框大小设置为10o×10o,在大熊星座范围内随机选取恒星作为观测值验证训练后的BP神经网络识别率,具体步骤如下:
1)设置HNSKY的极限星等为6,坐标采用J2000历元的赤经赤纬坐标系,如图6所示,用粗边框框起来的就是大熊星座,小正方形代表随机视场;
2)在大熊星座区域以预先设定的窗口大小选择恒星,表1记录了三次实验结果;
3)采用本文提出的三角剖分算法对出现在窗口中的星点进行剖分并提取对应的模式特征,如图7所示;
4)将提取的特征输入到训练好的神经网络进行识别,最后给出试验结果,如表2所示。
本文实验是在实验计算机上进行的,配置为:CPU奔腾双核E2220,2G内存,并用VC6.0编程实现。表2所示试验结果,其中识别时间是指用训练好的BP网络去识别星图所用的时间。虽然网络训练时间很长,长达多于5 min,但由于训练数据基于SAO星表,因此神经网络可以离线学习,只需存储训练好的权值和阈值即可,在识别过程中可以满足实时要求。
4 总结
本文提出的基于星等的三角剖分算法与传统三角形算法在模式提取形式上相比较为简便,如图7所示,该方法不需要连接所有的三角形,并且仅仅选择关键的角距建立模式样本集,有效去除冗余信息。在网络训练方面,利用PSO全局搜索能力,预先搜索优秀初始权值,并与随机初始权值做了比较,从图5可以看出PSO训练方法在加快网络训练收敛方面作用突出。虽然BP网络的训练时间长,迭代次数多,但是其学习方式是线下学习,一旦网络训练完毕,存储网络权值等参数。由于星表是预先选定的,因此每次识别之前无需重复训练网络,直接进行识别即可,从实验结果(表2)可知满足实时性要求。
摘要:为了实现星敏感器对航天器当前姿态的准确测量,如何提高星图识别算法的实时性和鲁棒性成为星敏感器的关键技术。对星图识别过程中应用的模式提取、训练样本集的建立以及神经网络训练方式的改进等算法进行研究。首先,设计一种基于星图特征的三角形剖分方法,将视场内的恒星以三角形的方式组合起来,提取星图模式,建立完备的训练样本集,使星图特征具有平移和旋转不变性。然后,采用BP神经网络识别星图特征,以权值矩阵代替导航星库,一旦网络训练完成,可以很快获得当前星图信息,实现星敏感器星图识别算法的实时性和鲁棒性;为了优化BP神经网络改进其自身缺点,采用PSO(粒子群算法)训练BP神经网络,获取使BP神经网络趋近全局最优的初始权值和阈值,使其加快收敛至全局最优。由实验结果表明,该星图识别算法识别率达100%。
关键词:星图识别,三角形剖分,BP神经网络,PSO
参考文献
[1]钟红军.流水线并行处理提高星敏感器数据更新率[J].光学精密工程,2009,17(9):2230-2235.ZHONG Hong-jun.Increasing update rate for star sensor by pipelining parallel processing method[J].Opt.Precision Eng,2009,17(9):2230-2235.
[2]张磊.快速全天自主星图识别[J].光学精密工程,2009,17(4):909-915.ZHANG Lei.Fast all-sky autonomous star identification[J].Opt.Precision Eng,2009,17(4):909-915.
[3]周知.三角剖分算法研究[D].哈尔滨:哈尔滨理工大学,2007.ZHOU Zhi.Research on triangulation algorithm[D].Harbin:Harbin University of Science and Technology,2007.
[4]杨甲沛.基于自适应学习速率的改进型BP算法研究[D].天津:天津大学,2008.YANG Jia-pei.The research of improved BP algorithm based on self-adaptive learning rate[D].Tianjin:Tianjin University,2008.
[5]张蕾.基于改进BP神经网络的物体识别研究[D].河南:河南科技大学,2008.ZHANG Lei.The research on object recognition based on modified BP neural network[D].Henan:Henan University of Technology and Engineering,2008.
[6]Ratnaweera A,Halgamuge S,Watson H.Self-organizing hierarchical particle swarm optimizer with time-varying acceleration coefficients[J].IEEE Transactions on Evolutionary Computation(S1089-778X),2004,8(3):240-255.
[7]高海兵.基于粒子群优化的神经网络训练算法研究[J].电子学报,2004,32(9):1572-1574.GAO Hai-bing.Particle swarm optimization based algorithm for neural network learning[J].ACTA Electronic Sinica,2004,32(9):1572-1574.
[8]高艳霞.基于粒子群优化算法的BP神经网络在图像识别中的应用[J].武汉工业学院学报,2006,25(4):35-38.GAO Yan-xia.Image recognition by BP neural networks model based on particle swarm optimization[J].Journal of Wuhan Polytechnic University,2006,25(4):35-38.
[9]江涛.一种改进的粒子群算法在BP网络中的应用研究[J].计算机科学,2006,33(9):164-166.JIANG Tao.A study of application of an improved PSO algorithm in BP network[J].Computer Science,2006,33(9):164-166.
[10]易云飞.改进粒子群优化算法及其应用研究[D].广西:中南民族大学,2009.YI Yun-fei.An improvement of particle swarm optimization algorithm and its application[D].Guangxi:South-Central University for Nationalities,2009.
[11]刘云龙,林宝军,艾勇.基于改进粒子群优化算法的快速小目标检测[J].光电工程,2009,36(10):6-11.LIU Yun-long,LIN Bao-jun,AI Yong.High Speed Small Target Detection Based on Improved Particle Swarm Optimization[J].Opto-Electronic Engineering,2009,36(10):6-11.
PSO-BP神经网络 篇4
钢铁企业在生产过程中,消耗的能源很大,也带来巨大的污染。污染主要来自于燃料燃烧,因此以降低能源消耗为目的最优化能源管理显得十分重要。钢铁企业必须建立有效的能源管理信息系统以提高经济效益,减少环境污染。强化能源管理,要在分析生产工序能耗现状的基础上对企业的用能需求进行预测,而合理的能源预测模型对以节能降耗为目的的能源管理系统十分重要[1]。
能源预测的关键问题是如何建立合适的预测模型方法,即如何建立适合于所研究的能源预测的数学模型。许多学者在这个领域进行深入研究,建立多种预测模型,如传统时间序列趋势法、灰色模型法、RRS能源因素分析法和BP人工神经网络模型法[2],其中BP神经网络是应用最广的预测模型,其具有高度的非线性映射能力,能以任意精度逼近非线性函数,较适合于一些复杂问题的建模[3],但是经过训练的网络能够很好地跟踪训练数据,对预测的数据输入却未能输出理想的数据,因此需要提高BP神经网络的泛化能力。现利用粒子群算法的收敛快和模拟退火算法全局寻优的能力强。在粒子群算法的基础上引入模拟退火算法,给出了模拟退火粒子群算法(以下简称为混合算法),并利用混合算法优化钢铁企业能耗预测神经网络。
1 模拟退火-粒子群算法
模拟退火算法(Simulated Annealing,SA)最早由Metropolis[4]等(1953)提出,1983年Kirkpatrick[5]等将其应用于组合优化问题的求解。该算法是基于Mente Carlo迭代求解策略的一种随机寻优方法,其原理与物理固体退火过程类似,在进行优化时,将物理固体退火中的能量E模拟为目标函数值f,先确定初始温度T,随机选取一个初始状态xold并考察该状态的目标函数值fold,当系统受到某种扰动而使其状态变为xnew,系统的目标函数值相应变为xnew,此时系统由xold变为fnew的接受概率
即以概率1接受较好值,以概率exp[-(fnew-fold)/T]接受较差值,直到系统冷却。模拟退火算法在初始温度越高、降温速率越慢、终止温度越低条件下,获得高质量解的几率就越大。它以一定的概率接受比全局值较差的解,有可能跳出局部的最优解,达到全局解,增加粒子的多样性,因此模拟退火的解具有质量高、初值鲁棒性强等优点[6]。
粒子群算法(PSO ,Particle Swarm Optimization)是一种从鸟群寻食的模型中得到启发并用于优化问题的全局寻优智能算法。在PSO中每个粒子由速度向量和位置向量两部分组成,其中,粒子的位置表示待优化问题的解,粒子性能的优劣程度取决于待优化问题的目标函数确定的适应值,粒子的速度决定其飞行方向和速率大小。在开始优化PSO中,先初始化m个粒子的位置和速度,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值gBest。另一个极值是整个种群当前找到的最优解,这个极值是全局极值zBest。在找到这两个极值后,每个粒子根据更新公式更新自己的速度和位置[7]。
模拟退火粒子群算法是模拟退火算法与粒子群算法的优化融合。粒子群算法收敛快,易实现,但局部寻优能力差。而模拟退火算法跳出局部最优解的能力强,但收敛慢,效率低。将两种算法互补融合,则可设计出一种效果更好的全局优化搜索算法。
2 模拟退火PSO-BP算法
BP(Back Propagation)网络是一种1986年由Rumelhart和McCelland为首的科学家小组提出,按误差逆传播算法训练的多层前馈网络,是目前应用最广泛神经网络模型之一[8]。当随机选取一组输入样本(a
BP神经网络学习过程主要是神经网络的权值和阈值的更新过程,其更新的过程是随机产生的,这导致了其在训练过程收敛慢,容易陷入局部极值点等问题,因此现采用模拟退火粒子群实现对BP网络的优化,在优化过程中,首先确定好BP神经网络训练结构,随机产生粒子群,并将粒子的位置作为BP神经网络的初始权值和阈值,对网络进行训练,并将网络的性能误差作为粒子的初始适应度函数,然后应用模拟退火PSO算法寻找BP神经网络的最优初始权值和阈值,将其得到的最优解对BP神经网络权值和阈值进行赋值,再用改进的BP神经网络算法训练网络,得到具有全局最优解的预测模型。优化BP算法思路如下。
步骤1 构造三层BP神经网络结构。根据各层的节点数确定了粒子群算法的维度。确定粒子群算法的维度的公式为
式(2)中,n为粒子群的维度;M为神经网络的输入节点;N为隐含层的节点;P为输出层的节点。
步骤2 混合算法参数初始化,确定粒子规模、进化次数、学习因子以及速度最大最小值以及位置最大最小值、初始化温度以及退火速度等。
步骤3 速度以及位置初始化,并计算粒子的适应度。随机产生粒子速度以及位置,同时,粒子群的位置看作BP神经网络的权阈值,训练神经网络,将网络的误差性能函数msereg看作每个粒子的适应度函数。即
式(3)中,ti为网络的实际输出值;yi为目标样本值;a为一个比率数;
步骤4 评价粒子的适应值,对个体极值和全局极值进行更新。若当前位置的个体适应值优于迭代前的适应度值,则当前的位置赋给gbest,当前的个体最佳适应度值赋给fbest。对于全局极值来说,根据所有粒子的个体最佳适应度值fbest,找出全局最佳适应值fbest,并保存该粒子的当前位置zbest。
步骤5 速度和位置更新。根据公式(4)对速度进行更新,并把速度的最大值限制在Vmax,最小值限制在Vmin。同时根据公式(5)对位置进行更新,并把位置的最大值和最小值分别限制在pmax和pmin。
Vik=wVik+c1r1(gbestik-pik+c2r2(zbestgk-pik) (4)
其中,Vik为粒子的速度;pik为粒子的位置;gbestik是粒子到目前为止经历的最佳位置;zbestgk为所有粒子目前找到的最优位置;c1、c2为粒子的学习因子,一般在[0,4]之间;r1、r2为[0,1]之间的随机数;式(4)为线性递减惯性权重;w为惯性因子;xmax为惯性权值最大值;xmin为惯性权值最小值;Tmax是最大进化代数;t是当前进化代数。
步骤6 根据模拟退火机制,对新的粒子群进行退火处理。当粒子的两个位置所引起的适应值的变化量E<0.01时,更新粒子的个体极值gbest、个体最佳适应度fgbest、全局极值zbest和全局最佳适应度fbest;否则当exp(-E/T)>rand,也对粒子的这几个参数进行更新。
步骤7 如果有粒子极值更新时,进行降温,否则不降温。退火机制为
其中a是退火速度,T0为初始温度。
步骤8 判断是否到迭代终止条件,若否,迭代次数加1,线性减小w,接着转到步骤5,继续进行搜索;若是,得到BP的最优权值和阈值,然后训练BP神经网络以得最优解,形成能源消费预测模型。
由以上分析,设计得到优化BP算法的程序流程图如图1所示。
3 仿真结果以及分析
3.1 混合算法在钢铁集团能源消耗的仿真
以广州钢铁企业能源管理系统为背景,根据2006年至2009年月电能消耗的情况,利用该混合算法拟合出月电能消耗的趋势曲线,并预测2010年月电能消耗数值。
采用1个输入层节点,1个输出层节点进行预测。在对广钢电能消耗预测模拟中,时间为输入层,各个月的电能消耗为输出层,根据以上的隐含层设计经验公式以及实际情况,隐含层确定为10个节点,构造三层BP神经网络预测模型,其中隐含层和输出层激活函数采用S型函数,网络训练方法为附加动量项的学习率自适应梯度下降法。
获得输入和输出向量后,由于其中各个指标互不相同,为了计算方便及防止神经元达到过饱和状态,在研究中对数据进行归一化处理,归一化处理有很多方式,采用Matlab提供的函数mapminmax进行归一化。
实验中粒子群算法的参数学习因子c1=0.15,c2=0.3,进化代数为120,粒子群规模为30,Vmax和Vmin分别为1和-1,pmax和pmin分别为5和-5,惯性权值最大值xmax=0.9,惯性权值最小值xmin=0.4,根据式(6)惯性权重范围为[0.4,0.9],根据式(2)得到粒子群维度为31,作为随机产生粒子速度和位置的长度;模拟退火算法的参数起始温度为10 000,a=0.98。
运用matlab依据上述的流程图以及所设定的参数编写混合粒子群优化BP神经网络的仿真模型,最优适应度的仿真曲线图如图2所示。
3.2 混合算法与其他算法的比较
在预测模型的训练中,混合算法一次预测结果如图3所示。图中,横坐标表示是2006年1月到2010年9月(不包括2010年2月和3月),每个间隔表示一个月 ,星点线为混合算法预测值,圆圈为电能消耗实际值
同时为了验证混合算法优化BP神经网络的优越性,建立一个BP神经网络,采用Levenberg-Marquardt对网络进行学习训练,最后得到的网络模型结果为1—10—1结构(输入层1个节点,中间层10个节点,输出层1个节点)。其中一次预测结果如图4所示。
对比图3和图4可知,混合算法的预测效果比BP-ANN预测效果好,能够更好地跟踪未来的数据。为了说明该模型可行性,利用文献[10]中所采用的最小二乘法对2010年4月至9月电能消耗预测,三种模型的预测结果如下表1所示。综合考虑,混合算法相对最优,具有较高的精确度。
4 结束语
以 广州钢铁企业中的电能消耗数据为基础材料,基于BP存在的缺点,提出了一种优化神经网络的混合算法—模拟退火粒子群算法,利用该混合算法优化BP神经网络的权阀值,从而用优化后的BP神经网络建立预测模型对电能消耗进行预测。并与BP神经网络和最小二乘法进行比较仿真得出,混合算法取得很好的预测效果,提高了网络泛化能力,这对钢铁企业合理使用能源,提高能源利用率,提供了重要的参考。
参考文献
[1]蒋育翔,黄金福,洪小利.基于钢铁企业能源特点及相互关系的能源管理信息系统的研究.经济研究导刊,2011;2(35):18—23
[2]韩君.能源需求分析方法述析.经济研究导刊,2008;(18):280—281
[3]李亮,孙延容,黄强,张双虎.灰色GM(1,1)和神经网络结合的能源预测模型.能源研究与利用,2005;(1):10—13
[4] Metropolis N.Equations of state calculations by fast computing ma-chines.J Chem Phys,1953;(21):1087—1091
[5] Kirkpatrick S,Gelatt C D,Vechi Jr M P.Optimization by simulatedannealing.Science,1983;(220):671—680
[6]王振树,李林川,李波.基于粒子群与模拟退火相结合的无功优化算法.山东大学学报,2008;38(6):15—20
[7]范娜,云庆夏.粒子群优化算法及其应用.信息技术,2006;(1):53—56
[8]马成前,王庆喜.基于局部及全局误差的BP神经网络研究.武汉理工大学学报,2009;31(20):99—101
[9]葛哲学,孙志强,等.神经网络理论与MATLAB R2007实现.北京:电子工业出版社,2007:108—116
PSO-BP神经网络 篇5
联络中心( Contact Center) 作为语音交换和通讯产业的应用分支之一,是以信息技术( IT) 为核心、以多渠道通信( 如电话、Email、Internet、SMS、微信、Web聊天等) 为手段,实现交互式的实时通讯和即时沟通的全网融合平台[1]。联络中心作为企业接触客户的前线,承担着了解客户和市场的重要职责,是客户关系管理的助力,正日渐成为信息时代企业的核心竞争力之一。因此,受到物流、金融、保险、电信等越来越多行业的重视。随着科技的发展,智能手机已成为最主要的交流工具, 更多的客户希望随时随地都能进行联络,同时得到更及时的回复。这就要求能对任务量进行准确预测,进而合理安排人员,满足顾客的要求,使企业更具有竞争力。因此,联络中心任务量的需求预测是一个重要问题。
任务量序列是一种时间序列。目前,常用的时间序列预测方法有传统的时间序列分析法和人工智能法( 如神经网络和支持向量机) 。但是,任务量时间序列是一种非线性和非平稳性的时间序列,而传统时间序列分析法只适用于线性平稳的序列。此外,大量关于预测的研究指出单一方法或模型无法在对所有时间序列进行预测时达到最优[2],而组合预测模型对复杂特性的时间序列更加准确的描述,可以有效提高任务量预测精度。小波变换可以分析非线性、非平稳序列的时间序列[3],能将时间序列分解成不同尺度的序列,粒子群算法 ( PSO) 优化神经网络( BP) 模型( PSO - BP) ,不仅可以克服BP神经网络易陷入局部最小和收敛速度慢的缺点,而且很大程度地提高了预测的精度? 因此,本文提出了小波变换和PSO - BP的组合预测模型以利用二者的优点。最后,通过实例验证了该方法的有效性和可行性。
2小波变换和PSO - BP神经网络的基本原理
小波变换( wavelettransform) 是一种新的变换分析方法,它的主要特点是通过变换能够充分体现信号的特征,通过伸缩平移运算对信号( 函数) 逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题。
粒子群优化算法( PSO) 是由Kennedy和Eberhart提出一种新的群体智能计算技术[4],源于对鸟群捕食的行为研究。 PSO算法的基本思想是通过群体中个体之间信息共享来寻找最优解。
BP( Back Propagation) 神经网络是1986年由Rumelhart和Mc Clelland为首的科学家小组提出[5],是一种多层次的前向反馈神经网络,可以实现从输入到输出的任意非线性映射[6]。 BP神经网络是由输入、输出和若干隐含层构成,每一层含多个神经元。神经元的输入通过适当的权值( w) 与下一层相连,再通过传递函数进行输出。输入信息经过隐含层变换传送到输出层,同时误差反向传播,如果输出值与期望值的误差大于指定误差时,用反向传播算法对网络的权值和偏差进行反复的调整训练,直到与期望值的误差小于指定的误差,训练完成,保存网络的权值。
3基于小波变换和PSO - BP的预测模型
该模型是将任务量进行小波变换,得到的各尺度的序列作为PSO - BP模型的输入,原来的序列作为输出,对网络进行训练,再用PSO - BP模型拟合数据以减小误差。
首先,小波变换跟踪序列的非平稳性。通过小波变换可以将非平稳的任务量时间序列分解为高频和低频序列。小波中Daubecheis小波( db N小波) 具有时频紧支撑性、高正则性和正交、双正交性,对非平稳信号的灵敏度高,故该文选用db N小波作为分析函数,可以提高预测的准确度。其次,利用粒子群算法对BP神经网络的初始权值和阈值优化,PSO - BP神经网络可以提高非线性时间序列预测精度。针对分解后序列的特点选择合适参数的PSO - BP模型对其进行预测。最后,把各个分量的预测值作为PSO - BP神经网络的输入,选取合适的参数进行预测,得到最优的任务量时间序列的预测值。其预测步骤为:
1小波分解。将任务量序列用db3小波进行3层Mallat小波分解,得到近似部分和细节部分d1、d2、d3; 将近似部分和细节部分分别用Mallat算法进行单支重构,得A3、D1、D2、D3。
2PSO - BP模型的确定与训练。对A3和D1、D2、D3分别建立PSO - BP预测模型,进行预测,得到A3'和D1'、D2'、D3'。
3任务量的合成。由于分解后的每个分量对最后的预测结果的贡献率不同,简单的线性相加将会影响模型的预测精度,故使用PSO - BP预测模型来实现最优加权组合预测。通过PSO - BP对A3'和D1'、D2'、D3'组合预测得到最终的预测结果。
4实例分析
实验的数据来源于某物流联络中心,采集了从2014年1月1号到7月12号的数据,然后通过数据分析去除异常数据,剩余150个数据,如图1所示,采用前50个数据作为训练样本,用于估计参数和确定模型,后100个数据作为测试,检测预测值和真实值差别。图2为各个分量真实值与预测值的比较。
为了验证模型的有效性和可行性,采用PSO - BP模型作为比较模型,通过四个评价指标对模型进行评价。四个评价指标分别是平均平方误差( mean square error,MSE) 、平均绝对误差( mean absolute error,MAE) 、平均百分比平方误差( mean square percentage error,MSPE ) 以及平均 绝对百分 比误差 ( mean absolute percentage error,MAPE)[9],它们的定义为:
表1中,这四个指标可以反映出预测值与真实值的结合程度,它们的值越小就说明预测值与真实值越接近。可以看出,本文所采用的小波 - PSO - BP预测模型的四个指标值比PSO - BP预测模型更小。说明本文所采用的小波 - PSO - BP预测模型是可行的,而且一定程度上提高了联络中心任务量预测精度。
5结束语