【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)
轉自:https://bbs.huaweicloud.com/blogs/175385
【摘要】 排樣問題(Nesting Problem)又稱為下料問題(Cutting and stock problems)或填充問題(Packing Problem),其目標是在材料切割過程中尋找一個較高的材料利用率。排樣問題屬于經典的NP-Hard問題,其時間復雜度隨著問題規模的增加迅速上升,難以在合理時間內精確求解大規模實例。算法簡介
?
排樣問題(Nesting Problem)又稱為下料問題(Cutting and stock problems)或填充問題(Packing Problem),其目標是在材料切割過程中尋找一個較高的材料利用率。排樣問題屬于經典的NP-Hard問題,其時間復雜度隨著問題規模的增加迅速上升,難以在合理時間內精確求解大規模實例。相較于矩形排樣問題,異形件排樣問題的突出特點是裁片的邊界輪廓復雜,計算過程中需要復雜的幾何運算,其算法復雜度將進一步上升,是學術界和工業界公認的難以求解的問題。因此在大多數情況下,不規則形狀排樣算法主要是以啟發式算法和智能搜索算法為主。
綜上所述,二維異形件排樣算法涉及到的關鍵技術主要有三個,如圖1所示,分別是高效率的幾何算法、排樣策略和優化算法。
圖1.?排樣算法關鍵技術
NFP求解算法
?
二維異形件排樣算法的一個相當重要的方面是計算幾何算法,其主要內容在于計算異形件之間的靠接位置、確定裁片與面料之間的包含關系、判斷是否重疊以及實現二維區域之間的交、并、差等布爾運算。
為尋找一種更簡便高效的靠接和重疊判斷計算方法,研究人員提供了臨界多邊形(No-Fit Polygon,NFP)的概念[1]。臨界多邊形NFP的簡要定義如下:給定兩個多邊形,其中一個固定,另一個多邊形圍繞固定的多邊形作不旋轉的剛體運動,并圍繞固定多邊形滑動,直到回到起點位置,在此過程中在運動多邊形上選取一點作為參考點,則參考點在環繞過程中形成的軌跡就稱為臨界多邊形,如圖2所示。
?
?
圖2.?臨界多邊形概念(圖片來源:參考文獻[2])
NFP求解還會遇到特殊場景,如圖3所示,圖a由于多邊形A存在凹槽,多邊形B可以在凹槽內部移動,此時將形成空腔NFP;圖b由于多邊形B恰好可以沿著多邊形A凹槽移動,此時NFP將退化成線;圖c多邊形B恰好可以放在多邊形B凹槽內,此時NFP將退化成點。NFP求解算法同時要考慮這些特殊情景。
?
圖3.?特殊NFP場景:a.?空腔NFP;b. NFP退化成線;c. NFP退化成點(圖片來源:參考文獻[3])
由于臨界多邊形的重要性質,NFP目前已成為二維不規則形狀排樣算法的基礎性幾何工具。如何快速準確的計算出NFP是異形件排樣問題的關鍵技術。學界目前的求解算法主要有4種,分別是凸化分割法、移動碰撞法[4]、明科夫斯基矢量和法[5]以及軌跡線法[2]。簡要介紹如下:
(1)凸化分割法。凸化分割法基本思路是將凹多邊形分割為凸多邊形,然后求得凸多邊形之間的NFP,最后將凸多邊形的NFP進行合并得到最終的NFP。凹多邊形凸化分割的算法有多種,例如三角劃分、凹點劃分、條帶分割、角平分線分割等。設多邊形邊數為n,凹點個數為r,目前最少次數分割算法時間復雜度不超過O(n+r2min(r2,n)),?當簡單多邊形的凹點個數達到n/2時,該分割算法的復雜度已達到O(n3)。如果再加上求解凸多邊形的NFP和求解多邊形并集的布爾運算,該方法的時間復雜度將進一步增加。此外,該方法可以得到內部空腔NFP,但是對于NFP退化場景,標準多邊形求并運算無法得到。
(2)移動碰撞法。移動碰撞法的基本步驟如下:如圖4所示,首先根據多邊形A和B當前時刻的靠接狀態,得到B下一步的移動方向,在該移動方向上,計算出A和B之間的最小碰撞距離,從而得到移動距離,根據移動方向和移動距離,將B移動到新的位置,然后重復以上過程,直至繞完一圈,回到初始位置。該算法比較容易實現,但是該算法總的時間復雜度較高,達到(O(m+n)mn)。此外,該算法可以處理空腔NFP和退化NFP等特殊場景。
?
圖4.?移動碰撞法計算NFP(圖片來源:參考文獻[2])
(3)明科夫斯基矢量和法。兩個凸多邊形之間的NFP等價于計算兩者的明科夫斯基矢量和,其算法復雜度為O(m+n)。其基本求解思路如下:如圖5所示,首先多邊形A(固定多邊形)按照逆時針排列,多邊形B(移動多邊形)按照順時針排列。然后,將多邊形A和多邊形B的所有邊矢量置于原點(0,0),接著,對所有邊矢量按與起始矢量的夾角從小到大排序,最后將排序后的邊矢量進行串聯累加,即可得到A和B的臨界多邊形NFPAB。然而,當兩個多邊形中有一個為凹多邊形時,凹邊的遍歷次序將會被打亂,從而不能合成一個臨界多邊形。為解決此問題,研究人員引入了斜率圖的概念來解決此問題[5,6]。然而,該方法實現復雜,時間復雜度也比較高,最壞情況下的時間復雜度為O(m2n2log(mn))。此外,該算法也可以處理空腔NFP和退化NFP等特殊場景。
圖5.?明科夫斯基矢量和法求解凸多邊形NFP(圖片來源:參考文獻[2])
(4)軌跡線法。軌跡線法的基本原理是:如圖6所示,首先求得多邊形每個頂點相對于另一個多邊形的所有軌跡線,然后從軌跡線集合中得到外圍多邊形和內部順時針環,即為臨界多邊形。該算法從NFP的本身定義出發,算法過程簡單,平均時間復雜度為O(mn),并且能夠處理內部空腔NFP和退化NFP等特殊情景。
?
圖6.?軌跡線法NFP算法原理圖(圖片來源:參考文獻[2])
總結
NFP是二維異形件排樣算法的基礎性幾何工具,實現不好將嚴重影響排樣算法性能。作者曾采用凸化分解法求解100個多邊形的NFP,由于多邊形平均點數較大(平均82個),單純計算NFP的時間開銷就達到半小時。因此,非常有必要對各種NFP求解算法進行比較分析,選擇一種高效的NFP求解算法。表1總結了4種NFP算法的時間復雜度,以及是否可以處理特殊情景。
文獻[2, 4, 5]是各種NFP求解算法的巔峰之作,建議初學者先從移動碰撞法[4]入手學習(該文實現細節講解清楚,其余文章則較少),然后再考慮實現其他方法。
?
表1. 4種NFP求解算法對比
| ? | 時間復雜度 | 能否處理內部空腔 | 能否處理退化場景 |
| 凸化分解法 | >O(m3+n3) | Yes | No |
| 移動碰撞法 | O((m+n)mn) | Yes | Yes |
| 明科夫斯基矢量和法 | O(m2n2log(mn)) | Yes | Yes |
| 軌跡線法 | O(mn) | Yes | Yes |
??更多有關排版算法的介紹將在后續博客中更新,歡迎大家關注。
參考文獻
?
[1] Adamowicz M, Albano A. Nesting two-dimensional shapes in rectangular modules[J]. Computer-Aided Design, 1976, 8(1): 27-33.
[2]?Huyao L, Yuanjun H, Bennell J A. The irregular nesting problem: a new approach for nofit polygon calculation[J]. Journal of the Operational Research Society, 2007, 58(9): 1235-1245.
[3] Bennell J A, Oliveira J F. The geometry of nesting problems: A tutorial[J]. European journal of operational research, 2008, 184(2): 397-415.
[4]?Burke E K, Hellier R S R, Kendall G, et al. Complete and robust no-fit polygon generation for the irregular stock cutting problem[J]. European Journal of Operational Research, 2007, 179(1): 27-49.
[5]?Bennell J A, Song X. A comprehensive and robust procedure for obtaining the nofit polygon using Minkowski sums[J]. Computers & Operations Research, 2008, 35(1): 267-281.
[6] Ghosh P K. A unified computational framework for Minkowski operations[J]. Computers & Graphics, 1993, 17(4): 357-378.
?
登錄后可下載附件,請登錄或者注冊
【版權聲明】本文為華為云社區用戶原創內容,轉載時必須標注文章的來源(華為云社區),文章鏈接,文章作者等基本信息,否則作者和本社區有權追究責任。如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:huaweicloud.bbs@huawei.com進行舉報,并提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消灭黑市和高价!知网知网开放个人查重:1
- 下一篇: 手机号与App一次性解绑!中国信通院:“