BP神经网络监督控制系统设计.doc

上传人:wj 文档编号:348854 上传时间:2023-04-29 格式:DOC 页数:13 大小:173KB
下载 相关 举报
BP神经网络监督控制系统设计.doc_第1页
第1页 / 共13页
BP神经网络监督控制系统设计.doc_第2页
第2页 / 共13页
BP神经网络监督控制系统设计.doc_第3页
第3页 / 共13页
BP神经网络监督控制系统设计.doc_第4页
第4页 / 共13页
BP神经网络监督控制系统设计.doc_第5页
第5页 / 共13页
BP神经网络监督控制系统设计.doc_第6页
第6页 / 共13页
BP神经网络监督控制系统设计.doc_第7页
第7页 / 共13页
BP神经网络监督控制系统设计.doc_第8页
第8页 / 共13页
BP神经网络监督控制系统设计.doc_第9页
第9页 / 共13页
BP神经网络监督控制系统设计.doc_第10页
第10页 / 共13页
BP神经网络监督控制系统设计.doc_第11页
第11页 / 共13页
BP神经网络监督控制系统设计.doc_第12页
第12页 / 共13页
BP神经网络监督控制系统设计.doc_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

BP神经网络监督控制系统设计.doc

《BP神经网络监督控制系统设计.doc》由会员分享,可在线阅读,更多相关《BP神经网络监督控制系统设计.doc(13页珍藏版)》请在冰点文库上搜索。

BP神经网络监督控制系统设计.doc

班级:

控制5班学号:

2111504213姓名:

张睿

设计一个BP神经网络监督控制系统,被控对象为:

采样时间1ms,输入信号为方波信号,幅值0.5,频率2hz。

设计一个BP神经网络监督控制系统,并采用遗传算法进行BP神经网络参数及权值的优化设计,并进行matlab仿真。

需要说明控制系统结构,遗传算法优化BP网络的具体步骤,并对仿真结果做出分析。

解决过程及思路如下:

1BP网络算法

以第p个样本为例,用于训练的BP网络结构如图1所示。

…...…..

.…..

……

i

j

k

输入层

隐含层

输出层

xk

图1具有一个隐含层和输出层的BP神经网络结构

网络的学习算法如下:

(1)信息的正向传播

隐含层神经元的输入为所有输入加权之和,

隐层神经元的输出采用S函数激发,则

输出层的神经元输出为

网络输出与理想输出误差为

误差性能指标函数为

上式的N表示网络输出层的个数。

(2)利用梯度下降法调整各层间权值的反向传播

对从第j个输入到第k个输出的权值有:

其中,为学习速率,。

K+1时刻网络权值为

对从第i个输入到第j个输出的权值有:

式中,

t+1时刻网络权值为

2.BP网络的监督控制系统结构

设计的BP网络监督控制系统结构如图2所示。

图2BP神经网络监督控制

在BP网络结构中,取网络的输入为r(k),实际输出为y(k),PID控制输出为up(k),隐层神经元的输出采用S函数激发,

网络的权向量为W1,W2

BP的网络输出为

控制律为

u(k)=up(k)+yn(k)

采用梯度下降法调整网络的权值为

神经网络权值的调整过程为

3.遗传算法对BP网络权值的优化过程

(1)取逼近总步骤为:

N=100

(2)终止代数:

G=80

(3)样本个数:

Size=30

(4)交叉概率:

Pc=0.70

(5)二进制编码长度:

Godel=10

(6)变异概率:

Pm=0.001-[1:

1:

Size]*0.001/Size

(7)用于优化的BP网络结构为:

1-4-1i=1j=1,2,3,4

(8)网络权值W1的取值范围为:

[-1,+1]

(9)网络权值W2的取值范围为:

[-0.5,+0.5]

(10)取BP网络误差绝对值为参数选择的最小目标函数:

式中,N为逼近的总步骤,ee(i)为第i步BP网络逼近误差。

(11)需要优化参数为:

4遗传算法优化BP网络权值的步骤

(1)初始化种群;

(2)计算其适应值,保留最优个体,判断是否达到最优解;

(3)交叉、变异产生新个体;

(4)重新计算种群中每个个体的适应值并保留最优个体;

(5)交叉、变异前后的种群放在一起进行二人竞赛选择法,直到填满新的种群;

(6)转2)直到找到最优解BestJ。

5MATLAB仿真结果

BP监督网络遗传算法优化程序包括3部分,即遗传算法优化程序ga_bp.m,BP网络逼近函数程序bp_a和BP网络逼近测试程序bp_test。

