基于某BP神经网络地自适应PID控制器设计.docx

上传人:b****8 文档编号:9727863 上传时间:2023-02-06 格式:DOCX 页数:11 大小:57.25KB
下载 相关 举报
基于某BP神经网络地自适应PID控制器设计.docx_第1页
第1页 / 共11页
基于某BP神经网络地自适应PID控制器设计.docx_第2页
第2页 / 共11页
基于某BP神经网络地自适应PID控制器设计.docx_第3页
第3页 / 共11页
基于某BP神经网络地自适应PID控制器设计.docx_第4页
第4页 / 共11页
基于某BP神经网络地自适应PID控制器设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于某BP神经网络地自适应PID控制器设计.docx

《基于某BP神经网络地自适应PID控制器设计.docx》由会员分享,可在线阅读,更多相关《基于某BP神经网络地自适应PID控制器设计.docx(11页珍藏版)》请在冰豆网上搜索。

基于某BP神经网络地自适应PID控制器设计.docx

基于某BP神经网络地自适应PID控制器设计

基于BP神经网络的自适应PID控制器设计

一.基于BP神经网络的自适应PID控制器的原理

PID控制是最早发展起来的、应用领域至今仍然广泛的控制策略之一,它是基于对象数学模型的方法,尤其适用于可建立精确数学模型的确定性控制系统。

其优点是算法简单、鲁棒性好和可靠性高。

但是,由于实际工业生产过程往往具有非线性,许多非线性系统难以确定精确的数学模型,常规的PID控制器就不能达到理想的控制效果,由于受到参数整定方法烦杂的困扰,参数往往整定不良、性能欠佳。

神经网络所具有的任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。

基于BP网络的自适应PID控制器,通过BP神经网络调整自身权系数,对PID控制参数进行调节,以达到某种性能指标的最优。

二.基于BP神经网络的自适应PID控制器的控制器结构

i

基于BP神经网络的PID控制系统结构图如图1所示:

此控制器由两部分组成:

(1)经典的PID控制器,直接对被控对象进行闭环控制,并且三个参数

为在线调整方式;

(2)神经网路,根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化,是输出层神经元的输出状态对应于PID控制器的一个可调参数

通过神经网络的自学习、加权系数调整,使神经网络输出对应于某种最优控制率下的PID控制器参数。

基于BP神经网络的自适应PID控制器的控制器如图2所示:

该控制器的算法如下:

(1)确定BP神经网络的结构,即确定输入节点数M和隐含层节点数Q,并给各层加权系数的初值

,选定学习速率

和惯性系数

,此时k=1;

(2)采样得到rin(k)和yout(k),计算该时刻误差error(k)=rin(k)-yout(k);

(3)计算神经网络NN各层神经元的输入、输出,NN输出层的输出即为PID控制器的三个可调参数

(4)根据经典增量数字PID的控制算法(见下式)计算PID控制器的输出u(k);

(5)进行神经网络学习,在线调整加权系数

实现PID控制参数的自适应调整;

(6)置k=k+1,返回到

(1)。

三.仿真程序

%BPbasedPIDControl

clearall;

closeall;

xite=0.25;

alfa=0.05;

S=1;%Signaltype

IN=4;H=5;Out=3;%NNStructure

ifS==1%StepSignal

wi=[-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;

end

ifS==2%SineSignal

wi=[-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;

end

x=[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);%OutputfromNNmiddlelayer

I=Oh;%InputtoNNmiddlelayer

error_2=0;

error_1=0;

ts=0.001;

fork=1:

1:

6000

time(k)=k*ts;

ifS==1

rin(k)=1.0;

elseifS==2

rin(k)=sin(1*2*pi*k*ts);

end

%Unlinearmodel

a(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:

H

Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));%MiddleLayer

end

K=wo*Oh;%OutputLayer

forl=1:

1:

Out

K(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));%Gettingkp,ki,kd

end

kp(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%Restrictingtheoutputofcontroller

u(k)=10;

end

ifu(k)<=-10

u(k)=-10;

end

dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));

%Outputlayer

forj=1:

1:

Out

dK(j)=2/(exp(K(j))+exp(-K(j)))^2;

end

forl=1:

1:

Out

delta3(l)=error(k)*dyu(k)*epid(l)*dK(l);

end

forl=1:

1:

Out

fori=1:

1:

H

d_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);

end

end

wo=wo_1+d_wo+alfa*(wo_1-wo_2);

%Hiddenlayer

fori=1:

1:

H

dO(i)=4/(exp(I(i))+exp(-I(i)))^2;

end

segma=delta3*wo;

fori=1:

1:

H

delta2(i)=dO(i)*segma(i);

end

d_wi=xite*delta2'*xi;

wi=wi_1+d_wi+alfa*(wi_1-wi_2);

%ParametersUpdate

u_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);

end

figure

(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');

四.运行结果

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1