APP下载

混合蝙蝠算法对直线电机参数优化的研究

2020-04-13王鹏程李铎

石油化工自动化 2020年2期
关键词:蝙蝠猎物种群

王鹏程,李铎

(上海理工大学 机械工程学院,上海 200093)

很多优秀的算法最初都是源自于学者们对大自然的观察与思考,目前已经有很多学者根据大自然中众多生物的习性特征提出了各种优秀的优化算法,其中比较出名的群智能算法有: 粒子群优化、蚁群优化、布谷鸟搜索和蝙蝠算法等。每种算法都有使用的工作领域,并在不同的领域内展示出了非常好的使用效果。由英国学者X-S.Yang所提出的蝙蝠算法是一种仿生模拟蝙蝠猎食行为的搜索算法[1]。标准蝙蝠算法(BA)是用初始化后的种群数据模拟自然界中的蝙蝠个体,把搜索整个种群最终得到最优数据的过程模拟成蝙蝠个体捕食时进行的搜索和移动过程[2],把求解问题的目标函数的适应度值度量成蝙蝠个体所处位置的优劣。

实际工程问题的优化求解通常具有多种复杂的约束条件,解决此类复杂问题需要高效的优化算法[3],但传统的标准蝙蝠算法在迭代过程中,常常会因为过早收敛而陷入局部最优解后停滞更新,导致无法得到全局最优解。因此,从蝙蝠算法提出至今,主要应用于求解函数优化问题,很少对实际工程中的复杂模型参数进行优化。盛孟龙[4]等人针对蝙蝠算法处理高维复杂问题易陷入局部最优解的情况,引入了交叉变化来更新蝙蝠群体的位置,提出了一种改进的自适应变异蝙蝠算法;吕石磊、黄永霖[5]等人在基本蝙蝠算法中加入了自适应步长控制机制和变异机制,有效解决了基本蝙蝠算法易陷入局部最优解的问题;Z.Chen[6]将基本蝙蝠算法的速度因子去除,同时利用正态分布来控制位置的变化,有效避免了基本蝙蝠算法易陷入局部最优解的情况。基于以上研究基础,本文提出了一种适用于求解高维复杂模型的新型混合蝙蝠算法。

为了改善BA算法对高维复杂模型的求解优化问题,笔者通过引入小生境思想对BA算法按照初始化种群后的区间进行分段,并融合了粒子群算法中的速度和位置更新公式,最后根据区间的分段采用主机和分机共同求解优化模型的分布式方法,构成了本文提出的混合蝙蝠算法(HBA)。实验结果表明: 本文提出的HBA算法可以显著提高BA算法的性能,使求解速度更快、精度更高,该算法对求解高维函数和优化复杂模型参数非常有用。

1 标准蝙蝠算法

蝙蝠算法是一种模拟自然界中的蝙蝠利用超声波探测猎物、避免障碍物的随机搜索算法。其基本工作原理[7]是: 模拟蝙蝠捕捉猎物时进行探测、定位最终达到捕获成功的一系列过程和优化目标功能相联系,达到对目标函数进行初始化、优化、最终获得最优值的效果。BA算法将搜索和优化过程模拟成蝙蝠个体搜寻猎物和移动过程,以求解模型的适应度函数值来衡量蝙蝠所处位置的优劣,将个体的优胜劣汰过程类比为优化和搜索过程中用好的可行解替代较差可行解的迭代过程。

每只蝙蝠利用回声定位搜寻猎物时都具有各自独立的位置、速度、频率、脉冲发射率、音强。在捕猎时,蝙蝠一般会发出音强响度约为110 dB的超声波脉冲,脉冲发射率为10~20个/s,在搜寻探索猎物时,较大的音强响度可以使蝙蝠的超声波传播更远的距离,以便更快地搜索到猎物,当锁定捕获目标后,蝙蝠就会逐渐降低音强响度增大脉冲发射率,通常达到200个/s,使蝙蝠更加精准地掌握猎物不断变化的空间位置,最终捕获目标猎物[8]。

在BA算法中,X-S.Yang做了如下三点假设[9]:

1)蝙蝠利用回声定位来感知距离,每只蝙蝠都有自己的一套方法分辨猎物和障碍物。

2)第i只蝙蝠在位置xi以固定的频率fi和速度vi随机飞行,当发现猎物后蝙蝠根据其当前的位置和猎物的距离动态地调整自己的脉冲发射率ri和音强响度Ai来搜索猎物。

3)在BA算法中,音强响度是从1个最大值A0变化到固定最小值Amin的,变化区间视具体问题而定。

在模拟蝙蝠搜索过程中,t时刻蝙蝠i的频率、速度和位置更新如式(1)~式(3)所示:

