, , ,恒山,
(1.武汉科技大学 机械自动化学院,湖北 武汉 430081; 2.宝钢股份中央研究院武汉分院(武钢有限技术中心),湖北 武汉 430080)
轨道路基动力响应测试装置主要用于模拟高速运行列车对路基产生的综合影响,其中,采用先导式电液比例减压阀设定静压缸恒定压力,用来模拟列车自重对路基产生的静载力;通过伺服阀对动压缸施加交变的液压力,来模拟列车高速运行时对路基的动载力[1-2]。动压缸活塞杆输出交变动载力,通过叠加静压缸活塞杆的静载力得到合成的加载力,最后经过传感器和激振块将加载力传递到被测试的路基上,因此,动压缸系统是一个典型的电液伺服压力系统。文献[3]建立了动压缸电液伺服压力系统AMESim与Simlink联合仿真模型,如图1所示。
图1 动压缸电液伺服压力控制系统AMESim与Simulink联合仿真模型
获取动压缸电液伺服压力系统精确的数学模型有利于该系统后续的控制研究。相比于理论建模,系统辨识不需要深入了解系统机理,而是根据系统的试验数据来确定系统的数学模型。因此,系统辨识成为获取控制对象数学模型参数有效的手段之一。采用传统辨识算法实现简单,利用MATLAB工具箱可以方便的得到辨识结果,但其可操作性较差,一般基于辨识模型,辨识精度不是很高。近十几年发展起来的智能优化算法,拥有很强的线性和非线性逼近能力,成为解决传统辨识问题的新手段,得到了迅速发展。
1995年STORN R和PRICE K[4]首次提出差分进化算法(Differential Evolution,DE),与遗传算法原理相似,通过对个体进行变异、交叉和选择操作来实现个体更新,但其利用种群中随机个体间的差分向量来修正个体实现变异。因此,差分进化算法特有的变异操作可以提高算法全局的搜索性能,有效地避免遗传算法容易早熟的问题[5]。此外,差分进化算法采用实数编码和一对一竞争策略,降低了遗传算法的复杂性。实验研究发现,差分进化算法性能优于遗传算法和粒子群算法[6]。
标准的差分进化算法无法自动调整核心参数(变异因子、变异算子和交叉因子等),存在早熟停滞现象,容易陷入局部最优而收敛停止[7]。本研究设计了基于动压缸电液伺服压力系统AMESim模型的自适应差分进化算法辨识仿真,给出了该辨识算法设计步骤,通过对比仿真,验证了自适应差分进化算法的优点。最后给出了动压缸电液压力系统AMESim模型辨识参数,并通过仿真验证了该辨识参数的有效性。
动压缸电液伺服压力控制系统主要包括控制信号、伺服放大器、伺服阀、动压缸、传感器和负载。
由于伺服阀的固有频率接近动压缸的液压频率,因此,本研究采用二阶振荡环节来描述伺服阀传递函数,并且保留伺服阀流量非线性部分,得到负载流量表述如下:
(1)
式中,a6,a7,a8——伺服阀待辨识系数
g(u)——流量非线性部分
GSVK——伺服阀系统传递函数
Ue——伺服阀系统输入控制电压
s——微分因子
阀控动压缸可以描述为:
(2)
AppL+FL=ms2Xm+BmsXm+KXm
(3)
式中,m——动压缸激振系统质量
Bm——负载阻尼系数
K——路基弹性刚度
FL——静压缸输出静载力
Ap——动压缸活塞有效面积
Ctp——动压缸总泄漏系数
Vm——系统管路总压缩容积
βe——油液有效体积弹性模量
Xm——动压缸活塞位移
pL——负载压力
将静载力FL和伺服阀输出流量QL作为输入变量,负载动压缸传递函数表述如下:
(4)
(5)
式中,a1,a2,a3,b1,b2,b3,b4为负载动压缸部分传递函数待辨识的参数。
综合式(1)~式(5),可以得到动压缸电液伺服压力控制系统结构框图如图2所示。
图2 动压缸电液伺服压力控制系统框图
由于传函G(QL)与G(FL)特征多项式相同,恒定的静载力FL对负载压力pL影响很小,因此,负载压力pL主要与伺服阀输出流量QL相关。结合图2,动压缸电液伺服压力控制系统开环传函可以拆分为伺服阀系统传函GSVK、流量非线性部分g(u)和负载动压缸传函G(QL)三部分。
差分进化算法采用实数编码,包括初始化、变异、交叉和选择4个主要步骤以及变异因子F、交叉因子CR、种群规模Size和迭代次数G等4个主要参数。
1) 种群初始化
随机生成Size个个体组成初始种群,个体表达式如下:
(6)
2) 变异
基本差分进化算法有多种变异算子,我们采用DE/a/b来表示。其中,a表示变异算子基选取方式,包括rand(随机选择)和best(选择当前最优)两种类型;b表示变异算子中包含差分向量的个数。以最基本的DE/best/1为例说明变异操作:
hij(k+1)=xbj(k)+F(xp1j(k)-xp2j(k))
(7)
式中,xp1,xp2——种群中随机选择的2个个体
xp1j,xp2j——分别为xp1、xp2中第j个染色体
xbj——种群中最优个体中第j个染色体
F——变异因子,F∈[0,2]
3) 交叉
通过第k代种群中个体xi(k)及其变异体hi(k+1)之间的染色体交叉,更新种群中个体染色体,从而增加了种群多样性,个体染色体交叉操作如下:
(8)
式中,rand(0,1)——(0,1)区间内的随机数
CR——交叉因子,CR∈[0,1]
4) 选择
选择操作的基础是确定评价函数,其常见形式如下:
minf(xi1,xi2,…,xiCodel)
(9)
通过比较每代种群中每个个体与其新个体之间的评价函数大小,来确定此个体下一代大小,具体操作如下:
(10)
在编码方式、种群规模和最大迭代次数一定的情况下,影响差分进化算法性能的主要参数是变异因子F、变异算子和交叉因子CR。
1) 自适应变异因子
变异因子F大小决定了差分量扰动基向量的大小,从而影响算法的搜索效果。F较小时,种群个体变异量较小,导致算法极易陷入局部极小值而过早收敛;F较大时,算法全局搜索能力变强,但容易跳出局部极值区域,会影响算法的搜索效果和时间。当F∈[0.4,1]时,算法的性能会得到大幅提升[8]。
算法搜索初期,往往选取较大的变异因子F,以提高全局搜索能力,有效地避免早熟,加快初期搜索速度;算法搜索中后期,减小变异因子F,提高算法局部搜索能力,以加快算法收敛速度。因此,按照算法搜索时间来动态调整变异因子F大小,从而改变算法搜索能力。进一步结合Sigmoid函数良好的平滑性和非线性映射能力,设计自适应变异因子F表达式如下:
(11)
式中,k——当前代数
G——最大迭代数
2) 自适应变异算子
变异算子中基值选取主要有rand和best两种。其中,rand基值有利于保持种群的多样性,具有很强的全局搜索能力,但其收敛速度较慢;best基值具有较强的局部搜索能力,但是容易陷入局部极值而早熟[9]。因此,可以结合两种基值的特点,使算法初期具有较强的全局搜索能力,从而避免算法早熟;算法中后期具有很强的局部搜索能力,而快速收敛。具体自适应变异算子设计如下:
hij(k+1)=α(k)xbj(k)+(1-α(k))xp3j(k)+
F(k)(xp1j(k)-xp2j(k))
α(k)=k/G
(12)
式中,α(k)——第k代变异算子切换系数
xp3——种群中随机选择的第3个个体
xp3j——xp3中第j个染色体。
3) 自适应交叉因子
交叉因子CR用来控制种群个体中染色体间的交叉程度,从而增加种群的多样性,实现局部与全局搜索能力的平衡。交叉因子太小,个体中染色体间交叉不足,种群多样性减小,容易过早收敛;交叉因子太大,对种群的更新程度也较大,从而会破坏适应度好的个体,进而影响算法收敛。因此,采用自适应交叉因子,根据个体适应度值与种群最优适应度个体以及种群最大适应度个体的比值情况,动态调整交叉因子大小,从而在个体适应度值较大时选择较大的交叉因子,在个体适应度值较小时选择较小的交叉因子。具体如下:
(13)
式中,CRL,CRU——交叉因子的上限和下限
fi(k)——第k代种群中第i个个体的适应度值
fmax(k)——第k代种群中最大适应度值
fa(k)——第k代种群中最优适应度值
参照上面变异因子F、变异算子和交叉因子CR自适应设计,确保算法初期较强的全局搜索能力,而中后期又有较强的局部搜索能力,并可以根据种群中个体适应度值大小自动调整交叉因子大小,从而实现全局和局部搜索能力的平衡。具体设计流程如下:
Setp 1:初始化算法参数,随机产生初始种群;
Setp 2:计算个体适应度值,并根据式(11)和式(13)分别计算当前种群变异因子F(k)和当前个体中交叉因子CRi(k);
Setp 3:参照式(12)进行变异操作,并检查新的染色体是否越界;
Setp 4:根据式(8)进行交叉操作,更新个体;
Setp 5:按照式(10)进行选择操作,将原个体和变异交叉后的新个体中适应度值较好的作为该个体下一代值;
Setp 6:判断更新最优个体,将当前个体适应度值与最优个体比较,从而更新最优个体;
Setp 7:判断是否满足算法结束条件,若满足,则执行Step 8;否则,循环执行Setp 2~ Setp 7;
Setp 8:结束搜索,输出最优个体。
根据设计指标,设置图1中液压模型参数,如表1所示。通过Simulink产生一个M序列作用于AMESim模型,To Workspace模块分别记录输入信号Um、负载流量QL、消除非线性部分负载流量QL1、负载压力pL响应数据,输入数据Um,QL,如图3所示。以Um作为输入信号,QL1作为输出变量,参照式(1)的结构,通过辨识算法,得到传递函数GSVK的参数估计值。以负载流量QL作为输入信号,负载压力pL作为输出变量,参照式(4)的结构,通过辨识算法,得到动压缸传递函数G(QL)的模型参数,并可以很方便地得到静载力作用传函G(FL)的模型参数。最后将辨识的参数模型GSVK,G(QL)与非线性部分g(u)相乘,叠加静载力FL的影响,就可以得到动压缸输出压力pL开环传递函数参数。动压缸模型参数如表1所示。
图3 辨识输入信号局部曲线
表1 动压缸AMESim模型参数
以动压缸传递函数G(QL)为辨识对象,将上述负载流量QL和负载压力pL响应数据分别作为输入输出信号提供给自适应差分进化ADE算法,编码形式和误差指标参照式(14),并设置ADE算法辨识参数见表2,进行辨识仿真得到辨识性能曲线如图4所示。
表2 动压缸传递函数G(QL) ADE算法辨识参数
(14)
图4 动压缸传递函数G(QL) ADE算法辨识曲线
N——辨识数据数量
yi——第i个辨识样本的输出
J——性能指标函数,也称为适应度函数
图4a是ADE辨识与Transfer Functions辨识对比局部放大图,ADE算法可以更好地拟合辨识信号pL。图4b中分别为ADE算法和标准DE算法5次辨识最佳性能指标J对比柱状图,ADE算法每次辨识指标J稳定相同,而普通DE算法每次辨识指标J存在一定差异,并且ADE算法辨识指标J为4.8689e+09,也小于PSO算法最优性能指标J为1.890e+10(第2次),显示出ADE算法精度也优于PSO算法。图4c中变异因子F(k)可以随着迭代代数平滑减小,从而保证了ADE算法辨识过程中前期全局搜索能力和后期局部搜索能力的切换。图4d中第80代种群交叉因子可以根据每个个体适应度值自动改变,实现不同个体染色体间交叉程度的自动调节。图4e可以看出ADE算法经过55代左右可以收敛。
(15)
将输入信号Um、消除非线性部分负载流量QL1响应数据分别作为输入输出信号提供给ADE算法,按照表3设置算法辨识参数,并采用如下编码形式和误差指标:
(17)
N——辨识数据数量
ysi——第i个辨识样本的输出
J1——性能指标函数,也称为适应度函数
表3 伺服阀系统GSVK ADE算法辨识参数
(18)
图5 伺服阀系统GSVK ADE算法辨识曲线
根据式(15)、式(16)和式(18),得到动压缸电液伺服压力控制系统开环传递函数:
(19)
对动压缸电液伺服压力系统AMESim模型和辨识开环传函式(19)施加幅值为2.6、频率为20 Hz的正弦信号,其响应曲线分别为图6中曲线pL和曲线pL1。
从图6中可以看出,曲线pL1可以快速地响应输入信号变化,能够很好地拟合AMESim模型响应曲线pL,相位和幅值偏差很小,总体偏差小于曲线pL幅值的4%,辨识模型具有很好的辨识精度。因此,采用ADE算法获得伺服阀系统模型和动压缸负载系统参数,结合流量非线性部分,就可以准确地拟合出动压缸电液伺服压力系统的响应特性。
图6 AMESim模型和辨识模型输出压力对比曲线
本研究建立了动压缸电液伺服压力控制系统AMESim仿真模型,理论推导了其传函模型。设计了一种自适应差分进化算法,利用基于该系统AMESim模型的系统辨识数据,进行了自适应差分进化算法与其他算法辨识性能对比仿真,验证了该算法较高的辨识精度和收敛性。最后给出了自适应差分算法辨识的系统模型,并将该辨识参数模型和该系统AMESim模型进行了对比仿真,验证了模型辨识参数的准确性,取得了满意的辨识效果,可以为动压缸电液伺服压力控制系统提供较为准确的系统描述。