第31卷第4期哈尔滨工程大学学报Vol.31No.42010年4月JournalofHarbinEngineeringUniversityApr.2010文章题目创新点自述创新点自述与摘要有一定的区别,作者应把文章具体新在哪里,好在哪里写出来,说明本文较前人工作有何创新,好的创新点自述能增加文章的可读性,也能给评审人留下好的印象。2哈尔滨工程大学学报第28卷基于BP神经网络的的应用摘要:PID控制要取得较好的控制效果,就必须通过调整好比例、积分和微分三种控制的作用,形成控制量中既相互配合又相互制约的关系,这种关系不一定是简单的“线性组合”,从变化无穷的非线性组合中可以找到最佳的。神经网络所具有的的任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳线性组合的PID控制。采用BP网络,可以建立参数kp,ki,kd自学习的PID控制器,并给出BP仿真实例。关键词:PID;神经网络;BP网络模型Doi:10.3969/j.issn.1006-7043.中图分类号:(作者本人填写)文献标识码:A文章编号:1006-7043(2006)xx-xxxx-xBasedontheapplicationofBPneuralnetworkAbstract:PIDcontroltoachievegoodcontroleffect,itmustbyadjustingtheproportional,integralanddifferentialthreecontrolfunction,controlquantityinbothcooperatewitheachotherandmutualrestrictrelationship,thisrelationshipisnotnecessarilyasimplelinearcombination,fromtheendlessvarietyofnonlinearcombinationcanbefoundinthebest.Neuralnetworkwiththearbitrarynonlinearexpressiveness,canthroughthestudyoftheperformanceofthesystemtoachievethebestlinearcombinationofPIDcontrol.ByusingBPnetwork,kp,ki,kdSelf-learningPIDcontrollerwithBPsimulationexamplesarepresentedKeywords:PID;ANN;BP1自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且还可以利用计算机的逻辑功能,使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。将偏差比例(P)、积分(I)、和微分(D)通过现行组合构成控制,对被控制对象进行控制,故称PID控制器。BP网络本质上是一种由输入到输出的映射,它不需要任何输入和输出之间的精确数学表达式,只要用已知的输入输出数据加以训练,网络就具有输入与输出之间的映射能力。BP算法的关键在于隐含层的学习规则,而隐含层就相当于对输入信息的一个特征抽取器。1基于BP神经网络整定的PID控制基于BP网络的PID控制器由两部分组成:(1)经典的PID控制器,直接对被控制对象进收稿日期:xxxx-xx-xx.基金项目:基金项目名称(编号).作者简介:姓名(出生年-),性别,职称,学位,E-mail(通信作者);姓名(出生年-),性别,职称,学位.通信作者:姓名(出生年-),性别,职称,学位,E-mail(如不是作者简介里的作者).行闭环控制,并且三个参数kp,ki,kd为在线调整方式。(2)神经网络,根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化,使输出层神经元的输出状态对于PID控制器的三个可调整参数kp,ki,kd通过神经网络的自学习、加权系数的调整,使神经网络输出对应于某种最优空置率下的PID控制器参数。1.1仿真实例设被控制对象的近似数学模型为:11112kukyoutkyoutkakyout式中,系数ka是慢时变的,keka1.08.012.1学习速率28.0和惯性系数04.0加权系数初始值取区间5.0,5.0上的随机数。输入指令信号分为两种:0.11krintkrin2sin2取S=1时为阶跃跟踪,初始权值取随机值,运行稳定后用稳定权值代替随机值。其结果如下图照片尺寸为20mm*30mm;最好不用红色背景增刊第一作者姓名,等:文章题目-3-012345600.20.40.60.811.21.4time(s)rin,yout图1阶跃响应曲线Fig.1Title0123456-0.200.20.40.60.811.2time(s)error图二跟踪误差曲线012345600.050.1time(s)kp012345600.51time(s)ki012345600.20.4time(s)kd图三参数自适应整定曲线2结论经过训练的BP神经网络模型逼近效果好,跟踪误差能达到要求,通过自适应调整和自学习的单神经元自适应智能PID控制器,不但结构简单而且能适应环境变化,有较强的鲁棒性。参考文献:[1]刘金锟.先进PID控制MATLAB仿真[M].版本(第2版).附录:仿真程序clearall;closeall;xite=0.20;alfa=0.05;s=1;IN=4;H=5;Out=3;ifs==1wi=[-0.6394-0.2696-0.3756-0.7023;-0.8603-0.2013-0.5024-0.2596;-1.07490.5543-1.6820-0.5437;-0.3625-0.0724-0.6463-0.2859;0.14250.0279-0.5406-0.7660];-4-哈尔滨工程大学学报第28卷wi_1=wi;wi_2=wi,wi_3=wi;wo=[0.75760.26210.5820-0.1416-0.1325;-0.11460.29490.83520.22050.4508;0.72010.45660.76720.49620.3632];wo_1=wo;wo_2=wo,wo_3=wo;endifs==2wi=[-0.28460.2193-0.5097-1.0668;-0.7478-0.1210-0.40780.0988;-0.71760.8297-1.60000.2049;-0.08580.1925-0.63460.0347;0.43580.2369-0.45640.1324];wi_1=wi;wi_2=wi,wi_3=wi;wo=[1.04380.54780.86820.14460.1537;0.17160.58111.12140.50670.7370;1.00630.74281.05340.78240.6494];wo_1=wo;wo_2=wo,wo_3=wo;endx=[0,0,0];du_1=0;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;Oh=zeros(H,1);I=Oh;error_2=0;error_1=0;ts=0.001;fork=1:1:6000time(k)=k*ts;ifs==1rin(k)=1.0;elseifs==2rin(k)=sin(1*2*pi*k*ts);enda(k)=1.2*(1-0.8*exp(-0.1*k));yout(k)=a(k)*y_1/(1+y_1^2)+u_1;error(k)=rin(k)-yout(k);xi=[rin(k),yout(k),error(k),1];x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+error_2;epid=[x(1);x(2);x(3)];I=xi*wi';forj=1:1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));endK=wo*Oh;forl=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));endkp(k)=K(1);ki(k)=K(2);kd(k)=K(3);Kpid=[kp(k),ki(k),kd(k)];du(k)=Kpid*epid;u(k)=u_1+du(k);dyu(k)=sign((yout(k)-y_1))/(du(k)-du_1+0.0001);forj=1:1:OutdK(j)=2/(exp(K(j))+exp(-K(j)))^2;endforl=1:1:Outdelta3(l)=error(k)*dyu(k)*epid(l)*dK(l);endforl=1:1:Outfori=1:1:Hd_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);endendfori=1:1:HdO(i)=4/(exp(I(i))+exp(-I(i)))^2;endsegma=delta3*wo;fori=1:1:Hdelta2(i)=dO(i)*segma(i);endd_wi=xite*delta2'*xi;wi=wi_1+d_wi+alfa*(wi_1-wi_2);du_1=du(k);u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);wo_3=wo_2;wo_2=wo_1;wo_1=wo;wi_3=wi_2;wi_2=wi_1;wi_1=wi;error_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,'r',time,yout,'b');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,error,'r');xlabel('time(s)');ylabel('error');figure(3);plot(time,u,'r');xlabel('time(s)');ylabel('u');figure(4);subplot(311)plot(time,kp,'r');xlabel('time(s)');ylabel('kp');subplot(312)plot(time,ki,'g');xlabel('time(s)');ylabel('ki');subplot(313)plot(time,kd,'b');xlabel('time(s)');ylabel('kd');