fi=fmin+(fmax-fmin)β

(1)

(2)

(3)

式中:fmax,fmin——频率的最大值和最小值;fi——第i只蝙蝠在当前时刻的频率,调整区间为[fmin,fmax];β——在[0, 1]区间的1个随机向量;x*——群体中当前最优位置。

在局部搜索中,如果1只蝙蝠选择了1个最优解,那么将在此最优解附近随机产生1个新解:

xnew=xold+εAt

(4)

式中:xold——从当前最优解中选择的1个解;xnew——位置更新后得到的新解;At——在t时刻所有蝙蝠音强响度的平均值;ε——[-1, 1]内的1个随机数。

蝙蝠的音强响度Ai和脉冲发射率ri通过式(5)~式(6)进行更新:

(5)

(6)

式中:α,γ——常数,并且0<α<1,γ>0。

在BA算法中,最适应度值如同蝙蝠的猎物,脉冲频率的变化在一定程度上可以表示为蝙蝠接近猎物的程度。

2 混合蝙蝠算法

通过分析上述BA算法的机理可知,蝙蝠种群的初始化优劣对算法的性能具有较大影响。如果蝙蝠种群的初始化群体过于分散就有可能造成算法在迭代过程中出现收敛速度慢、甚至不收敛的情况。由于BA算法采用的是随机产生初始化种群,所以很容易出现陷入局部极值的情况。本文提出的HBA算法是通过加入了粒子群优化算法中的速度和位置更新公式,并引入小生境思想,按初始化种群的区间范围对蝙蝠种群进行分段,求解时采用分布式多机共同求解的方式运行算法,分机分别求解对应区间段上的局部最优解,最后把所有局部最优解汇总到主机进行全局最优解的求解,这样的求解方式可以大幅提高算法的求解速度,解决了BA算法中收敛速度慢等缺陷。按区间分段求解示意如图1所示。

由于BA算法中速度和位置的更新方式比较单一,在算法进行到迭代后期时会出现种群多样性丢失的情况,尤其是BA算法在求解高维复杂模型的最优值时经常会出现陷入局部极值而无法求解出全局最优解,导致BA算法搜索结果不准确,常常会出现较大偏差的问题。通过分析BA算法中的位置和速度更新公式,可以看出在整个迭代过程中BA算法看重的是局部最适应值,而对速度和位置的更新都是采用随机的方式进行迭代更新的,为了克服BA算法中的更新缺陷,本文采用结合粒子群算法中的速度和位置迭代公式来保证后期种群的多样性,对各个次优解和最优解进行不同方式的迭代,以避免陷入局部最优解。

图1 按区间分段求解示意

小生境思想在本文提出的HBA算法中的应用及分布式求解过程介绍: 为了解决BA算法在迭代过程中容易陷入局部极值而停滞迭代的问题,对蝙蝠种群进行初始化后,根据当前计算机的分机数量定义种群区间的分段数量,然后分别让每台分机求解每一段种群区间上的局部最优解,最后把各分机求解得到的局部最优解返回给主机记录,主机将各分机返回的局部最优解作为初始化种群再一次对其进行求解,得到全局最优值。保持该最优值的位置,然后在该最优位置分别加上和减去0.5个搜索空间的步长,并保存返回到下次的区间分配,进行下一次的迭代,最终迭代直至搜索完全部区域,输出最优解。

根据每次迭代得出的全局最优值及其对应的蝙蝠位置对蝙蝠种群的速度和位置进行更新,改进后的蝙蝠速度和位置在t时刻第i次迭代时的更新如式(7)~(8)所示[10]:

(7)

(8)

式中:groupjbest——分机求解得到的局部最优解;xjbest——局部最优解的位置,下标j表示分机号;finbest——主机求解得到的全局最优解;ω——惯性权重,通常取0.9;c1,c2——学习因子,一般取值为2[12]。

由于BA算法中的位置更新公式中的解容易陷入局部最优的情况,种群多样性丢失,为了提高局部搜索能力,对蝙蝠的位置进行更新,i为现迭代次数,如式(9)所示:

xnew=μx*+vi

(9)

式中:μ——与最优蝙蝠位置的比重,取值范围为0.5~1.0。

本文提出的HBA算法运行步骤如下:

1)参数初始化: 种群规模P,目标函数f(x),最大音强响度A0,最大脉冲发射率r0,最大频率fmax和最小频率fmin,音强的衰减系数α,频率的增强系数γ,最大迭代次数n等。

2)随机产生初始蝙蝠种群,计算个体适应度和总群的平均适应度,记录最优个体及其位置,按照种群区间将种群分组,并根据式(1),式(4),式(5),式(7),式(8)对蝙蝠的位置和速度进行更新。

