基于MATLAB的BP神经网络PID控制器设计

一、BP神经网络PID控制算法步骤:

(1)确定BP神经网络结构,即确定输入层和隐含层的节点个数,选取各层加权系数的初值wij(0)、wli(0),选定学习速率和惯性系数,此时k=1(2)采样给定和反馈信号,即r(k)和y(k),计算误差e(k)=r(k)-y(k)(3)确定输入量(4)根据上述公式,计算各层神经元的输入、输出,神经网络输出层即为PID控制器的三个可调参数Kp、Ki和Kd(5)由增量式PID控制公式,计算PID控制器的控制输出u(k)(6)进行神经网络学习,实时自动调整输出层和隐含层的加权系数wli(k)和wij(k),实现PID控制参数的自适应调整(7)置k=k+1,返回步骤(2)

二、建立模型

2.1 BP_PID

2.2 Subsystem

2.3 S_Function

function [sys,x0,str,ts,simStateCompliance] = nnbp(t,x,u,flag,T,nh,xite,alfa)
switch flag,case 0,[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(T,nh);
%初始化函数case 3,sys=mdlOutputs(t,x,u,nh,xite,alfa);
%输出函数case {1,2,4,9},sys=[];otherwiseDAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(T,nh)
%调用初始画函数,两个外部输入参数 参数T确定采样时间,参数nh确定隐含层层数
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 4+6*nh;
%定义输出变量,包括控制变量u,三个PID参数:Kp,Ki,Kd,隐含层+输出层所有加权系数
sizes.NumInputs      = 7+12*nh;
%定义输入变量,包括前7个参数[e(k);e(k-1);e(k-2);y(k);y(k-1);r(k);u(k-1)]
%隐含层+输出层权值系数(k-2),隐含层+输出层权值系数(k-1)
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [T 0];
simStateCompliance = 'UnknownSimState';
function sys=mdlOutputs(t,x,u,nh,xite,alfa)
%调用输出函数
wi_2 = reshape(u(8:7+3*nh),nh,3);
%隐含层(k-2)权值系数矩阵,维数nh*3
wo_2 = reshape(u(8+3*nh:7+6*nh),3,nh);
%输出层(k-2)权值系数矩阵,维数3*nh
wi_1 = reshape(u(8+6*nh:7+9*nh),nh,3);
%隐含层(k-1)权值系数矩阵,维数nh*3
wo_1 = reshape(u(8+9*nh:7+12*nh),3,nh);
%输出层(k-1)权值系数矩阵,维数3*nh
xi = [u(6),u(4),u(1)];
%神经网络的输入xi=[u(6),u(4),u(1)]=[r(k),y(k),e(k)]
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)]
I = xi*wi_1';
%计算隐含层的输入,I=神经网络的输入*隐含层权值系数矩阵的转置wi_1',结果为:
%I=[net0(k),net1(k)...netnh(k)]为1*nh矩阵
Oh = exp(I)./(exp(I)+exp(-I));
%激活函数,可更改
%计算隐含层的输出,(exp(I)-exp(-I))./(exp(I)+exp(-I))为隐含层的激活函数Sigmoid
%Oh=[o0(k),o1(k)...onh(k)],为1*nh的矩阵
O = wo_1*Oh';
%计算输出层的输入,维数3*1
K = 2./(exp(O)+exp(-O)).^2;
%激活函数,可更改
%计算输出层的输出K=[Kp,Ki,Kd],维数为1*3
%exp(Oh)./(exp(Oh)+exp(-Oh))为输出层的激活函数Sigmoid
uu = u(7)+K'*xx;
%根据增量式PID控制算法计算控制变量u(k)
dyu = sign((u(4)-u(5))/(uu-u(7)+0.0000001));
%计算输出层加权系数修正公式的sgn
%sign((y(k)-y(k-1))/(u(k)-u(k-1)+0.0000001)近似代表偏导
dK = 2./(exp(K)+exp(-K)).^2;
%激活函数,可更改
delta3 = u(1)*dyu*xx.*dK;
wo = wo_1+xite*delta3*Oh+alfa*(wo_1-wo_2);
%输出层加权系数矩阵的修正
dOh = 2./(exp(Oh)+exp(-Oh)).^2;
%激活函数,可更改
wi = wi_1+xite*(dOh.*(delta3'*wo))'*xi+alfa*(wi_1-wi_2);
%隐含层加权系数修正
sys = [uu;K(:);wi(:);wo(:)];
%输出层输出sys=[uu;K(:);wi(:);wo(:)]=
%[uu;Kp;Ki;Kd;隐含层+输出层所有权值系数]
%K(:),wi(:),wo(:),把这三个矩阵按顺序排为列向量

三、实验结果及分析

3.1 output

3.2 kp

3.3 ki

3.4 kd

参考文章

基于BP神经网络PID控制+Simulink仿真

【智能控制实验】基于MATLAB的BP神经网络PID控制器设计相关推荐

  1. 【智能控制实验】基于MATLAB的BP神经网络设计

    实验五:基于MATLAB的BP神经网络设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理和代码设计方法,应用MATLAB编写BP神经网络训练方法:应用神经网络工具箱设计BP神经网络实现对输入输 ...

  2. 【智能控制实验】基于MATLAB的BP神经网络实现非线性函数拟合设计

    基于MATLAB的BP神经网络实现非线性函数拟合设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理,掌握matlab工具箱设计BP神经网络拟合非线性模型的方法(m文件):掌握在图形用户界面下设 ...

  3. 神经网络pid控制器MATLAB,BP神经网络PID控制器的Simulink 仿真模型搭建教程

    BP网络在人工神经网络中应用最为广泛,文中给出基于MATLAB语言的BP神经网络PID控制器的S函数实现,在此基础上建立BP神经网络PID控制器的Simulink 仿真模型,最后给出了该仿真模型应用在 ...

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

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

  5. matlab耀输,基于 Matlab的BP神经网络在太阳耀斑级别预测中的应用

    第 42卷 第 3期 2014年 5月 河南师范大学学报(自然科学版) Journal of Henan Normal University(Natural Science Edition) Z.42 ...

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

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

  7. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 790期】

    ⛄一.BP车牌识别简介(附课程作业报告) 车牌识别系统设计与实现 车牌识别系统主要分为三部分:车牌图像预处理.特征提取以及基于BP神经网络对特征进行训练和分类,流程图如图1所示. 图1 车牌识别系统组 ...

  8. 【交通标志识别】基于matlab GUI BP神经网络交通标志识别系统(含语音报警)【含Matlab源码 2240期】

    ⛄一.BP神经网络交通标志识别简介 道路交通标志用以禁止.警告.指示和限制道路使用者有秩序地使用道路, 保障出行安全.若能自动识别道路交通标志, 则将极大减少道路交通事故的发生.但是由于道路交通错综复 ...

  9. bp神经网络matlab代码_基于Matlab的BP神经网络识别26个英文字母

    一.设计思想 字符识别在现代日常生活的应用越来越广泛,比如车辆牌照自动识别系统,手写识别系统,办公自动化等等.本文采用BP网络对26个英文字母进行识别.首先将待识别的26个字母中的每一个字母都通过长和 ...

  10. 【身份证识别】基于matlab GUI BP神经网络身份证识别【含Matlab源码 2239期】

    ⛄一.身份证号码识别简介 1 引言 当今是一个信息高度发达的时代,对于每个公民而言身份证那一连串的数字体现了个人信息的唯一性,出于保障公民合法权益和社会治安的考虑,越来越多的行业都开始建立自己的安全保 ...

最新文章

  1. python语言表白源码-python七夕浪漫表白源码
  2. python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
  3. hexo部署至FTP-COS
  4. 02-线性结构2 一元多项式的乘法与加法运算 (20 分
  5. 3.9下午(周彤彤)
  6. mybatis11--多对多关联查询
  7. Android播放外部音乐文件
  8. Undefined symbols for architecture armv7错误解决方法
  9. 2月第4周回顾:IT求职困惑不少 虚拟化热点不断
  10. GPUImage源码解读之GPUImageFramebufferCache
  11. 图解R树的内部结构及操作
  12. canvas 擦除动画_Canvas 橡皮擦效果
  13. Python灰帽子黑客与逆向工程师的Python编程之道
  14. css中字体之间的距离是什么意思,css字符间距(css文字间距怎么设置)
  15. 用女人的温暖造就男人的成功
  16. CPU计算机性能的操作方法,cpu怎么设置才能达到最佳性能
  17. 2020科目一考试口诀_2021年科目一考试口诀
  18. Linux vi/vim 文件编辑保存及退出
  19. mongodb用户管理1
  20. php常用的加密解密方法

热门文章

  1. WordPress简单好看的线报主题baolog
  2. matlab仿真介绍,谈一谈|Matlab仿真项目简介
  3. OpenDrive学习笔记
  4. 计算机启动后出现黑屏鼠标,计算机启动后,黑屏只有鼠标解决方案
  5. 安卓从入门到进阶推荐学习方法与书籍整理(pdf)
  6. STS下载教程(include官网无法下载解决方案)
  7. 【初识SciPy库】
  8. 常见物质相对介电常数(室温,频率低于1kHz)
  9. 交叉编译JRTPLib库
  10. SQL Server 百度网盘免费下载