PID神经元网络解耦控制算法_多变量系统控制

合集下载

基于PID神经元多层网络的多变量解耦控制系统

基于PID神经元多层网络的多变量解耦控制系统

基于PID神经元多层网络的多变量解耦控制系统
舒怀林;李柱
【期刊名称】《自动化仪表》
【年(卷),期】1998(019)003
【摘要】针对多变量系统控制的特点和要求,建立了一种新的多层神经网络,其隐层神经元分别具有比例,积分和微分特性,网络同时具有PID控制规律和神经网络的优点。

仿真结果表明,其构成的神经PID网络多变量控制器具有很强的自学习功能和自适应解耦能力。

【总页数】4页(P24-27)
【作者】舒怀林;李柱
【作者单位】广州大学;广州大学
【正文语种】中文
【中图分类】TP273
【相关文献】
1.基于忆阻的自适应单神经元多变量解耦PID控制器 [J], 方晓燕;王丽丹;段书凯
2.多变量PID型神经元网络控制系统及在除氧器水位解耦控制中的仿真研究 [J], 程启明;郑勇
3.基于忆阻的自适应单神经元多变量解耦PID控制器 [J], 方晓燕;王丽丹;段书凯;
4.PID神经元网络对强耦合带时延多变量系统的解耦控制 [J], 舒怀林
5.基于单神经元PID的温室系统多变量解耦控制研究 [J], 姬鹏飞;付娅琦;杨北方
因版权原因,仅展示原文概要,查看原文内容请购买。

基于改进PID神经元网络的多变量系统控制算法

基于改进PID神经元网络的多变量系统控制算法

基于改进PID神经元网络的多变量系统控制算法宋水泉【摘要】PID神经元网络具有动态特性,在系统控制应用中相比于传统的PID控制方法可取得更优的效果,但其学习算法为梯度学习算法,初始权值随机取得,为了提高其控制量逼近控制目标的速度和系统响应时间,引入粒子群算法对初始权值进行优化,最后应用Matlab软件对改进后的PID神经元网络算法进行仿真.仿真结果表明,该方法具有较好的控制性能.【期刊名称】《电子科技》【年(卷),期】2016(029)006【总页数】4页(P26-28,33)【关键词】PID;神经元网络;多变量控制系统;粒子群算法【作者】宋水泉【作者单位】惠州工程技术学校实训中心,广东惠州516001【正文语种】中文【中图分类】TP183PID神经元网络是神经元网络与PID控制方法相结合的产物。

不同于其他多层前向神经元网络中神经元系统的输入输出特性为静态和相同的特性,PID神经元网络的神经元系统具有动态特性,因此在系统控制应用中相比于传统的PID控制方法可取得更优的效果[1]。

但PID神经元网络系统使用的是梯度学习算法,它随机产生初始权值,故在整个学习过程中,存在易陷入局部最优值的问题[2],这就需要研究优化初始权值的算法以提高PID神经网络算法性能。

从结构角度对PID神经元网络 (Neural Network)进行分析,输入层、隐含层和输出层构成了PID神经元网络的3大部分,其中个控制量的PID神经元网络由个相互并列的相同子网络构成,这几个子网络之间是相互独立的,但是也通过网络连接权值进行各自之间的联系。

每个子网络的输入层由两个神经元构成,其中一个用来接收控制量的目标量,另一个用来接收控制量的当前值。

每个子网络的隐含层是通过比例元、积分元和微分元3大部分组成的,其中比例元对应于PID控制器中的比例控制,积分元对应于积分控制,而微分元对应于微分控制,多个单控制量神经元网络相组合构成了多控制量PID神经元网络[3]。

多变量系统辨识及其PID解耦控制的研究

多变量系统辨识及其PID解耦控制的研究
mu t v r b e s se l a a l y t m.Ths p p r t k s d u l-n u n o b e o t u y tm o x mp e a d i t d c s a fe u n y i i i a e a e o b e ip t a d d u l - up t s se fr e a l n n r u e rq e c o
解 决 多 变量 系统 的控 制 问 题 , 两输 入 两 输 出 系统 为 例 。 出一 种 基 于阶 跃 响 应 的 多变 量频 域模 型辨 识 方 法 . 以 提 并将 此 种 方 法 与 对 角 矩 阵 解耦 控 制 方 法 相 结合 应 用 于 多 变量 P D控 制 系统 中。 I 最后 对 滞 后 环 节 近 似 部 分 和 对 角 矩 阵 解耦 方
( fr ai dEetcE gnei ol e Sa dn i z uU ie i , , 20 0 , hn ) I om t na l r n i r gC lg , hn ogJ nh nvrt 啪 5 1 1 C ia n o n ci e n e a sy
Ab t a t W i r n r o l x mu t v ra l y tms i mo e n i d sr l p o e s s t e r d t n l sn l sr c : t mo e a d mo e c mp e l — a be s s h i i e n d r n u t a r c s e , h t i o a ig e i a i
第 1 8卷 第 6期
Vo .8 11
No6 .
电 子 设 计 工 程
El cr ni sg g n e i g e to c De i n En i e rn

PID神经元网络解耦控制算法多变量系统控制

PID神经元网络解耦控制算法多变量系统控制

