基于BP神经网络的PID在温控系统中的应用(2)
1.2 参数的自适应整定 BP网络采用三层结构,其结构如图2所示。它有 个输入节点, 个隐含层节点,3个输出节点。 由图2可知,BP网络输入层的输入为 (2 ) 式(2)中, 为输入量个数,其值取决于被控系统的复杂程度。 隐含层输入输出为 式(3)中 为隐含层加权系数; 为活化函数。上角标(1)、(2)、(3)分别表示输入层、隐含层、输出层。隐含层神经元的活化函数取正负对称的Sigmoid 函数。 式中, 为输出层加权系数; 为输出层的活化函数。3个输出节点分别对应于PID的三个参数 , , ,由于 , , 不能为负,所以输出层神经元活化函数取非负的Sigmoid 函数。 (6) 取性能指标函数为 (7) 按照梯度下降法修正网络的权系数,即按 对加权系数的负梯度方向搜索调整,并附加一使搜索快速收敛全局极小的惯性项,则有 (8) 式中 为学习速率; 为惯性系数。 (9) 一般地,由于对象特性未知且难以直接求得,所以近似用符号函数 取代。由(1)式可得 式中, 同理,可得隐含层加权系数的计算公式为 式中, 1.3实际数据归一化处理的改进 由于激励函数采用Sigmoid函数, 该函数的值域为 , 因此在网络训练时要将实际数据规范到[0,1]区间,通常采用标准的归一方法来实现。但是根据Sigmoid函数中间高增益、两端低增益的特性,当数据在越来越趋近于0的区域和越来越趋近于1的区域里进行学习时,恰好是Sigmoid函数的极小值和极大值。这时由于数据在饱和区段,从而需要相当多的训练次数来不断修正权值,导致训练速度缓慢,甚至出现麻痹状态。为避免这种现象, 可以将生成数据规范到 区间以此来避开饱和区段,设 , 为输入层输入实际数据的最大值和最小值,则相应的规格化后的变量为 (13) 通过式(13)来预处理实际数据,这样输入输出数据将全部在 区间,可以大大加快网络学习速度,而数据间的联系并不减少。通过实验,我们发现选用改进的归一化处理方法,效果更好。 综上所述,基于BP神经网络的PID控制算法可归纳如下: (1) 选定BP神经网络的结构,即选定输入层节点数 和隐含层节点数 ,并选取各层加权系数的初值 、 ,确定学习速率 和惯性系数 , ; (2) 采样得到 和 ,计算 ; (3) 对 、 、 、 采用改进的归一化处理方法来处理实际数据,作为NN的输入; (4) 根据式(2)~式(4)前向计算NN的各层神经元的输入和输出,NN输出层的输出极为PID的三个可调参数 , , ; (5) 根据式(1),计算PID的控制输出 ,参与控制和计算; (6) 由式(11),计算修正输出层的加权系数 ; (7) 由式(12),计算修正隐含层的加权系数 ; (8) 置 ,返回到(2)。