趙云濤,董一帆,李維剛
(武漢科技大學(xué)信息科學(xué)與工程學(xué)院,湖北武漢 430081)
鈑金件是一種冷加工工藝,因?yàn)榱己玫男阅芎鸵咨a(chǎn)的特性廣泛應(yīng)用于在電器、汽車工業(yè)和通信等領(lǐng)域當(dāng)中。折彎工序作為鈑金加工工藝的關(guān)鍵一環(huán),如何規(guī)劃鈑金件的折彎順序,與零件的成品率、精度以及生產(chǎn)效率和加工成本有著密切關(guān)聯(lián)。目前折彎工序編排大多由專業(yè)的設(shè)計(jì)人員設(shè)計(jì),得出一個(gè)符合需求可行的工序規(guī)劃需要大量的試驗(yàn)操作,并作出相應(yīng)調(diào)整,這往往需要大量時(shí)間和人力,且效率通常都不太高。因此如何降低時(shí)間成本,提高效率,解決鈑金件的自動(dòng)工序編排問題是一個(gè)亟需解決的問題。
國(guó)內(nèi)外對(duì)折彎工序的自動(dòng)規(guī)劃問題進(jìn)行了大量的研究。THANAPANDI等[1]使用遺傳算法對(duì)折彎工序進(jìn)行預(yù)處理,減少了解的數(shù)量,考慮了板料的模具和干涉問題。DUFLOU 等[2]詳細(xì)闡述了折彎工序的工藝流程。KANNAN、 SHUNMUGAM[3]基于遺傳算法得到了折彎工序的優(yōu)化解。FARSI、 AREZOO[4]為了解決工序規(guī)劃組合問題效率,運(yùn)用了模糊集理論和分類系統(tǒng)。王飛、游有鵬[5]針對(duì)折彎工序的自動(dòng)規(guī)劃問題,開發(fā)了一種獨(dú)立于工件特征的編排系統(tǒng),基于遺傳算法添加約束條件,得到全局最優(yōu)解。柳守寬等[6]改進(jìn)了遺傳算法,優(yōu)化了最優(yōu)解的考慮條件,提高了解的質(zhì)量。近年來,學(xué)者多用鯨魚優(yōu)化算法處理多種連續(xù)優(yōu)化問題,鯨魚優(yōu)化算法是MIRJALILI和LEWIS[7]在2016年提出的一種新型元啟發(fā)算法,參考了自然界座頭鯨的捕獵方式。它成功應(yīng)用于各種復(fù)雜的離散優(yōu)化問題,如資源調(diào)度問題[8]、選址與路徑規(guī)劃[9]和神經(jīng)網(wǎng)絡(luò)訓(xùn)練[10]等。在算法改進(jìn)和應(yīng)用方面,王迪、金輝[11]提出了貪婪鯨魚優(yōu)化算法,在鯨魚搜索完獵物后引入了貪婪算法,增加了解的可行性;陳楠等人[12]將替換了原算法的收斂因子改為非線性,基于雙重改進(jìn),提出了一種改進(jìn)鯨魚優(yōu)化算法;郭玉潔等[13]提出了一種離散鯨魚算法,重新定義鯨魚捕食并引入了隨機(jī)搜索,成功應(yīng)用于帶容量約束的車輛路徑問題。
綜上所述,由于常見的鈑金折彎工序自動(dòng)規(guī)劃需要由計(jì)算機(jī)輔助,建立一個(gè)包含鈑金折彎件零件結(jié)構(gòu)的特征庫(kù),所以得到的編排方案與所儲(chǔ)存的零件特征庫(kù)密切相關(guān)。因此,需要設(shè)計(jì)一種基于優(yōu)化算法的易于操作和無需特征庫(kù)的自動(dòng)折彎工序規(guī)劃系統(tǒng),而當(dāng)板材彎曲路徑較多時(shí),得到最佳方案需要長(zhǎng)時(shí)間計(jì)算,利用鯨魚優(yōu)化算法可以很好地解決這個(gè)問題。本文作者首先對(duì)經(jīng)典鯨魚優(yōu)化算法進(jìn)行改進(jìn),重新定義鯨魚的包圍捕食和泡泡網(wǎng)捕食行為,使其能夠處理離散問題,并引入局部搜索操作增強(qiáng)解的可行性,減少陷入局部最優(yōu)解的概率。再使用離散鯨魚算法對(duì)折彎工序問題進(jìn)行計(jì)算,并與已知算法分析比較,得出合理和高效的折彎工序方案。
鈑金折彎一般通過折彎?rùn)C(jī)在不同的模具組合得到不同規(guī)格彎曲件,有效的折彎工序需要排除折彎?rùn)C(jī)機(jī)床或者上下模具與板材產(chǎn)生的干涉。同時(shí),兼顧其他的篩選因素,如零件的精度約束或折彎規(guī)劃的工時(shí)與成本等,因?yàn)樗鼈儗?duì)折彎編排結(jié)果的優(yōu)劣也會(huì)產(chǎn)生一定的影響[14],然而對(duì)于折彎點(diǎn)較多的板件,難以考慮所有的元素和要求。假設(shè)一個(gè)擁有n道工序的折彎件,其可行解的路徑數(shù)目會(huì)出現(xiàn)組合爆炸的情況[15](n!),同時(shí)還要考慮折彎工藝中操作的夾持位置等因素,這會(huì)導(dǎo)致因?yàn)樗阉骺臻g的巨大計(jì)算量而花費(fèi)過多的時(shí)間。因此,需要設(shè)定不同的限制因素、規(guī)則得到合適的折彎工序方案。
折彎工序規(guī)劃是由多個(gè)工步組成的工序評(píng)估過程,對(duì)折彎工序進(jìn)行規(guī)劃時(shí),需要為工序評(píng)估選擇合適的適應(yīng)函數(shù),對(duì)折彎件進(jìn)行折彎操作過程中,考慮無干涉碰撞的折彎工序,主要影響加工效率的因素有:
(1)操作工程中的板材掉頭次數(shù)
在折彎工程中,由于板材在某個(gè)點(diǎn)的成型角度,需要在進(jìn)行下一步操作時(shí),調(diào)轉(zhuǎn)折彎件的方向。設(shè)操作過程中的掉頭次數(shù)為X1,相鄰的2個(gè)折彎點(diǎn)假設(shè)為a、b,折彎段目為n;當(dāng)a與b的差大于設(shè)定值時(shí),操作板材掉頭一次。
(2)翻面次數(shù)
同樣地,因?yàn)槌尚谓嵌扰c模具的干涉問題,板料在操作工程中需要進(jìn)行翻面操作。設(shè)操作過程中的翻面次數(shù)為X2,對(duì)不同的折彎件設(shè)置翻面點(diǎn),當(dāng)工序進(jìn)行到翻面點(diǎn)時(shí)翻面次數(shù)加1。
(3)模具更換數(shù)目
即操作過程中,不同的角度需要不同的模具,設(shè)操作過程中的模具更換次數(shù)為X3。
(4)板料操作位移
折彎操作中,每步折彎點(diǎn)的選擇會(huì)影響需要操作的時(shí)間,設(shè)操作過程中的板料操作位移為X4,取相鄰折彎點(diǎn)的工序順序號(hào)的差依次相加為板料操作的位移。
綜上,取折彎工序的目標(biāo)函數(shù)為公式(1)所示:
(1)
其中:f表示適應(yīng)值;k1~k4為各項(xiàng)加權(quán)。
圖1所示為鈑金件在折彎過程中的工序流程,經(jīng)歷了掉頭、翻面等操作。流程為1-2-5-4-3,具體的操作步驟為:折彎工序的第二步進(jìn)行掉頭操作,第三步到第四步進(jìn)行了翻面操作,而在位置4更換了模具。
圖1 折彎流程
鯨魚優(yōu)化算法是一種仿照自然界座頭鯨圍捕獵物行為的自然啟發(fā)式算法。座頭鯨魚群在不斷縮小的圓圈中搜尋獵物,當(dāng)它們找到獵物時(shí),會(huì)在獵物周圍吹泡泡并沿著螺旋狀路徑朝水面游動(dòng)進(jìn)行捕食。鯨魚捕食行為的目的是捕獲獵物,一群鯨魚在共同尋找獵物時(shí),一定會(huì)存在某條鯨魚先發(fā)現(xiàn)獵物的情況,這時(shí)其他鯨魚一定會(huì)向這條發(fā)現(xiàn)獵物的鯨魚方向游來爭(zhēng)搶獵物??梢詫⑸鲜霾妒尺^程應(yīng)用到鯨魚優(yōu)化算法(Whale Optimization Algorithm,WOA)求解問題的過程中,即一個(gè)解就可以用一個(gè)鯨魚個(gè)體表示,若干個(gè)解就可以若干個(gè)鯨魚個(gè)體表示。座頭鯨通過包圍獵物、發(fā)泡網(wǎng)、搜索捕食,如圖2所示。因此,使用鯨魚優(yōu)化算法之前,需要對(duì)上述3類捕食行為進(jìn)行建模,即用數(shù)學(xué)公式表達(dá)上述3類捕食行為。
圖2 座頭鯨發(fā)泡網(wǎng)捕食
座頭鯨在覓食過程中,群體會(huì)對(duì)找到的獵物發(fā)起包圍之勢(shì)。鯨魚初始覓食階段由于不確定獵物的位置,此時(shí)種群的鯨魚會(huì)根據(jù)當(dāng)前的最優(yōu)個(gè)體位置來更新自己的位置信息,即當(dāng)前最優(yōu)解為獵物初始位置,形成包圍獵物的趨勢(shì)。在座頭鯨圍捕獵物的同時(shí),會(huì)有2種捕獵形式:(1)搜索捕食,此時(shí)鯨魚個(gè)體會(huì)向種群中隨機(jī)的鯨魚個(gè)體靠近;(2)包圍捕食,即根據(jù)獵物位置來變化。這2種方式的數(shù)學(xué)表達(dá)如下:
D=|CX*(t)-X(t)|
(2)
X(t+1)=X*(t)-AD
(3)
D=|CXrand-X|
(4)
X(t+1)=Xrand-AD
(5)
其中:t表示當(dāng)前的迭代代數(shù);X*(t)表示當(dāng)前最優(yōu)個(gè)體的位置坐標(biāo)向量,并且每一次迭代過程中,如果有更好的解,那么它將會(huì)被替換掉;X是位置矢量,取值1×n;Xrand是從當(dāng)前群體中隨機(jī)選擇的位置矢量;A、C為系數(shù)向量,其中A、C、a3個(gè)參數(shù)的定義如下:
A=2a·r-a
(6)
C=2·r
(7)
a=2-2t/Tmax
(8)
式中:r是一個(gè)均勻分布的隨機(jī)矢量,其取值范圍為[0,1]。A的值控制并影響著鯨魚的運(yùn)動(dòng),當(dāng)|A|≥1時(shí),鯨魚能夠獨(dú)立地探索和搜索空間;當(dāng)|A|<1時(shí),其利用最佳解決方案進(jìn)行開發(fā)探索。a是控制參數(shù),其值受迭代次數(shù)影響,在2-0之間線性遞減變化。
氣泡攻擊是座頭鯨特有的吐氣泡圍捕行為,這種機(jī)制主要包括在水平方位上縮小包圍圈和在垂直方位上螺旋更新2個(gè)部分。為了還原這種圍捕方式,設(shè)定公式如下:
X(t+1)=D′·ebl·cos(2πl(wèi))+X*(t)
(9)
D′=|X*-X(t)|
(10)
式中:l為取值范圍在-1~1的隨機(jī)數(shù);b為常數(shù)。座頭鯨在圍捕獵物的同時(shí)不僅會(huì)收縮包圍圈,也會(huì)以螺旋形式向獵物游走,因此各以50%的概率選擇收縮圈,或是選擇以螺旋形式向獵物游走,設(shè)定閾值為0.5,其數(shù)學(xué)模型如下:
(11)
由于經(jīng)典鯨魚優(yōu)化算法只能處理連續(xù)問題,而折彎工序?yàn)殡x散優(yōu)化問題,所以不僅需要重新定義包圍獵物、泡泡網(wǎng)攻擊和隨機(jī)搜尋獵物的概念,同時(shí)在經(jīng)典鯨魚優(yōu)化算法中,鯨魚個(gè)體通過不同維度的坐標(biāo)形式表示,并通過相應(yīng)捕獲獵物的更新方式更新得到新的位置坐標(biāo),所以對(duì)于鯨魚個(gè)體、搜索空間等概念也需要適當(dāng)修改。
文中使用一種元素排列的方式來解決多個(gè)折彎點(diǎn)的工序問題。一個(gè)鯨魚個(gè)體可能包含多個(gè)元素,每一個(gè)元素代表一種進(jìn)行的活動(dòng),而每個(gè)元素的索引值表示活動(dòng)執(zhí)行順序。例如公式(12)中基于折彎點(diǎn)隨機(jī)排列的初始解矩陣,式中Xij指的是第i條鯨魚所訪問的第j個(gè)折彎點(diǎn),節(jié)點(diǎn)數(shù)即為折彎工序。例如式中折彎操作次序2-1-4-5-6-8-7-9-10就為離散鯨魚算法的一個(gè)解,即一個(gè)鯨魚個(gè)體。
(12)
原算法的解通過|A|的不同取值決定使用哪種圍獵方式,更新鯨魚個(gè)體之間的位置。由于鯨魚個(gè)體表現(xiàn)形式發(fā)生了變化,則不能通過簡(jiǎn)單地修改坐標(biāo)值達(dá)到目的。對(duì)于折彎工序問題,產(chǎn)生新解則需要通過改變舉證點(diǎn)的排列順序等新的方式實(shí)現(xiàn),文中將鯨魚優(yōu)化算法的2種捕獵方式改為2種不同交叉操作,從已有的解中產(chǎn)生新的解以完成鯨魚位置的更新。
假設(shè)當(dāng)前最佳鯨魚個(gè)體為X*,當(dāng)前鯨魚個(gè)體為Xj,則當(dāng)前鯨魚個(gè)體為Xj+1的更新公式如下:
(13)
式中:C1為對(duì)2個(gè)鯨魚個(gè)體進(jìn)行交叉操作的第一種交叉方式;C2為對(duì)2個(gè)鯨魚個(gè)體進(jìn)行交叉操作的第二種交叉方式,其中p表示隨機(jī)數(shù),取值為0~1。
3.2.1 第一種交叉方式
假設(shè)當(dāng)前折彎件為7點(diǎn)折彎件,現(xiàn)為其編號(hào)為1—7,則在此基礎(chǔ)下排列,有如下2個(gè)鯨魚個(gè)體X1和X2:X1=1-2-7-5-4-6-3;X2=7-5-1-6-3-2-4。具體的位置更新步驟如下:
(1)首先在鯨魚個(gè)體X1中隨機(jī)選擇一個(gè)位置上的元素e1,其次找到鯨魚個(gè)體X2中p1位置上的元素e2,再回到鯨魚個(gè)體X1上找到元素e2所在的位置p2,然后找到鯨魚個(gè)體X2中p2位置上的元素e3。當(dāng)最后選中的元素回到第一個(gè)選中的元素時(shí)停止,此時(shí)所有選中的元素為操作完選中的位置。
(2)用鯨魚個(gè)體X1中選中的元素生成下一個(gè)位置上的鯨魚個(gè)體X′1,并保證位置對(duì)應(yīng),然后將鯨魚個(gè)體X2中剩余的元素放入X′1中;同樣地,用鯨魚個(gè)體X2中選中的元素生成下一個(gè)位置上的鯨魚個(gè)體X′2,并保持位置對(duì)應(yīng),然后將鯨魚個(gè)體X1中剩余的元素放入X′2中。圖3所示為鯨魚個(gè)體位置的更新過程。
圖3 第一種交叉方式
3.2.2 第二種交叉方式
(1)首先在鯨魚個(gè)體X1中隨機(jī)選擇一組元素e1,其次在鯨魚個(gè)體X2中找到e1中所有元素的位置。
(2)保持鯨魚個(gè)體X1和鯨魚個(gè)體X2未選中的元素不變,按照選中元素的出現(xiàn)順序,交換X1和X2中元素的位置,同時(shí)生成新的鯨魚個(gè)體X′1和鯨魚個(gè)體X′2。圖4所示為鯨魚個(gè)體位置的更新過程。
上述2種方式都會(huì)得到2個(gè)新的鯨魚個(gè)體。為了在交叉完畢后獲得更好的鯨魚個(gè)體,完成鯨魚個(gè)體之間的交叉操作后,會(huì)比較在實(shí)際位置更新中目標(biāo)函數(shù)計(jì)算值,取函數(shù)值小的鯨魚個(gè)體作為更新后的鯨魚個(gè)體,以完成鯨魚個(gè)體位置的更新。
圖4 第二種交叉方式
為了提高鯨魚個(gè)體解的質(zhì)量,添加2個(gè)局部搜索操作以提高算法優(yōu)化效率,下面分別介紹2種操作:逆轉(zhuǎn)和插入。假設(shè)折彎件的工序次數(shù)為N,那么一個(gè)鯨魚個(gè)體可以表示為
N=[R(1),R(2),...R(i),R(i+1),...,R(j-1),R(j),…,R(N-1),R(N)]
若選擇的逆轉(zhuǎn)位置為i和j(i≠j,1≤i,j≤N),那么逆轉(zhuǎn)后的第i個(gè)和第j個(gè)位置之間所有元素的排序后的解可表示為
N=[R(1),R(2),...R(j),R(j-1),...,R(i+1),R(i),…,R(N-1),R(N)]
插入操作將在第一個(gè)位置上選擇的元素插入第二個(gè)位置上選擇的元素后面。同樣地,設(shè)折彎件的工序次數(shù)為N,那么一個(gè)鯨魚個(gè)體可以表示為
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個(gè)位置上的元素插入第j個(gè)位置后的解可表示為
N=[R(1),...,R(i-1),R(i+1),...,R(j-1),R(j),R(i),R(j+1),...,R(N)]
同樣以7道工序的折彎件為例,假設(shè)當(dāng)前鯨魚個(gè)體為1-2-7-5-6-4-3,選擇逆轉(zhuǎn)位置為i=3,j=6;插入位置i=1,j=3。圖5所示為局部搜索操作后鯨魚的位置變化。
圖5 局部搜索操作
運(yùn)用離散鯨魚優(yōu)化算法求解折彎工序的流程如圖6所示。
利用離散鯨魚算法分別對(duì)7點(diǎn)、10點(diǎn)、13點(diǎn)折彎件進(jìn)行工序規(guī)劃。在運(yùn)行前,對(duì)參數(shù)進(jìn)行設(shè)置,其中定義鯨魚初始種群大小為50,最大迭代次數(shù)為150,設(shè)置工件和模具的默認(rèn)正方向,利用上面的離散鯨魚算法規(guī)劃工序,將最終結(jié)果按適應(yīng)度f值大小排列并取2個(gè)方案,如表1所示。
表1 離散鯨魚優(yōu)化算法計(jì)算結(jié)果
同時(shí)為保證實(shí)驗(yàn)結(jié)果能夠和其他算法求得的結(jié)果合理公平地進(jìn)行對(duì)比,所有算法都設(shè)置相同的參數(shù)值,即將相關(guān)參數(shù)設(shè)定為:迭代次數(shù)Tmax=150,鯨魚種群數(shù)目X=30,使用10個(gè)折彎點(diǎn)的工件進(jìn)行仿真分析。其中,整個(gè)離散鯨魚優(yōu)化算法過程中適應(yīng)度f的變化以及使用不同優(yōu)化算法的適應(yīng)度對(duì)比如圖7所示,表2所示為適應(yīng)度、折彎方案以及所消耗時(shí)間的綜合對(duì)比。
圖7 工序適應(yīng)度變化及算法對(duì)比
表2 不同算法結(jié)果比較
通過上述計(jì)算結(jié)果可以發(fā)現(xiàn):使用離散鯨魚算法,對(duì)7點(diǎn)、10點(diǎn)、13點(diǎn)的不同折彎工件的折彎段數(shù)進(jìn)行計(jì)算時(shí),可以獲得相應(yīng)的工序方案;同時(shí),對(duì)比不同算法處理相同數(shù)目的折彎件時(shí),在迭代速度上,離散鯨魚優(yōu)化算法的迭代時(shí)間皆優(yōu)于對(duì)比算法,在收斂性方面,離散鯨魚優(yōu)化算法能在較少次數(shù)內(nèi)獲得符合要求的折彎工序方案。綜上所述,離散鯨魚算法擁有更佳的全局尋優(yōu)能力和較快的收斂特性。
針對(duì)折彎工序的規(guī)劃問題,文中使用近幾年被廣泛引用于組合優(yōu)化問題的鯨魚優(yōu)化算法,并通過改進(jìn),使它能夠處理離散問題。利用離散鯨魚算法對(duì)折彎件進(jìn)行工序規(guī)劃,設(shè)計(jì)考慮模具更換次數(shù)、板料的掉頭與翻面次數(shù)和板料加工中的相對(duì)操作量等影響因素的目標(biāo)函數(shù)。在此基礎(chǔ)上,設(shè)計(jì)了鯨魚個(gè)體編碼、鯨魚位置交換的2種形式,并通過引入局部搜索操作提高鯨魚個(gè)體解的質(zhì)量,結(jié)合以求得優(yōu)化的折彎工序。實(shí)驗(yàn)結(jié)果表明:離散鯨魚優(yōu)化算法能夠在較短時(shí)間內(nèi)獲得最優(yōu)折彎工序編排結(jié)果。