本發(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問題,它的求解難度遠(yuǎn)遠(yuǎn)大于流水線調(diào)度問題。針對解決作業(yè)車間調(diào)度問題的算法一直是學(xué)術(shù)界和工程界共同關(guān)注的重要課題。
制造業(yè)的競爭日趨激烈,企業(yè)正朝著有不同完工時間和產(chǎn)品要求的多類型、小批量、大批量的生產(chǎn)模式。如何利用現(xiàn)有資源,滿足加工任務(wù)所需各種約束,使所有任務(wù)能盡量按時完成,即如何有效地解決JSP問題,成為一個十分現(xiàn)實和緊迫的問題。高效的調(diào)度算法不可以大大提高生產(chǎn)效率和資源利用率,從而增強企業(yè)的競爭能力,因此對JSP的研究有非常重要的理論和現(xiàn)實意義。
現(xiàn)有的很多算法被提出,用來解決作業(yè)車間調(diào)度問題,但僅僅是解決最底層的作業(yè)車間調(diào)度問題,沒有考慮到實際生產(chǎn)過程中存在的緊急訂單處理情況,且關(guān)于解決工件空位放置(工件庫存)問題的排產(chǎn)算法仍有待優(yōu)化。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的上述不足,本發(fā)明要解決的技術(shù)問題是提供一種新的基于布谷鳥搜索的排產(chǎn)算法,以解決緊急訂單處理問題以及優(yōu)化算法性能使得更加適用于車間實際生產(chǎn)環(huán)境。
本發(fā)明所采用的技術(shù)方案是:針對作業(yè)車間生產(chǎn)問題的排產(chǎn)算法,該算法的步驟如下:
步驟1:編碼:采用基于工序的編碼規(guī)則編碼;
步驟2:設(shè)置工件優(yōu)先級階數(shù)La;
步驟3:設(shè)置工件優(yōu)先級序列P(哪個工件屬于哪個優(yōu)先級);
步驟4:若某一優(yōu)先級的工件數(shù)量不為空,則執(zhí)行同級排產(chǎn)算法,否則優(yōu)先級+1;其改進(jìn)的同級排產(chǎn)算法步驟如下:
步驟4.1選擇最初最優(yōu)解:按照改進(jìn)布谷鳥搜索算法選擇最初最優(yōu)解;
步驟4.2判斷當(dāng)前最優(yōu)解是否滿足試裝條件,若滿足,則執(zhí)行試裝操作;否則轉(zhuǎn)步驟4.3;
步驟4.3是否有空間放置該工件,是轉(zhuǎn)步驟4.4,否則轉(zhuǎn)步驟4.1;
步驟4.4判斷當(dāng)前所選工件(當(dāng)前最優(yōu)解)即將執(zhí)行的工序是否滿足資源充足的條件,若滿足,轉(zhuǎn)步驟4.5,否則轉(zhuǎn)步驟4.1;
步驟4.5確定最優(yōu)解,輸出最優(yōu)解,執(zhí)行加工操作;
步驟4.6循環(huán),直到滿足終止條件。
本發(fā)明的有益效果是:
1、不僅解決了資源合理利用調(diào)度問題,還考慮了訂單周期的約束條件,使算法解更加精確、具有實用性。
2、解決了實際生產(chǎn)過程中存在的庫存問題,通過利用工件的平均體積來計算和衡量當(dāng)前庫存容量,比較實用,實時性好,簡單高效。
3、確定了布谷鳥算法中外來鳥蛋被發(fā)現(xiàn)的概率的計算方式,精確高效,使算法更加適用于實際生產(chǎn)環(huán)境中。
4、突破了布谷鳥算法的三個假設(shè)條件之一:鳥窩數(shù)量不變。本發(fā)明考慮了鳥窩數(shù)量增加的情況,設(shè)置了緊急訂單插入的處理方式。
附圖說明
圖1本算法的詳細(xì)流程圖
圖2改進(jìn)的同級排產(chǎn)算法流程圖
圖3一種改進(jìn)布谷鳥搜索算法的基本流程圖
圖4表示試裝過程實施例
圖5表示復(fù)雜的工件組合問題實施例
具體實施方式
以下結(jié)合附圖1到5,對本發(fā)明詳細(xì)描述。
一、所述實際生產(chǎn)過程中試裝過程結(jié)合圖4實施例,描述如下:若干個小工價試裝成一個比較大的工價,這個大工件才進(jìn)行它的工序加工,當(dāng)加工到一定程度(沒有完成它的所有工序),需要把它拆開,它的小零部件工件繼續(xù)回去加工該工價還沒加工的工序,待達(dá)到一定條件以后,又組裝工價,然后繼續(xù)加工該工件所需后續(xù)工序。依次道理循環(huán)操作,直到滿足終止條件。其實施例結(jié)合圖4如下:工件3由工件1和工價2組裝而成,工件1有5個工序需要加工,工價2有9個工序需要加工。首先加工工件1到第5個工序,加工工件2到第4個工序,把工件1和工件2組裝起來(此過程在機械生產(chǎn)過程中稱為試裝)得到工件3;然后加工工件3到第2個工序,拆分工件3;接下來加工工件1的第6,第7個工序,加工工件2的第5,第6,第7個工序,完成了以后,又把工件1和工件2組裝起來得到工件3;然后加工工件3的第3,第4,第5道工序,完成了以后,拆分;工件1所有工序已經(jīng)完成,這時加工工件2的第8,第9道工序,完成了以后,把工件1和工件組裝起來得到工件3。這時整個加工過程完成。
二、所述復(fù)雜的工件組合問題結(jié)合圖5實施例,描述如下:實際生產(chǎn)過程中,存在多個部件組合而成新的部件,這個新的部件1又可能還會跟其他工件組合成新的部件2,新的部件2又可能需要加工,再跟新的部件3組裝成一個工件,如此循環(huán)。
三、所述步驟1的具體描述如下:采用基于工序的編碼規(guī)則編碼,即染色體由w×n×m個基因組成,他們表示一個工序的排列,在這個工序排列中每個工件號最多出現(xiàn)m次,其染色體是由一個二維空間點(x,y)表示,即第x個訂單的第y個工件。例如,3×4×3(訂單×階數(shù)×工件×機器)的實例,染色體序列為(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,1,1,J3,2,1,J1,2,1,J1,2,2,J1,1,3,J1,4,1)
其中,Jt,i,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.2試裝操作的執(zhí)行如下:
執(zhí)行試裝,如果試裝成功,需要返回加工后續(xù)工序,直接返回到需要加工的后續(xù)加工工序點;如果試裝不成功,則由人工判斷,返回需要加工的工序點進(jìn)行加工。如果試裝成功組合而成的工件需要跟其他工件試裝,就試裝,直到滿足拆分條件再拆分進(jìn)行后續(xù)加工。
五、所述步驟4.3是否有空間放置工件的判斷方法為:
假設(shè)條件:假設(shè)每個訂單沒有延期取貨的情況。
具體步驟:
步驟4.3.1:初始化成品庫存容量C。
步驟4.3.2:計算工件平均體積:
步驟4.3.3:設(shè)置滿庫存警報條件:如果滿足下式,則發(fā)出滿庫存警報:(f+k)·Vave≥C,其中,f是已完成的工件數(shù)量,k是一個定值,這里取k=1。
六、所述步驟4.4判斷出工件所需資源是否充足的判定規(guī)則如下:設(shè)置資源庫存池:
判定規(guī)則:
If(庫存池存在所需設(shè)備&&庫存該設(shè)備數(shù)量>=所需該設(shè)備數(shù)量&&庫存池存在所需工具&&庫存該工具數(shù)量>=所需該工具數(shù)量&&庫存池存在所需工種工人&&庫存該工人數(shù)量>=所需該工人數(shù)量)滿足資源充足條件;
Else不滿足資源充足條件。
七、所述步驟4.1改進(jìn)的布谷鳥搜索算法:
步驟4.1.1:初始化算法基本參數(shù):設(shè)置鳥窩個數(shù)(工件數(shù)量)N,宿主發(fā)現(xiàn)外來鳥蛋的概率Pa(作業(yè)搶占概率),以及最大迭代次數(shù)MaxT或搜索精度ε:
其中,n為第L優(yōu)先級的鳥巢(工件)數(shù)量;
步驟4.1.2:初始化鳥窩位置(工件加工完成時間):根據(jù)加工時間長短呈上升趨勢排列。
步驟4.1.3:計算目標(biāo)函數(shù)值:按照編碼規(guī)則將鳥窩位置(完成時間)轉(zhuǎn)換為工序排列,計算各鳥窩位置對應(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)表示加工每個工件的每臺機器的先后順序;式(4)表示完工時間變量約束條件;式(5)表示變量可能的取值大小。上述公式中所涉及的符號定義含義如下:Toik和poik分別為第o個訂單(或階數(shù))中的第i個工件在機器k上的完成時間點和加工時間長度;M是一個足夠大的整數(shù);aoihk和xoijk分別為指示系數(shù)和指示變量,其含義為:
式(6)表示第o個訂單的所有工件最大完成時間小于訂單周期To的時間約束。
步驟4.1.4:更新鳥窩位置:
(1)一種情況:如果沒有新的鳥窩出現(xiàn)(鳥窩數(shù)量沒有增加(沒有新的訂單的出現(xiàn))):開始迭代,保留上代最優(yōu)鳥窩位置不變,更新鳥窩位置(即全局搜索),從而隨機產(chǎn)生下一代鳥窩,并評估位置更新后每個鳥窩的目標(biāo)函數(shù)值,記錄當(dāng)前最優(yōu)鳥窩位置。具體實施方案如下數(shù)學(xué)公式所示:
其中,表示第i只布谷鳥在第t代的鳥窩位置(在車間調(diào)度問題中用Coik表示),α是步長大小參數(shù),一般取α=0.1。參數(shù)S是隨機游動的步長,計算公式如下:
S=u+α·σ (10)
其中,
在局部搜索時對每一鳥窩位置按條件進(jìn)行更新:用一個隨機數(shù)Ra作為鳥窩主人發(fā)現(xiàn)外來鳥蛋的概率并與Pa進(jìn)行比較,若Ra>Pa,則隨機改變鳥窩位置,否則保持原來位置不變,并計算位置移動后每個鳥窩的目標(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的估計完成時間,這里通過人工經(jīng)驗估計得到,To為訂單o的交貨周期。
步驟4.1.5:更新最優(yōu)函數(shù)值:比較本次迭代和上一次迭代鳥窩位置的最優(yōu)值,如果新的最優(yōu)值小于原最優(yōu)值,則把新的最優(yōu)值賦予當(dāng)前最優(yōu)鳥窩位置的目標(biāo)函數(shù)值。
步驟4.1.6:當(dāng)?shù)竭_(dá)最大搜索次數(shù)或滿足搜索精度時轉(zhuǎn)入步驟4.1.7,否則,轉(zhuǎn)步驟4.1.3進(jìn)行下一次搜索。
步驟4.1.7:輸出最優(yōu)調(diào)度值和對應(yīng)的調(diào)度方案(染色體序列)。