APP下载

基于改进粒子群算法的机车二系弹簧载荷分配优化

2019-04-17韩锟杨广为黄泽帆鲍天哲

中南大学学报(自然科学版) 2019年11期
关键词:极值适应度机车

韩锟,杨广为,黄泽帆,鲍天哲

(1.中南大学交通运输工程学院,湖南长沙,410075;2.利兹大学电子电气学院,英国利兹,LS2 9JT)

机车轮(轴)重分配不均会使机车运行时轮轴间传递的最大切向力减小,造成机车牵引力下降,甚至会导致空转打滑、车轮踏面剥离、车轴断裂等事故,是影响行车安全的重要隐患[1]。对具有两系悬挂结构的机车,通过加垫调节一、二系弹簧的变形量以改善轮(轴)重分配(以下简称调簧),是减小甚至消除轮(轴)重分配偏差的有效方法[2]。传统的人工调簧方法完全依赖经验判断,调整结果难以满足GB/T 3317—2016 规定的轮(轴)重分配允许偏差要求。针对调簧这一复杂的多变量优化问题,在优化模型的表达方面,CURTIS 等[3]采用试验法,通过试验测试得到加垫高度与弹簧载荷分布间的关系,作为计算加垫高度的依据。该方法易于实现,但计算结果的准确性过度依赖试验数据,不具有通用性。潘迪夫等[4]基于经典力学理论,得到了描述二系弹簧加垫高度与弹簧载荷分布间映射关系的调簧理论模型,具有一定的通用性。在此基础上,韩锟等[5]提出了带误差补偿的混合模型,进一步完善了调簧理论模型,使模型包含了机车弹性悬挂结构中非线性因素对弹簧载荷分布的影响。上述成果为调簧提供了重要的理论依据。在优化模型的求解方面,近年来,各种智能优化方法如遗传算法、SUMT算法、人工鱼群算法、模拟退火算法等不断应用于调簧领域[6−8],这些算法理论上可以求解,但通常存在计算时间长、求解精度低等问题。为此,韩锟等[9−10]提出了改进遗传算法,在一定程度避免了遗传算法早熟收敛的问题,求解精度有所提高。此外,潘迪夫等[11−12]提出了多目标遗传算法以及免疫优化算法,在提高算法鲁棒性的同时,有效控制了加垫总高度,但算法复杂度也随之提高。针对上述问题,本文提出一种具有3 层递阶结构的改进粒子群算法(improved particle swarm optimization,IPSO),在充分利用粒子群算法参数设计简单、收敛速度快等优点的基础上对粒子的更新机制加以改进,通过引入维变异算子和烟花爆炸机制增加粒子的多样性,通过引入扰动因子避免算法因陷入局部搜索而进行大量冗余迭代,从而在提高算法全局搜索能力的同时加快算法的收敛速度,使调簧精度和效率共同提高。

1 改进的粒子群算法(IPSO)

1.1 粒子群算法改进的必要性以及改进粒子群算法总体思想

粒子群算法是20世纪末KENNEDY等[13−14]受鸟群合作觅食启发提出的一种智能进化算法。该算法通过模拟鸟群个体间对食物信息的共享,利用不断围绕距离食物最近的飞鸟展开搜索,逐渐缩小信息范围直到发现食物。粒子群算法原理简单,参数设置简单,收敛速度快。与遗传算法复杂的编码解码过程相比,粒子群算法更易实现,并具有良好的通用性和鲁棒性,已逐渐成为人们的研究热点。但传统粒子群算法容易发生早熟现象,其收敛精度还有待提高。为此,本文提出一种具有3层架构的分层递阶改进粒子群算法,如图1所示:底层是基础层,是改进算法的基本框架,其本质是加入了维变异算子的粒子群算法;中间层是融合层,在粒子群算法中引入烟花算法(fireworks algorithm,FWA)[15−16]的爆炸机制,将粒子群算法中适应度较高的粒子作为烟花算法的爆炸烟花,以此增加粒子群算法的种群多样性,扩大搜索范围,提升算法的全局搜索能力,防止粒子群算法陷入局部最优,提高算法的收敛精度;顶层为扰动层,对粒子中的个体极值和全局极值施加扰动因子,避免算法因陷入局部搜索而进行大量冗余迭代,进一步加快收敛速度,提高算法效率。

