本發(fā)明涉及作業(yè)車間調度技術領域,具體地涉及多目標柔性作業(yè)車間調度領域。
背景技術:
柔性作業(yè)車間調度問題(FJSP)是一種機器和工序有多個選擇的調度。通常,它包含機器分配和工序調度。針對作業(yè)車間調度問題的方法是改進生產的工作效率、靈活性和可靠性的關鍵方法。深入研究柔性作業(yè)車間調度問題并針對它提出高效的算法是具有很大的現實意義的,特別是對于在一個激烈競爭環(huán)境中的企業(yè)。
相比于傳統(tǒng)的作業(yè)車間調度問題,柔性作業(yè)車間調度問題有更少的約束,因此可行解的搜索空間更大。因此,它更困難,是一個NP—hard問題。針對這個問題的現有算法包括啟發(fā)式算法、遺傳算法和禁忌搜索等算法。
遺傳算法(Genetic Algorithm,GA)作為一種啟發(fā)性搜索方法,是基于“適者生存”機制設計的算法,其思想來源于達爾文的進化論和孟德爾的遺傳學說。GA主要是通過從改進交叉操作和變異操作的角度以適應于具體問題的求解,但遺傳算法在交叉變異后可能產生不可行的解,且遺傳算法面臨全局近優(yōu)的問題。在這種情況下遺傳搜索和鄰域搜索組合的混合遺傳算法被提出來解決柔性作業(yè)車間調度問題,這種組合使算法同時具備了全局搜索能力和局部搜索能力。
即使很多的算法被提出,但都有復雜的編碼方式,使得解碼困難耗費大量的計算時間。
技術實現要素:
針對現有技術存在的上述不足,本發(fā)明要解決的問題是提供一種混合遺傳算法解決多目標柔性作業(yè)車間調度問題。
本算法的目的則是克服現有技術中存在的:第一、編碼方式過于復雜,造成解碼困難,計算時間長;第二、可行的解(調度方案)在經過交叉、變異操作后可能產生不可行的解(調度方案);第三、遺傳搜索具有全局近優(yōu),局部搜索可能作用于局部最優(yōu)解;第四、以加權法解決多目標問題時各目標函數的加權值不易確定;第五、一個解的鄰域解數量非常多,占用計算時間過多。
本發(fā)明為實現上述目的所采用的技術方案是:采用一種混合遺傳算法求解柔性作業(yè)車間調度問題,該算法包括以下步驟:
該算法的參數設定如下:種群規(guī)模N設為50、交叉概率Pc設定為0.5,突變概率Pm被設為0.05;局部搜索中對每個當前解檢測k個鄰域解;算法迭代的終止條件是:如果最優(yōu)的個體在連續(xù)的20代中不能被改進,那么算法被停止。
步驟1:初始化種群N,采用一種新的編碼方式——基于工件調度編碼的矩陣染色體;
步驟2:更新精英組;
步驟3:通過相對重要性的權值法求出各目標函數加權值,通過標準化各目標函數確定適應度函數值;
步驟4:遺傳搜索
步驟4.1:隨機選擇N/2個個體;
步驟4.2:通過概率Pc選擇兩個父代,進行基于矩陣的單點交叉;
步驟4.3:通過概率Pm選擇父代,進行基于矩陣的突變;
步驟5:對每個解進行局部搜索;(與步驟4同時進行)
步驟6:采用輪盤賭法選擇法隨機選擇S個體;
步驟7:迭代;
步驟8:更新精英組;
本發(fā)明的有益效果是:
第一、采用新的編碼方式,簡化了編碼過程,同時使得算法在運行過程中幾乎不用進行解碼;第二、采用專門用于本編碼方式的單點交叉算子和突變算子,更易得到可行解;第三、將遺傳算法的全局搜索能力與局部搜索結合,增強搜索能力;第四、采用相對重要性的加權法,使各目標函數加權值更加符合實際生產情況。第五、只隨機選取當前解的部分鄰域解進行檢測,避免了局部搜索占用過多的計算時間。
附圖說明
圖1本算法的詳細流程圖。
圖2表示柔性作業(yè)車間調度的示例圖。
圖3表示該算法的編碼方式示例圖。
圖4.1表示進行單點交叉的兩個父代,其中粗線是交叉線,只交叉兩個父代交叉線以上的任務。
圖4.2表示交叉后的后代
圖5表示基于矩陣的突變過程示例,其中粗線是突變線,突變只通過交換突變線之間的兩行任務。
圖6表示專家評估法得出的各目標的相對重要性。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖和實施例對本發(fā)明進一步詳細說明。應當理解此處所描述的具體實施例僅僅用于解釋本發(fā)明并不用于限定本發(fā)明。基于本發(fā)明中的實施例,本領域技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明針對目前一些算法沒有考慮多目標的柔性作業(yè)車間調度,且現有技術中遺傳算法存在全局近優(yōu)、解碼過程困難的問題。該發(fā)明提出了一種混合遺傳算法求解多目標柔性作業(yè)車間調度問題。其中時間、成本和設備利用率被用來作為目標函數。它把遺傳算法的全局搜索能力與鄰域搜索算子的局部搜索能力相結合?;诠ば騼?yōu)先關系,矩陣表示法被設計出來。AHP層次分析法被采取來找到每個目標的加權值。每個目標被標準化以避免傾向于一些目標,并且,通過所有目標函數的線性和,原問題被轉化為單目標優(yōu)化問題。
下面結合附圖和實施例,對本發(fā)明進行詳細說明。
設在多目標柔性作業(yè)車間調度中:n個工件表示為:J1,J2,...Jn;m臺機器表示為:M1,M2,...Mm;工件Ji的第j道工序表示為:Oij
多目標柔性作業(yè)車間調度問題可以從圖2示例看出(圖中“0”表示該機器上沒有工序被加工)在一個生產系統(tǒng)中有m臺機器和n個工件。每個工件需要一些步驟來加工,并且在每個步驟中,有數個機器能夠被選擇。每個工件的步驟的順序是預先確定的。每個步驟能夠在不同的機器上以不同的成本被執(zhí)行。問題是如何確定開始時間、結束時間和工件的程序,以使完成時間、生產成本和設備利用率在滿足下列條件的情況下被最優(yōu)化:所有的機器在t=0時刻可用;一臺機器一次僅僅能夠加工一個工件;每個工序序列在相關的機器上的加工時間是已知的;每個工件的步驟是有順序的,任意兩個工件的步驟是無順序的。
多目標柔性作業(yè)車間調度問題的數學模型可以表示為:完成時間通過所有工件的最大完成時間來評價。成本通過產品的加工成本和庫存成本來測量。設備利用率通過機器的總負荷來測量。他們被用來作為目標函數。因此,問題的數學模型如下:
minf1=min(maxTi) (1)
受約束于Xijk=1或0, (4)
i=1,2,…,n,j=1,2,…,ni,k=1,2,…,m
其中Ti表示第i個工件的完成時間,C表示總消耗,Cijk表示第i個工件在第k臺機器的第j個工序中的消耗,表示在第i個工件在第k臺機器的第j個工序中的最早開始時間,表示第i個工件在第k臺機器的第j-1個工序的結束時間,也就是,在第j-1個工序中允許的最早時間。表示在加工第j-1個工序和第j個工序期間第i個工件的庫存消耗。Tijk表示第i個工件在第k臺機器的第j個工序中的加工時間。Xijk表示決策變量,它表示在第j個工序中第i個工件是否會被在第k臺機器上加工。如果是,Xijk取值1,否則,它取值0。ni是第i個工件的工序數。
針對建立的上述問題的模型,該算法的實施步驟如下:
該算法的參數設定如下:種群規(guī)模N設為50、交叉概率Pc設定為0.5,突變概率Pm被設為0.05;局部搜索中對每個當前解檢測k個鄰域解;算法迭代的終止條件是:如果最優(yōu)的個體在連續(xù)的20代中不能被改進,那么算法被停止。
步驟1:初始化種群N,采用一種新的編碼方式——基于工件調度編碼的矩陣染色體;
一個合適的編碼方案是解決實際問題的第一步,通過考慮特性和柔性路徑結構,一個新的基于工件調度編碼的矩陣染色體編碼方案被設計出來。這種編碼方式是用i/j來表示第j個工件在第k臺機器上的第i個工序。采用此編碼方案對柔性作業(yè)車間調度問題而言更加簡單,且?guī)缀醪挥眠M行解碼。
該編碼方案結合圖3描述如下:該發(fā)明研究的是柔性作業(yè)車間中4臺機器,2個工件,每個工件3道工序的的調度,圖3在矩陣第k行的元素i/j表示第j個工件在第k臺機器上的第i個工序,圖中0表示在第k臺機器上沒有沒有被加工的工件。例如,在第一行,1/2表示第二個工件在第一臺機器上的第一個工序,0表示在第一臺機器上沒有工件被加工
步驟2:更新精英組;
步驟2.1:將當前種群中的非支配解復制入精英組;
步驟2.2:檢測精英組中的解,將被其他解所支配的解從精英組中刪除;
步驟3:通過相對重要性的權值法求出各目標函數加權值,通過標準化各目標函數確定適應度函數值;
步驟3.1根據專家評估法給出的相對重要性關系如圖6,通過式(10)、式(11)、式(12)確定各目標函數的加權值;
步驟3.2:通過式(7)計算每個解的適應度函數值;
步驟4:遺傳搜索
步驟4.1:隨機選擇N/2個個體
步驟4.2:通過概率Pc選擇兩個父代,進行基于矩陣的單點交叉;
結合圖4該交叉通過概率pc選擇兩個父代后,矩陣中一個被稱為交叉線(粗線)的水平線被隨機地選擇。兩個父代交換交叉線上面的任務得到兩個后代中的結果。如果后代是不可行的,那么合適的調整被進行來得到兩個可行的后代。
步驟4.3:通過概率Pm選擇父代,進行基于矩陣的突變;
結合圖5該突變是通過概率pm選擇父代。對于每個被選擇的個體,矩陣中被稱為突變線(粗線)兩個水平線被隨機地選擇。這些線之間的調度被隨機地交換,但是機器順序保持不變。突變線之間有兩行,突變只通過交換這兩行來進行。
步驟5:對每個解進行局部搜索(與步驟4同時進行);
步驟5.1:隨機選擇當前解的一個鄰域解,鄰域解通過遺傳搜索中的突變算子產生:
步驟5.2:如果鄰域解優(yōu)于當前解,則以鄰域解作為當前解替換原當前解,返回步驟5.1;否則,執(zhí)行下一步。
步驟5.3:如果已經檢測了當前解的k個鄰域解,則局部搜索結束,當前解即為局部搜索的結果;否則,返回步驟5.1
步驟6:采用輪盤賭法選擇隨機選擇S個體;
步驟6.1::計算每個個體(xi)被遺傳到下一代的概率P(xi):
其中S為待選擇種群的種群規(guī)模
步驟6.2:計算每個個體(xi)的積累概率qi:步驟6.3:在[0,1]之間產生一個隨機數r
步驟6.4:如果r<q1,則個體x1被選擇;如果qk-1<r≤qk,則選擇個體xk
步驟6.5:對步驟6.3、6.4重復N次,以選擇到N個個體
步驟7:迭代;
如果算法已經迭代了指定次數,則執(zhí)行下一步驟(更新精英組);否則,返回步驟2。
步驟8:更新精英組
步驟8.1:將當前種群中的非支配解復制入精英組;
步驟8.2:檢測精英組中的解,將被其他解所支配的解從精英組中刪除;
所述步驟1該算法使用的新的編碼方式,使得該算法幾乎不用解碼,因為解碼是一個染色體被轉換為問題的解的初始結構的過程。也就是,他被轉化為調度方案。該編碼方式的每個矩陣能夠被很簡單地表示為一個調度方案,所以幾乎不用進行解碼。
所述步驟3計算適應度函數值具體描述如下:
本算法有三個目標,它們分別是時間、消耗和設備利用率。因為三個目標有不同的度量,所以他們不能通過定量指標被公平地直接比較。標準化每個目標是必要的。為了做這個,AHP層次分析法被采取來確定目標的加權值。f1表示時間,f2表示設備利用率,f3表示消耗。加權法解決(f1(x),f2(x),…,fn(x))問題時,適應度函數為
f(x)=w1f1(x)+w2f2(x)+…+wnfn(x), (7)
其中
wi≥0,i=1,2,…,n, (8)
w1+w2+…+wn=1. (9)
以圖6所示的三個目標函數的相對重要性示例為例,加權值的確定方法如下:
1)將相對重要性表(圖6)轉化為矩陣:
2)對得到的矩陣的各列進行標準化(即對每列分別乘以一個數,使各列的和為1):
3)對各列標準化后的矩陣的各行進行標準化(即先將每行求和,再對每行分別乘以一個數,使各行的和為1):
4)對行標準化后的矩陣的每行依次表示三個目標函數的加權值,即f1、f2、f3的加權值分別為w1=0.578、w2=0.302、w3=0.120。
所述步驟6描述為最優(yōu)個體被直接地保持到下一代種群,其他個體根據輪盤賭選擇法進行選擇,用這種方式,差的個體有機會幸存,并且能夠避免早熟。