熊佳瑋, 樊樹(shù)海, 張文倩
(1. 南京工業(yè)大學(xué) 工業(yè)工程系, 南京 210009; 2. 麻省理工學(xué)院信息質(zhì)量項(xiàng)目“數(shù)據(jù)質(zhì)量與信息安全”實(shí)驗(yàn)室, 美國(guó)馬薩諸塞州 02139)
虛擬仿真教學(xué)作為傳統(tǒng)教學(xué)的輔助方式,可以大大地提升研究和教學(xué)效率[1],也解決了一些實(shí)驗(yàn)可操作性不強(qiáng)、實(shí)驗(yàn)思想難以實(shí)現(xiàn)的問(wèn)題。虛擬仿真實(shí)驗(yàn)教學(xué)已成為實(shí)驗(yàn)教學(xué)改革的重要內(nèi)容和必然趨勢(shì)。
隨著工業(yè)自動(dòng)化、集成化水平的提高和大規(guī)模定制生產(chǎn)模式的興起,模擬制造成為高校相關(guān)專業(yè)實(shí)驗(yàn)教學(xué)的熱點(diǎn)。為了提高車間物流效率,實(shí)驗(yàn)中往往會(huì)使用SLP等方法實(shí)現(xiàn)設(shè)備布局,但是這些方法在確認(rèn)模擬車間布局后就不再會(huì)去移動(dòng)實(shí)驗(yàn)機(jī)臺(tái)[2-3]。一旦生產(chǎn)線設(shè)備出現(xiàn)變動(dòng)需要增加機(jī)臺(tái)則難以快速重構(gòu)。為了提高實(shí)驗(yàn)室機(jī)臺(tái)的可重構(gòu)性,筆者基于大規(guī)模定制理論和GA-Layout(一種改進(jìn)的遺傳算法)對(duì)仿真生產(chǎn)實(shí)驗(yàn)平臺(tái)進(jìn)行設(shè)計(jì)與開(kāi)發(fā)。
設(shè)備布局是指按照一定的設(shè)計(jì)規(guī)則,在既定數(shù)量加工單元和車間內(nèi)部空間的約束下,對(duì)車間內(nèi)的各加工單元、暫存地以及組成部分進(jìn)行優(yōu)化布置,使之配合良好,達(dá)到最低的物流運(yùn)送成本。在進(jìn)行車間布局時(shí)要考慮的因素主要有車間布局的柔性、敏捷性、可重構(gòu)性以及魯棒性[4]。
車間布局問(wèn)題歷來(lái)是一個(gè)很復(fù)雜的問(wèn)題,其約束條件一般有設(shè)備擺放空間的限制、被布局設(shè)備的集合、設(shè)備之間的距離約束、產(chǎn)品的加工工藝順序、大型設(shè)備不可移動(dòng)的限制等。此外,車間可重構(gòu)布局還需要考慮布局成本和設(shè)備位置重構(gòu)成本盡可能低[5]、物流成本更低。
模擬系統(tǒng)的系統(tǒng)由學(xué)生端和服務(wù)器端組成。學(xué)生端負(fù)責(zé)上傳實(shí)驗(yàn)預(yù)設(shè)、參數(shù)傳給服務(wù)器,服務(wù)器端運(yùn)算并將返回值矩陣和坐標(biāo)傳到學(xué)生端Flexsim接口進(jìn)行可視化輸出。實(shí)際系統(tǒng)流程如圖1所示:
圖1 系統(tǒng)框架
在實(shí)驗(yàn)車間布局空間里存在n個(gè)設(shè)備單元,在相關(guān)參數(shù)中,L為可用空間長(zhǎng)度,H為可用空間寬度,M為設(shè)備總集,M={m1,m2,…,mn};rij為設(shè)備i和設(shè)備j之間每單位物料在每單位距離上的搬運(yùn)費(fèi)用;Rij為設(shè)備間運(yùn)輸費(fèi)用矩陣;sij為設(shè)備i和設(shè)備j之間的運(yùn)輸頻率;Sij為設(shè)備間運(yùn)輸頻率矩陣;hij為設(shè)備i和設(shè)備j之間最小橫向距離要求;Hij為設(shè)備間最小橫向距離要求矩陣;Hi0為設(shè)備i和車間邊界的最小橫向間距限制;(xi,yi)是設(shè)備i的坐標(biāo)。
圖2 實(shí)驗(yàn)車間布局的參數(shù)幾何表達(dá)
對(duì)于需要重新布局的車間,初次擺放好的設(shè)備能否進(jìn)行二次、甚至多次重組及數(shù)量變動(dòng),是可重構(gòu)性的重要指標(biāo)[2]??芍貥?gòu)度以設(shè)備間實(shí)際去心距離在滿足移動(dòng)需要的前提下,將物流運(yùn)輸成本的最小化作為判別標(biāo)準(zhǔn)。為了滿足空間大小和實(shí)體不重疊的要求,需確定2個(gè)約束條件。
2.3.1 橫縱坐標(biāo)及邊界約束
對(duì)于i,j∈{1,2,…,n},滿足|xi-xj|≥(li+lj)/2+hxij,|yi-yj|≥(wi+wj)/2+hyij。為了簡(jiǎn)化編程計(jì)算,定義Δi為設(shè)備i和設(shè)備i-1或者設(shè)備和邊界之間的凈距離,即除去設(shè)備間最小距離要求hij之外的剩余距離,其取值范圍是[0,1.7];一般車間為了滿足叉車等運(yùn)輸設(shè)備入場(chǎng)以及消防通道的建設(shè),多行設(shè)備的行間距一般固定某一個(gè)數(shù)值,這里取s。設(shè)第一行設(shè)備與車間下邊界距離為s0,建立設(shè)備i橫、縱坐標(biāo)公式:
(1)
yi=(k-1)s+s0
(2)
為了簡(jiǎn)便說(shuō)明,假設(shè)xk和車間邊界相鄰,從而推出xk=hk0+Δk+lk/2。同時(shí)這也是一個(gè)遞推公式,為遺傳算法排序染色體的方便,在確定了第一行的第一個(gè)設(shè)備的橫坐標(biāo)之后,可以根據(jù)自動(dòng)換行和求解規(guī)則確定其他設(shè)備的橫坐標(biāo)。
2.3.2 確定設(shè)備獨(dú)立約束
為滿足設(shè)備搬動(dòng)以及設(shè)備不重合的要求,確定設(shè)備獨(dú)立約束為
|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框架并調(diào)用GA-Layout.m作為算法核心,返回值錄入GUI系統(tǒng)顯示,其調(diào)用指令如下:
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.融入領(lǐng)導(dǎo)機(jī)制。堅(jiān)持和完善“雙向進(jìn)入、交叉任職”的領(lǐng)導(dǎo)機(jī)制,全面推行黨組織書(shū)記、董事長(zhǎng)、法人代表“一肩挑”的領(lǐng)導(dǎo)設(shè)置模式,將黨委會(huì)研究討論作為董事會(huì)、經(jīng)理層決策重大問(wèn)題的前置程序。同時(shí)將黨建工作總體要求納入公司章程,明確了黨組織在公司治理中的法定地位。同時(shí)按照國(guó)有企業(yè)領(lǐng)導(dǎo)人員“20字標(biāo)準(zhǔn)”,加強(qiáng)干部隊(duì)伍建設(shè),培養(yǎng)和選拔后備干部,引進(jìn)高層次技術(shù)、管理人才。
根據(jù)遺傳算法的語(yǔ)言特點(diǎn),結(jié)合本問(wèn)題進(jìn)行具體程序編寫(xiě)。編碼結(jié)構(gòu)主要由以下幾個(gè)部分組成[6-9]:
(1) 編碼:編碼使用設(shè)備號(hào)與設(shè)備凈間距混合進(jìn)行實(shí)數(shù)編碼:
[{m1,m2,…,mn},{Δ1,Δ2,…,Δn}]
mi代表設(shè)備序號(hào);Δi代表凈間距。同時(shí),算法采用自動(dòng)換行原理;
(2) 創(chuàng)建初始種群,采用隨機(jī)產(chǎn)生;
(3) 懲罰函數(shù):由于在x軸方向上采取了自動(dòng)換行的策略,橫向布局不會(huì)出現(xiàn)超出最大長(zhǎng)度限制的情況,所以只需判別方案中設(shè)備在y軸方向上是否超過(guò)車間最大寬度限制,建立懲罰函數(shù)Pk:
(6)
其中H為車間最大寬度;Pk為縱坐標(biāo)超出懲罰項(xiàng);T為一個(gè)為正且數(shù)值較大的懲罰值,根據(jù)情況不同一般取500~10 000;
(4) 適應(yīng)度函數(shù):依據(jù)上文所提出的中心直線距離確定適應(yīng)度函數(shù)
Fitnessfunc=1/(C1min+Pk)=
(5) 選擇:采用隨機(jī)競(jìng)爭(zhēng)輪盤賭法(stochastic tournament-roulette wheel selection),是一種放回式隨機(jī)采樣方法[10],在標(biāo)準(zhǔn)輪盤賭法中加入隨機(jī)競(jìng)爭(zhēng)操作,即每次使用輪盤賭操作的時(shí)候選取一對(duì)個(gè)體,讓這兩個(gè)個(gè)體單獨(dú)競(jìng)爭(zhēng),留下適應(yīng)度高的個(gè)體,如此循環(huán),直到選滿;
(6) 交叉:由于采用了兩組數(shù)據(jù)編碼,所以使用部分映射交叉(part-mapping crossover)對(duì)設(shè)備序號(hào)染色體進(jìn)行交叉,算數(shù)交叉用來(lái)處理凈間距染色體[11]。
部分映射交叉是隨機(jī)選取2個(gè)交叉點(diǎn),對(duì)兩點(diǎn)內(nèi)需要交叉的部分逐個(gè)進(jìn)行交叉,同時(shí)對(duì)交叉后形成的重復(fù)符號(hào)進(jìn)行修正,以得到新的個(gè)體,交叉規(guī)則如圖3所示。
圖3 PMC交叉示意圖
算數(shù)交叉是由2個(gè)個(gè)體的線性組合而產(chǎn)生2個(gè)新的個(gè)體。為了能夠進(jìn)行線性運(yùn)算,一般編碼方式都為浮點(diǎn)數(shù)編碼[12]。
(7)
其中,a為一個(gè)固定參數(shù)。
(7) 變異:由于設(shè)備序號(hào)染色體為整數(shù)編碼,所以只對(duì)設(shè)備凈間距進(jìn)行變異。凈間距染色體為
[…,{Δ1,Δ2,…,Δi,…,Δn}]
本文采用Matlab的M#語(yǔ)言實(shí)現(xiàn)基于遺傳算法的GA-Layout布局優(yōu)化算法(以下簡(jiǎn)稱GALA)。實(shí)驗(yàn)所用的計(jì)算機(jī)操作系統(tǒng)為Windows 10。在以往實(shí)驗(yàn)的基礎(chǔ)上,設(shè)置該算法初始參數(shù)為:種群數(shù)量nchr=50,遺傳代數(shù)G=400,交叉概率pc=0.65,變異概率pm=0.1,大數(shù)懲罰值T=1 000,變異過(guò)程中的區(qū)間段r=12。
仿真生產(chǎn)實(shí)驗(yàn)室可以近似的看作一個(gè)長(zhǎng)11 m、寬9 m的矩形空間。現(xiàn)要加入3臺(tái)設(shè)備,共計(jì)布置12臺(tái)設(shè)備,設(shè)備尺寸DeviceSize,設(shè)備之間單位距離運(yùn)輸費(fèi)用Rij,運(yùn)輸頻率Sij,設(shè)備間最小橫向距離要求Hij,邊界約束Hi0如表1所示:
表1 設(shè)備尺寸 (m)
為了能夠縮短尋優(yōu)過(guò)程,使用傳統(tǒng)SLP方法獲得一組初始可行解[2 8 5 4 11 1 7 3 12 9 10 6],作為GA-Layout的初始解。對(duì)該算法進(jìn)行15次運(yùn)算,取最優(yōu)一次結(jié)果得到Layout矩陣為([1x3 double],[1x4double],[1x3 double],[1x2 double]),說(shuō)明布局方式為第一行3個(gè),第二行4個(gè),第三行3個(gè),第四行2個(gè);產(chǎn)生最優(yōu)解的代數(shù)為127代,最優(yōu)解為2840。進(jìn)化與收斂曲線如圖4所示。設(shè)備中心點(diǎn)坐標(biāo)為:(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 直線距離收斂
結(jié)果矩陣返回GUI,并通過(guò)Python的API接口導(dǎo)入Flexsim進(jìn)行可視化仿真輸出,仿真可視化結(jié)果如圖5所示。
圖5 Flexsim可視化仿真圖
基于Matlab和Python的定制生產(chǎn)可變布局仿真系統(tǒng)實(shí)驗(yàn)效果良好。通過(guò)改進(jìn)的遺傳算法可以快速地得出最優(yōu)解,避免了以往SLP效率低下的問(wèn)題。GA-Layout程序的良好開(kāi)放性和模塊化的設(shè)計(jì)思路可以讓學(xué)生自行開(kāi)發(fā)端口、集成更多的專業(yè)軟件,并且可以根據(jù)具體實(shí)驗(yàn)需求增減、改變約束條件和初值等參數(shù),以適應(yīng)不用階段學(xué)生的實(shí)驗(yàn)需求。算法中的實(shí)數(shù)編碼可使導(dǎo)出數(shù)據(jù)簡(jiǎn)潔明了,避免了和其他軟件I/O接口的二次轉(zhuǎn)化。Flexsim的應(yīng)用使得實(shí)驗(yàn)數(shù)據(jù)可以迅速仿真并導(dǎo)出為三維視圖,為進(jìn)一步實(shí)驗(yàn)和IGRIP人因系統(tǒng)仿真提供良好的基礎(chǔ)。計(jì)算機(jī)仿真的應(yīng)用使得實(shí)驗(yàn)難點(diǎn)變得具象化、可視化和動(dòng)態(tài)化,能夠有效地避免實(shí)驗(yàn)課程程式化、機(jī)械化,有效促進(jìn)學(xué)生的實(shí)驗(yàn)積極性和創(chuàng)新意識(shí)。