图1 改进粒子群算法总体架构Fig.1 Framework of improved particle swarm optimization

1.2 IPSO算法底层的维变异算子

粒子群算法(particle swarm optimization,PSO)没有充分的精英机制,在淘汰迭代中产生劣解时,算法收敛速度会减慢。本文参考文献[17],引入带维变异算子的PSO作为IPSO算法的基本框架,其变异策略为:在粒子群所在的D维搜索空间中,引入参数lcon(n)(n∈[1,D])表示各个粒子在第n维的当前位置xi,n(i=1,2,…,N,N为粒子群中的粒子总数)到粒子群在第n维上的质心Dn到的距离总和,可用下式表示:

lcon(n)描述了粒子群在第n维上的收敛程度,其值越小,表示粒子群在该维上的收敛程度越大。在粒子群算法的每一次迭代过程中,计算每个维度上的lcon(n),找到这D个lcon(n)中最小值所在的维d,并对各个粒子在该维的当前位置xi,d以一定的概率按下式进行变异操作,使让所有粒子在该维上的位置重新均匀分布:

式中:α为(0,1)区间的随机数;xmax为所有粒子在d维的位置最大值。

1.3 IPSO算法中间层的烟花爆炸机制

为进一步提高全局和局部搜索能力,IPSO算法构建了融合烟花算法的中间层,对烟花算法的爆炸机制加以改进,用于更新粒子。在烟花算法中,每一个烟花个体都代表优化问题的1个候选解,算法在执行爆炸寻优操作时,以每个烟花作为爆炸中心,通过特定的爆炸策略生成子代火花,并在其中挑出优解作为下一代的候选解。IPSO算法参考文献[18-19],改进的烟花爆炸机制如下。

在以烟花个体xi为中心,半径为r的超立方体(D维空间)中随机产生Mg个火花的过程中,xi先按式(3)进行处理:

式中:R为爆炸半径在坐标轴上的投影值;β为服从[0,1]均匀分布的随机数;bk为方向向量。

从式(3)可以看出,改进后的爆炸机制使烟花不再仅沿坐标轴以固定半径爆炸,而且其爆炸方向和爆炸半径均随随机数β而变化,如图2所示。由图2可见:改进的爆炸机制丰富了由烟花爆炸得到的火花的多样性,使算法的搜索路径得到改善,不再仅沿坐标轴方向搜索,而且可以沿着任意角度搜索,拓展了算法在设计区间的搜索范围。

图2 改进爆炸机制前后烟花爆炸结果示意图Fig.2 Diagram of fireworks explosion before and after improving explosion mechanism

烟花算法的爆炸强度即产生的新火花的数目与烟花适应度紧密联系,通过控制爆炸强度使适应度高的烟花爆炸而生成更多新火花,可以提高寻优效率。减小爆炸幅度(爆炸半径)可以缩小烟花的爆炸范围,加快算法收敛。烟花算法是通过计算每个烟花个体的适应度函数值确定爆炸强度和爆炸幅度,计算方法如下:

式中:Si为第i个烟花爆炸产生的火花数量;Ai为第i个烟花的爆炸半径;ymax和ymin分别为当前烟花种群适应度的最大值和最小值;f(xi)为适应度函数,i=1,2,…,N;N为种群规模;A为最大爆炸半径;M为常数,用于控制N个烟花爆炸产生的火花总数。为避免在特殊情况下存在分母为0的可能,引入极小常数ε进行约束。

为了避免适应度高的烟花爆炸强度过大,产生压倒性的影响,通过下式对烟花爆炸产生的火花数量进行约束:

