BP神经网络整定PID:

传统增量式数字PID控制算法为:

现引入三层BP神经网络,网络输入层为: j=1,2,...,M

隐含层的输入输出为:  i=1,2,...,Q

其中,为隐含层加权系数。隐含层是网络的内部信息处理层,负责信息变换。隐含层神经元的活化函数取正负对称的Sigmoid函数:

网络输出层的输入和输出为:

其中,表示神经网络输出层的三个输出节点,输出层向外界输出信息处理结果。这里的三个输出节点分别对应PID控制器的三个可调参数。而输出层神经元的活化函数为非负的Sigmoid函数:

性能指标函数为:

整个神经网络按E(k)对加权系数的负梯度方向搜索调整,修正网络的权系数,并附加一个使搜索调整快速收敛于全局极小的惯性项:

,式中为学习速率,为惯性系数。

其中y(k)为被控对象的传递函数。

,由于未知,这里近似用符号函数取代,由此产生的计算不精确的影响通过调整学习速率来补偿。

推导出网络输出层权的学习算法为:

l=1,2,3...

式中,

同理可得隐含层加权系数的学习算法:

  i=1,2,3...Q

式中,

S函数:

function [sys,x0,str,ts,simStateCompliance] = sfun_BP(t,x,u,flag,T,j,xite,alfa)
switch flag,case 0,[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(T,j);
%初始化函数case 3,sys=mdlOutputs(t,x,u,xite,alfa);
%输出函数case {1,2,4,9},sys=[];otherwiseDAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(T,j)
%调用初始化函数,T步长,j隐含层神经元数
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 4;
%定义输出变量,包括控制变量u,三个PID参数:Kp,Ki,Kd
sizes.NumInputs      = 8;
%定义输入变量,包括7个参数[e(k);e(k-1);e(k-2);y(k);y(k-1);r(k);u(k-1)]和偏置量u(8)=1
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [T 0];
global wi_2 wi_1 wo_2 wo_1
wi_2 =rand(j,4).*2-1;
%隐含层(k-2)权值系数矩阵,维数j*4,范围【-1,1】
wo_2 = rand(3,j);
%输出层(k-2)权值系数矩阵,维数3*j,范围【0,1】
wi_1 = wi_2;
%隐含层(k-1)权值系数矩阵,维数j*4
wo_1 = wo_2;
%输出层(k-1)权值系数矩阵,维数3*j
simStateCompliance = 'UnknownSimState';
function sys=mdlOutputs(t,x,u,xite,alfa)
%调用输出函数
M=[50;2;25];
%PID权值
global wi_2 wi_1 wo_2 wo_1
xi = [u(6),u(4),u(1),u(8)];
%神经网络的输入xi=[u(6),u(4),u(1),u(8)]=[r(k),y(k),e(k),1] 维数1*4
xx = [u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
%xx=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)]=[e(k)-e(k-1);e(k);e(k)+e(k-2)-2*e(k-1)]3*1
I = xi*wi_1';
%计算隐含层的输入,I=神经网络的输入*隐含层权值系数矩阵的转置wi_1'
Oh = (exp(I)-exp(-I))./(exp(I)+exp(-I));
%激活函数,计算隐含层的输出,为1*j的矩阵
O = wo_1*Oh';
%计算输出层的输入,维数3*1
K =exp(O)./(exp(O)+exp(-O));
%激活函数,计算输出层的输出K=[Kp,Ki,Kd],维数为3*1
K(1)=M(1)*K(1);K(2)=M(2)*K(2);K(3)=M(3)*K(3);
uu = u(7)+K'*xx;
%根据增量式PID控制算法计算控制变量u(k) 维数1*1
if uu>15uu=15;
end
if uu<-15uu=-15;
end
%限制输出u
dyu = sign((u(4)-u(5))/(uu-u(7)+0.0001));
%计算输出层加权系数修正公式的sgn
%sign((y(k)-y(k-1))/(u(k)-u(k-1)+0.0001))近似代表偏导 维数1*1
dO = 2./(exp(O)+exp(-O)).^2;
%激活函数,维数3*1
delta3 = u(1)*dyu*xx.*dO;
wo = wo_1+xite*delta3*Oh+alfa*(wo_1-wo_2);
%输出层加权系数矩阵的修正
dI = 2./(exp(I)+exp(-I)).^2;
%激活函数,维数1*j
wi = wi_1+xite*(dI.*(delta3'*wo))'*xi+alfa*(wi_1-wi_2);
%隐含层加权系数修正
wi_2=wi_1;
wi_1=wi;
wo_2=wo_1;
wo_1=wo;
sys = [uu;K(:)];
%输出层输出sys=[uu;Kp;Ki;Kd]

simulink:

得到的阶跃响应为:

其中,

KP:

KI:

KD:

参考原文链接:https://blog.csdn.net/weixin_42650162/article/details/90678503

参考文献

[1]李捷菲. 基于BP神经网络的PID控制系统研究与设计[D].吉林大学,2019.

[2]K. Jiangming and L. Jinhao, "Self-Tuning PID Controller Based on Improved BP Neural Network," 2009 Second International Conference on Intelligent Computation Technology and Automation, 2009, pp. 95-98, doi: 10.1109/ICICTA.2009.32.

[3]Gan Jialiang, Li Zhimin and Tan Huaijiang, "Research on self-tuning PID control strategy based on BP neural network," Proceedings of 2011 International Conference on Electronics and Optoelectronics, 2011, pp. V2-16-V2-21, doi: 10.1109/ICEOE.2011.6013163.

BP神经网络整定PID相关推荐

  1. 基于BP神经网络的PID控制,神经网络算法pid控制

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

  2. 基于bp神经网络的pid算法,神经网络pid控制器设计

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

  3. 基于bp神经网络的pid控制,pid神经网络什么原理

    关于基于神经网络的PID液位控制用MATLAB怎么编程啊?求高手指点!!!! . 其实只需要PID参数能够顺利确定就行了,这里有个程序,你试试看closeallclearallclctic%初始化x= ...

  4. 基于bp神经网络的pid算法,基于单神经元的pid控制

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

  5. 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf

    基于BP神经网络的PID控制器及其MATLAB仿真.pdf 2009 NO.10 中国新技术新产品 China New Technologies and Products 高新技术 基于BP 神经网络 ...

  6. 基于BP神经网络的PID控制,基于单神经元的pid控制

    PID控制.模糊控制.自适应控制的原理,及其优缺点比较!大神,急缺中..... PID控制可靠而稳定,控制过程可以被100%复现.可以再任何工业现场应用. 模糊控制是在对工艺系统的分析基础上对PID控 ...

  7. 使用BP神经网络获得PID控制器的kp,ki,kd控制参数matlab仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下:

  8. 基于S函数的BP神经网络PID控制器及simulink仿真

    基于S函数的BP神经网络PID控制器及simulink仿真 文章目录 文章来源和摘要 S函数的编写格式和运行步骤 simulink模型结构 S函数模型初始化部分代码理解 S函数模型更新部分 S函数模型 ...

  9. 【PID优化】基于matlab粒子群算法优化BP神经网络PID控制【含Matlab源码 2022期】

    ⛄一.粒子群算法优化BP神经网络PID控制简介 BP神经网络PID控制算法 传统PID控制器作为一种线性控制器,具备结构,容易实现的优点,其基本原理是将系统的实际输出值和期望输出值之间的偏差按照比例. ...

  10. bp神经网络的主要功能,一文搞定bp神经网络

    张力传感器的工作原理 张力传感器(tensionsensor):张力传感器是张力控制过程中,用于测量卷材张力值大小的仪器. 张力传感器适用于各种光纤.纱线.化纤等的张力测量:广泛应用于电子.化工.纺织 ...

最新文章

  1. unity_简单五子棋的实现(无AI)
  2. android启动---lk入口文件crt0.s解析
  3. CodeFirst EF中导航属性的个人理解
  4. spring-boot-1.4x后@ConfigurationProperties注解舍弃location
  5. java泛型与c 泛型,Java泛型代码编译与javac,失败与Eclipse Helios
  6. 赚钱的一大障碍:知道的赚钱门路太多
  7. python redis pipeline 堆积_Redis Pipeline python
  8. video safari不支持吗_您支持吗? 公园遛狗纳入 “不文明行为黑名单”
  9. JMeter下载安装以及使用教程
  10. jaxen-1.1-beta-6.jar下载,Dom4j的xpath的使用
  11. Win11怎么关闭开机自启动软件
  12. regester正则用法_Regester(正则表达式测试器)官方版
  13. ios 越狱后常见的源添加
  14. numpy 1.7中 f2py示例和说明文档
  15. mysql发送邮件例子_发送邮件(示例代码)
  16. 有关期货公司出入金问题(期货的出入金)
  17. linux清理dns缓存命令,Ubuntu下清空DNS缓存 提升访问速度
  18. 微信 php 地图定位,微信公众号定位地图位置写入数据库,再显示地图的方法
  19. 编译ThingsBoard V3.3.2源码
  20. 关于 Flash Builder

热门文章

  1. Win10无法安装 文鼎CS行楷.TTF
  2. 互补滤波算法及理论推导
  3. 用python批量下载网易云音乐_python实现网易云音乐批量下载
  4. ajax教程初始模板,ajax实战入门模板
  5. 海康威视存储服务器的作用,海康存储服务器CVR存储方式配置说明
  6. 免费php文件加密软件,php源码加密 在线加密工具
  7. 《自卑与超越》读书笔记优秀范文3200字
  8. C语言实现巴特沃斯IIR滤波器
  9. 微信小程序人脸识别之人脸属性检测
  10. Lua学习---编译生成lua和luac