基于BP神经网络的自整定PID控制仿真Word文档格式.docx

上传人:b****1 文档编号:14029961 上传时间:2022-10-17 格式:DOCX 页数:15 大小:209.90KB
下载 相关 举报
基于BP神经网络的自整定PID控制仿真Word文档格式.docx_第1页
第1页 / 共15页
基于BP神经网络的自整定PID控制仿真Word文档格式.docx_第2页
第2页 / 共15页
基于BP神经网络的自整定PID控制仿真Word文档格式.docx_第3页
第3页 / 共15页
基于BP神经网络的自整定PID控制仿真Word文档格式.docx_第4页
第4页 / 共15页
基于BP神经网络的自整定PID控制仿真Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于BP神经网络的自整定PID控制仿真Word文档格式.docx

《基于BP神经网络的自整定PID控制仿真Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于BP神经网络的自整定PID控制仿真Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

基于BP神经网络的自整定PID控制仿真Word文档格式.docx

二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。

图1基于神经网络的PID控制器结构

四、基于BP神经网络的PID设计

1设计原理

神经网络采用结构为4-5-3型的BP网络,如图2。

图2BP网络结构

其中,输出层激励函数取非负的Sigmoid函数,隐层取正负对称的Sigmoid函数。

被控对象为一时变非线性对象,数学模型可表示为:

式中,系数a(k)是慢时变的,。

为保证控制器有一定的动态跟踪能力,选定神经网络的输入层输入为

网络的学习过程由正向和反向传播两部分组成。

如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得输出误差信号最小。

输出层节点分别对应三个可调参数

取性能指标函数为:

设其中

若PID控制器采用采用增量式数字PID控制算法,则有

2.网络权系数调整

网络权系数的修正采用梯度下降法。

根据相关数学知识,针对指定因变量的梯度代表了使因变量增速最大的自变量变化方向,故而其反方向代表了因变量下降最快的自变量变化方向,如果我们选取性能指标为因变量,网络各层权系数为自变量,则对应梯度的负方向就是权系数调整的最佳方向,因此,实际上构成了一个有目标的搜索算法,对最终结果的收敛性提供了有力的保证。

对应于本题采用的4-5-3型的BP网络,梯度负方向的计算:

(1)隐含层-输出层:

其中:

为指标函数

为隐含层-输出层权系数矩阵元素

为被控对象输出

为PID控制器输出

为输出层输出

为输出层输入

根据所选用神经网络的数学模型,易知:

其中:

为隐含层输出,

,为输出层激励函数,为其偏导数。

另外,直接的数学表达不容易获得,但我们可以使用它的符号函数来近似,仍可以保证参数修正方向的正确性,而由此造成其模的误差只影响参数调整的速度,它可以通过调整学习速率来得以补偿。

故而最终有:

(2)输入层-隐含层:

,为输出层激励函数,为其偏导数。

(3)网络权值修正量

梯度的负方向给出了网络权值修正的方向,乘以系数,即为权值修正量。

其中代表了算法每次在梯度负方向搜索的步长,称为网络的学习速率,另外,如果考虑上次权值对本次权值变化的影响,需要加入动量(平滑)因子,此时新的权值为:

3.程序流程

步骤1:

设定初始状态和参数初始值,包括随机产生初始BP神经网络权值系数,设定初始输入输出值为零,设定学习速率和惯性系数,计数器设为k=1,并设定计数上限等。

步骤2:

计算产生BP神经网络隐含层输入。

本程序为采样获得e(k),并结合储存的e(k-1),e(k-2),及常数1作为隐含层输入。

前两次的e(k-1),e(k-2)并未真实产生直接取0.

步骤3:

前向传播计算。

包括:

(1)BP神经网络前向传播计算,得到输出层输出,,.;

(2)增量式PID控制器计算控制器输出;

(3)被控对象模型计算输出值

步骤4:

反向传播计算。

包括:

(1)修正输出层的权系数;

(2)修正隐含层的权系数;

步骤5:

参数更新

步骤6:

如果k达到设定的次数上限,则结束;

否则,k=k+1,并返回步骤2.

总的程序流程图如下:

图3程序流程图

五、仿真程序及分析

学习速率取0.25,平滑因子取0.05。

经过多次运行,最终得到一个较好的结果,并将此结果的稳态权重作为初始权重。

在调试中发现,即使稍微改变学习速率和平滑因子,还是需要经过多次运行,才能得到一个较好的结果。

如果用得到的较好结果的稳态权重作为初始权值,学习速率和平滑因子的取值可以更加随意。

(1)输入为阶跃信号

(2)输入为正弦信号

程序代码:

%%基于BP神经网络的自整定PID控制仿真

clearall;

closeall;

xite=0.25;

%学习速率

alfa=0.05;

%平滑因子

S=2;

%选择输入信号的类型(1:

阶跃信号;

2:

正弦信号)

IN=4;

%输入层、隐含层、输出层节点数

H=5;

OUT=3;

ifS==1

wi=[-0.4129-0.2553-0.7973-0.1004

-0.27710.26760.42340.3484

-0.69140.2740-0.1590-0.8642

-0.39150.1627-0.6956-0.7668

-0.41330.2296-0.5542-0.2671];

%wi=0.5*rands(H,IN);

%权值系数初始值

wi_1=wi;

wi_2=wi;

wo=[0.56610.20040.94330.18320.5971

0.41850.27500.67340.94080.4597

0.43480.04020.95230.81430.2773];

%wo=0.5*rands(OUT,H);

wo_1=wo;

wo_2=wo;

else

wi=[-0.42570.3975-0.22190.0629

-0.3548-0.4002-0.3585-0.2581

-0.4162-0.4559-0.1764-0.5627

-0.03900.0586-0.3188-0.3945

-0.30420.27440.0130-0.3788];

wo=[0.22790.5382-0.13580.64410.0699

0.15840.21230.11660.44020.6627

0.72420.62110.65400.3450-0.1486];

end

u_1=0;

y_1=0;

Oh=zeros(H,1);

error_2=0;

error_1=0;

ts=0.001;

fork=1:

6000

time(k)=k*ts;

ifS==1

rin(k)=1.0;

else

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

end

%被控对象为非线性模型

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=[error_2error_1error(k)1];

%输入层输入

epid=[error(k)-error_1;

error(k);

error(k)-2*error_1+error_2];

%计算隐含层输出

I=xi*wi'

;

forj=1:

H

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

%计算输出层输出

K=wo*Oh;

forl=1:

OUT

O(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));

%得到kp,ki,kd的值

kp(k)=O

(1);

ki(k)=O

(2);

kd(k)=O(3);

Kpid=[kp(k)ki(k)kd(k)];

%计算控制器的输出

du(k)=Kpid*epid;

u(k)=u_1+du(k);

ifu(k)<

-10

u(k)=-10;

ifu(k)>

10

u(k)=10;

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

%输出层权系数修正

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

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

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

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

%隐含层权系数修正

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

sigma=delta3*wo;

delta2(j)=dO(j)*sigma(j);

d_wi=xite*delta2'

*xi;

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

%参数更新

u_1=u(k);

y_1=yout(k);

wo_2=wo_1;

wi_2=wi_1;

error_2=error_1;

error_1=error(k);

figure

(1);

plot(time,rin,'

r'

time,yout,'

b'

);

xlabel('

time(s)'

ylabel('

rin,yout'

figure

(2);

plot(time,error,'

error'

figure(3);

plot(time,u,'

u'

figure(4);

subplot(311);

plot(time,kp,'

xlabe

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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