操作coi將被移動,將關(guān)鍵 操作coi從G中刪除得到首先,先移除以 c〇i為起點(diǎn)和以關(guān)鍵操作c〇i為終點(diǎn)的非連接 弧;然后用一條指向SM(G,coi)的非連接弧連接PM(G,coi)和SM(G,coi);最后將節(jié)點(diǎn)coi的 權(quán)重設(shè)置為〇;②刪除coi之后,在GT中重新選擇一個(gè)可行的位置,將關(guān)鍵操作 coi重新插入, 以得到可行調(diào)度V且UaXG' H Cmax(G);③將coi插入到某臺機(jī)器Mk上,將插入位置僅限制 在可行的位置上方法如下:當(dāng)在調(diào)度GT中,為操作coi重新分配機(jī)器M k上的某個(gè)位置時(shí),只 需順序檢測集合γ k中的位置,一旦某個(gè)位置滿足約束條件,立即將coi插入到這個(gè)位置上, 得到鄰域調(diào)度解V,它替換G成為新的當(dāng)前調(diào)度解,也是下一輪局部迭代的初始解;其中,集 合Yk示在中所有操作之前且在ΨιΛΦ??中所有操作之后的位置的集合,和Ψι<是 操作集合? k的兩個(gè)子序列;④將在調(diào)度G「中將操作coi插入位置γ的過程看作一個(gè)動作, 并表示為coi~Mk;設(shè)供(G) = ? α."?/Α / = 1,2, ... ,/κ?Α e VkW ,該集合包含了所有 Slcoi個(gè)可能的動作,其中每個(gè)動作都有希望生成當(dāng)前解G的一個(gè)可接受的鄰域解;(3)接 受準(zhǔn)則:采用Best準(zhǔn)則和Pareto準(zhǔn)則兩種不同的接受準(zhǔn)則確定哪些將被作為改進(jìn)的解添加 到改進(jìn)的種群中。
[0015] 進(jìn)一步,所述步驟(2)②中,如果該位置對于coi來說是可以插入的,那么必須滿足 下式:
[0016]
[0017] 式中,£Γ((7,. ,⑶表示最早完成時(shí)間,即在調(diào)度Gf中,操作;ΡΜ(βΜν)的最 早完成時(shí)間;aGJG))表示最遲開始時(shí)間,即在以完工時(shí)間為C max(G)的前提下,調(diào) 度GT中,操作v的最遲開始時(shí)間;Ρ。。^表示操作coi在機(jī)器Mk上的加工時(shí)間。
[0018] 進(jìn)一步,所述步驟(3)中,Best準(zhǔn)則選擇局部搜索路徑上具有最小f(G,A)值的調(diào)度 解作為最終改進(jìn)的解。
[0019] 進(jìn)一步,所述步驟(3)中,Pareto準(zhǔn)則是在每一代中,收集所有局部搜索路徑上的 解,當(dāng)中的非支配解構(gòu)成了改進(jìn)的種群。
[0020] 本發(fā)明由于采取以上技術(shù)方案,其具有以下優(yōu)點(diǎn):本發(fā)明可以完成柔性作業(yè)車間 系統(tǒng)作業(yè)數(shù)目、機(jī)器數(shù)目、操作數(shù)目、每個(gè)操作可用機(jī)器情況等基本參數(shù)的設(shè)置,而且可以 根據(jù)不同的設(shè)備場景和工藝需求,針對每個(gè)作業(yè)靈活配置各種各樣的加工路徑。利用所提 出的模因演算法,可以對配置好的優(yōu)化目標(biāo)為完工時(shí)間、總負(fù)載、關(guān)鍵負(fù)載的柔性作業(yè)車間 系統(tǒng)進(jìn)行有效的調(diào)度,且調(diào)度效果明顯優(yōu)于目前已有的先進(jìn)算法。本發(fā)明可以廣泛在計(jì)算 機(jī)應(yīng)用技術(shù)領(lǐng)域和生產(chǎn)調(diào)度領(lǐng)域中應(yīng)用。
【附圖說明】
[0021] 圖1是本發(fā)明的染色體所對應(yīng)的甘特圖示意圖。
【具體實(shí)施方式】
[0022] 為了解決半導(dǎo)體生產(chǎn)、汽車裝配、紡織等工業(yè)生產(chǎn)中所涉及的關(guān)鍵多目標(biāo)調(diào)度問 題,即多目標(biāo)柔性作業(yè)車間調(diào)度問題,本發(fā)明提供一種基于目標(biāo)重要性分解的模因演化多 目標(biāo)優(yōu)化調(diào)度方法,即多目標(biāo)模因演算法。該方法首先提出一個(gè)求解M0-FJSP(多目標(biāo)柔性 作業(yè)車間調(diào)度問題)的基于關(guān)鍵操作的與問題相關(guān)的局部搜索算子,該算子強(qiáng)調(diào)了對問題 解空間的開發(fā)能力。在該局部搜索中,使用了一種分層策略來處理三個(gè)目標(biāo)。即,主要考慮 完工時(shí)間的最小化,對其它兩個(gè)目標(biāo)的考慮則體現(xiàn)在嘗試所有可能產(chǎn)生可接受鄰域解的動 作的順序上。第二,通過良好設(shè)計(jì)的染色體表示、染色體解碼和遺傳算子,開發(fā)了針對M0-FJSP的基于NSGA-II(第二代非支配遺傳算法)的遺傳搜索,它主要強(qiáng)調(diào)對問題解空間的探 索能力。第三,采用了與M0GLS(多目標(biāo)遺傳局部搜索)中類似的機(jī)制從種群中選擇解進(jìn)行局 部搜索,有利于在MAs(模因演算法)中平衡局部搜索和遺傳搜索。下面結(jié)合附圖和實(shí)施例對 本發(fā)明進(jìn)行詳細(xì)的描述。
[0023]本發(fā)明的基于目標(biāo)重要性分解的模因演化多目標(biāo)優(yōu)化調(diào)度方法,基于Eclipse開 發(fā)平臺,可以為不同配置的多目標(biāo)柔性作業(yè)車間調(diào)度系統(tǒng)提供統(tǒng)一的、有效的調(diào)度接口,其 步驟如下:
[0024] 1)隨機(jī)產(chǎn)生一個(gè)大小為N的初始種群Po。
[0025] 2)在算法每一代中,先由當(dāng)前種群Pt通過二元錦標(biāo)賽選擇,遺傳算子(包括交叉和 變異)產(chǎn)生一個(gè)子代種群Qt。
[0026] 3)利用局部搜索策略對子代種群Qt進(jìn)行精細(xì)搜索以得到一個(gè)改善的種群Q\。
[0027] 4)將當(dāng)前種群Pt、子代種群Qt和改善的種群V t合并生成一個(gè)種群Rt,由于種群Rt可 能會含有一些目標(biāo)大小完全相同的個(gè)體,這樣會影響搜索質(zhì)量,因此,對種群Rt中目標(biāo)大小 完全相同的個(gè)體進(jìn)行變異操作。
[0028] 5)利用NSGA-II中的快速非支配排序與擁擠距離方法對種群Rt中的個(gè)體進(jìn)行排 序,以選擇最好的N個(gè)解作為下一代種群P t+1。
[0029] 上述步驟2)中,利用遺傳算子產(chǎn)生子代種群,即利用遺傳搜索產(chǎn)生子代種群,遺傳 搜索在模因演算法中主要負(fù)責(zé)對問題解空間的全局搜索,該遺傳搜索包括染色體編碼、染 色體解碼和遺傳操作,具體方法如下:
[0030] (1)染色體編碼:對于FJSP(柔性作業(yè)車間調(diào)度問題)問題,一個(gè)解由兩部分組成: 第一部分是操作在機(jī)器上的分配;第二部分是每臺機(jī)器上操作的處理序列。因此,本發(fā)明的 模因演算法中一個(gè)染色體由兩個(gè)向量組成:第一個(gè)向量是機(jī)器選擇向量,第二個(gè)向量是操 作排序向量。這兩個(gè)向量分別對應(yīng)于FJSP問題的兩個(gè)子問題。
[0031] (a)給定每個(gè)操作一個(gè)固定的ID: j,其中j = l,2, · · .,d,d= Σγη。這就意味著作業(yè) Ji包含操作1,. . .,m,作業(yè)J2包含操作ni+1,. . .,ηι+η2,以此類推。在編號之后,一個(gè)操作也 可以用固定ID號進(jìn)行指代,如在表1.1中,操作〇2,2也可以稱作操作4,表中Mk為第k個(gè)機(jī)器。 [0032] 表1 M0-FJSP問題樣例的處理時(shí)間表
[0033
[0034] (b)機(jī)器分配向量可以表示為u = [m,u2,…叫]。這是一個(gè)包含d個(gè)整數(shù)值的數(shù)組, 且元素叫滿足1 < d,其中1」是可供操作j執(zhí)行的機(jī)器數(shù)目。
[0035] (c)再進(jìn)一步將操作j的可用機(jī)器,按操作j在其上的處理時(shí)間進(jìn)行非遞減的排序。 如果兩臺機(jī)器在執(zhí)行操作j時(shí)需要相同的處理時(shí)間,那么具有較小ID號的機(jī)器排在前列,這 樣,在機(jī)器分配向量中W意味著操作j選擇了在排序后的可用機(jī)器序列中的第臺機(jī)器,也 即具有第叫小處理時(shí)間的機(jī)器。
[0036] (d)操作序列向量可以表示為v= [V1,v2, ···~]。它是一個(gè)所有操作ID號的一個(gè)全 排列,其中操作ID號在這個(gè)向量中的出現(xiàn)順序表示該操作的調(diào)度優(yōu)先順序。例如,對于在表 中的問題,一個(gè)可能的操作序列向量可以表示為^=[6,1,7,3,4,2,5]。這個(gè)向量可以直接 轉(zhuǎn)換為操作的優(yōu)先順序列表:〇3,1>〇1,1>〇3,2>〇2,1>〇2,2>〇1,2>〇2,3。操作〇3,1有最高的優(yōu) 先權(quán)并被首先調(diào)度,然后是操作Oi, i,以此類推。
[0037] (2)染色體解碼:染色體解碼就是按向量v中的操作排列順序,逐個(gè)將每個(gè)操作分 配到指定的機(jī)器上(由機(jī)器分配向量U確定),并且在該機(jī)器上為其分配一段處理時(shí)間。具體 方法為:從機(jī)器分配向量U中獲取它所選擇的處理機(jī)器,然后可以從0時(shí)刻開始往后順序掃 描該機(jī)器上已安排操作之間的空閑時(shí)隙直到一個(gè)可用的空閑時(shí)隙被找到,以安排該操作。
[0038] 其中,可用的空閑時(shí)隙尋找方法如下:設(shè)表示一個(gè)操作0^在調(diào)度中的開始執(zhí) 行時(shí)刻,Ci,j表示它的完成時(shí)刻。因?yàn)橐粋€(gè)操作只能在它所屬作業(yè)內(nèi)的上一個(gè)操作執(zhí)行完成 后才能執(zhí)行,所以如果在機(jī)器M k上的一個(gè)空閑時(shí)隙[SX,EX]對于操作是可用的,那必須滿 足如下約束條件:
[0039]
[0040]式中,Sx表示時(shí)隙的開始時(shí)間;Ex表示時(shí)隙的結(jié)束時(shí)間;(^^表示操作的完成 時(shí)刻,Pi, j,k表不操作Oi, j在機(jī)器Mk上的加工時(shí)間。
[0041] 當(dāng)操作0^被分配到可用的空閑時(shí)隙后,它的開始時(shí)刻就被設(shè)置為maX{Sx,cm}, j 2 2或者Sx,j = 1。如果在機(jī)器Mk上對于操作不存在這樣的時(shí)隙,那么操作將被安排 到機(jī)器Mk的時(shí)間末端上。通過這種解碼方式產(chǎn)生的調(diào)度解可以保證是活動調(diào)度解。例如,對 于表1中的問題,一個(gè)可行的染色體為11=[1,1,1,1,1,2,1]和¥=[6,1,7,3,4,2,5],那么通 過上述解碼方式可以得到以甘特圖描述的活動調(diào)度解。
[0042] 由此可見,在該解碼方式中,一個(gè)操作在被調(diào)度時(shí),允許其在所分配的機(jī)器上搜索 最早的可用空閑時(shí)隙。因此對于被分配在同一臺機(jī)器上的操作^和^,有可能出現(xiàn)如下情 形:在解碼得到的調(diào)度方案中Vi在vj之前被執(zhí)行,但是在向量v中,Vj實(shí)際出現(xiàn)在Vi之前。為 了在遺傳搜索中更好地繼承高質(zhì)量的操作序列信息,在染色體涉及遺傳操作之前,本發(fā)明 對染色體中的向量 v進(jìn)行重排,具體做法是根據(jù)操作在解碼后所得調(diào)度中的開始時(shí)刻,對所 有操作進(jìn)行非遞減的排序,所得到的操作序列就是調(diào)整后的向量V。
當(dāng)前第2頁
1 
2 
3 
4