%% 清空环境变量clcclear%% 网络结构初始化rate1=0.006;rate2=0.001; %学习率k=0.3;K=3;y_1=zeros(3,1);y_2=y_1;y_3=y_2; %输出值u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%第一层权值w11=k0*rand(3,2);w12=k0*rand(3,2);w13=k0*rand(3,2);%第二层权值w21=k0*rand(1,9);w22=k0*rand(1,9);w23=k0*rand(1,9);%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定%% 网络迭代优化for k=1:1:200%% 控制量输出计算%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2); y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3); y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);r1(k)=0.7;r2(k)=0.4;r3(k)=0.6; %控制目标%系统输出限制yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;x3i=w13*x3o;%比例神经元P计算xp=[x1i(1),x2i(1),x3i(1)];xp(find(xp>xpmax))=xpmax;%积分神经元I计算xi=[x1i(2),x2i(2),x3i(2)];qi=[0,0,0];qi_1=[h1i(2),h2i(2),h3i(2)];qi=qi_1+xi;qi(find(qi>qimax))=qimax;qi(find(qi<qimin))=qimin;h1i(2)=qi(1);h2i(2)=qi(2);h3i(2)=qi(3);%微分神经元D计算xd=[x1i(3),x2i(3),x3i(3)];qd=[0 0 0];xd_1=[x1i_1(3),x2i_1(3),x3i_1(3)];qd=xd-xd_1;qd(find(qd>qdmax))=qdmax;qd(find(qd<qdmin))=qdmin;h1i(3)=qd(1);h2i(3)=qd(2);h3i(3)=qd(3);%输出层计算wo=[w21;w22;w23];qo=[h1i',h2i',h3i'];qo=qo';uh=wo*qo;uh(find(uh>uhmax))=uhmax;uh(find(uh<uhmin))=uhmin;u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律%% 网络权值修正%---------------------网络反馈修正----------------------%计算误差error=[r1(k)-y1(k);r2(k)-y2(k);r3(k)-y3(k)];error1(k)=error(1);error2(k)=error(2);error3(k)=error(3);J(k)=0.5*(error(1)^2+error(2)^2+error(3)^2); %调整大小ypc=[y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3)];uhc=[u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3)];%隐含层和输出层权值调整%调整w21Sig1=sign(ypc./(uhc(1)+0.00001));dw21=sum(error.*Sig1)*qo';w21=w21+rate2*dw21;%调整w22Sig2=sign(ypc./(uh(2)+0.00001));dw22=sum(error.*Sig2)*qo';w22=w22+rate2*dw22;%调整w23Sig3=sign(ypc./(uh(3)+0.00001));dw23=sum(error.*Sig3)*qo';w23=w23+rate2*dw23;%输入层和隐含层权值调整delta2=zeros(3,3);wshi=[w21;w22;w23];for t=1:1:3delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uhc(t)+0.00000001)); endfor j=1:1:3sgn(j)=sign((h1i(j)-h1i_1(j))/(x1i(j)-x1i_1(j)+0.00001));endfor j=1:1:3for p=1:1:3alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j);endendfor p=1:1:3dws1(p,:)=alter(p)*s1(p,:);endw11=w11+rate1*dws1;%调整w12for j=1:1:3sgn(j)=sign((h2i(j)-h2i_1(j))/(x2i(j)-x2i_1(j)+0.0000001)); ends2=sgn'*[r2(k),y2(k)];wshi2_2=wshi(:,4:6);alter2=zeros(3,1);dws2=zeros(3,2);for j=1:1:3for p=1:1:3alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j);endendfor p=1:1:3dws2(p,:)=alter2(p)*s2(p,:);endw12=w12+rate1*dws2;%调整w13for j=1:1:3sgn(j)=sign((h3i(j)-h3i_1(j))/(x3i(j)-x3i_1(j)+0.0000001)); ends3=sgn'*[r3(k),y3(k)];wshi2_3=wshi(:,7:9);alter3=zeros(3,1);dws3=zeros(3,2);for j=1:1:3for p=1:1:3alter3(j)=(alter3(j)+delta2(p,:)*wshi2_3(:,j));endendfor p=1:1:3dws3(p,:)=alter2(p)*s3(p,:);endw13=w13+rate1*dws3;%参数更新u_3=u_2;u_2=u_1;u_1=uh;y_2=y_1;y_1=yn;h1i_1=h1i;h2i_1=h2i;h3i_1=h3i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i;end%% 结果分析time=0.001*(1:k);figure(1)subplot(3,1,1)plot(time,r1,'r-',time,y1,'b-');title('PID神经元网络控制','fontsize',12);ylabel('控制量1','fontsize',12);legend('控制目标','实际输出','fontsize',12);ylabel('控制量2','fontsize',12);legend('控制目标','实际输出','fontsize',12);subplot(3,1,3)plot(time,r3,'r-',time,y3,'b-');xlabel('时间(秒)','fontsize',12);ylabel('控制量3','fontsize',12);legend('控制目标','实际输出','fontsize',12);figure(2)plot(time,u1,'r-',time,u2,'g-',time,u3,'b');title('PID神经网络提供给对象的控制输入');xlabel('时间'),ylabel('被控量');legend('u1','u2','u3');gridfigure(3)figure(3)plot(time,J,'r-');axis([0,0.2,0,1]);gridtitle('控制误差曲线','fontsize',12);xlabel('时间','fontsize',12);ylabel('控制误差','fontsize',12);%function J=draw(individual)load best zbestindividual=zbest;% 函数功能:画出最优粒子对应的各种图形% individual 输入粒子% fitness 输出适应度值w11=reshape(individual(1:6),3,2);w12=reshape(individual(7:12),3,2);w13=reshape(individual(13:18),3,2);w21=individual(19:27);w22=individual(28:36);w23=individual(37:45);rate1=0.006;rate2=0.001; %学习率k=0.3;K=3;y_1=zeros(3,1);y_2=y_1;y_3=y_2; %输出值u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二个控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定for k=1:1:200%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2); y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3); y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;x3i=w13*x3o;%比例神经元P计算xp=[x1i(1),x2i(1),x3i(1)];xp(find(xp>xpmax))=xpmax;xp(find(xp<xpmin))=xpmin;qp=xp;h1i(1)=qp(1);h2i(1)=qp(2);h3i(1)=qp(3);%积分神经元I计算xi=[x1i(2),x2i(2),x3i(2)];qi=[0,0,0];qi_1=[h1i(2),h2i(2),h3i(2)];qi=qi_1+xi;qi(find(qi>qimax))=qimax;qi(find(qi<qimin))=qimin;h1i(2)=qi(1);h2i(2)=qi(2);h3i(2)=qi(3);%微分神经元D计算xd=[x1i(3),x2i(3),x3i(3)];qd=[0 0 0];xd_1=[x1i_1(3),x2i_1(3),x3i_1(3)];qd=xd-xd_1;qd(find(qd>qdmax))=qdmax;qd(find(qd<qdmin))=qdmin;h1i(3)=qd(1);h2i(3)=qd(2);h3i(3)=qd(3);%输出层计算wo=[w21;w22;w23];qo=[h1i',h2i',h3i'];qo=qo';uh=wo*qo;uh(find(uh>uhmax))=uhmax;uh(find(uh<uhmin))=uhmin;u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律%--------------------------------------网络反馈修正---------------------- %计算误差error=[r1(k)-y1(k);r2(k)-y2(k);r3(k)-y3(k)];error1(k)=error(1);error2(k)=error(2);error3(k)=error(3);J(k)=0.5*(error(1)^2+error(2)^2+error(3)^2); %调整大小ypc=[y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3)];uhc=[u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3)];%隐含层和输出层权值调整%调整w21Sig1=sign(ypc./(uhc(1)+0.00001));dw21=sum(error.*Sig1)*qo';w21=w21+rate2*dw21;%调整w22Sig2=sign(ypc./(uh(2)+0.00001));Sig3=sign(ypc./(uh(3)+0.00001));dw23=sum(error.*Sig3)*qo';w23=w23+rate2*dw23;%输入层和隐含层权值调整delta2=zeros(3,3);wshi=[w21;w22;w23];for t=1:1:3delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uhc(t)+0.00000001)); endfor j=1:1:3sgn(j)=sign((h1i(j)-h1i_1(j))/(x1i(j)-x1i_1(j)+0.00001));ends1=sgn'*[r1(k),y1(k)];wshi2_1=wshi(1:3,1:3);alter=zeros(3,1);dws1=zeros(3,2);for j=1:1:3for p=1:1:3alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j);endendfor p=1:1:3dws1(p,:)=alter(p)*s1(p,:);endw11=w11+rate1*dws1;%调整w12for j=1:1:3sgn(j)=sign((h2i(j)-h2i_1(j))/(x2i(j)-x2i_1(j)+0.0000001));ends2=sgn'*[r2(k),y2(k)];wshi2_2=wshi(:,4:6);alter2=zeros(3,1);dws2=zeros(3,2);for j=1:1:3for p=1:1:3alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j);endendfor p=1:1:3dws2(p,:)=alter2(p)*s2(p,:);endw12=w12+rate1*dws2;%调整w13for j=1:1:3sgn(j)=sign((h3i(j)-h3i_1(j))/(x3i(j)-x3i_1(j)+0.0000001));ends3=sgn'*[r3(k),y3(k)];wshi2_3=wshi(:,7:9);alter3=zeros(3,1);dws3=zeros(3,2);for j=1:1:3for p=1:1:3alter3(j)=(alter3(j)+delta2(p,:)*wshi2_3(:,j));endendfor p=1:1:3dws3(p,:)=alter2(p)*s3(p,:);u_3=u_2;u_2=u_1;u_1=uh;y_2=y_1;y_1=yn;h1i_1=h1i;h2i_1=h2i;h3i_1=h3i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i;endtime=0.001*(1:k);figure(1)subplot(3,1,1)plot(time,r1,'r-',time,y1,'b-');title('PID神经元网络控制');ylabel('被控量1');legend('控制目标','实际输出','fontsize',12);subplot(3,1,2)plot(time,r2,'r-',time,y2,'b-');ylabel('被控量2');legend('控制目标','实际输出','fontsize',12);axis([0,0.2,0,1])subplot(3,1,3)plot(time,r3,'r-',time,y3,'b-');xlabel('时间/s');ylabel('被控量3');legend('控制目标','实际输出','fontsize',12);print -dtiff -r600 改4figure(3)plot(time,u1,'r-',time,u2,'g-',time,u3,'b');title('PID神经网络提供给对象的控制输入');xlabel('时间'),ylabel('控制律');legend('u1','u2','u3');gridfigure(4)plot(time,J,'r-');axis([0,0.1,0,0.5]);gridtitle('网络学习目标函数J动态曲线');xlabel('时间');ylabel('控制误差');% BPy1=y1;% BPy2=y2;% BPy3=y3;% BPu1=u1;% BPu2=u2;% BPu3=u3;% BPJ=J% save BP r1 r2 r3 BPy1 BPy2 BPy3 BPu1 BPu2 BPu3 BPJ %%funfunction Fitness=fun(individual)% 函数功能:计算个体适应度值% individual 输入粒子% fitness 输出适应度值w11=reshape(individual(1:6),3,2);w12=reshape(individual(7:12),3,2);w13=reshape(individual(13:18),3,2);w21=individual(19:27);w22=individual(28:36);w23=individual(37:45);u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二个控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定ERROR=[];for k=1:1:200%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2); y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3); y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);r1(k)=0.7;r2(k)=0.4;r3(k)=0.6; %控制目标%系统输出限制yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;。

