王鑫超 张宾
摘 要:本研究提出了一种基于改进遗传算法辨识Volterra级数模型的方法。该方法根据Volterra核与系统输出的相关程度来调整模型结构,利用重启策略与自适应搜索范围解决进化停滞与算法早熟收敛等问题。通过仿真试验将改进遗传算法与标准遗传算法、量子粒子群算法进行比较。结果表明,该方法在辨识精度、收敛速度及抗噪性能等方面明显优于其他方法。
关键词:Volterra级数;改进遗传算法;非线性系统;系统辨识
中图分类号:TP18 文献标志码:A 文章编号:1003-5168(2022)5-0024-04
DOI:10.19968/j.cnki.hnkj.1003-5168.2022.05.005
Volterra Series Identification Method Based on Improved Genetic
Algorithm
WANG Xinchao ZHANG Bin
(School of Mechanical Engineering,North China University of Water Resources and Electric Power,Zhengzhou 450045,China)
Abstract: In this paper,a method for identifying Volterra series model based on improved genetic algorithm(IGA) is proposed. This method adjusts the model structure according to the correlation between Volterra kernel and system output, uses the restart strategy and adaptive search range to solve the problems of evolutionary stagnation and premature convergence of the algorithm. Through simulation experiments, the IGA method is compared with standard genetic algorithm(GA) and quantum particle swarm optimization(QPSO) algorithm. The analysis results indicate that the IGA method is superior to other methods in identification accuracy, convergence speed and anti-noise performance.
Keywords:Volterra series; improved genetic algorithm; nonlinear system; system identification
0 引言
Volterra級数模型最早是由意大利学者Volterra提出的[1]。Volterra核参数的辨识是建立非线性Volterra级数模型,从而实现对非线性系统的状态监测,并判断其健康状况。
传统的Volterra核辨识方法大都是基于最小二乘算法提出的,但最小二乘算法难于处理Volterra核辨识中的测量矩阵病态和有色噪声问题。不少学者将智能优化算法引入到Volterra核辨识中,如采用遗传算法[2]、自适应蚁群算法[3]、粒子群算法[4-5]来辨识Volterra级数的时域核。智能优化算法虽然能克服传统的最小二乘算法存在的不足,但其在抗噪能力、收敛速度等方面仍有所欠缺,特别是其没有对Volterra级数模型进行简化。
遗传算法(Genetic Algorithms,GA)具有较强的鲁棒性及全局收敛能力,并为优化问题提供接近全局最优的解决方案。因此,本研究使用改进遗传算法辨识Volterra级数模型,引入重启策略与自适应搜索范围,防止算法“早熟”,提高算法局部寻优能力。仿真结果表明,本研究的方法在辨识精度、收敛速度以及抗噪能力都有了明显提高,并且得到了简化的系统模型。
1 非线性系统Volterra级数模型
对于单输入单输出的非线性系统,可以用前三阶Volterra级数描述,如式(1)。
[y(k)=τ1=0M-1h1(τ1)u(k-τ1)+τ1=0M-1τ2=0M-1h2(τ1,τ2)u(k-τ1)u(k-τ2)+τ1=0M-1τ2=0M-1τ3=0M-1h3(τ1,τ2,τ3)u(k-τ1)u(k-τ2)u(k-τ3)] (1)
式中,[u(k)]为系统输入,[y(k)]为系统输出,[M∈N]为记忆长度。[ℎn(τ1,...,τn)]为非线性系统的[n]阶Volterra时域核,又称为广义脉冲响应函数。[ℎn(τ1,...,τn)]具有对称性,即[ℎn(τ1,...,τn)=ℎn(τ1,τn,...,τ2)=ℎn(τ1,τ2,...,τn)]。
为了简化表达,将式(1)构造为矩阵形式,即式(2)。
[Y]=PH+e (2)
式中,[Y∈RL]是输出向量([L]为输出数据长度),[P∈RL×R]是输入矩阵,[H∈RR]是非线性系统Volterra核向量([R]为核向量长度),[N]为系统非线性度。记忆长度为[M]的[3]阶非线性系统Volterra核向量H可以表示式(3)。
[H=[h1(0),...,h1(M-1) ; h2(0,0),...,h2(0,M-1),h2(1,1),...,h2(M-1,M-1);h3(0,0,0),...,h3(M-1,M-1,M-1)]T]
(3)
测量矩阵[P]与输出向量[Y]分别表示为式(4)和式(5)。
[P(k)=u(k),...,u[k-(M-1)] ;u2(k),...,u(k)u[k-(M-1)],u2(k-1),...,u2[k-(M-1)];u3(k),...,u3[k-(M-1]T] (4)
[Y=y(k),y(k+1),...,y[k-(M-1)]] (5)
根据式(2),基于Volterra级数模型的非线性系统辨识,实质上是在已知系统输入和输出数据的情况下,求解非线性系统Volterra核向量,目标是使误差项[e]最小,这是一个典型的最优参数估计问题。
2 基于改进遗传算法的Volterra核辨识
标准遗传算法在处理高维度问题的搜索过程中存在“早熟”、局部寻优能力差、运算效率低等问题。Volterra核辨识作为典型的多维复杂问题,对遗传算法的性能提出了更高的要求。
基于此,本研究针对遗传算法提出三个方面的改进策略:调整染色体结构,建立简化模型;提出重新启动的策略解决算法“早熟”问题;提出自适应基因搜索范围,提高局部寻优能力。
2.1 调整染色体结构
种群中的每条染色体对应一个候选解,染色体的每个基因代表Volterra核函数的参数。假设Volterra核函数的有效位为[R]位,则对应的候选解染色体[H]有[R]个基因。若第[i]位与输出相关程度小于阈值,则将该染色体对应的基因值设置为0。
自适应调整染色体结构的流程为:①种群最优染色体[H∗]的适应度值达到预设值[ft]时启动;②对候选解[H]进行检验,计算移除候选基因[g]后的模型输出与模型实际输出的相关程度[ρ(g)];③根据相关程度[ρ(g)]以及阈值[ρt],判断是否移除该基因。假设系统输入有[L]个点,则相关程度[ρ(g)]表示为式(6)[5]。
[ρ(g)=cov(Y,Yng)/var(Y)var(Yng)]
(6)
式中,[cov是协方差函数,Yng=i=1,i≠gRP(i)×ℎ(i)]是去掉候选基因[g]后的模型输出,[ℎ(i)]为[ℎ]的第[i]个基因值,P(i)代表输入矩阵P的第i列,[var]是均方差函数;④对所有的相关系数[ρi(i=1,...,R)]进行检验,根据提前设定的阈值[ρt],将低于阈值的候选基因从群体基因库中删除,并对染色体结构进行相应的调整。
2.2 自适应重启策略
为了克服遗传算法的“早熟”问题,提出重启策略[6],即在算法陷入进化停滞时,对种群进行初始化。在保留当前精英群体的前提下,用一组随机生成的种群代替当前种群。
为了描述重启策略,这里将引入几个参数,包括种群多样性参数(Population Diversity,PD)、种群最佳适应度值[fbest]、种群最低适应度值[fworst]和种群平均适应度值[favg]。种群多样性参数定义式(7)。
[PD≜|fbest−favg||fbest−fworst|] (7)
重启策略主要有两个触发条件,其中任何一个条件满足,算法就重新启动。重启策略两个触发条件分别为:当[PD]的值为[1]或[0]时,种群的适应度趋于一致,认为该种群陷入早熟而停止收敛,重新启动算法;引入新的进化停滞参数[Q](初始值为[0])。任何一代(第一代除外)的[fbest]与上次迭代相比没有改进时,[Q]的值加[1];任何一次迭代中[fbest]比上代更优,[Q]重置为[0]。当[Q]的值大于设定的阈值[Qthr]时,重新启动算法。
2.3 自适应的搜索区域
搜索区域即基因的上下界,假设基因的上下界分别为[ai]、[bi(i=1,…,R)]。在进化过程中,当最佳染色体的适应度值达到设定的阈值时,认为种群接近最优解,缩小搜索范围有利于局部寻优,使算法能够更快收敛。假设初始的搜索范围为[I0=b0−a0],对于最优个体[Hbest],将使用式(8)来确定每个基因的上下界。
[ai(c)=hbest(c)-12×I0×(1-GGmax)bi(c)=hbest(c)+12×I0×(1-GGmax)] (8)
式中,[G]为当前迭代次数,[Gmax]为最大迭代次数。
2.4 Volterra核辨识流程
由式(2)可知,求解Volterra核函数的本质是找到一组最优的核向量[H∗],使得模型输出与实际输出的误差最小,即[min (Y−PH∗)]。种群候选解的适应度函数如式(9)。
[f(i)=exp{-1Li=1L[Y(i)-P(i)H]2}] (9)
式中,[L]代表系统输入输出数据长度,[Y(i) ]是实际输出,[P(i)]是输入矩阵第[i]列,[H]是候选解。根据公式(9),适应度函数值最接近[1]时对应的候选解[H∗]就是Volterra核函数的最优解。基于改进遗传算法的Volterra核辨识流程如下:
①初始化种群:在可行域内随机生成[200]个染色体作为初始种群。
②计算初始种群适应度值:前10%作为精英群体直接保留到下一代。
③判断种群最优适应度值是否达到阈值[ft]:如果是,则自适应调整染色体结构;如果否,则转到步骤④。
④计算种群多样性参数[PD]与进化停滞参数,若[PD=0],1或[Q>Qthr],重新啟动算法。
⑤對种群进行遗传操作:依概率选择父代染色体,交叉、变异产生子代染色体。
⑥判断是否达到所设迭代次数,达到则输出种群最优染色体,否则转到步骤⑥。
3 仿真研究
为了验证算法的有效性,考虑如式(10)的三阶非线性系统模型。
[y(k)=1.52x(k)-0.55x(k-1)+0.24x(k-2)+0.78x2(k)+1.36x2(k-1)-1.18x(k-1)x(k-1)+1.25x3(k)-0.88x(k)x2(k-1)+1.06x(k-1)x2(k-2)]
(10)
式(10)所示的模型为三阶Volterra模型,前三阶核的记忆长度都为3,对应的核向量为:
[H=[1.52,−0.55,0.24,0.78,0,0,1.36, −1.18,0,1.25,0,0,−0.88,0,0,0,0,1.06,0]T]。
利用本研究所提的改进遗传算法辨识式(10)所示的Volterra级数模型,采用方差为[1]的白噪声作为输入信号,输入信号长度为1 000,种群规模为200,Volterra核函数长度为19,最大迭代次数为800,辨识结果取20次运行结果的平均值。
表1为无噪声情况下,改进遗传算法(IGA算法)、遗传算法(GA算法)、量子粒子群算法(QPSO算法)[4]三种方法所得的Volterra模型参数辨识值。由表1可知,在没有噪声的情况下,三种算法均可逼近Volterra核的真实值,而改进遗传算法具有更高的精度。当Volterra时域核真值为0时,改进遗传算法可以正确识别模型结构,而GA算法与QPSO算法辨识值存在较小的偏差。改进遗传算法在成功辨识出简化Volterra模型的同时,保证了很高的辨识精度。
为了考察改进遗传算法的鲁棒性与抗噪能力,在输出端加入信噪比为20 dB的噪声[3](见表2)。
由表2可知,在加入20 dB噪声后,改进遗传算法仍保持着很高的精度,并且识别了正确的模型结构,噪声并未对改进遗传算法的辨识精度造成较大的影响,这说明改进遗传算法具有较强的抗噪性能。
图1(a)给出了没有噪声的情况下,改进遗传算法所得到的一阶核参数[ℎ1(1)]、二阶核参数[ℎ2(1,2)]以及三阶核参数[ℎ3(1,2,2)]的收敛曲线。三个参数的真实值分别为[ℎ1(1)=−0.55],[ℎ2(1,2)=−1.18],[ℎ3(1,2,2)=1.06]。图[1](b)是加入噪声的情况下,改进遗传算法得到的[ℎ1(1)]、[ℎ2(1,2)、ℎ3(1,2,2)]的收敛曲线。从图1可以看出,无论是否存在噪声干扰,改进遗传算法都具有很高的收敛速度与稳定性。
4 结语
本研究采用改进遗传算法辨识非线性系统Volterra级数模型,并与传统遗传算法、改进粒子群算法进行了对比。仿真研究表明,在无噪声干扰与有噪声干扰两种情况下,基于改进遗传算法的Volterra核辨识方法都能准确地识别简化的Volterra级数模型,且具有非常高的辨识精度与抗噪性能。与其他两种算法相比,本研究提出的算法可以简化Volterra模型,降低无关Volterra核所带来的影响,提高算法的计算效率,并引入重启策略以及自适应的基因搜索区域,增强算法全局搜索能力的同时,加快了迭代后期的局部寻优速度,为基于Volterra级数的非线性系统辨识提供了一种新的方法,具有重要的理论价值和实际应用价值。
参考文献:
[1] 彭志科,程长明.Volterra级数理论研究进展与展望[J].科学通报,2015(20):1874-1888.
[2] ASSIS L S D,JUNIOR J R D P,TARRATACA L,et al.Efficient Volterra systems identify-cation using hierarchical genetic algorithms[J].Applied Soft Computing Journal,2019,85(C):105745-105745.
[3] 李志农,唐高松,肖尧先,等.基于自适应蚁群优化的Volterra核辨识算法研究[J].振动与冲击,2011(10):35-38.
[4] 卫晓娟,丁旺才,李宁洲,等.基于改进粒子群算法的Volterra模型参数辨识[J].振动与冲击,2015(21):105-112.
[5] YAO L.Genetic Algorithm Based Identification of Nonlinear Systems by Sparse Volterra Filters[J].IEEE Transactions on Signal Processing: A publication of the IEEE Signal Processing Society,1999(12):3433-3435.
[6] DAO S D,ABHARY K,MARIAN R.An improved structure of genetic algorithms for global opti-misation[J].Progress in Artificial Intelligence,2016(3):155-163.