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

合集下载

(完整版)BP神经网络matlab实例(简单而经典).doc

(完整版)BP神经网络matlab实例(简单而经典).doc

p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络net.trainParam.show=2000; % 训练网络net.trainParam.lr=0.01;net.trainParam.epochs=100000;net.trainParam.goal=1e-5;[net,tr]=train(net ,pn,tn); %调用TRAINGDM 算法训练BP 网络pnew=pnew1';pnewn=tramnmx(pnew,minp,maxp);anewn=sim(net,pnewn);anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据y=anew';1、 BP 网络构建(1)生成 BP 网络net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。

[ S1 S2...SNl] :各层的神经元个数。

{TF 1 TF 2...TFNl } :各层的神经元传递函数。

BTF :训练用函数的名称。

(2)网络训练[ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV )(3)网络仿真[Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ){'tansig','purelin'},'trainrp'BP 网络的训练函数训练方法梯度下降法有动量的梯度下降法自适应 lr 梯度下降法自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrpFletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgpPowell-Beale 共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlmBP 网络训练参数训练参数net.trainParam.epochsnet.trainParam.goal net.trainParam.lrnet.trainParam.max_fail net.trainParam.min_grad net.trainParam.show net.trainParam.timenet.trainParam.mc net.trainParam.lr_inc 参数介绍最大训练次数(缺省为10)训练要求精度(缺省为0)学习率(缺省为0.01 )最大失败次数(缺省为5)最小梯度要求(缺省为1e-10)显示训练迭代过程( NaN 表示不显示,缺省为 25)最大训练时间(缺省为inf )动量因子(缺省0.9)学习率lr增长比(缺省为1.05)训练函数traingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingdm 、 traingdx traingda 、traingdxnet.trainParam.lr_dec 学习率 lr 下降比(缺省为 0.7) traingda 、 traingdxnet.trainParam.max_perf_inc 表现函数增加最大比(缺省traingda 、 traingdx为 1.04)net.trainParam.delt_inc 权值变化增加量(缺省为trainrp1.2)net.trainParam.delt_dec 权值变化减小量(缺省为trainrp0.5)net.trainParam.delt0 初始权值变化(缺省为 0.07) trainrpnet.trainParam.deltamax 权值变化最大值(缺省为trainrp50.0)net.trainParam.searchFcn 一维线性搜索方法(缺省为traincgf 、traincgp 、traincgb 、srchcha)trainbfg 、 trainossnet.trainParam.sigma 因为二次求导对权值调整的trainscg影响参数(缺省值 5.0e-5)mbda Hessian 矩阵不确定性调节trainscg参数(缺省为 5.0e-7)net.trainParam.men_reduc 控制计算机内存/ 速度的参trainlm量,内存较大设为1,否则设为 2(缺省为 1)net.trainParam.mu 的初始值(缺省为0.001) trainlmnet.trainParam.mu_dec 的减小率(缺省为0.1)trainlmnet.trainParam.mu_inc 的增长率(缺省为10)trainlmnet.trainParam.mu_max 的最大值(缺省为1e10)trainlm2、 BP 网络举例举例 1、%traingdclear;clc;P=[-1 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];%利用 minmax函数求输入样本范围net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;%net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=1e-5;[net,tr]=train(net,P,T);net.iw{1,1}%隐层权值net.b{1}%隐层阈值net.lw{2,1}%输出层权值net.b{2}%输出层阈值sim(net,P)BP 神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

(完整版)BP神经网络matlab实例(简单而经典)

(完整版)BP神经网络matlab实例(简单而经典)