多变量系统模糊神经网络解耦的研究

多变量系统模糊神经网络解耦的研究

摘要复杂的工业生产过程中,被控对象动态特性往往表现出非线性、时变性、大迟延、和多变量强耦合等特点,这使得常规的单回路及传统的多变量解耦设计难以达到预期的控制效果。

目前这一主要的研究课题受到了广泛的关注,一些学者将模糊逻辑系统、神经网络、模糊神经网络等智能方法应用到多变量过程控制中。

本文在这些研究成果的基础上,提出了一种多变量系统模糊神经网络解耦的控制方法。

该方法结合了基于模糊自适应整定PID控制算法和改进型模糊神经网络解耦算法,用于球磨煤机制粉系统和循环流化床锅炉床温-主汽压力系统中,对解耦设计方案进行了仿真研究,结果表明,该方案比传统的PID解耦控制方案的控制效果明显要好。

关键词:多变量系统,模糊自适应,模糊神经网络,解耦控制,床温-主汽压力系统,球磨煤机制粉系统ABSTRACTIt is difficult to achieves anticipated control effect with traditional Single-loop or muti-variable decoupling design methods. At present, many scholars have fans on this topic, many intelligent control methods such as fuzzy control, neural network, fuzzy neural network have been used in multivariable system.In the foundation of these results, a kind of multivariable fuzzy neural network decoupling control method is put forward, fuzzy auto-adapted PID control and advanced fuzzy network decoupling algorithm is used. The method has been used in ball mill system and CFB control. It is shown by simulation results that the control effect with this method is obviously better than traditional PID control method.Ping Yuhuan (School of control science & engineering)Directed by prof. Yu XiningKEY WORDS:Multivariable system, fuzzy auto-adapted, FNN, decoupling control, bed temperature-main steam pressure control system; ball mill system目录中文摘要英文摘要第一章绪论 (1)1.1课题的研究背景及意义 (1)1.2多变量系统解耦理论的发展与现状 (1)1.2.1传统解耦 (1)1.2.2智能解耦方法 (2)1.2.3模糊神经网络解耦 (3)1.3论文的主要研究内容 (4)第二章多变量系统解耦的基本理论 (5)2.1几种基本的解耦设计方法 (5)2.1.1对角矩阵综合法 (5)2.1.2单位矩阵综合法 (5)2.1.3 N yquist阵列法 (5)2.2耦合系统变量之间的配对 (6)2.3多变量回路间动态耦合的影响 (8)2.4 本章小结 (9)第三章模糊神经网络理论 (10)3.1模糊逻辑系统 (10)3.1.1模糊理论基本概念 (10)3.1.2模糊逻辑系统 (11)3.2神经网络的基本原理 (12)3.3模糊神经网络的基本理论 (14)3.3.1模糊神经网络的结构 (14)3.3.1.1基于标准模糊模型的模糊神经网络 (15)3.3.1.2基于T-S模型的模糊神经网络 (16)3.3.2一种改进型的模糊神经网络 (16)3.4改进型模糊神经网络实现超前补偿作用的仿真实验 (17)3.5 本章小结 (19)第四章基于模糊神经网络的解耦设计 (20)4.1模糊自适应整定PID控制算法 (20)4.1.1模糊自整定PID控制算法介绍 (20)4.1.2模糊自适应PID调节器抗干扰性和鲁棒性仿真试验 (22)4.2基于模糊神经网络的多变量系统解耦 (24)4.2.1模糊神经网络解耦设计 (25)4.2.1.1模糊神经网络解耦的理论分析 (25)4.2.1.2多变量系统模糊神经网络解耦方案的具体实现 (26)4.2.2模糊神经网络解耦器训练算法 (27)4.2.3模糊神经网络解耦仿真实例 (28)4.3基于模糊神经网络的多变量系统解耦控制实现步骤 (30)4.4本章小结 (31)第五章多变量系统解耦控制的仿真研究 (32)5.1循环流化床锅炉床温-主汽压力系统的解耦控制 (32)5.1.1循环流化床锅炉燃烧系统简介 (32)5.1.2循环流化床锅炉床温-主汽压力对象模型及其相对增益矩阵分析 (33)5.1.3循环流化床锅炉床温-主汽压力系统解耦控制仿真研究 (34)5.1.3.1开环解耦设计与仿真研究 (34)5.1.3.2解耦后控制系统的闭环设计及仿真试验 (38)5.2 球磨煤机制粉系统的解耦控制 (44)5.2.1球磨煤机制粉系统及数学模型 (44)5.2.2球磨煤机制粉系统的解耦控制仿真试验 (45)5.3本章小结 (47)第六章结论与展望 (48)6.1论文的主要工作与总结 (48)6.2存在的问题及今后工作的展望 (49)参考文献 (50)致谢 (53)在学期间发表的学术论文和参加科研情况 (54)第一章绪论1.1课题的研究背景及意义随着工业的发展,生产过程越来越复杂,耦合成为生产过程动态特性普遍存在的一种现象,一个复杂的系统中,需要控制的变量常常不只一对,而且这些变量之间往往以这种或那种形式相互关联着。

基于PID神经网络的多变量强耦合时变控制系统

基于PID神经网络的多变量强耦合时变控制系统

基于PID神经网络的多变量强耦合时变控制系统舒怀林* 郭秀才** 舒华**(广州大学信息与控制技术研究所,广东广州, 510091,hlshu@)**(西安科技大学自动化学院,陕西西安, 710054, guoxiucai@)摘要:本文介绍了一种新的神经网络——PID神经网络及其多变量强耦合时变控制系统。

文中给出了网络的结构和算法,分析了时变对象的特点,对一组二变量强耦合时变系统进行了实时仿真,显示了PID神经网络对多变量强耦合时变对象的良好解耦性能和自学习控制特性。

关键词:多变量时变系统,PID神经网络,自学习控制,解耦控制Multivariable Strong-coupled Time-varying System Based on PIDNeural NetworkShu Huailin* Guo Xiucai** Shu Hua**(Guangzhou University, Guangzhou, 510091, China, hlshu@)**(Xian University of Technology, Xian, 710054, China, guoxiucai@)Abstract: The paper introduces a new kind of neural network: PID neural network and the multivariablestrong-coupled time-varying system. The structure and the algorithm are given the simulation results are shown. It is proved that the PID neural network has perfect decouple and self-learning control performance forstrong-coupled time-varying system.Key words: Multivariable system, time-varying system, PID neural network, decouple control.1 引言传统方法设计多变量系统控制器一般分两个步骤进行,第一步是解除系统各个变量之间的耦合作用,即设计解耦器,将一个多变量系统分解为多个单变量系统;第二步是设计控制器,对各个变量分别进行控制。

神经网络PID控制

