本發(fā)明涉及作業(yè)車間調(diào)度領域,具體地涉及用算法求解作業(yè)車間調(diào)度問題。
背景技術:
作業(yè)車間調(diào)度問題(Job-Shop Scheduling Problem,JSP)是制造執(zhí)行系統(tǒng)研究的核心和重點之一,它的研究不僅具有重大的現(xiàn)實意義,而且具有深遠的理論意義。JSP就是根據(jù)產(chǎn)品制造需求合理分配資源,進而達到合理利用產(chǎn)品制造資源、提高企業(yè)經(jīng)濟效益的目的。JSP是產(chǎn)品制造行業(yè)中共存的問題,它與計算機集成制造系統(tǒng)(Computer Integrated Manufacturing Systems,CIMS)的工廠管理、產(chǎn)品制造層次緊密相關,是CIMS領域中研究的重要課題。JSP是一個典型的NP-hard問題,它的研究必然會對NP問題的研究起到有意義的影響。
近些年,許多解決作業(yè)車間調(diào)度問題的算法被提出,這些方法包括目標啟發(fā)式算法,如:遺傳、禁忌搜索算法、算法模擬退火算法、粒子群算法、混合動力車算法,除此之外,還有枚舉法、數(shù)學規(guī)劃法、支定界法、優(yōu)先規(guī)則、迭代局部搜索算法和進化算法等。
帝國主義算法(ICA)也稱為殖民地競爭算法,是Atashaz_Gargari和Lucas于2007年提出的一種基于帝國主義殖民競爭機制的進化算法,屬于社會啟發(fā)的隨機優(yōu)化搜索方法。ICA算法根據(jù)帝國主義的社會政策來控制更多的國家,在殖民地國家受到一些規(guī)律支配時使用它們的資源,如果一個帝國失去強大的勢力,其他國家將占有它。帝國主義競爭算法的基本思想是:同其他進化算法相似,帝國主義競爭算法開始于一組被定義為國家的個體,所有國家被分為兩類:帝國主義國家和殖民地國家。將最初勢力比較強大的國家作為帝國主義國家,其他國家作為殖民地國家。根據(jù)每個國家的勢力將殖民地分配給不同的帝國主義國家。帝國主義國家與其所包含的殖民地被稱為一個帝國。帝國之間通過競爭以獲得更多的殖民地為目的,勢力更大的帝國有較大的可能性戰(zhàn)友最弱的殖民地,智力薄弱的帝國將逐漸失去其殖民地,當所有殖民地全部被一個帝國占有時,該算法結束。
帝國主義競爭算法具有簡單、較快的收斂速度和全局最優(yōu)搜索等優(yōu)點,但是也同其他智能優(yōu)化算法一樣,在作業(yè)車間調(diào)度問題中,帝國主義競爭算法也存在著過早收斂、精確度不夠等缺點。
技術實現(xiàn)要素:
針對現(xiàn)有帝國主義競爭算法中存在的上述不足,本發(fā)明要解決的技術問題是提供一種基于實變函數(shù)側(cè)距的帝國主義競爭算法解決作業(yè)車間的調(diào)度問題。
本發(fā)明的目的是克服現(xiàn)有技術中存在的:帝國主義競爭算法容易收斂;帝國主義競爭算法求解精確度不夠高;帝國主義算法在車間調(diào)度問題中的應用不夠靈活。
本發(fā)明為實現(xiàn)上述目的所采用的技術方案是:一種基于實變函數(shù)側(cè)距的帝國主義競爭算法求解作業(yè)車間調(diào)度問題,該算法的步驟如下:
步驟1:初始化帝國主義競爭算法參數(shù):初始化國家數(shù)量、帝國主義國家、殖民地國家。
步驟2:計算帝國的相對勢力:用機器處理作業(yè)能力Cn來刻畫。
步驟3:計算帝國主義國家的勢力:用作業(yè)運行時間來刻畫。
步驟4:初始化帝國主義集團:根據(jù)帝國的勢力將不同數(shù)量的殖民地國家分配給帝國主義國家,帝國國家勢力越大,該帝國所擁有的殖民地國家就越多。
步驟5:計算帝國集團的總勢力:一個帝國集團的總勢力包括兩部分,一部分為帝國主義國家的勢力,另一部分為它所擁有的殖民地國家的勢力
步驟6:計算帝國地理位置占有優(yōu)勢:采用基于實變函數(shù)的側(cè)距來衡量兩個帝國占有同一個殖民地的地理位置占有優(yōu)勢的大小。
步驟7:殖民地歸屬的確定:殖民地的歸屬性質(zhì)由帝國集團勢力和側(cè)距這兩部分因素確定。
步驟8:殖民地向所屬帝國移動:當?shù)蹏瘓F形成后,殖民地國家沿著指向其所屬帝國的方向靠近帝國。
步驟9:帝國集團的競爭:帝國主義的競爭過程發(fā)生在帝國集團之間,因為每一個帝國集團都試圖占有其他帝國的殖民地并且控制他們。
步驟10:殖民地國家的滅亡:在帝國的侵犯過程中,存在殖民地國家滅亡。
步驟11:新殖民地國家的產(chǎn)生:在社會進化過程中,會有新的殖民地產(chǎn)生。
步驟12:弱勢帝國的滅亡:在帝國競爭中,失去勢力的帝國集團將會滅亡,而且它所擁有的殖民地將被其他帝國集團所瓜分。
步驟13:新帝國的產(chǎn)生:在帝國競爭中,會有新的帝國產(chǎn)生。
步驟14:計算帝國存活率:用機器利用率來刻畫
步驟15:最后,保留最終剩余的帝國,將適應度值作為最優(yōu)解。
本發(fā)明的有益效果是:
1.帝國的相對勢力直接用機器處理作業(yè)能力來刻畫,減少算法計算復雜度。
2.直接定義機器為帝國、作業(yè)為殖民地,避免了隨機產(chǎn)生初始解帶來的不確定性,減少算法運行時間。
3.殖民地的歸屬性質(zhì)由帝國集團勢力和側(cè)距這兩部分因素確定,一方面使算法結果更加精確,另一方面使算法更加貼切于實際情況,使算法最終結果更加適用于實際問題。
4.通過利用實變函數(shù)中的側(cè)距來衡量某個帝國侵占某個殖民地的地理位置占有優(yōu)勢,可以把復雜的位置問題系統(tǒng)地簡化。
5.利用作業(yè)運行時間來計算帝國主義國家的勢力大小,簡單、實際、靠譜。
6.利用機器作業(yè)能力來作為帝國國家殖民地分配的準則,簡單直觀、解的精確度高。
7.改變了帝國的總勢力的計算方式,使算法更加靈活。
附圖說明
圖1為本發(fā)明的算法基本流程圖
圖2為帝國國家和殖民地國家的位置關系圖
具體實施方式
傳統(tǒng)的帝國主義競爭算法具有簡單、準確、省時等優(yōu)點,是一種十分有效率且易于使用的優(yōu)化算法,該算法節(jié)省內(nèi)存,尋優(yōu)時間短,并且能夠迅速地在搜索空間里收斂到最優(yōu)解。但是,對于作業(yè)車間調(diào)度問題的優(yōu)化,易于收斂,帝國主義算法不能夠得到足夠的精確解,且帝國主義算法最終求得一個解而不是一組解,不適用于作業(yè)車間的管理安排問題的求解。
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合流程圖進行具體說明。
一、帝國主義競爭算法
在帝國主義競爭算法中,每一個國家都是由一個實數(shù)數(shù)組或向量來表示。
對于一個Nvar維優(yōu)化問題,該數(shù)組定義如下:
一個國家的勢力大小需要通過計算一定的目標函數(shù)來得到,變量為
即為
二、具體實施步驟
步驟1:初始化帝國主義競爭算法參數(shù):初始化國家數(shù)量Npop、帝國主義國家Nimp、殖民地國家Ncol。其中,帝國主義國家用機器來表示,殖民地國家用作業(yè)來表示。
Npop=Nimp+Ncol
步驟2:計算帝國的相對勢力:用機器處理作業(yè)能力Cn來刻畫。
其中,Ncn表示所有有可能等待某臺機器Mn處理的作業(yè)數(shù)量,Mcn表示可以處理這Ncn個作業(yè)的機器數(shù)量。
步驟3:計算帝國主義國家的勢力:第n個帝國主義國家的勢力大小定義為:
式中,ti為第i項作業(yè)的在第n臺機器的運行時間,即代價值。
步驟4:初始化帝國主義集團:根據(jù)帝國的勢力將不同數(shù)量的殖民地國家分配給帝國主義國家,帝國國家勢力越大,該帝國所擁有的殖民地國家就越多。帝國和它所擁有的殖民地組成一個帝國集團。在車間調(diào)度問題中,帝國所擁有的殖民地等于該機器實際處理的作業(yè)數(shù)。因此,殖民地分配方法按式:
式中,N.Cn代表第n個帝國所擁有的殖民地。
步驟5:計算帝國集團的總勢力:一個帝國集團的總勢力包括兩部分,一部分為帝國主義國家的勢力,另一部分為它所擁有的殖民地國家的勢力,在這兩部分中,帝國主義國家的勢力對勢力有更大的影響。因此,一個帝國的總勢力計算方式如下:
式中,T.Cn為第n個帝國集團的總代價函數(shù)值,tn為第n個帝國主義國家的代價函數(shù)值,ti為帝國集團的殖民地的代價函數(shù)值,即車間調(diào)度問題中作業(yè)的在某臺機器的運行時間,0<μ<1,是個實數(shù),一般情況下取μ∈[0.1,0.5]。
步驟6:計算帝國地理位置占有優(yōu)勢:采用基于實變函數(shù)的側(cè)距來衡量兩個帝國占有同一個殖民地的優(yōu)勢的大小,占有優(yōu)勢越大的帝國越有機會侵占該殖民地。具體實現(xiàn)方式如下:
帝國國家和殖民地國家的位置關系表示為如圖2
對于任意一個殖民地的歸屬,需要通過計算距離殖民地最近的兩個帝國對它的侵占優(yōu)勢的大小來確定。優(yōu)勢大的帝國有權擁有該殖民地,優(yōu)勢相對小的殖民地將失去該殖民地。優(yōu)勢的大小用實變函數(shù)中的側(cè)距來衡量??赏貙W側(cè)距綜述:
定義1:給定區(qū)間X=<a,b>,若稱
為x關于點x0和區(qū)間X的左側(cè)距,記為pl(x,x0,X)。
定義2:給定區(qū)間X=<a,b>,若稱
為x關于點x0和區(qū)間X的右側(cè)距,記為pr(x,x0,X)。
在作業(yè)車間調(diào)度問題中,定質(zhì)變區(qū)間為X=<a,b>,任意一點x為殖民地的位置,距離殖民地x相對較近的兩個帝國在質(zhì)變區(qū)間X之內(nèi),用點x0表示。
步驟7:殖民地歸屬的確定:殖民地的歸屬性質(zhì)由帝國集團勢力和側(cè)距這兩部分因素確定。具體判斷過程如下:
(1)計算為x關于點x0和區(qū)間X的左側(cè)距pl(x,x0,X)和右側(cè)距pr(x,x0,X)。
(2)計算歸屬系數(shù):
kl=|pl(x,x0,X)|+ε·T.Cl
kr=|pl(x,x0,X)|+ε·T.Cr
其中,ε為勢力優(yōu)勢影響參數(shù),一般的ε∈(0,1)。
(3)判斷歸屬性質(zhì):那個歸屬性質(zhì)大,殖民地x就歸屬于那個帝國。即若kr<kl,則殖民地x歸屬于左側(cè)帝國;若kr≥kl,則殖民地x歸屬于左側(cè)帝國。
步驟8:殖民地向所屬帝國移動:當?shù)蹏瘓F形成后,殖民地國家沿著指向其所屬帝國的方向靠近帝國。在該過程中,部分國家會產(chǎn)生革命,即殖民地隨機的發(fā)生位置上的改變。殖民地向其所屬帝國靠近方式如下:
為了使殖民地從各個方向向其所屬帝國移動,增強帝國到達全局最優(yōu)的收斂性,設立兩個服從于正態(tài)分布的隨機參數(shù)x,θ:
x~N(d,ρ)
θ~N(0,γ)
式中,d是殖民地與帝國之間的距離,β是一個大于1的數(shù),β>1會使殖民地國家從四面八方向其所屬帝國移動,γ般取π/4。
步驟9:帝國集團的競爭:帝國主義的競爭過程發(fā)生在帝國集團之間,因為每一個帝國集團都試圖占有其他帝國的殖民地并且控制他們。通過競爭使得強大的帝國集團更加強大,弱小的帝國集團更加弱小。在ICA算法中,最弱帝國集團中的最弱一個殖民地國家將被其他帝國集團通過競爭去占有。每一個帝國集團都有可能占有最弱的國家。這種可能性的大小由下式定義得到:
式中,N.T·Cn第n個帝國集團的相對代價函數(shù)值,定義如下:
向量P:
向量R是與向量P相同規(guī)格的向量:
向量D有以下的到:
D=P-R
在向量D中最大的元素所對應的帝國集團將會占有上述最弱的殖民地國家。
步驟10:殖民地國家的滅亡:在帝國的侵犯過程中,存在殖民地國家滅亡。
在車間調(diào)度問題中,殖民地滅亡即表示訂單處理完畢。此時,殖民地數(shù)目會減少。
k為消亡的殖民地數(shù)量,e為社會進化第e次。
步驟11:新殖民地國家的產(chǎn)生:在社會進化過程中,會有新的殖民地產(chǎn)生。
在車間調(diào)度問題中,新殖民地的產(chǎn)生極為訂單的增加。此時,殖民地數(shù)目會增加。
h為增加的殖民地數(shù)量,e為社會進化第e次。
步驟12:弱勢帝國的滅亡:在帝國競爭中,失去勢力的帝國集團將會滅亡,而且它所擁有的殖民地將被其他帝國集團所瓜分。在車間調(diào)度問題中,機器故障、機器完工都可用帝國的滅亡來表示,帝國滅亡,則帝國數(shù)目減少。
l為減少的帝國數(shù)量,e為社會進化第e次。
步驟13:新帝國的產(chǎn)生:在帝國競爭中,會有新的帝國產(chǎn)生。在車間調(diào)度問題中,增加新機器即為新帝國的產(chǎn)生。
g為新增的帝國數(shù)量,e為社會進化第e次。
步驟14:計算帝國存活率:用機器利用率ρ刻畫,如下定義:
e為社會進化第e次.
步驟15:最后,保留最終剩余的帝國,將適應度值作為最優(yōu)解。