曾創(chuàng)鋒,劉建軍,陳慶新,毛 寧
(廣東工業(yè)大學(xué) 廣東省計(jì)算機(jī)集成制造重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510006)
家電企業(yè)總裝車間中,來(lái)自客戶的工單具有多品種、小批量的特征,每一張工單都將生產(chǎn)某一型號(hào)的一款產(chǎn)品,生產(chǎn)該型產(chǎn)品需要指定的型號(hào)物料;加工單元由多條異構(gòu)的并行加工線體構(gòu)成,加工線體所采用的技術(shù)、線體新舊程度有所不同,部分型號(hào)的物料只能在指定的部分線體上進(jìn)行加工,同時(shí),根據(jù)相鄰工單所加工的產(chǎn)品型號(hào)及其使用的物料型號(hào)的異同,需要對(duì)線體的設(shè)置進(jìn)行相關(guān)調(diào)整。這類問題屬于典型的帶工單加工約束和序相關(guān)設(shè)置時(shí)間的無(wú)關(guān)并行機(jī)調(diào)度問題(unrelated parallel machine scheduling problem with job processing constraints and sequence-dependent setup times,UPMSP_JPCSST),即同一張工單在不同線體上的加工時(shí)間不盡相同,且工單只能在特定的部分線體上進(jìn)行加工,同時(shí),工單上機(jī)的設(shè)置時(shí)間取決于前后相鄰工單的順序。該問題以極小化最大完工時(shí)間(Cmax)為優(yōu)化目標(biāo),使用三元組[1-2]可以將其描述為Rm|si,j,Mj|Cmax。UPMSP_JPCSST是UPMSP中非常復(fù)雜的一類,屬于NP完全問題,對(duì)其進(jìn)行求解非常困難。因此,對(duì)UPMSP_JPCSST求解算法的研究具有較高的理論和應(yīng)用價(jià)值。
目前對(duì)于UPMSP_JPCSST的求解方法主要有精確算法、啟發(fā)式規(guī)則和元啟發(fā)式方法。其中,精確算法經(jīng)常使用混合整數(shù)規(guī)劃(mixed integer programming, MIP)模型、分枝定界[3]等方法以求得問題的最優(yōu)解,但求解費(fèi)時(shí)并受限于問題的規(guī)模,難以對(duì)問題進(jìn)行快速求解;而啟發(fā)式規(guī)則[4]雖然易于實(shí)施,但所得解的質(zhì)量難以保證;而元啟發(fā)式方法則有較大的塑性空間,其求解速度與求解質(zhì)量取決于對(duì)算法本身的挖掘,一個(gè)優(yōu)異的元啟發(fā)式方法能在合理的時(shí)間內(nèi)得到盡可能好的滿意解[5],因此得到越來(lái)越多的關(guān)注[3,6-8],如遺傳算法(genetic algorithm, GA)、模擬退火算法(simulated annealing, SA)、禁忌搜索算法(tabu search, TS)等。作為一種廣泛應(yīng)用于求解車間調(diào)度問題的方法,GA算法通過選擇和交叉操作從父代種群獲取優(yōu)良的遺傳信息,進(jìn)而對(duì)問題的解空間中可能存在優(yōu)良解的區(qū)域進(jìn)行搜索,這使得GA具有全局搜索能力,但正是過于注重搜索的廣度反而導(dǎo)致挖掘深度不足。而將具有概率突跳機(jī)制的SA、具有記憶禁忌機(jī)制的TS等注重局部信息深度挖掘的搜索算法與GA算法相結(jié)合,能彌補(bǔ)GA算法局部?jī)?yōu)化能力的不足,且能幫助其跳出或避免陷入局部最優(yōu),增強(qiáng)搜索性能。因此,相關(guān)改進(jìn)型混合算法[9-12],如GASA、GATS等得到廣泛的重視。但是該類算法自身框架復(fù)雜性可能會(huì)導(dǎo)致其單代運(yùn)行時(shí)間較長(zhǎng),使得這類算法具有運(yùn)行時(shí)間依賴性,仍難以對(duì)問題進(jìn)行快速求解。
迭代貪心算法(iterated greedy algorithm, IG)[13]是一種新穎的、基于單解的、包含破壞與構(gòu)建2個(gè)階段的啟發(fā)式算法。IG涉及極少控制參數(shù),計(jì)算速度極快,優(yōu)化效果優(yōu)異,得到廣泛重視,并應(yīng)用到UPMSP中[14]。算法的破壞、構(gòu)建操作可能會(huì)因?yàn)槠錂C(jī)制及其鄰域的契合性、算法的快速性而適合UPMSP_JPCSST IG中序相關(guān)設(shè)置時(shí)間角度的優(yōu)化。因此,將傳統(tǒng)GA與計(jì)算速度快、側(cè)重從局部層面對(duì)解空間進(jìn)行搜索的IG算法進(jìn)行合理融合,具有較高的研究?jī)r(jià)值。根據(jù)文獻(xiàn)調(diào)研,對(duì)于UPMSP,基于GA和IG的混合求解算法的研究尚無(wú)文獻(xiàn)報(bào)道。
本文提出一種遺傳?迭代貪心算法(genetic algorithm-iterated greedy algorithm, GAIG),用以求解最小化最大完工時(shí)間Cmax指標(biāo)下的UPMSP_JPCSST。
設(shè)工單集合J有n個(gè)相互獨(dú)立的工單,這些工單在時(shí)間為0時(shí)可用;m臺(tái)加工線體(m>1)構(gòu)成一個(gè)制造系統(tǒng);工單j (j∈J)需加工數(shù)量不等的某一款產(chǎn)品,該款產(chǎn)品只需1道工序即可完工,且只能由滿足工單加工約束的線體加工;工單的加工時(shí)間取決于加工線體及該工單需加工產(chǎn)品的數(shù)量,任何線體k同一時(shí)刻只能加工1個(gè)工單;在線體上加工不同產(chǎn)品時(shí)需要設(shè)置時(shí)間,設(shè)置時(shí)間依賴于相鄰工單所加工產(chǎn)品的產(chǎn)品類型和物料類型屬性。
1) 工單數(shù)量及其對(duì)應(yīng)需生產(chǎn)的產(chǎn)品數(shù)量已知且確定;
2) 每個(gè)工單只生產(chǎn)一款產(chǎn)品,且不能被分割;
3) 每個(gè)工單將加工的產(chǎn)品型號(hào)及其物料型號(hào)已知且確定;
4) 各種物料型號(hào)的線體適用集合已知且確定;
5) 對(duì)于每一種物料型號(hào),至少存在一條線體可以完成加工;
6) 工單一旦在線體上開始加工,就不允許中途停止而加工其他工單;
7) 同一條線體同一時(shí)刻只能加工一張工單;
8) 所有的工單和線體在0時(shí)刻可用。
模型相關(guān)變量如表1所示。
表1 模型參數(shù)符號(hào)及其說(shuō)明Table 1 Model parameter symbols and descriptions
根據(jù)以上假設(shè)與條件,對(duì)Rm|si,j,Mj|Cmax建立的數(shù)學(xué)模型如下。
其中,式(1)為目標(biāo)函數(shù);約束(2)表示每一個(gè)工單只能被分派到一個(gè)線體上加工;約束(3)表示每一個(gè)工單只能被加工1次;約束(4)確定每一個(gè)工單的完工時(shí)間,并確保工單j不會(huì)先于本身、晚于本身完工,且緊鄰工單之間存在序相關(guān)的設(shè)置時(shí)間;約束(5)表示任何線體上有且只有1個(gè)工單屬于該線體第1個(gè)上機(jī)工單;約束(6)表示Cmax為所有工單的最大完工時(shí)間;約束(7)表示虛擬工單不占用線體使用時(shí)間且其完工時(shí)間為0;約束(8)表示工單j完工時(shí)間的可行域約束;約束(9)為工單加工約束,工單不允許被指派到不可加工的線體上;約束(10)為決策變量的取值約束。
本文針對(duì)UPMSP_JPCSST提出將GA算法和IG算法的破壞與構(gòu)建操作相結(jié)合,從而設(shè)計(jì)兼?zhèn)淙謨?yōu)化能力和局部?jī)?yōu)化能力的求解算法。該操作側(cè)重于解的局部探索,可以很好地和GA算法的全局搜索相結(jié)合,并由GA算法的進(jìn)化操作保留執(zhí)行構(gòu)建操作得到的優(yōu)良染色體片段。此外,把破壞、構(gòu)建機(jī)制嵌入變異操作,從而保證種群的多樣性。GAIG的求解框架如圖1所示。
根據(jù)UPMSP_JPCSST的特性,可加工線體限制會(huì)使調(diào)度解空間中存在不可行解。為避開不可行解,提高求解效率,本文采用一種前后雙層的整數(shù)染色體編碼方式表示一個(gè)可行的調(diào)度計(jì)劃,即工單排序向量(job sequence vector,JV)、線體選擇向量(machine assignment vector,MV)。其中,JV層基因必須滿足工單唯一性約束,MV層基因必須滿足工單加工約束。以圖2中5張工單、3條線體的問題為例,如果該染色體是合法的,那么表示在線體1上加工的工單序列為4;在線體2上加工的工單序列為2→5;在線體3上加工的工單序列為1→3。
交叉算子作用于染色體的JV層。要保證交叉后的新染色體仍然可行,要求新染色體必須滿足上述2個(gè)約束。
圖1 GAIG求解框架Figure 1 Framework of GAIG
圖2 染色體的編碼方法Figure 2 A coding solutions of chromosome
1) 隨機(jī)產(chǎn)生一個(gè)交叉點(diǎn),交換父代染色體JV層(下面簡(jiǎn)稱P)交叉點(diǎn)前的基因片段,以產(chǎn)生子代C1;2) 逐個(gè)尋找C1上的每一個(gè)基因在P2中的位置,將P2上該位置的基因替換為空值并將C1上的該基因替換為空值;3) 完成遍歷后,P2中剩余的基因即子代C1的缺失基因集合W2,C1中剩余的基因即子代C1的多余基因集合W1;4) 在W1內(nèi)按從左到右的順序逐個(gè)取出多余的基因,并在C1中找到第1個(gè)對(duì)應(yīng)的基因,在基因集合W2內(nèi)按照從左到右的順序取出缺失的基因填充。5) 按交叉前P1染色體首尾2層的基因映射關(guān)系,填充交叉后C1染色體MV層的基因,得到合法的新子代染色體C1;新子代染色體C2以同樣的方法得到。假設(shè)交叉位置為3,交叉過程如圖3所示。
圖3 交叉操作示意圖Figure 3 Diagram of cross operation
2.3.1 面向更換線體鄰域結(jié)構(gòu)
本鄰域結(jié)構(gòu)作用于染色體的MV層,該層每個(gè)基因位都有其特定值域,即變異后需滿足工單加工約束。其基本思想為:歷遍染色體JV層,對(duì)于JV層中被選擇的基因,在其特定值域內(nèi)隨機(jī)產(chǎn)生加工線體基因,并以該線體的基因編號(hào)替換掉原有的線體基因,如圖4所示。
2.3.2 基于IG算法的破壞與構(gòu)建操作
圖4 鄰域結(jié)構(gòu)示意圖Figure 4 Diagram of neighborhood structure
為獲得更好的優(yōu)化解,結(jié)合該企業(yè)UPMSP_JPCSST和GA算法的特點(diǎn),在求解算法的變異算子中嵌入一種基于IG[13]算法的破壞與構(gòu)建機(jī)制。對(duì)交叉產(chǎn)生的新個(gè)體,以概率執(zhí)行該操作(具體如圖1和2.4節(jié)所示),從而提高種群的多樣性。
局部?jī)?yōu)化操作分為破壞和構(gòu)建2個(gè)階段,詳細(xì)步驟如下。
破壞階段以隨機(jī)方式從個(gè)體序列中移除部分序列。文獻(xiàn)[13]通過試驗(yàn)得到的移除長(zhǎng)度d并沒有通用性,本文經(jīng)過測(cè)試得到較適合本案例的破壞長(zhǎng)度d。在變異操作的破壞步驟中,初始破壞長(zhǎng)度d0=0.1n,在迭代進(jìn)程中,隨著種群多樣性的降低而線性變長(zhǎng)dgen=dgen?1α;在局部?jī)?yōu)化操作中,初始破壞長(zhǎng)度隨迭代進(jìn)程及種群進(jìn)化情況而變化,dgen=dgen?1δεiter;每代更新d值。其中,α為上升系數(shù),α=1.01;δ為下降系數(shù), δ=0.97;ε為種群進(jìn)化停滯系數(shù),ε=1.05;iter為種群進(jìn)化停滯代數(shù);gen為當(dāng)前迭代代數(shù);n為工單數(shù)量。
構(gòu)建階段將被移除的序列按照被移除的順序逐個(gè)重新插回原保留序列,直到重新構(gòu)成完整的合法序列。類似于NEH (the heuristic of NAWAZ, ENSCORE and HAM)[15]算法,定義工單的插入鄰域?yàn)橐延行蛄兄兴锌赡懿迦氲奈恢茫磳⒋迦牍沃饌€(gè)插入保留序列上的每一個(gè)可插入位置。根據(jù)目標(biāo)函數(shù)值選擇最優(yōu)的位置,直到合法序列重新生成。
終止條件若執(zhí)行局部搜索的個(gè)體停滯進(jìn)化代數(shù)達(dá)到5次,或個(gè)體得到進(jìn)化,則結(jié)束算子,如圖5所示。
在GAIG中,初始種群隨機(jī)生成,選擇算子采用輪盤賭[16]方法,更新策略采用(μ+σ)策略[17],算法以運(yùn)行時(shí)間作為終止準(zhǔn)則,運(yùn)行時(shí)間根據(jù)算例的規(guī)模而定,具體如 3.2 節(jié)所示。算法步驟如圖6所示。
圖5 局部?jī)?yōu)化方法偽碼圖Figure 5 Pseudo-code of local optimization method
圖6 GAIG算法偽碼圖Figure 6 Pseudo-code of the proposed GAIG
由于廣東某大型合作家電企業(yè)對(duì)提供的兩千多條具有代表性的實(shí)際案例數(shù)據(jù)有保密性要求,本文不便公開其數(shù)據(jù)。為了驗(yàn)證本文所提出的GAIG算法求解該企業(yè)車間UPMSP_JPCSST的性能,這里以該案例數(shù)據(jù)為基礎(chǔ),提取案例所具備的特征,引入文獻(xiàn)[18]實(shí)驗(yàn)設(shè)計(jì)的思想,隨機(jī)生成24組具有企業(yè)實(shí)際問題特征的測(cè)試算例,算例命名格式為n-?δγ。其中,參數(shù)n為工單數(shù)量;參數(shù)?j和δk共同確定線體k對(duì)工單j所用物料的單位產(chǎn)能,衡量加工能力的異質(zhì)性。?j衡量工單j的異質(zhì)性,決定同一線體對(duì)不同的工單所用物料的單位產(chǎn)能;δk衡量線體k的異質(zhì)性,決定不同的線體對(duì)同一個(gè)工單所用物料的單位產(chǎn)能。對(duì)于工單j和線體k,μj~U(?j),ξk~U(δk),則線體k對(duì)工單j所用物料的單位產(chǎn)能σjk=μjξk;參數(shù)γ表示測(cè)試環(huán)境中所有工單將會(huì)用到的物料型號(hào)與所屬產(chǎn)品型號(hào)的種類規(guī)模,構(gòu)成了換產(chǎn)的異質(zhì)性;參數(shù)Lj為工單j需生產(chǎn)的產(chǎn)品數(shù)量,詳細(xì)參數(shù)如表2所示。線體上第1個(gè)上機(jī)工單其設(shè)置時(shí)間為300,相鄰工單其產(chǎn)品型號(hào)相同則不需要設(shè)置時(shí)間,相鄰工單其產(chǎn)品型號(hào)不相同但加工所需的物料型號(hào)相同,其設(shè)置時(shí)間為100,否則設(shè)置時(shí)間為300。
表2 測(cè)試算例參數(shù)Table 2 Parameters of experimental case
運(yùn)行環(huán)境如下。計(jì)算機(jī)系統(tǒng)為Windows10,處理器為Intel?Core?i7-8700 @ 3.20 GHz 3.19 GHz,RAM內(nèi)存為16.0 GB,算法采用Matlab R2016b編程實(shí)現(xiàn)。
首先,為更好地測(cè)試GAIG算法在求解該企業(yè)車間UPMSP_JPCSST時(shí)的有效性,實(shí)驗(yàn)以NEH[18]算法、 IG算法、GASA算法、SA算法、GA算法和GATS算法為比較對(duì)象。7種算法在每個(gè)算例組合下分別進(jìn)行10次獨(dú)立實(shí)驗(yàn),將得到的最大完工時(shí)間Cmax、平均流水時(shí)間Fave和換產(chǎn)時(shí)間占比P共1個(gè)優(yōu)化指標(biāo)和2個(gè)觀察指標(biāo)求均值,作為算法評(píng)估的依據(jù),結(jié)果如表3所示。其中,GAIG算法參數(shù)設(shè)置如下:種群大小為100,交叉率Pc為0.8,變異率Pm為0.05,移除長(zhǎng)度d如2.4節(jié)所述;其他算法中SA初始溫度為100,冷卻系數(shù)為0.95;TS的禁忌長(zhǎng)度為100,候選解個(gè)數(shù)為100個(gè);通用參數(shù)及鄰域結(jié)構(gòu)與GAIG一致。所有算法均隨機(jī)初始化初始種群。此外由于混合算法與單一算法每一代的迭代時(shí)間差異性大,且基于該企業(yè)對(duì)于算法運(yùn)行時(shí)間的苛刻要求,本文以運(yùn)行時(shí)間作為算法的終止條件。工單規(guī)模為50的算例,運(yùn)行時(shí)間為20 s;工單規(guī)模為100的算例,運(yùn)行時(shí)間為40 s;工單規(guī)模為200的算例,運(yùn)行時(shí)間為80 s。表3為7種算法在各個(gè)算例組合下的測(cè)試結(jié)果。測(cè)試結(jié)果中,7種算法的性能分布和對(duì)企業(yè)實(shí)際案例數(shù)據(jù)進(jìn)行計(jì)算得到的性能分布相似,表明以該方法生成的隨機(jī)測(cè)試數(shù)據(jù)具有一定的可用性。
由表3可知,1) 從{#1,#3,#5,#7}、{#2,#4,#6,#8}、{#9,#11,#13,#15}、{#10,#12,#14,#16}、{#17,#19,#21,#23}和{#18,#20,#22,#24}對(duì)比組可以看出,在加工能力異質(zhì)性大的測(cè)試環(huán)境中,擁有更換線體鄰域結(jié)構(gòu)的算法如SA、GASA等具有優(yōu)勢(shì),其能夠從壓縮工單的加工時(shí)間的角度減少平均流水時(shí)間,進(jìn)而提升調(diào)度性能;而相比基于部分序列構(gòu)建的IG算法,NEH這類全序列構(gòu)造型的算法也能夠從該角度取得更好的優(yōu)化效果。
2) {#1,#2}、{#3,#4}、{#5,#6}、{#7,#8}、{#9,#10}、{#11,#12}、{#13,#14}、{#15,#16}、{#17,#18}、{#19,#20}、{#21,#22}和{#23,#24}定量對(duì)比組可以看出,無(wú)論換產(chǎn)異質(zhì)性大還是小,NEH、IG等具有構(gòu)造機(jī)制的算法均能取得相對(duì)于其他算法更小的換產(chǎn)時(shí)間占比;在換產(chǎn)異質(zhì)性增大的擾動(dòng)下,雖然各個(gè)算法性能指標(biāo)均在一定程度上得到劣化;但是相對(duì)于其他算法,NEH和IG算法的性能指標(biāo)的劣化程度相對(duì)緩和,其能夠從壓縮工單之間的設(shè)置時(shí)間的角度極小化最大完工時(shí)間。
3) 從{#1,#9,#17}、{#2,#10,#18}、{#3,#11, #19}、{#4,#12,#20}、{#5,#13,#21}、{#6,#14,#22}、{#7,#15,#23}和{#8,#16,#24}定量對(duì)比組可以看出,算例規(guī)模的擾動(dòng)對(duì)SA的影響較大。SA隨著算例規(guī)模的增大,性能急劇下降,只適合小規(guī)模算例。而具有并行搜索優(yōu)勢(shì)的算法如GA、GASA、GATS則隨著算例規(guī)模的增大,優(yōu)勢(shì)逐漸顯現(xiàn),但受制于運(yùn)行時(shí)間,優(yōu)勢(shì)無(wú)法完全體現(xiàn)。而IG、NEH算法基于不受運(yùn)行時(shí)間節(jié)制的優(yōu)勢(shì),隨著算例規(guī)模的增大,性能指標(biāo)逐漸具有優(yōu)勢(shì)。在加工能力異質(zhì)性小的環(huán)境下,IG和NEH均會(huì)在算例規(guī)模逐步增大時(shí)偶爾出現(xiàn)不同程度的性能指標(biāo)劣化現(xiàn)象,十分不穩(wěn)定。
表3 7種算法實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果Table 3 Test statistical results of seven algorithms
4) 在各個(gè)算例組合中,GAIG算法幾乎都能得到最好的結(jié)果。首先GAIG算法具有遺傳算法并行搜索、迭代進(jìn)化的特點(diǎn),不但具有面向加工能力方向進(jìn)行優(yōu)化的鄰域結(jié)構(gòu),又擁有針對(duì)換產(chǎn)時(shí)間方向進(jìn)行優(yōu)化的機(jī)制,使GAIG算法能夠在各種復(fù)雜的算例組合中具有普遍可用性,同時(shí),又區(qū)別于其他混合算法對(duì)運(yùn)行時(shí)間的依賴性,具有更優(yōu)的調(diào)度性能。其次,以200-?UδU-γU算例為例,圖7分別給出了除確定性算法NEH以外其他6種算法在80 s內(nèi)的最優(yōu)Makespan收斂曲線??梢钥闯?,GAIG算法的收斂速度明顯快于除IG算法以外的其他算法,運(yùn)行時(shí)間非常短且優(yōu)化質(zhì)量也比其他算法更高。因此,GAIG算法無(wú)論在運(yùn)算時(shí)間還是運(yùn)算結(jié)果上來(lái)看,都具有相對(duì)于其他算法的優(yōu)越性,能夠滿足該企業(yè)對(duì)算法的快速反應(yīng)和高質(zhì)量方案的要求。最后,為了說(shuō)明GAIG算法的魯棒性,排除確定性算法NEH后,將6種算法在每個(gè)算例規(guī)模下的8個(gè)測(cè)試環(huán)境中多次運(yùn)行所得數(shù)據(jù)繪制成箱線圖,如圖8所示。從圖8的統(tǒng)計(jì)結(jié)果不難看出,GAIG算法對(duì)各種算例組合都保持著較高的求解魯棒性,能夠滿足該企業(yè)對(duì)算法的高魯棒性要求。
圖7 收斂曲線Figure 7 Convergence curves
圖8 6種算法在不同規(guī)模算例下的箱線圖Figure 8 The boxplot of 6 algorithms in different scale case
本文針對(duì)家電企業(yè)總裝車間需要同時(shí)考慮工單加工約束和序相關(guān)設(shè)置時(shí)間等難點(diǎn),以最小化最大完工時(shí)間為目標(biāo),設(shè)計(jì)GAIG算法。該算法結(jié)合遺傳算法全局搜索性能較優(yōu)和IG算法局部?jī)?yōu)化性能較強(qiáng)且速度快的優(yōu)點(diǎn),通過遺傳算法進(jìn)行全局搜索尋得的較優(yōu)解作為局部搜索算法的初始解進(jìn)行深度搜索,而經(jīng)過破壞與構(gòu)建機(jī)制深度優(yōu)化的高質(zhì)量解反過來(lái)提高遺傳算法種群的多樣性。同時(shí),在各種具有企業(yè)實(shí)際數(shù)據(jù)特征的測(cè)試算例中與其他算法進(jìn)行比較,說(shuō)明該算法的有效性、穩(wěn)定性與魯棒性,符合企業(yè)實(shí)際生產(chǎn)的要求。
針對(duì)本文的不足,未來(lái)將從以下2個(gè)方面做進(jìn)一步的研究。1) 考慮帶有交貨期等更為復(fù)雜的車間環(huán)境;2) 研究極小化最大完工時(shí)間、拖期率和齊套性的多目標(biāo)優(yōu)化算法。