張 娜 趙 罘 龔堰玨 劉玲玲
(北京工商大學材料與機械工程學院 北京 100048)
矩形排樣問題屬于二維排樣,是NP完全問題,計算復雜度高。矩形排樣在現代工業的原材料切割中有著大量的應用,如玻璃切割、鋼板下料、紙張剪裁等,即使是排樣高度的微小降低,也能極大地節約原材料。
鑒于矩形排樣問題的復雜性和重要性,研究者們做了長期的研究,但尚無統一有效的求解算法。目前求解矩形排樣問題主要由兩部分相互配合實現:(1) 利用智能優化算法計算矩形排入順序,如遺傳算法、模擬退火算法、蟻群算法等;(2) 利用啟發式算法計算矩形排放位置,如IBL法、BLF法、最低水平線法[1]、剩余矩形法[2]等。Hopper等[3]分別用遺傳算法和模擬退火算法配合BLF法,計算出較優解;Liu等[4]采用分階段遺傳算子的遺傳算法配合改進的最低水平線法,能快速計算出解;周家智等[5]將遺傳算法和模擬退火算法組合并配合修改的最低水平線算法,取得較好的排樣結果;蔣興波等[6]提出的基于環形交叉和變異算子并引入模擬退火算法的自適應模擬退火遺傳算法配合IBL法,也能在較短時間得到解。但上述幾種算法未能同時平衡求解時間和排樣高度,存在排樣高度小的,卻求解時間長;求解時間短的,卻排樣高度大的情況。
本文在最低水平線法基礎上作改進,提出動態最低水平線法,能彌補最低水平線法易產生材料空余的缺陷,減少空余產生。采用具有較好全局搜索性的蟻群算法[7]計算矩形排入順序,并作適當改變使其更好適應排樣問題。最后,通過多組對比測試,驗證動態最低水平線法和蟻群算法相互配合的可行性。
矩形排樣問題是指在滿足約束條件的情況下,將已知寬高的n個矩形{R1,R2,…,Rn}按最優方式排入寬度固定為W但高度不限的板材內,使排樣高度盡可能小,從而使利用率盡可能大。在排樣過程中需同時滿足三個約束條件為:
(1)Ri必須完全在板材內部。
(2)Ri的邊必須與板材的邊平行。
(3) 任意兩個矩形Ri和Rj互不重疊。
設任意矩形Ri(i=1,2,…,n)都可用如下6個量描述:
(1)


(2)

minH(或maxF)
(3)

求解矩形排樣問題即是求解同時滿足約束條件和數學模型且H最小的(或F最大的)排樣序列。

Step 1初始化水平線集合ξ,其僅包含板材底邊ξ0。


Step 4重復Step 2至Step 3,直至矩形Ri被排入板材。
Step 5矩形Ri最終被放入的那條水平線記為ξx(0≤x≤n),在未排入的矩形中查找是否存在寬度小于等于更新后水平線ξx寬度的矩形。若不存在,則判斷更新后水平線ξx與相鄰水平線的關系符合圖1中的哪種情況,按相應情況進行合并,然后更新水平線集合;若存在,則不進行合并。

(a) hl

(a) hl

(e) hr不存在;hc>hl (f) hl不存在;hc>hr

(g) hr不存在;hc (i) hl
hl;hc>hr (j) hl>hr;hc>hl;hc>hr圖1 合并情況
Step 6取矩形Ri的上邊線為水平線ξi,并將ξi加入水平線集合,判斷新增的水平線ξi與相鄰水平線高度是否相等。若相等,則合并為一條水平線,然后更新水平線集合;若不相等,則不合并。
Step 7重復Step 2至Step 6,直至所有矩形都被排入板材。
圖2為本文方法的流程。

圖2 動態最低水平線法流程
圖3為同一矩形排樣序列[1,2,3,4,5,6,7]分別按最低水平線法和動態最低水平線法排放的結果。可以看出,動態最低水平線法解決了最低水平線法忽略的兩個問題,最大限度減少了板材空余,縮小了排樣高度。

