本發(fā)明涉及作業(yè)車間調度技術領域,具體地涉及用算法求解柔性作業(yè)車間調度問題。
背景技術:
柔性作業(yè)車間調度問題(FJSP)是經(jīng)典的作業(yè)車間調度問題(JSP)的擴展。在JSP中,僅考慮工件具有唯一確定的加工工藝路線的情況。而在FJSP中,每道工序可以在多臺機器上加工,工件具有可選擇的加工路線,并且在不同的機器上加工所需的時間不同,因此FJSP比JSP更接近實際制造環(huán)境,是實際生產(chǎn)中亟需解決的一類調度問題。
FJSP不僅需要確定工件的加工順序,還要確定某道工序由哪臺機器加工。因此,F(xiàn)JSP是比JSP更為復雜的問題?,F(xiàn)有的研究方法主要分為精確算法、啟發(fā)式規(guī)則和元啟發(fā)式算法(如模擬退火、遺傳算法等)。其中精確算法無法對大規(guī)模FJSP進行有效求解;啟發(fā)式規(guī)則求解速度快,但所得質量較差;遺傳算法具有通用性、魯棒性、隱含并行性等特點,在生產(chǎn)調度領域的應用非常廣泛,但其迭代迭代過程是沒有指導且完全隨機的自然選擇與遺傳操作,忽視了問題的特征信息在求解問題時的重要作用。
技術實現(xiàn)要素:
針對上述不足,本發(fā)明將文化算法與遺傳算法結合,文化算法由主群體空間和信仰空間兩部分組成,是一種從種群中獲取有用的知識保存在信仰空間中,并利用這些知識指導搜索過程,是一種基于知識的多進化過程的全局優(yōu)化搜索算法。本發(fā)明針對FJSP的特點,提出基于知識指導的遺傳算法,采用遺傳算法作為主群體空間,該算法在迭代過程中利用文化算法的尋優(yōu)機制提取解的特征知識,指導遺傳算法的選擇操作,形成一種雙層進化結構。
本發(fā)明的目的是:提高算法的收斂速率和求解質量。
本發(fā)明為實現(xiàn)上述目的,所采用的技術方案是:一種新的混合算法求解柔性作業(yè)車間調度問題。該技術方案包括以下步驟:
步驟1:令群體進化迭代次數(shù)t=0,更新頻率記錄次數(shù)f=0,并初始化算法的各種參數(shù)、主群體空間、信仰空間A和信仰空間B;
步驟2:如果t≥Maxlter(最大迭代次數(shù))則算法結束,否則轉到下一步驟;
步驟3:根據(jù)更新頻率f0,決定是否更新信仰空間,若f=f0,則更新;否則轉步驟5;
步驟4:采用k近鄰法,利用信仰空間B的知識指導,執(zhí)行相似性選擇算子操作;
步驟5:采用兩點交叉的方式進行交叉操作;
步驟6:自學習鄰域搜索變異,將進行變異的染色體與信仰空間A中最優(yōu)染色體進行比較,根據(jù)基因取值不同的數(shù)量決定變異操作的方式;
步驟7:生成新一代種群,令t=t+1,f=f+1,返回步驟2,重復此程序。
本發(fā)明的有益效果是:本發(fā)明基于文化算法具有知識指導的特點,提出具有知識指導的遺傳算法,在迭代過程中利用文化算法的尋優(yōu)機制提取解的特征知識,指導遺傳算法的選擇操作,形成雙層進化結構,使個體在搜索空間中加快了收斂速度,避免出現(xiàn)了早熟而收斂于局部最優(yōu)解。同時,通過計算相似性指數(shù)來指導選擇操作確保優(yōu)秀個體進入下一次迭代的子空間;通過在指定范圍的變異點進行自學習鄰域操作變異,保證個體在迭代過程中有效繼承父代的優(yōu)良特征,從而加速搜索過程不斷向最優(yōu)的方向逼近。
附圖說明:
圖1表示本算法的詳細流程圖
圖2表示本算法的重復置換工件號的編碼方式示例圖
具體實施方式:
本發(fā)明提出了一種新的混合算法求解柔性作業(yè)車間調度問題,該算法基于文化算法具有知識指導的特點,提出具有知識指導的遺傳算法,在迭代過程中利用文化算法的尋優(yōu)機制提取解的特征知識,指導遺傳算法的選擇操作,形成雙層進化結構。
下面結合附圖,對本發(fā)明進一步的描述:
一、柔性作業(yè)車間調度問題
柔性作業(yè)車間調度描述如下:一個加工系統(tǒng)有m臺不同的機器M={Mj|j=1,2,…m}要加工n個工件J={Ji|i=1,2,…n}。FJSP包括兩個子問題:(1)為每道工序Oik在對應的可用機器集合Mik中選擇合適的機器Mj,即機器分配問題。
(2)為已經(jīng)選定的機器集M安排n個工件集J的排列工序,并在滿足一定約束條件的同時優(yōu)化一個或者多個給定的性能指標,即工件調度問題。
二、算法的關鍵內(nèi)容說明
1、編碼方式,結合圖2
本發(fā)明采用重復置換工件號的編碼方式。即對一個規(guī)模為n×m的作業(yè)車間調度而言,一條染色體有n×m個基因,每個基因表示一個工件號,工件號在染色體中出現(xiàn)的位置表示其對應的工序,如圖2所示。這種編碼方式的優(yōu)點是不需要修復機制,因為它進行的遺傳操作不產(chǎn)生不可行解。
結合圖2,圖中的矩形框表示染色體上的基因,每個基因表示一個工件號,322112313對應的工序為J31、J21、J22、J11、J12、J23、J32、J13、J33。第一個基因位上的工件號是3,且該工件號第一次出現(xiàn),則相對應的工序是第三個工件的第一道工序,即為J31,后面的依據(jù)這樣的方法,依次類推。
2、解碼方式
由于活動調度算法所生成的調度方案一定包含最優(yōu)值,所以本算法的解碼采用活動調度的方法。
3、設計信仰空間
(1)信仰空間的組成
本算法的信仰空間由A和B兩部分構成,分別由接受函數(shù)accept1()和accept2()來決定。假設主群體空間中共有L條染色體,令chml表示主群體空間中第l條染色體,chml的適應度值Fl為其對應調度方案的所有工件的最大完工時間Cmax,則信仰空間A為:
accept1():A=[chm*]
F*=minFl,(1≤l≤L)
即由最優(yōu)染色體構成信仰空間A,信仰空間B為:
accept2():B=[chm1,chm2,...,chmx]
首先按照染色體的適應度值的大小,依次排列為F1<F2<…<Fx<Fl,然后取前x個個體存放到信仰空間B中。即,選擇既定數(shù)量為x的部分最優(yōu)染色體組成信仰空間B。
(2)信仰空間的更新
每迭代既定的次數(shù)后,更新信仰空間,使信仰空間持續(xù)保存當前最好的知識信息。因此,本算法采用當前最好的部分調度方案作為學習對象,將信仰空間相鄰兩次更新之間的算法迭代次數(shù)稱為更新頻率,記住f0。
4、交叉操作
本發(fā)明采用具有全局搜索能力,以概率1收斂的兩點交叉算子執(zhí)行本算法的交叉操作。
5、變異操作
本發(fā)明采用鄰域搜索變異,使變異操作在信仰空間A中知識的指導下以更寬的搜索區(qū)域進行迭代,具體實現(xiàn)過程如下:
(1)確定變異點的選擇范圍,根據(jù)變異概率Pm在子空間中隨機選擇一條染色體,與最優(yōu)染色體比較,并記錄基因取值不同的染色體位置pos和個數(shù)q(q為偶數(shù));
(2)根據(jù)q的大小進行不同的變異操作:
一種變異操作:當q≤2時,隨機選擇變異點,進行鄰域搜索變異。
另一種變異操作:當q≥4時,則先產(chǎn)生一個由1到q之間的整數(shù)所組成的隨機序列P,令u表示進行鄰域搜索變異的基因個數(shù),v表示循環(huán)次數(shù),w表示最大循環(huán)次數(shù),且w為q/u向下取整,即w=[q/u],一般情況下,u=3,具體過程如下:1)令v=1;2)從左到右依次取隨機序列P上的3個元素P[uv-2]、P[uv-1]、P[uv]來決定pos上進行鄰域搜索變異的基因位置;3)進行鄰域搜索變異;4)將v←v+1,若v≤w則轉到2),否則算法結束。
從中可以看出,q的數(shù)值越大,說明被變異染色體和最優(yōu)染色體之間的基因取值不同的位置越多;反之,則越少。該變異方式有自學習的特點,其時間復雜度為O(q),其中q等于當前染色體與信仰空間A中染色體之間基因位置取值相異點的個數(shù),其偽代碼如下:
6、選擇操作
本發(fā)明采用K近鄰法,利用信仰空間B中的知識指導選擇操作,具體過程如下:
(1)利用基于輪盤賭的選擇方式生成初始子群體空間;
(2)在子群體空間中選擇既定數(shù)量為k的優(yōu)良個體集合,根據(jù)k近鄰法將這些個體與信仰空間B中的染色體進行相似性指數(shù)計算;
(3)查找k個相似性指數(shù)Sd最大的個體,并將這些個體插入到當前子群體空間中,同時淘汰掉k個最差的個體。其相似性指數(shù)計算公式如下:
如果兩條染色體中對應基因位置的取值相同,則返回值為1,否則為0,其計算公式如下:
其中,chm1和chm2分別表示兩條染色體,i表示染色體中基因所處的位置,y表示染色體的長度,一般在規(guī)模為n×m的作業(yè)車間調度問題中其大小為y=nm。
本算法的相似性指數(shù)Sd表示兩條染色體編碼之間的海明距離,因為兩個解之間的不同與染色體編碼之間的海明距離幾乎成正比,所以通過計算相似性指數(shù)可以推出兩個解之間的相近程度,如果相似性指數(shù)Sd的取值越大,則兩條染色體就越相近,反之亦然。
上述結合附圖只是對該算法的描述,并不因此限定本發(fā)明,本發(fā)明的保護范圍依據(jù)權利要求書的內(nèi)容確定。