本發(fā)明涉及作業(yè)車間調(diào)度技術(shù)領(lǐng)域。
背景技術(shù):
作業(yè)車間調(diào)度問題(Job-shop Scheduling Problem)是許多實際生產(chǎn)調(diào)度問題的簡化模型,具有廣泛的應(yīng)用背景,譬如生產(chǎn)制造、交通規(guī)則、郵電通信、大規(guī)模集成電路設(shè)計等問題。作為一類滿足任務(wù)配置和順序約束要求的分配問題,JSP已被證明是一個典型的NP_hard問題,它的求解難度圓圓大于流水線調(diào)度問題。針對解決作業(yè)車間調(diào)度問題的算法一直是學(xué)術(shù)界和工程界共同關(guān)注的重要課題。
現(xiàn)有很多算法被用于解決JSP問題,包括遺傳算法、粒子群算法等,但沒有一種算法能夠直接將車間作業(yè)的屬性作為參數(shù),最終得到一組明了的作業(yè)車間中生產(chǎn)調(diào)度方案解的算法。
布谷鳥搜索(Cuckoo Search,CS)算法是一種新的現(xiàn)代啟發(fā)式算法,由劍橋大學(xué)Yang和拉曼工程學(xué)院Deb于2009年提出的。該算法基于某些布谷鳥種類的巢寄生繁育行為和鳥類、果蠅等的萊維飛行(Levy flight)行為特征提出。布谷鳥搜索算法是模擬布谷鳥為尋找合適的產(chǎn)卵的鳥窩而隨機(jī)游走的尋窩過程。在這個宿主的選擇過程中,布谷鳥在繁殖期尋找與孵化期和育雛其相似的雛鳥食性基本相同、卵形與顏色易仿的宿主。多數(shù)情況下,宿主一旦識別出寄生卵,就將寄生卵扔出或棄巢,在其他地方另建新巢。而布谷鳥在下一次選擇宿主的時候也會放棄該鳥巢而重新選擇。為了便于模擬布谷鳥的尋窩方式,Yang和Deb提出了一下3個假設(shè):(1)布谷鳥一次只產(chǎn)一個蛋,并隨機(jī)選擇鳥窩位置進(jìn)行孵化;(2)在隨機(jī)選擇的一組鳥窩中,最好的鳥窩位置將被保留到下一代;(3)可利用宿主的鳥窩數(shù)量n是固定的,宿主發(fā)現(xiàn)一個外來鳥蛋的概率為Pa。Pa可以近似看作n個位置較差的鳥窩被隨機(jī)產(chǎn)生的幾個新鳥窩替換的概率,通常設(shè)Pa為一個固定值。
傳統(tǒng)的布谷鳥算法具有很好的全局最優(yōu)搜索能力,算法參數(shù)少易于實現(xiàn),但是該算法搜索速度不夠快,計算精度不夠高,算法應(yīng)用范圍不夠大,搜索活力不足。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的上述不足,本發(fā)明要解決的技術(shù)問題是提供一種改進(jìn)的布谷鳥搜索算法解決作業(yè)車間調(diào)度問題。
本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的:傳統(tǒng)的布谷鳥搜索算法假設(shè)條件多,搜索速度不夠快,計算精度不夠高,算法應(yīng)用范圍也不夠大,以及沒有一種算法能夠直觀地給出作業(yè)車間調(diào)度方案的算法。
本發(fā)明要實現(xiàn)的目標(biāo)是:最小化最大完工時間。
本發(fā)明為實現(xiàn)上述目的所采用的技術(shù)方案是:一種改進(jìn)的布谷鳥搜索算法解決作業(yè)車間調(diào)度問題。該算法的具體步驟如下:
步驟1:初始化算法基本參數(shù):設(shè)置鳥窩個數(shù)(工件數(shù)量)N,宿主發(fā)現(xiàn)外來鳥蛋的概率Pa(作業(yè)搶占概率),以及最大迭代次數(shù)MaxT或搜索精度ε;
步驟2:初始化鳥窩位置(工件加工完成時間):根據(jù)訂單周期To,訂單收益R,工件加工時間長度三個方面來確定鳥窩初始位置;
步驟3:確定編碼規(guī)則:按照編碼規(guī)則將鳥窩位置(完成時間)轉(zhuǎn)換為工序排列;
步驟4:計算目標(biāo)函數(shù)值:計算各鳥窩位置對應(yīng)的目標(biāo)函數(shù)值,并獲得當(dāng)前最優(yōu)鳥窩位置;
步驟5:更新鳥窩位置:考慮了鳥窩數(shù)量變化的情況。增加,減少,以及增加的工件訂單是否為緊急訂單的情況;
步驟6:當(dāng)?shù)竭_(dá)最大搜索次數(shù)或滿足搜索精度時轉(zhuǎn)入步驟7,否則,轉(zhuǎn)步驟4進(jìn)行下一次搜索。
步驟7:輸出最優(yōu)調(diào)度值和對應(yīng)的調(diào)度方案(染色體序列)。
本發(fā)明的有益效果是:
1、確定了布谷鳥算法中外來鳥蛋的計算方式,精確高效,使算法更加適用于實際生產(chǎn)環(huán)境中。
2、對于布谷鳥搜索算法在車間調(diào)度問題中的應(yīng)用上,確定了鳥窩的初始位置的計算方式,使算法結(jié)果更加精確,同時計算方法簡單,方便高效,實用性高。
3、突破了布谷鳥算法的三個假設(shè)條件之一:鳥窩數(shù)量不變。本發(fā)明在考慮鳥窩數(shù)量增加的基礎(chǔ)上,考慮了鳥窩數(shù)量減少的情況,使算法的應(yīng)用范圍更廣。
4、確定了訂單估計完成時間的計算方法。
附圖說明
一種改進(jìn)布谷鳥搜索算法的基本流程圖
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及發(fā)明內(nèi)容更加清楚,以下結(jié)合附圖詳細(xì)說明。
步驟1:初始化算法基本參數(shù):設(shè)置鳥窩個數(shù)(工件數(shù)量)N,宿主發(fā)現(xiàn)外來
鳥蛋的概率Pa(作業(yè)搶占概率),以及最大迭代次數(shù)MaxT或搜索精度ε:
其中,n為第L優(yōu)先級的鳥巢(工件)數(shù)量;
步驟2:初始化鳥窩位置(工件加工完成時間):根據(jù)訂單周期To,訂單收
益R,工件加工時間長度三個方面來確定鳥窩初始位置,具體方式如下:
其中,R為完成該訂單所獲收益,no為訂單o的工件數(shù)量;
步驟3:確定編碼規(guī)則:按照編碼規(guī)則將鳥窩位置(完成時間)轉(zhuǎn)換為工序排列,采用基于工序的編碼規(guī)則編碼,即染色體由w×n×m個基因組成,他們表示一個工序的排列,在這個工序排列中每個工件號最多出現(xiàn)m次,其染色體是由一個二維空間點(x,y)表示,即第x個訂單的第y個工件;例如,3×4×3(訂單×階數(shù)×工件×機(jī)器)的實例,染色體序列為(1,1)(1,2)(2,1)(1,1)(3,1)(3,1)(3,3)(3,2)(1,2)(1,2)(1,1)(1,4)。那么,它對應(yīng)的工件加工序列為:
(J1,1,1,J1,2,1,J2,1,1,J1,1,2,J3,1,1,J3,1,2,J3,3,1,J3,2,1,J1,2,1,J1,2,2,J1,1,3,J1,4,1),其中,Jti,j表示第t個訂單的第i個工件的第j道工序,j表示工件i出現(xiàn)的次數(shù)。因此,上面例子的染色體序列表達(dá)的意思是先加工順序為:第1個訂單的第1個工件的第1道工序,加工第1個訂單第2個工件的第1道工序,在加工第2個訂單第1個工件的第1道工序,加工第1個訂單第1個工件的第2道工序,以此類推,最后加工第1個訂單第4個工件的第1道工序。因此在解碼時就可以按照工件的出現(xiàn)順序轉(zhuǎn)化為一個調(diào)度方案。
步驟4:計算目標(biāo)函數(shù)值:計算各鳥窩位置對應(yīng)的目標(biāo)函數(shù)值,并獲得當(dāng)前最優(yōu)鳥窩位置,具體實現(xiàn)為:
目標(biāo)函數(shù):
f(T)=min max1≤o≤w{max1≤k≤m{max1≤i≤nToik}} (1)
約束條件:
Toik-poik+M(1-aoihk)≥Toih
(o=1,2,…,w;i=1,2,…,n;h,k=1,2,…,m) (2)
Tojk-Toik+M(1-xoijk)≥poik
(i,j=1,2,…,n;o=1,2,…,w;k=1,2,…,m) (3)
Toik≥0(o=1,2,…,w;i=1,2,…,n);k=1,2,…,m) (4)
xoijk=0或1(i,j=1,2,…,n;o=1,2,…,w;k=1,2,…,m) (5)
maxi{Toi}≤To (6)
其中,式(1)表示目標(biāo)函數(shù),即完成時間(Makespan);式(2)表示工藝約束條件決定的每個工件的操作的先后順序;式(3)表示加工每個工件的每臺機(jī)器的先后順序;式(4)表示完工時間變量約束條件;式(5)表示變量可能的取值大小,式(6)表示第o個訂單的所有工件最大完成時間小于訂單周期To的時間約束;上述公式中所涉及的符號定義含義如下:Toik和poik分別為第o個訂單(或階數(shù))中的第i個工件在機(jī)器k上的完成時間點和加工時間長度;M是一個足夠大的整數(shù);aoihk和xoijk分別為指示系數(shù)和指示變量,其含義為:
步驟5:更新鳥窩位置:
(1)一種情況:如果沒有新的鳥窩出現(xiàn)(鳥窩數(shù)量沒有增加(沒有新的訂單的出現(xiàn))):開始迭代,保留上代最優(yōu)鳥窩位置不變,更新鳥窩位置(即全局搜索),從而隨機(jī)產(chǎn)生下一代鳥窩,并評估位置更新后每個鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置。具體實施方案如下數(shù)學(xué)公式所示:
其中,表示第i只布谷鳥在第t代的鳥窩位置(在車間調(diào)度問題中用Coik表示),α是步長大小參數(shù),一般取α=0.1。參數(shù)S是隨機(jī)游動的步長,計算公式如下:
S=u+α·σ (10)
其中,
在局部搜索時對每一鳥窩位置按條件進(jìn)行更新:用一個隨機(jī)數(shù)Ra作為鳥窩主人發(fā)現(xiàn)外來鳥蛋的概率并與Pa進(jìn)行比較,若Ra>Pa,則隨機(jī)改變鳥窩位置,否則保持原來位置不變,并計算位置移動后每個鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置,用如下0-1規(guī)劃模型表示:
(2)另一種情況:如果有新的鳥窩出現(xiàn)(有新的訂單出現(xiàn)),鳥窩數(shù)量增加,即:N+H,H為新增的鳥窩數(shù)量,同時,判斷是否為緊急訂單:是,則做緊急訂單處理操作,把該訂單的工件設(shè)置為所需加工的工序的優(yōu)先級,不是緊急訂單,則不做緊急處理。
緊急訂單處理操作如下:
計算緊急系數(shù),緊急系數(shù)越大的訂單緊急程度越大,越需要得到優(yōu)先處理,緊急系數(shù)的計算如下:
其中,max{Topre}為訂單o的估計完成時間,其計算方式為:
max{Topre}=Tave+α·R
其中,α∈(0,1),實數(shù),R為完成該訂單所獲收益,no為訂單o的工件數(shù)量;
當(dāng)有鳥窩數(shù)量減少(有訂單還沒加工完就被迫撤離)的時候,直接定義N=N-Z,其中,Z為減少的鳥窩數(shù)量,算法依舊依照上述算法執(zhí)行;
步驟6:當(dāng)?shù)竭_(dá)最大搜索次數(shù)或滿足搜索精度時轉(zhuǎn)入步驟7,否則,轉(zhuǎn)
步驟4進(jìn)行下一次搜索;
步驟7:輸出最優(yōu)調(diào)度值和對應(yīng)的調(diào)度方案(染色體序列)。