神经网络PID控制
入r (k )、 输 出y(k )、 误 差e(k )和 常 量1。 学 习 速 率=0.25,
动量系数=0.05,加权系数初始值取区间-0.5 0.5
上的随机数。
当输入信号为幅值是1的正弦信号r(t )sin(2t)时,
取采样时间为0.001s, 仿真结果如图所示。
神经网络PID控制
27
神经网络PID控制
g
net
( l
3
)
(
k
)
l 1,2,3
(15)
O1(3) (k ) K P
O2(3) (k ) K I
O3(3) (k ) K D


(3 li
)为







(3) lQ
l为阈值,
g[] 1 [1 tanh( x)] 2
神经网络PID控制
21
取性能指标
J 1 r(k 1) y(k 1) 2 1 e2(k 1)
神经网络PID控制
25
7.
由(20)式








的权


(3) li
(
k
);
8.
由(21)式








的权


(2) ij
(k
);
9. 置k k 1, 返回到“3”,直到性能指标J
满足要求。
神经网络PID控制
26
仿真实例: 设被控对象的近似数学模型为
a(k) y(k 1) y(k) 1 y2 (k 1) u(k 1) 系数a(k )是慢时变的,a(k ) 1.2(1 0.8e0.1k ), 神经网络 结构为4-5-3,输入层的4个神经元分别为模型的输

多变量耦合系统PID神经网络控制方法研究

多变量耦合系统PID神经网络控制方法研究

多变量耦合系统PID神经网络控制方法研究朱林;吴冬雪;赵倩【摘要】多变量系统内部的耦合性以及对象参数的复杂性,给控制系统的设计带来了一系列的问题。

传统控制方法无法对其进行精确解耦,导致系统控制精度较低。

本文构建一种基于遗传算法优化的PID神经网络解耦控制器。

该方法利用PID优良的动态控制特性和神经元网络非线性表达能力对多变量耦合系统进行解耦,在神经网络权值修正算法中增加动量项,提高网络学习效率,并采用遗传算法优化初始权值,克服了PID神经网络权值学习过程中易陷入局部最优值的缺点,提高了控制精度。

仿真结果表明:优化后的PID神经网络具有较高的稳态精度和较快的响应速度,能够实现解耦控制。

【期刊名称】《制造业自动化》【年(卷),期】2014(000)003【总页数】4页(P125-128)【关键词】神经网络;遗传算法;多变量;解耦;PID控制【作者】朱林;吴冬雪;赵倩【作者单位】内蒙古科技大学信息工程学院,包头014010;内蒙古科技大学信息工程学院,包头014010;中海石油海南天然气有限公司,海口578001【正文语种】中文【中图分类】TP1830 引言以多变量、强耦合、非线性为特点的复杂工业过程控制,一直是控制理论与控制工程领域的研究热点和前沿。

复杂工业过程控制由于数学模型变量多、变量间耦合、非线性和高阶,相应控制器设计困难。

在工业控制中,PID控制一直是通用、有效的控制方法[1]。

但是,面对多变量、强耦合、非线性为特点的复杂工业过程,PID控制效果会变差甚至不可控。

神经网络具有很强的自学习、自适应和任意非线性表达能力,近年来逐渐应用于复杂系统的控制中。

当系统存在不确定性因素时,更能体现神经网络的优越性。

文献[2]以二变量耦合时变系统为对象,设计了一种PID神经网络模型。

该模型与用神经网络对PID控制器参数进行辅助修改的方法有本质的区别[3,4]。

应用PID神经网络控制时,无需为对象的参数和系统结构进行辨识,可根据对象参数变化时对系统输出的影响,“在线”地调整PID神经网络的权值,较好地解决了多变量、耦合系统的控制难题。

网络PID在协调控制系统中的研究

网络PID在协调控制系统中的研究

网络PID 在协调控制系统中的研究X邢换生(呼和浩特供电局,内蒙古呼和浩特 010010) 摘 要:本文针对大型单元机组协调控制对象复杂、非线性、大滞后、模型难以建立等特点,设计了神经网络PID 控制策略,用神经网络在线调整PID 控制器的比例、积分和微分的系数。

利用神经网络可以在一定条件下逼近非线性系统的特点,很好的解决了传统PID 控制参数整定难以达到最优状态的缺点。

将该控制策略应用于某火电厂协调控制系统中,取得了良好的控制效果。

关键词:神经网络;PID;协调控制 中图分类号:T D217 文献标识码:A 文章编号:1006—7981(2012)08—0015—02 神经单元机组协调控制系统是多变量、强耦合、大迟延、非线性系统,研究协调控制系统,提高机组的控制性能,可以改善电网的综合自动化水平,确保高质量的电力供应。

目前协调控制系统设计中,大多数是采用传统PID 进行设计的。

传统的PID 调节器因其技术成熟在过程控制中应用广泛,但对一些复杂过程,时变的参数系统,虽然具有实现简单和鲁棒性能好等优点,但PID 参数的整定往往难以达到最佳状态。

并且即使针对某一工作点PID 获得了控制的最优参数,但由于控制对象具有时变性,仍存在整个工作范围和保持长期工作最优的问题。

神经网络可在一定条件下逼近非线性,而且结构和学习算法简单。

综合考虑上述问题,本文将神经网络与传统PID 控制相结合。

在传统PID 控制器的基础上增加神经网络,通过神经网络在线调整PID 控制参数。

克服了PID 控制参数整定难以达到最优状态的缺点。

1 控制器的设计1.1 设计原理图 基于B 神经网络的ID 控制器结构本文提出的基于BP 神经网络PID 控制器由:静态解耦部分;经典的PID 控制器:直接对被控对象过程闭环控制,并且三个参数k p 、k i 、k d 为在线整定式;神经网络NN ,三部分组成:控制结构如图1所示。

输出层神经元的输出状态对应于PID 控制器的三个可调参数k p 、k i 、k d ,通过神经网络的自身学习、加权系数调整,从而使其稳定状态对应于某种最优控制律下的PID 控制器参数。

单神经元PID多变量解耦控制研究18

单神经元PID多变量解耦控制研究18

单神经元PID多变量解耦控制研究摘要对于具有非线性、大迟滞、强耦合特点的多变量系统,研究人员很难找到理想方法解决控制中的诸多问题。

对于多变量系统之间的耦合,有些可以采取被调量和调节量之间的适当匹配,和重新整定调节器的方法加以克服。

PID控制方法是经典控制算法中的典型代表,并在多种控制场合取得了很好的效果,但随着生产工艺的日益复杂和人们对工业过程总体性能要求的不断提高,传统的PID控制方法往往难以满足闭环优化控制的要求。

基于知识且不依赖于模型的智能控制为解决这类问题提供了新的思路,成为目前提高过程控制质量的重要途经。

而神经网络作为现代信息处理技术的一种,正在很多应用中显示它的优越性,它在自动控制领域的应用成果---神经网络控制也成为令人瞩目的发展方向。

单神经元作为构成神经网络的基本单位,具有很强的信息综合、学习记忆和自学习、自适应能力,可以处理那些难以用模型和规则描述的过程,而且结构简单易于计算。

若将这两者结合,则可以在一定程度上解决传统PID调节器不易在线实时整定参数、难于对一些复杂过程和参数慢时变系统进行有效控制的不足。

正是利用它们的优点做成单神经元自适应PID控制器对多变量系统进行解耦控制会起到一个很好的控制效果。

