專利名稱:基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及自動(dòng)控制與信息技術(shù)領(lǐng)域的一種方法,具體涉及一種基于多智能體進(jìn)化算法(multiagent evolutionary algorithm, MAEA)的資源受限項(xiàng)目調(diào)度方法。
背景技術(shù):
資源受限項(xiàng)目調(diào)度問題(resource-constrainedproject scheduling problem,簡稱RCPSP)廣泛地存在于建筑工程、軟件開發(fā)、飛機(jī)及輪船制造等單件或小批量生產(chǎn)方式的企業(yè)中,合理的調(diào)度計(jì)劃是降低成本、提高質(zhì)量、縮短周期的重要保證。RCPSP不僅在實(shí)踐中應(yīng)用廣泛,在理論上,該問題模型豐富,而且多屬于NP-hard問題,求解困難,因此,一直吸引著國內(nèi)外眾多學(xué)者的研究和關(guān)注。典型的資源受限項(xiàng)目調(diào)度問題可描述為在一個(gè)項(xiàng)目中,包含η個(gè)任務(wù)。任務(wù)之間存在著緊前關(guān)系,記B」為任務(wù)j的緊前任務(wù)集,為任務(wù)j的緊后任務(wù)集。整個(gè)項(xiàng)目的結(jié)構(gòu)可由一張節(jié)點(diǎn)式(activity-on-node,A0N)有向網(wǎng)絡(luò)圖G= (V7E)表示,頂點(diǎn)集V中每個(gè)頂點(diǎn)代表項(xiàng)目中每一個(gè)任務(wù),弧線集E代表任務(wù)間優(yōu)先關(guān)系,即若任務(wù)V和任務(wù)w之間存在一條由V指向W的箭線,則任務(wù)V是任務(wù)W的緊如任務(wù),任務(wù)W是任務(wù)V的緊后任務(wù)。每個(gè)任務(wù)執(zhí)行持續(xù)時(shí)間記為dp這些任務(wù)的執(zhí)行有兩種約束①優(yōu)先關(guān)系約束,即每個(gè)任務(wù)必須等它的所有緊前任務(wù)完成之后才能執(zhí)行;②資源約束。每個(gè)任務(wù)的執(zhí)行都要消耗時(shí)間和資源,調(diào)度的目的是求出項(xiàng)目中每項(xiàng)任務(wù)的開始時(shí)間和結(jié)束時(shí)間,并且同時(shí)滿足資源約束和優(yōu)先關(guān)系約束,使某些管理目標(biāo)最優(yōu)化,例如最小化項(xiàng)目工期。目前文獻(xiàn)中提出了大量的RCPSP解決方法,大致可分為三類最優(yōu)化算法、啟發(fā)式算法、元啟發(fā)式算法。其中,元啟發(fā)式算法主要包括遺傳算法、模擬退火算法、禁忌搜索算法、粒子群優(yōu)化算法、蟻群優(yōu)化算法等。RCPSP屬于組合優(yōu)化問題,元啟發(fā)式算法是目前被普遍認(rèn)為在性能、可擴(kuò)展性和易于實(shí)現(xiàn)性等方面權(quán)衡后的最佳方法。其中,遺傳算法是最常用的一種元啟發(fā)式算法。更廣義的地說,遺傳算法屬于一種進(jìn)化算法,由于進(jìn)化算法與傳統(tǒng)優(yōu)化方法相比,具有簡單、通用、魯棒性強(qiáng)和便于并行化處理等優(yōu)點(diǎn),已被廣泛應(yīng)用于數(shù)值優(yōu)化、組合優(yōu)化、分類器設(shè)計(jì)等領(lǐng)域。但實(shí)踐也表明,僅僅使用以遺傳算法為代表的進(jìn)化算法來模仿生物處理事物的智能還是遠(yuǎn)遠(yuǎn)不夠的,還必須更加深層地挖掘與利用生物的智能資源。在遺傳算法中,用于產(chǎn)生子代的個(gè)體是根據(jù)適應(yīng)度從整個(gè)種群中選擇出來的,因此必須預(yù)先確定整個(gè)種群的適應(yīng)度分布。但在自然界中并不存在全局選擇,也無法計(jì)算全局的適應(yīng)度分布。事實(shí)上,自然選擇本身是一種局部現(xiàn)象,它只與個(gè)體所在的局部環(huán)境有關(guān)。也就是說,某一階段,自然進(jìn)化是一個(gè)局部過程,它通過漸漸擴(kuò)散,才使得信息為全局共享。因此,用遺傳算法求解資源受限項(xiàng)目調(diào)度問題不能很好的模仿生物處理事物的智能,另外遺傳算法還有易早熟收斂、收斂速度慢、穩(wěn)定性差等缺點(diǎn),從而無法得到好的項(xiàng)目進(jìn)度計(jì)劃。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)上述現(xiàn)有方法的不足, 提出了一種基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,本方法能解決背景技術(shù)中存在的不足,從而得到在最優(yōu)解比例和偏離最優(yōu)解誤差方面更好的資源調(diào)度。本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的根據(jù)表示項(xiàng)目結(jié)構(gòu)的節(jié)點(diǎn)式有向網(wǎng)絡(luò)圖初始化智能體,所有智能體均生存在一個(gè)網(wǎng)格環(huán)境中,即智能體網(wǎng)格,網(wǎng)格形式見附圖
2,網(wǎng)格的大小為LsizJLsize,網(wǎng)格大小根據(jù)任務(wù)量設(shè)置,例如一個(gè)項(xiàng)目實(shí)例中包含32個(gè)任務(wù),Lsize設(shè)為6,則網(wǎng)格中有6*6即36個(gè)智能體,每個(gè)智能體固定在網(wǎng)格的一個(gè)格點(diǎn)上,記處于第i行、第j列的智能體為Li, P該智能體
的鄰域?yàn)?br>
權(quán)利要求
1.一種基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,將多智能體系統(tǒng)與進(jìn)化計(jì)算相結(jié)合,用于求解資源受限項(xiàng)目調(diào)度問題,其特征在于首先根據(jù)兩種算法初始化智能體網(wǎng)格中的每個(gè)智能體,然后用設(shè)計(jì)的鄰域競爭算子、鄰域交叉算子、變異算子和自學(xué)習(xí)算子對(duì)智能體進(jìn)行優(yōu)化,具體步驟如下 (1)參數(shù)設(shè)定p。為鄰域交叉概率,Pffl為變異概率,t為大于或等于O的整數(shù),表示第t代,Lt表示第t代智能體網(wǎng)格,Lt+1/3和Lt+2/3是Lt和Lt+1間的中間代智能體網(wǎng)格,Bestt是L0, L1,…,Lt中最優(yōu)的智能體,CBestt是Lt中最優(yōu)的智能體,rand指隨機(jī)產(chǎn)生的O到I之間的實(shí)數(shù),Lijj表示處在智能體網(wǎng)格第i行、第j列的智能體,energy (Lijj)表示智能體Li, j的能量; (2)初始化智能體網(wǎng)格L°,更新Best°,令t= O,網(wǎng)格大小為LsizJLsize,其中Lsize為整數(shù),設(shè)計(jì)為使網(wǎng)格中智能體個(gè)數(shù)大于或等于項(xiàng)目中任務(wù)個(gè)數(shù)的最小值,每個(gè)智能體用一個(gè)可行的任務(wù)列表表示,即列表中每個(gè)任務(wù)的所有緊前任務(wù)都必須排在這個(gè)任務(wù)的前面,循環(huán)調(diào)用算法I和算法2對(duì)智能體網(wǎng)格中每個(gè)智能體進(jìn)行編碼; (3)對(duì)網(wǎng)格Lt中每個(gè)智能體執(zhí)行鄰域競爭算子,得到Lt+1/3,iT;表示智能體Li,j鄰域中能量最大的智能體,如果energy (U」) >engrgy ,則智能體1^,」繼續(xù)存活在網(wǎng)格上,否則,必須死亡,空出的格點(diǎn)由變異產(chǎn)生一個(gè)新智能體占據(jù),變異的方法采用插入變異算子,此插入變異算子與一般組合優(yōu)化的插入變異算子有所不同,變異后任務(wù)列表仍須滿足任務(wù)間優(yōu)先關(guān)系; (4)對(duì)Lt+"3中的每個(gè)智能體,若rand< P。,則將鄰域交叉算子作用在其上,得到Lt+2/3,如果智能體Lm滿足交叉條件,則將兩點(diǎn)交叉算子作用在Lm與^上,得到兩個(gè)智能體C1和C2,比較這兩個(gè)智能體的能量,用能量較大的一個(gè)替代Liij ; (5)對(duì)Lt+2/3中的每個(gè)智能體,若rand< P111,則將變異算子作用在其上,得到Lt+1,如果智能體Lm滿足變異條件,則將插入變異算子作用在其上,該變異算子與步驟(3)中變異算子相同; (6)從Lt+1中找出CBestt+1,并將自學(xué)習(xí)算子作用在其上,若智能體Li,j滿足自學(xué)習(xí)條件,由Li, j變異產(chǎn)生智能體Ii1,變異方法與步驟(3)中變異方法相同,若energy Oi1) >energy (Li,」),則用Ii1替代Li,」且自學(xué)習(xí)算子停止,否則由Ii1繼續(xù)變異產(chǎn)生一個(gè)智能體h2,與Lm比較能量,如果h2的能量比Lm的大,則用h2替代Lm且自學(xué)習(xí)算子停止,否則繼續(xù)由h2變異產(chǎn)生一個(gè)智能體與Lm比較能量,按照這種方式一直變異,一旦得到一個(gè)大于Lm能量的智能體,則用該智能體替代Li, j且自學(xué)習(xí)算子停止,最大變異次數(shù)為20,若還找不到一個(gè)智能體使其能量大于Ly的能量,則自學(xué)習(xí)算子停止,Ly保持不變;(7)如果energy (CBestt+1) > energy (Bestt),則把 CBestt+1 的值賦予 Bestt+1,否則,把Bestt 的值賦予 Bestt+1 和 CBestt+1 ; (8)如果終止條件滿足,即得到RCPSP的最優(yōu)解或者達(dá)到最大進(jìn)化代數(shù),則解碼計(jì)算最小項(xiàng)目工期輸出,否則,令t的值自加1,并轉(zhuǎn)向步驟(3)。
2.如權(quán)利要求1所述的基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,其特征在于步驟(2)所述的用算法I對(duì)智能體網(wǎng)格中智能體進(jìn)行編碼的具體步驟如下 2a)把節(jié)點(diǎn)式有向網(wǎng)絡(luò)G中每個(gè)任務(wù)的緊前任務(wù)個(gè)數(shù)rv賦予av,即av := rv,任務(wù)列表s設(shè)為空序列,即s:=[];2b)判斷任務(wù)列表s是否包含網(wǎng)絡(luò)G中所有的任務(wù),如果是,則轉(zhuǎn)向步驟2f),否則轉(zhuǎn)向步驟2c); 2c)找出任務(wù)集合W,集合中的每個(gè)任務(wù)都不屬于任務(wù)列表s,并且這些任務(wù)目前的緊前任務(wù)個(gè)數(shù)aw = O,即1 = {\^5|8胃=0}; 2d)把任務(wù)集合W中所有任務(wù)按任意順序連續(xù)的賦給任務(wù)列表s ; 2e)對(duì)任務(wù)集合W中每個(gè)任務(wù)的所有緊后任務(wù)的緊前任務(wù)個(gè)數(shù)減I,即VwGW,VvGA.,av = av_l,然后轉(zhuǎn)向 2b); 2f)算法結(jié)束。
3.如權(quán)利要求1所述的基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,其特征在于步驟(2)所述的用算法2對(duì)智能體網(wǎng)格中智能體進(jìn)行編碼的具體步驟如下 3a)把節(jié)點(diǎn)式有向網(wǎng)絡(luò)G中每個(gè)任務(wù)的緊前任務(wù)個(gè)數(shù)rv賦予av,即av := rv,任務(wù)列表s設(shè)為空序列,S卩s := □,令i為O ; 3b)判斷i是否等于n,如果是,則轉(zhuǎn)向步驟3g),否則轉(zhuǎn)向步驟3c); 3c)找出這樣的任務(wù)集合V,集合中的每個(gè)任務(wù)都不屬于任務(wù)列表S,并且這些任務(wù)目前的緊前任務(wù)個(gè)數(shù)av = 0,即V: = {vgs|av=0}; 3d)把任務(wù)集合V中所有任務(wù)按任意順序入棧; 3e)從棧項(xiàng)出棧一個(gè)任務(wù)w,把i自加I,即1:= i+1,把任務(wù)w賦給任務(wù)列表s,即s[i]=w ; 3f)對(duì)任務(wù)w的所有緊后任務(wù)的緊前任務(wù)個(gè)數(shù)減1,即VvGA.,av:= av-l,然后轉(zhuǎn)向3b); 3g)算法結(jié)束。
4.如權(quán)利要求1所述的基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,其特征在于步驟(3)所述的由C變異產(chǎn)生一個(gè)新智能體,采用的變異算子按如下規(guī)則進(jìn)行 在C中隨機(jī)選擇一個(gè)任務(wù)V,把它在任務(wù)列表中位置記為P [v],將V的緊前任務(wù)集合Bv中任務(wù)的最大下標(biāo)位置記為1,同時(shí)將V的緊后任務(wù)集合Av中任務(wù)的最小下標(biāo)位置記為e,隨機(jī)產(chǎn)生一個(gè)位置k,需滿足k古p [v]且I < k < e,把任務(wù)V插入到位置k,任務(wù)列表其它任務(wù)間順序不變。例如對(duì)任務(wù)列表S= [1,2,3,4,5,6,7,8,9]進(jìn)行變異,隨機(jī)選擇任務(wù)5,若此時(shí) I = 2,e = 8,則它可能的變異結(jié)果為 s' = [1,2,5,3,4,6,7,8,9],s' = [1,2,3,5,4,6,7,8,9], s/ = [1,2,3,4,6,5,7,8,9]或 s' = [1,2,3,4,6,7,5,8,9]。
5.如權(quán)利要求1所述的基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,其特征在于步驟⑷所述的對(duì)Lq與YT作用的兩點(diǎn)交叉算子,產(chǎn)生兩個(gè)子代智能體C1和C2,具體步驟如下 5a)隨機(jī)產(chǎn)生兩個(gè)整數(shù)!T1和r2,1 < T1 < r2 < n, n為假設(shè)的任務(wù)列表中任務(wù)的個(gè)數(shù);5b) i G [I, rj , cji] = Lijj[i];5c) i G [!^+Lr2] ,Cm = zT [m],m 是滿足1^ [m] Ucl[I], C1 [2],…,C1 [i_l]]最小的下標(biāo); 5d) i G [r2+l, n], C1Li] = Li, j[m], m 是滿足L1.j[m]茫[cjl],C1M , ...,cj1-l]]最小的下標(biāo); 5e)交換1^,」和17產(chǎn)生另外一個(gè)智能體c2。
全文摘要
本發(fā)明公開一種基于多智能體進(jìn)化算法的資源受限項(xiàng)目調(diào)度方法,屬自動(dòng)控制與信息技術(shù)領(lǐng)域。本發(fā)明將多智能體系統(tǒng)與進(jìn)化計(jì)算相結(jié)合,用于求解資源受限項(xiàng)目調(diào)度問題,其特征在于首先根據(jù)兩種算法初始化智能體網(wǎng)格中的每個(gè)智能體,然后設(shè)計(jì)了鄰域競爭算子、鄰域交叉算子、變異算子、自學(xué)習(xí)算子對(duì)智能體進(jìn)行優(yōu)化,驗(yàn)證結(jié)果表明,本發(fā)明在評(píng)定求解資源受限項(xiàng)目調(diào)度問題方法效用的兩個(gè)方面求解到最優(yōu)解的比例和偏離最優(yōu)解平均誤差,都很有優(yōu)勢,是一種有效的求解資源受限項(xiàng)目調(diào)度問題的方法,還能擴(kuò)展到求解其它帶有優(yōu)先關(guān)系限制的組合優(yōu)化問題。
文檔編號(hào)G06Q10/04GK103020730SQ201210454380
公開日2013年4月3日 申請(qǐng)日期2012年11月1日 優(yōu)先權(quán)日2012年11月1日
發(fā)明者劉靜, 蔡冰琦, 焦李成 申請(qǐng)人:西安電子科技大學(xué)