您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > 基于BP神经网络的自适应PID控制器设计
基于BP神经网络的自适应PID控制器设计一.基于BP神经网络的自适应PID控制器的原理PID控制是最早发展起来的、应用领域至今仍然广泛的控制策略之一,它是基于对象数学模型的方法,尤其适用于可建立精确数学模型的确定性控制系统。其优点是算法简单、鲁棒性好和可靠性高。但是,由于实际工业生产过程往往具有非线性,许多非线性系统难以确定精确的数学模型,常规的PID控制器就不能达到理想的控制效果,由于受到参数整定方法烦杂的困扰,参数往往整定不良、性能欠佳。神经网络所具有的任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。基于BP网络的自适应PID控制器,通过BP神经网络调整自身权系数,对PID控制参数进行调节,以达到某种性能指标的最优。二.基于BP神经网络的自适应PID控制器的控制器结构基于BP神经网络的PID控制系统结构图如图1所示:此控制器由两部分组成:(1)经典的PID控制器,直接对被控对象进行闭环控制,并且三个参数pK,iK,dK为在线调整方式;图1BP网络结构1x3x2xpkikdkjki(2)神经网路,根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化,是输出层神经元的输出状态对应于PID控制器的一个可调参数pK,iK,dK。通过神经网络的自学习、加权系数调整,使神经网络输出对应于某种最优控制率下的PID控制器参数。基于BP神经网络的自适应PID控制器的控制器如图2所示:该控制器的算法如下:(1)确定BP神经网络的结构,即确定输入节点数M和隐含层节点数Q,并给各层加权系数的初值)0(1ijw和)0(2ijw,选定学习速率和惯性系数,此时k=1;(2)采样得到rin(k)和yout(k),计算该时刻误差error(k)=rin(k)-yout(k);(3)计算神经网络NN各层神经元的输入、输出,NN输出层的输出即为PID控制器的三个可调参数pK,iK,dK;(4)根据经典增量数字PID的控制算法(见下式)计算PID控制器的输出u(k);))2()1(2)(()())1()(()1()(kerrorkerrorkerrorKkerrorKkerrorkerrorKkukudip(5)进行神经网络学习,在线调整加权系数)(1kwij和)(2kwij实现PID控制参数的自适应调整;(6)置k=k+1,返回到(1)。NNPIDPLANT1aaerinyouterrorpKiKdK+_图2基于BP神经网络的自适应PID控制器的控制器结构三.仿真程序%BPbasedPIDControlclearall;closeall;xite=0.25;alfa=0.05;S=1;%SignaltypeIN=4;H=5;Out=3;%NNStructureifS==1%StepSignalwi=[-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];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[0.75760.26160.5820-0.1416-0.1325;-0.11460.29490.83520.22050.4508;0.72010.45660.76720.49620.3632];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endifS==2%SineSignalwi=[-0.28460.2193-0.5097-1.0668;-0.7484-0.1210-0.47080.0988;-0.71760.8297-1.60000.2049;-0.08580.1925-0.63460.0347;0.43580.2369-0.4564-0.1324];%wi=0.50*rands(H,IN);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=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endx=[0,0,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);%OutputfromNNmiddlelayerI=Oh;%InputtoNNmiddlelayererror_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);end%Unlinearmodela(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)));%MiddleLayerendK=wo*Oh;%OutputLayerforl=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));%Gettingkp,ki,kdendkp(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);ifu(k)=10%Restrictingtheoutputofcontrolleru(k)=10;endifu(k)=-10u(k)=-10;enddyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));%Outputlayerforj=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);endendwo=wo_1+d_wo+alfa*(wo_1-wo_2);%Hiddenlayerfori=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);%ParametersUpdateu_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');四.运行结果
本文标题:基于BP神经网络的自适应PID控制器设计
链接地址:https://www.777doc.com/doc-4451865 .html