王迦祺,张 健,吴天慧,晋佳浩
(营口理工学院 电气工程学院,辽宁 营口 115014)
作为一种典型的模块化模型,Wiener模型由动态线性模块和静态非线性模块串联构成,结构简单且易于操作,被广泛应用在非线性系统的建模中[1]。
Wiener模型辨识问题的一个难点在于非线性模块的构造。文献[2]和文献[3]分别使用核回归函数和样条函数来构造系统的非线性模块。文献[4]和文献[5]还分别利用有限幂次的多项式和两段低幂次的多项式来逼近非线性模块。这类方法参数较少,虽然易于逼近,但是精度有限。考虑到神经网络具有强大的非线性拟合能力,BP神经网络[6]、多层前馈神经网络[7]、多层感知器[8]等自然被应用在Wiener模型辨识中。这类方案大多采用传统的优化方法,如梯度下降法等来获得线性部分和非线性部分的参数。由于传统优化算法容易陷入局部最优,因此为了提高模型准确度,智能优化算法被引入Wiener模型的辨识问题中。粒子群优化算法(PSO)[9]、遗传算法(GA)[10]和差分进化算法(DE)[11]等作为典型代表,也都被用来训练非线性模块。大量实验证明了智能优化算法在提升辨识精度方面的有效性,也说明了其在解决模块化系统辨识问题上有良好的应用前景。
Wiener模型辨识问题另一个难点则在于线性模块与非线性模块之间的内部变量不可测。文献[12]利用迭代辨识思想,每次迭代时用上一次估计的参数计算内部变量,并用于本次迭代估计。然而这种方法受初始值影响较大,收敛精度无法保证。文献[13]则将利用特殊的输入信号来估测模型的内部变量。首先用较弱的信号辨识线性模块,之后增大信号幅值,利用线性模块和整个系统的输出数据来辨识非线性部分的参数。文献[14]还将两个不同幅值的阶跃信号或脉冲信号作为输入,通过分析它们的输出响应来进行参数估计。但是这种方法也存在不足,就是采用的小幅值输入信号可能会降低算法的收敛性。针对Wiener模型辨识的这两个难点问题,本文充分结合神经网络的非线性拟合能力和智能优化算法的计算能力,来对模型的非线性模块和线性模块同时进行训练。
考虑单输入单输出离散Wiener模型,结构如图1所示。
图1 Wiener模型结构
模型的数学表达式如式(1)和式(2)。
A(z-1)x(k)=B(z-1)u(k)
(1)
y(k)=f[x(k)]+e(k)
(2)
式中:u(k)为采样时刻k的模型输入;x(k)为采样时刻k非线性模块的输出;y(k)为采样时刻k的模型输出;f[·]表示静态非线性函数;e(k)代表额外噪声;z-1表示单位后移算子,即z-1x(k)=x(k-1);A(z-1)和B(z-1) 表示的是数学多项式,可以表达如式(3)。
(3)
因此线性模块需要辨识的参数即为传递函数系数a=[a1,a2,…,an]T和b=[b1,b2,…,bm]T。
函数连接型神经网络(FLANN)作为一种单层的神经网络,训练速度快,已经被成功应用于无线传感器[15]、构造专家系统[16]和图像特征提取[17]等众多领域。而文献[18]则利用布谷鸟算法来训练FLANN,且将其应用在非线性系统辨识中。本章则利用FLANN来构造Wiener模型的非线性模块。
FLANN的结构如图2所示,核心环节为输入向量的维数扩展,通过扩展函数将输入向量映射到一个更高维的空间。通常使用的扩展函数有三角函数、切比雪夫函数和幂级数等。
图2 FLANN的结构
FLANN输入输出关系如式(4)。
(4)
因此非线性模块需要辨识的参数向量为连接权值w=(w0,w1,…,wM)。
飞蛾扑火优化算法(MFO)是由Seyedali Mirjalili提出的一种自然启发式优化算法[19]。它源于飞蛾的特殊导航机制:横向定位。夜间,飞蛾以固定的角度朝月亮飞行,因为月亮与其相距很远,这种机制可以保证长距离的直线飞行。但是,当飞蛾遇到一束人造光(火焰)时,由于这种光线离飞蛾很近,与其保持固定的角度就会导致飞蛾做螺旋飞行,而飞蛾优化算法正是模拟这个过程来执行优化。
在算法中,飞蛾和火焰都代表可行解,二者的区别为飞蛾是实际移动的主体,而火焰是当前获得的最优解。它们在解空间的位置则代表了问题的变量。为了模拟飞蛾扑火行为,采取对数螺旋线来对飞蛾位置进行更新,定义如式(5)。
Mi=Di·ebt·cos (2πt)+Fj
(5)
式中:Mi代表第i只飞蛾;Fj代表第j个火焰;Di代表了第i只飞蛾和第j个火焰之间的距离:|Mi-Fj|;b为定义对数螺旋线形状的常数;t是[-1,1]之间的一个随机数,描述飞蛾下一个位置接近火焰的程度(t=-1表示离火焰最近,而t=1表示离火焰最远)。
每次迭代后,火焰根据适合度值进行排序,而每只飞蛾也根据相应的火焰来更新自己的位置。第一只飞蛾针对最好的火焰更新它的位置,而最后一只飞蛾则针对最差的火焰更新位置。每只飞蛾的位置会根据不同的火焰进行更新,但这会影响对最优解的探寻。针对这一问题,通过式(6)来自适应调整火焰的数量,也就是在算法的末期,只采用最好的火焰更新飞蛾位置。
(6)
式中:l为当前迭代次数;T为最大迭代次数;N为火焰最大数量;round为取整函数。
Rajabioun[20]指出,在智能优化过程中,大部分的随机游走种群应该集中在当前最优解附近,但始终应该有个别成员负责进一步探索更远的区域。而重尾分布正好满足这种搜索模式。高斯混合分布作为重尾分布的一种,可以近似许多其他重尾分布,是一种通用的模型。在高斯混合分布集合中,由两个高斯分布组成的分布函数具有最佳的描述特性。典型的二项高斯混合分布模型如式(7)。
(7)
如果飞蛾的位置更新能够和高斯混合分布结合,就能够实现短距离的局部性搜索和偶尔长距离的随机游走相间,有利于扩宽算法探索范围,增强种群多样性,进而有利于算法跳出局部最优。本文的做法是在每只飞蛾做完螺旋飞行之后,都再进行一次服从高斯混合分布的随机飞行,具体公式如式(8)。
(8)
为了增加算法随机性,将步长α设定为飞蛾的当前位置,式(8)可重新定义为式(9)。
(9)
通过这种方式,横向定位与重尾分布可以形成优势互补,有利于平衡标准MFO算法的探测能力和开采能力。
除此之外,本文还将高斯混合分布引入飞蛾种群初始化中,用来提供一个更好的初始化种群选择。
在标准MFO算法中,初始种群是由式(10)产生的。
initmoths(i)=Lb(i)+(Ub(i)-Lb(i))⊕rand(0,1)(n)
(10)
式中:initmoths(i)代表初始飞蛾种群的第i维分量;Ub(i)和Lb(i)分别代表代表第i维分量的上界和下界;rand(0,1)(n)代表取值在(0,1)之间,维数为n的随机序列。
而GMFO算法中,我们将种群初始化的方式重新定义如式(11)。
initmoths(i)=Lb(i)+(Ub(i)-Lb(i))⊕GMD(0,1)(n)
(11)
式中:GMD(0,1)(n)代表0,1之间,维数为n,服从二项高斯混合分布的随机序列。通过这种方式能够获得离群的飞蛾,有利于初始种群的离散化。
综上所述,高斯混合飞蛾优化算法(GMFO)的伪代码表示如下:
在智能优化算法领域,经常使用一系列具有全局最优值的数学函数来测试算法的性能。因此,本文也利用六个不同的测试函数来评估GMFO算法的基本性能。
表1 测试函数的参数
在表1中,六个测试函数的全局最优值均为f(x*)=0,x*=(0,…,0)。f1-f3为单峰函数;f4-f6为多峰函数。由于单峰函数只有一个全局最优解而没有局部最优,因此单峰函数非常适合测试算法的全局搜索能力和收敛精度。而多峰函数有多个局部最优解,对它进行测试可以更好地反映算法的探测能力和跳出局部最优的能力。
2.3.1 算法参数设置
为了更好地讨论GMFO算法的性能,除了标准MFO外,本文还选择了粒子群算法(PSO)和布谷鸟算法(CS)作为对比。
每组实验中,每个算法的种群个数均设为30,最大迭代次数为1000。对于PSO,惯性权重w=0.729,学习因子c1=c2=1.5;对于CS,变异概率概率pa=0.25,步长α=1,Lévy飞行参数λ=1.5;对于MFO,b=1。对于GMFO中的GMD(εi,δi,τi)部分,通过反复试验直接给出了一个参考值:εi=1/3,δi=0.2,τi=50。
2.3.2 实验结果分析
为了消除随机因素的影响,对6个测试函数,每种算法都独立运行50次。测试函数的数值结果见表2,粗体为最优结果。测试函数的收敛曲线如图3所示。
图3 测试函数的收敛曲线
如表2所示,对于单峰函数f1-f3,从最优值、最差值和平均值的结果可以看出,GMFO的收敛精度明显优于其他算法,并且对于f1和f2几乎可以收敛到全局最优,这说明GMFO具有很强的全局搜索能力。对于多峰函数f4-f6,GMFO也给出了最佳的数值结果,并且针对f4和f5几乎可以收敛到全局最优,这也证明了GMFO在跳出局部最优和探索全局最优方面的巨大优势。对于每个测试函数,GMFO的标准差都比其他算法小很多,说明了GMFO具有更强的稳定性。
表2 测试函数的数值结果
此外,从图3中的6个收敛曲线可以看出,GMFO的收敛速度比MFO有了很大的提高,并且是四种算法中收敛速度最快的,这说明GMFO在能达到理想的收敛精度的同时,也能保证良好的收敛速度。因此,根据表2和图3可以得出结论:GMFO算法是有效的并且性能很好。
待辨识的模型结构和实际Wiener系统相似,数学表达式如下:
(12)
(13)
(14)
(15)
(16)
因此,辨识问题被转化成单目标优化问题,辨识的目的是利用一组输入/输出数据来估计所有未知参数,并极小化MSE。辨识过程的原理图如图4所示。辨识步骤如下:
(1) 采集系统的实际输入输出数据样本u(k)和y(k)。
(2) 设定算法参数并初始化种群。
(4) 通过GMFO对MSE指标进行评价,得到当前代的最优解。
(5) 判断是否满足算法终止条件。如满足,终止算法,获得辨识模型;否则重复步骤4)。
图4 辨识过程原理图
3.2.1 仿真实例1
考虑如下Wiener模型
y(k)=x(k)+0.5x2(k)+0.3x3(k)+e(k)
(17)
(1+0.6z-1+0.2z-2+z-3)x(k)=(0.4z-1+0.8z-2)u(k)
(18)
其中:输入信号u(k)是[-1,1]之间均匀分布的随机序列;e(k)为服从N(0, 0.01)分布的高斯噪声;FLANN中的每一个输入样本都利用幂级函数来扩展,描述如下:
(19)
线性部分需要辨识的参数向量为:
∂=[0.6,0.2,1,0.4,0.8]
(20)
在本实验中,所有的算法种群个数设为50,最大迭代次数为300,算法其他参数设置和第2.3.1节相同。线性部分参数搜索范围设置为[-2,2],非线性部分参数搜索范围设置为[-4,4]。辨识窗口长度为30。为了减少随机因素的影响,每种算法均独立进行十次实验。四种算法的辨识结果平均值见表3,粗体为最优结果。GMFO和MFO分别训练FLANN来拟合非线性模块的效果对比如图5所示。实际输出和辨识输出的对比如图6所示。
表3 辨识结果对比
图5 实际非线性和FLANN拟合的对比
图6 实际输出和辨识输出的对比
3.2.2 仿真结果分析
从结果可以看出,在高斯噪声的影响下,四种智能优化算法均能够有效地训练神经网络并同时辨识线性模块。从表3数据及图5、图6的辨识结果可以看出,GMFO算法在非线性模块拟合及线性部分参数辨识方面的性能,相比MFO有很大提升,并且是4种算法中精度最高的,证明了基于GMFO辨识方案的有效性。此外,从结果中还可以发现PSO算法的辨识精度相比之下要差很多,这可能是由于PSO不适合于此类问题而过早陷入局部最优造成的。
3.2.3 仿真实例2
为了进一步证明所提出辨识方案的有效性,将实例1模型的非线性环节替换为一个更复杂的形式,如式(21)所示,而线性环节保持不变。
(21)
FLANN中的每一个输入样本都利用三角函数来扩展,描述如下:
(22)
在本实验中,所有算法的参数设置和实例1相同。线性部分参数搜索范围设置为[-2,2],非线性部分参数搜索范围设置为[-6,6]。辨识窗口长度为30。为了减少随机因素的影响,每种算法均独立进行十次实验。四种算法的辨识结果平均值见表4,粗体为最优结果。GMFO和MFO分别训练FLANN来拟合非线性模块的效果对比如图7所示。实际输出和辨识输出的对比如图8所示。
表4 辨识结果对比
图7 实际非线性和FLANN拟合的对比
图8 实际输出和辨识输出的对比
3.2.4 仿真结果分析
从表4中的数据及图7、图8的辨识结果可以看出,实例2中的Wiener模型辨识精度要低于实例1,这可能是由于非线性较为复杂而导致FLANN的拟合精度有所降低,同时也一定程度影响了线性模块的参数辨识。但是GMFO算法依然是4种算法中辨识效果最好的,且具有明显优势,比较令人满意。这证明了基于GMFO辨识方案的鲁棒性,也进一步验证了辨识方案的有效性。此外,从结果中还可以发现PSO算法的辨识误差依然很大,这可能是由于PSO不适合于此类问题而过早陷入局部最优造成的。而之所以GMFO算法的辨识精度较高,则是由于离群飞蛾的存在,高斯混合分布能够实现长距离的搜索并且生成可以跳出局部最优的步长,因此能够很好解决此类辨识问题。
在标准飞蛾优化算法(MFO)的基础上,通过调整飞蛾种群初始化、改进飞蛾位置更新操作提出了高斯混合飞蛾优化算法(GMFO),并通过测试函数证明了GMFO强大的开采能力和探测能力,收敛精度和收敛速度相比MFO得到大幅提升。
针对Wiener模型,设计了一种基于GMFO算法的辨识方案。首先针对非线性模块构造环节,考虑到神经网络的非线性拟合能力,选用FLANN来进行构造。之后将神经网络和智能优化算法的优势结合起来,通过把MSE定为评价指标,将FLANN的训练和线性模块的参数辨识同步进行。最后做了两组仿真实验,选取了两种Wiener模型,将其他三种群智能优化算法作为对比,通过分析MSE与线性部分参数估计误差等指标,验证了基于GMFO算法辨识方案的有效性和鲁棒性。