p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络net.trainParam.show=2000; % 训练网络net.trainParam.lr=0.01;net.trainParam.epochs=100000;net.trainParam.goal=1e-5;[net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP 网络pnew=pnew1';pnewn=tramnmx(pnew,minp,maxp);anewn=sim(net,pnewn); %对BP网络进行仿真anew=postmnmx(anewn,mint,maxt); %还原数据y=anew';1、BP网络构建(1)生成BP网络=net newff PR S S SNl TF TF TFNl BTF BLF PF(,[1 2...],{ 1 2...},,,)PR:由R维的输入样本最小最大值构成的2R⨯维矩阵。

S S SNl:各层的神经元个数。

[ 1 2...]{ 1 2...}TF TF TFNl:各层的神经元传递函数。

BTF:训练用函数的名称。

(2)网络训练[,,,,,] (,,,,,,)=net tr Y E Pf Af train net P T Pi Ai VV TV(3)网络仿真=[,,,,] (,,,,)Y Pf Af E perf sim net P Pi Ai T{'tansig','purelin'},'trainrp'2、BP网络举例举例1、%traingdclear;clc;P=[-1 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];%利用minmax函数求输入样本范围net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;%net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=1e-5;[net,tr]=train(net,P,T);net.iw{1,1}%隐层权值net.b{1}%隐层阈值net.lw{2,1}%输出层权值net.b{2}%输出层阈值sim(net,P)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

BP神经网络Matlab实例(2)

BP神经网络Matlab实例(2)

变量mu确定了学习是根据牛顿法还是梯度法来完成,下式为更新参数的L-M规则:% jj = jX * jX% je = jX * E% dX = -(jj+I*mu) \ je随着mu的增大,LM的项jj可以忽略。

因此学习过程主要根据梯度下降即mu/je项,只要迭代使误差增加,mu也就会增加,直到误差不再增加为止,但是,如果mu太大,则会使学习停止,当已经找到最小误差时,就会出现这种情况,这就是为什么当mu达到最大值时要停止学习的原因。

mu为u的初始值,默认为0.001mu_dec为u的减小率,默认为0.1mu_inc为u的增长率,默认为10mu_max为u的最大值,默认为1e10BP神经网络Matlab实例(1)采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。

% 例1 采用动量梯度下降算法训练 BP 网络。

% 训练样本定义如下:% 输入矢量为% p =[-1 -2 3 1% -1 1 5 -3]% 目标矢量为 t = [-1 -1 1 1]close allclearclc% ---------------------------------------------------------------% NEWFF——生成一个新的前向神经网络,函数格式:% net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,% PR -- R x 2 matrix of min and max values for R input elements% (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的边界值)% Si -- 第i层的维数% TFi -- 第i层的传递函数, default = 'tansig'% BTF -- 反向传播网络的训练函数, default = 'traingdx'% BLF -- 反向传播网络的权值/阈值学习函数, default = 'learngdm'% PF -- 性能函数, default = 'mse'% ---------------------------------------------------------------% TRAIN——对 BP 神经网络进行训练,函数格式:% train(NET,P,T,Pi,Ai,VV,TV),输入参数:% net -- 所建立的网络% P -- 网络的输入% T -- 网络的目标值, default = zeros% Pi -- 初始输入延迟, default = zeros% Ai -- 初始网络层延迟, default = zeros% VV -- 验证向量的结构, default = []% TV -- 测试向量的结构, default = []% 返回值:% net -- 训练之后的网络% TR -- 训练记录(训练次数及每次训练的误差)% Y -- 网络输出% E -- 网络误差% Pf -- 最终输入延迟% Af -- 最终网络层延迟% ---------------------------------------------------------------% SIM——对 BP 神经网络进行仿真,函数格式:% [Y,Pf,Af,E,perf] = sim(net,P,PiAi,T)% 参数与前同。

用matlab编BP神经网络预测程序

用matlab编BP神经网络预测程序

求用matlab编BP神经网络预测程序求一用matlab编的程序P=[。

];输入T=[。

];输出% 创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')% 当前输入层权值和阈值inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}% 当前网络层权值和阈值layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}% 设置训练参数net_1.trainParam.show = 50;net_1.trainParam.lr = 0.05;net_1.trainParam.mc = 0.9;net_1.trainParam.epochs = 10000;net_1.trainParam.goal = 1e-3;% 调用TRAINGDM 算法训练BP 网络[net_1,tr]=train(net_1,P,T);% 对BP 网络进行仿真A = sim(net_1,P);% 计算仿真误差E = T - A;MSE=mse(E)x=[。

]';%测试sim(net_1,x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不可能啊我200928对初学神经网络者的小提示第二步:掌握如下算法:2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。

3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。

