杨啟梁,何 洲,胡 溧
(武汉科技大学汽车与交通工程学院,湖北 武汉430081)
在进行振动系统动力响应分析时,有时无法用常规的惯性参数测量方法来获得工作状态下的振动系统惯性参数,如汽车动力总成悬置系统[1]。在这种情况下,直接利用振动系统在工作状态下的响应,通过参数识别的方法来识别系统的惯性参数成为了一个重要的研究课题[2]。传统的参数识别方法通常反复线性化处理非线性方程,会存在一定的误差,导致参数识别精度无法进一步提高[3]。近十多年来,新发展的萤火虫算法在处理非线性问题时具有很大的优势,因此通过萤火虫算法识别参数成为研究者关注的重点[4]。
萤火虫算法(Firefly Algorithm,FA)是由科研人员于2008年提出的[5],具有寻优精度高和收敛速度快等特点,因而在很多领域得到了广泛的应用,如图像处理[6]、路径规划[7]、参数识别[2]等。但是,FA算法本身依赖初始解、易陷入局部最优和求解精度低等缺陷,因此该算法被很多学者改进。2010年X.S.Yang结合萤火虫算法和Levy飞行,改善算法全局搜索性能[8]。2013年,冯艳红在萤火虫算法的初始化和位置更新公式在加入混沌算法,算法改善明显[9]。2015年,唐少虎设计了改进的自适应步长的人工萤火虫算法,进一步提高求解精度和稳定性[10]。
为了探索直接利用振动系统在工作状态下的响应,用萤火虫算法来识别系统的惯性参数的可能性,本文以二自由度振动系统为例,用一根刚性梁搭建了一个二自由度振动系统,以实测的刚性梁垂直振动加速度信号为参数识别的原始信息,通过Logistic映射混沌算法优选初始萤火虫种群,引入可变步长算法加快收敛速度,采用改进后的萤火虫算法对二自由度振动系统的惯性参数进行了识别,取得了满意的效果。
本文的二自由度系统是来源于简化后的二自由度汽车,将汽车车身简化为刚性梁,前后车轮和悬架分别简化为两个带有阻尼的弹簧,将大地简化为台架,D点给予偏心激励模拟发动机的振动,并根据实验条件适当修改。简化后的模型为:一根刚性梁悬置在台架上,刚性梁和台架通过弹簧连接在一起。在偏离刚性梁质心C点的D点处有激振器对系统进行激励,在梁的两端分别放有加速度传感器测量这两点的竖直振动加速度,理论模型,如图1所示。
图1 二自由度振动系统模型Fig.1 Model of Two DOFs Vibration System
质心C点的垂直位移和角位移分别为xC和θC,通过该点建立系统动能、势能、耗散能的方程,带入Lagrange方程,可求到系统的振动微分方程。
将上述式子带入Lagrange方程可得:
振动微分方程的矩阵形式为:
式中:[YC]={yC,θC}T—C点的振动响应,[FC]={F,-F*e}T—C点处的激励力,M,Cn,K—系统的质量、阻尼和刚度矩阵。
在simulink中搭建上文的模型,并在simulink中仿真求解系统的振动加速度[11]模型,如图2所示。
图2 Simulink仿真模型Fig.2 Simulink Simulation Mode
萤火虫算法是一种基于萤火虫种群行为的仿生优化算法,将空间中的向量作为萤火虫个体,萤火虫个体包含着所需识别的参数,这些参数可以进行系统仿真,从而得到目标函数值即为萤火虫的亮度。萤火虫个体之间的通过光亮去吸引较暗的萤火虫,使其位置发生变化,达到更新参数的目的。通过许多次位置更新,找到最优萤火虫,该萤火虫对应的向量即为参数识别的结果。
(1)相对亮度公式
式中:Ii—萤火虫i的绝对亮度,γ—光吸收系数,取值范围是γ∈[0.01,100]。rij—萤火虫i与j之间的笛卡尔距离,即:
(2)萤火虫i对j的吸引力随距离的变化而变化,其大小βij(rij)为:
式中:β0—最大吸引度因子,常取值β0=1,β在萤火虫零距离时最大。
(3)萤火虫位置更新公式为:
式中:t—算法计算过程中的某一次迭代次数萤火虫i和j的位置;α—常数,一般的取值范围是α∈[0,1];随机数。
对于初始FA算法,通过随机生成实现萤火虫种群初始化,因而无法保证每次初始化都有较好的质量,而位置更新公式的缺陷使萤火虫易陷于局部最优。针对这些缺点,本文对萤火虫算法进行了相关改进。
3.2.1 Logistic映射初始萤火虫
为了提高初始萤火虫的种群质量,本文在萤火虫初始化中引入了混沌算法。本文选择了混沌算法中的Logistic映射,其具有不收敛、非周期性、遍历性等优点。通过Logistic映射大量萤火虫并选出质量最好的几只萤火虫作为初始萤火虫种群,能够有效提高初始萤火虫种群质量,减少迭代次数,提高识别精度。
Logistic映射的表达式为:
式中:lk—实值序列,k=0,1,…;μ—实数参数,本文取值为4;l0—随机产生的序列。
3.2.2 位置更新公式
在位置更新公式中,将βij(rij),分别改为;
式(8)随着距离的变化而不断调整步长,能够有效减少循环次数,提高计算速度和精度,同时可以保证β的值不会太小,使较暗萤火虫不会向较亮萤火虫靠的太近,从而陷入局部最优。式(9)在位置更新中增加更多变化,使算法能够跳出局部最优,找到最优萤火虫。
萤火虫算法参数识别的流程如图3所示,在利用萤火虫算法进行二自由度系统参数识别时,每一只萤火虫的位置代表系统参数的一组可能值。萤火虫算法利用混沌算法产生萤火虫,并选出最优萤火虫作为初始萤火虫种群。然后,将这些萤火虫中的参数带入Simulink搭建的模型中求解振动加速度,并通过式(10)求解其均方根值,将均方根值带入式(11)可得误差函数值即亮度,借助亮度更新其位置。迭代结束后,最优的那只萤火虫的位置即为所求系统参数的值。
加速度均方根值:
式中:通过萤火虫中的参数计算的系统振动加速度,m—每个测点在测试时间里的得到的振动加速度的个数,i—A或B中的某个测点。
目标函数值:
式中:zi—某个测点在算法运行时的均方根值,ziture—测点测得的真实均方根值。
误差定义为:
式中:paraiden—系统参数的识别值,parature—系统参数的真实值。
实验装置由铁板、弹簧、加速度传感器、台架、激振器等组成,如图3所示。刚性梁的质量为2.1kg,转动惯量为0.01488kg·m2,两个弹簧的刚度分别为7200N/m,系统阻尼为2N·s·m-1。
图3 萤火虫算法的参数识别流程图Fig.3 Parameter Identification Flow Chart of FA
图4 二自由度系统激振实验Fig.4 Two DOFs System Excitation Experiment
实验过程中,加速度采样时间为4s,激振器的激励力幅值为7.3N,激励频率为10Hz,激励力到质心C的距离e=0.2 m,激励力信号如图5所示。弹簧两侧的振动加速度信号如图6所示,传感器在测量每个时刻的加速度由于客观因素,会存在一定误差,因此使用某时刻的加速度值来构建误差函数会存在一定的误差,为减少误差,取加速度的均方根值构建误差函数,可有效减少误差。为避免单个实验出现误差,做多组实验,取其加速度均方根值的平均值来构建误差函数,从而得到准确的目标函数值。
图5 激励力FFig.5 The Excitation Force F
图6 加速度信号Fig.6 Acceleration Signals
采用Matlab 2016a编写FA算法参数识别程序,并在一台运行内存为16G和CPU为Intel Core i7-3930K的Win10电脑进行相关参数识别。FA算法参数设置:最大迭代次数Tmax=1000,种群数量n=30,最小吸引度βmin=0.2,步长因子α=0.5,光吸收系数γ=1。在精选初始萤火虫时,通过混沌算法映射出500个萤火虫,并选出质量最高的30个萤火虫作为初始萤火虫。将改进前后的两种萤火虫算法分别进行多次系统参数识别,其识别结果如下:
(1)图7为两种算法在10独立识别中目标函数平均值的进化过程。图中,改进的萤火虫算法的初始目标函数值为4.3*10-4,而FA算法的初始目标函数值为5.6,说明改进之后的萤火虫能够有效提高初始萤火虫质量。改进萤火虫算法的最优目标函数值为1.58*10-15,远小于萤火虫算法的最优目标函数值2.88*10-8,说明改进之后的萤火虫算法识别精度更高。
图7 目标函数平均最优值的进化曲线Fig.7 Curves of the Best Objective Function Value
(2)算法识别的二自由度系统参数结果如表1所示。从表1可以看出,改进萤火虫算法识别参数的误差在5%以内,最高误差为3.6%,最低误差仅为0.27%。传统的萤火虫算法参数识别的最大误差为7%,最小误差为2.2%。可以看出,改进萤火虫算法识别精度更高,满足实验误差要求,而传统的萤火虫算法参数识别结果误差偏大,个别参数可能会出现误差过大的情形,导致识别结果不准确。
表1 二自由度系统参数和识别结果Tab.1 Parameters of Two DOFs and Identification Results
从参数识别结果可以得出,改进的萤火虫算法相比传统的萤火虫算法在参数识别中能够有效提高初始种群质量,提高识别精度和参数识别速度。同时改进萤火虫算法能够有效降低各个参数识别误差,准确的识别系统各个参数。
(1)搭建simulink模型来求解二自由度振动系统的振动加速度,并利用加速度的均方根值构建萤火虫算法的目标函数,降低实验误差带来的影响。
(2)引入Logistic映射产生萤火虫并挑选优质萤火虫作为初始萤火虫种群,引入一种可变步长的位置更新公式提高了萤火虫算法收敛速度和识别精度。
(3)该方法的优点是仅利用系统两端的竖直振动加速度响应就能准确识别出该系统的参数。该方法识别条件简单、无需单独的实验室,能够在工况下进行参数识别,识别成本低、精度高、速度快。
实验验证表明,萤火虫算法识别的参数最大误差是3.6%,满足工程实践要求,验证了该算法识别参数的合理性和准确性,为动力总成等复杂系统的惯性参数在线识别提供参考。