一種基于目標(biāo)重要性分解的模因演化多目標(biāo)優(yōu)化調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種多目標(biāo)優(yōu)化調(diào)度方法,特別是關(guān)于一種在計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域和 生產(chǎn)調(diào)度領(lǐng)域中應(yīng)用的基于目標(biāo)重要性分解的模因演化多目標(biāo)優(yōu)化調(diào)度方法。
【背景技術(shù)】
[0002] 第二代非支配遺傳算法(Nondominated Sorting Genetic Algorithm II,NSGA_ II)首先隨機(jī)生成含有N個(gè)個(gè)體的初始種群,其中N是種群大小。接下來(lái),算法進(jìn)行迭代直至 終止條件滿足。在第t代,算法在當(dāng)前種群Pt的基礎(chǔ)上,通過(guò)隨機(jī)選擇,模擬兩點(diǎn)交叉 (Simulated Binary Crossover,SBX)和多項(xiàng)式變異產(chǎn)生子代種群QtIt和Qt的大小均為N。 因此,兩個(gè)種群Pt和Qt合并會(huì)形成種群大小為2N的新的種群Rt = PtUQt。為了從種群Rt中 選擇最好的N個(gè)解進(jìn)入下一代,首先利用基于Pareto支配的非支配排序?qū)t分為若干不同 的非支配層(F1,F(xiàn)2等等)。然后,算法構(gòu)建一個(gè)新的種群St,構(gòu)建方法是從F1開(kāi)始,逐次將各 非支配層的解加入到St,直至St的大小等于N,或首次大于N。假設(shè)最后可以接受的非支配層 是1層,那么在1+1層以及之后的那些解就被丟棄掉了,且St\Fl中的解已經(jīng)確定被選擇作為 Pt+Ι中的解。Pt+Ι中余下的個(gè)體需要從F1中選取,選擇的依據(jù)是要使種群在目標(biāo)空間中具 有理想的多樣性。在NSGA-II中,F(xiàn)1中具有較大擁擠距離的解會(huì)優(yōu)先被選擇。
[0003]多目標(biāo)遺傳局部搜索(Multiobjective Genetic Local Search,M0GLS)是較早的 蘊(yùn)含分解思想的多目標(biāo)進(jìn)化算法,它最初是用來(lái)求解多目標(biāo)流水車間調(diào)度問(wèn)題。另外從搜 索行為上來(lái)看,M0GLS混合了遺傳搜索和局部搜索,所以它也可以看作是一種模因演算法。 M0GLS的執(zhí)行流程簡(jiǎn)要描述如下。首先,算法初始化一個(gè)大小為N的種群,并用一個(gè)外部存檔 儲(chǔ)存所找到的非支配解。之后,算法進(jìn)行迭代直至終止條件滿足。在M0GLS的第t代,首先選 出當(dāng)前種群Pt中的所有非支配解,并用其更新外部存檔。然后算法進(jìn)入交配選擇階段,需要 選擇N-Nel ite對(duì)父代個(gè)體,每對(duì)個(gè)體進(jìn)行交叉和變異操作產(chǎn)生一個(gè)子代個(gè)體,并將其加入 到Pt+Ι中。在選擇每對(duì)父代個(gè)體時(shí),首先隨機(jī)產(chǎn)生一個(gè)權(quán)向量w=(wl,w2,. . .,wm)T,其中Σ ¥1 = 1,111是目標(biāo)數(shù)目,然后對(duì)?1:中的每個(gè)解1,有加權(quán)函數(shù)值;^1)=2¥1;^(1),其中;^是第 i個(gè)目標(biāo)函數(shù),通過(guò)該函數(shù)值,由基于輪盤賭的比例選擇法,可以得到每個(gè)個(gè)體被選擇的概 率P(x),根據(jù)該概率,可以選擇兩個(gè)父代個(gè)體。接著,算法采用了一種精英策略,從外部存檔 中隨機(jī)選擇Nelite個(gè)解加入到Pt+Ι中,那么現(xiàn)在Pt+Ι中解的個(gè)數(shù)已達(dá)到種群大小。之后,算 法進(jìn)入局部搜索過(guò)程,該過(guò)程總共執(zhí)行N次,每次選擇當(dāng)前種群Pt+Ι中的一個(gè)個(gè)體以概率 pLS進(jìn)行局部改進(jìn),選擇方法如下:隨機(jī)產(chǎn)生一個(gè)權(quán)向量w=(wl,w2,. . .,wm)T,其中2wi = 1,然后依據(jù)函數(shù)值f(x)= fi(x)使用無(wú)放回錦標(biāo)賽選擇從Pt+Ι中選擇一個(gè)個(gè)體。如果 局部搜索被執(zhí)行,改進(jìn)后的個(gè)體將作為下一代種群中的個(gè)體,否則原來(lái)個(gè)體將進(jìn)入下一代 種群。另外,在局部搜索中,算法設(shè)置了一個(gè)參數(shù)k,每次只隨機(jī)檢測(cè)當(dāng)前解的k個(gè)鄰域,k較 小時(shí)局部搜索很快就會(huì)終止,否則局部搜索會(huì)檢測(cè)很多解,通過(guò)該參數(shù)可以調(diào)整局部搜索 在M0GLS中所花費(fèi)的計(jì)算開(kāi)銷。
[0004] NSGA-II在求解多目標(biāo)柔性作業(yè)車間調(diào)度問(wèn)題往往沒(méi)有充分利用問(wèn)題相關(guān)的知 識(shí),局部搜索的探索能力有限;MOGLS重在解決如何在多目標(biāo)優(yōu)化中選擇解進(jìn)行局部搜索, 以及如何對(duì)局部搜索中的解進(jìn)行評(píng)價(jià)的問(wèn)題,但是全局搜索能力欠缺。
[0005] 另外,這兩種經(jīng)典算法共同的缺陷:第一,并沒(méi)有充分利用問(wèn)題相關(guān)知識(shí);第二,并 沒(méi)有考慮問(wèn)題的多個(gè)目標(biāo)之間重要性的區(qū)別以及它們之間的相關(guān)性。
【發(fā)明內(nèi)容】
[0006] 針對(duì)上述問(wèn)題,本發(fā)明的目的是提供一種基于目標(biāo)重要性分解的模因演化多目標(biāo) 優(yōu)化調(diào)度方法,該方法可以對(duì)多目標(biāo)柔性作業(yè)車間系統(tǒng)進(jìn)行有效的調(diào)度,且調(diào)度效果優(yōu)于 目前已有的先進(jìn)算法。
[0007] 為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案:一種基于目標(biāo)重要性分解的模因演 化多目標(biāo)優(yōu)化調(diào)度方法,其特征在于,所述方法步驟如下:1)隨機(jī)產(chǎn)生一個(gè)大小為N的初始 種群Ρο; 2)在算法每一代中,先由當(dāng)前種群Pt通過(guò)二元錦標(biāo)賽選擇,遺傳算子產(chǎn)生一個(gè)子代 種群Qt;3)利用局部搜索策略對(duì)子代種群Q t進(jìn)行精細(xì)搜索以得到一個(gè)改善的種群以*;4)將 當(dāng)前種群Pt、子代種群Qt和改善的種群Q、合并生成一個(gè)種群Rt,對(duì)種群Rt中目標(biāo)大小完全相 同的個(gè)體進(jìn)行變異操作;5)利用NSGA-II中的快速非支配排序與擁擠距離方法對(duì)種群R t中 的個(gè)體進(jìn)行排序,以選擇最好的N個(gè)解作為下一代種群Pt+1。
[0008] 進(jìn)一步,所述步驟2)中,利用遺傳算子產(chǎn)生子代種群,即利用遺傳搜索產(chǎn)生子代種 群,其包括染色體編碼、染色體解碼和遺傳操作:(1)染色體編碼:(a)給定每個(gè)操作一個(gè)固 定的ID: j,其中j = l,2, . . .,d,d= Σγη;在編號(hào)之后,一個(gè)操作也可以用固定ID號(hào)進(jìn)行指 代;(13)機(jī)器分配向量表示為11=[111,112,一11(]],且11」?jié)M足1<11」<1」,其中1」是供操作」執(zhí)行的 機(jī)器數(shù)目;(c)進(jìn)一步將操作j的可用機(jī)器按操作j在其上的處理時(shí)間進(jìn)行非遞減的排序:如 果兩臺(tái)機(jī)器在執(zhí)行操作j時(shí)需要相同的處理時(shí)間,那么具有較小ID號(hào)的機(jī)器排在前列;(d) 操作序列向量表示為V = [ VI,V2,…Vd],其中操作ID號(hào)在這個(gè)向量中的出現(xiàn)順序表示該操作 的調(diào)度優(yōu)先順序,操作有最高優(yōu)先權(quán)的被首先調(diào)度;(2)染色體解碼:按向量V中的操作排列 順序,逐個(gè)將每個(gè)操作分配到指定的機(jī)器上,并且在該機(jī)器上為其分配一段處理時(shí)間:從機(jī) 器分配向量u中獲取它所選擇的處理機(jī)器,然后從0時(shí)刻開(kāi)始往后順序掃描該機(jī)器上已安排 操作之間的空閑時(shí)隙直到一個(gè)可用的空閑時(shí)隙被找到,以安排該操作;(3)遺傳操作用來(lái)生 成子代個(gè)體,它包括交叉和變異。
[0009] 進(jìn)一步,所述步驟(2)中,可用的空閑時(shí)隙尋找方法如下:設(shè)表示一個(gè)操作 在調(diào)度中的開(kāi)始執(zhí)行時(shí)刻,Ci,j表示它的完成時(shí)刻;如果在機(jī)器Mk上的一個(gè)空閑時(shí)隙[SX,EX] 對(duì)于操作是可用的,那必須滿足如下約束條件:
[0010]
[0011] 當(dāng)操作〇1」被分配到可用的空閑時(shí)隙后,它的開(kāi)始時(shí)刻就被設(shè)置為max{Sx, Cl,H}, j 2 2或者Sx,j = 1;如果在機(jī)器Mk上對(duì)于操作不存在這樣的時(shí)隙,那么操作將被安排 到機(jī)器Mk的時(shí)間末端上。
[0012] 進(jìn)一步,所述步驟(3)中,交叉是對(duì)一對(duì)染色體進(jìn)行操作,對(duì)染色體中的兩個(gè)向量u 和v,交叉操作是分別獨(dú)立執(zhí)行的:對(duì)于向量u上的交叉操作,首先在其中隨機(jī)選擇一些交叉 位置,然后通過(guò)交換兩個(gè)父代染色體相應(yīng)位置上的基因信息以得到兩個(gè)子代個(gè)體的向量U 表示;對(duì)于向量V上的交叉操作,采用一個(gè)改進(jìn)的序列交叉方式,具體方法為:首先,在向量V 中隨機(jī)選擇兩個(gè)交叉點(diǎn),將第一個(gè)父代個(gè)體中在這兩個(gè)交叉點(diǎn)之間的所有操作復(fù)制到第一 子代個(gè)體的相應(yīng)位置;然后,對(duì)于余下的操作,按照第二個(gè)父代個(gè)體中這些操作出現(xiàn)的優(yōu)先 順序逐個(gè)將它們填補(bǔ)到第一個(gè)子代個(gè)體的向量V中的空余部分;對(duì)于第二個(gè)子代個(gè)體,對(duì)稱 地由在第二個(gè)父代個(gè)體中選擇交叉點(diǎn)的方式得到;最后,對(duì)交叉后得到的向量V進(jìn)一步做修 補(bǔ)策略,以調(diào)整同一個(gè)作業(yè)內(nèi)的操作的相對(duì)順序。
[0013] 進(jìn)一步,所述步驟(3)中,變異只針對(duì)于單個(gè)個(gè)體,變異操作包含兩個(gè)獨(dú)立的部分: 對(duì)于向量U,任意選擇一個(gè)操作然后改變?cè)摬僮鞯臋C(jī)器分配;對(duì)于向量V,在不違反同一作業(yè) 內(nèi)操作優(yōu)先順序的前提下,將一個(gè)操作插入到向量V的另一個(gè)位置上,其中操作和位置都是 隨機(jī)選擇的。
[0014] 進(jìn)一步,所述步驟3)中,利用局部搜索策略對(duì)子代種群進(jìn)行局部搜索分為兩個(gè)部 分:⑴子代種群中的個(gè)體選擇:首先,定義聚合函數(shù):f (1,1)=11:^(1)+\2€2(1)+13;^(1),其 中λ = [λ:,λ2,λ3 ]是一個(gè)權(quán)向量,f i (X)、f 2 (X)和f 3 (X)分別設(shè)置為MO-FJSP問(wèn)題的3個(gè)優(yōu)化目 標(biāo),即完工時(shí)間,總負(fù)載和關(guān)鍵負(fù)載;然后,生成一組滿足約束條件且在目標(biāo)空間中均勻分 布的權(quán)向量;約束條件為. . .,z},i = l,2,3,權(quán)向量的個(gè)數(shù)為((z+ 2)(z+l))/2;當(dāng)選擇一個(gè)個(gè)體進(jìn)行局部搜索時(shí),先從這些權(quán)向量中隨機(jī)選擇一個(gè),然后以這 個(gè)權(quán)值向量確定的聚合函數(shù)f (X,λ)為比較指標(biāo),通過(guò)無(wú)放回的錦標(biāo)賽選擇方式選擇一個(gè)精 英解,最后對(duì)該解進(jìn)行局部搜索以得到一個(gè)或一組改進(jìn)的解;最后,引入一個(gè)局部搜索的概 率Pis,在子代種群中將有個(gè)解被選擇以執(zhí)行進(jìn)一步的局部搜索;(2)選擇了某個(gè)個(gè) 體,通過(guò)局部搜索對(duì)該個(gè)體進(jìn)行精煉以得到更高質(zhì)量的個(gè)體,即針對(duì)個(gè)體的局部搜索:①在 局部搜索中,一個(gè)調(diào)度解G的鄰域解是通過(guò)移動(dòng)某個(gè)操作來(lái)得到的:設(shè)定調(diào)度解G的鄰域解 G'是可接受的當(dāng)且僅當(dāng)Cmax(G);假設(shè)調(diào)度解G中的關(guān)鍵