BP神经网络整定的PID算法_matlab源程序.doc

BP神经网络整定的PID算法_matlab源程序.doc

ID:55631007

大小:94.00 KB

页数:4页

时间:2020-05-21

BP神经网络整定的PID算法_matlab源程序.doc_第1页
BP神经网络整定的PID算法_matlab源程序.doc_第2页
BP神经网络整定的PID算法_matlab源程序.doc_第3页
BP神经网络整定的PID算法_matlab源程序.doc_第4页
资源描述:

《BP神经网络整定的PID算法_matlab源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、%BPbasedPIDControlclearall;closeall;xite=0.28;%学习速率alfa=0.001;%惯性系数IN=4;H=5;Out=3;%NNStructure(构造,神经网络结构)wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;%构成变量Oh=zeros(H,1);%OutputfromNNmiddlelayerI=Oh;%InputtoNNmiddlelayererror_2

2、=0;error_1=0;ts=0.01;sys=tf(2.6126,[1,3.201,2.7225]);%建立被控对象传递函数(LTIViewer对象模型sys=tf(num,den)将由传递函数模型所描述系统封装成对应的系统对象模型。dsys=c2d(sys,ts,'z');%把传递函数离散化(零阶保持器法离散化)[num,den]=tfdata(dsys,'v');%离散化后提取分子、分母(提取每项的常数)fork=1:1:2000%频率参数,构成一维数组time(k)=k*ts;rin(k)=40;yout(k)=-den(2

3、)*y_1-den(3)*y_2+num(2)*u_2+num(3)*u_3;error(k)=rin(k)-yout(k);xi=[rin(k),yout(k),error(k),1];x(1)=error(k)-error_1;%计算Px(2)=error(k);%计算Ix(3)=error(k)-2*error_1+error_2;%计算Depid=[x(1);x(2);x(3)];I=xi*wi';%theoutputoftheinputlayer,and1*5forj=1:1:HOh(j)=(exp(I(j))-exp(-I

4、(j)))/(exp(I(j))+exp(-I(j)));%Middlelayer'soutputendK=wo*Oh;%OutputLayer(theinputofoutputlayer)forl=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;%theincrement(增加)oftheoutput"u"u

5、(k)=u_1+du(k);%theoutputofthevalueofcontrollingifu(k)>=45%Restricting(限制)theoutputofcontrolleru(k)=45;endifu(k)<=-45u(k)=-45;enddyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.));%当x<0时,sign(x)=-1当x=0时,sign(x)=0;当x>0时,sign(x)=1。dyu(k)表示什么%Outputlayerforj=1:1:OutdK(j)=2/(exp(K(j))

6、+exp(-K(j)))^2;%thevalueofg'()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);%wo更新%Hidden(隐藏)layerfori=1:1:HdO(i)=4/(exp(I(i))+exp(-I(i)))^2;%t

7、hevalueofthef'()endsegma=delta3*wo;%thesum(总和)fori=1:1:Hdelta2(i)=dO(i)*segma(i);%求endd_wi=xite*delta2'*xi;wi=wi_1+d_wi+alfa*(wi_1-wi_2);%不就是wi修改更新的过程吗?个人认为:如果被控对象的表达式:'yout'改变的话,权值修改的中间过程都不要改变,因为不管系统的输出是什么,bp神经网络权值修改的公式都是一样的啊。有可能的话,可以把权值的初始值改一下,不是必须的,反正神经网络会自己调整权值,只要不陷

8、入局部极小值就可以了(对不同的系统可以采取修改权值学习效率和惯性系数来调整神经网络的控制效果)%Parameters(参数,变量)Update(更新)u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。