输入信号为r(t)=0.5*sign(sin(2*2*pi*k*ts)采样时间ts=0.001s,η=0.30,a=0.05,kp=1,kd=1.

经遗传算法优化后,对象p的值为

P=[-0.2160,0.7576,0.5230,0.9863,-0.0714,0.2551,0.6911,-0.3627,0.2146,0.3338,-0.0875,-0.0582]

仿真结果图:

图3代价函数J的优化过程

图4方波位置跟踪

图5BP网络,PD及总控制器输出的比较以及误差曲线

结论:

采用遗专算法可以实现BP网络参数初始值的优化,节约计算量。

并由仿真结果可知,其误差大部分趋于0,但局部有三个地区的误差比较大,产生原因可能与遗传算法的运行参数有关。

代码:

1、bp_a.m

function[p,BsJ]=rbf_gaf(p,BsJ)

ts=0.001;

alfa=0.05;

xite=0.30;

sys=tf(1000,[1,87.35,10470]);

dsys=c2d(sys,ts,'z');

[num,den]=tfdata(dsys,'v');

y_1=0;y_2=0;

u_1=0;u_2=0;

e_1=0;

xi=0;

x=[0,0]';

I=[0,0,0,0]';

Iout=[0,0,0,0]';

FI=[0,0,0,0]';

kp=25;

kd=0.3;

w1=[p

(1),p

(2),p(3),p(4);p(5),p(6),p(7),p(8)];

w1_1=w1;w1_2=w1;

w2=[p(9);p(10);p(11);p(12)];

w2_1=w2;w2_2=w2_1;

fork=1:

1:

1000

timef(k)=k*ts;

Y=1;

ifY==1

r(k)=0.5*sign(sin(2*2*pi*k*ts));%SquareSignal

elseifY==2

r(k)=0.5*(sin(3*2*pi*k*ts));%SquareSignal

end

y(k)=-den

(2)*y_1-den(3)*y_2+num

(2)*u_1+num(3)*u_2;

e(k)=r(k)-y(k);

xi=r(k);

forj=1:

1:

4

I(j)=x'*w1(:

j);

Iout(j)=1/(1+exp(-I(j)));

end

yn(k)=w2'*Iout;%OutputofNNInetworks

%PDController

up(k)=kp*x

(1)+kd*x

(2);

M=2;

ifM==1%OnlyUsingPIDControl

u(k)=up(k);

elseifM==2%Totalcontroloutput

u(k)=up(k)+yn(k);

end

ifu(k)>=10

u(k)=10;

end

ifu(k)<=-10

u(k)=-10;

end

ifk==400

u(k)=u(k)+5.0;

end

%UpdateNNWeight

ee(k)=u(k)-yn(k);

w2=w2_1+(xite*ee(k))*Iout+alfa*(w2_1-w2_2);

forj=1:

1:

4

FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;

end

dw1=0*w1;

fori=1:

1:

2

forj=1:

1:

4

dw1(i,j)=ee(k)*xite*FI(j)*w2(j)*x(i);

end

end

w1=w1_1+dw1+alfa*(w1_1-w1_2);

w1_2=w1_1;w1_1=w1;

w2_2=w2_1;w2_1=w2;

u_2=u_1;

u_1=u(k);

y_2=y_1;

y_1=y(k);

x

(1)=e(k);%CalculatingP

x

(2)=(e(k)-e_1)/0.05;%CalculatingD

e_1=e(k);

end

B=0;

fori=1:

1:

100

Ji(i)=abs(ee(i));

B=B+50*Ji(i);

end

BsJ=B;

2、bp_test.m

clearall;

closeall;

loadpfile;

ts=0.001;

alfa=0.05;

xite=0.30;

kp=25;

kd=0.3;

sys=tf(1000,[1,87.35,10470]);

dsys=c2d(sys,ts,'z');

[num,den]=tfdata(dsys,'v');

N=1;

ifN==1

w1=[p

(1),p

(2),p(3),p(4);p(5),p(6),p(7),p(8)];

w2=[p(9);p(10);p(11);p(12)];

elseifN==2

w1=rand(2,4);

w2=rand(1,4);

end

end

w1_1=w1;w1_2=w1;

w2_1=w2;w2_2=w2_1;

y_1=0;y_2=0;

u_1=0;u_2=0;

e_1=0;

x=[0,0]';

I=[0,0,0,0]';

Iout=[0,0,0,0]';

FI=[0,0,0,0]';

ts=0.001;

fork=1:

1:

1000

time(k)=k*ts;

Y=1;

ifY==1

r(k)=0.5*sign(sin(2*2*pi*k*ts));%SquareSignal

elseifY==2

r(k)=0.5*(sin(3*2*pi*k*ts));%SquareSignal

end

y(k)=-den

(2)*y_1-den(3)*y_2+num

(2)*u_1+num(3)*u_2;

e(k)=r(k)-y(k);

forj=1:

1:

4

I(j)=x'*w1(:

j);

Iout(j)=1/(1+exp(-I(j)));

end

yn(k)=w2'*Iout;%OutputofNNInetworks

%PDController

up(k)=kp*x

(1)+kd*x

(2);

M=2;

ifM==1%OnlyUsingPIDControl

u(k)=up(k);

elseifM==2%Totalcontroloutput

u(k)=up(k)+yn(k);

end

ifu(k)>=10

u(k)=10;

end

ifu(k)<=-10

u(k)=-10;

end

ifk==400

u(k)=u(k)+6.0;