式中:为约束后第i个烟花爆炸产生的火花数量;a和b为常数;round为取整函数。

1.4 IPSO算法原理

如前所述,IPSO算法以带维变异算子的粒子群算法作为算法主体。但随着迭代次数增加,带维变异算子的粒子群算法会因粒子贫化而导致搜索能力下降,故IPSO算法在每次迭代过程中进行粒子更新操作时,引入1.3节所述的改变爆炸方式的烟花算法,将带维变异算子的粒子群算法更新得到的每个粒子个体极值作为烟花算法中的烟花个体,按式(3)给出的爆炸机制进行操作,以期增强IPSO算法在迭代过程中的种群多样性,提高算法全局搜索能力。爆炸操作中每个烟花个体产生的火花数量Si和爆炸半径Ai分别按式(7)和式(8)计算:

式中:为第i个粒子第t次迭代时的个体极值的适应度;和分别为所有烟花个体中的适应度最大值和最小值。

最后,在IPSO算法中引入扰动因子,防止算法在寻优过程中因陷入局部搜索而出现扎堆现象,从而加快收敛速度。在第t次迭代过程中,对个体极值,全局极值以及迭代更新后粒子位置xti+1加入扰动因子,即

其中:α,β和δ为条件随机函数;tp和tg分别为个体极值和全局极值迭代停滞的次数;tx为对粒子位置进行扰动的次数;为更新后的粒子速度;Tp,Tg和Tx分别为个体极值、全局极值和粒子位置扰动的限界值。

由式(12)~(16)计算得t+1次迭代更新后d维粒子的速度和位置。设为迭代次数t时的d维第i个粒子的个体极值,为迭代次数t时的d维第i个粒子的全局极值,t为迭代次数,T为最大迭代次数,wt为第t次迭代时的惯性权重,wmax和wmin分别为wt的最大值和最小值,c1和c2为学习因子(取值不大于2),vmax和vmin分别为粒子的速度最大值和最小值,xmax和xmin分别为位置上、下限,有

IPSO算法的具体流程如下。

Step 1:设定种群规模、迭代次数、惯性系数、速度位置等算法参数。

Step 2:初始化粒子的速度和位置。

Step 3:计算粒子的适应度f(xi),再求出个体极值对应烟花算法的适应度。

Step 4:令t=t+1,开始迭代更新粒子的速度和位置。按照式(13)~(16)更新粒子的速度,再由速度更新位置。

Step 5:加入维变异算子,对粒子进行变异,计算适应度函数,依据种群粒子信息更新。

Step 6:将Step 5 更新得到的作为烟花算法中的烟花个体,并对其进行爆炸操作,计算f(xi),并更新。

Step 7:根据与更新全局极值。

Step 8:引入扰动因子,计算适应度函数值,并再次更新。

Step 9:若t

2 算法性能测试

为了验证IPSO算法的性能,将IPSO算法和遗传算法(GA)、粒子群算法(PSO)及烟花算法(FWA)进行比较。选取3个最小值唯一且都为0的标准测试函数对算法性能进行测试。其中,F1(x)为Rosenbrock函数,它是一个结构特征酷似峡谷的单峰函数,其全局最小值位于绵长且平坦的谷底,该函数可用于测试算法的全局搜索能力。

F2(X)为Rastrigin函数,是1个局部极小值较多的多峰函数,可以测试算法跳出局部最优的能力:

F3(X)为Ackleys函数,用来测试算法全局收敛速度:

为了比较算法的性能优势,IPSO,GA,PSO和FWA 算法中均取最大迭代次数T=500,种群规模N=100。Rosenbrock 函数对应维度为D=10,其他2种函数对应维度D=35。图3所示为各算法迭代过程中最佳适应度收敛曲线。

图3 4种算法对基准测试函数的收敛曲线Fig.3 Convergence curves of four algorithms running on benchmark function

