中原工学院毕业设计(论文)
(3)?wli(k)????E(k)(3)???w(k?1)li(3)?wli (4.8)
式中,η为学习速率;α为惯性系数。
(3)(3)?Ql(3)(k)?netl(3)(k)?E(k)?E(k)?y(k)?u(k)?Q(k)?net(k)?E((3)k)??E(k)??y(k)??u(k)??l(3)l(3)(3)??????wli?y(k)?u(k)?Q(k)?net(k)?wli(3)(3)(k) ?wli?y(k)?u(k)?Qll(3)(k)?netll(3)(k)?wli(k) (4.9)
(3)?netl(3)(k)(2)?net(k)?O(k)(2)li((3)?Ok)i?wli(3)(k)?wli(k) (4.10)
由于
?y(k)?u(k)未知,所以近似用符号
sgn(?y(k))?u(k)函数取代,由此带来计算不精确的
影响可以通过调整学习速率η来补偿。
?u(k)?error(k)?error(k?1)(3)?Ql(k)由式(4.1)和式(4.5),可求得:
(4.11)
?u(k)?error(k)(3)?Q2(k) (4.12)
(4.13)
?u(k)?error(k)?2error(k?1)?error(k?2)(3)?O3(k)上述分析可得网络输出层权的学习算法为:
(3)(3)?wli(k)???wli(k?1)???l(3)Oi(2)(k) (4.14)
?l(3)?error(k)sgn(?y(k)?u(k)(3)?)g(net(k))l(3)?u(k)?Ol(k) (l=1,2,3) (4.15)
同理可得隐含层加权系数的学习算法:
(2)(2)?wli(k)???wij(k?1)???i(2)O(1)j(k) (4.16)
?(2)i?f?(net(2)i(3)(k))??l(3)wli(k)l?13 (4.17)
2??g(?)?g(x)(1?g(x)),f(?)?(1?f(x))2 (4.18) 式中,
基于BP网络的PID控制器结构如图4-2所示,该控制器控制算法归纳如下[15]: (1)确定BP网络的结构,即确定输入层点数M和隐含层节点数Q,并给出各层加权系12w(0)数的初值ij和wli(0),选定学习速率η和惯性系数α,此时k=1;
22
中原工学院毕业设计(论文)
(2)采样得到rin(k)和yout(k),计算该时刻误差error(k)= rin(k)- yout(k); (3)计算神经网络NN各层神经元的输入、输出,NN输出层的输出即为PID控制器的三个可调参数Kp,Ki,Kd;
(4)根据式(4.12)计算PID控制器的输出u(k);
12wij(k)wli(k)(5)进行神经网络学习,在线调整加权系数和,实现PID控制参数的自适应调整;
(6)置k=k+1,返回到(1)。
NNkprinerrorkikdPlantyoutaeatPID图4-2 基于BP网络的PID控制器结构模型
4.2 BP-PID控制实验仿真
BP-PID控制实验仿真是在MATLAB中完成的,主要借助于MATLAB中M文件的实现,编写M文件程序,调试并运行得出仿真曲线。
4.2.1MATLAB简介
MATLAB是美国MathWorks公司开发的用于教育、工程与科学计算的软件产品,它向用户提供从概念设计、数据分析、算法开发、建模仿真到实时实现的理想集成环境,是国际控制界公认的标准计算软件。经过十多年的不断地完善和扩充,MATLAB已经拥有了数十个工具箱和功能模块,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理、声音处理、系统建模等诸多领域的计算和图形显示功能,具有简单易学、代码短小高效、计算功能强大、图形表达功能强大、可扩展性能好等优点[16]。
MATLAB提供了一种用于编程的高级语言——M语言[17]。M语言是一种面向科学与工程计算的高级语言,其最大的特点是简单和直接。它允许用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用其编程
23
中原工学院毕业设计(论文)
犹如在演算纸上排列出公式与求解问题,被称为第四代计算机语言。MATLAB的程序文件和脚本文件通常保存为后缀为“.m”的文件,可以称之为M文件。M文件实际上是一个命令集,其语法规则与C语言几乎完全一样。M文件以ASCH码文本的形式存储,它既可以用MATLAB的M文件编辑器创建和编辑,也可以用其它的文本编辑器。
MATLAB主要由MATLAB主程序、Simulink动态仿真系统和功能各异的MATLAB工具箱(Toolbox)三大部分组成。其中主程序包括了MATLAB 语言、开发环境、图形句柄、数学函数库和应用程序接口五个部分。
MATLAB是一种基于不限维数组数据类型的内部交互系统,它既能够进行矩阵和向量计算,也能够采用特定的方法在标量语言(例如,C 和FORTRAN语言)中编写程序。它采用一些常用的数学符号来表示问题及其解决方案,将计算、可视化和编程等功能集成于一个简单、易用的开发环境中,为用户工作平台的管理和数据的输入/输出提供了便利的方法,同时还提供了M文件的扩展和管理工具。
这次本人的设计用的是MATLAB R2007a这个版本,这个版本是美国MathWorks公司2007年出的软件。MATLAB功能强大,这次只用到其中一小部分功能。主要应用MATLAB的图形用户界面的设计、M文件的编写和MATLAB的LCC封装部分。
4.2.2 BP-PID控制实验仿真
利用BP神经网络可以解决很多有关非线性系统的问题,如函数逼近、系统辨识等。 设被控对象的近似数学模型为:
yout(k)??0.1ka(k)?1.2(1?0.8e)。 a(k)式中,系数是慢时变的,
a(k)yout(k?1)?u(k?1)21?yout(k?1)
神经网络的结构选如图4-5-3,学习速率η=0.25和惯性系数α=0.05,加权系数初估值取区间[0.5,0.5]上的随机数。输入指令信号分为两种:
(1) rin(k)=1.0 (2) rin(k)=sin(2πt)
取S=1时为阶跃跟踪,S=2时为正弦跟踪,初估权值取随机值,运行稳定后用稳定权值代替随机值。
但是由于可调参数Kp,Ki,Kd均取非负的Sigmoid函数,其值在(0,1)之间,使得算法的应用具有局限性。
跟踪结果和相应的曲线如图4-3至图4-8所示。
24
中原工学院毕业设计(论文)
图4-3 阶跃响应曲线(S=1)
图4-4 参数自适应是整定曲线
25