BP神经网络整定的PID算法_matlab源程序
- 格式:docx
- 大小:88.11 KB
- 文档页数:4
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 神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
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神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
变量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编的程序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等著,中英文都有)。
摘要摘要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代码附录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之间。
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. 设定性能指标:根据控制系统的性能要求,设定性能指标,如超调量、调节时间、稳定性等。
产品与应用年第期基于OPC 与Matlab 的PID 控制参数自整定何博肖志刚张东宁(昆明电器科学研究所,昆明650221)摘要目前在Matlab/Simulink 应用方面(包括针对电力系统设计),多限于理论上的分析和模拟。
所以如何把Matlab/Simulink 这一强大的工程应用软件与实际工程应用相互融合就具有非常现实的意义。
本文正是介绍一种如何利用OPC 通信把Simulink 模块程序与实际硬件相融合实现PID 控制系统的参数自整定及优化的方法。
关键词:Matlab ;OPC 通信;参数自整定PID Parameters Self-tur ning Based on OPC and MatlabHe Bo X iao Zhigang Zhang Dongning(Kunming Electrical Apparatus Research Institute,Kunming 650221)Abstr act At present the application of Matlab/Simulink (including the electricity design system)was limited on its theoretical analyse and imitation.So it's fulfilled with realistic meaning if the engineering applied software-Matlab/Simulink can be merged with real engineering application.This artical is mainly talk about how to through taking use of opc communication to merging the Matlab/Simulink module program with real hardware,and finally find the way to PID control system ’s parameter self-tuning and optomization.Key words :Matlab ;OPC communication ;parameters self-tuning1引言随着人类社会的进步,科技的发展创新,行业内竞争的白热化,各企业对自身的自动化生产设备提出了越来越严格的要求—包括自动化程度的提高,生产周期的缩短,控制精度的提升,误动作的减少。
基于BP 神经网络的自校正PID 控制研究摘 要: 基于反向传播BP 算法的神经网络具有很强的学习能力,适应能力.本文详细叙述了BP 算法的原理,并将改进的BP 神经网络应用在传统的PID 控制中,克服了PID 控制在参数的调整过程中对于系统模型过分依赖的缺点.利用MATLAB 仿真的结果表明基于BP 神经网络的自校正控制能够使传统PID 控制的参数逼近最优达到很好的控制效果. 关键词: BP 算法,神经网络,PID 控制1引言随着科学技术的发展,人们需要加以控制的过程和系统越来越复杂,许多系统具有大型,复杂和强烈非线性的特点.对这些系统进行有效准确的控制就非常的困难.传统的PID 控制是通过对偏差的比例(P),积分(I),微分(D)的线性组合构成控制向量对被控对象进行控制.它算法结构简单,但是,当被控对象具有非线性,时变不确定性和难以建立精确的数学模型时,PID 控制器参数整定不良,性能欠佳,不能达到理想的控制效果.随着人们对神经网络的研究,基于BP 算法的神经网络以其自学习,自适应及逼近任意函数的能力在控制领域得到应用,将BP 神经网络和传统的PID 控制相结合构成的比例,积分,微分神经元控制器,不仅克服了PID 控制的缺陷,而且具有快速的学习能力,快速的适应性,良好的性能和鲁棒性.因此,可以通过神经网络对系统性能的学习来达到最佳的比例,积分,微分组合,实现最佳的PID 控制效果.2 神经网络的BP 算法2.1 神经网络的结构BP 神经网络是控制领域中应用最多的神经网络,它是多层神经元彼此以前馈方式连接组成的网络,网络中没有信号反馈,只有相邻层神经元,每个神经元首先完成输入信号与连接权值的内积计算,然后通过一个非线性函数作用产生输出.BP 神经网络通常由输入层,输出层和若干隐层构成每层由若干个结点组成, 每一个结点表示一个神经元,上层结点与下层结点之间通过权值联接, 同一层结点之间没有联系。
基于MATLAB的PID控制器参数整定及仿真PID控制器是一种经典的控制器,在工业自动化控制系统中广泛应用。
其主要功能是根据系统的误差信号,通过调整输出信号的比例、积分和微分部分来减小误差,并达到系统的稳定控制。
PID控制器参数整定是指确定合适的比例常数Kp、积分常数Ki和微分常数Kd的过程。
本文将介绍基于MATLAB的PID控制器参数整定及仿真的方法。
首先,在MATLAB中建立一个包含PID控制器的模型。
可以通过使用MATLAB的控制系统工具箱来实现这一过程。
在工具箱中,可以选择合适的建模方法,如直接设计模型、积分节点模型或传输函数模型。
通过这些工具,可以方便地建立控制系统的数学模型。
其次,进行PID控制器参数整定。
PID控制器参数整定的目标是通过调整比例常数Kp、积分常数Ki和微分常数Kd,使系统的响应特性达到最佳状态。
常用的PID参数整定方法有经验法、试误法、Ziegler-Nichols方法等。
1.经验法:根据系统的特性和经验,选择合适的PID参数。
这种方法常用于初步整定,但可能需要根据实际情况调整参数。
2.试误法:通过逐步试验和调整PID参数,使系统的输出响应逐渐接近期望值,从而达到最佳控制效果。
3. Ziegler-Nichols方法:该方法是一种经典的系统辨识方法,通过测试系统的临界稳定性,得到系统的传递函数参数,并据此计算出合适的PID参数。
最后,进行PID控制器参数整定的仿真。
在MATLAB中,可以通过使用PID模块进行仿真。
可以输入相应的输入信号和初始参数,观察系统的输出响应,并通过调整参数,得到最佳的控制效果。
总结起来,基于MATLAB的PID控制器参数整定及仿真的过程包括:建立控制系统模型、选择PID参数整定方法、进行PID参数整定、进行仿真实验。
PID控制器参数整定的好坏直接影响控制系统的工作性能。
通过基于MATLAB的仿真实验,可以方便地调整和优化控制系统的PID参数,提高系统的响应速度、稳定性和抗干扰性能。
se s s G 5.01101)(−+=()(1)[(1)]()[()2(1)(2)]/p I D Iu k u k K e k K e k K e k e k e k T T =−+−++−−+−神经网络PID 控制器的设计及仿真一、传统PID 控制数字PID 控制算法分位置式和增量式两种,工程上常用的增量式PID 控制算法,其控制算式为:式中,pK 为比例系数,I K =p K /T T为积分系数,/D D K T T =为微分系数,T 为采样周期,IT 为积分时间,DT 为微分时间,()e k 为t kT =时刻的误差。
上述PID 控制算法易于用微机软件实现,PID 控制系统框图如图示。
现有一被控对象为:根据“稳定边界法”即临界比例度法,来整定调节器的参数,带入“稳定边界法整定参数计算表”得到,当采取P 调节时,KP=16,;当采取PI 调节时,KP=14.545,i T =1.7;当采取PID 调节时,KP=18.824,i T =1,d T =0.25。
通过Simulink 进行如下图所示的仿真:仿真结果如下图所示:二、基于BP算法的PID控制基于BP神经网络的PID控制系统结构如下图所示,控制器由两个部分组成:①经典的PID控制器:直接对被控对象进行闭环控制,并且KP,KI,KD三个参数为在线P,I,D整定;②神经网络NN:根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化。
即使神经网络的输出层神经元的输出状态对应于PID控制器的三个可调参数KP,KI,KD,通过神经网络的自学习、调整权系数,从而使其稳定P,I,D状态对应于某种最优控制规律下的PID控制器参数。
在这里设计的BP网络采用结构简单的三层BP神经网络,其结构如下图所示,有m个输入节点、Q个隐含层节点、3个输出节点。
输入节点对应所选的系统运行状态量,如系统不同时刻的输入量和输出量等,必要时要进行归一化K K K。
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 )进⾏优化。
PID控制算法在Matlab中的应用1. 简介PID控制算法是一种经典控制算法,它通过比例、积分和微分三个部分来调节控制系统的输出,以实现对系统的稳定控制。
在Matlab中,可以利用其丰富的工具箱和编程功能来实现PID控制算法,并对系统进行仿真和分析。
2. PID控制算法原理PID控制算法是由比例项(P)、积分项(I)和微分项(D)组成的。
比例项根据当前误差进行控制,积分项根据累积误差进行控制,微分项则根据误差变化速度进行控制。
通过这三个部分的调节,PID控制算法可以有效地实现对系统的稳定控制。
3. 在Matlab中实现PID控制算法在Matlab中,可以利用Control System Toolbox提供的函数和工具来实现PID控制算法。
可以使用pid函数创建一个PID控制器对象,设置其比例、积分和微分系数。
可以将该PID控制器对象与系统模型进行连接,通过sim函数对系统进行仿真和分析。
4. 使用示例以下是一个简单的示例来演示如何在Matlab中实现PID控制算法。
创建一个一阶惯性系统模型,然后使用pid函数创建一个PID控制器对象,设置其比例、积分和微分系数。
将PID控制器对象与系统模型进行连接,通过sim函数对系统进行仿真并绘制响应曲线。
```matlab创建一阶惯性系统模型sys = tf(1, [1 1]);创建PID控制器对象Kp = 1;Ki = 0.1;Kd = 0.2;pid_controller = pid(Kp, Ki, Kd);将PID控制器对象与系统模型进行连接sys_with_pid = feedback(pid_controller * sys, 1);对系统进行仿真并绘制响应曲线t = 0:0.1:10;u = ones(size(t));lsim(sys_with_pid, u, t);```通过以上示例,可以看到PID控制算法对系统的控制效果。
在实际应用中,可以根据具体系统的特性和需求来调节PID控制器的参数,以达到最佳的控制效果。
%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');
本来按照原来的传递函数是有图形的,但是换了传递函数就出现这个样子
是不是就像老师说的可以调节数轴。