李中勝,楊玉中
河南理工大學(xué) 能源科學(xué)與工程學(xué)院,河南 焦作 454003
柔性作業(yè)車間調(diào)度問題(flexible job-shop scheduling problem,F(xiàn)JSP)是對傳統(tǒng)作業(yè)車間調(diào)度的擴(kuò)展,F(xiàn)JSP的柔性表現(xiàn)在加工某道工序的機(jī)器有多種選擇,而且機(jī)器性能的不同可能導(dǎo)致工序的加工時間存在差異[1]。在對FJSP模型研究的過程中,往往需要對機(jī)器故障[2-5]、準(zhǔn)備時間[6]、最大延遲[7]、緩沖區(qū)間[8]、工件移動[9]等這些問題進(jìn)行約束,以貼合實際生產(chǎn)。在對機(jī)器故障的研究上,朱傳軍等人[10]在研究含有機(jī)器故障的FJSP模型中,為保證調(diào)度的穩(wěn)定性和魯棒性,對故障機(jī)器上的未加工工件進(jìn)行重調(diào)度,以減少故障對優(yōu)化指標(biāo)的影響,而Iwona等人[5]對機(jī)器故障問題提出一種先驗規(guī)則、優(yōu)先級規(guī)則的預(yù)測調(diào)度方法,并允許人員計劃性、預(yù)防性的維護(hù),這種方法降低了由機(jī)器故障引起意外中斷的頻率。在對機(jī)器準(zhǔn)備時間和延遲時間的研究上,李明等人[6]采用新型帝國競爭算法對關(guān)鍵目標(biāo)的最大完工時間和總延遲時間進(jìn)行持續(xù)優(yōu)化,同時兼顧非關(guān)鍵目標(biāo)的總耗能,以此來改善作業(yè)車間調(diào)度的結(jié)果。在對緩沖區(qū)間設(shè)置的研究上,曾程寬等人[8]在緩沖區(qū)間有限的條件下,提出以最小化最大完工時間為目標(biāo)的非線性混合整數(shù)規(guī)劃模型,來分析緩沖區(qū)間的大小對車間調(diào)度產(chǎn)生的影響。在對夾具資源有限和工件移動的研究上,吳秀麗等人[11]針對夾具資源有限的情況,提出一種考慮裝卸的FJSP雙資源調(diào)度模型來解決此問題。以上文獻(xiàn),為貼合實際生產(chǎn),考慮了FJSP的眾多因素,但都是在指定機(jī)器數(shù)量的基礎(chǔ)上進(jìn)行生產(chǎn)調(diào)度優(yōu)化,并未在生產(chǎn)調(diào)度之前測算調(diào)度的最小、最優(yōu)機(jī)器數(shù),也沒有在最小機(jī)器數(shù)的條件下研究機(jī)器利用率等其他指標(biāo)的變化趨勢,導(dǎo)致其在優(yōu)化提升方面具有一定的限制性和盲目性,需要相關(guān)研究來補(bǔ)充此內(nèi)容。因此提出一種在滿足最小化最大完工時間和交貨期的條件下,求解最小機(jī)器數(shù)(minimum number of machines,MNM)的雙層優(yōu)化模型。模型的外層目標(biāo)為最小機(jī)器數(shù),主要作用是提供機(jī)器數(shù)量不同的機(jī)器組合,然后以內(nèi)層目標(biāo)、交貨期等約束來選擇符合條件的機(jī)器組合,并在此基礎(chǔ)上,對比機(jī)器組合中的機(jī)器數(shù),最后求得眾多機(jī)器組合中最小的機(jī)器數(shù)。模型的內(nèi)層目標(biāo)為最小化最大完工時間,用于求解在某一機(jī)器組合下的最小化最大完工時間,供外層目標(biāo)使用。通過實例驗證分析,該模型可行、有效,能夠在實際應(yīng)用中減少機(jī)器數(shù),縮減加工成本和人力,節(jié)約能耗。
在研究FJSP問題中,很多學(xué)者提出或引入多種智能算法,來優(yōu)化生產(chǎn)調(diào)度。常用的算法有粒子群算法[12-14]、蟻群算法[15-16]、免疫算法[17-18]、遺傳算法[7,19-24]和其他融合算法[18,21-22]。因遺傳算法具有良好的魯棒性和可擴(kuò)展性[1],所以在FJSP中應(yīng)用較多。如李尚函等人[20]用一種超啟發(fā)式遺傳算法求解模糊柔性作業(yè)車間調(diào)度。石小秋等人[21]提出一種自適應(yīng)變級遺傳雜草融合算法來求解FJSP。在眾多相應(yīng)的研究文獻(xiàn)中,遺傳算法表現(xiàn)出“早熟”的缺點(diǎn)[1,7,20],容易陷入局部最優(yōu),無法取得全局最優(yōu)解。理論上,遺傳算法中的變異操作能夠防止算法“早熟”,但是為了保證算法的穩(wěn)定性,變異率通常設(shè)定很小,導(dǎo)致其無法突破“早熟”。因此采用大變異遺傳算法(great mutation genetic algorithm,GMGA)來減少陷入局部最優(yōu)解的可能,GMGA在迭代過程中[23],當(dāng)所有的個體集中在一起時,進(jìn)行一次遠(yuǎn)大于設(shè)定變異率的變異操作,使其產(chǎn)生更多的新個體,“打散”收斂,從而使整個種群脫離“早熟”。GMGA既保證了遺傳算法的穩(wěn)定性,又大大提高了其突破“早熟”的能力。通過對最小機(jī)器數(shù)優(yōu)化模型的實例驗證分析,證明了算法的有效性。
求解最小機(jī)器數(shù)時,首先要對數(shù)據(jù)中指定的機(jī)器數(shù)(工序所利用到的全部機(jī)器)進(jìn)行調(diào)度,初始化參數(shù),然后對加工時間矩陣,采用遍歷法的方式,減少機(jī)器序列,如調(diào)度共有5個機(jī)器,首先減少一個機(jī)器數(shù),然后分別遍歷刪除第一個機(jī)器、第二個機(jī)器、……、第五個機(jī)器,并刪除對應(yīng)機(jī)器的加工時間序列,其次記錄產(chǎn)生的五種機(jī)器組合和組合對應(yīng)的加工時間矩陣,如果減少一個機(jī)器數(shù)的調(diào)度,仍然滿足約束,再次減少一個機(jī)器數(shù),即減少2個機(jī)器數(shù),按照上述方法再次遍歷刪除機(jī)器,直至調(diào)度不滿足約束,即求得最小機(jī)器數(shù)。其具體約束如下:
(1)所有的機(jī)器在t=0時刻都是可以使用的;
(2)每一個工件都可以在t=0時刻開始加工;
(3)在相同的時刻,每臺機(jī)器只能加工一道工序;
(4)在相同的時刻,每個工件只能在一臺機(jī)器上加工;
(5)工件加工順序不能更改,即待加工工件,只能在緊前工序加工完成后,才能進(jìn)行下一道工序;
(6)機(jī)器在加工工件時不能中斷;
(7)每道工序在可選擇機(jī)器上的加工時間是確定的;
(8)總工件完工時間小于交貨期;
(9)在機(jī)器數(shù)相同、最小化最大完工時間相同的情況下,保留機(jī)器總負(fù)載較小的機(jī)器組合。
MNM優(yōu)化模型所涉及到的符號及定義如表1所示。
表1 符號及其定義Table 1 Symbols and their definitions
通過機(jī)器總數(shù)減去刪除的機(jī)器數(shù)獲得最小機(jī)器數(shù),即優(yōu)化模型目標(biāo)。目標(biāo)函數(shù)表達(dá)式,見式(1):
約束條件的具體表達(dá)式為:
式(2)表示每個工件的工序,必須按照工藝順序進(jìn)行加工;式(3)和式(4)表示一個工序只能在所選機(jī)器空閑且前道工序加工完成后才能加工;式(5)表示每個工序只能從候選機(jī)器集合中選擇一臺機(jī)器;式(6)表示最大完工時間;式(7)表示機(jī)器k的上加工工序總時間小于等于機(jī)器負(fù)載;式(8)表示在最小機(jī)器數(shù)的情況下,總工件的加工時間小于等于交貨期內(nèi)的有效時間;式(9)表示工序的開始時間和加工時間;式(10)表示決策變量的取值范圍;式(11)為最小化最大完工時間。
PC代表某一種機(jī)器組合的最小化最大完工時間F;FG代表在G機(jī)器數(shù)量下,所有機(jī)器組合中最小的F,G為常數(shù);MC為常數(shù),用于記錄在減少同樣數(shù)量機(jī)器的情況下,每次刪除的機(jī)器序號;儲備集用于儲存每次調(diào)度的FG和其對應(yīng)刪除的機(jī)器序號、機(jī)器數(shù)量SC。圖1為求解步驟圖,模型的具體步驟如下:
圖1 求解模型步驟圖Fig.1 Solving model steps diagram
(1)在不刪減機(jī)器的情況下,對機(jī)器運(yùn)用GMGA進(jìn)行求解F,并把機(jī)器總數(shù)賦予G。
(2)初始化參數(shù)MC=0,G,FG=F。
(3)首先刪除G數(shù)量下第一個機(jī)器(MC=1)和其對應(yīng)的加工時間序列,生成新的加工時間矩陣。
(4)導(dǎo)入新的加工時間矩陣,用GMGA進(jìn)行求解,并記錄當(dāng)前機(jī)器組合下的最小化最大完工時間,即PC,同時記錄刪除的機(jī)器數(shù)量SC。
(5)判斷k是否小于G,如果MC
(6)比較當(dāng)前機(jī)器組合下的PC與減少同樣機(jī)器數(shù)量下的FG的大小,如果PC≤FG,進(jìn)行(7)操作。如果PC>FG,直接轉(zhuǎn)(9)操作。
(7)判斷PC是否等于FG,如果相等,比較FG和PC對應(yīng)調(diào)度方案下的機(jī)器負(fù)載,PC負(fù)載小轉(zhuǎn)(8),PC負(fù)載大轉(zhuǎn)(9)。如果PC≠FG,轉(zhuǎn)(8)。
(8)把PC得到的最小化最大完工時間F賦值給FG,始終保證FG為同樣機(jī)器數(shù)量下最小的F,記錄PC對應(yīng)的機(jī)器號,并放在同樣機(jī)器數(shù)量下的儲備集中。
(9)重新恢復(fù)G數(shù)量下的加工時間矩陣,進(jìn)行MC=MC+1操作,刪除下一個機(jī)器號和其對應(yīng)的加工時間序列,生成新的加工時間矩陣,轉(zhuǎn)(4)。
(10)判斷在此機(jī)器數(shù)下的生產(chǎn)總時間是否大于交貨期,如果大于交貨期,輸出上一代的G、FG、SC,結(jié)束求解,如果小于交貨期,轉(zhuǎn)(11)。注:假設(shè)減少一個機(jī)器數(shù)時,發(fā)現(xiàn)其不符合交貨期,則輸出上代未減少機(jī)器數(shù)時的G、FG、SC,參數(shù)儲存在儲備集中。
(11)剔除在G數(shù)量下,與FG對應(yīng)的機(jī)器號,刪除機(jī)器號對應(yīng)的加工時間序列,并賦值G=G-1,生成新的加工時間矩陣,覆蓋上一代G數(shù)量下的加工時間矩陣,轉(zhuǎn)(3)。
編碼就是把解的參數(shù)形式與基因串的表達(dá)形式對應(yīng)起來。針對FJSP問題,通常采用基于工序編碼和基于機(jī)器編碼相結(jié)合的二維染色體編碼方式,即雙層實值編碼。高變異率下實值編碼優(yōu)于二進(jìn)制編碼,實值編碼可以提高搜索能力,且不會損害收斂特征[25]。其運(yùn)用兩個L維的數(shù)據(jù)串,來描述每道工序在選定機(jī)器上的加工順序,L代表總工序數(shù),見式(12):
OS(operation sequencing)數(shù)據(jù)串用來確定工序Oij的加工位置,MA(machine assignment)數(shù)據(jù)串用來確定每道工序Oij的加工機(jī)器Mk。如表2,OS行中2工件的第一次出現(xiàn),表示2工件的第一道工序,2工件的第二次出現(xiàn),表示2工件的第二道工序,由此對應(yīng)的MA位置,代表工序在此機(jī)器上加工。如表2中工序的加工順 序是(O21→O41→O31→O11→O42→O22→O32→O12→O23→O43→O33→O13→O14→O24→O44→O34),OS工序?qū)?yīng)的MA加工機(jī)器為(M1,M3,M6,M3,M7,M4,M2,M4,M5,M2,M6,M7,M5,M8,M2,M3),數(shù)據(jù)引用文獻(xiàn)[26]。
表2 編碼表達(dá)式實例Table 2 Examples of coding expressions
對FJSP的染色體進(jìn)行解碼,就是確定加工工序在對應(yīng)加工機(jī)器上的起止時間。本文采用半主動調(diào)度的解碼方式[27-28]:在滿足工序約束的情況下,從左至右遍歷OS、MA,即依次根據(jù)工序染色體OS上的加工順序,染色體MA上對應(yīng)的機(jī)器順序,并對照各工序的加工時間,累計計算到最后一道工序的結(jié)束時間,即得到完工時間。對表2數(shù)據(jù)進(jìn)行解碼,其結(jié)果見圖2車間調(diào)度甘特圖。
圖2 機(jī)器分配甘特圖Fig.2 Gantt chart of machine allocation
選擇操作的作用就是優(yōu)勝劣汰,在父代種群中選出優(yōu)良個體,給予優(yōu)良個體更大的生存概率,實現(xiàn)復(fù)制、交叉重組等操作。選擇操作采用順序選擇策略[28-29]來設(shè)置固定化的概率,具體的操作步驟為:根據(jù)個體適應(yīng)度值的大小進(jìn)行排序,其次為最優(yōu)的個體設(shè)定選擇概率q,則排序后的第n個個體的選擇概率見公式(13),其優(yōu)點(diǎn)是能最大限制地保留最優(yōu)個體。NP表示種群總數(shù),選擇概率為0.9,個體適應(yīng)度值為最小化最大完工時間。
交叉操作采用Shi在1997年提出的優(yōu)先操作交叉算子(priority operation crossover,POX),基于雙層編碼的POX具體操作過程為[28]:首先將工件集I隨機(jī)分為2個互補(bǔ)子集I1和I2,I1、I2非空,在屬于I1的父代P1中選擇出集合I1里面的工件,復(fù)制到子代offspring中,同時在屬于I2的父代P2中選擇出集合I2里面的工件,復(fù)制到子代offspring中,復(fù)制過程中集合I1、I2的工序順序,依照其在父代P1、P2的位置順序進(jìn)行排列組合,同時復(fù)制工件對應(yīng)的機(jī)器號,POX交叉過程中保留了父代部分工件的位置,而且子代保留了父代在每臺機(jī)器上加工工序的順序,具有很好的保優(yōu)作用。POX交叉的具體過程見圖3,圖3應(yīng)產(chǎn)生兩個子代,但由于圖線交叉,不易理解,所以另一個子代并未在圖中顯示。
圖3 POX交叉過程Fig.3 POX crossover process
基于遺傳算法“早熟”的特點(diǎn),采用大變異策略來彌補(bǔ)這種缺陷。GMGA中大變異的操作步驟為[23-24]:首先設(shè)置合適的變異率進(jìn)行搜索,同時記錄迭代過程中的最大適應(yīng)度值,一旦迭代的過程中,出現(xiàn)種群個體比較集中的現(xiàn)象,即平均適應(yīng)度值滿足δ×Fmax 在大變異策略下的變異操作,采用互換變異的方式,具體步驟為[1,25]:首先按照事先設(shè)置的變異概率,判斷個體是否進(jìn)行變異,然后對確定變異的個體,隨機(jī)選擇兩個變異位置,并交換這兩個變異位置上的OS、MA基因,見圖4。 圖4 互換變異操作Fig.4 Swap mutation operation 大變異遺傳算法整體流程圖見圖5。 圖5 算法流程圖Fig.5 Algorithm flowchart 在進(jìn)行實例分析時,首先要對GMGA的參數(shù)進(jìn)行設(shè)置。經(jīng)過大量算例驗證[20-21,26,30-32],GMGA在交叉率0.8、變異率0.08效果最優(yōu)。對變異率進(jìn)行敏感性分析,采用文獻(xiàn)[26]的數(shù)據(jù)做驗證說明。圖6表示在變異率為0.1、0.08、0.03的情況下,種群均值和迭代速度的變化趨勢。從圖6中可以看到在變異率為0.08時,收斂速度下降最快,種群均值最小,并能得到最優(yōu)解。在變異率0.1和0.03情況下,其最優(yōu)解、收斂速度、適應(yīng)度平均值(即圖6中種群均值的變化)稍遜于變異率為0.08情況下的運(yùn)算結(jié)果,所以在求解模型時采用0.08的變異率。 圖6 不同變異率下的仿真效果Fig.6 Simulation effect under different mutation rates 測試環(huán)境是在Window10操作系統(tǒng)、處理器Intel?CoreTMi5-4200M CPU@2.50 GHz、運(yùn)行內(nèi)存8 GB的個人PC電腦上進(jìn)行測試。運(yùn)用GMGA對文獻(xiàn)[30]、[31]、[32]中的三組實例數(shù)據(jù)進(jìn)行求解驗證、對比分析。其求解思路是在最小化最大完工時間的基礎(chǔ)上考慮最小機(jī)器數(shù),依據(jù)最小化最大完工時間與交貨期的比較結(jié)果,來判定是否進(jìn)一步減少機(jī)器數(shù)或終止運(yùn)算。 圖7采用文獻(xiàn)[30]的數(shù)據(jù)(10工件、8機(jī)器、35工序),其主要運(yùn)用改進(jìn)型的蝙蝠算法(bat algorithm,BA)和非支配排序遺傳算法(non-dominated sorting genetic algorithm II,NSGA-II)進(jìn)行對比分析。由于文獻(xiàn)未給交貨期,所以采用文獻(xiàn)中的最優(yōu)解作為交貨期,以下兩組數(shù)據(jù)的處理也采用此方法。獨(dú)立運(yùn)行20次,其結(jié)果見表3。GMGA達(dá)到最優(yōu)解的概率為0.45,NSGA-II達(dá)到最優(yōu)解的概率為0.15,說明GMGA具有較強(qiáng)的穩(wěn)定性。其次機(jī)器數(shù)減少1臺,最優(yōu)解從85、79提升到76,機(jī)器利用率分別提升了22.39%、12.76%。從以上四個方面來看,GMGA在機(jī)器數(shù)、最優(yōu)解、機(jī)器利用率、算法穩(wěn)定性上均優(yōu)于其他兩種算法(下文表中“—”表示文獻(xiàn)未給出相關(guān)數(shù)據(jù)或者此項無數(shù)據(jù))。 圖7 基于GMGA的調(diào)度結(jié)果(采用文獻(xiàn)[30]的數(shù)據(jù))Fig.7 Scheduling results based on GMGA(using Ref.[30]data) 表3 算法對比結(jié)果(采用文獻(xiàn)[30]的數(shù)據(jù))Table 3 Algorithm comparison results(using Ref.[30]data) 圖8采用文獻(xiàn)[31]的數(shù)據(jù)(5工件、11機(jī)器、26工序),其主要運(yùn)用基于直覺模糊集相似度值的遺傳算法(genetic algorithm based on intuitionistic fuzzy set similarity,IFS_GA)和NSGA-II進(jìn)行對比分析。獨(dú)立運(yùn)行20次,其結(jié)果如表4。GMGA達(dá)到最優(yōu)解的概率為0.8,說明GMGA具有很強(qiáng)的尋優(yōu)能力和穩(wěn)定性。其次機(jī)器數(shù)減少3臺,最優(yōu)解從913、793提升到781,機(jī)器利用率分別提升了12.09%、6.56%。從以上三個方面來看,GMGA在機(jī)器數(shù)、最優(yōu)解、機(jī)器利用率上均優(yōu)于其他兩種算法。 圖8 基于GMGA的調(diào)度結(jié)果(采用文獻(xiàn)[31]的數(shù)據(jù))Fig.8 Scheduling results based on GMGA(using Ref.[31]data) 表4 算法對比結(jié)果(采用文獻(xiàn)[31]的數(shù)據(jù))Table 4 Algorithm comparison results(using Ref.[31]data) 圖9采用文獻(xiàn)[32]的數(shù)據(jù)(6工件、10機(jī)器、36工序),其主要運(yùn)用基本遺傳算法和多種群遺傳算法進(jìn)行對比分析。獨(dú)立運(yùn)行20次,結(jié)果如表5。GMGA達(dá)到最優(yōu)解的概率為0.45,說明GMGA具有較強(qiáng)的穩(wěn)定性。其次機(jī)器數(shù)減少3臺,最優(yōu)解從55、50提升到49,機(jī)器利用率分別提升了20.3%、16.1%。從以上三個方面來看,GMGA在機(jī)器數(shù)、最優(yōu)解、機(jī)器利用率上均優(yōu)于其他兩種算法。 表5 算法對比結(jié)果(采用文獻(xiàn)[32]的數(shù)據(jù))Table 5 Algorithm comparison results(using Ref.[32]data) 圖9 基于GMGA的調(diào)度結(jié)果(采用文獻(xiàn)[32]的數(shù)據(jù))Fig.9 Scheduling results based on GMGA(using Ref.[32]data) 綜上所述,模型在減少機(jī)器的情況下,還能滿足交貨期等其他約束,說明模型假設(shè)成立,有效且可行。從最優(yōu)解和穩(wěn)定性兩方面來看,算法有效、可行。結(jié)合文獻(xiàn)[30-32]可以看出,在最小機(jī)器數(shù)的模型中,機(jī)器柔性越大,機(jī)器利用率就越高。在柔性較大的情況下,機(jī)器數(shù)比工件數(shù)越大,其減少機(jī)器數(shù)的可能性就越大,減少的機(jī)器數(shù)也就越多。 通過對MNM優(yōu)化模型和GMGA的研究,并結(jié)合實例驗證分析,結(jié)果表明在可接受的交貨期內(nèi),所構(gòu)建的MNM優(yōu)化模型有效,可使車間調(diào)度性能明顯提升,能為企業(yè)生產(chǎn)管理提供相應(yīng)的指導(dǎo),是一種實現(xiàn)高效率、低成本的有效調(diào)度方法,進(jìn)一步豐富了車間調(diào)度的研究內(nèi)容。本文提出的問題,在資源限制上僅研究了機(jī)器數(shù)量和加工時間,為了進(jìn)一步貼合實際生產(chǎn),應(yīng)系統(tǒng)全面考慮機(jī)器效能、機(jī)器耗能、機(jī)器固定成本等因素,進(jìn)行全資源優(yōu)化,以此來完善模型,這也是下一步研究的方向。3 實例分析與結(jié)果
3.1 變異率敏感性分析
3.2 模型、算法對比分析
4 結(jié)語