本發(fā)明涉及計(jì)算機(jī)執(zhí)行制造系統(tǒng)領(lǐng)域,具體涉及用算法解決作業(yè)車間調(diào)度的組合優(yōu)化問(wèn)題。
背景技術(shù):
作業(yè)車間調(diào)度問(wèn)題(Job-Shop Scheduling Problem)是制造執(zhí)行系統(tǒng)研究的核心和重點(diǎn)之一,它的研究不僅具有重大的現(xiàn)實(shí)意義,而且具有深遠(yuǎn)的理論意義。作業(yè)車間調(diào)度問(wèn)題(JSP),就是根據(jù)產(chǎn)品制造需求合理分配產(chǎn)品制造資源,進(jìn)而達(dá)到合理利用產(chǎn)品制造資源、提高企業(yè)經(jīng)濟(jì)效益的目的。JSP是產(chǎn)品制造行業(yè)中共存的問(wèn)題,它與計(jì)算機(jī)集成制造系統(tǒng)(Computer Integrated Manufacturing Systems,簡(jiǎn)稱CIMS)的工廠管理、產(chǎn)品制造層次緊密相關(guān),是CIMS領(lǐng)域中研究的重要課題。JSP是一個(gè)典型的NP-hard問(wèn)題,它的研究必然會(huì)對(duì)NP問(wèn)題的研究起到有意義的影響。
過(guò)去的幾十年,各種算法被應(yīng)用來(lái)解決作業(yè)車間調(diào)度問(wèn)題。其中不乏有遺傳算法、粒子群算法、蟻群算法等。
遺傳算法作為一種全局優(yōu)化算法,得到了廣泛的應(yīng)用,但經(jīng)典遺傳算法存在收斂速度慢,容易早熟等問(wèn)題。自適應(yīng)遺傳算法(Adaptive Genetic Algorithm,簡(jiǎn)稱AGA)是對(duì)基本遺傳算法的一種改進(jìn),它通過(guò)對(duì)遺傳參數(shù)的自適應(yīng)調(diào)整,大大提高了遺傳算法的收斂精度,加快了收斂速度。但AGA仍然面臨算法前期收斂速度快,后期由于缺少反饋而收斂速度降低的問(wèn)題。
蟻群優(yōu)化算法(Ant Colony Optimization Algorithm,簡(jiǎn)稱ACO)是一種源于自然現(xiàn)象的算法,主要思想來(lái)源于群體中各個(gè)個(gè)體之間的間接交流方法,主要是模仿螞蟻通過(guò)釋放和跟隨信息素的方式來(lái)達(dá)到整體的交流和行為上的涌現(xiàn)現(xiàn)象。ACO算法前期由于信息素的短缺和隨機(jī)性導(dǎo)致收斂速度較低,而后期收斂速度顯著升高。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述的AGA算法前期收斂速度快,后期由于缺少反饋而收斂速度降低,ACO算法前期由于信息素的短缺和隨機(jī)性導(dǎo)致收斂速度較低,而后期收斂速度顯著升高,本發(fā)明提出了自適應(yīng)遺傳算法和蟻群優(yōu)化算法(Adaptive Genetic Algorithm and Ant Colony OptimizationAlgorithm,AGA-ACO),采取動(dòng)態(tài)鏈接策略,結(jié)合自適應(yīng)遺傳算法與蟻群優(yōu)化算法來(lái)創(chuàng)建混合優(yōu)化算法。
本發(fā)明針對(duì)上述不足,所采用的技術(shù)方案是:一種基于優(yōu)先權(quán)編碼的混合遺傳算法解業(yè)車間調(diào)度問(wèn)題。該技術(shù)方案的執(zhí)行步驟如下:
步驟1、設(shè)置自適應(yīng)遺傳算法和蟻群算法的相關(guān)參數(shù)和優(yōu)先權(quán)矩陣編碼規(guī)則;
步驟2、隨機(jī)生成初始種群p(g),根據(jù)事先設(shè)置的目標(biāo)函數(shù)和適應(yīng)度函數(shù)計(jì)算每個(gè)個(gè)體的適應(yīng)度;
步驟3、選擇交叉、變異遺傳算子操作,更新優(yōu)先權(quán)矩陣,生成下一子代p(g+1),并計(jì)算此時(shí)每個(gè)個(gè)體的適應(yīng)度,保留此時(shí)的精英個(gè)體;
步驟4、根據(jù)設(shè)置的最大迭代次數(shù)Gmax和迭代終止條件Gdie判斷是否終止迭代進(jìn)化。迭代終止則執(zhí)行步驟6,否則執(zhí)行步驟5;
步驟5、改變交叉、變異的概率,返回步驟3;
步驟6、根據(jù)生成的一組優(yōu)化方案轉(zhuǎn)化成信息素的初始分布;
步驟7、將m個(gè)螞蟻置于初始節(jié)點(diǎn)0,計(jì)算每個(gè)螞蟻選擇下一節(jié)點(diǎn)移動(dòng)的概率
步驟8、改變螞蟻經(jīng)過(guò)路徑上的信息素并計(jì)算路徑上總的信息素,計(jì)算并保留精英螞蟻,判斷是否達(dá)到終止條件,滿足條件輸出最終結(jié)果,否則返回步驟7。
本發(fā)明的有益效果是:該發(fā)明結(jié)合AGA與ACO兩個(gè)算法各自的優(yōu)勢(shì),避免了搜索陷入局部最優(yōu)解和執(zhí)行時(shí)間過(guò)長(zhǎng)的問(wèn)題,彌補(bǔ)了各自的不足,增強(qiáng)了算法的性能。且本發(fā)明采用基于優(yōu)先權(quán)矩陣的編碼方式,產(chǎn)生的每個(gè)染色體本身就具有兩種要素,正好對(duì)應(yīng)著作業(yè)車間調(diào)度問(wèn)題編碼時(shí)需要考慮的工件以及工件的工序,不需要額外的解碼操作去計(jì)算相應(yīng)的信息,再利用每個(gè)矩陣元素的值表示對(duì)應(yīng)工件對(duì)應(yīng)工序的加工優(yōu)先權(quán),這樣每個(gè)染色體就能完整的表示一個(gè)調(diào)度方案。
附圖說(shuō)明
圖1:表示本發(fā)明的詳細(xì)流程圖
圖2:表示JSP析取圖示例
圖3:表示遺傳算法(GA)和蟻群算法(AA)的V—T曲線圖
圖4:表示遺傳算法的初始解產(chǎn)生過(guò)程示例
具體實(shí)施方式
本發(fā)明將自適應(yīng)遺傳算法與改進(jìn)的蟻群算法混合,該發(fā)明首先利用自適應(yīng)遺傳算法初始化信息素分布,然后執(zhí)行改進(jìn)的蟻群算法。該算法結(jié)合了兩個(gè)算法的優(yōu)點(diǎn),避免搜索陷入局部最優(yōu)解和執(zhí)行時(shí)間過(guò)長(zhǎng)的問(wèn)題,克服了它們各自的缺點(diǎn)。且混合算法的性能優(yōu)于之前的,且隨著JSP規(guī)模越大,算法性能越好。
下面結(jié)合附圖1-圖3和實(shí)施例對(duì)本發(fā)明詳細(xì)說(shuō)明。
作業(yè)車間調(diào)度問(wèn)題指分配n個(gè)工件到m臺(tái)設(shè)備上加工的時(shí)序分發(fā)問(wèn)題。有多種不同形式可以用來(lái)描述JSP,如線性規(guī)劃模型和析取圖模型。本發(fā)明用析取圖G=(N,A,E)表示JSP,結(jié)合圖2析取圖示例可表述如下:N表示所有工序節(jié)點(diǎn)集,增加兩個(gè)虛擬節(jié)點(diǎn)0和N+1,節(jié)點(diǎn)0表示開始,節(jié)點(diǎn)N+1表示結(jié)束。A表示同一工件相鄰工序的單向弧集,E表示同一設(shè)備相鄰工序的雙向析取弧集。
目標(biāo)函數(shù)定義為最小化最大完工時(shí)間,目標(biāo)函數(shù)如下:
其中Ci(i=1,2,......,n)表示完成第i次工序的時(shí)間。
本發(fā)明的目的在于讓作業(yè)車間調(diào)度中完工時(shí)間最小,遺傳算法(GA)與蟻群算法(AA)結(jié)合圖3V-T曲線圖可看出:t0-ta階段遺傳算法的收斂速度很高,但ta之后遺傳算法由于缺少反饋而收斂速度降低。t0-ta階段蟻群算法由于信息素的短缺和隨機(jī)性導(dǎo)致收斂速度較低,但ta之后收斂速度顯著升高。因此本混合算法將ta之前信息素的分布通過(guò)AGA收集,ta之后由ACO生成最佳方案。
下面結(jié)合附圖對(duì)該混合算法詳細(xì)說(shuō)明。
一、遺傳算法:
1、遺傳編碼:基于優(yōu)先權(quán)矩陣的編碼方式
在基于優(yōu)先權(quán)矩陣編碼方法中一條染色體對(duì)應(yīng)一個(gè)矩陣,由于矩陣是二維的,具有行和列之分,所以采用基于優(yōu)先權(quán)矩陣編碼產(chǎn)生的每個(gè)染色體本身就具有兩種要素,正好對(duì)應(yīng)著車間作業(yè)調(diào)度問(wèn)題編碼時(shí)需要考慮的工件以及工件的工序,不需要額外的解碼操作去計(jì)算相應(yīng)的信息,再利用每個(gè)矩陣元素的值表示對(duì)應(yīng)工件對(duì)應(yīng)工序的加工優(yōu)先權(quán),這樣每個(gè)染色體就能完整的表示一個(gè)調(diào)度方案。編碼時(shí),令矩陣每一行代表一個(gè)工件,每一列代表一個(gè)工序,元素eij表示第i個(gè)工件的第j道工序在所有工序中的加工優(yōu)先權(quán),如有n個(gè)工件,每個(gè)工件有m道工序,因此對(duì)應(yīng)的優(yōu)先權(quán)值為1到n×m的自然數(shù),即矩陣各元素的值也為1到n×m的自然數(shù)。例如有以下矩陣:
E1表示各工件工序的加工順序,順序?yàn)椋簅11,o21,o13,o32,o22,o31,o23,o12,o33。oij
表示第i個(gè)工件的第j道工序的優(yōu)先權(quán)值。
2、產(chǎn)生初始解
初始解的構(gòu)造結(jié)合圖4示例圖,可描述如下:各工件應(yīng)該按照工序的先后順序加工,首先應(yīng)該加工的是各工件的第一道工序,所以在各工件的第一道工序{o11,o21,o31}中隨機(jī)選擇一個(gè),令其優(yōu)先權(quán)值為1,如隨機(jī)選擇了工序o31,則令染色體矩陣元素e31=1,o31已經(jīng)設(shè)置優(yōu)先權(quán)值,所以工件3的下一道加工工序?yàn)閛32,然后在可選工序集{o11,o21,o32}中隨機(jī)選擇一個(gè)令其優(yōu)先權(quán)值為2,如隨機(jī)選擇了工序o11,則令e11=2依此類推,直到所有工序的優(yōu)先權(quán)值均被確定。
3、適應(yīng)度函數(shù):Cmax i表示第i個(gè)個(gè)體的目標(biāo)函數(shù)值。
4、交叉操作:為了確保產(chǎn)生的某些基因不被破壞的同時(shí),另外一些基因發(fā)生改變以達(dá)到進(jìn)化效果,交叉時(shí)交換兩個(gè)染色體中同一工件對(duì)應(yīng)各優(yōu)先權(quán)值,然后統(tǒng)計(jì)出其它工件工序中缺少和重復(fù)的優(yōu)先權(quán)值,并用缺少的優(yōu)先權(quán)值代替重復(fù)的優(yōu)先權(quán)值,最后把各工件對(duì)應(yīng)的優(yōu)先權(quán)值按從小到大重新排列。這樣已經(jīng)產(chǎn)生的某些優(yōu)良基因就有很大的概率得以遺傳到下一代,同時(shí)還能保證其它設(shè)備上的工件調(diào)度方案發(fā)生改變,達(dá)到進(jìn)化效果。
5、變異操作:隨機(jī)選擇同一個(gè)染色體的兩個(gè)不同工件,然后再分別隨機(jī)選擇一個(gè)工序的優(yōu)先權(quán)值并將其交換,并對(duì)這兩個(gè)工件的優(yōu)先權(quán)值按從小到大排序。如果在同一個(gè)工件對(duì)應(yīng)的優(yōu)先權(quán)值中選擇兩個(gè)交換,調(diào)整為可行解后則與變異前相同。
6、自適應(yīng)遺傳策略:遺傳算子是優(yōu)化遺傳算法的主要方法。典型的遺傳算法中,交叉概率和變異概率是穩(wěn)定的。本發(fā)明,交叉概率和變異概率可以根據(jù)最佳染色體的適應(yīng)度的變化而自適應(yīng)變化。
(1)、交叉概率如下:運(yùn)行交叉算子前設(shè)置最好染色體的適應(yīng)度為fc1,當(dāng)交叉概率為pc時(shí)運(yùn)行交叉算子后的最好染色體的適應(yīng)度為fc2,然后交叉概率為pc,交叉概率如下:
(2)、變異概率如下:運(yùn)行變異算子前設(shè)置最好染色體的適應(yīng)度為fm1,當(dāng)變異概率為pm時(shí)運(yùn)行變異算子后的最好染色體的適應(yīng)度為fm2,變異概率如下:
7、精英池策略:在進(jìn)化過(guò)程采用“精英策略”,即把每代中的最優(yōu)個(gè)體定義為“精英”并保留到下一代,以加快算法的收斂速度。適應(yīng)度值最大的個(gè)體為“精英”個(gè)體。
二、蟻群算法
1、更新信息素的規(guī)則:本發(fā)明采用蟻周(Ant-Cycle,AC)系統(tǒng)模型。螞蟻k循環(huán)一周需要n步,在路徑(i,j)上的信息素按如下規(guī)則調(diào)整。
Lk表示本次循環(huán)中螞蟻k所用時(shí)間,Q是個(gè)常數(shù)
螞蟻完成所有n個(gè)元素的遍歷后,信息素按如下規(guī)則進(jìn)行調(diào)整:
2、目標(biāo)節(jié)點(diǎn)的選擇概率:螞蟻遍歷所有的節(jié)點(diǎn),螞蟻k從節(jié)點(diǎn)i到節(jié)點(diǎn)j的概率如下:
allowedk表示螞蟻可選的節(jié)點(diǎn)集
3、改善目標(biāo)節(jié)點(diǎn)的選擇策略:蟻群算法有兩個(gè)問(wèn)題:1)搜索陷入局部最優(yōu)解。每一個(gè)個(gè)體得到的所有解決方案是相同的,以至于最好的解決方案不能被發(fā)現(xiàn)。2)收斂至得到全局最優(yōu)解的時(shí)間很長(zhǎng)。結(jié)果在局部最優(yōu)解和全局最優(yōu)解之間搖擺。為擴(kuò)大高收斂速度解的空間,螞蟻k用以下策略選擇目標(biāo)節(jié)點(diǎn)j。
隨機(jī)選擇w,w∈N,q0是一個(gè)常數(shù),0<q0<1,q∈(0,1),當(dāng)選擇目標(biāo)節(jié)點(diǎn)時(shí)生成q,
低信息素增加了跳出局部最優(yōu)解選擇實(shí)體的概率。
4、精英池策略:在搜索過(guò)程采用“精英策略”,即把每代中的最優(yōu)個(gè)體定義為“精英”并保留到下一代,并利用精英螞蟻更新其他螞蟻的位置信息,以加快算法的收斂速度。τmaxi=max(τi1,τi2,......τij),螞蟻i則為精英螞蟻。
本發(fā)明針對(duì)JSP的自適應(yīng)遺傳算法(AGA)與蟻群算法(ACO),將AGA與ACO采取動(dòng)態(tài)鏈接策略,如下:
(1)設(shè)置動(dòng)態(tài)結(jié)合的時(shí)間:最大迭代次數(shù)Gmax,終止迭代速率Gdie小于子代進(jìn)化中最佳的進(jìn)化速率Gmin-ratio;
(2)利用遺傳算法的初始分布,設(shè)置蟻群算法的初始信息素分布:路徑(i,j)上的信息素按如下定義:
指路徑(i,j)上的信息素常量,指遺傳算法結(jié)果集對(duì)應(yīng)的信息素;
(3)轉(zhuǎn)換遺傳算法的結(jié)果集為信息素。
上述結(jié)合附圖對(duì)本發(fā)明的實(shí)施例作了詳細(xì)描述,應(yīng)該理解上述只是示例性的,因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。