吕晓丹,吴次南
(贵州大学大数据与信息工程学院,贵阳550000)
比例积分微分(Proportion integral differential,PID)控制是较为传统的控制算法,由于其具有算法简单、鲁棒性好、可靠性高的优点,被广泛应用在过程控制和运动控制中,尤其适用于可建立精确数学模型的系统。但是,实际工业自动化过程往往具有非线性、时变、难以建立精确数学模型的特点,而传统PID控制器的3个控制参数(比例系数Kp、积分系数Ki、差分系数Kd)是一组根据经验设定的固定值,无法实时在线调整,导致控制效果很难让人满意。
神经网络具有强大的自我学习能力和非线性映射能力,可以实现PID控制参数的实时在线调整。于是开始有学者将神经网络应用到PID控制领域,形成神经网络PID控制器[1-2]。这种方法较之传统PID控制器而言,实现了控制参数的在线调整,提高了PID控制的品质。
但是,神经网络的缺点是推理能力差,而模糊控制有着很好的逻辑推理能力,于是,不少学者尝试将神经网络与模糊控制这两种智能控制技术结合起来。1990年,Takagi[3]概括性地探讨了模糊控制与神经网络未来的发展趋势。Jang等[4-5]分别证明了神经网络与模糊控制的函数等价性,为模糊控制与神经网络的结合打下了坚实基础。随后,学者们在模糊神经网络领域有不少新发现。例如:一种带有补偿运算层的5层补偿模糊神经网络[6];一种基于免疫遗传算法的动态递归模糊神经网络[7];在线动态增减规则层神经元个数的改进型模糊神经网络[8]等;除了对网络的整体结构进行改进外,也有学者对网络中某一部分进行了改进和创新。众所周知,网络的性能受初值的影响很大,初值选择不当网络很容易陷入局部最优解[9]。于是有学者采用混沌遗传算法离线粗调来选择更加合适的参数初值,再利用反向传播(Back propagation,BP)算法在线细调来得到最优的网络参数值,进而有效改善了网络的性能提高了控制效果[10]。还有学者将注意力集中在模糊规则的优化上,试图定义一个带参的分段函数形式的模糊规则,然后使用思维进化算法得到模糊规则的相关参数值。实验结果表明参数化的模糊规则对于改善控制效果是很有帮助的[11]。
但是将模糊神经网络应用到PID控制领域的学者却较少。蒋金伟等[12-13]设计了标准模糊神经网络PID控制器。本文在此基础上,提出的改进型模糊神经网络智能PID控制器,是一种融合了神经网络和模糊控制各自的优点,在模糊规则参数化及激活函数构建等方面进行改进创新的新型智能PID控制器。其中,模糊规则部分采用含权重的规则解析式,让模糊规则可以跟随误差和误差变化率的大小而在线调整,丰富了专家经验的内容,提高了控制的精度。同时,构造了IThLU函数作为网络的激活函数,IThLU具有宽泛的敏感区并且梯度可调的特点,避免了训练过程中的梯度消失及梯度爆炸现象的发生。最终的仿真结果表明本文提出的改进型模糊神经网络PID控制器(Improved fuzzy neural network PID,IFNN-PID)较之传统PID控制器(Traditional PID,T-PID)、神经网络PID控制器(Neural network PID,NN-PID)、标准模糊神经网络PID控制器(Standard fuzzy neural network PID,SFNN-PID)而言,提高了响应性、准确性和稳定性,取得了良好的控制效果。
在工业自动化控制领域,PID算法是常见的控制算法。PID算法的离散控制率为[1]
式中:e(k)为系统输入与输出之间的误差,为误差的累加和,e(k)-e(k-1)为误差的变化率。比例环节Kpe(k)用于快速消除输入与输出间的误差,比例系数Kp越大,系统响应速度越快速;积分环节用于减小系统的静态误差,积分系数Ki越大,系统的响应结果越精准;差分环节Kd[e(k)-e(k-1)]用于消除控制过程中的振荡,差分系数Kd越大,系统的响应过程越稳健。因而,Kp、Ki、Kd3个控制参数的选择直接影响到PID算法的控制效果。工程上,这3个控制参数大多依据专家经验设定为固定值,其效果往往不能令人满意,如何进行控制参数的自适应调整就成为PID控制领域的一大挑战。
模糊控制可以通过专家经验和实验构建知识库,模拟人类在控制过程中的决策行为,具备强大的逻辑推理能力。神经网络具有强大的自学习能力和非线性映射能力。为了能够实现PID控制参数的自我调整,从而实现对非线性复杂对象的有效控制,本文将模糊理论和神经网络结合起来形成模糊神经网络并应用到PID控制算法中,来提高控制的响应性、稳定性和精确性。模糊神经网络的结构如图1所示。
该模糊神经网络共分为4层:
第一层为输入层,共两个节点。该层的每个神经元与输入向量i1=[e(k),ec(k)]的各分量相连,其作用是接收误差e(k)和误差变化率ec(k)并传至第二层。i1代表第一层输入向量(1行2列),o1代表第一层输出向量(1行2列)。
第二层为模糊化层,共14个节点。该层的每个神经元代表1个高斯隶属度函数,其作用是对输入值划分成7个模糊区间并进行模糊化处理。i2代表第二层的输入向量(1行2列),o2代表第二层的输出向量(2行7列),b和c均为隶属度函数的参数矩阵(1行7列)。
第三层为模糊推理层(模糊规则层),共49个节点。该层的每个神经元代表模糊规则库的一条模糊规则,其作用是将第二层的模糊化结果经过模糊规则函数f()处理后得到模糊推理输出。i3代表第三层输入矩阵(2行7列),o3代表第三层输出矩阵(1行49列)。
第四层为输出层,共3个节点。该层的3个神经元代表3个计算节点,其作用是进行解模糊计算最终得到PID的3个控制参数Kp、Ki、Kd。i4代表第四层的输入矩阵(1行3列),w代表第三层与第四层之间的连接权重矩阵(49行3列),g()代表激活函数,o4代表第四层的输出矩阵(1行3列)。
为了最大化利用神经网络的自学习能力,取得更好的控制效果,本文将模糊化层、模糊推理层、解模糊层全部进行参数化。其中模糊化层采用高斯隶属度函数进行参数化,而模糊推理层的模糊规则函数f()和解模糊层的激活函数g()将在第2节进行详细论述。
模糊规则是模糊控制的核心,规则的好坏直接影响着推理的结果及控制器的精度。在标准模糊神经网络PID控制器[12-13]中,仅考虑了模糊化层和解模糊化层的参数化,并没有考虑模糊推理层的参数化。本节将对模糊规则进行参数化处理,以期对标准模糊神经网络PID控制器进行改进,取得更好的控制效果。
最初,模糊控制规则是由模糊语言进行描述的,具有if-then结构:
If input 1 and input 2 then output。
If-then结构的模糊规则通过大量的专家经验和工程实验得到,以这种方式获得的模糊规则成本高、精度低,难以达到最优的控制效果。为了提高控制精度,学者们开始将模糊规则用解析式来表达,常用的规则表达式为
式(10)为最小规则、式(11)为最大规则,核心原理都是取误差及误差变化率的最小/最大值作为控制量施加到被控对象上,来消除误差或者误差变化率。但是这种方式,每次只考虑了e或者ec中的一个量,信息利用率比较低,故而有学者采用式(12)累乘规则替代最小/最大规则。累乘规则同时考虑了e和ec两个量。但是累乘规则中,e和ec的权重系数都是1,没有考虑到两者权重系数的差异。在工程实际中,被控对象在不同的状态下,对e和ec的加权程度是不同的。例如,当e较大时,首先应考虑快速消除偏差,这时e的权重系数应该较大;当e较小时为了系统尽快稳定,这时ec的权重系数应该较大。为了让系统可以根据自身状态来调整e和ec的权重,本文将模糊规则进行参数化处理,采用式(13)作为模糊规则函数f()的解析式。
式中:α的取值直接影响着控制的品质和效果。如何确定α也成为学者研究的内容。比如有学者采用思维进化算法来确定α的取值[11],其核心思想在于按照不同的误差e等级引入不同α值,这样u就成为e的分段函数,然后利用思维进化算法来寻求α的最优解。这种方法可以在缺乏专家经验的情况下得到较可靠的模糊控制规则。但是,用这种方法一旦确定了α值就不可能再次修改,即无法实现α值的在线实时调整,当系统状态发生变化时,此前确定的α值就不再是当前状态下的最优选择了。
为了解决α值无法在线调整的问题,本文将列向量α(1*49)也作为神经网络需要在线实时调整的参数,确定好代价函数后,让α值沿着梯度下降的方向变化,进而得到实时状态下使代价函数最小的α值。此时,控制规则中的误差e和误差变化率ec的权重系数此消彼长,随着系统状态变化而变化,提高了模糊规则的精度,改善了控制算法的效果。
各类实际系统的被控对象都具有非线性的特点。为了实现对这类系统的有效控制,常利用激活函数将非线性因素融入到神经网络中去,避免输入与输出的纯线性关系,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。
起初,人们将sigmoid函数作为激活函数应用在逻辑回归中,它可以被理解为一种概率且求导容易。但是它不是一个零均值函数,会造成信号丢失;后来,人们采用tanh函数作为激活函数,相对于sigmoid函数来说tanh函数是零均值函数且收敛更快,但是仍然存在梯度消失的现象,不利于梯度下降法进行网络训练;为了避免梯度消失现象,研究者开始扩展激活函数的敏感区间,Nair等[14]提出了修正线性单元(Rectified linear unit,ReLU)激活函数,该函数在x为正数时梯度恒为1,这就避免了在正半轴的梯度消失,但是当x为负数时梯度恒为0,会丢失信号的所有负数特征,造成神经元死亡。为了解决这一问题,刘坤华等[15]提出了基于双曲正切函数的修正线性单元(Tangent-based rectified linear unit,ThLU),ThLU函数的正半轴来自ReLU函数的正半轴,负半轴来自tanh函数的负半轴,其表达式为
为了方便作比较,现将sigmoid函数、tanh函数、ReLu函数以及ThLU函数绘制在一个坐标系中(图2)。
图2 几个激活函数的比较Fig.2 Comparison of several activation functions
由图2可知,ThLU函数的敏感区间较sigmoid函数和tanh函数要宽很多,从而有效避免了梯度的消失;同时ThLU函数的负半轴梯度不全为零,可以保留信号的负数特征,从而有效避免了神经元的死亡。所以ThLU在避免梯度消失和保存全部信号特征之间取得了折中的平衡。
但是由式(14)可知,当x>0时ThLU的梯度始终为1,这样固定的梯度值可能会引起梯度爆炸。即对于某些神经网络来说,会出现梯度下降过程中步子太大而越过代价函数最小值的情况,进而导致网络不稳定且网络无法收敛。为了进一步控制ThLU函数的形状,增加激活函数的柔性,避免梯度爆炸现象的发生,本文在ThLU基础上构建了一个改进型基于双曲正切函数的修正线性单元(Improved tangent-based rectified linear unit,IThLU)激活函数,其定义为
由式(15)可知,IThLU激活函数较之ThLU激活函数而言,差别在于其正半轴的梯度d并不是固定值,而是一个可以通过神经网络进行学习的值。这样IThLU不仅避免了梯度消失、保存了全部信号特征还避免了可能出现的梯度爆炸现象,是对ThLU函数的有效改进。基于IThLU的上述优点,本文将IThLU函数作为模糊神经网络解模糊层的激活函数g(),以期获得更好的控制效果。
改进型模糊神经网络PID控制算法是在标准模糊神经网络PID控制算法的基础上,对模糊规则进行参数化并且构造了IThLU激活函数后,形成的4层神经网络结构。
算法的具体流程为:
(1)确定网络的拓扑结构为2—14—49—3和代价函数L。
(2)随机初始化向量b、向量c、矩阵w、参数d和参数α。
(3)经神经网络的前向传播过程,得到模糊推理的输出Kp、Ki、Kd。
(4)经式(1)计算控制量,施加到被控对象上,得到系统实际输出。
(5)计算系统输入与输出间的误差。
(6)经神经网络的反向传播过程,计算代价函数L关于步骤(2)中各个参数及参数矩阵的偏导。
(7)模糊神经网络以设定的学习率β更新向量b、向量c、矩阵w、参数d和参数α,即
式中Θ代表各个参数及参数矩阵的各分量。
(8)判断是否达到仿真总时长。若否,则跳转到第(3)步,继续循环该过程;若是,则结束循环,输出最优的Kp、Ki、Kd。
改进型模糊神经网络PID控制器(Improved fuzzy neural network PID,IFNN-PID)的系统结构如图3所示。
图3 IFNN-PID系统结构图Fig.3 Structure of IFNN-PID system
图3中参考输入X(k)是目标值,经过与实际输出Y(k)相减得到误差e(k),对误差求差分后得到误差变化率ec(k),再将e(k)和ec(k)一起输入到改进型模糊神经网络中,经正向传播得到Kp、Ki、Kd3个控制参数,代入式(1)得到控制量u(k),u(k)作用于对象h(z),得到实际输出Y(k),此时计算代价函数关于各参数的梯度,再根据反向传播梯度下降过程调整神经网络中各参数的值,以此类推,循环往复直到仿真时间截止,最终将得到使代价函数最小的Kp、Ki和Kd。
通常评价一个控制算法的优劣,主要是看该算法作用下系统的响应性、稳定性和精确性。为了方便对不同控制算法进行对比,本文选取如下性能指标[10]:
(1)调整时间。指输出量第一次达到稳态值时所需要的时间,记为ts。
(2)峰值。系统响应最高点的值,记为max(y)。
(3)峰值时间。指输出曲线首次达到最高点值的时间,记为tp。
(4)最大超调量。指输出最大值Ymax与输出稳定值Y∞的相对误差,记为σ。
(5)稳态误差。指系统稳定时的输出值Y∞与期望输出Ye之间的差,记为δ。
为了验证本文所提出的IFNN-PID在控制效果上的优势,选择T-PID、NN-PID、SFNN-PID作为对照组,在Simulink软件中对它们进行仿真分析。
为了方便比较和对照,本文采用单一变量原则进行仿真实验,即除了控制算法本身外,其他环境参数都一样。环境参数的具体设置为:T-PID的3个控制参数选择经验值Kp=0.1、Ki=0.3、Kd=0,NN-PID、SFNN-PID、IFNN-PID均采用反向传播标准梯度下降法进行训练,学习率都是0.000 1,各个控制器的输入信号源为同一个阶跃信号,各算法的代价函数相同均为式(19),各控制器的控制对象均为同一二阶对象如式(20)所示,仿真时长100 s。
式中:代价函数L是输入与输出之间偏差平方的二分之一。系统调参的目标是消除系统的偏差。
各个控制器的阶跃响应曲线如图4所示。
图4 阶跃响应Fig.4 Step response
不同算法的代价函数曲线如图5所示。
图5 代价函数曲线Fig.5 Cost function curves
图6为IFNN-PID控制器的各参数在线调整曲线。
结合图4~6和表1评价指标,得出如下结论:
(1)4种控制器中,T-PID的控制效果最差,主要表现在调整时间过长且存在稳态误差。
(2)NN-PID的控制效果较T-PID有所提高,表现在调整时间缩短了39.24 s并且没有稳态误差。其原因在于神经网络具有强大的自学习能力,可以实现控制参数Kp、Ki、Kd的在线自适应调整。
(3)SFNN-PID的控制效果较NN-PID而言略有改进,表现在调整时间缩短了0.9 s。之所以只是略有改进的原因在于,SFNN-PID中加入了模糊控制的过程,虽然增加了控制精度但也同时增加了网络的复杂度和计算量。
(4)4种控制器中,IFNN-PID的响应速度最快,只需要10.41 s就能达到期望值。虽然它与SFNN-PID相比在超调量上并不占优势,但是由于响应迅速可以尽快抑制系统的超调量,使系统尽快进入稳定状态。原因在于,IFNN-PID将模糊规则参数化后提高了控制的精度同时采用IThLU函数作为激活函数拓宽了敏感区域,避免了梯度消失和梯度爆炸,进而加快了网络收敛的速度。
图6 IFNN-PID控制器的各参数在线调整曲线Fig.6 Several parameter online adjustment curve of IFNN-PID controller
表1 评价指标Table 1 Evaluation index
综上,本文所提出的改进型模糊神经网络PID控制器是一种可以实时在线调整控制参数且响应性快、稳定性好、精确性高的高性能控制器,是对PID控制算法的有效改进。
首先,本文将模糊控制的推理能力、神经网络的自学习能力及PID算法的简单实用融为一体,构建了一款改进型模糊神经网络PID控制器。
其次,通过对模糊规则进行参数化,提高了控制的精度;通过构建IThLU激活函数扩展了敏感区域范围,增强了激活函数的柔性,避免梯度消失和梯度爆炸现象的发生,进而加快了网络收敛的速度。
再次,通过在Simulink软件中对二阶被控对象进行仿真实验,实验结果表明本文设计的IFNN-PID较之T-PID、NN-PID和SFNN-PID,有着较好的控制性能,特别是在响应性上有了很大的提高。
最后,得出结论:对模糊规则的参数化处理并构建更加合适的激活函数应用到模糊神经网络中,是一种行之有效的改进方案,本文所设计的改进型模糊神经网络PID控制器是一款高性能控制器。