BP神经网络在PID参数自整定中的应用

BP神经网络在PID参数自整定中的应用

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

而神经网络作为现代信息处理技术的一种,正在很多应用中显示了它的优越性,神经网络PID控制技术在其中扮演了十分重要的角色,并且仍将成为未来研究与应用的重点技术之一。

本文阐述了神经网络PID控制算法的基本原理,并对几种典型的神经网络PID控制器的控制性能进行了分析。

关键词:神经网络;PID控制;Matlab仿真;梯度搜索算法;BP算法IABSTRACTABSTRACTThe PID control method is one of the traditional eontrol methods and gets good effects under many application situation.But with the increase in complexity of manufacture technics and demands of industrial process performance,the conventional PID control can not meet the requirement of closed loop optimized control.Neural network,as one of modern information proeess technologies,has some advantages in many application.Neural network PID control teehnology in which Plays a very imPortant role,and will become one of the focus of the research and application of teehnology.In this paper ,we describes the basic principles of neural network PID control arithmetic, and form the simulinks of Neural network PID controller,analyse their differences.Keywords:Neural Networks;PID Control;Matlab Simulation;Gradient Search Arithmetic;BP ArithmeticII目录第一章引言 (1)1.1神经网络PID控制器研究现状及发展态势 (1)1.2选题依据及意义 (1)1.3课题研究内容 (2)1.4课题的目标与拟解决的问题 (2)第二章人工神经网络 (3)2.1 人工神经网络的发展 (3)2.2 生物神经元 (4)2.3 人工神经网络的结构 (5)2.3.1人工神经元及其激活函数 (6)2.3.2 神经网络的拓扑结构 (8)2.4 神经网络的学习 (10)2.4.1 神经网络的学习方式 (10)2.4.2 神经网络学习算法 (11)2.5神经网络的特点及其应用 (13)2.5.1 神经网络的特点 (13)2.5.2 神经网络的应用 (13)第三章传统PID控制 (14)3.1 传统PID控制简介 (14)3.2 数字PID控制算法 (15)3.3 PID控制的参数及其整定 (15)3.3.1 PID控制参数对性能的影响 (15)3.3.2 PID控制参数的整定 (16)3.4 传统PID控制的难题 (17)第四章BP神经网络PID控制器 (19)4.1 神经网络用于控制领域 (19)4.2 神经网络PID控制研究的意义与现状 (19)4.3 BP神经网络 (20)4.4 BP神经网络参数自整定PID控制器 (22)4.5 BP神经网络近似PID控制器 (26)III第五章BP神经网络PID控制器的编程与仿真 (29)5.1 编程语言Matlab语言简介 (29)5.2 BP神经网络自整定PID控制器的编程实现 (30)5.2.1参数初始化核心代码 (30)5.2.2 前馈计算核心代码 (30)5.2.3 误差反传核心代码 (31)5.3 BP神经网络自整定PID控制器的仿真 (32)5.4 BP神经网络近似PID控制器的编程实现 (38)5.5 BP神经网络近似PID控制器的仿真测试 (39)5.6 本章小结 (41)结束语 (42)参考文献 (43)致谢 (44)附录一:神经自整定PID控制器的M程序 (45)附录二:神经近似PID控制器的M程序 (48)外文资料原文 (51)外文资料译文 (54)IV第一章引言第一章引言1.1神经网络PID控制器研究现状及发展态势PID控制器从问世至今已经几十年了,成为工业过程控制中主要技术成功应用于机械冶金电力和轻工等工业过程控制领域中[1],对于PID控制器来说,要想得到较理想的控制效果,必须先对其三个参数:即比例系数( Kp ),微分系数( Ki ),微分系数( Kd )进行优化。

BP神经网络预测的matlab代码

BP神经网络预测的matlab代码

