摘 要: 針對(duì)螞蟻算法在求解置換流水車間調(diào)度問題時(shí)易陷入局部最優(yōu)以及計(jì)算時(shí)間較長(zhǎng)的缺點(diǎn),對(duì)最大最小螞蟻系統(tǒng)(MMAS)進(jìn)行了改進(jìn)。在該算法中,采用NEH啟發(fā)式算法提高初始解質(zhì)量,并通過自適應(yīng)的調(diào)節(jié)策略進(jìn)一步提高蟻群算法的搜索能力。運(yùn)用提出的混合算法求解Taillard基準(zhǔn)測(cè)試集,并將測(cè)試結(jié)果與其他算法進(jìn)行比較,驗(yàn)證了該調(diào)度算法的有效性。
關(guān)鍵詞: 置換流水車間調(diào)度問題;自適應(yīng); NEH啟發(fā)式算法
置換流水車間是很多實(shí)際流水線生產(chǎn)調(diào)度問題的簡(jiǎn)化模型,是目前研究最廣泛的一類經(jīng)典的調(diào)度問題。由于置換流水車間調(diào)度問題屬于NP-hard難題,不存在多項(xiàng)式精確求解算法,因此,對(duì)這類問題的研究具有重要意義。
求解置換流水車間調(diào)度問題的方法大致可以分為三類[1]:經(jīng)典算法(如線性規(guī)劃、動(dòng)態(tài)規(guī)劃、整數(shù)規(guī)劃、分枝定界等)、啟發(fā)式算法(如Gupta法、Palmer法、Johnson法、CDS法、NEH法等)和基于人工智能的元啟發(fā)式算法(如模擬退火、禁忌搜索、遺傳算法、螞蟻算法等)。經(jīng)典算法的計(jì)算復(fù)雜性一般很大,只適合求解小規(guī)模置換流水車間調(diào)度問題,在工程中往往不實(shí)用。啟發(fā)式算法通過一定的規(guī)則可以快速地構(gòu)造出問題的解,但通常解的質(zhì)量較差[2]?;谌斯ぶ悄艿脑獑l(fā)式算法能夠較快地構(gòu)造出問題的解,因此,在置換流水車間調(diào)度問題中被廣泛使用。
蟻群算法是受到自然界中真實(shí)螞蟻的啟發(fā),由意大利學(xué)者DORIGO M于1991年提出的一種元啟發(fā)式算法。該算法具有魯棒性和通用性等良好特性,在求解作業(yè)車間、流水車間等調(diào)度問題上取得了較好的效果。但是,傳統(tǒng)的蟻群算法存在計(jì)算時(shí)間長(zhǎng)和易陷入停滯的問題,故本文從結(jié)合NEH算法和自適應(yīng)調(diào)節(jié)策略兩方面來改善蟻群算法的性能,經(jīng)Taillard基準(zhǔn)測(cè)試驗(yàn)證,改進(jìn)后的蟻群算法有效。
1 問題描述
置換流水車間調(diào)度問題研究的是n個(gè)工件在m臺(tái)機(jī)器上的流水加工過程,所有工件以相同的順序在每一臺(tái)機(jī)器上加工完成,同時(shí)約定每個(gè)工件在每臺(tái)機(jī)器上只加工一次,每臺(tái)機(jī)器每次最多只能加工一個(gè)工件,各工件在各機(jī)器上所需的加工時(shí)間已知,要求得到某調(diào)度方案使得總加工時(shí)間最小。定義J=(j1,…,jn)為所有機(jī)器上的一個(gè)加工排序,ti,j為操作的執(zhí)行時(shí)間,Ci,j表示操作的完成時(shí)間。則加工任務(wù)jk在機(jī)器i上的完成時(shí)間C按式(1)計(jì)算:
2 蟻群算法
2.1 蟻群算法簡(jiǎn)介
螞蟻是一種沒有視覺的動(dòng)物,但是它們可以通過信息素,協(xié)同找到食物和巢穴之間的最短路徑[3]。螞蟻在運(yùn)動(dòng)過程中能夠感知這種物質(zhì)的存在及其強(qiáng)度,并以此指導(dǎo)自己的運(yùn)動(dòng)方向,使螞蟻傾向于朝著該物質(zhì)強(qiáng)度高的方向運(yùn)動(dòng)。這樣,由大量螞蟻組成的蟻群的集體行為便表現(xiàn)出一種自催化的正反饋行為,較短路徑上會(huì)有較多的信息素累積,越來越多的螞蟻選擇信息素濃度高的路徑,而其他路徑上的信息素濃度卻會(huì)隨時(shí)間衰減,最終蟻群能找到一條從食物源到巢穴的最短路徑[4]。
蟻群算法最初用于解決旅行商問題,之后陸續(xù)滲透到其他領(lǐng)域中。較早把蟻群算法應(yīng)用到置換流水車間問題的是YING K C和LIAO C J,后者在Tailard的benchmark問題上做了測(cè)試,證實(shí)該方法非常有效。
2.2 蟻群算法
本文以求解置換流水車間問題說明MMAS模型。求解這類問題有兩種解構(gòu)造模式,分別為弧模式和節(jié)點(diǎn)模式[5]。本文采用的是節(jié)點(diǎn)模式。
在解構(gòu)造的結(jié)點(diǎn)模式下,代表流水車間調(diào)度問題的有向圖G=(N,A),如圖1所示。其中,N={Oij}是圖中的節(jié)點(diǎn)集合,節(jié)點(diǎn)Oij代表作業(yè)j 位于作業(yè)處理序列π的第i個(gè)位置;A是圖G中部分連接節(jié)點(diǎn)集N中各節(jié)點(diǎn)的有向弧的集合,連接節(jié)點(diǎn)Oij和O(i+1),l的有向弧方向?yàn)閺腛ij~O(i+1),l。這里的路徑選擇概率為:
在節(jié)點(diǎn)模式下,式(2)中Nk(Oij)={O(i+1),l|l?埸π′}代表節(jié)點(diǎn)Oij的可行領(lǐng)域集合。其中τij和ηij分別代表對(duì)應(yīng)于節(jié)點(diǎn)Oij的信息素濃度和基于問題的啟發(fā)式信息。p表示人工蟻搜索過程中從節(jié)點(diǎn)O(i-1)π(i-1)移到節(jié)點(diǎn)Oij的概率。
從虛構(gòu)節(jié)點(diǎn)job0出發(fā),按照式(2)給出的狀態(tài)遷移規(guī)則,在G圖中一步步地構(gòu)造出問題的解,蟻群算法的流程如下:
(1)設(shè)置參數(shù)。設(shè)置迭代次數(shù)counter=0,設(shè)置最大迭代次數(shù)Ncmax。計(jì)算每個(gè)工件的總加工時(shí)間Si(i=1,…,n),定義能見度ηij=Si。按照工件總加工時(shí)間Si最大優(yōu)先的原則計(jì)算出最大流程時(shí)間makespan,設(shè)置信息素賦初始值τ0=1/((1-ρ)·makespan);τmax=τ0,τmin=τmax/5。
(2)初始化m個(gè)螞蟻,將m個(gè)螞蟻放在虛擬節(jié)點(diǎn)job0上。
(3)每個(gè)螞蟻都按照式(2)選擇下一步路徑。
(4)將新選擇的工序添加到禁忌表中,判斷是否遍歷了所有的工件,是則執(zhí)行步驟(5),否則執(zhí)行步驟(3)。
(5)按照式(3)更新信息素。
τij=ρ·τij+?駐τij(3)
其中,ρ為信息素殘留系數(shù)(1-ρ為揮發(fā)系數(shù));Δτij=1/Cbest,令Cbest為迭代以來最優(yōu)解,|Cbest|為Cbest的makespan值,如果Cbest中位置j上工件不為i,則Δτij為0,否則Δτij=1/|Cbest|。信息素取值區(qū)間為[τmin,τmax],若τij>τmax,則設(shè)定τij=τmax;若τij>τmin,則設(shè)定τij=τmin。這樣可以較好地防止早熟現(xiàn)象。
(6)count++。如果count<Ncmax,則清空禁忌表,返回步驟(2)繼續(xù)執(zhí)行;否則,結(jié)束循環(huán)。
3 MMAS的優(yōu)化
3.1 NEH啟發(fā)式算法
NEH啟發(fā)式算法是由NAWAZ M、ENSCORE E、和HAM I共同提出的算法[6],該算法步驟如下:
(1)按n個(gè)工件在機(jī)器上總加工時(shí)間遞減的順序排列各個(gè)工件。
(2)取前兩個(gè)工件調(diào)度使部分最大流程時(shí)間達(dá)到極小。
(3)從k=3~n把第k個(gè)工件插入到k個(gè)可能的位置,求得最小部分的最大流程時(shí)間。
3.2 與NEH算法的結(jié)合
(1)獲取初始解。利用NEH啟發(fā)式算法計(jì)算得到最大流程時(shí)間makespan,并定義τ0=1/((1-ρ)·makespan)。
(2)部分NEH局部搜索。在使用MMAS構(gòu)造出路徑之后,對(duì)構(gòu)造的工件順序按照NEH啟發(fā)式算法的步驟(2)、(3)構(gòu)造出解。利用NEH啟發(fā)式算法進(jìn)行局部尋優(yōu),可以進(jìn)一步提高M(jìn)MAS的求解質(zhì)量。但是為了保證算法的時(shí)間效率,在此只對(duì)Nmax次迭代中的前N次迭代利用NEH啟發(fā)式算法對(duì)迭代最優(yōu)螞蟻進(jìn)一步局部尋優(yōu)。
3.3 自適應(yīng)信息素?fù)]發(fā)系數(shù)
與NEH算法相結(jié)合,雖然極大程度地提高了MMAS解質(zhì)量,但是也從一定程度上加速了MMAS的局部收斂速度。為此,本文引入自適應(yīng)改變揮發(fā)度系數(shù)的方法,以進(jìn)一步提高M(jìn)MAS的全局搜索能力。
在算法模型中,信息素?fù)]發(fā)系數(shù)ρ的大小直接關(guān)系到蟻群算法的全局搜索能力及收斂速度[3]。ρ過小,從未被搜索到的節(jié)點(diǎn)的信息量會(huì)減少到接近于0,降低了算法的全局搜索能力;而ρ過大,以前搜索過的解被選擇的可能性過大,也會(huì)影響到算法的全局搜索能力。因此可以自適應(yīng)地改變?chǔ)训闹担?dāng)最優(yōu)值在一定循環(huán)次數(shù)內(nèi)沒有明顯改變時(shí),降低ρ的值。公式如下:
ρnew=0.95ρold 0.95ρold≥ρmin
ρmin 其他(4)
其中,ρmin為ρ的最小值,用來防止ρ過小,降低算法收斂速度。
3.4 改進(jìn)MMAS的實(shí)現(xiàn)流程
改進(jìn)后的MMAS算法求解置換流水車間問題的流程圖如圖2所示。
(1)初始化各個(gè)參數(shù)。設(shè)置螞蟻數(shù)量為m、迭代次數(shù)counter=0、最大迭代次數(shù)為Ncmax、局部搜索次數(shù)為N。計(jì)算每個(gè)工件的總加工時(shí)間Si(i=1,…,n),定義能見度ηij=Si。設(shè)置信息素殘留系數(shù)為ρ,ρmin為ρ的最小值,定義Nm次迭代最優(yōu)解相同,則判定陷入局部最優(yōu)。
(2)利用NEH啟發(fā)式算法得到總加工時(shí)間的初始值makespan,設(shè)置τ0=τmax=1/((1-ρ)·makespan),τmin=1/5·τmax。
(3)將各只螞蟻放在虛擬節(jié)點(diǎn)job0上,對(duì)于每只螞蟻,按照式(2)選擇下一步路徑,直到所有螞蟻均構(gòu)造出解。
(4)若count<N,則利用NEH啟發(fā)式算法的后兩步對(duì)最優(yōu)迭代螞蟻選擇的路徑做進(jìn)一步局部尋優(yōu);否則,執(zhí)行步驟(5)。
(5)判斷迭代最優(yōu)解相同次數(shù)小于Nm,則執(zhí)行步驟(6);否則,按照式(4)改變揮發(fā)系數(shù)的值,再執(zhí)行步驟(6)。
(6)按照式(3)進(jìn)行信息素的更新,檢查信息素的邊界,使其保持在[τmin,τmax]的范圍內(nèi)。
(7)count++。如果count<Ncmax,清空禁忌表,返回步驟(3)繼續(xù)向下執(zhí)行;否則,結(jié)束循環(huán),輸出結(jié)果。
4 仿真實(shí)驗(yàn)
本文測(cè)試數(shù)據(jù)采用Taillard在1993年提出的基準(zhǔn)測(cè)試問題,并將運(yùn)行結(jié)果與其他參考文獻(xiàn)提出的算法進(jìn)行比較,以此驗(yàn)證提出的改進(jìn)蟻群算法是有效的。
本文算法各參數(shù)設(shè)置如下:螞蟻個(gè)數(shù)na=20,揮發(fā)系數(shù)ρ=0.99,揮發(fā)系數(shù)最小值ρmin=0.5,α=1.0,β=4.0,最大迭代次數(shù)為300,局部搜索次數(shù)為10。本文選取每種規(guī)模系列問題中的第一個(gè)問題進(jìn)行計(jì)算,并與NEARCHOU A C[5]提出的算子遺傳算法(GA)、Lian Zhigang[7]提出的NPSO粒子群算法進(jìn)行比較,每個(gè)算例連續(xù)運(yùn)行20次,記錄其中的最優(yōu)結(jié)果,如表1所示。其中,BS表示運(yùn)行結(jié)果中的最優(yōu)解,RPD(Relative Percentage Deviation)表示相對(duì)誤差百分率。由表1可知,相比其他兩種算法,本文提出的算法在求解Taillard系列問題方面能夠更好地收斂在最優(yōu)解附近。
本文針對(duì)解置換流水車間調(diào)度問題提出了一種改進(jìn)的蟻群算法。在該算法中,采用NEH算法產(chǎn)生初始解,并利用自適應(yīng)揮發(fā)系數(shù)的方法避免算法早熟,使分散搜索和集中搜索達(dá)到有效平衡,提高了算法的搜索能力。Taillard系列基準(zhǔn)問題測(cè)試表明,本文的算法是有效的。
參考文獻(xiàn)
[1] 高海兵,周馳.廣義粒子群優(yōu)化模型[J].計(jì)算機(jī)學(xué)報(bào),2005,28(12):1980-1987.
[2] 王凌.車間調(diào)度及其遺傳算法[M].北京:清華大學(xué)出版社,2003.
[3] 李士勇.蟻群算法及其應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[4] 吳啟迪,汪鐳.智能蟻群算法及其應(yīng)用[M].上海:上??萍冀逃霭嫔纾?004.
[5] NEARCHOU A C.The effect of various operators on the genetic search for large scheduling problems[J].InternationalJournal of Production Economy,2004,88(1):191-203.
[6] NAWAZ M,ENSCORE E,HAM I.A heuristic algorithm forthe mmachine,n job flow shop[J].The International Journalof Management Sciences,1983,11(1):91-95.
[7] Lian Zhigang,Gu Xingsheng,Jiao Bin.A Novel particle swarmoptimization algorithm for permutation flow shop scheduling to minimize makespan[J].Chaos,Solitons and Fractals,2008,35(5):851-861.