(a) 最低水平線法 (b) 動態最低水平線法圖3 排放結果比較
蟻群算法是通過模擬自然界真實螞蟻行為而形成的算法,模擬了一群螞蟻尋找從巢穴到食物源最短路徑的過程。每只螞蟻根據啟發因素和路徑上信息素量選擇移動路徑,隨時間增長和路徑上信息素的積累,從而找到最短路徑。
蟻群算法主要用于旅行問題中計算最短移動路徑[8-9],本文將它用于矩形排樣問題中計算排樣高度H最小的矩形排入順序(即排樣序列),并為適應題目對算法做適當改變。
(1) 信息素更新。由于矩形排樣問題不需要計算路徑長短,因此由更新螞蟻從矩形Ri轉移到矩形Rj的路徑ij的信息素變為更新矩形Rj的信息素,有利于縮短計算時間。
每一次迭代的過程中做信息素局部更新,公式為:
τj=(1-ρ)τj+Δτp×tj
(4)
式中:τj表示矩形j的信息素;ρ為信息素揮發系數;Δτp為信息素局部更新量;tj為在排樣次序是同一個值時矩形j被螞蟻經過的次數。
每完成一次迭代后,依據本次迭代中排樣高度最小的排樣序列的各矩形次序做信息素全局更新,公式為:
τj=τj+(n-qj)×Δτa
(5)
式中:n為矩形總數;qj為矩形Rj在排樣序列中的次序;Δτa為信息素全局更新量。
(2) 矩形選擇。螞蟻選擇下一個排入的矩形的概率為:
(6)

矩形Rj的啟發因素ηj的計算公式為:
ηj=μ×Sj+(1-μ)×Vj
(7)
式中:Sj為矩形Rj面積;Vj為矩形Rj寬與高的比值;μ為比例系數,表示矩形面積或寬高比值在啟發因素中的占比,0≤μ≤1。
通過不斷的迭代、信息素的更新和動態最低水平線法計算的排樣高度的反饋,蟻群算法能計算出排樣高度H最小的矩形排入順序。具體流程如圖4所示。

圖4 蟻群算法配合動態最低水平線法的算法流程
求解和仿真用VB二次開發SolidWorks[10]實現,測試參數取μ=0.3、ρ=0.1、Δτp=1、Δτa=3、α=0.6、β=2、各矩形Ri的初始信息素τi=2(1≤i≤n)。
采用文獻[4]的實例,蟻群算法分別配合最低水平線法和動態最低水平線法,取迭代次數分別為20、50、100、150和200,螞蟻總數為15,進行測試。測試5次取平均,結果如表1所示。

表1 最低水平線法和動態最低水平線法板材利用率比較 %
隨著迭代次數的增加,雖然兩種方法的板材利用率都逐漸提高,但新提出的動態最低水平線法對所有的迭代次數都得到了比最低水平線法更高的板材利用率,證明動態最低水平線法效果良好且有效地彌補了最低水平線法的缺陷。
采用文獻[4]的實例,測試50次取平均,將結果與文獻[4]、文獻[5]的結果作比較,如表2所示。

表2 不同算法求解結果比較
本文算法求解的板材利用率平均值和最優值均高于其他算法,雖然時間比文獻[4]略高,但板材利用率也比文獻[4]約高了7百分點,能大大節約原材料,是同時平衡了利用率和求解時間的算法。圖5為本文算法在50次測試中求解出的最優排樣圖,左下角數字為矩形編號,其板材利用率為94.93%,高度為337。

圖5 本文算法求解文獻[4]實例的最優排樣圖
為進一步驗證本文算法的效果,采用文獻[3]的7類數據作比較。每類數據包含3個不同實例,矩形總數、板材固定寬度和板材高度如表3所示。

表3 實驗數據
對每個實例測試50次取平均,并與其他算法作比較,表4為平均排樣高度與板材高度之差,表5為平均求解時間。

表4 每類數據的平均排樣高度與板材高度之差

表5 每類數據的平均求解時間 s
本文算法求解的總體平均差值最小,因此總體求解效果最好,且本文算法幾乎對每類數據求解的平均差值都為最低值,僅C7類的差值不是最低值,但求解時間相比差值最低的文獻[3]算法2大大降低,僅是文獻[3]算法2時間的百分之0.5,證明算法效果好。
由表5可知,本文算法的平均求解時間對C1至C3類實驗數據是最短的,對C4至C7類實驗數據則不是,高于最短的文獻[6]。但綜合表4可知,本文算法計算的C4至C7類數據的差值一直小于文獻[6]。因此,本文算法最好地平衡了排樣高度和求解時間,是一種可行的求解算法,有利于節約原材料。
本文提出動態最低水平線法,配合蟻群算法求解矩形排樣問題。測試比較證明,本文算法在同等條件下板材利用率一直高于最低水平線法,彌補了最低水平線法的缺陷。而且本文算法求解效果好,相比其他算法的總體平均排樣高度差降低約25%至46%,大幅節約原材料,同時平衡了求解時間,能適應各種規模的矩形排樣,可行性好。