基于离散鲸鱼优化算法的钣金折弯工序优化设计
2023-10-12赵云涛董一帆李维刚
赵云涛,董一帆,李维刚
(武汉科技大学信息科学与工程学院,湖北武汉 430081)
0 前言
钣金件是一种冷加工工艺,因为良好的性能和易生产的特性广泛应用于在电器、汽车工业和通信等领域当中。折弯工序作为钣金加工工艺的关键一环,如何规划钣金件的折弯顺序,与零件的成品率、精度以及生产效率和加工成本有着密切关联。目前折弯工序编排大多由专业的设计人员设计,得出一个符合需求可行的工序规划需要大量的试验操作,并作出相应调整,这往往需要大量时间和人力,且效率通常都不太高。因此如何降低时间成本,提高效率,解决钣金件的自动工序编排问题是一个亟需解决的问题。
国内外对折弯工序的自动规划问题进行了大量的研究。THANAPANDI等[1]使用遗传算法对折弯工序进行预处理,减少了解的数量,考虑了板料的模具和干涉问题。DUFLOU 等[2]详细阐述了折弯工序的工艺流程。KANNAN、 SHUNMUGAM[3]基于遗传算法得到了折弯工序的优化解。FARSI、 AREZOO[4]为了解决工序规划组合问题效率,运用了模糊集理论和分类系统。王飞、游有鹏[5]针对折弯工序的自动规划问题,开发了一种独立于工件特征的编排系统,基于遗传算法添加约束条件,得到全局最优解。柳守宽等[6]改进了遗传算法,优化了最优解的考虑条件,提高了解的质量。近年来,学者多用鲸鱼优化算法处理多种连续优化问题,鲸鱼优化算法是MIRJALILI和LEWIS[7]在2016年提出的一种新型元启发算法,参考了自然界座头鲸的捕猎方式。它成功应用于各种复杂的离散优化问题,如资源调度问题[8]、选址与路径规划[9]和神经网络训练[10]等。在算法改进和应用方面,王迪、金辉[11]提出了贪婪鲸鱼优化算法,在鲸鱼搜索完猎物后引入了贪婪算法,增加了解的可行性;陈楠等人[12]将替换了原算法的收敛因子改为非线性,基于双重改进,提出了一种改进鲸鱼优化算法;郭玉洁等[13]提出了一种离散鲸鱼算法,重新定义鲸鱼捕食并引入了随机搜索,成功应用于带容量约束的车辆路径问题。
综上所述,由于常见的钣金折弯工序自动规划需要由计算机辅助,建立一个包含钣金折弯件零件结构的特征库,所以得到的编排方案与所储存的零件特征库密切相关。因此,需要设计一种基于优化算法的易于操作和无需特征库的自动折弯工序规划系统,而当板材弯曲路径较多时,得到最佳方案需要长时间计算,利用鲸鱼优化算法可以很好地解决这个问题。本文作者首先对经典鲸鱼优化算法进行改进,重新定义鲸鱼的包围捕食和泡泡网捕食行为,使其能够处理离散问题,并引入局部搜索操作增强解的可行性,减少陷入局部最优解的概率。再使用离散鲸鱼算法对折弯工序问题进行计算,并与已知算法分析比较,得出合理和高效的折弯工序方案。
1 折弯工序规划问题
1.1 问题描述
钣金折弯一般通过折弯机在不同的模具组合得到不同规格弯曲件,有效的折弯工序需要排除折弯机机床或者上下模具与板材产生的干涉。同时,兼顾其他的筛选因素,如零件的精度约束或折弯规划的工时与成本等,因为它们对折弯编排结果的优劣也会产生一定的影响[14],然而对于折弯点较多的板件,难以考虑所有的元素和要求。假设一个拥有n道工序的折弯件,其可行解的路径数目会出现组合爆炸的情况[15](n!),同时还要考虑折弯工艺中操作的夹持位置等因素,这会导致因为搜索空间的巨大计算量而花费过多的时间。因此,需要设定不同的限制因素、规则得到合适的折弯工序方案。
1.2 目标函数设定
折弯工序规划是由多个工步组成的工序评估过程,对折弯工序进行规划时,需要为工序评估选择合适的适应函数,对折弯件进行折弯操作过程中,考虑无干涉碰撞的折弯工序,主要影响加工效率的因素有:
(1)操作工程中的板材掉头次数
在折弯工程中,由于板材在某个点的成型角度,需要在进行下一步操作时,调转折弯件的方向。设操作过程中的掉头次数为X1,相邻的2个折弯点假设为a、b,折弯段目为n;当a与b的差大于设定值时,操作板材掉头一次。
(2)翻面次数
同样地,因为成形角度与模具的干涉问题,板料在操作工程中需要进行翻面操作。设操作过程中的翻面次数为X2,对不同的折弯件设置翻面点,当工序进行到翻面点时翻面次数加1。
(3)模具更换数目
即操作过程中,不同的角度需要不同的模具,设操作过程中的模具更换次数为X3。
(4)板料操作位移
折弯操作中,每步折弯点的选择会影响需要操作的时间,设操作过程中的板料操作位移为X4,取相邻折弯点的工序顺序号的差依次相加为板料操作的位移。
综上,取折弯工序的目标函数为公式(1)所示:
(1)
其中:f表示适应值;k1~k4为各项加权。
图1所示为钣金件在折弯过程中的工序流程,经历了掉头、翻面等操作。流程为1-2-5-4-3,具体的操作步骤为:折弯工序的第二步进行掉头操作,第三步到第四步进行了翻面操作,而在位置4更换了模具。
图1 折弯流程
2 鲸鱼优化算法
鲸鱼优化算法是一种仿照自然界座头鲸围捕猎物行为的自然启发式算法。座头鲸鱼群在不断缩小的圆圈中搜寻猎物,当它们找到猎物时,会在猎物周围吹泡泡并沿着螺旋状路径朝水面游动进行捕食。鲸鱼捕食行为的目的是捕获猎物,一群鲸鱼在共同寻找猎物时,一定会存在某条鲸鱼先发现猎物的情况,这时其他鲸鱼一定会向这条发现猎物的鲸鱼方向游来争抢猎物。可以将上述捕食过程应用到鲸鱼优化算法(Whale Optimization Algorithm,WOA)求解问题的过程中,即一个解就可以用一个鲸鱼个体表示,若干个解就可以若干个鲸鱼个体表示。座头鲸通过包围猎物、发泡网、搜索捕食,如图2所示。因此,使用鲸鱼优化算法之前,需要对上述3类捕食行为进行建模,即用数学公式表达上述3类捕食行为。
图2 座头鲸发泡网捕食
2.1 包围和随机搜索猎物
座头鲸在觅食过程中,群体会对找到的猎物发起包围之势。鲸鱼初始觅食阶段由于不确定猎物的位置,此时种群的鲸鱼会根据当前的最优个体位置来更新自己的位置信息,即当前最优解为猎物初始位置,形成包围猎物的趋势。在座头鲸围捕猎物的同时,会有2种捕猎形式:(1)搜索捕食,此时鲸鱼个体会向种群中随机的鲸鱼个体靠近;(2)包围捕食,即根据猎物位置来变化。这2种方式的数学表达如下:
D=|CX*(t)-X(t)|
(2)
X(t+1)=X*(t)-AD
(3)
D=|CXrand-X|
(4)
X(t+1)=Xrand-AD
(5)
其中:t表示当前的迭代代数;X*(t)表示当前最优个体的位置坐标向量,并且每一次迭代过程中,如果有更好的解,那么它将会被替换掉;X是位置矢量,取值1×n;Xrand是从当前群体中随机选择的位置矢量;A、C为系数向量,其中A、C、a3个参数的定义如下:
A=2a·r-a
(6)
C=2·r
(7)
a=2-2t/Tmax
(8)
式中:r是一个均匀分布的随机矢量,其取值范围为[0,1]。A的值控制并影响着鲸鱼的运动,当|A|≥1时,鲸鱼能够独立地探索和搜索空间;当|A|<1时,其利用最佳解决方案进行开发探索。a是控制参数,其值受迭代次数影响,在2-0之间线性递减变化。
2.2 泡泡网攻击
气泡攻击是座头鲸特有的吐气泡围捕行为,这种机制主要包括在水平方位上缩小包围圈和在垂直方位上螺旋更新2个部分。为了还原这种围捕方式,设定公式如下:
X(t+1)=D′·ebl·cos(2πl)+X*(t)
(9)
D′=|X*-X(t)|
(10)
式中:l为取值范围在-1~1的随机数;b为常数。座头鲸在围捕猎物的同时不仅会收缩包围圈,也会以螺旋形式向猎物游走,因此各以50%的概率选择收缩圈,或是选择以螺旋形式向猎物游走,设定阈值为0.5,其数学模型如下:
(11)
3 离散鲸鱼优化算法
由于经典鲸鱼优化算法只能处理连续问题,而折弯工序为离散优化问题,所以不仅需要重新定义包围猎物、泡泡网攻击和随机搜寻猎物的概念,同时在经典鲸鱼优化算法中,鲸鱼个体通过不同维度的坐标形式表示,并通过相应捕获猎物的更新方式更新得到新的位置坐标,所以对于鲸鱼个体、搜索空间等概念也需要适当修改。
3.1 鲸鱼个体设置
文中使用一种元素排列的方式来解决多个折弯点的工序问题。一个鲸鱼个体可能包含多个元素,每一个元素代表一种进行的活动,而每个元素的索引值表示活动执行顺序。例如公式(12)中基于折弯点随机排列的初始解矩阵,式中Xij指的是第i条鲸鱼所访问的第j个折弯点,节点数即为折弯工序。例如式中折弯操作次序2-1-4-5-6-8-7-9-10就为离散鲸鱼算法的一个解,即一个鲸鱼个体。
(12)
3.2 鲸鱼位置更新离散化
原算法的解通过|A|的不同取值决定使用哪种围猎方式,更新鲸鱼个体之间的位置。由于鲸鱼个体表现形式发生了变化,则不能通过简单地修改坐标值达到目的。对于折弯工序问题,产生新解则需要通过改变举证点的排列顺序等新的方式实现,文中将鲸鱼优化算法的2种捕猎方式改为2种不同交叉操作,从已有的解中产生新的解以完成鲸鱼位置的更新。
假设当前最佳鲸鱼个体为X*,当前鲸鱼个体为Xj,则当前鲸鱼个体为Xj+1的更新公式如下:
(13)
式中:C1为对2个鲸鱼个体进行交叉操作的第一种交叉方式;C2为对2个鲸鱼个体进行交叉操作的第二种交叉方式,其中p表示随机数,取值为0~1。
3.2.1 第一种交叉方式
假设当前折弯件为7点折弯件,现为其编号为1—7,则在此基础下排列,有如下2个鲸鱼个体X1和X2:X1=1-2-7-5-4-6-3;X2=7-5-1-6-3-2-4。具体的位置更新步骤如下:
(1)首先在鲸鱼个体X1中随机选择一个位置上的元素e1,其次找到鲸鱼个体X2中p1位置上的元素e2,再回到鲸鱼个体X1上找到元素e2所在的位置p2,然后找到鲸鱼个体X2中p2位置上的元素e3。当最后选中的元素回到第一个选中的元素时停止,此时所有选中的元素为操作完选中的位置。
(2)用鲸鱼个体X1中选中的元素生成下一个位置上的鲸鱼个体X′1,并保证位置对应,然后将鲸鱼个体X2中剩余的元素放入X′1中;同样地,用鲸鱼个体X2中选中的元素生成下一个位置上的鲸鱼个体X′2,并保持位置对应,然后将鲸鱼个体X1中剩余的元素放入X′2中。图3所示为鲸鱼个体位置的更新过程。
图3 第一种交叉方式
3.2.2 第二种交叉方式
(1)首先在鲸鱼个体X1中随机选择一组元素e1,其次在鲸鱼个体X2中找到e1中所有元素的位置。
(2)保持鲸鱼个体X1和鲸鱼个体X2未选中的元素不变,按照选中元素的出现顺序,交换X1和X2中元素的位置,同时生成新的鲸鱼个体X′1和鲸鱼个体X′2。图4所示为鲸鱼个体位置的更新过程。
上述2种方式都会得到2个新的鲸鱼个体。为了在交叉完毕后获得更好的鲸鱼个体,完成鲸鱼个体之间的交叉操作后,会比较在实际位置更新中目标函数计算值,取函数值小的鲸鱼个体作为更新后的鲸鱼个体,以完成鲸鱼个体位置的更新。
图4 第二种交叉方式
3.3 局部搜索操作
为了提高鲸鱼个体解的质量,添加2个局部搜索操作以提高算法优化效率,下面分别介绍2种操作:逆转和插入。假设折弯件的工序次数为N,那么一个鲸鱼个体可以表示为
N=[R(1),R(2),...R(i),R(i+1),...,R(j-1),R(j),…,R(N-1),R(N)]
若选择的逆转位置为i和j(i≠j,1≤i,j≤N),那么逆转后的第i个和第j个位置之间所有元素的排序后的解可表示为
N=[R(1),R(2),...R(j),R(j-1),...,R(i+1),R(i),…,R(N-1),R(N)]
插入操作将在第一个位置上选择的元素插入第二个位置上选择的元素后面。同样地,设折弯件的工序次数为N,那么一个鲸鱼个体可以表示为
N=[R(1),...,R(i-1),R(i),R(i+1),...,R(j-1),R(j),R(j+1),...,R(N)]
若选择插入的位置为i和j(i≠j,1≤i,j≤N),那么将第i个位置上的元素插入第j个位置后的解可表示为
N=[R(1),...,R(i-1),R(i+1),...,R(j-1),R(j),R(i),R(j+1),...,R(N)]
同样以7道工序的折弯件为例,假设当前鲸鱼个体为1-2-7-5-6-4-3,选择逆转位置为i=3,j=6;插入位置i=1,j=3。图5所示为局部搜索操作后鲸鱼的位置变化。
图5 局部搜索操作
3.4 算法流程
运用离散鲸鱼优化算法求解折弯工序的流程如图6所示。
4 实验验证与分析
利用离散鲸鱼算法分别对7点、10点、13点折弯件进行工序规划。在运行前,对参数进行设置,其中定义鲸鱼初始种群大小为50,最大迭代次数为150,设置工件和模具的默认正方向,利用上面的离散鲸鱼算法规划工序,将最终结果按适应度f值大小排列并取2个方案,如表1所示。
表1 离散鲸鱼优化算法计算结果
同时为保证实验结果能够和其他算法求得的结果合理公平地进行对比,所有算法都设置相同的参数值,即将相关参数设定为:迭代次数Tmax=150,鲸鱼种群数目X=30,使用10个折弯点的工件进行仿真分析。其中,整个离散鲸鱼优化算法过程中适应度f的变化以及使用不同优化算法的适应度对比如图7所示,表2所示为适应度、折弯方案以及所消耗时间的综合对比。
图7 工序适应度变化及算法对比
表2 不同算法结果比较
通过上述计算结果可以发现:使用离散鲸鱼算法,对7点、10点、13点的不同折弯工件的折弯段数进行计算时,可以获得相应的工序方案;同时,对比不同算法处理相同数目的折弯件时,在迭代速度上,离散鲸鱼优化算法的迭代时间皆优于对比算法,在收敛性方面,离散鲸鱼优化算法能在较少次数内获得符合要求的折弯工序方案。综上所述,离散鲸鱼算法拥有更佳的全局寻优能力和较快的收敛特性。
5 结语
针对折弯工序的规划问题,文中使用近几年被广泛引用于组合优化问题的鲸鱼优化算法,并通过改进,使它能够处理离散问题。利用离散鲸鱼算法对折弯件进行工序规划,设计考虑模具更换次数、板料的掉头与翻面次数和板料加工中的相对操作量等影响因素的目标函数。在此基础上,设计了鲸鱼个体编码、鲸鱼位置交换的2种形式,并通过引入局部搜索操作提高鲸鱼个体解的质量,结合以求得优化的折弯工序。实验结果表明:离散鲸鱼优化算法能够在较短时间内获得最优折弯工序编排结果。