林富有,彭 程,王成林
(1.大連中遠海運重工有限公司,遼寧大連 116113;2.大連電子學校,遼寧大連 116101)
船舶建造是個復雜的工程,為了能夠滿足防火、隔熱、隔聲的規(guī)范要求,需要在甲板上敷設(shè)甲板敷料,然后在甲板敷料上鋪設(shè)PVC地板。PVC地板通常規(guī)格固定,顏色不同,一般按照20 m×2 m進行采購,并根據(jù)艙室的尺寸進行裁剪敷設(shè)。以往是根據(jù)采購的母材規(guī)格型號,通過CAD人工進行PVC排版的,這種工作方式需要耗費大量的時間,且材料利用率不高,直接影響了生產(chǎn)成本。針對存在的這些問題,筆者開發(fā)了自動排版程序來提高工作效率和控制成本。
CAD的二次開發(fā)工具有很多種,包括自帶的Visual Lisp、ActiveX、ObjectARX。Visual Lisp語言是一種嵌入AutoCAD內(nèi)部的編程語言,其主要特點是簡單、上手較快,但是綜合處理能力差,不能協(xié)同工作,沒有可視化界面,使用起來不直觀。與Lisp相比,ActiveX代碼可讀性能佳,綜合處理能力也很強。ObjectARX提供了C++、C#和VB.NET的程序開發(fā)接口,采用面向?qū)ο蟮木幊谭椒?,開發(fā)效率較高。本文采用C#進行開發(fā)。
遺傳算法是模擬生物在自然環(huán)境中的遺傳和進化過程而形成的一種自適應(yīng)全局優(yōu)化概率搜索算法,最早由美國密執(zhí)安大學的Holland教授[1]提出,起源于60年代對自然和人工適應(yīng)系統(tǒng)的研究,在求解較為復雜的組合優(yōu)化問題時,相對一些常規(guī)的優(yōu)化算法,通常能夠較快地獲得較好的優(yōu)化結(jié)果。遺傳算法已被人們廣泛地應(yīng)用于組合優(yōu)化、機器學習、信號處理、自適應(yīng)控制和人工生命等領(lǐng)域[2-4]。
遺傳算法通過初始化種群,隨機產(chǎn)生個體作為初始化種群,將多段線和角度作為染色體編碼,{[P1,A1],[P2,A2],······[Pn,An]},其中P為段線,A為角度,由[Pn,An]個體構(gòu)成種群。計算種群每個個體的適應(yīng)度,根據(jù)每個個體的適應(yīng)度和相關(guān)規(guī)則,從第n代群體中選擇出部分優(yōu)良的個體遺傳到下一代,將群體內(nèi)的每個個體隨機搭配,交換他們之間的部分染色體(本文中交換角度A的值)。變異的過程是對群體中每個個體的部分基因進行改變,本文直接改變其角度。如果條件不成立,繼續(xù)執(zhí)行上述過程;反之則輸出最優(yōu)解,并終止計算。過程如圖1所示[5-11]。
圖1 遺傳算法計算流程
軟件的基本流程如圖2所示:首先根據(jù)實際需求設(shè)置好排列方式、色卡和房間號等信息,選擇布置PVC地板的房間區(qū)域,這些區(qū)域由閉合的多段線構(gòu)成;而后對選擇的多段線進行分割,產(chǎn)生滿足母材規(guī)格的多段線,輸出包括色卡、房間號和坐標的零件信息;最后根據(jù)這些零件信息進行套料,并將套料結(jié)果輸出成為可供施工的工作圖。
圖2 軟件操作流程
軟件界面調(diào)出方式通過Registry Key寫入到注冊表中,在CAD中輸入PBT命令會自動彈出軟件操作界面,如圖3所示。界面包括排列方式的選擇、房間號和色卡的選擇。選擇按鈕的功能是選擇艙室區(qū)域的多段線,選擇完成后,確定排列,對選擇的區(qū)域進行分割;套料按鈕的功能是生成套料信息;套料圖按鈕功能是在CAD中繪制套料圖。
圖3 軟件操作界面
選擇區(qū)域之前要確定排列方式,排列方式分為自動、從左到右、從右到左、從上到下和從下到上等不同形式,可根據(jù)情況進行選擇。在沒有任何要求的情況下,選擇自動排列。自動排列的計算過程為:1)遍歷多段線中的所有的邊,確定最長的邊是垂直方向還是水平方向;2)如果是垂直方向,則判斷這條邊是在最左側(cè)還是在最右側(cè),如果在最左側(cè)則按照從左到右的方式進行排列,反之按照從右到左的方式排列;3)水平方向的判斷與垂直方向的判斷類似。有些特殊情況需要指定排列方向,例如保持板縫方向的一致性,則直接選擇固定的排列方式進行排列。
排列方向選擇完成后,需要根據(jù)區(qū)域選擇房間號和色卡,房間號最終會被標記在套料圖中,方便施工時查找;色卡則用來區(qū)分母材,在套料的時候使用。房間號和色卡可以自動選擇,也可通過點擊按鈕進行手動選擇。自動選擇時,房間號從可選擇范圍內(nèi)的3位數(shù)字進行提??;色卡查找選擇范圍內(nèi)包含色卡的字符串,然后截取“色卡:”后的字符串。部分區(qū)域通過3位數(shù)字區(qū)分不出房間號或未寫房間號,則需要手動選擇房間號。
通過SelectionSet選擇集選擇CAD中的對象,查找多段線,將選中的多段線添加到list列表中。遍歷列表中的值,查找區(qū)域中的DBText對象,找到房間號和色卡。在CAD中繪制板縫,將選擇的區(qū)域按照外形進行分割,分割長度按照PVC地板的規(guī)格2 m進行分割,并添加標注尺寸。最后,輸出帶有坐標的零件表,如表1所示。
表1 零件信息表
將帶有色卡和房間號的零件信息按照色卡進行歸類,而后進行套料,并將同一色卡套在同一母材中;套料成功后會在文件夾中生成套料表文件,可通過瀏覽器直接查看套料結(jié)果;最后根據(jù)套料表生成套料圖,見圖4。
圖4 套料圖
面對激烈的市場競爭,只有持續(xù)改進和不斷創(chuàng)新才能在嚴峻的市場立足。通過實際工程應(yīng)用,采用遺傳算法快速實現(xiàn)PVC地板的套料,并通過自動套料程序,大幅縮減設(shè)計時間。由此可見,PVC地板自動套料程序的應(yīng)用可降低生產(chǎn)設(shè)計建模出圖周期,進而降低生產(chǎn)設(shè)計成本,增加企業(yè)效益。