熊佳瑋, 樊樹海, 張文倩
(1. 南京工業大學 工業工程系, 南京 210009; 2. 麻省理工學院信息質量項目“數據質量與信息安全”實驗室, 美國馬薩諸塞州 02139)
虛擬仿真教學作為傳統教學的輔助方式,可以大大地提升研究和教學效率[1],也解決了一些實驗可操作性不強、實驗思想難以實現的問題。虛擬仿真實驗教學已成為實驗教學改革的重要內容和必然趨勢。
隨著工業自動化、集成化水平的提高和大規模定制生產模式的興起,模擬制造成為高校相關專業實驗教學的熱點。為了提高車間物流效率,實驗中往往會使用SLP等方法實現設備布局,但是這些方法在確認模擬車間布局后就不再會去移動實驗機臺[2-3]。一旦生產線設備出現變動需要增加機臺則難以快速重構。為了提高實驗室機臺的可重構性,筆者基于大規模定制理論和GA-Layout(一種改進的遺傳算法)對仿真生產實驗平臺進行設計與開發。
設備布局是指按照一定的設計規則,在既定數量加工單元和車間內部空間的約束下,對車間內的各加工單元、暫存地以及組成部分進行優化布置,使之配合良好,達到最低的物流運送成本。在進行車間布局時要考慮的因素主要有車間布局的柔性、敏捷性、可重構性以及魯棒性[4]。
車間布局問題歷來是一個很復雜的問題,其約束條件一般有設備擺放空間的限制、被布局設備的集合、設備之間的距離約束、產品的加工工藝順序、大型設備不可移動的限制等。此外,車間可重構布局還需要考慮布局成本和設備位置重構成本盡可能低[5]、物流成本更低。
模擬系統的系統由學生端和服務器端組成。學生端負責上傳實驗預設、參數傳給服務器,服務器端運算并將返回值矩陣和坐標傳到學生端Flexsim接口進行可視化輸出。實際系統流程如圖1所示:

圖1 系統框架
在實驗車間布局空間里存在n個設備單元,在相關參數中,L為可用空間長度,H為可用空間寬度,M為設備總集,M={m1,m2,…,mn};rij為設備i和設備j之間每單位物料在每單位距離上的搬運費用;Rij為設備間運輸費用矩陣;sij為設備i和設備j之間的運輸頻率;Sij為設備間運輸頻率矩陣;hij為設備i和設備j之間最小橫向距離要求;Hij為設備間最小橫向距離要求矩陣;Hi0為設備i和車間邊界的最小橫向間距限制;(xi,yi)是設備i的坐標。


圖2 實驗車間布局的參數幾何表達
對于需要重新布局的車間,初次擺放好的設備能否進行二次、甚至多次重組及數量變動,是可重構性的重要指標[2]。可重構度以設備間實際去心距離在滿足移動需要的前提下,將物流運輸成本的最小化作為判別標準。為了滿足空間大小和實體不重疊的要求,需確定2個約束條件。
2.3.1 橫縱坐標及邊界約束
對于i,j∈{1,2,…,n},滿足|xi-xj|≥(li+lj)/2+hxij,|yi-yj|≥(wi+wj)/2+hyij。為了簡化編程計算,定義Δi為設備i和設備i-1或者設備和邊界之間的凈距離,即除去設備間最小距離要求hij之外的剩余距離,其取值范圍是[0,1.7];一般車間為了滿足叉車等運輸設備入場以及消防通道的建設,多行設備的行間距一般固定某一個數值,這里取s。設第一行設備與車間下邊界距離為s0,建立設備i橫、縱坐標公式:
(1)
yi=(k-1)s+s0
(2)
為了簡便說明,假設xk和車間邊界相鄰,從而推出xk=hk0+Δk+lk/2。同時這也是一個遞推公式,為遺傳算法排序染色體的方便,在確定了第一行的第一個設備的橫坐標之后,可以根據自動換行和求解規則確定其他設備的橫坐標。
2.3.2 確定設備獨立約束
為滿足設備搬動以及設備不重合的要求,確定設備獨立約束為
|xi-xj|≥[((li+lj))/2+hij]zikzjk
i,j=1,2,…,n
(3)
其中
(4)
i=1,2,…,n;k=1,2,…,m
xi≥0;yi≥0;Δi≥0;i=1,2,…,n
(5)
使用Python搭建GUI框架并調用GA-Layout.m作為算法核心,返回值錄入GUI系統顯示,其調用指令如下:
cd ″matlabrootexternenginespython″
python setup.py install
import matlab.engine
eng = matlab.engine.start_matlab()
pyga=GA-Layout(chrx,MOC,PkG,LayoutG)
print(pyga)
true
1.融入領導機制。堅持和完善“雙向進入、交叉任職”的領導機制,全面推行黨組織書記、董事長、法人代表“一肩挑”的領導設置模式,將黨委會研究討論作為董事會、經理層決策重大問題的前置程序。同時將黨建工作總體要求納入公司章程,明確了黨組織在公司治理中的法定地位。同時按照國有企業領導人員“20字標準”,加強干部隊伍建設,培養和選拔后備干部,引進高層次技術、管理人才。
根據遺傳算法的語言特點,結合本問題進行具體程序編寫。編碼結構主要由以下幾個部分組成[6-9]:
(1) 編碼:編碼使用設備號與設備凈間距混合進行實數編碼:
[{m1,m2,…,mn},{Δ1,Δ2,…,Δn}]
mi代表設備序號;Δi代表凈間距。同時,算法采用自動換行原理;
(2) 創建初始種群,采用隨機產生;
(3) 懲罰函數:由于在x軸方向上采取了自動換行的策略,橫向布局不會出現超出最大長度限制的情況,所以只需判別方案中設備在y軸方向上是否超過車間最大寬度限制,建立懲罰函數Pk:
(6)
其中H為車間最大寬度;Pk為縱坐標超出懲罰項;T為一個為正且數值較大的懲罰值,根據情況不同一般取500~10 000;
(4) 適應度函數:依據上文所提出的中心直線距離確定適應度函數
Fitnessfunc=1/(C1min+Pk)=
(5) 選擇:采用隨機競爭輪盤賭法(stochastic tournament-roulette wheel selection),是一種放回式隨機采樣方法[10],在標準輪盤賭法中加入隨機競爭操作,即每次使用輪盤賭操作的時候選取一對個體,讓這兩個個體單獨競爭,留下適應度高的個體,如此循環,直到選滿;
(6) 交叉:由于采用了兩組數據編碼,所以使用部分映射交叉(part-mapping crossover)對設備序號染色體進行交叉,算數交叉用來處理凈間距染色體[11]。
部分映射交叉是隨機選取2個交叉點,對兩點內需要交叉的部分逐個進行交叉,同時對交叉后形成的重復符號進行修正,以得到新的個體,交叉規則如圖3所示。