BP神经网络预测的matlab代码附录5:BP神经网络预测的matlab代码: P=[ 00.13860.21970.27730.32190.35840.38920.41590.43940.46050.47960.49700.52780.55450.59910.60890.61820.62710.63560.64380.65160.65920.66640.67350.72220.72750.73270.73780.74270.74750.75220.75680.76130.76570.7700]T=[0.4455 0.323 0.4116 0.3255 0.4486 0.2999 0.4926 0.2249 0.48930.2357 0.4866 0.22490.4819 0.2217 0.4997 0.2269 0.5027 0.217 0.5155 0.1918 0.5058 0.2395 0.4541 0.2408 0.4054 0.2701 0.3942 0.3316 0.2197 0.2963 0.5576 0.1061 0.4956 0.267 0.5126 0.2238 0.5314 0.2083 0.5191 0.208 0.5133 0.18480.5089 0.242 0.4812 0.2129 0.4927 0.287 0.4832 0.2742 0.5969 0.24030.5056 0.2173 0.5364 0.1994 0.5278 0.2015 0.5164 0.2239 0.4489 0.2404 0.4869 0.2963 0.4898 0.1987 0.5075 0.2917 0.4943 0.2902 ]threshold=[0 1]net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');net.trainParam.epochs=6000net.trainParam.goal=0.01LP.lr=0.1;net=train(net,P',T')P_test=[ 0.77420.77840.78240.78640.79020.7941 ] out=sim(net,P_test')友情提示:以上面0.7742为例0.7742=ln(47+1)/5因为网络输入有一个元素,对应的是测试时间,所以P只有一列,Pi=log(t+1)/10,这样做的目的是使得这些数据的范围处在[0 1]区间之内,但是事实上对于logsin命令而言输入参数是正负区间的任意值,而将输出值限定于0到1之间。

BP神经网络matlab教程

BP神经网络matlab教程
第二步随机选取第个输入样本及对应期望输出第三步计算隐含层各神经元的输入和输出第四步利用网络期望输出和实际输出计算误差函数对输出层的各神经元的偏导hohoyiyiihih第五步利用隐含层到输出层的连接权值输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数hohoihih第八步计算全局误差第九步判断网络误差是否满足要求
w
N 1 ho
w o (k )hoh (k )
N ho
2.4.2 BP网络的标准学习算法
第七步,利用隐含层各神经元的 h (k )和 输入层各神经元的输入修正连接权。
e e hih (k ) wih (k ) h (k ) xi (k ) wih hih (k ) wih w
p
i 1
h 1,2,
o 1,2,
,p
q
yio (k ) whohoh (k ) bo
o 1,2,
yoo (k ) f( yio (k ))
h 1
q
2.4.2 BP网络的标准学习算法
第四步,利用网络期望输出和实际输出, 计算误差函数对输出层的各神经元的偏导 o (k ) 数 。 ( w ho (k ) b ) e e yio yi (k )
输入样本---输入层---各隐层---输出层
判断是否转入反向传播阶段:
若输出层的实际输出与期望的输出(教师信号)不 符
误差反传
误差以某种形式在各层表示----修正各层单元 的权值
网络输出的误差减少到可接受的程度 进行到预先设定的学习次数为止
2.4.2 BP网络的标准学习算法
网络结构 输入层有n个神经元,隐含层有p个神经元, 输出层有q个神经元 变量定义 x x1, x2 , , xn 输入向量; 隐含层输入向量; hi hi1 , hi2 , , hi p 隐含层输出向量; ho ho1 , ho2 , , ho p 输出层输入向量; yi yi1 , yi2 , , yiq 输出层输出向量; yo yo1 , yo2 , , yoq 期望输出向量; d o d1 , d 2 , , d q

matlab自整定pid算法

matlab自整定pid算法

Matlab自整定PID算法一、介绍PID算法PID控制算法是一种经典的反馈控制算法,PID分别代表比例(proportional)、积分(integral)和微分(derivative)。

它是一种线性控制算法,最早应用于工业控制领域,后来被广泛应用于自动化、机器人、航空航天等领域。

PID算法的基本原理是通过对系统的误差进行比例、积分和微分处理,来调节系统的控制量,使系统的输出值逐步趋近目标值。

二、Matlab中的PID控制Matlab作为一种功能强大的科学计算软件,提供了丰富的控制算法工具箱。

在Matlab中,可以通过内置的PID控制器对象来实现PID算法。

可以使用MATLAB提供的PID类对象,也可以自行实现PID算法的代码。