3)对所有蝙蝠的适应度值进行排序,找出当前的最优解和最优值,并重复执行步骤2),直至得到满足算法结束条件,输出最优解。

3 直线电机加速度参数优化

为了研究自动化搅拌机工作特性,自主设计了1台自动化搅拌试验台,该自动化搅拌装置主要是由1台小型高精度直线电机和1台小功率高精度的旋转电机组建而成,该装置的主要功能是通过调节直线电机的运动方式与旋转电机的转动方式达到模拟各种定制化需求的搅拌器的效果,从而可达到对搅拌效果进行分析和预测的效果。

实验台上方是直线电机动子,可根据定制化需求做各种不同要求的直线运动(如: 匀速直线运动、匀加速直线运动、变加速直线运动、正弦/余弦函数运动等);下方的旋转电机也可根据定制化需求做各种不同要求的旋转运动(如: 匀速旋转、匀加速旋转、正反向换向旋转、正弦/余弦函数旋转等)。介于直线电机动子和连接杆之间的力传感器用于实时检测连杆的受力情况,防止直线电机动子加速度过大产生的导致连杆受到过载扭矩产生的连杆变形。

由上述介绍可知,由于该试验台装置需要满足各种定制化需求的复杂运动,因此试验台中用于连接直线电机和旋转电机的4根连接杆受力过大时容易受损变形。试验结果表明,该自动化搅拌试验台最重要的1个参数是直线电机的加速度a,如果直线电机的加速度a设置过小,由于受电机导轨长度的限制,无法达到期望的直线电机的运动速度;如果直线电机的加速度a设置过大,轻则会造成直线电机定位出现误差,试验台出现剧烈抖动,无法保证试验数据的准确性;重则甚至直接造成试验台连接杆弯曲变形,导致整个试验台数据失真。

考虑到该试验台装置后期需要满足多种复杂的运动状态,本文通过设定直线电机的运动速度v按照正弦函数y=sinx图形进行变化,旋转电机的旋转速度按照余弦函数y=cosx图形进行变化。本文分别采用了BA算法和HBA算法对直线电机加速度参数进行优化,并对两者进行了对比和分析。BA和HBA算法测试对比见表1所列。

表1 BA和HBA算法测试对比

表1分别统计了经BA算法和HBA算法对直线电机加速度参数进行优化后的正确率和用时,通过5次的试验数据对比可以看到,BA算法的正确率低于本文改进后的HBA算法,采用HBA算法进行优化时,正确率都在95%以上,最高可达98%,几乎可以满足一般实际工程标准;另外在用时上,由于HBA算法采用了多机共同进行处理的方式,优化时间只用了传统的单机标准蝙蝠算法的25%,大幅提高了优化效率,对复杂多维模型的优化有重要的借鉴意义。BA和HBA优化求解比较如图2所示。

图2 BA和HBA优化求解比较示意

如图2所示,多组试验数据表明,采用BA算法优化直线电机加速度a时,当迭代到第232次时才逐渐停止了迭代更新,得到的最佳加速度值为4.86 m/s2;而采用HAB算法时只迭代了86次就找到了最优加速度值,为1.18 m/s2。将以上a值代入直线电机的运动模型后得到的直线电机速度曲线如图3所示,可清晰地看出采用HBA算法优化得到的直线电机速度变化曲线与理论速度变化曲线可以很好地吻合,而由BA算法优化过后的直线电机运动速度与理论状态的速度有较大偏差。此外,在优化时间上,由于本试验采用1台主机、3台分机对模型参数进行优化,采用混合蝙蝠算法能节约大量的优化时间。

图3 优化后直线电机速度变化示意

4 结束语

本文通过引入小生境思想提出了一种对初始化后的种群按照区间进行分段的方法来对BA算法进行改进,同时为了克服BA算法中数据收敛过快,易陷入局部极值等缺陷,本文在标准蝙蝠算法基础公式的基础上引入了粒子群算法中的速度和位置更新公式,对BA算法中的速度和位置更新进行了补充,使本文提出的HBA算法速度和位置更新更加具有多样性。试验结果表明,本文提出的HBA算法能够得到更加准确的优化值,同时大幅缩短了优化时间,对现代工程优化领域具有重要的参考价值。

猜你喜欢

蝙蝠猎物种群
山西省发现刺五加种群分布
三木落
基于双种群CSO算法重构的含DG配网故障恢复
可怕的杀手角鼻龙
Duck-billed platypuses
由种群增长率反向分析种群数量的变化
聪明误
蝙蝠
蝙蝠女
蝙蝠为什么倒挂着睡觉?