关键字:解耦控制系统;多变量解耦;单神经元自适应PIDThe Research Of Single Neuron PID Multivariable Decoupling ControlAbstractFor the nonlinear, heavy delay, the strong coupling characteristics of multivariable systems, Research ers are difficult to find an effective control strategy. For multivariable systems, the coupling, and some can be taken to adjust capacity and transfer the appropriate amount of matching, and re-tuning regulator approaches to overcome. PID control method is one of the traditional control methods and gets good effects under many application situations. But with the increase in complexity of manufacture technology and demands of industrial process performance, the conventional PID control can not meet the requirement of closed loop optimized control, Intelligent control independent of model of a plant and based on knowledge offers a new idea for improving the process control quality, of which neural network as one of modern information process technologies, has some advantages in man y applications. Neural network control became a regarded research direction. Single neuron as a neural network the basic unit, has the very strong ability in information synthesis, study memory, self-study, and adaptation, so, it can deal with some processes that are difficult to describe with the model or rule, structure is simple and calculation is very easy. *If they combination, they can to some extent solve the traditional PID controller difficult online real-time setting parameters, some difficult to deal with complex process and parameters slow time-varying systems for effective control inadequate. It is use the single neuron adaptive PID controller's advantages for multivariable control systems decoupling will play a very good control effect. Keywords:Decoupling Control System; Multivariable Decoupling;Single Neuron Adaptive PID目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 课题研究背景 (1)1.1.1 工业控制中常见的耦合现象 (1)1.1.2 研究解耦控制系统目的及意义 (2)1.2 解耦控制的国内外研究现状 (3)1.2.1 解耦控制研究现状和成果 (3)1.2.2 解耦控制的研究方法和内容 (3)第2章数字PID控制简介 (4)2.1 PID控制的基本原理 (4)2.2 数字PID控制算法 (4)2.2.1 位置式PID控制算法 (5)2.2.2 增量式PID控制算法 (5)第3章单神经元PID控制系统 (7)3.1 单神经元简介 (7)3.1.1 单神经元模型 (7)3.1.2 单神经元学习规则 (7)3.2 基于单神经元的PID控制 (8)3.2.1 基于单神经元的自适应PID控制器 (8)第4章多变量解耦控制 (12)4.1 多变量过程控制系统解耦控制 (12)4.1.1 多变量过程控制系统解耦原理与方法 (12)4.1.2 多变量过程控制系统智能解耦技术 (17)4.2 单神经元自适应PID多变量解耦控制 (18)结论 (20)致谢 (21)参考文献 (22)第1章绪论多输入多输出(MIMO)系统内部结构复杂,往往存在有一定程度的耦合作用,一个输入信号的变化可能会使多个输出量发生变化,每个输出量也不只受一个输入信号的影响。

基于PSO算法优化的PID神经网络解耦控制算法研究

基于PSO算法优化的PID神经网络解耦控制算法研究

基于PSO算法优化的PID神经网络解耦控制算法研究摘要:针对目前在工业控制中,被控系统往往是多变量、非线性、强耦合的时变系统。

多变量系统的回路之间存在耦合,为了得到满意的控制效果,必须对多变量系统实行解耦控制。

本文通过增加动量项的方法提高网络学习效率,同时引入粒子群算法(PSO)来训练神经网络PID控制器的参数,并针对多变量控制系统开展仿真验证,取得了满意的控制效果。

关键词:PID神经网络;粒子群算法;多变量系统;解耦控制算法1引言工业控制中,被控系统大多数是多变量系统(MIMO)。

与单变量系统(SISO)相比,MIMO系统有多个输入和输出,内部结构复杂。

以基于古典控制理论的串联解耦方法为代表的传统解耦方法主要适用于线性定常MIMO系统。

近年来,将自适应控制、神经网络控制及遗传算法融合在一起的智能解耦方法更多的应用到多变量、非线性、强耦合的时变系统中。

PID神经网络是一种由比例(P)、积分(I)、微分(D)神经元组成的多层神经网络,具有PID控制和神经网络的优点,具有较强的自适应的学习能力、容错性和鲁棒性。

对于多变量强耦合时变系统, PID神经网络可以通过在线学习,根据对象参数发生变化时对系统输出性能的影响来调整连接权值,改变网络中比例、积分和微分作用的强弱,使系统具备较好的动态和静态特性,达到系统解耦控制的目的。

本文将在给出PID神经网络算法的基础上,通过增加动量项的方法提高网络学习效率,同时引入粒子群算法(PSO)来训练神经网络PID控制器的初始权值得到最优初始权值,并针对多变量控制系统开展仿真验证,取得了满意的控制效果。

2PID神经网络算法及其改进2.1.增加动量项的PID神经网络算法PID神经网络分为输入层、隐含层和输出层,输入量为控制量当前值和目标值,输出量为控制律,完成解耦控制工作。

设PID神经网络有n个输出端,则神经网络拓扑结构由n个子网交叉并联,构成结构的网络,各层输入输出计算公式如下:(1)输入层输入层包含2n个输入神经元,其输入输出关系为:( 1)式(1)中:为输入层神经元的输入值;为输入层神经元的输出值;为并列子网的序号,。

基于搜寻者优化算法的 PID神经网络解耦控制

基于搜寻者优化算法的 PID神经网络解耦控制

基于搜寻者优化算法的 PID神经网络解耦控制刘俊【摘要】传统的PID神经网络,由于初始权值随机选择,权值学习采用BP算法,所以容易陷入局部极值,进而导致该方法无法得到高精度的控制结果。

该文提出采用搜寻者优化算法优化PID神经网络初始权值,再把最优初始权值带入PID神经网络,实现解耦控制。

对一个耦合系统进行仿真实验,结果表明,与目前控制效果较好的粒子群算法优化PID神经网络相比,该算法收敛速度更快、稳态误差更小,同时也具有良好的自适应和抗干扰能力,能够实现快速、高精度、稳定的解耦控制。

%Traditional PID neural network , in which initial weights are randomly selected and weight learning method uses BP algorithm , tends to fall into local extremum , so the method cannot get precise control.Seeker optimization algorithm(SOA) is adopted to optimize the initial weights of PID neural net-work, and the decoupling control is realized by putting the optimal initial weights into PID neural net -work.A coupling system is simulated , and the result shows that , compared with PID neural network which is based on particle swarm algorithm ( PSO) , PID neural network which is based on SOA ( SOA-PIDNN) shares better control effect and smaller steady -state error;moreover, SOA-PIDNN is endowed with adaptive and anti -interference ability , which facilitate rapid , accurate and stable decoupling con-trol.【期刊名称】《工业仪表与自动化装置》【年(卷),期】2015(000)005【总页数】4页(P97-100)【关键词】搜寻者优化算法;PID;解耦控制;神经网络【作者】刘俊【作者单位】商洛学院电子信息与电气工程学院,陕西商洛726000【正文语种】中文【中图分类】TP1830 引言在工业控制过程中,存在大量的非线性、多变量、强耦合的控制系统。

基于PID神经网络的多变量解耦技术在变风量空调中的应用

基于PID神经网络的多变量解耦技术在变风量空调中的应用

成, 各个子网络的输入层至隐层是相互独立的 , 每个 输入层有两个神经元 ,其输入分别是控制系统一对 给定值和输出值 ( ,s , l2 34 r y)s , ,,。每个 网络的隐 s =
R7