从图3可见:在这4种算法中,IPSO算法的搜索能力最强,收敛速度最快。这是因为IPSO算法充分利用了烟花算法的爆炸机制来增强种群多样性,降低了算法限入局部极值的概率;同时,引入的扰动因子避免了IPSO算法在局部极值区域的冗余迭代,加快了算法收敛速度。

为进一步验证算法的鲁棒性,这4种算法分别独立运行50 次,得到的最优解、最差解、最优适应度均值、方差如表1所示。

表1 表明:在用4 种算法对3个测试函数分别进行寻优运算的实验中,IPSO算法所得到的500次独立运行结果中的最优解、最差解,以及500次求解结果的均值和方差等均低于GA,PSO和FWA算法相应的求解结果,表明IPSO算法具有更强的全局搜索能力和鲁棒性。

3 IPSO算法在机车二系调簧中的应用

3.1 机车二系支承结构几何模型

本文实验平台为实验室自主研发设计的大功率机车车体称重调簧试验台[4],本实验所有数据均来源于现场采集,试验台为车体提供12个支承点,通过液压系统控制支承点抬升来模拟各二系弹簧处的加垫操作。试验台的位移控制精度达0.1 mm,足以保证试验的可靠性。

轴式为C0−C0的电传动机车二系支承结构的简化模型见图4。此模型只考虑二系弹簧垂向载荷分布,将车体视为一个整体,总重力为P,ex和ey分别为车体重心在X和Y方向的偏移量,a和b分别为沿X和Y方向距离车底中心O的距离,S1和S2为同一转向架同侧的二系弹簧横向间距,F1~F12分别为12个二系弹簧对车体的支承力。

3.2 目标函数

文献[5−6]针对机车二系弹簧载荷分布建立了基于传统机理模型的优化模型,具体形式为

式中:目标函数J表示二系弹簧载荷分布均方差,J越小,表示载荷分布越均匀;F0j和Fj分别为加垫调整前后第j个二系弹簧的载荷;-F为所有二系弹簧的载荷平均值;n为机车二系弹簧数目,从图4可知n=12;kij为加垫引起载荷变化的增载系数;Δhi为第i个弹簧对应的加垫高度;ΔHmax为常数,为试验允许的最大加垫高度。

3.3 仿真试验结果

以大功率HXD1D型机车为试验对象,根据现场实测数据结合IPSO算法开展调簧仿真实验。为避免参数选择的盲目性,利用遗传算法对IPSO算法的参数进行全局优化,综合考虑计算复杂度和参数可靠度,得出一组最优参数组合:种群规模N=60,迭代次数G=200 次,惯性权重最大值wmax=0.9,惯性权重最小值wmin=0.4,学习因子c1=c2=2,最大允许加垫高度ΔHmax=10 mm。4 种算法仿真实验过程中的迭代收敛曲线如图5所示。

表1 4种算法独立运行50次的测试结果Table 1 Test results of four algorithms running independently 50 times

图4 C0−C0轴式机车二系支承结构简化模型Fig.4 Simplified geometry model of secondary suspension system of C0−C0 locomotive

图5 4种算法的迭代收敛曲线Fig.5 Convergence curves of four algorithms

由图5 可知:在迭代前期,IPSO算法的收敛速度明显比GA,PSO和FWA这3种算法的快;随着迭代次数增加,PSO和FWA算法趋于早熟收敛,而IPSO算法在迭代超过60次以后载荷方差还有明显下降,表明将粒子群算法与烟花算法相结合的IPSO算法很好地克服了传统算法早熟的问题;同时,在相同种群规模下,IPSO算法的收敛精度最高,具有较强的全局搜索能力。

HXD1D 型机车共有12个二系支承点,IPSO算法优化前后,各支承点处二系弹簧的载荷分布情况和相应的加垫高度如表2所示。由表2 可知:通过IPSO算法优化后,二系弹簧载荷分布方差由初始的1.300 降低到0.507,减小了61%;12个二系弹簧载荷的最大差值也由2.68 kN 减小到2.03 kN,减小了24.3%。实验结果验证了IPSO算法优化二系弹簧载荷分布均匀性的有效性。

