基于BP神经网络的PID控制器的研究与实现课程名称:人工神经网络目录前言 (3)一、BP神经网络 (4)二、模拟PID控制系统 (5)三、基于BP神经网络的PID控制器 (6)四、仿真程序 (10)五、运行结果 (17)六、总结 (18)参考文献 (19)前言人工神经网络是以一种简单神经元为节点,采用某种网络拓扑结构构成的活性网络,可以用来描述几乎任意的非线性系统。
不仅如此,人工神经网络还具有学习能力、记忆能力、计算能力以及各种智能处理能力,在不同程度和层次上模仿人脑神经系统的信息处理、存储和检索的功能。
不同领域的科学家,对人工神经网络有着不同的理解、不同的研究内容,并且采用不同的研究方法。
对于控制领域的研究工作者来说,人工神经网络的魅力在于:①能够充分逼近任意复杂的非线性关系,从而形成非线性动力学系统,以表示某种被控对象的模型或控制器模型;②能够学习和适应不确定性系统的动态特性;③所有定量或定性的信息都分布储存于网络内的各神经单元,从而具有很强的容错性和鲁棒性;④采用信息的分布式并行处理,可以进行快速大量运算。
对于长期困扰控制界的非线性系统和不确定性系统来说,人工神经网络无疑是一种解决问题的有效途径。
正因为如此,把人工神经网络引入传统的PID 控制,将这两者结合,则可以在一定程度上解决传统PID 调节器不易在线实时整定参数、难于对一些复杂过程和参数慢时变系统进行有效控制的不足。
一、BP神经网络BP神经网络是一种有隐含层的多层前馈网络,其结构如图1-1所示。
如果把具有M个输入节点和L个输出节点的BP神经网络看成是从M维欧氏空间到L维欧氏空间的非线性映射,则对于具有一定非线性因数的工业过程被控对象,采用BP网络来描述,不失为一种好的选择。
在BP神经网络中的神经元多采用S型函数作为活化函数,利用其连续可导性,便于引入最小二乘学习算法,即在网络学习过程中,使网络的输出与期望输出的误差边向后传播边修正加权系数,以期使误差均方值最小。
BP神经网络的学习过程可分为前向网络计算和反向误差传播——连接加权系数修正两个部分,这两个部分是相继连续反复进行的,直至误差满足要求。
不论学习过程是否已经结束,只要在网络的输入节点加入输入信号,则这些信号将一层一层向前传播;通过每一层时要根据当时的连接加权系数和节点的活化函数与阈值进行相应计算,所得的输出再继续向下一层传输。
这个前向网络计算过程,既是网络学习过程的一部分,也是将来网络的工作模式。
在学习过程结束之前,如果前向网络计算的输出和期望输出之间存在误差,则转入反向传播,将误差沿着原来的连接通路回送,作为修改加权系数的依据,目标是使误差减小。
图1-1二、模拟PID 控制系统PID 控制是最早发展起来的控制策略之一,它以算法简单、鲁捧性好、可靠性高等优点而梭广泛应用于工业过程控制中。
PID 控制系统结构如图1-2所示:积分比例微分被控对象—e(t)u(t)c(t)r(t)图1-2它主要由PID 控制器和被控对象所组成。
而PID 控制器则由比例、积分、微分三个环节组成。
它的数学描述为:01()()[()()]t p D i de t u t K e t e d T T dt ττ=++⎰式中,p K 为比例系数;i K 为积分时间常数:dK 为微分时间常数。
简单说来,PID 控制器各校正环节的主要控制作用如下:1.比例环节即时成比例地反映控制系统的偏差信号()e t ,偏差一旦产生,控制器立即产生控制作用,以减少偏差。
2.积分环节主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数i T ,i T 越大,积分作用越弱,反之则越强。
3.微分环节能反映偏差信号的变化速率,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
PID 控制器有如下特点:原理简单,实现方便,是一种能够满足大多数实际需要的基本控制器;控制器能适用于多种截然不同的对象,算法在结构上具有较强的鲁棒性,在很多情况下,其控制品质对被控对象的结构和参数摄动不敏感。
三、基于BP 神经网络的PID 控制器PID 控制要取得好的控制效果,就必须对比例、积分和微分三种控制作用进行调整以形成相互配合又相互制约的关系,这种关系是从变化无穷的非线性组合中找出最佳的关系。
神经网络具有任意的非线性表示能力,可以通过对系统性能的学习实现具有最佳组合的PID 控制器。
图1-3BP 神经网络由于其具有逼近任意非线性函数的能力,而且结构和学习算法简单明确,因此在神经网络PID 控制中常采用BP 网络结构来建立PID 控制器。
通过BP 神经网络自身的学习,从而可以找到某一最优控制律下的,,P I D 参数。
基于BP 神经网络的PID 控制系统结构如图1-3所示,控制器由两部分缀成:①经典的PID 控制器:直接对被控对象进行闭环控制,并且,,P I D K K K 三个参数为在线整定;②神经网络NN :根据系统的运行状态对应于PID 控制器的三个可调参数P K ,I K ,D K 。
通过神经网络的自学习、调整权系数,从而使其稳定状态对应于某种最优控制律下的PID 控制器参数。
PID 的控制算式为:2()(1)()()()P I D u k u k K e k K e k K e k =-+∆++∆式中,,,P I D K K K 分别为比例、积分、微分系数。
将,,P I D K K K 看为依赖于系统运行状态的可调系数时,可将(3.12)式描述为:2()[(1),,,,(),(),()]p I D u k f u k K K K e k e k e k =-∆∆式中[]f •是与,,,(1),()p I D K K K u k y k -等有关的非线性函数,可以用 BP 神经网络NN 通过训练和学习来找出一个最佳控制规律。
假设BP 神经网络NN 是一个三层BP 网络,其结构如图3.4所示,有M 个输入节点、Q 个隐层节点、三个输出节点。
输出节点分别对应控制器的三个可调参数,,p I D K K K 。
其激发函数为非负的Sigmoid 函数。
而隐含层的激发函数可取正负对称的Sigmoid 函数。
神经网络的前向算法如下:设PID 神经网络有M 个输入,3个输出(,,p i d k k k ), 上标(1)(2)(3)分别代表输入层、隐含层和输出层,该PID 神经网络在任意采样时刻k 的前向计算公式如下所述:网络输入层的输入:(1)j k j o x -==()e k j -,(0,1,2...,1)j M =-,(1)1M o ≡;网络隐含层的输入、输出算法如式(3.2.2)所示:(2)(2)(1)0()()M iij j j net k w o k ==∑(2)(2)()(())i i o k f net k = ,(0,1,...1)i Q =- (2)1Q o ≡式(3.2.2)中ij w 表示隐含层第j 个神经元到第i 个神经元的加权系数,隐含层神经元活化函数取正负对称的Sigmoid 函数:()tanh()x xx x e e f x x e e ---==+ 网络输出层的输入、输出算法如式(3.3.4)所示:(3)(3)(2)0()()Q ili i i net k w o k ==∑(3)(3)(())i i o f net k = 1,2,3...i Q = 式中(3)li w 为隐含层到输出层加权系数,输出层神经元活化函数取非负Sigmoid 函数:1()(1tanh())2xx x e g x x e e --=+=+ (3)3()(())l l o k g net k = (l =1,2,3)(3)0P o K =(3)1I o K = (3)2Do K = 性能指标函数: 2211[(1)(1)](1)22J r k y k e k =+-+=+根据最速下降法修正网络的加权系数,并附加一使搜索快速收敛全局极小的惯性项,则有:(3)(3)(3)(1)()li li li J w k w k w ηα∂∆+=-+∆∂式中η为学习速率;α为惯性系数。
(3)li J w ∂∂=(3)(1)()(1)()()l J y k u k y k u k o k ∂∂+∂∂+∂∂(3)(3)(3)(3)()()l l l li o k net net k w ∂∂∂∂由于式(8)中的(1)()y k u k ∂+∂未知,所以可以近似用符号函数(1)sgn()()y k u k ∂+∂取代。
由数字PID 控制律式(2)可以求得:(3)0()()(1)()u k e k e k o k ∂=--∂(3)1()()()u k e k o k ∂=∂(3)2()()2(1)(2)()u k e k e k e k o k ∂=--++∂再令:(3)l δ=(3)()l J net k ∂-=∂(3)(3)(1)()[()](1)sgn()()()l l y k u k g net k e k u k o k ∂+∂+∂∂,(0,1,2)l = 可得BP 神经网络输出层的加权系数计算公式为(3)(3)(3)(2)(1)()()li li l i w k w k o k αηδ∆+=∆+同理可得隐含层加权系数的计算公式为(2)(2)(2)(1)(1)()()ij ij i j w k w k o k αηδ∆+=∆+其中 (2)i δ=2(2)(3)(3)0[()]()i l li l f net k w k δ=∑,(0,1...1)i Q =-基于BP 神经网络PID 控制算法可以归纳为:①选定BPNN 的结构,即选定输入层节点数M 和隐含层节点数Q ,并给出各层加权系数的初值(2)(0)ij w ,(3)(0)li w 选定学习速率η和惯性系数α;②采样得到()r k 和()y k ,计算()()()e k r k y k =-;③对(),(),()r i y i e i (. 1...,)i k k k p =--进行归一化处理,作为BPNN 的输入;④计算BPNN 的各层神经元的输入和输出,输出层的输出即为PID 控制器的3个参数,,p I D K K K ;⑤计算PID 控制器的输出()u k ,参与控制和计算;⑥计算修正输出层的加权系数;⑦计算修正隐含层的加权系数:⑧置1k k =+.返回②。
四、仿真程序%BP based PID Controlclear all ;close all;xite=0.25;alfa=0.05;S=1; %Signal typeIN=4;H=5;Out=3; %NN Structureif S==1 %Step Signalwi=[-0.6394 -0.2696 -0.3756 -0.7023; -0.8603 -0.2013 -0.5024 -0.2596; -1.0749 0.5543 -1.6820 -0.5437; -0.3625 -0.0724 -0.6463 -0.2859;0.1425 0.0279 -0.5406 -0.7660]; %wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325; -0.1146 0.2949 0.8352 0.2205 0.4508;0.7201 0.4566 0.7672 0.4962 0.3632]; %wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endif S==2 %Sine Signalwi=[-0.2846 0.2193 -0.5097 -1.0668; -0.7484 -0.1210 -0.4708 0.0988;-0.7176 0.8297 -1.6000 0.2049;-0.0858 0.1925 -0.6346 0.0347;0.4358 0.2369 -0.4564 -0.1324];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[1.0438 0.5478 0.8682 0.1446 0.1537;0.1716 0.5811 1.1214 0.5067 0.7370;1.0063 0.7428 1.0534 0.7824 0.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); %Output from NN middle layerI=Oh; %Input to NN middle layererror_2=0;error_1=0;ts=0.001;for k=1:1:6000time(k)=k*ts;if S==1rin(k)=1.0;elseif S==2rin(k)=sin(1*2*pi*k*ts);end%Unlinear modela(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';for j=1:1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j) )); %Middle LayerendK=wo*Oh; %Output Layerfor l=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l))); %Getting kp,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);if u(k)>=10 % Restricting the output of controlleru(k)=10;endif u(k)<=-10u(k)=-10;enddyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001)); %Output layerfor j=1:1:OutdK(j)=2/(exp(K(j))+exp(-K(j)))^2;endfor l=1:1:Outdelta3(l)=error(k)*dyu(k)*epid(l)*dK(l);endfor l=1:1:Outfor i=1:1:Hd_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);endendwo=wo_1+d_wo+alfa*(wo_1-wo_2);%Hidden layerfor i=1:1:HdO(i)=4/(exp(I(i))+exp(-I(i)))^2;endsegma=delta3*wo;for i=1:1:Hdelta2(i)=dO(i)*segma(i);endd_wi=xite*delta2'*xi;wi=wi_1+d_wi+alfa*(wi_1-wi_2);%Parameters Updateu_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('cin'); figure(2);plot(time,error,'r');xlabel('time(s)');ylabel('error'); figure(3);plot(time,u,'r');xlabel('time(s)');ylabel('cout'); 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');五、运行结果六、总结随着科学技术的发展,智能控制技术必会日趋完善,并且能够在更多的领域上应用。