层有三个神经元 , 分别为 比例元()积分元( 、 P、 I 微分 ) 元()它们的输出函数分别对应 比例( )积分() D, P、 I、 微分( 三个部分 。子网络在隐层至输出层相互交 D) 叉耦合 ,网络的输 出层完成 P I D控制规律的综合 , 形成多维控制量 , 实现多变量 系统的解耦和 自治调 节 。 、 D系数由网络的权重值体现。 PI 、 控制系统如图
由以上 的仿真结果可知 , 使用神经 PD 网络控 I 制可以通过网络的反传算法完成对 网络权重值的修 改,在变风量空调控制系统中表现出很强的自学 习 和白 适应解耦能力 , 并能实现解耦和控制 , 使系统具
有 较好 的动态 和静 态特 陛 , 到较 好 的控 制效 果 。 达 从
y 隐层 : O 一。 h w () 1 = 隐层至输 出层的权重初值在无先验的情况下可 设定 为小 正数 。
络 的
卿 华 毛永明 ( 沈阳建筑大学信息与控制工程学 院, 辽宁 沈阳 10 6 ) 118
(nomai Ifr t n&C nrl n ier g aut , hn a gJ n h iesy L annS e g a g 1 18 o o t gn ei cl S e yn a zuUnv ri , i i h n yn oE nF y i t o 1 06 Q n u oY n mig igH aMa o g n
w 0: 01 ’()+ . 3 仿 真
能量损耗的角度来讲 , 由于神经 PD网络控制 响应 I 时间快 , 超调 量小 , 时对冷 水流 量 、 这 风机 转 速 、 间 房

基于PID网络的航空发动机多变量系统解耦控制

基于PID网络的航空发动机多变量系统解耦控制

so a,h r oe eo p n ot l r a oddcu l g e om c ,o sv m , i rc i l r hw t t te o sddcu l gcn o e s o eopi r r a e l j t ei e hg peio e o h pp i rl h g npf n w ui t h sn T
加风扇导 叶角使输 出量均减 少 , 增加压 气机 导叶角使 r t 和
增加 , 和 PT减少 。 l 输入变量 的选择充分利用 了发动机 的可 调变量 , 可充分
控制 方法 和神 经网络的缺点 。经仿真证明 , 用 PD网络 采 I
建立 的航 空发 动机解耦控制 能够满足控制要求 。
t n o ma l et r ain a c r i g t h e e a r cp e fa r e g n p r t n a d v r l ee t n e o d, i fs l r b t c od n o t e g n r p n i lso e o n i e o e a i n a a e s lci .S c n o p u o l i o i b o mo n u P DNN wa s d t e i n te d c u l g c n r l r fr a r e gn t ts mo e . T e s lt n r s l me t m I su e o d sg h e o p i o t l eo n ie sae d 1 h i a i e ut n oe o mu o s
问题 … 。
Y : Cx + Du
其中, ,H u ,8G , r, =[Ln ,,, :[ n r,:[ A , " G Y n, Pr ,

通信网络-基于BP神经网络的多变量PID解耦控制

通信网络-基于BP神经网络的多变量PID解耦控制

薛昊洋 刘红军(华北电力大学自动化系,保定市 071003)Xue Haoyang Liu Hongjun(Automatic Department of North China Electric Power University, Baoding 071003)基于BP神经网络的多变量PID解耦控制Multivariate Decoupling Control Based on Back Propagation Neural NetworkAbstract: Intelligent PID control strategy, which is based on neural network, is according to classical PID control,realized through neural network parameter setting which has self study function for multivariate decoupling control.The structure and the algorithm were given and the real-time simulation results of double variable and strong-coupled time-varying system were shown in the paper. It proved that PID control based on neural network has preferably self study and self adapting decoupling control ability through simulation. The system, which inosculates the decoupler and controler, is easy to implement and applicable for multivariate decoupling control. It makes the decoupled system have better dynamic behavior and static characteristic. Especially, it makes parameters astringe fast when determing initial value of network according to BP control law.Key words: PID Control Neural Network Multivariable System Decoupling Control【摘 要】基于神经网络实现智能PID控制的策略,它以经典的PID控制为基础,通过神经网络参数整定实现,进而进行自学,用于多变量系统的解耦控制。

PID神经元网络与控制算法

PID神经元网络与控制算法

在传统的控制中,往往只考虑控制系统和受控系统所组成的独立体系, 忽略了环境所施与的影响,而现在的大规模复杂的控制和决策问题,必须 把外界环境和对象,以及控制系统作为一个整体来进行分析和设计。
工程用语到数学描述的映射过程中,一方面使问题作了很多简化,但 另一方面却使原问题丢失了很多信息。
(1)不适应不确定系统的控制 (2)不适应非线性系统的控制 (3)不适应时变系统的控制 (4)不适应多变量系统的控制
假设水箱假设咱们这个水箱不仅仅是
装水的容器了,还需要持续稳定的给用户 供水。
dx=u-c
当dx=0时,e= c .e在系统稳定时不为零,这就是 kp
所谓的静差.如果c固定,增大k p那么e就会减小.
增大比例系数k
有利于在有静差的情况下减小静
p
差.
积分的意义在于相当于你增加了一个水龙
头,这个水龙头的规则是,水位比预定水位低 就一直往大拧,比预定高度高就往小拧.如果漏 水速度不变,那么总有一天这个水龙头的出水 速度恰好和漏水速度相同.
神经元网络是以大脑生理研究成果为基础模拟大脑的某些机理或者机 制,由人工建立的以有向图为拓扑结构的网络,它通过对连续或断续的的 输入做响应处理。神经元网络具有很强的信息综合能力,它能处理大量不 同类型的输入信息。
基于神经元的智能控制系统也称基于连接机制的智能控制系统,随着人 工智能网络越来越多地应用于控制领域的各个方面。从过程控制,机器人控 制,生产制造,模式识别,直到决策支持都有许多应用神经元网络的例子。 它在系统的辨识、建模、自适应控制中特别收到重视,尤其是他比较好地解 决了具有不确定性、严重非线性、时变和滞后的复杂系统的建模和控制问题。 但是,一般神经元网络的弱点,制约了其在控制系统中的应用.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%% 清空环境变量clcclear%% 网络结构初始化rate1=0.006;rate2=0.001; %学习率k=0.3;K=3;y_1=zeros(3,1);y_2=y_1;y_3=y_2; %输出值u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二个控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%第一层权值w11=k0*rand(3,2);w12=k0*rand(3,2);w13=k0*rand(3,2);%第二层权值w21=k0*rand(1,9);w22=k0*rand(1,9);w23=k0*rand(1,9);%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定%% 网络迭代优化for k=1:1:200%% 控制量输出计算%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2);y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3);y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);r1(k)=0.7;r2(k)=0.4;r3(k)=0.6; %控制目标%系统输出限制yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;x3i=w13*x3o;%比例神经元P计算xp=[x1i(1),x2i(1),x3i(1)];xp(find(xp>xpmax))=xpmax;xp(find(xp<xpmin))=xpmin;qp=xp;h1i(1)=qp(1);h2i(1)=qp(2);h3i(1)=qp(3);%积分神经元I计算xi=[x1i(2),x2i(2),x3i(2)];qi=[0,0,0];qi_1=[h1i(2),h2i(2),h3i(2)];qi=qi_1+xi;qi(find(qi>qimax))=qimax;qi(find(qi<qimin))=qimin;h1i(2)=qi(1);h2i(2)=qi(2);h3i(2)=qi(3);%微分神经元D计算xd=[x1i(3),x2i(3),x3i(3)];qd=[0 0 0];xd_1=[x1i_1(3),x2i_1(3),x3i_1(3)];qd=xd-xd_1;qd(find(qd>qdmax))=qdmax;qd(find(qd<qdmin))=qdmin;h1i(3)=qd(1);h2i(3)=qd(2);h3i(3)=qd(3);%输出层计算wo=[w21;w22;w23];qo=[h1i',h2i',h3i'];qo=qo';uh=wo*qo;uh(find(uh>uhmax))=uhmax;uh(find(uh<uhmin))=uhmin;u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律%% 网络权值修正%---------------------网络反馈修正----------------------%计算误差error=[r1(k)-y1(k);r2(k)-y2(k);r3(k)-y3(k)];error1(k)=error(1);error2(k)=error(2);error3(k)=error(3);J(k)=0.5*(error(1)^2+error(2)^2+error(3)^2); %调整大小ypc=[y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3)];uhc=[u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3)];%隐含层和输出层权值调整%调整w21Sig1=sign(ypc./(uhc(1)+0.00001));dw21=sum(error.*Sig1)*qo';w21=w21+rate2*dw21;%调整w22Sig2=sign(ypc./(uh(2)+0.00001));dw22=sum(error.*Sig2)*qo';w22=w22+rate2*dw22;%调整w23Sig3=sign(ypc./(uh(3)+0.00001));dw23=sum(error.*Sig3)*qo';w23=w23+rate2*dw23;%输入层和隐含层权值调整delta2=zeros(3,3);wshi=[w21;w22;w23];for t=1:1:3delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uhc(t)+0.00000001)); endfor j=1:1:3sgn(j)=sign((h1i(j)-h1i_1(j))/(x1i(j)-x1i_1(j)+0.00001));ends1=sgn'*[r1(k),y1(k)];wshi2_1=wshi(1:3,1:3);alter=zeros(3,1);dws1=zeros(3,2);for j=1:1:3for p=1:1:3alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j);endendfor p=1:1:3dws1(p,:)=alter(p)*s1(p,:);endw11=w11+rate1*dws1;%调整w12for j=1:1:3sgn(j)=sign((h2i(j)-h2i_1(j))/(x2i(j)-x2i_1(j)+0.0000001)); ends2=sgn'*[r2(k),y2(k)];wshi2_2=wshi(:,4:6);alter2=zeros(3,1);dws2=zeros(3,2);for j=1:1:3for p=1:1:3alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j);endendfor p=1:1:3dws2(p,:)=alter2(p)*s2(p,:);endw12=w12+rate1*dws2;%调整w13for j=1:1:3sgn(j)=sign((h3i(j)-h3i_1(j))/(x3i(j)-x3i_1(j)+0.0000001)); ends3=sgn'*[r3(k),y3(k)];wshi2_3=wshi(:,7:9);alter3=zeros(3,1);dws3=zeros(3,2);for j=1:1:3for p=1:1:3alter3(j)=(alter3(j)+delta2(p,:)*wshi2_3(:,j));endendfor p=1:1:3dws3(p,:)=alter2(p)*s3(p,:);endw13=w13+rate1*dws3;%参数更新u_3=u_2;u_2=u_1;u_1=uh;y_2=y_1;y_1=yn;h1i_1=h1i;h2i_1=h2i;h3i_1=h3i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i;end%% 结果分析time=0.001*(1:k);figure(1)subplot(3,1,1)plot(time,r1,'r-',time,y1,'b-');title('PID神经元网络控制','fontsize',12);ylabel('控制量1','fontsize',12);legend('控制目标','实际输出','fontsize',12);subplot(3,1,2)plot(time,r2,'r-',time,y2,'b-');ylabel('控制量2','fontsize',12);legend('控制目标','实际输出','fontsize',12);subplot(3,1,3)plot(time,r3,'r-',time,y3,'b-');xlabel('时间(秒)','fontsize',12);ylabel('控制量3','fontsize',12); legend('控制目标','实际输出','fontsize',12);figure(2)plot(time,u1,'r-',time,u2,'g-',time,u3,'b');title('PID神经网络提供给对象的控制输入');xlabel('时间'),ylabel('被控量');legend('u1','u2','u3');gridfigure(3)figure(3)plot(time,J,'r-');axis([0,0.2,0,1]);gridtitle('控制误差曲线','fontsize',12);xlabel('时间','fontsize',12);ylabel('控制误差','fontsize',12);%function J=draw(individual)load best zbestindividual=zbest;% 函数功能:画出最优粒子对应的各种图形% individual 输入粒子% fitness 输出适应度值w11=reshape(individual(1:6),3,2);w12=reshape(individual(7:12),3,2);w13=reshape(individual(13:18),3,2);w21=individual(19:27);w22=individual(28:36);w23=individual(37:45);rate1=0.006;rate2=0.001; %学习率k=0.3;K=3;y_1=zeros(3,1);y_2=y_1;y_3=y_2; %输出值u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二个控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定for k=1:1:200%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2);y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3);y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);r1(k)=0.7;r2(k)=0.4;r3(k)=0.6; %控制目标%系统输出限制yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;x3i=w13*x3o;%比例神经元P计算xp=[x1i(1),x2i(1),x3i(1)];xp(find(xp>xpmax))=xpmax;xp(find(xp<xpmin))=xpmin;qp=xp;h1i(1)=qp(1);h2i(1)=qp(2);h3i(1)=qp(3);%积分神经元I计算xi=[x1i(2),x2i(2),x3i(2)];qi=[0,0,0];qi_1=[h1i(2),h2i(2),h3i(2)];qi=qi_1+xi;qi(find(qi>qimax))=qimax;qi(find(qi<qimin))=qimin;h1i(2)=qi(1);h2i(2)=qi(2);h3i(2)=qi(3);%微分神经元D计算xd=[x1i(3),x2i(3),x3i(3)];qd=[0 0 0];xd_1=[x1i_1(3),x2i_1(3),x3i_1(3)];qd=xd-xd_1;qd(find(qd>qdmax))=qdmax;qd(find(qd<qdmin))=qdmin;h1i(3)=qd(1);h2i(3)=qd(2);h3i(3)=qd(3);%输出层计算wo=[w21;w22;w23];qo=[h1i',h2i',h3i'];qo=qo';uh=wo*qo;uh(find(uh>uhmax))=uhmax;uh(find(uh<uhmin))=uhmin;u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律%--------------------------------------网络反馈修正----------------------%计算误差error=[r1(k)-y1(k);r2(k)-y2(k);r3(k)-y3(k)];error1(k)=error(1);error2(k)=error(2);error3(k)=error(3);J(k)=0.5*(error(1)^2+error(2)^2+error(3)^2); %调整大小ypc=[y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3)];uhc=[u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3)];%隐含层和输出层权值调整%调整w21Sig1=sign(ypc./(uhc(1)+0.00001));dw21=sum(error.*Sig1)*qo';w21=w21+rate2*dw21;%调整w22Sig2=sign(ypc./(uh(2)+0.00001));dw22=sum(error.*Sig2)*qo';w22=w22+rate2*dw22;%调整w23Sig3=sign(ypc./(uh(3)+0.00001));dw23=sum(error.*Sig3)*qo';w23=w23+rate2*dw23;%输入层和隐含层权值调整delta2=zeros(3,3);wshi=[w21;w22;w23];for t=1:1:3delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uhc(t)+0.00000001)); endfor j=1:1:3sgn(j)=sign((h1i(j)-h1i_1(j))/(x1i(j)-x1i_1(j)+0.00001));ends1=sgn'*[r1(k),y1(k)];wshi2_1=wshi(1:3,1:3);alter=zeros(3,1);dws1=zeros(3,2);for j=1:1:3for p=1:1:3alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j);endendfor p=1:1:3dws1(p,:)=alter(p)*s1(p,:);endw11=w11+rate1*dws1;%调整w12for j=1:1:3sgn(j)=sign((h2i(j)-h2i_1(j))/(x2i(j)-x2i_1(j)+0.0000001)); ends2=sgn'*[r2(k),y2(k)];wshi2_2=wshi(:,4:6);alter2=zeros(3,1);dws2=zeros(3,2);for j=1:1:3for p=1:1:3alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j);endendfor p=1:1:3dws2(p,:)=alter2(p)*s2(p,:);endw12=w12+rate1*dws2;%调整w13for j=1:1:3sgn(j)=sign((h3i(j)-h3i_1(j))/(x3i(j)-x3i_1(j)+0.0000001)); ends3=sgn'*[r3(k),y3(k)];wshi2_3=wshi(:,7:9);alter3=zeros(3,1);dws3=zeros(3,2);for j=1:1:3for p=1:1:3alter3(j)=(alter3(j)+delta2(p,:)*wshi2_3(:,j));endendfor p=1:1:3dws3(p,:)=alter2(p)*s3(p,:);endw13=w13+rate1*dws3;%参数更新u_3=u_2;u_2=u_1;u_1=uh;y_2=y_1;y_1=yn;h1i_1=h1i;h2i_1=h2i;h3i_1=h3i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i;endtime=0.001*(1:k);figure(1)subplot(3,1,1)plot(time,r1,'r-',time,y1,'b-');title('PID神经元网络控制');ylabel('被控量1');legend('控制目标','实际输出','fontsize',12);subplot(3,1,2)plot(time,r2,'r-',time,y2,'b-');ylabel('被控量2');legend('控制目标','实际输出','fontsize',12); axis([0,0.2,0,1])subplot(3,1,3)plot(time,r3,'r-',time,y3,'b-');xlabel('时间/s');ylabel('被控量3');legend('控制目标','实际输出','fontsize',12); print -dtiff -r600 改4figure(3)plot(time,u1,'r-',time,u2,'g-',time,u3,'b');title('PID神经网络提供给对象的控制输入'); xlabel('时间'),ylabel('控制律');legend('u1','u2','u3');gridfigure(4)plot(time,J,'r-');axis([0,0.1,0,0.5]);gridtitle('网络学习目标函数J动态曲线'); xlabel('时间');ylabel('控制误差');% BPy1=y1;% BPy2=y2;% BPy3=y3;% BPu1=u1;% BPu2=u2;% BPu3=u3;% BPJ=J% save BP r1 r2 r3 BPy1 BPy2 BPy3 BPu1 BPu2 BPu3 BPJ%%funfunction Fitness=fun(individual)% 函数功能:计算个体适应度值% individual 输入粒子% fitness 输出适应度值w11=reshape(individual(1:6),3,2);w12=reshape(individual(7:12),3,2);w13=reshape(individual(13:18),3,2);w21=individual(19:27);w22=individual(28:36);w23=individual(37:45);rate1=0.006;rate2=0.001; %学习率k=0.3;K=3;y_1=zeros(3,1);y_2=y_1;y_3=y_2; %输出值u_1=zeros(3,1);u_2=u_1;u_3=u_2; %控制率h1i=zeros(3,1);h1i_1=h1i; %第一个控制量h2i=zeros(3,1);h2i_1=h2i; %第二个控制量h3i=zeros(3,1);h3i_1=h3i; %第三个空置量x1i=zeros(3,1);x2i=x1i;x3i=x2i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i; %隐含层输出%权值初始化k0=0.03;%值限定ynmax=1;ynmin=-1; %系统输出值限定xpmax=1;xpmin=-1; %P节点输出限定qimax=1;qimin=-1; %I节点输出限定qdmax=1;qdmin=-1; %D节点输出限定uhmax=1;uhmin=-1; %输出结果限定ERROR=[];for k=1:1:200%--------------------------------网络前向计算--------------------------%系统输出y1(k)=(0.4*y_1(1)+u_1(1)/(1+u_1(1)^2)+0.2*u_1(1)^3+0.5*u_1(2))+0.3*y_1(2);y2(k)=(0.2*y_1(2)+u_1(2)/(1+u_1(2)^2)+0.4*u_1(2)^3+0.2*u_1(1))+0.3*y_1(3); y3(k)=(0.3*y_1(3)+u_1(3)/(1+u_1(3)^2)+0.4*u_1(3)^3+0.4*u_1(2))+0.3*y_1(1);r1(k)=0.7;r2(k)=0.4;r3(k)=0.6; %控制目标%系统输出限制yn=[y1(k),y2(k),y3(k)];yn(find(yn>ynmax))=ynmax;yn(find(yn<ynmin))=ynmin;%输入层输出x1o=[r1(k);yn(1)];x2o=[r2(k);yn(2)];x3o=[r3(k);yn(3)];%隐含层x1i=w11*x1o;x2i=w12*x2o;x3i=w13*x3o;%比例神经元P计算xp=[x1i(1),x2i(1),x3i(1)];xp(find(xp>xpmax))=xpmax;xp(find(xp<xpmin))=xpmin;qp=xp;h1i(1)=qp(1);h2i(1)=qp(2);h3i(1)=qp(3);%积分神经元I计算xi=[x1i(2),x2i(2),x3i(2)];qi=[0,0,0];qi_1=[h1i(2),h2i(2),h3i(2)];qi=qi_1+xi;qi(find(qi>qimax))=qimax;qi(find(qi<qimin))=qimin;h1i(2)=qi(1);h2i(2)=qi(2);h3i(2)=qi(3);%微分神经元D计算xd=[x1i(3),x2i(3),x3i(3)];qd=[0 0 0];xd_1=[x1i_1(3),x2i_1(3),x3i_1(3)];qd=xd-xd_1;qd(find(qd>qdmax))=qdmax;qd(find(qd<qdmin))=qdmin;h1i(3)=qd(1);h2i(3)=qd(2);h3i(3)=qd(3);%输出层计算wo=[w21;w22;w23];qo=[h1i',h2i',h3i'];qo=qo';uh=wo*qo;uh(find(uh>uhmax))=uhmax;uh(find(uh<uhmin))=uhmin;u1(k)=uh(1);u2(k)=uh(2);u3(k)=uh(3); %控制律%--------------------------------------网络反馈修正----------------------%计算误差error=[r1(k)-y1(k);r2(k)-y2(k);r3(k)-y3(k)];ERROR=[ERROR,error];error1(k)=error(1);error2(k)=error(2);error3(k)=error(3);J(k)=0.5*(error(1)^2+error(2)^2+error(3)^2); %调整大小ypc=[y1(k)-y_1(1);y2(k)-y_1(2);y3(k)-y_1(3)];uhc=[u_1(1)-u_2(1);u_1(2)-u_2(2);u_1(3)-u_2(3)];%隐含层和输出层权值调整%调整w21Sig1=sign(ypc./(uhc(1)+0.00001));dw21=sum(error.*Sig1)*qo';w21=w21+rate2*dw21;%调整w22Sig2=sign(ypc./(uh(2)+0.00001));dw22=sum(error.*Sig2)*qo';w22=w22+rate2*dw22;%调整w23Sig3=sign(ypc./(uh(3)+0.00001));dw23=sum(error.*Sig3)*qo';w23=w23+rate2*dw23;%输入层和隐含层权值调整delta2=zeros(3,3);wshi=[w21;w22;w23];for t=1:1:3delta2(1:3,t)=error(1:3).*sign(ypc(1:3)./(uhc(t)+0.00000001)); endfor j=1:1:3sgn(j)=sign((h1i(j)-h1i_1(j))/(x1i(j)-x1i_1(j)+0.00001));ends1=sgn'*[r1(k),y1(k)];wshi2_1=wshi(1:3,1:3);alter=zeros(3,1);dws1=zeros(3,2);for j=1:1:3for p=1:1:3alter(j)=alter(j)+delta2(p,:)*wshi2_1(:,j);endendfor p=1:1:3dws1(p,:)=alter(p)*s1(p,:);endw11=w11+rate1*dws1;%调整w12for j=1:1:3sgn(j)=sign((h2i(j)-h2i_1(j))/(x2i(j)-x2i_1(j)+0.0000001)); ends2=sgn'*[r2(k),y2(k)];wshi2_2=wshi(:,4:6);alter2=zeros(3,1);dws2=zeros(3,2);for j=1:1:3for p=1:1:3alter2(j)=alter2(j)+delta2(p,:)*wshi2_2(:,j);endendfor p=1:1:3dws2(p,:)=alter2(p)*s2(p,:);endw12=w12+rate1*dws2;%调整w13for j=1:1:3sgn(j)=sign((h3i(j)-h3i_1(j))/(x3i(j)-x3i_1(j)+0.0000001)); ends3=sgn'*[r3(k),y3(k)];wshi2_3=wshi(:,7:9);alter3=zeros(3,1);dws3=zeros(3,2);for j=1:1:3for p=1:1:3alter3(j)=(alter3(j)+delta2(p,:)*wshi2_3(:,j));endendfor p=1:1:3dws3(p,:)=alter2(p)*s3(p,:);endw13=w13+rate1*dws3;%参数更新u_3=u_2;u_2=u_1;u_1=uh;y_2=y_1;y_1=yn;h1i_1=h1i;h2i_1=h2i;h3i_1=h3i;x1i_1=x1i;x2i_1=x2i;x3i_1=x3i;endBPoutput=[y1;y2;y3];%计算适应度值Fitness=0;for i=1:100Fitness=exp(0.01*i)*sum(abs(ERROR(:,i)))+Fitness;if i>1for j=1:3erry=BPoutput(j,i)-BPoutput(j,i-1);if erry<0Fitness=Fitness+3*abs(erry);endendendend。

相关文档
最新文档