表2 HXD1D型机车初始二系载荷分布及优化结果Table 2 Initial distribution and optimization results of secondary spring load of locomotive HXD1D

为了进一步验证IPSO算法在机车二系弹簧载荷分布优化中的有效性和鲁棒性,将其与遗传算法、粒子群算法、烟花算法进行比较,4种算法在种群规模为60,迭代次数为200次的条件下独立运行50次的结果见表3。从表3可以看出:IPSO算法的平均运行时间比GA 略短,比PSO和FWA 耗时要长;但IPSO算法50次求解得到的二系弹簧载荷分布方差的平均值为0.507 8,较PSO算法的0.744 9 减小了31.8%,较FWA 算法的0.633 5 减小了19.8%,较GA 算法的0.644 9 减小了21.3%,在求解精度上具有显著优势;IPSO算法50次求解得到的二系弹簧载荷分布方差的标准差仅为3.113 5×10−4,50次求解得到的二系弹簧载荷分布方差的最优解与最差解仅相差0.001 2,显示了良好的鲁棒性;与GA 算法相比,IPSO算法在求解精度、求解效率、鲁棒性等方面均具有一定优势。

表3 4种算法独立运行50次的结果对比Table 3 Results comparison of four algorithms independently running 50 times

图6 4种算法50次独立运行结果分布的箱式图Fig.6 Box-plot of four algorithms

PSO,FWA,GA和IPSO算法分别独立运行50次所得结果分布的箱式图见图6。图6中每个箱体的高度在一定程度上反映了50 次结果数据的波动程度,箱体上方和下方的线段代表了该组数据的最大值和最小值,箱体内部的线代表该组数据中位数的值,箱子外部的点为数据中位于箱体外面且距离相应边界大于1.5 倍箱体高度的“异常值”。从图6可以直观地看出:描述IPSO算法50次运行结果分布的箱体高度最小,表明该算法多次运行结果的波动远比其他3 种算法的小,且50 次运行结果中没有“异常值”,具有很好的鲁棒性;IPSO算法50次运行结果的中位数值在所有算法中最小,表明该算法求解精度最高。

4 结论

1)提出了一种采用分层递阶结构的改进粒子群算法IPSO,算法底层为基础层,通过在粒子群算法中加入维变异算子,避免算法早熟收敛;中间层为融合层,融入烟花算法,采用改进的烟花爆炸机制进行粒子更新,充分利用烟花算法的优势平衡IPSO算法的全局和局部搜索能力;顶层为扰动层,在一定条件下对每次迭代过程中得到粒子的个体极值和全局极值进行加入扰动因子,以避免算法在局部极值区域进行冗余迭代,提高算法效率。

2)IPSO算法在全局搜索能力、求解精度、鲁棒性等方面的综合性能明显优于其他几种优化算法。

3)经过IPSO算法优化后的载荷均方差相较于原始值减小了61%,改进效果明显;在算法独立运行50 所得二系弹簧载荷分配方差的平均值与遗传算法、烟花算法和粒子群算法相比,分别减小21.3%,19.8%和31.8%,且50 次运行结果的波动幅度远小于这些算法,充分证明了IPSO算法在求解机车二系弹簧载荷分配优化问题的有效性和可靠性。

猜你喜欢

极值适应度机车
改进的自适应复制、交叉和突变遗传算法
极值(最值)中的分类讨论
极值点带你去“漂移”
极值(最值)中的分类讨论
极值点偏移问题的解法
“周恩来号”机车连续40年投入春运
DF8BI内燃机车整车称重调簧工艺适用条件研究
机车英雄
启发式搜索算法进行乐曲编辑的基本原理分析
基于人群搜索算法的上市公司的Z—Score模型财务预警研究