三、Matlab自整定PID算法对于控制系统中的PID参数(Kp、Ki、Kd),通常需要通过试错法来调节,这样既费时又费力。

Matlab提供了自整定PID控制器工具箱,可以根据系统的性能指标自动生成PID参数。

与传统的手动调节相比,自整定PID算法具有以下优势:1. 时间效率:自整定PID算法可以快速生成合适的PID参数,节省了调试时间,提高了工作效率。

2. 精度:自整定PID算法可以根据系统的性能指标精确地生成最优的PID参数,使系统的控制性能得到优化。

3. 应用广泛:自整定PID算法适用于不同类型的系统,包括传统的工业控制系统、机器人系统、航空航天系统等。

四、Matlab自整定PID算法的原理Matlab自整定PID算法的原理主要是基于系统的数学模型和系统的性能指标。

在实际应用中,通常需要对系统进行数学建模,提取系统的参数,并根据系统的性能要求来自动生成PID参数。

MATLAB的自整定PID算法主要包括以下步骤:1. 系统建模:将控制系统的数学模型转化为MATLAB的控制系统模型,提取系统的参数,如传递函数、状态空间模型等。

2. 设定性能指标:根据控制系统的性能要求,设定性能指标,如超调量、调节时间、稳定性等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%BP based PID Control
clear all;
close all;

xite=0.28; % 学习速率
alfa=0.001; %惯性系数

IN=4;H=5;Out=3; %NN Structure(构造,神经网络结构)
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); %Output from NN middle layer
I=Oh; %Input to NN middle layer
error_2=0;
error_1=0;

ts=0.01;
sys=tf(2.6126,[1,3.201,2.7225]); %建立被控对象传递函数(LTI Viewer对象模型sys=tf(num,den)
将由传递函数模型所描述系统封装成对应的系统对象模型。
dsys=c2d(sys,ts,'z'); %把传递函数离散化(零阶保持器法离散化)
[num,den]=tfdata(dsys,'v'); %离散化后提取分子、分母(提取每项的常数)
for k=1:1:2000 %频率参数,构成一维数组
time(k)=k*ts;
rin(k)= 40;
yout(k)=-den(2)*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; %计算P
x(2)=error(k); %计算I
x(3)=error(k)-2*error_1+error_2; %计算D
epid=[x(1);x(2);x(3)];
I=xi*wi'; %the output of the input layer , and 1*5
for j=1:1:H
Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j))); %Middle layer's output
end
K=wo*Oh; %Output Layer(the input of output layer)
for l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l))); %Getting kp,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; % the increment(增加) of the output "u"
u(k)=u_1+du(k); % the output of the value of controlling
if u(k)>=45 % Restricting(限制)the output of controller
u(k)=45;
end
if u(k)<=-45
u(k)=-45;
end

dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001)); %当x<0时,sign(x)=-1当x=0时,sign(x)=0;
当x>0时,sign(x)=1。dyu(k)表示什么

%Output layer
for j=1:1:Out
dK(j)=2/(exp(K(j))+exp(-K(j)))^2; %the value of g'()
end
for l=1:1:Out
delta3(l)=error(k)*dyu(k)*epid(l)*dK(l); %输出值
end

for l=1:1:Out
for i=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); %wo更新
%Hidden (隐藏)layer
for i=1:1:H
dO(i)=4/(exp(I(i))+exp(-I(i)))^2; %the value of the f'()
end
segma=delta3*wo; % the sum(总和)
for i=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);% 不就是wi修改更新的过程吗?个人认为:如果被控对象
的表达式:'yout'改变的话,权值修改的中间过程都不要改变,因为不管系统的输出是什么,
bp神经网络权值修改的公式都是一样的啊。有可能的话,可以把权值的初始值改一下,不
是必须的,反正神经网络会自己调整权值,只要不陷入局部极小值就可以了(对不同的系统
可以采取修改权值 学习效率和惯性系数来调整神经网络的控制效果)

%Parameters (参数,变量)Update(更新)
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');

本来按照原来的传递函数是有图形的,但是换了传递函数就出现这个样子
是不是就像老师说的可以调节数轴。

相关文档
最新文档