圖3 PMC交叉示意圖
算數交叉是由2個個體的線性組合而產生2個新的個體。為了能夠進行線性運算,一般編碼方式都為浮點數編碼[12]。
(7)
其中,a為一個固定參數。
(7) 變異:由于設備序號染色體為整數編碼,所以只對設備凈間距進行變異。凈間距染色體為
[…,{Δ1,Δ2,…,Δi,…,Δn}]

本文采用Matlab的M#語言實現基于遺傳算法的GA-Layout布局優化算法(以下簡稱GALA)。實驗所用的計算機操作系統為Windows 10。在以往實驗的基礎上,設置該算法初始參數為:種群數量nchr=50,遺傳代數G=400,交叉概率pc=0.65,變異概率pm=0.1,大數懲罰值T=1 000,變異過程中的區間段r=12。
仿真生產實驗室可以近似的看作一個長11 m、寬9 m的矩形空間?,F要加入3臺設備,共計布置12臺設備,設備尺寸DeviceSize,設備之間單位距離運輸費用Rij,運輸頻率Sij,設備間最小橫向距離要求Hij,邊界約束Hi0如表1所示:

表1 設備尺寸 (m)
為了能夠縮短尋優過程,使用傳統SLP方法獲得一組初始可行解[2 8 5 4 11 1 7 3 12 9 10 6],作為GA-Layout的初始解。對該算法進行15次運算,取最優一次結果得到Layout矩陣為([1x3 double],[1x4double],[1x3 double],[1x2 double]),說明布局方式為第一行3個,第二行4個,第三行3個,第四行2個;產生最優解的代數為127代,最優解為2840。進化與收斂曲線如圖4所示。設備中心點坐標為:(9.34,3.7)、(7.21,3.7)、(2.0,3.7)、(1.75,5.7)、(1.28,1.7) 、(3.99,1.7)、(3.93,3.7)、(3.50,7.7)、(4.97,5.7)、(1.08,7.7)、(6.17,1.7)、(7.56,5.7)。

圖4 直線距離收斂
結果矩陣返回GUI,并通過Python的API接口導入Flexsim進行可視化仿真輸出,仿真可視化結果如圖5所示。

圖5 Flexsim可視化仿真圖
基于Matlab和Python的定制生產可變布局仿真系統實驗效果良好。通過改進的遺傳算法可以快速地得出最優解,避免了以往SLP效率低下的問題。GA-Layout程序的良好開放性和模塊化的設計思路可以讓學生自行開發端口、集成更多的專業軟件,并且可以根據具體實驗需求增減、改變約束條件和初值等參數,以適應不用階段學生的實驗需求。算法中的實數編碼可使導出數據簡潔明了,避免了和其他軟件I/O接口的二次轉化。Flexsim的應用使得實驗數據可以迅速仿真并導出為三維視圖,為進一步實驗和IGRIP人因系統仿真提供良好的基礎。計算機仿真的應用使得實驗難點變得具象化、可視化和動態化,能夠有效地避免實驗課程程式化、機械化,有效促進學生的實驗積極性和創新意識。