張 祥,王 艷,紀(jì)志成
(江南大學(xué) 物聯(lián)網(wǎng)技術(shù)應(yīng)用教育部工程研究中心,江蘇 無(wú)錫 214122)
為滿足日益增長(zhǎng)的生產(chǎn)力需求,必須加快國(guó)家工業(yè)現(xiàn)代化的發(fā)展。調(diào)度問(wèn)題是制造業(yè)生產(chǎn)過(guò)程中的重要問(wèn)題,更加智能的加工流程和更加合理的生產(chǎn)分配是國(guó)家工業(yè)化和國(guó)防現(xiàn)代化的有效支撐。在調(diào)度問(wèn)題中,作業(yè)車間調(diào)度問(wèn)題(Job-shop scheduling problem,JSP)是1個(gè)具有重要意義的基礎(chǔ)問(wèn)題,通過(guò)對(duì)加工機(jī)器和工件進(jìn)行合理調(diào)度,使結(jié)果符合性能指標(biāo)要求。隨著制造業(yè)的發(fā)展和車間生產(chǎn)流水線的靈活性增強(qiáng),在JSP的基礎(chǔ)上,考慮了智能車間生產(chǎn)多樣性,提出了柔性作業(yè)車間調(diào)度問(wèn)題(Flexible job-shop scheduling problem,FJSP)。JSP中工件各道工序只能在指定的1臺(tái)機(jī)器上生產(chǎn),相比于JSP,FJSP的機(jī)器制約性較低,FJSP中各工件的每道工序可自由選擇加工機(jī)器,所以FJSP為更加難以計(jì)算的非確定性多項(xiàng)式困難(Non-deterministic polynomial hard,NP-hard)問(wèn)題。
動(dòng)態(tài)柔性車間調(diào)度問(wèn)題(Dynamic flexible job-shop scheduling problem,DFJSP)則致力于解決車間調(diào)度中出現(xiàn)的動(dòng)態(tài)事件,并盡快給出應(yīng)對(duì)調(diào)度方案。動(dòng)態(tài)事件主要包括2種類型:工件類型中的緊急工件插入、交期更改、動(dòng)態(tài)優(yōu)先級(jí)等,機(jī)器類型中的機(jī)器故障、機(jī)器過(guò)載等問(wèn)題。多目標(biāo)動(dòng)態(tài)柔性車間調(diào)度問(wèn)題(Multi-objective dynamic flexible job-shop scheduling problem,MODFJSP)在DFJSP的基礎(chǔ)上增加多個(gè)優(yōu)化目標(biāo),并且根據(jù)納什均衡[1]定義可知,各個(gè)目標(biāo)都為了尋求自己的最優(yōu)值而互相博弈,結(jié)果都無(wú)法達(dá)到自己的最優(yōu)值,因此如何尋找一種兼顧各個(gè)目標(biāo)的方案值得深入研究。
匡鵬等[2]將預(yù)測(cè)控制運(yùn)用在DFJSP中的動(dòng)態(tài)時(shí)間預(yù)測(cè)上,采用遺傳算法與退火算法,確定了耗時(shí)最小的最佳調(diào)度方案。盡管上述工作對(duì)動(dòng)態(tài)事件進(jìn)行預(yù)測(cè),不用進(jìn)行人為干預(yù),自動(dòng)化程度高,但是預(yù)測(cè)精度難以與實(shí)際情況完全吻合,無(wú)法做到準(zhǔn)確的動(dòng)態(tài)調(diào)度。潘全科等[3]針對(duì)動(dòng)態(tài)車間調(diào)度問(wèn)題,根據(jù)待加工工件選取原則再次進(jìn)行調(diào)度。該研究中車間模型柔性化程度不高,不適用于柔性化程度較高的車間生產(chǎn)。吳秀麗[4]為研究多目標(biāo)動(dòng)態(tài)調(diào)度問(wèn)題,設(shè)計(jì)了多目標(biāo)免疫遺傳算法,但是該文將多目標(biāo)優(yōu)化轉(zhuǎn)化成單目標(biāo)優(yōu)化,所以無(wú)法獲取適用于各個(gè)目標(biāo)的非支配解集。Fattahi等[5]考慮了多個(gè)動(dòng)態(tài)事件,其中包括新機(jī)器加入、新工件加入和工件加工時(shí)間變化,但是同樣是將各個(gè)目標(biāo)優(yōu)化后進(jìn)行求解,所以不具有多目標(biāo)解的特征。Rangsaritratsamee等[6]提出了一種同時(shí)考慮效率與穩(wěn)定性的多目標(biāo)優(yōu)化策略,將各個(gè)目標(biāo)的評(píng)價(jià)函數(shù)加權(quán)相加后得到單個(gè)評(píng)價(jià)函數(shù),但是單目標(biāo)優(yōu)化問(wèn)題的解并不能完全反映多目標(biāo)優(yōu)化問(wèn)題解的特征。
綜上所述,為了能夠準(zhǔn)確且快速地響應(yīng)動(dòng)態(tài)事件,采用根據(jù)突發(fā)狀況設(shè)計(jì)應(yīng)對(duì)策略的動(dòng)態(tài)交互層(Dynamic interaction layer,DIL),同時(shí)為了兼顧多個(gè)目標(biāo)而設(shè)計(jì)了多目標(biāo)粒子群遺傳算法(Multi-objective particle swarm genetic algorithm,MOPSGA)算法。通過(guò)仿真驗(yàn)證了算法的實(shí)用性以及DIL針對(duì)擾動(dòng)因子的處理能力。
在車間調(diào)度工件加工信息方面,MODFJSP依然采用與FJSP[7]相同的工件描述:共有n件工件{J1,J2,…,Jn}在m臺(tái)機(jī)器{M1,M2,…,Mm}上加工。每件工件都有其固定的工序及工序數(shù)Ji,且每道工序可以自由選擇加工機(jī)器,由于機(jī)器差異,機(jī)器之間加工同樣的工序耗用時(shí)間不同[8,9]。
MODFJSP即為各個(gè)工件的每一道工序選擇合適的加工機(jī)器,調(diào)度結(jié)果滿足預(yù)期性能要求[10]。為了將MODFJSP問(wèn)題規(guī)范化需要滿足下列規(guī)范:
(1)0時(shí)刻所有機(jī)器處于等待加工狀態(tài),開(kāi)始加工時(shí)每臺(tái)機(jī)器可以任意選擇任意1個(gè)工件;
(2)各工件按照一定工序加工,從工序1開(kāi)始,直到全部工序加工結(jié)束,同一個(gè)工件不能同時(shí)在多個(gè)機(jī)器上加工;
(3)各工序加工時(shí)間包括加工時(shí)間和各種相關(guān)準(zhǔn)備工作時(shí)間。
柔性車間調(diào)度變量及意義如表1所示。
表1 DFJSP變量及含義表
由于近年來(lái)全球日漸增長(zhǎng)的能源消耗,興起了節(jié)能和對(duì)新能源的探究風(fēng)潮。本文研究?jī)?yōu)化目標(biāo)為總體任務(wù)完工時(shí)間、機(jī)器能耗以及機(jī)器負(fù)載,公式如下
(1)
(2)
f2=min(t)
(3)
f3=min(E)
(4)
近幾十年來(lái),國(guó)內(nèi)外多名學(xué)者相繼提出多種多目標(biāo)優(yōu)化算法,例如多目標(biāo)遺傳算法(Multi-objective genetic algorithm,MOGA)、非支配排序遺傳算法(Non-dominated sorting genetic algorithm,NSGA)、強(qiáng)度帕累托進(jìn)化算法(Strength Pareto evolutionary algorithm,SPEA)[11]。在NSGA上優(yōu)化得到的NSGA-Ⅱ[12]多目標(biāo)優(yōu)化算法,在NSGA的基礎(chǔ)上加入快速支配排序、保留精英種群和擁擠度淘汰等策略,在快速獲取非支配解的同時(shí),通過(guò)擁擠度淘汰來(lái)提高種群多樣性,也相應(yīng)增加了非支配解的數(shù)目;但是此算法在進(jìn)化策略上卻有著嚴(yán)重的缺陷,由于其策略采用的下一層種群幾乎全是上一分層中的精英進(jìn)化而來(lái),雖然經(jīng)過(guò)擁擠度淘汰策略,但是對(duì)算法過(guò)于早熟的問(wèn)題影響不大。
本文采用基于粒子群遺傳算法(Particle swarm genetic algorithm,PSGA)[13]的多目標(biāo)優(yōu)化算法MOPSGA,且引入了共同策略和利己策略,用以衡量算法在多目標(biāo)和單個(gè)目標(biāo)上的貢獻(xiàn)。首先設(shè)置共同指標(biāo)為第k次迭代進(jìn)化后的非支配解集Zk的個(gè)體i對(duì)第k-1次迭代進(jìn)化后的非支配解集Zk-1的支配率Pik,其次設(shè)置利己目標(biāo)為各優(yōu)化目標(biāo),即式(1)中的f1、f2和f3,根據(jù)共同指標(biāo)和利己指標(biāo)將基因篩選到非支配池和單目標(biāo)池中。
非支配池基因篩選策略:首先根據(jù)支配率Pik對(duì)基因排序,得到前30%的優(yōu)秀種群,并采用序列分析得到優(yōu)秀基因中的相似序列,且將此段序列命名為進(jìn)步序列。其余個(gè)體向進(jìn)步序列學(xué)習(xí),并將其反序列化至自身基因中,再以優(yōu)秀基因替代原有基因,并獲取種群中的非支配解集。在每一層非支配解集中引入擁擠度淘汰策略[14],進(jìn)一步降低Pareto解集的擁擠度,從而避免解集陷入局部最優(yōu)以及收斂過(guò)早問(wèn)題。圖1為優(yōu)秀序列的獲取及反序列化示意圖。
圖1 優(yōu)秀序列的獲取及反序列化示意圖
單目標(biāo)池基因篩選策略:首先按照各個(gè)單目標(biāo)fi對(duì)基因進(jìn)行排序,獲得各個(gè)目標(biāo)前30%的優(yōu)秀種群。其余個(gè)體經(jīng)過(guò)反序列化后,若在fi上的表現(xiàn)優(yōu)于未學(xué)習(xí)的基因,則替代原來(lái)的基因和優(yōu)秀種群一起進(jìn)入下次迭代。
單目標(biāo)池和非支配池相互獨(dú)立的進(jìn)化策略中,單目標(biāo)池中的精英個(gè)體,在某性能指標(biāo)上的表現(xiàn)優(yōu)于非支配解集中的個(gè)體,導(dǎo)致非支配池中的基因無(wú)法支配單目標(biāo)池中的優(yōu)秀基因,因此可以將單目標(biāo)池中優(yōu)秀基因復(fù)制加入非支配池,如圖2所示。非支配解集組成虛線代表的Pareto前沿,在加入單目標(biāo)優(yōu)秀基因后,組成由實(shí)線表示的Pareto前沿。
圖2 Pareto前沿合成示意圖
本文調(diào)度方法采用靜態(tài)調(diào)度和由動(dòng)態(tài)事件觸發(fā)的動(dòng)態(tài)調(diào)度相結(jié)合的調(diào)度策略[15],采用DIL處理工件信息,動(dòng)態(tài)調(diào)度流程如圖3所示,具體步驟如下:
圖3 基于DIL的動(dòng)態(tài)調(diào)度流程圖
(1)獲取訂單中所有工件信息并存入DIL,包括工件工序信息以及各工序的可加工機(jī)器信息;
(2)首先采用MOPSGA算法獲取初始調(diào)度方案,并根據(jù)調(diào)度過(guò)程更新記憶矩陣;
(3)隨機(jī)生成加急任務(wù),并判斷調(diào)度是否已經(jīng)完成,若已經(jīng)完成,轉(zhuǎn)至步驟(7),反之則進(jìn)行步驟(4);
(4)檢測(cè)是否發(fā)生動(dòng)態(tài)事件,若發(fā)生,則轉(zhuǎn)至步驟(5),否則繼續(xù)執(zhí)行靜態(tài)調(diào)度方案;
(5)判斷調(diào)度是否完成,若已經(jīng)完成,則轉(zhuǎn)至步驟(7),否則執(zhí)行步驟(6);
(6)采用DIL以及MOPSGA算法進(jìn)行動(dòng)態(tài)調(diào)度,產(chǎn)生實(shí)時(shí)方案;
(7)調(diào)度方案完成,調(diào)度結(jié)束。
在動(dòng)態(tài)調(diào)度中廣泛使用的重調(diào)度策略為滾動(dòng)窗口[16]重調(diào)度方法,最早由Nelson提出。其主要思想為按照既定規(guī)則分段,連續(xù)得到多個(gè)靜態(tài)區(qū)間,根據(jù)對(duì)靜態(tài)區(qū)間的靜態(tài)調(diào)度變化實(shí)現(xiàn)動(dòng)態(tài)調(diào)度控制。
DIL同樣被使用在重調(diào)度策略中,其中記憶矩陣可以起到記憶調(diào)度策略的作用。專屬通道可以提高動(dòng)態(tài)事件優(yōu)先級(jí),相比于對(duì)全部任務(wù)重新調(diào)度,開(kāi)辟1條單獨(dú)通道實(shí)現(xiàn)對(duì)動(dòng)態(tài)事件的處理,可以更好地處理動(dòng)態(tài)事件。
3.2.1 記憶矩陣
記憶矩陣主要有2個(gè)組成部分:機(jī)器記憶矩陣Mm及時(shí)間記憶矩陣Tm。
(5)
工序Oij選擇不同機(jī)器mij,本文在調(diào)度過(guò)程中按照時(shí)間順序,存儲(chǔ)在加急時(shí)刻te時(shí)已完成的工序的加工機(jī)器編號(hào)。
(6)
工序Oij選擇不同機(jī)器,相應(yīng)的,加工時(shí)間tij也不相同。本文在調(diào)度過(guò)程中按照時(shí)間順序,存儲(chǔ)在加急時(shí)刻te時(shí)已經(jīng)完成的工序所耗費(fèi)的生產(chǎn)時(shí)間。
3.2.2 專屬通道
專屬通道致力于應(yīng)對(duì)動(dòng)態(tài)事件,由于存在多種動(dòng)態(tài)事件,所以專屬通道也要生成對(duì)應(yīng)的處理方法。
事件一為機(jī)器故障。機(jī)器故障情況下,該機(jī)器在被修復(fù)前無(wú)法進(jìn)行加工,機(jī)器修復(fù)后可以繼續(xù)進(jìn)行加工。由于1批工件進(jìn)入自動(dòng)生產(chǎn)流水線,某一機(jī)器故障時(shí),原本被分配在這一機(jī)器上的工序被重新調(diào)度至其他機(jī)器加工。機(jī)器故障排除后,將此機(jī)器納入可調(diào)配資源后重新進(jìn)行計(jì)算。若得到的重調(diào)度方案性能更優(yōu),則再次調(diào)用該機(jī)器,否則,繼續(xù)執(zhí)行初始重調(diào)度方案。
事件二為緊急訂單。緊急訂單可以按照訂單是否已經(jīng)在生產(chǎn)分為2種。如果是后期加入訂單且訂單還未生產(chǎn),則該訂單為緊急插入訂單。如果訂單已經(jīng)在生產(chǎn)且需要中途加快訂單的生產(chǎn)速度,則該訂單為加急訂單。
本文主要研究的是加急訂單這一動(dòng)態(tài)事件的處理方法。與緊急插入訂單不同,由于該訂單已經(jīng)在生產(chǎn),即使提高優(yōu)先級(jí)再重新調(diào)度,算法在考慮整體性能的情況下,也可能對(duì)加急訂單的完工速度提升不是很明顯,甚至完全沒(méi)有提升。
因此本文采用單獨(dú)通道對(duì)加急訂單進(jìn)行處理,根據(jù)加急程度定義加急系數(shù)e,其中e∈[0,1]。根據(jù)e的值將加急程度逐漸增大,專屬通道會(huì)選擇加工該工件所有工序耗用時(shí)間較小的機(jī)器,按照式(7)選擇機(jī)器。
mij=Mij[round(e*len)]
(7)
式中:mij為工件i的第j道工序選擇的生產(chǎn)機(jī)器編號(hào),Mij為工件i的第j道工序可以選擇的生產(chǎn)機(jī)器按照生產(chǎn)時(shí)間遞減的順序排列的集合,len為Mij的長(zhǎng)度,round為向上取整函數(shù)。
3.3.1 染色體的編碼和解碼
在遺傳算法中,首先設(shè)置基因編碼與解碼規(guī)則。合理的編碼解碼方式使優(yōu)化過(guò)程事半功倍。由于柔性作業(yè)車間調(diào)度問(wèn)題涉及工序以及該工序所在的生產(chǎn)機(jī)器,所以本文采用機(jī)器選擇工序排序(Machines selection operations sequencing,MSOS)[17]整數(shù)編碼。編碼分為2段:工序編碼X1和機(jī)器編碼X2,且這2段基因長(zhǎng)度相等,其中X1的編碼整數(shù)為工件編號(hào),編號(hào)重復(fù)出現(xiàn)的次數(shù)即為該工件的第幾道工序,數(shù)值m代表機(jī)器編號(hào)Mm,則X1上第i位對(duì)應(yīng)的工序Oij選擇機(jī)器Mm進(jìn)行加工。本文采用表2中3×2×10的實(shí)例數(shù)據(jù)解釋編碼解碼方式,其中Oij為工件Ji的第j道工序,Mi為第i臺(tái)機(jī)器。例如表2中第1列數(shù)據(jù)中工序編碼2第1次出現(xiàn),則代表工件2的第1道工序。
表2 基因編碼解碼表
3.3.2 初始化種群
Zhang等[17]提出了GLR種群初始化方法,GLR方法包括全局選擇(Global selection,GS)、局部選擇(Local selection,LS)和隨機(jī)搜索(Random selection,RS)。GS和LS為參照本文優(yōu)化目標(biāo)進(jìn)行選擇的種群生成策略,但是會(huì)造成種群過(guò)度集中,從而陷入局部最優(yōu)。RS則是通過(guò)隨機(jī)選擇來(lái)提高種群的多樣性,對(duì)避免陷入局部最優(yōu)有較好的效果。由于多目標(biāo)柔性車間動(dòng)態(tài)調(diào)度為NP-hard問(wèn)題,陷入局部最優(yōu)的概率較高,所以給予RS較高的選擇權(quán)重,設(shè)置GS、LS、RS選擇比例為:0.3、0.2、0.5。
3.3.3 MOPSGA流程
MOPSGA算法流程如圖4所示,步驟如下:
圖4 MOPSGA算法流程圖
(1)設(shè)置種群規(guī)模N,交叉概率Pc,變異概率Pm,學(xué)習(xí)參數(shù)c1、c2和c3,遺傳代溝GAP,最大迭代次數(shù)MAXGEN;
(2)初始化種群、非支配池、單目標(biāo)池;
(3)評(píng)價(jià)個(gè)體適應(yīng)度并獲取精英;
(4)判斷算法是否滿足迭代終止條件,若滿足,則轉(zhuǎn)至步驟(7),否則,繼續(xù)步驟(5);
(5)分別對(duì)非支配池、單目標(biāo)池進(jìn)行優(yōu)秀基因的序列化與反序列化;
(6)結(jié)合非支配池和單目標(biāo)池優(yōu)秀基因重新填充非支配池,并更新單目標(biāo)池,轉(zhuǎn)至步驟(3);
(7)輸出非支配解集,算法結(jié)束。
本文采用6×6×10實(shí)例進(jìn)行仿真測(cè)試,即工件數(shù)量為6,各工件工序數(shù)量為6,機(jī)器數(shù)量為10。仿真軟件使用MATLAB2016b,電腦硬件參數(shù)為:處理器Intel(R)Core(TM)i5-4210U CPU@3.70 GHz,內(nèi)存8 GB,算例數(shù)據(jù)如表3所示。通過(guò)設(shè)置多種加急任務(wù)及加急時(shí)間,獲取非支配解集,并選取其中最大完工時(shí)間最小的解,并解碼輸出調(diào)度方案。比較靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度甘特圖來(lái)驗(yàn)證動(dòng)態(tài)調(diào)度的有效性。通過(guò)和其他多目標(biāo)動(dòng)態(tài)調(diào)度算法的仿真結(jié)果比較,驗(yàn)證MOPSGA算法的優(yōu)越性。
表3 仿真數(shù)據(jù)集
算法中種群規(guī)模N為100,交叉概率Pc為0.8,變異概率Pm為0.5,學(xué)習(xí)參數(shù)c1為0.95,c2為0.9,c3為0.95,遺傳代溝GAP為0.9,最大迭代次數(shù)MAXGEN為100。
首先根據(jù)3個(gè)優(yōu)化目標(biāo)進(jìn)行多目標(biāo)求解,得到1組非支配的Pareto解集,選擇解集中最大完工時(shí)間最小的調(diào)度方案,作為初始靜態(tài)調(diào)度方案,甘特圖如圖5所示。圖5中縱坐標(biāo)表示機(jī)器編號(hào),橫坐標(biāo)表示加工時(shí)間,101表示工件1的第1道工序,201表示工件2的第1道工序,以此類推。從圖5中看出所有工序加工完成時(shí)間為39,而且各工件的工序依次在各個(gè)機(jī)器上加工,且所有工件的所有工序都已完成。
圖5 初始調(diào)度方案甘特圖
本文針對(duì)加急訂單的動(dòng)態(tài)調(diào)度問(wèn)題,在加急時(shí)間處已經(jīng)開(kāi)始加工任務(wù)并繼續(xù)執(zhí)行加工,在此基礎(chǔ)上,提高加急訂單加工速度。設(shè)置加急訂單時(shí)刻為20,即te=20,設(shè)置加急訂單為工件1,即Oe=1。仿真得到的動(dòng)態(tài)甘特圖如圖6所示,其中在te=20時(shí),已經(jīng)在生產(chǎn)中的工件1的第4道工序O14繼續(xù)進(jìn)行直到完成,加急工件1未完成的工序O15和O16全部完工時(shí)間為29,相比于圖5中工件1所有工序全部加工完成時(shí)間33,有明顯的加快。
圖6 te=20,Oe=1動(dòng)態(tài)調(diào)度甘特圖
為了更充分地證明動(dòng)態(tài)調(diào)度的有效性,本文在更改加急時(shí)間和加急任務(wù)后,仿真得到多組對(duì)照結(jié)果。設(shè)置加急任務(wù)時(shí)刻為20,即te=20,設(shè)置加急任務(wù)為工件2,即Oe=2,仿真得到的動(dòng)態(tài)甘特圖如圖7所示。其中在te=20時(shí),已經(jīng)在生產(chǎn)中的工件2的第2道工序O22繼續(xù)加工直到完成,加急工件2未完成的工序O23、O24、O25和O26全部完工時(shí)間為33,相比于圖5中工件2所有工序全部加工完成時(shí)間38,也有明顯的加快。
圖7 te=20,Oe=2動(dòng)態(tài)調(diào)度甘特圖
由于本文研究所用實(shí)驗(yàn)數(shù)據(jù)為隨機(jī)生成的算例,所以采用復(fù)現(xiàn)算法的方式,分析近期文獻(xiàn)[18]中MOGA算法和NSGA-Ⅱ算法對(duì)本文多目標(biāo)問(wèn)題的求解方法,并比較MOPSGA、MOGA和NSGA-Ⅱ?qū)Ρ疚膯?wèn)題的動(dòng)態(tài)調(diào)度表現(xiàn)。MOPSGA參數(shù)設(shè)置如4.1節(jié)所示。MOGA算法和NSGA-Ⅱ算法參數(shù)設(shè)置與MOPSGA參數(shù)相同。
算法仿真數(shù)據(jù)如表4所示。3種算法在各個(gè)優(yōu)化目標(biāo)上的表現(xiàn)各有優(yōu)勢(shì),但是MOPSGA對(duì)最大完工時(shí)間、機(jī)器負(fù)載和非支配解個(gè)數(shù)這些目標(biāo)的求解表現(xiàn)明顯優(yōu)于其他算法,MOPSGA的運(yùn)行時(shí)間相比其他算法略有縮短,體現(xiàn)了MOPSGA求解柔性車間動(dòng)態(tài)調(diào)度問(wèn)題的效率。
表4 算法效果比較表
本文首先使用MOPSGA算法求解滿足正常調(diào)度的調(diào)度方案,再針對(duì)MODFJSP中出現(xiàn)的加急訂單,采用DIL與MOPSGA算法相結(jié)合的方式,實(shí)現(xiàn)加急訂單的動(dòng)態(tài)調(diào)度。通過(guò)實(shí)驗(yàn)結(jié)果比較,驗(yàn)證了MOPSGA算法和DIL的有效性。