本發(fā)明涉及作業(yè)車間調(diào)度技術(shù)領(lǐng)域。
背景技術(shù):
作業(yè)車間調(diào)度問題(Job-Shop Scheduling Problem,JSP)是制造執(zhí)行系統(tǒng)研究的核心和重點(diǎn)之一,它的研究不僅具有重大的現(xiàn)實(shí)意義,而且具有深遠(yuǎn)的理論意義。JSP就是根據(jù)產(chǎn)品制造需求合理分配資源,進(jìn)而達(dá)到合理利用產(chǎn)品制造資源、提高企業(yè)經(jīng)濟(jì)效益的目的。JSP是產(chǎn)品制造行業(yè)中共存的問題,它與計(jì)算機(jī)集成制造系統(tǒng)(Computer Integrated Manufacturing Systems,CIMS)的工廠管理、產(chǎn)品制造層次緊密相關(guān),是CIMS領(lǐng)域中研究的重要課題。JSP是一個典型的NP-hard問題,它的研究必然會對NP問題的研究起到有意義的影響。
模擬退火算法(SA)是是一種適合解決大規(guī)模組合優(yōu)化問題的算法。最早由Metropolis在1953年提出。源于統(tǒng)計(jì)物理學(xué),它模擬實(shí)際固體退火過程的溫度變化,即先將固體加溫至充分高,在逐漸冷卻。加溫時,固體內(nèi)部粒子變?yōu)闊o序狀態(tài),內(nèi)能增大;而逐漸降溫時,粒子趨于有序,在每個溫度都達(dá)到平衡態(tài),最后在常溫時達(dá)到基態(tài),內(nèi)能減到最小。模擬退火算法(SA)是局部搜索算法的擴(kuò)展,它不同于局部搜索之處是以一定的概率選擇領(lǐng)域中的最優(yōu)值狀態(tài)。在解決NP完全問題,SA有很大的利用價值。
模擬退火算法簡單有效的搜索方式避免了數(shù)值算法的高計(jì)算量,又避免了局部搜索算法快速收斂于局部最優(yōu)解的缺點(diǎn)。但是,模擬退火算法是一種串行優(yōu)化算法,它的執(zhí)行過程要經(jīng)歷雙重循環(huán):內(nèi)循環(huán)(在當(dāng)前溫度下進(jìn)行Markov鏈長度搜索)和外循環(huán)(利用降溫函數(shù)進(jìn)行降溫求控制狀態(tài)更新概率),而其每部只隨機(jī)嘗試當(dāng)前狀態(tài)領(lǐng)域中的一個狀態(tài),這無疑會增加其運(yùn)算時間。另外,模擬退火算法由于全局收斂條件難以實(shí)現(xiàn),并且,概率接受使得當(dāng)前狀態(tài)可能比搜索軌跡中的某些狀態(tài)還要差,從而實(shí)際算法往往最終得到近似最優(yōu)解,甚至可能比中間經(jīng)歷的最壞解要差,而且搜索效率差。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有模擬退火算法中存在的上述不足,本發(fā)明要解決的技術(shù)問題是提供一種新的模擬退火算法解決作業(yè)車間的調(diào)度問題。
本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的:收斂速度不夠快,最終最優(yōu)解不夠精確的缺點(diǎn)。
本發(fā)明為實(shí)現(xiàn)上述目的所采用的技術(shù)方案是:一種新的模擬退火算法解決作業(yè)車間調(diào)度問題,該算法的主要步驟如下:
步驟1:初始化算法參數(shù):初始溫度T0(保證充分大),初始解狀態(tài)矩陣C(是算法迭代的起點(diǎn)),工序時間矩陣P,迭代次數(shù)L。
步驟2:計(jì)算當(dāng)前解。
步驟3:降溫。
步驟4:產(chǎn)生新解S′。
步驟5:如果滿足終止條件輸出當(dāng)前解作為最優(yōu)解,輸出對應(yīng)的狀態(tài)矩陣C,工序時間矩陣P,結(jié)束程序。否則轉(zhuǎn)步驟2。
本發(fā)明的有益效果是:
1、設(shè)定了簡單的狀態(tài)矩陣的轉(zhuǎn)移函數(shù),減少了算法的運(yùn)行時間。
2、設(shè)定接受新解的判定準(zhǔn)則,使算法不容易陷入局部最優(yōu)。
3、設(shè)定了算法的終止條件,使算法的解更加精確。
附圖說明
本發(fā)明的算法基本流程圖。
具體實(shí)施方式
作業(yè)車間調(diào)度問題(JSP)是一類滿足任務(wù)配置和順序約束要求的組合優(yōu)化問題,屬于NP完全問題。作業(yè)車間調(diào)度問題是一種職能單位,它的工段或工作中心事圍繞著不同類型設(shè)備或工序來組織的,如鉆床、鍛壓機(jī)、裝配線、解工總行等。作業(yè)車間調(diào)度問題可描述為:有n個加工順序不同的工件要在m臺機(jī)器上完成加工。
以下,結(jié)合流程圖,對本發(fā)明進(jìn)行詳細(xì)說明,其具體實(shí)施步驟如下:
步驟1:初始化算法參數(shù):初始溫度T0(保證充分大),初始解狀態(tài)矩陣C(是算法迭代的起點(diǎn)),工序時間矩陣P,迭代次數(shù)L。
步驟2:計(jì)算當(dāng)前解:用數(shù)學(xué)模型描述如下:
目標(biāo)函數(shù):
S=minf(S1,S2,…,Sn)=min max1≤o≤w{max1≤k≤m{max1≤i≤n Coik}} (1)
約束條件:
Coik-Poik+M(1-aoihk)≥Coih
(o=1,2,…,w;i=1,2,…,n;h,k=1,2,…,m) (2)
Cojk-Coik+M(1-xoijk)≥poik
(i,j=1,2,…,n;o=1,2,…,w;k=1,2,…,m) (3)
Coik≥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{Coi}≤Co (6)
其中,式(1)表示目標(biāo)函數(shù),即完成時間(Makespan);式(2)表示工藝約束條件決定的每個工件的操作的先后順序;式(3)表示加工每個工件的每臺機(jī)器的先后順序;式(4)表示完工時間變量約束條件;式(5)表示變量可能的取值大小。上述公式中所涉及的符號定義含義如下:Coik和Poik分別為第o個訂單(或階數(shù))中的第i個工件在機(jī)器k上的完成時間點(diǎn)和加工時間長度;M是一個足夠大的整數(shù);式(6)表示第o個訂單的所有工件最大完成時間小于訂單周期Co的時間約束;aoihk和xoijk分別為指示系數(shù)和指示變量,其含義為:
步驟3:降溫:采用經(jīng)典的衰退函數(shù)降溫:其中,k為迭代次數(shù),k=1,2,…n;
步驟4:產(chǎn)生新解S′:
(1)新解的產(chǎn)生機(jī)制:
狀態(tài)矩陣C的變化:
迭代次數(shù)L:L=L-1。
將更新后的數(shù)據(jù)代入步驟2所列的方程,計(jì)算新的臨時解S(k);
(2)計(jì)算新的臨時解與當(dāng)前解的目標(biāo)函數(shù)差:ΔS=S(k)-S(k-1);
(3)接受新解準(zhǔn)則:如果滿足ΔS<0,則S′=S(k),否則以概率接受S(k)作為新的當(dāng)前解。
步驟5:如果滿足終止條件輸出當(dāng)前解作為最優(yōu)解,輸出對應(yīng)的狀態(tài)矩陣C,工序時間矩陣P,結(jié)束程序,否則轉(zhuǎn)步驟2,終止條件為:
滿足T(k)>0且ΔT=T(k)-T(k-1)<ε,S(k)-T(k-1)<δ,其中ε和δ是溫度下降閾值和精確度,是正實(shí)數(shù)。