鄧文瀚,張 銘,王李進(jìn),鐘一文*
(1.福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院,福州 350002;2.智慧農(nóng)林福建省高等學(xué)校重點(diǎn)實(shí)驗(yàn)室(福建農(nóng)林大學(xué)),福州 350002)
設(shè)施布局問(wèn)題(Facility Layout Problem,F(xiàn)LP)是一種NP-困難的優(yōu)化問(wèn)題,最早由文獻(xiàn)[1]提出。FLP 在現(xiàn)實(shí)生活中有許多應(yīng)用,例如制造系統(tǒng)、印刷電路板、物流系統(tǒng)和倉(cāng)庫(kù)等的布局優(yōu)化。尤其是在制造系統(tǒng)上,F(xiàn)LP 應(yīng)用十分廣泛,而在制造系統(tǒng)中,F(xiàn)LP 最重要的優(yōu)化指標(biāo)是材料處理成本[2]。在FLP中,設(shè)施可以是便于執(zhí)行任何操作的任何實(shí)體,比如機(jī)床、工作臺(tái)、機(jī)械車(chē)間、部門(mén)和倉(cāng)庫(kù)等[3]。FLP 的目標(biāo)是在一個(gè)有約束條件(比如工廠(chǎng)的形狀、設(shè)施放置次序的取向以及設(shè)施的pick-up/drop-off 點(diǎn))的工廠(chǎng)區(qū)域內(nèi)找到一個(gè)最優(yōu)的設(shè)施布局,使材料處理成本最小。如文獻(xiàn)[4]所述,材料處理成本占制造公司總運(yùn)營(yíng)成本的20%~50%,占產(chǎn)品制造總成本的15%~70%,因此,求解FLP對(duì)于公司降低這些成本并提高其生產(chǎn)率非常重要。
FLP 可以根據(jù)設(shè)施的形狀和尺寸、物料搬運(yùn)系統(tǒng)和流動(dòng)等因素進(jìn)行分類(lèi)[5]。根據(jù)設(shè)施的形狀和尺寸是否固定[3],F(xiàn)LP可以分為兩類(lèi):1)僅考慮設(shè)施面積的不等形面積設(shè)施布局問(wèn)題;2)考慮設(shè)施具體形狀的機(jī)器布局問(wèn)題(Machine Layout Problem,MLP)[6]。關(guān)于不等形面積設(shè)施布局,文獻(xiàn)[7-9]分別提出了基于粒子群優(yōu)化算法、螢火蟲(chóng)算法和模擬退火(Simulated Annealing,SA)算法的求解策略。針對(duì)FLP,文獻(xiàn)[10]采用文化基因算法求解;文獻(xiàn)[11]使用線(xiàn)性規(guī)劃的三階段法求解。根據(jù)物料搬運(yùn)系統(tǒng)的流動(dòng)方式,Luggen 進(jìn)一步將FLP 細(xì)分為四類(lèi):?jiǎn)涡胁季郑⊿ingle-line layout)、閉環(huán)布局(Closed loop layout)、階梯布局(Ladder layout)、開(kāi)放場(chǎng)布局(Open field layout),如圖1[6]所示。其中閉環(huán)布局模式提供了一種簡(jiǎn)化的中央物料搬運(yùn)路徑方式,并創(chuàng)建了模塊化結(jié)構(gòu),使得布局變動(dòng)及擴(kuò)展更為靈活,因此,與之對(duì)應(yīng)的閉環(huán)布局問(wèn)題(Closed-Loop Layout Problem,CLLP)成為近年來(lái)的研究熱點(diǎn)。
圖1 設(shè)施布局的4種情況Fig.1 Four cases of facility layout
作為混合變量?jī)?yōu)化問(wèn)題,CLLP的物料搬運(yùn)路徑是一個(gè)大小可調(diào)的矩形環(huán),優(yōu)化的結(jié)果必須同時(shí)獲得設(shè)施的最佳放置次序和矩形環(huán)的最佳尺寸。文獻(xiàn)[12]提出了具有精確距離的CLLP,并設(shè)計(jì)了混合整數(shù)線(xiàn)性規(guī)劃(Mixed Integer Linear Programming,MILP)方法來(lái)解決。由于CLLP 是NP-困難的,MILP 只能求解規(guī)模很小的問(wèn)題,所以更多的學(xué)者采用元啟發(fā)式搜索算法。代表性的方法有SA 算法[6]、改進(jìn)的遷徙鳥(niǎo)優(yōu)化(Modified Migrating Birds Optimization,MMBO)算法[13]及基于隨機(jī)鍵的布谷鳥(niǎo)搜索(Cuckoo Search based on Random Key coding,RKCS)算法[14]等。對(duì)于CLLP 的兩個(gè)優(yōu)化目標(biāo),目前已有的啟發(fā)式算法大多通過(guò)設(shè)計(jì)不同的搜索方法以確定設(shè)施的最佳放置次序,而對(duì)于矩形環(huán)的大小,通常采用基于枚舉的方式,計(jì)算效率較低且浪費(fèi)計(jì)算資源。
群體增量學(xué)習(xí)(Population-Based Incremental Learning,PBIL)算法是美國(guó)卡內(nèi)基梅隆大學(xué)Baluja[15]提出的基于統(tǒng)計(jì)學(xué)習(xí)理論的群體進(jìn)化算法。作為分布式估計(jì)算法的分支,PBIL 通過(guò)統(tǒng)計(jì)學(xué)習(xí)的方式建立解空間個(gè)體分布的概率模型,然后對(duì)概率模型進(jìn)行采樣以產(chǎn)生新的群體,從而實(shí)現(xiàn)群體的進(jìn)化。PBIL 結(jié)合了遺傳算法和競(jìng)爭(zhēng)學(xué)習(xí)機(jī)制的優(yōu)點(diǎn),具有較強(qiáng)的全局搜索能力和較快的收斂速度,可以很好地解決連續(xù)優(yōu)化和組合優(yōu)化問(wèn)題[16]。本文針對(duì)CLLP的問(wèn)題特征,并結(jié)合PBIL 的優(yōu)點(diǎn),提出了一種混合群體增量學(xué)習(xí)(Hybrid PBIL,HPBIL)算法。首先,在設(shè)計(jì)基于概率分布的CLLP 求解框架基礎(chǔ)上,為解決現(xiàn)有算法使用枚舉方法尋找最優(yōu)矩形環(huán)大小而造成求解效率低下的問(wèn)題,HPBIL 算法分別使用離散群體增量學(xué)習(xí)(Discrete PBIL,DPBIL)算子和連續(xù)群體增量學(xué)習(xí)(Continuous PBIL,CPBIL)算子同時(shí)對(duì)設(shè)施放置次序和矩形環(huán)大小進(jìn)行優(yōu)化,在保證算法全局收斂的前提下提高了搜索效率;其次,為進(jìn)一步提高算法的局部求精能力,算法融入基于交換的局部搜索算子在解空間中進(jìn)行精細(xì)搜索;最后,HPBIL 算法在13 個(gè)測(cè)試用例中獲得了9 個(gè)新的最優(yōu)布局,與現(xiàn)有的元啟發(fā)式算法相比,HPBIL 算法可在更短的時(shí)間內(nèi)獲得更好的結(jié)果。
本文的主要工作如下:
1)針對(duì)現(xiàn)有算法在求解CLLP 上存在的不足,從CLLP 的問(wèn)題特征出發(fā),采用離散結(jié)構(gòu)和連續(xù)結(jié)構(gòu)方法分而治之,同時(shí)滿(mǎn)足獲得設(shè)施最佳放置次序和矩形環(huán)最佳尺寸的約束條件,在保證算法精度的同時(shí)提高計(jì)算效率;
2)根據(jù)算法迭代過(guò)程設(shè)計(jì)局部精細(xì)搜索算子增強(qiáng)算法的局部探索能力;
3)為CLLP 設(shè)計(jì)出有效的解決方案的同時(shí)擴(kuò)展PBIL 的應(yīng)用領(lǐng)域及研究思路。
在CLLP中,有一個(gè)尺寸大小可變的矩形物料搬運(yùn)路徑和一組固定的矩形塊狀設(shè)施[3]。用h和v分別表示矩形物料搬運(yùn)路徑的水平長(zhǎng)度和豎直長(zhǎng)度。每個(gè)設(shè)施都有一個(gè)pick-up/drop-off 點(diǎn),用來(lái)確定物料的進(jìn)出位置。設(shè)施大小固定,pickup/drop-off 點(diǎn)位于設(shè)施側(cè)邊的中間且設(shè)施可以放置在矩形環(huán)的內(nèi)部和外部。假設(shè)有n個(gè)設(shè)施,每個(gè)設(shè)施i都有一個(gè)固定的長(zhǎng)度li和寬度wi。用一個(gè)n×n的對(duì)稱(chēng)矩陣F表示設(shè)施之間的物料流,其中fij表示設(shè)施i與設(shè)施j之間的物料流。CLLP 的優(yōu)化目標(biāo)是通過(guò)合理布局使設(shè)施之間的加權(quán)物料流之和最小,數(shù)學(xué)模型如下:
其中,dij表示設(shè)施i與設(shè)施j之間的最短距離。
如圖2 所示,沿著矩形環(huán)放置的兩個(gè)設(shè)施之間的最短距離有4 種情況:a)設(shè)施i和設(shè)施j在同一條邊上;b)設(shè)施i和設(shè)施j在相鄰邊上;c)設(shè)施i和實(shí)施j在平行的兩條水平方向的邊上;d)設(shè)施i和設(shè)施j在平行的兩條豎直方向的邊上。用(xi,yi)代表設(shè)施i的pick-up/drop-off 點(diǎn)。關(guān)于Case 1 和Case 2,設(shè)施間最短距離的計(jì)算公式為:
圖2 精確距離的4種情況Fig.2 Four case of exact distance
關(guān)于Case 3,設(shè)施i和設(shè)施j最短距離計(jì)算公式為:
關(guān)于Case 4,設(shè)施i和設(shè)施j最短距離計(jì)算公式為:
由于CLLP 是NP-困難的,元啟發(fā)式算法是一個(gè)有效的解決方案。文獻(xiàn)[6]最早設(shè)計(jì)CLLP來(lái)作為開(kāi)放場(chǎng)布局的替代方案,并提出了SA 算法來(lái)解決。在SA 算法中,矩形環(huán)的大小h和v從一個(gè)較大的初始值開(kāi)始,依次單位長(zhǎng)度遞減,直至達(dá)到停止條件。在每次遞減過(guò)程中,都會(huì)得到一個(gè)用(h,v)表示的矩形環(huán),然后在該矩形環(huán)上采用SA算法尋找最優(yōu)的設(shè)施放置次序。需要注意的是,由于矩形環(huán)有4 條邊,每個(gè)設(shè)施可以放在邊的內(nèi)側(cè)或者外側(cè),所以共有8 個(gè)側(cè)面可以放置設(shè)施,如圖3 所示。為了書(shū)寫(xiě)方便,將矩形的8 個(gè)側(cè)面分別定義為side1、side2、side3、side4、side5、side6、side7 和side8。為了將一個(gè)設(shè)施放置次序和一個(gè)矩形環(huán)映射為一個(gè)布局,文獻(xiàn)[6]給出了一種放置策略,從左上角起,按順時(shí)針?lè)较?,根?jù)先放內(nèi)側(cè)再放外側(cè)的規(guī)則放置設(shè)施,放置順序依次是side1→side2→side3→side4→side5→side6→side7→side8。
圖3 矩形環(huán)的8個(gè)側(cè)面Fig.3 Eight sides of a rectangle loop
文獻(xiàn)[13]提出MMBO 算法來(lái)求解CLLP。MMBO 算法同樣采用枚舉方法尋找矩形環(huán)的大小,從一個(gè)初始值開(kāi)始,依次減小矩形環(huán)的大小,然后遷徙鳥(niǎo)算法的進(jìn)化規(guī)則通過(guò)尋找當(dāng)前最好的設(shè)施放置次序。在MMBO 算法中,設(shè)施的放置策略與文獻(xiàn)[6]不同:在放置設(shè)施時(shí),它的第一個(gè)設(shè)施放在side8邊上,也就是矩形環(huán)的左上角,且第一個(gè)設(shè)施的pick-up/drop-off點(diǎn)坐標(biāo)為(0,v),同時(shí)按順時(shí)針?lè)较蛳韧鈧?cè)再內(nèi)側(cè)的方式放置剩下設(shè)施,依次是side2→side1→side4→side3→side6→side5→side8→side7。
文獻(xiàn)[14]提出的RKCS 算法,采用與文獻(xiàn)[6]和文獻(xiàn)[13]類(lèi)似的策略尋找矩形環(huán)的大?。涸谒惴ㄖ?,矩形環(huán)的初始大小h和v為所有設(shè)施最長(zhǎng)邊之和的一半,用最小設(shè)施邊的長(zhǎng)度minlength作為算法的終止條件,即當(dāng)h和v遞減到minlength時(shí),算法結(jié)束。同樣在每次遞減的程序中,利用布谷鳥(niǎo)算法的搜索規(guī)則尋找當(dāng)前矩形環(huán)大小的最優(yōu)設(shè)施放置次序。其設(shè)施放置策略是將第一個(gè)設(shè)施放在side8 邊的左上角,pick-up/drop-off 點(diǎn)坐標(biāo)為(0,v),同時(shí)按順時(shí)針?lè)较蛳葍?nèi)側(cè)再外側(cè)方式放置剩下設(shè)施,依次是side1→side2→side3→side4→side5→side6→side7→side8。
綜上,目前已有解決CLLP的元啟發(fā)式算法大多通過(guò)預(yù)設(shè)矩形環(huán)大小的范圍,然后通過(guò)枚舉的方法遍歷所有矩形環(huán),并在每一個(gè)矩形環(huán)上使用不同的搜索策略尋找優(yōu)質(zhì)設(shè)施放置次序。其中,采用枚舉方式產(chǎn)生的放置次序在后續(xù)進(jìn)化過(guò)程中大部分被淘汰,產(chǎn)生了數(shù)目眾多的不必要計(jì)算;另外一方面,算法的復(fù)雜度也會(huì)隨著問(wèn)題規(guī)模的擴(kuò)大而快速增長(zhǎng),極大地制約了求解算法的適用范圍及效率。
PBIL 作為一種隨機(jī)優(yōu)化技術(shù),通過(guò)構(gòu)建概率模型來(lái)搜索潛在優(yōu)質(zhì)解空間。算法主要組成部分是一個(gè)概率向量P=(p1,p2,…,pi,…,pn),用來(lái)表示解空間的概率模型,其中pi表示第i個(gè)等位基因的取值為1 的概率。PBIL 算法迭代的具體過(guò)程如下。
算法1 基本PBIL算法。
算法1 中最優(yōu)個(gè)體數(shù)目M小于種群的個(gè)體數(shù)N。更新概率向量的公式如下:
其中:α表示學(xué)習(xí)速率,xk表示第k個(gè)優(yōu)質(zhì)解。
基本PBIL 算法可以擴(kuò)展到組合優(yōu)化問(wèn)題和連續(xù)優(yōu)化問(wèn)題求解。針對(duì)組合優(yōu)化問(wèn)題:文獻(xiàn)[17]用PBIL 算法求解著色旅行商問(wèn)題;文獻(xiàn)[18]用PBIL 算法和局部搜索算法來(lái)優(yōu)化本體匹配問(wèn)題;文獻(xiàn)[19]提出一種基于虛擬區(qū)域的PBIL 算法來(lái)優(yōu)化片上網(wǎng)絡(luò)的任務(wù)匹配問(wèn)題;文獻(xiàn)[20]將PBIL 算法用于復(fù)雜工程系統(tǒng)中故障診斷等。同樣PBIL 算法在連續(xù)優(yōu)化問(wèn)題也得到了廣泛應(yīng)用,例如:文獻(xiàn)[21]將PBIL 算法擴(kuò)展到連續(xù)搜索空間問(wèn)題上;文獻(xiàn)[22]用M-PBIL算法求解多目標(biāo)證券投資組合問(wèn)題;文獻(xiàn)[23]用PBIL 算法求解電磁器件的多目標(biāo)優(yōu)化問(wèn)題等。
CLLP是一個(gè)混合變量?jī)?yōu)化問(wèn)題,作為優(yōu)化目標(biāo)的兩個(gè)組成部分,搜索設(shè)施最佳放置次序是一個(gè)組合優(yōu)化問(wèn)題,而搜索矩形環(huán)的最佳形狀是一個(gè)連續(xù)優(yōu)化問(wèn)題。針對(duì)該問(wèn)題的求解特征,設(shè)計(jì)離散的PBIL 算子以搜索設(shè)施的最佳放置次序,用連續(xù)的PBIL 來(lái)搜索矩形環(huán)的大小。針對(duì)PBIL 單純概率指引帶來(lái)的搜索粒度較大的問(wèn)題,引入增強(qiáng)的局部搜索算子,提高算法的求精能力。
文獻(xiàn)[24]針對(duì)排列類(lèi)型的問(wèn)題進(jìn)行了研究,給出了每個(gè)等位基因的取值并將二進(jìn)制PBIL 擴(kuò)展為整數(shù)編碼的方法,該設(shè)計(jì)思想被本文用于構(gòu)造設(shè)施放置次序問(wèn)題中。在DPBIL中,首先計(jì)算每個(gè)設(shè)施在特定位置的累積概率,并通過(guò)輪盤(pán)賭方式確定每個(gè)設(shè)施的選取順序。具體算法描述如算法2。其中:pm是表示采樣概率模型的n×n二維數(shù)組,pm[i][j]表示設(shè)施i放置在第j個(gè)位置的概率,集合R存儲(chǔ)尚未選擇的設(shè)施,列表List存儲(chǔ)構(gòu)造出的設(shè)施放置次序,變量L是集合R中剩余設(shè)施數(shù)。算法中第4)~10)行計(jì)算R中每個(gè)設(shè)施的累積概率,第11)行用生成的隨機(jī)數(shù)來(lái)判斷設(shè)施位于哪一個(gè)區(qū)間,第12)~19)行用輪盤(pán)賭的方式對(duì)R中每個(gè)設(shè)施進(jìn)行選擇,直至所有的設(shè)施被選擇完畢。算法第15)行將選中的設(shè)施從R中刪除,保證一個(gè)設(shè)施只能被選擇一次。算法2 中涉及兩重循環(huán),其時(shí)間復(fù)雜度為O(n2)。
算法2 離散PBIL構(gòu)造設(shè)施放置次序。
Sebag 等[21]提出了一個(gè)服從高斯分布的連續(xù)PBIL 算法,將算法應(yīng)用擴(kuò)展到了連續(xù)搜索空間。本文將借鑒此方法構(gòu)造閉環(huán)矩形大小。在高斯分布N(X,σ)中數(shù)學(xué)期望X代表個(gè)體,標(biāo)準(zhǔn)差σ控制著種群的多樣性。在每一次迭代中,Xt根據(jù)當(dāng)前種群中最好的兩個(gè)個(gè)體和最差的個(gè)體的線(xiàn)性組合進(jìn)行更新:
σ的更新則根據(jù)當(dāng)前種群的平均值與個(gè)體差值進(jìn)行計(jì)算:
根據(jù)式(7),定義矩形環(huán)大小的求解公式:
其中,HV表示矩形環(huán)的h和v。由此可得一個(gè)服從高斯分布N(X,σ)的矩形環(huán)。
在CPBIL 搜索中,通過(guò)基于高斯分布的概率性學(xué)習(xí)及群體協(xié)同進(jìn)化過(guò)程,引導(dǎo)算法找到優(yōu)質(zhì)的矩陣環(huán)組合。
局部搜索(Local Search,LS)是解決最優(yōu)化問(wèn)題的一種啟發(fā)式算法,結(jié)構(gòu)簡(jiǎn)單容易實(shí)現(xiàn)。在HPBIL算法框架中,當(dāng)種群完成一次搜索后,通過(guò)置換方式產(chǎn)生鄰域解,并采用貪婪方式接受。具體算法步驟如下。
算法3 LS。
輸入:當(dāng)前解s;
輸出:改進(jìn)的解s′。
在LS 算法中,第2)、第4)行通過(guò)迭代減少h和v的大小,尋找更好的矩形環(huán),5)~6)行根據(jù)當(dāng)前的h和v的大小以及當(dāng)前設(shè)施的放置次序產(chǎn)生新解,如果新解優(yōu)于舊解,就在這個(gè)矩形環(huán)上用基于兩兩交換設(shè)施放置次序的爬山算法對(duì)新解進(jìn)行改進(jìn),直到無(wú)法生成可行解,LS 算法結(jié)束,目的是在好的矩形環(huán)上集中更多的計(jì)算資源,增加算法的求精能力。在算法3中,基于兩兩交換設(shè)施放置次序的爬山算法的時(shí)間復(fù)雜度為O(n2),因此總的時(shí)間復(fù)雜度為O(h×v×n2)。
HPBIL 算法在基本PBIL 算法框架下,首先構(gòu)造矩陣環(huán)采樣的概率模型,分別采用DPBIL 和CPBIL 生成設(shè)施放置次序和矩陣環(huán)大小,并調(diào)用局部搜索過(guò)程加強(qiáng)算法求精能力。算法具體流程如算法4。其中,hvm是矩形環(huán)采樣概率模型的2×2 二維數(shù)組。在算法第1)行對(duì)pm和hvm進(jìn)行了初始化。pm的每個(gè)元素的初始值為1/n,hvm的每個(gè)元素的初始值為為設(shè)施i的pick-up/drop-off 點(diǎn)所在邊的長(zhǎng)度。算法的第5)行和第6)行分別用離散PBIL 和連續(xù)PBIL 來(lái)生成設(shè)施放置次序和矩形環(huán)的h和v。第7)行通過(guò)生成的設(shè)施放置次序和矩形環(huán)的h和v來(lái)產(chǎn)生一個(gè)可行解。鑒于構(gòu)造型算法的求精能力存在不足,算法的9)~12)行調(diào)用LS算法來(lái)改進(jìn)每一代最好的top個(gè)解,一方面增強(qiáng)算法的求精能力,另一方面,使算法在好的矩形環(huán)上集中更多的計(jì)算資源。第13)行按照解的評(píng)價(jià)值從小到大排序,第14)和15)行更新當(dāng)前最優(yōu)解。最后在算法17)行和18)行,通過(guò)概率更新公式對(duì)概率模型進(jìn)行更新。在HPBIL 算法中,第7)行為通過(guò)矩形環(huán)大小和放置次序產(chǎn)生新解,該方法將解映射到布局的時(shí)間復(fù)雜性為O(n),第17)行和第18)行為更新概率模型,時(shí)間復(fù)雜度分別為M×n和2×n,所以HPBIL 算法的時(shí)間復(fù)雜度為O(G×N×(n2+n)+G×top×h×v×n2+G×M×n+2×G×n),可以近似為O(G×(N+top×h×v)×n2)。
算法4 HPBIL。
輸入:學(xué)習(xí)速率α,優(yōu)勢(shì)個(gè)體數(shù)目M,種群數(shù)量N,迭代次數(shù)G;
輸出:最優(yōu)解Best。
為了驗(yàn)證HPBIL算法的有效性,對(duì)HPBIL進(jìn)行了測(cè)試,表1 是實(shí)驗(yàn)所使用的13 個(gè)測(cè)試實(shí)例,其中:D4、D6、D8、D10、D12這5 個(gè)測(cè)試實(shí)例來(lái)自Das[25];R14、R16、R18 這3 個(gè)測(cè)試實(shí)例來(lái)自Rajasekharan[26];剩下的5 個(gè)測(cè)試實(shí)例由文獻(xiàn)[14]生成。表1列出了當(dāng)前每個(gè)測(cè)試實(shí)例的最佳解和文獻(xiàn)出處。
表1 測(cè)試實(shí)例基本信息Tab.1 Basic information of test instances
HPBIL 算法由Java 語(yǔ)言實(shí)現(xiàn),在聯(lián)想筆記本Intel Core i5-5200U @2.20 GHz 上進(jìn)行實(shí)驗(yàn),在HPBIL 算法中設(shè)置種群規(guī)模為200,算法的最大迭代次數(shù)為500,每代中對(duì)最好的個(gè)體用局部搜索算法進(jìn)行優(yōu)化,在每個(gè)測(cè)試實(shí)例上運(yùn)行30 次,在算法中有兩個(gè)直接影響算法性能的兩個(gè)重要參數(shù):學(xué)習(xí)速率α和優(yōu)勢(shì)個(gè)體數(shù)量M。其中,α控制種群優(yōu)勢(shì)個(gè)體的學(xué)習(xí)速率,影響種群在解空間的搜索能力,α越大,算法的學(xué)習(xí)速率越高,收斂速度也越快,但同時(shí)也更容易陷入局部最優(yōu)解;反之α的值越小,算法的學(xué)習(xí)速率減慢,搜索能力增強(qiáng),但收斂速度也相應(yīng)減慢[15]。對(duì)于優(yōu)勢(shì)個(gè)體數(shù)量M,值越小表示優(yōu)勢(shì)個(gè)體數(shù)量越少,算法的趨同性越高,算法多樣性相應(yīng)越低;而反之M值越大,個(gè)體更新影響幅度增加,從而減低算法收斂速度;并且當(dāng)優(yōu)勢(shì)個(gè)體數(shù)量和種群數(shù)量的比值超過(guò)一定的上界范圍,算法的時(shí)間復(fù)雜度隨之增加[27]。為了合理選擇參數(shù)α和M,令α取值范圍為{0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9},M的取值范圍為{10,20,30,40,50,60,70,80,90,100}。在參數(shù)設(shè)置中,采用控制變量法分別將α和M在D4、D6、D8、D10、D12、R14、R16、R18、K20、K25、K30、K40 這12 個(gè)實(shí)例上運(yùn)行10 次求平均值,實(shí)驗(yàn)結(jié)果如圖4 和圖5 所示。從圖中可以看出當(dāng)α=0.2 和M=70 時(shí),算法取得最小平均值,同時(shí)從圖4可以看出當(dāng)α越大,算法的求精能力越低。因此將α=0.2和M=70作為HPBIL的最終參數(shù)。
圖4 參數(shù)α對(duì)算法的影響Fig.4 Influence of parameters α on the algorithm
圖5 參數(shù)M對(duì)算法的影響Fig.5 Influence of parameters M on the algorithm
為了表明HPBIL 的算法性能,將算法與采用整數(shù)線(xiàn)性規(guī)劃的MILP[12]、遷徙鳥(niǎo)進(jìn)化的MMBO[13]以及當(dāng)前取得最優(yōu)解的算法RKCS[14]進(jìn)行比較。其中MMBO 的算法參數(shù)分別設(shè)置為解集數(shù)目51,鄰居數(shù)目45,變異概率0.3;RKCS的參數(shù)設(shè)置為鳥(niǎo)巢數(shù)等于設(shè)施的數(shù)量,被拋棄的鳥(niǎo)巢概率0.34,階躍縮放因子0.05,并且在R18、K20、K25 這3 個(gè)測(cè)試實(shí)例上采用了其他不同的參數(shù)設(shè)定。比較結(jié)果如表2所示。
在表2 中“—”表示算法在該測(cè)試用例上沒(méi)有實(shí)驗(yàn)數(shù)據(jù),并將最好解用粗體表示。從表2可以看出HPBIL分別在D10、D12、R14、R16、R18 實(shí)例和D6、D8、D10、D12、R14、R16、R18、K20、K25、K30 實(shí)例上找到比MILP 和MMBO 更好的解。而對(duì)比于RKCS,HPBIL 在除D4、D8 和D12 外的10 個(gè)問(wèn)題上找到更好的解。通過(guò)比較算法的平均尋優(yōu)能力可以看出,HPBIL算法在D6、D8、D10、D12、R14、R16、R18、K20、K25、K30、K40、K50 這12 個(gè)測(cè)試實(shí)例上有更好的平均尋優(yōu)能力,雖然在D4、D6 這兩個(gè)測(cè)試實(shí)例上,HPBIL 算法的平均計(jì)算效率不如RKCS,但在其他的測(cè)試實(shí)例上,HPBIL 算法的平均計(jì)算效率都要優(yōu)于RKCS,尤其在大規(guī)模測(cè)試實(shí)例K30、K40、K50 上,RKCS 的平均計(jì)算時(shí)間分別為1 030.48 s、2 389.74 s 和4 158.26 s,這樣的計(jì)算時(shí)間無(wú)疑是很不理想的。而HPBIL 算法在K30、K40、K50 測(cè)試實(shí)例上的平均計(jì)算時(shí)間分別為42.351 s、169.18 s 和320.04 s,可以看出HPBIL 算法的計(jì)算效率要比RKCS 算法快幾個(gè)數(shù)量級(jí)。為了表明HPBIL 算法結(jié)論的科學(xué)性,使用了Wilcoxon 秩和檢驗(yàn)。Wilcoxon 秩和檢驗(yàn)一般比較兩個(gè)算法之間的值,當(dāng)?shù)贸龅膒值小于0.05時(shí),則表明兩個(gè)算法之間存在顯著性差異。通過(guò)比較HPBIL 和RKCS的平均值,檢驗(yàn)所得出的R+、R-和p值分別為78、0 和0.002。結(jié)果表明HPBIL算法顯著優(yōu)于RKCS的。
表2 幾種算法的性能比較Tab.2 Performance comparison of different algorithms
由于PBIL 算法是群體進(jìn)化算法中的一種,為了驗(yàn)證HPBIL算法在求解CLLP問(wèn)題相較于其他進(jìn)化算法的優(yōu)越性,在與HPBIL 相同評(píng)價(jià)次數(shù)的情況下,與差分進(jìn)化(Differential Evolution,DE)算法進(jìn)行比較。實(shí)驗(yàn)結(jié)果如表3 所示,表3 中帶“*”表示DE 的結(jié)果優(yōu)于RKCS,并且為了突出比較結(jié)果,將更優(yōu)的算法結(jié)果加粗表示。從表3 中可以看出:除了在D8、D10、D12 這3 個(gè)測(cè)試實(shí)例上HPBIL 算法的平均尋優(yōu)能力弱于DE算法,在其他測(cè)試實(shí)例上HPBIL算法都要優(yōu)于DE算法;尤其在K40、K50 這兩個(gè)測(cè)試實(shí)例上,HPBIL 算法的計(jì)算效率要比DE算法高。為了表明結(jié)果的科學(xué)性,使用Wilcoxon秩和檢驗(yàn)比較HPBIL 和DE 的平均值,檢驗(yàn)所得出的R+、R-和p值分別為71、7 和0.021,結(jié)果表明HPBIL 算法是顯著優(yōu)越于DE的。
表3 本文算法與差分進(jìn)化算法的性能比較Tab.3 Performance comparison of the proposed algorithm with differential evolution algorithm
值得說(shuō)明的是,這里使用的DE算法對(duì)CLLP問(wèn)題的求解,除了經(jīng)典DE算法框架外,采用了隨機(jī)鍵表示來(lái)獲得設(shè)施放置次序,并同時(shí)對(duì)設(shè)施放置次序和矩形環(huán)大小尋優(yōu),DE 的整體性能明顯優(yōu)于MILP、SA、MMBO 和RKCS。這說(shuō)明本文針對(duì)CLLP 問(wèn)題所設(shè)計(jì)的同時(shí)優(yōu)化設(shè)施放置次序和矩形環(huán)大小的策略具有算法普適性,可擴(kuò)展于多數(shù)解決該問(wèn)題的方法中;另一方面,通過(guò)算法之間的對(duì)比可以發(fā)現(xiàn),PBIL 所基于的概率計(jì)算方式簡(jiǎn)單高效且具備競(jìng)爭(zhēng)學(xué)習(xí)的優(yōu)點(diǎn),在解決CLLP方面較之其他算法具有更好的性能。
為了直觀(guān)展示HPBIL 的算法性能,給出D10、D12、R14、R16、R18、K20 這6 個(gè)測(cè)試實(shí)例放置布局圖,如圖6~11 所示。從這些圖可以看出,在每一個(gè)實(shí)例中,得到的布局圖均充分利用了矩形環(huán)的8 個(gè)側(cè)面,結(jié)構(gòu)非常緊湊,空間利用率得到極大提升。
圖6 D10實(shí)例的最優(yōu)布局Fig.6 Optimal layout of D10 instance
圖7 D12實(shí)例的最優(yōu)布局Fig.7 Optimal layout of D12 instance
圖8 R14實(shí)例的最優(yōu)布局Fig.8 Optimal layout of R14 instance
圖9 R16實(shí)例的最優(yōu)布局Fig.9 Optimal layout of R16 instance
圖10 R18實(shí)例的最優(yōu)布局Fig.10 Optimal layout of R18 instance
圖11 K20實(shí)例的最優(yōu)布局Fig.11 Optimal layout of K20 instance
本文對(duì)求解CLLP 的PBIL 算法進(jìn)行了研究,提出了一個(gè)HPBIL 算法,算法首先混合了離散PBIL 和連續(xù)PBIL 操作,可同時(shí)對(duì)設(shè)施的放置次序和矩形環(huán)大小進(jìn)行優(yōu)化。該操作方法克服了傳統(tǒng)經(jīng)典算法的高計(jì)算復(fù)雜度的缺點(diǎn),極大地提高了求解CLLP 的效率,并且可推廣至其他啟發(fā)式算法框架中;另一方面,HPBIL混合了局部搜索算法,用局部搜索算法對(duì)每一代的部分最優(yōu)解進(jìn)行進(jìn)一步優(yōu)化,提高了算法的求精能力。仿真結(jié)果表明HPBIL 算法在求解CLLP 算法時(shí)具有良好的性能,總體性能明顯優(yōu)于其他算法。
PBIL 算法是一個(gè)單變量分布估計(jì)算法,并沒(méi)有考慮變量之間的關(guān)系,然而CLLP中設(shè)施的放置次序之間可能存在依賴(lài)關(guān)系。所以,使用多變量分布估計(jì)算法求解CLLP是未來(lái)的研究方向之一,另外,元啟發(fā)式算法在求解組合優(yōu)化和連續(xù)優(yōu)化問(wèn)題時(shí)需要不同的設(shè)計(jì)方案,另外一個(gè)可能的方向是混合多種啟發(fā)式算法圍繞CLLP的混合優(yōu)化屬性進(jìn)行針對(duì)性研究。