一种多目标果蝇算法及其在全弹道优化设计中的应用*
2019-06-13曹岩枫
曹岩枫,徐 诚
(南京理工大学机械工程学院,南京 210094)
0 引言
果蝇优化算法[1]是中国台湾学者潘文超提出的一种基于果蝇觅食行为的全局优化算法。果蝇优化算法和其他优化算法相比,具有算法简单、程序实现容易、调节参数较少、计算量小、能够实现全局寻优且收敛快等特点。近年来,一些学者针对防止算法早熟收敛进行了改进[2-4],果蝇优化算法在广义回归神经网络参数优化与支持向量机参数优化等领域应用较多[5-7],但目前果蝇优化算法在多目标工程问题领域的应用还较少。
本文在搜索空间、味道浓度判定值定义以及寻优策略等方面,对原始的果蝇优化算法进行改进,提出了改进的多目标果蝇算法,使得改进后的算法性能大大提高。并将改进的多目标果蝇优化算法成功应用于全弹道优化设计中,效果较好。
1 果蝇优化算法
果蝇优化算法是一种源于对果蝇觅食行为模拟的全局优化算法。果蝇拥有优于其他物种的嗅觉及视觉,能够通过嗅觉器官搜集空气中的各种气味,飞近食物后再用灵敏的视觉确定食物的位置,最后飞向食物。根据果蝇搜寻食物的特性,果蝇优化算法可归纳为以下几个必要的步骤:
1)初始化种群规模N,最大迭代次数gmax,随机初始化果蝇种群初始位置(Xaxis,Yaxis);
2)随机设定果蝇个体的搜索方向Rrandom和搜索距离h:
其中,Rrandom为0到1之间的随机数。
3)由于无法得知食物源的位置,因此,先估算果蝇个体与原点的距离D,再求倒数计算得到味道浓度判定值S:
4)将味道浓度判定值S代入味道浓度判定函数,计算出果蝇个体当前位置的味道浓度:
5)找出果蝇种群中味道浓度最佳的果蝇:
6)保留果蝇群体的最佳味道浓度及其对应的坐标,此时果蝇群体利用视觉定位后飞向该位置:
7)进入迭代寻优,重复执行步骤2)~5),并判断最佳味道浓度是否优于前一迭代最佳味道浓度,若是则执行步骤6)。
果蝇优化算法利用果蝇寻找食物的群体协作和信息共享机制搜索最优解,全局寻优能力较强;算法采用实数编码,程序简单,计算量较小;果蝇优化算法需要调节的参数只有3个,与其他优化算法相比明显减少了由于参数选取不当对算法性能产生影响的机会。尽管果蝇优化算法自提出以来就得到了国内外学者的广泛关注,并在一些工程应用中表现良好,但仍存在一些缺陷需要改进。
原始的果蝇优化算法中味道浓度判定值S定义为果蝇个体与原点的距离D的倒数,D为坐标X和Y的算术平方根,如此定义的S存在2个缺陷:1)由于果蝇飞行的坐标系是对称的,对称位置的坐标计算得到的味道浓度判定值S是相等的,这会导致浪费计算时间;2)由于S>0,因此,果蝇优化算法不能求解定义域包含负数的优化问题。原始的果蝇优化算法会将每一代果蝇群体中最佳味道浓度个体对应的坐标作为下一代群体的起始位置,并且只有一个群体,这在解决复杂问题时会导致陷入局部最优。此外,实际工程问题往往要考虑多个优化目标,原始的果蝇优化算法不能很好地适应多目标优化问题。
2 改进的多目标果蝇优化算法
2.1 算法改进
针对以上的缺陷,本文对原始的果蝇优化算法做了如下改进:
1)原始果蝇优化算法中果蝇的飞行空间是对称的,整个空间可以分为8个部分。为了减少重复的计算结果,节省计算时间,仅保留图1中阴影部分所示的一个部分作为果蝇的飞行空间。果蝇个体的位置由式(7)确定:
图1 改进后的果蝇飞行空间
2)原始的果蝇优化算法中,味道浓度判定值S不能取负值并且不能约束取值范围,不能够适应实际工程问题求解的需求。改进后的味道浓度判定值S由式(8)确定:
其中,[L,U]为 Si的取值范围。
3)原始的果蝇优化算法在找出果蝇种群中味道浓度最佳的果蝇位置后,果蝇群体利用视觉定位后飞向该位置,算法只有一个果蝇种群,这使得在求解复杂问题时搜索全局最优解的表现不够理想。本文引入若干个子种群代替单一的果蝇种群,每个子种群都在飞行空间中独立地搜索味道浓度最佳的位置,从而有效提高算法全局搜索的能力。在求解多目标优化问题时,引入多个子种群可以有效提高最优解集中解的多样性。
4)求解多目标优化问题的过程就是寻找Pareto最优解的过程。本文将快速非支配排序以及拥挤距离排序的方法引入果蝇优化算法。快速非支配排序能够帮助算法提高收敛速度,拥挤距离排序的方法能够避免早熟以及提高最优解集中解的多样性。
2.2 算法步骤
基于以上改进,能够解决多目标优化问题的改进果蝇优化算法的步骤如下:
1)初始化子种群数Ns,各子种群的个体数Np,最大迭代次数gmax,在设计空间中均匀随机初始化果蝇各子种群初始位置(Xi_axis,Yi_axis),初始非支配前沿解集F0=Ø;
2)随机设定果蝇个体的搜索方向Rrandom和搜索距离h,计算出第i个子种群中第j个果蝇个体的位置(Xij,Yij):
3)计算果蝇个体的味道浓度判定值Sij:
其中,(L,U)为 Sij的取值范围。
4)将果蝇个体的味道浓度判定值Sij代入味道浓度判定函数,计算出果蝇个体当前位置的味道浓度Smellij:
其中,M为目标函数的数量。
5)对每个子种群中的个体进行非支配排序,将第g代所有子种群的非支配解存放到Qg中,将Qg与上一代非支配前沿解集Fg-1合并产生Tg;
6)对集合Tg中的个体进行非支配排序,得到的非支配解存放到新的非支配前沿解集Fg中。然后对Fg中的个体进行拥挤距离排序,取排序得到的前Ns个个体的位置作为各子种群新的起始位置;
7)进入迭代寻优,如果 g≥gmax,输出 Fgmax作为Pareto最优解集;否则,重复执行步骤2)~6)。
3 全弹道优化问题
全弹道优化设计模型是将内弹道、外弹道及终点效应等多个分系统结合成一个有机整体,对其进行全局的优化设计,寻求满足最优目标性能时的各设计参数。本文应用改进的多目标果蝇算法对其进行寻优。
3.1 全弹道仿真模型
全弹道仿真模型涉及的各分系统的分析模型较为复杂,公式繁多,可参考相关文献,本文仅对各分系统模型作简要描述。
3.1.1 内弹道仿真模型
内弹道仿真模型[8]采用混合装药经典内弹道模型,采用4阶龙格-库塔法求解内弹道微分方程,计算在给定薄火药质量mω1、厚火药质量mω2及药室容积V0的条件下,弹丸在内弹道时期的最大膛压pmax及其出炮口时的初速v0。
3.1.2 外弹道仿真模型
采用包括弹丸自转在内的4自由度外弹道计算模型[8],计算在给定弹丸初速 v0、射角 θ0、弹丸尾锥长度H1以及头部高度H3的条件下,弹丸飞行至终点时的速度vc、落角θc及射程L。
3.1.3 弹丸终点效应仿真模型
采用杀伤威力计算模型[9],计算在给定弹丸有效壳体结构参数(如图2)、给定落角θc及落速vc时弹丸的杀伤面积A。同时,由弹丸结构尺寸与炸药质量mzy计算出的弹丸质量也作为内、外弹道计算时的输入。计算杀伤面积时,假设弹丸爆炸后所产生的破片均为自然破片,选用A-S杀伤准则,并采用球形靶对弹丸杀伤面积进行积分。
图2 弹丸有效壳体结构尺寸示意图
3.2 全弹道优化设计
对于火炮来讲,杀伤面积与射程是重要的战术技术指标,本文以弹丸的杀伤面积A与火炮射程L作为全弹道优化的目标函数。
以杀伤面积与射程作为全弹道模型灵敏度分析时的响应,采用拉丁立方法,对各设计参数进行灵敏度分析,综合考虑各参数对杀伤面积和射程的影响,选取薄火药质量 mω1、厚火药质量 mω2、药室容积 V0、弹丸结构参数 R1、R2、r2、H2、H3等 8 个参数作为全弹道优化模型的设计变量。
多目标果蝇算法参数选择:子种群数Ns=10,各子种群的个体数Np=50,最大迭代次数gmax=500,为了平衡算法全局搜索和局部搜索的能力,每一代果蝇个体中有80%的搜索距离h=100,其余个体的搜索距离h=1。运用Matlab编程,对该模型进行优化求解,得到Pareto前沿如图3所示,可以看出,改进的多目标果蝇算法全局搜索能力强,求得的Pareto前沿解分布均匀,解的多样性好。根据工程经验选取其中一个最优解如表1所示。与初始设计[8]对比,弹丸的杀伤面积A从1 352.20 m2提高到2 021.62 m2,提高了49.51%,与此同时,火炮射程L从15.90 km提高到22.77 km,提高了43.21%,性能得到了明显提升。优化结果表明,改进多目标果蝇算法能够满足实际工程问题求解的需求。
图3 Pareto最优解集
4 结论
本文提出了一种改进的多目标果蝇算法,通过对味道浓度判定值的改进、引入多个子种群以及引入对多目标解集进行快速非支配排序和拥挤距离排序的方法,提高了果蝇算法解决实际工程问题的能力。同时,将改进的多目标果蝇算法应用到全弹道优化设计当中,进一步证明了该算法的有效性。
表1 优化前后各参数对比