end

%UpdateNNWeight

ee(k)=u(k)-yn(k);

w2=w2_1+(xite*ee(k))*Iout+alfa*(w2_1-w2_2);

forj=1:

1:

4

FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;

end

dw1=0*w1;

fori=1:

1:

2

forj=1:

1:

4

dw1(i,j)=ee(k)*xite*FI(j)*w2(j)*x(i);

end

end

w1=w1_1+dw1+alfa*(w1_1-w1_2);

w1_2=w1_1;w1_1=w1;

w2_2=w2_1;w2_1=w2;

u_2=u_1;

u_1=u(k);

y_2=y_1;

y_1=y(k);

x

(1)=e(k);%CalculatingP

x

(2)=(e(k)-e_1)/0.05;%CalculatingD

e_1=e(k);

end

figure

(1);

plot(time,r,'r',time,y,'b');

xlabel('time(s)');ylabel('randy');

figure

(2);

subplot(411);

plot(time,yn,'b');

xlabel('time(s)');ylabel('yn');

subplot(412);

plot(time,up,'k');

xlabel('time(s)');ylabel('up');

subplot(413);

plot(time,u,'r');

xlabel('time(s)');ylabel('u');

subplot(414);

plot(time,r-y,'b');

xlabel('time(s)');ylabel('error');

3、ga_bp.m

%GA(GenericAlgorithm)toOptimizeInitialParametersofRBFApproaching

clearall;

closeall;

Size=30;%ȺÌå×ܸöÌåÊýÁ¿

G=80;%ÔÊÐí×î´óµü´ú´ÎÊý

CodeL=10;%ÿ¸ö±äÁ¿ÓµÓеÄȾɫÌåÊýÁ¿

fori=1:

1:

8

umax(i)=ones

(1);%Á¬½ÓȨֵµÄ×î´óÖµ

umin(i)=-ones

(1);%ȨֵµÄ×îСֵ

end

fori=9:

1:

12

umax(i)=0.5*ones

(1);%ãÐÖµµÄ×î´óÖµ

umin(i)=-0.5*ones

(1);%ãÐÖµµÄ×îСֵ

end

%¶ÔËùÇó²ÎÊý½øÐгõʼ¶þ½øÖƱàÂë

E=round(rand(Size,12*CodeL));%³õʼ»¯¸öÌå´úÂ루ȾɫÌ壩

%ÒÅ´«Éñ¾­ÍøÂçѵÁ·¿ªÊ¼

BsJ=0;

forkg=1:

1:

G

time(kg)=kg;

fors=1:

1:

Size

m=E(s,:

);

forj=1:

1:

12

yoy(j)=0;

mj=m((j-1)*CodeL+1:

1:

j*CodeL);

fori=1:

1:

CodeL

yoy(j)=yoy(j)+mj(i)*2^(i-1);

end

f(s,j)=(umax(j)-umin(j))*yoy(j)/1023+umin(j);

end

clearyoy;

p=f(s,:

);

[p,BsJ]=bp_a(p,BsJ);

BsJi(s)=BsJ;

end

[OderJi,IndexJi]=sort(BsJi);

BestJ(kg)=OderJi

(1);

BJ=BestJ(kg);

Ji=BsJi+1e-005;

fi=1./Ji;

[Oderfi,Indexfi]=sort(fi);%Arrangingfismalltobigger

Bestfi=Oderfi(Size);%LetBestfi=max(fi)

BestS=E(Indexfi(Size),:

);%LetBestS=E(m),mistheIndexfibelongtomax(fi)

kg

p

BJ

%******Step2:

SelectandReproductOperation******

fi_sum=sum(fi);

fi_Size=(Oderfi/fi_sum)*Size;

fi_S=floor(fi_Size);

kk=1;

fori=1:

1:

Size

forj=1:

1:

fi_S(i)

TempE(kk,:

)=E(Indexfi(i),:

);

kk=kk+1;

end

end

%************Step3:

CrossoverOperation************

pc=0.70;

n=ceil(20*rand);

fori=1:

2:

(Size-1)

temp=rand;

ifpc>temp%CrossoverCondition

forj=n:

1:

20

TempE(i,j)=E(i+1,j);

TempE(i+1,j)=E(i,j);

end

end

end

TempE(Size,:

)=BestS;

E=TempE;

%************Step4:

MutationOperation**************

pm=0.001-[1:

1:

Size]*(0.001)/Size;%Biggerfi,smallerpm

fori=1:

1:

Size

forj=1:

1:

12*CodeL

temp=rand;

ifpm>temp%MutationCondition

ifTempE(i,j)==0

TempE(i,j)=1;

else

TempE(i,j)=0;

end

end

end

end

%GuaranteeTempE(Size,:

)belongtothebestindividual

TempE(Size,:

)=BestS;

E=TempE;

%*******************************************************

end

Bestfi

BestS

fi

Best_J=BestJ(G)

figure

(1);

plot(time,BestJ);

xlabel('Times');ylabel('BestJ');

savepfilep;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2