粒子群算法在神经网络非线性函数拟合中的应用精品文档完整版.docx
- 文档编号:61211
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:17
- 大小:246.31KB
粒子群算法在神经网络非线性函数拟合中的应用精品文档完整版.docx
《粒子群算法在神经网络非线性函数拟合中的应用精品文档完整版.docx》由会员分享,可在线阅读,更多相关《粒子群算法在神经网络非线性函数拟合中的应用精品文档完整版.docx(17页珍藏版)》请在冰豆网上搜索。
粒子群算法在神经网络非线性函数拟合中的应用精品文档完整版
粒子群算法在神经网络非线性函数拟合中的应用
一、本文研究和解决的问题
在自动控制问题中,系统辨识的目的是为了建立被控对象的数学模型。
多年来,控制领域对于复杂的非线性对象的辨识一直未能很好的解决,神经网络所具有的非线性特性和学习能力使其在系统辨识方面有很大的潜力。
为解决具有复杂的非线性、不确定性和不确知对象的辨识问题开辟了一条有效的途径。
基于神经网络的系统辨识是以神经网络作为被辨识对象的模型,利用其非线性特性,可建立非线性系统的静态或动态模型。
理论上,多层前馈神经网络能够以任意精度逼近任意非线性映射。
但传统神经网络学习算法中存在的收敛速度慢、容易陷入局部最优等缺点,于是设计了基于标准粒子群算法的神经网络非线性函数拟合系统。
二、传统的BP神经网络
BP神经网络即采用误差反向传播算法的网络,是一种至今仍然最为流行的前馈型神经网络模型。
BP神经网络有很强的非线性映射能力,它能学习和存贮大量输入-输出模式映射关系,而无需事先了解描述这种映射关系的数学方程。
只要能提供足够多的样本模式对供给网络进行学习训练,它便能完成由n维输入空间到m维输出空间的非线性映射。
BP学习算法属于误差修正型学习,其关键在于根据误差修正输出层和隐含层的连接权值。
其学习的基本实现方法是基于最小平方误差准则和梯度下降优化方法来确定权值调整法则。
BP网络建模特点:
非线性映照能力:
神经网络能以任意精度逼近任何非线性连续函数。
在建模过程中的许多问题正是具有高度的非线性。
并行分布处理方式:
在神经网络中信息是分布储存和并行处理的,这使它具有很强的容错性和很快的处理速度。
自学习和自适应能力:
神经网络在训练时,能从输入、输出的数据中提取出规律性的知识,记忆于网络的权值中,并具有泛化能力,即将这组权值应用于一般情形的能力。
神经网络的学习也可以在线进行。
数据融合的能力:
神经网络可以同时处理定量信息和定性信息,因此它可以利用传统的工程技术(数值运算)和人工智能技术(符号处理)。
多变量系统:
神经网络的输入和输出变量的数目是任意的,对单变量系统与多变量系统提供了一种通用的描述方式,不必考虑各子系统间的解耦问题。
三、解决问题的思想与方法
针对传统神经网络学习算法中存在的收敛速度慢、容易陷入局部最优等缺点,设计了基于标准粒子群算法的神经网络非线性函数拟合系统,将神经网络中的权值看作一个粒子,通过粒子之间的竞争与合作以完成网络的学习过程,仿真结果表明,基于BP的神经网络学习算法在收敛速度、辨识精度等方面要优于传统的BP神经网络。
粒子群优化算法(PSO,ParticleSwarmOptimization)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。
PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,每只鸟找到食物最简单有效的方法就是搜寻当前距离食物最近的鸟的周围区域。
PSO算法首先在可解空间中初始化一群粒子,每个粒子都代表问题的一个潜在解,用位置、速度和适应度值三项指标表示该粒子特征。
适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。
粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。
粒子在解空间中运动,通过跟踪个体最优值Pbest和群体最优值Gbest更新个体位置,个体最优值Pbest是指个体所经历位置中计算得到的适应度值最好的位置,群体最优值Gbest是指粒子群中所有粒子搜索到的适应度最好的位置。
粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体最优值、群体最优值的适应度值更新Pbest和Gbest的位置。
粒子位置和速度的调整是粒子群算法的关键。
假设在一个D维的搜索空间中,由n个粒子组成的种群X(X1,X2,……,Xn),其中第i个例子表示为一个D维的向量Xi(xi1,xi2,……,xiD)T,代表第i个粒子在D维搜索空间中的位置,亦代表问题的一个潜在解。
根据目标函数即可计算出每个粒子位置Xi对应的适应度值。
第i个粒子的速度为Vi(vi1,vi2,……,viD)T,其个体极值为P(pi1,pi2,……,piD)T,种群的全局极值为P(pg1,pg2,……,pgD)T。
四、实验仿真结果
五、程序
基本BP网络函数逼近程序
function[epoch,s,Wki,Wij,Wb,Ez]=dyb(lr,Emin,q)
%初始化;
%lr学习效率;Emin为期望误差最小值;q为隐含层节点数;
b=1;sum=0;Ez=[];
max_epoch=30000;%max_epoch训练的最大次数;
%提供训练集和目标值;
x=8.*rand(1,100)-4;
y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100);
%初始化Wki,Wij;
Wij=rand(1,q);Wki=rand(1,q);Wb=rand(1,q);
forepoch=1:
max_epoch
E=0;m=1;oi=0;ok=0;%置隐含层和输出层各神经元输出初值为零;
form=1:
100
%计算隐含层各神经元输出;
NETi=x(m)*Wij+b*Wb;
fort=1:
q
oi(t)=1/(1+exp(-NETi(t)));
end
%计算输出层各神经元输出;
NETk=Wki*oi';
ok=NETk;
%计算误差;
E=E+(y(m)-ok)^2;
%调整输出层加权系数;
deltak=y(m)-ok;
Wki=Wki+lr*deltak*oi;
%调整隐含层加权系数;
deltai=oi.*(1-oi).*(deltak*Wki);
Wij=Wij+lr.*deltai.*x(m);
Wb=Wb+lr.*deltai;
end
Ez(epoch)=sqrt(E/100);
ifEz(epoch) break; end end %计算测试输出; x=linspace(-4,4,100);%给定输入: y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100); fori=1: 100 NETi=x(i).*Wij+b*Wb;NETk=0; fort=1: q oi(t)=1/(1+exp(-NETi(t))); NETk=NETk+Wki(t)*oi(t); end ok(i)=NETk; sum=sum+(y(i)-ok(i))^2;%输出总误差; end s=sqrt(sum/100); 计算函数: function[cs,wc]=jsdyb(lr,q) Emin=0.1;s1=0;s2=0; fork=1: 5 [x1,x2]=dyb(lr,Emin,q); s1=s1+x1; s2=s2+x2; end cs=s1/5; wc=s2/5; functionA=zjsdyb(lr) q=[4,5,7,8,10]; formatshortg A=[]; forzk=1: 5 [cs,wc]=jsdyb(lr,q(zk)); B=[cs,wc]; A=[A;B]; end 图形显示函数: functiontxdyb(lr,q) %计算测试输出; Emin=0.1;b=1; [epoch,s,Wki,Wij,Wb,Ez]=dyb(lr,Emin,q) x=linspace(-4,4,100);%给定输入: y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100); fori=1: 100 NETi=x(i).*Wij+b*Wb;NETk=0; fort=1: q oi(t)=1/(1+exp(-NETi(t))); NETk=NETk+Wki(t)*oi(t); end ok(i)=NETk; end %显示图形; figure plot(x,ok,'r') holdon y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100); plot(x,y,'b') title('Hermit多项式曲线与BP网络输出曲线') legend('BP曲线','Hermit曲线') holdoff figure plot(x,ok,'or') holdon x=8.*rand(1,100)-4; y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100); plot(x,y,'*k') title('训练样本与测试样本') xlabel('inputx') ylabel('outputy') legend('测试样本','训练样本') figure plot([1: length(Ez)],Ez) title('收敛曲线') clc PSO优化神经网络程序 clc clearall %一、初始化部分 %1.1预处理样本数据 %选取训练样本(x,y) fori=1: 100 x=8.*rand(1,100)-4; y=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100);%待逼近函数 end AllSamIn=linspace(-4,4,100);%训练样本输入 AllSamOut=y;%训练样本输出 %选取测试样本 fori=1: 100 x=8.*rand(1,100)-4;%测试样本输入 ytest=1.1.*(1-x+2.*x.^2).*exp(-x.^2/2)+0.1*rand(1,100);%测试样本输出 end AlltestIn=linspace(-4,4,100); AlltestOut=ytest; %归一化训练样本,测试样本 [AlltestInn,minAlltestIn,maxAlltestIn,AlltestOutn,minAlltestOut,maxAlltestOut]=premnmx(AlltestIn,AlltestOut);%测试样本 [AllSamInn,minAllSamIn,maxAllSamIn,AllSamOutn,minAllSamOut,maxAllSamOut]=premnmx(AllSamIn,AllSamOut);%训练样本 testIn=AlltestInn; testOut=AlltestOutn; globalPtrain; Ptrain=AllSamInn; globalTtrain; Ttrain=AllSamOutn; %1.2设置神经网络参数 globalindim;%输入层神经元个数 indim=1; globalhiddennum;%隐藏层神经元个数 hiddennum=3; globaloutdim;%输出层神经元个数 outdim=1; globalGpos; %1.3设置微粒群参数 vmax=0.5;%速度上限 minerr=1e-7;%目标误差 wmax=0.95; wmin=0.25; globalitmax;%最大迭代次数 itmax=200; c1=1.5; c2=1.5; %权值随迭代次数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 粒子 算法 神经网络 非线性 函数 拟合 中的 应用 精品 文档 完整版