戴 扶,黃文明,鄧珍榮
(桂林電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西 桂林 541004)
網(wǎng)格[1]將互聯(lián)網(wǎng)上的各種資源集中在一個(gè)統(tǒng)一的框架內(nèi),為上層應(yīng)用提供高效的資源服務(wù)。網(wǎng)格環(huán)境中的調(diào)度問(wèn)題研究由來(lái)已久,調(diào)度問(wèn)題可看作一個(gè)組合問(wèn)題,將N個(gè)任務(wù)分配到M個(gè)資源上。這種優(yōu)化組合問(wèn)題非常適合用群體啟發(fā)式算法來(lái)解決。目前,研究較多的是遺傳算法(GA)、粒子群算法(PSO)、蟻群算法(ACA)、人工魚(yú)群算法(AFSA)等[2-5]?;煜赐芴惴ǎ╯huffled frog leaping algorithm,簡(jiǎn)稱SFLA)是2003年由Eusuff等[6]提出的一種啟發(fā)式算法,用于優(yōu)化組合問(wèn)題。此算法具有易理解、參數(shù)少、速度快、尋優(yōu)能力強(qiáng)、實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn),已被廣泛應(yīng)用于水利管網(wǎng)、電力網(wǎng)絡(luò)[7]中。具有依賴關(guān)系的任務(wù)可被抽象為一個(gè)有向無(wú)環(huán)圖(directed acyclic graph,簡(jiǎn)稱DAG)模型,DAG任務(wù)自身的結(jié)構(gòu)和實(shí)際應(yīng)用程序內(nèi)的結(jié)構(gòu)特征非常相似,因此,研究DAG任務(wù)調(diào)度問(wèn)題更具有現(xiàn)實(shí)意義,但也使得任務(wù)調(diào)度問(wèn)題更加復(fù)雜。
針對(duì)DAG任務(wù)的編碼方式可分為2類:
1)間接編碼方式。將資源先隨機(jī)分配給任務(wù),再利用其他手段剔除不符合DAG任務(wù)約束條件的解。如文獻(xiàn)[8]中,任務(wù)的執(zhí)行序不變,隨機(jī)分配一個(gè)資源,然后通過(guò)計(jì)算節(jié)點(diǎn)的最長(zhǎng)前驅(qū)路徑和最短后繼路徑判斷任務(wù)之間的關(guān)聯(lián)度,剔除不符合約束條件的問(wèn)題解。
2)直接利用DAG任務(wù)的約束條件進(jìn)行編碼。陳晶等[9]將DAG任務(wù)的高度值作為執(zhí)行的優(yōu)先級(jí)別,再根據(jù)級(jí)別隨機(jī)分配優(yōu)先權(quán)值,這些權(quán)值組合起來(lái)就是任務(wù)解的編碼。
但這些方式都存在解碼方式比較復(fù)雜或未考慮網(wǎng)格的動(dòng)態(tài)性的缺陷。如果網(wǎng)絡(luò)資源在編碼階段離開(kāi)了網(wǎng)絡(luò)環(huán)境,那么就會(huì)造成最后的分配方案失效。鑒于此,提出一種改進(jìn)型混洗蛙跳算法解決網(wǎng)格DAG任務(wù)調(diào)度問(wèn)題:將編碼階段和資源分配階段分開(kāi),先依照DAG的依賴條件進(jìn)行編碼,再在任務(wù)派發(fā)階段分配資源計(jì)算適應(yīng)值;重新定義解空間度量規(guī)則,精簡(jiǎn)算法空間,減少算法的計(jì)算量;改進(jìn)SFLA算法的搜索策略,使得解集能夠迅速向最優(yōu)解聚攏。
問(wèn)題解的組合方式能夠反映出一個(gè)解的解決問(wèn)題的效率。這種思想來(lái)源于管理領(lǐng)域內(nèi)的崗位輪換制度,通過(guò)比較人員在不同崗位上的工作狀況,進(jìn)行統(tǒng)計(jì)分析,幫助優(yōu)化整個(gè)組織的人力資源配置。同樣地,DAG任務(wù)可看作一個(gè)組織機(jī)構(gòu),各個(gè)節(jié)點(diǎn)就是“輪崗人員”。一個(gè)完整的“人員職位安排”就是DAG任務(wù)調(diào)度問(wèn)題的一個(gè)解,如圖1所示。
圖1 DAG任務(wù)編碼示例Fig.1 Example of DAG task coding
受文獻(xiàn)[10]分代(GS)算法的啟發(fā),將DAG任務(wù)按照高度值分配優(yōu)先級(jí),同一層的節(jié)點(diǎn)可視為元任務(wù),執(zhí)行序可任意排列;不同層的節(jié)點(diǎn),優(yōu)先級(jí)高的先執(zhí)行。其實(shí)質(zhì)就是將解的執(zhí)行序列按約束條件分段,段內(nèi)編號(hào)是確定的,但段內(nèi)編號(hào)順序是隨意的。
適應(yīng)值反映了解的優(yōu)秀程度,在本研究中體現(xiàn)為總?cè)蝿?wù)的執(zhí)行時(shí)間。執(zhí)行時(shí)間與資源分配方案息息相關(guān),良好的分配方案可有效地提高解的質(zhì)量,提升算法的搜索性能和收斂速度。采用動(dòng)態(tài)最早完成優(yōu)先(DEFF)算法[11]的思想對(duì)問(wèn)題解進(jìn)行資源分配,以保證每個(gè)節(jié)點(diǎn)的開(kāi)始時(shí)間最早、執(zhí)行時(shí)間最短。
設(shè)系統(tǒng)有m個(gè)資源,P={P1,P2,…,Pm},DAG任務(wù)分為n個(gè)節(jié)點(diǎn),T={T1,T2,…,Tn},fat(Pi)為某個(gè)資源的可利用時(shí)間,Eij為資源Pi、Pj間的通信開(kāi)銷執(zhí)行時(shí)間,p(Ti)為T(mén)i的前驅(qū)節(jié)點(diǎn)集合,則Ti在Pj上的最早啟動(dòng)時(shí)間為:
fet,Ti(Pj)為任務(wù)Ti在Pj上的執(zhí)行時(shí)間,則任務(wù)Ti在Pj上的完成時(shí)間為
因此,任務(wù)Ti的最早結(jié)束時(shí)間F(Ti)和最早開(kāi)始時(shí)間S(Ti)滿足:
最終適應(yīng)度函數(shù)為
由于編碼方式改變,需重新定義解空間的度量方式。受DAG任務(wù)約束條件的約束,高度值相同的節(jié)點(diǎn)只能在同一層中移動(dòng),可視這些節(jié)點(diǎn)在某個(gè)范圍內(nèi)是封閉的。因此,將DAG的層次視為解空間的維度,某個(gè)層次中的不同排序視為分布在這條基軸上的離散點(diǎn),如圖2所示。如此定義可有效地反映DAG的特點(diǎn),并簡(jiǎn)化計(jì)算量。
圖2 基軸示意圖Fig.2 Example of basic shaft
定義1 基軸度量規(guī)則。在某個(gè)基軸上2個(gè)不同編碼的α和β,α的編碼通過(guò)K次交換可轉(zhuǎn)換成β,則稱α到β的距離為K,用K=β-α表示。交換規(guī)則如下:
1)假設(shè)i為α中的第i個(gè)編碼,若該元素與β中的第i個(gè)編碼相同,則比較第i+1個(gè)元素,直到比較α中所有元素;若不同,則跳到2)。
2)查找該編碼在β中所處的位置j,然后將α中該編碼所處位置和j位置的元素交換,再回到1)。
對(duì)于解空間中的任意解V,設(shè)其DAG模型分為U層,則解為U個(gè)基構(gòu)成的向量。
定義2 解之間的歐式距離。對(duì)于解空間內(nèi)任意2個(gè)解向量V1、V2,設(shè)解分為U層,ci為V2中第i個(gè)基到V1中第i個(gè)基的距離,則V2到V1的距離為:
用戶將應(yīng)用程序提交到任務(wù)池內(nèi),網(wǎng)格資源向網(wǎng)格資源管理器進(jìn)行登記注冊(cè)。調(diào)度器從任務(wù)池內(nèi)順序取出調(diào)度任務(wù),同時(shí)從算法庫(kù)中選擇調(diào)度算法,利用資源管理器的資源列表和工具庫(kù)內(nèi)的一些必要工具,進(jìn)行調(diào)度決策。調(diào)度決策完畢后,按照決策結(jié)果將任務(wù)發(fā)送到相應(yīng)的網(wǎng)格資源,模型如圖3所示。
圖3 網(wǎng)格任務(wù)調(diào)度模型Fig.3 Grid task scheduling model
考慮資源間的通信開(kāi)銷,每個(gè)資源都有一份通信表,記錄與相鄰資源間的通信時(shí)間。調(diào)度方式采用非搶占式調(diào)度方式。
SFLA是為解決全局最優(yōu)解而提出的一種變異模因進(jìn)化算法[12],它并不強(qiáng)調(diào)個(gè)體,而是強(qiáng)調(diào)個(gè)體所持有的思想變化[6]。通過(guò)向優(yōu)秀個(gè)體學(xué)習(xí),從而改進(jìn)自己的思想,進(jìn)而推動(dòng)整個(gè)種群的進(jìn)化。算法過(guò)程如下:
1)隨機(jī)產(chǎn)生N只青蛙作為初始種群,然后計(jì)算每只青蛙的適應(yīng)值,并按照適應(yīng)值的優(yōu)劣排序。2)根據(jù)式(5)將N只青蛙劃分成M個(gè)模因族群。
其中:Yk為第k個(gè)模因族群;D(j)k為第k個(gè)族群中的第j只青蛙;j∈[1,N],k∈[1,M]。
3)局部搜索。記錄種群最優(yōu)解Dg、族群內(nèi)部的最優(yōu)解Db和最差解Dw,根據(jù)式(6)進(jìn)行進(jìn)化。Dw先向Db進(jìn)化,若進(jìn)化失敗,則向Dg進(jìn)化,若仍失敗,則Dw隨機(jī)變化一下替換原來(lái)的Dw。
其中:rand()為隨機(jī)函數(shù),取值(0,1);dmax為允許移動(dòng)的最大步長(zhǎng);Dx為Db或Dg。
4)全局搜索。將所有族群打散并重新按照適應(yīng)度升序排序,若達(dá)到算法結(jié)束條件,則轉(zhuǎn)到5),否則回到2)。
5)輸出最優(yōu)級(jí)。
SFLA作為一種群體啟發(fā)式算法雖然有參數(shù)少、全局尋優(yōu)能力強(qiáng)的特點(diǎn),但也存在容易陷入局部最優(yōu)和收斂速度慢的缺點(diǎn)。在局部搜索策略中,Dw向Db和Dg學(xué)習(xí)為種群提供進(jìn)化動(dòng)力,并通過(guò)自我突變?cè)黾臃N群多樣性,進(jìn)化點(diǎn)單一、動(dòng)力不足導(dǎo)致種群長(zhǎng)期徘徊在舊的狀態(tài)中。為此,將Db也作為進(jìn)化點(diǎn),向Dg學(xué)習(xí),增加種群的進(jìn)化動(dòng)力,同時(shí)加入鄰域搜索作為擴(kuò)展搜索解空間的手段,增加種群多樣性。
3.2.1 鄰域搜索
設(shè)置一個(gè)鄰域半徑l,當(dāng)解空間中一個(gè)解向目標(biāo)解逼近時(shí),若兩解間的距離小于l,則開(kāi)始探索周邊空間的優(yōu)秀解。
在算法的初期階段,l的取值應(yīng)大一些,使種群在初期能夠盡可能地在整個(gè)解空間中移動(dòng),收集更多潛在的優(yōu)秀解;在算法的后期,l值應(yīng)該減小,使算法有較強(qiáng)的局部挖掘能力。因此,l的取值為
其中:i=1,2,…,np;np為種群迭代次數(shù)。實(shí)驗(yàn)結(jié)果表明,Dmax=9,Dmin=1較為合適。
3.2.2Db向Dg進(jìn)化策略
計(jì)算種群最優(yōu)解的適應(yīng)值A(chǔ)(Dg)、族群最優(yōu)解的適應(yīng)值A(chǔ)(Db)、族群最差解的適應(yīng)值A(chǔ)(Dw)以及Dg與Db之間的距離D。若A(Db)<A(Dg),直接用Db替換Dg;若A(Db)<A(Dg),D>l,按式(8)進(jìn)化。
當(dāng)A(Db′)<A(Dg)時(shí),用Db′替換Dg;A(Db′)<A(Db)時(shí),Db′替換Db;否則視為進(jìn)化失敗,進(jìn)行鄰域搜索。若A(Db)=A(Dg)‖D<l‖Db向Dg進(jìn)化失敗,也進(jìn)行鄰域搜索。由于鄰域搜索可能對(duì)Db所持有的信息造成較大的破壞,設(shè)定一個(gè)突變因子τ,τ∈(0,1)。隨機(jī)抽取U×τ個(gè)基,U為DAG任務(wù)的層數(shù),根據(jù)式(9)進(jìn)化。
這樣既能保持解的部分優(yōu)良信息,又能對(duì)Db周圍的空間進(jìn)行探索。
當(dāng)A(Db′)<A(Dg)時(shí),Db′替換Dg;A(Db′)≤A(Db)時(shí),Db′替換Db;否則視為搜索失敗。
3.2.3Dw向Db進(jìn)化策略
若A(Dw)>A(Db),則根據(jù)式(10)進(jìn)化。
當(dāng)A(Dw′)<A(Db)時(shí),Dw′替換Db;A(Dw′)<A(Dw)時(shí),Dw′替換Dw;否則視為進(jìn)化失敗,進(jìn)行鄰域搜索。
若A(Dw)=A(Db)‖Dw向Db進(jìn)化失敗,進(jìn)行鄰域搜索,根據(jù)式(9)進(jìn)行突變,Db換成Dw。
當(dāng)A(Dw′)<A(Db)時(shí),Dw′替換Db,否則Dw′替換Dw,增加種群多樣性。
為驗(yàn)證ISFLA的有效性,根據(jù)圖3所示的網(wǎng)格任務(wù)調(diào)度模型,在Windows環(huán)境下用Java開(kāi)發(fā)了一個(gè)網(wǎng)格環(huán)境任務(wù)調(diào)度仿真平臺(tái)。在此平臺(tái)上,分別對(duì)GA、PSO、SFLA和ISFLA的搜索性能及收斂速度進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)通過(guò)Matlab進(jìn)行比較分析。
GA采用標(biāo)準(zhǔn)遺傳算法,以輪盤(pán)賭法作為選擇策略,單點(diǎn)交叉,一點(diǎn)變異,突變因子為0.05,交叉系數(shù)為0.6;PSO采用標(biāo)準(zhǔn)粒子群算法,慣性系數(shù)為0.8,c1、c2為學(xué)習(xí)因子,均取值2,進(jìn)化步長(zhǎng)在[1,8];SFLA最大進(jìn)化步長(zhǎng)為3。
最大進(jìn)化步長(zhǎng)dmax如果設(shè)置較大,青蛙有可能越過(guò)最優(yōu)值,而設(shè)置過(guò)小,移動(dòng)速度會(huì)變慢,導(dǎo)致搜索效率太低。而設(shè)置突變因子τ的目的是為了在鄰域搜索時(shí),只讓部分解的基進(jìn)行突變,使得解的部分優(yōu)秀信息有可能保存下來(lái),同時(shí)也使得進(jìn)化路徑更加復(fù)雜,增加了計(jì)算負(fù)擔(dān),因此有必要對(duì)其進(jìn)行討論。
實(shí)驗(yàn)中,可用網(wǎng)格資源數(shù)量為4,任務(wù)量為50個(gè)節(jié)點(diǎn)的DAG任務(wù),初始種群為200,族群數(shù)為10,族群循環(huán)次數(shù)10次,種群循環(huán)300次,測(cè)試步長(zhǎng)時(shí),τ=0.25;測(cè)突變因子時(shí),dmax=3,結(jié)束條件為種群循環(huán)200次。每種步長(zhǎng)各運(yùn)行10次,然后求均值。結(jié)果如圖4和表1、2所示。
從表1可看出,dmax=9、7、3時(shí),算法的時(shí)間開(kāi)銷都集中在45s左右,但當(dāng)dmax=2時(shí),算法的時(shí)間開(kāi)銷提高到了67.10s,顯然進(jìn)化步長(zhǎng)縮短導(dǎo)致解的進(jìn)化速度放慢。表2為突變因子對(duì)跨度和算法時(shí)間開(kāi)銷的影響。從表2可看出,τ值的變化對(duì)算法的時(shí)間開(kāi)銷和調(diào)度跨度影響很小。從圖4(a)可看出,dmax為7、9,算法的搜索性能明顯差于dmax為2、3,這是由于進(jìn)化步長(zhǎng)過(guò)大導(dǎo)致解在進(jìn)化時(shí)錯(cuò)失了許多潛在的優(yōu)秀解。從圖4(b)可看出,τ=0.25時(shí),算法的收斂速度比其他值要好些;τ=0.80時(shí),解的大部分基都參與了突變計(jì)算,使解本身的一些優(yōu)良基因丟失,圖4(b)中表現(xiàn)為收斂速度最差;τ=0.10時(shí),解中只有很少的基參與了突變計(jì)算,雖然保留了自身的優(yōu)秀基因,但對(duì)自身的改良較少。因此,dmax=3,τ=0.25時(shí),ISFLA的效果較好。
圖4 ISFLA算法參數(shù)與調(diào)度跨度的關(guān)系Fig.4 The relation between SFLA parameters and span
表1 最大進(jìn)化步長(zhǎng)與調(diào)度跨度的關(guān)系Tab.1 The relation between max step size and span
表2 突變因子與調(diào)度跨度和ISFLA時(shí)間開(kāi)銷的關(guān)系Tab.2 The mutation factor,span and ISFLA time cost
選取網(wǎng)格資源數(shù)量為4,任務(wù)量為30、50個(gè)節(jié)點(diǎn)的DAG任務(wù)。初始種群為200,族群數(shù)為10,族群循環(huán)次數(shù)10次,種群循環(huán)200次,結(jié)束條件為種群循環(huán)200次。GA、PSO、SFLA和ISFLA各 運(yùn) 行10組,求每一代的均值。實(shí)驗(yàn)結(jié)果如圖5所示。從圖5(a)可看出,任務(wù)數(shù)為30時(shí),在200次迭代過(guò)程中,各算法都能收斂到最優(yōu)解附近,GA和ISFLA搜索性能稍好。當(dāng)任務(wù)規(guī)模增加到50,ISFLA和GA的搜索性能明顯好于SFLA和PSO,如圖5(b)所示。這是由于ISFLA在進(jìn)化策略中增加了鄰域搜索策略,擴(kuò)大了算法的探索空間,保證了種群的多樣性,從而有效避免了局部收斂。從圖5(c)可看出,PSO、GA分別經(jīng)150、40次迭代才收斂到最優(yōu)解附近,而SFLA、ISFLA分別在24、15次迭代就收斂到了最優(yōu)解附近,收斂速度較快??捎?jì)算出ISFLA的收斂速度較GA、PSO、SFLA分 別 提 高了75%、94%和27%。從圖5(d)可看出,ISFLA的收斂速度明顯高于GA。因此,在有時(shí)間條件約束的情況下,ISFLA能更快找到全局最優(yōu)解。
圖5 2種任務(wù)規(guī)模下GA、PSO、SFLA和ISFLA的調(diào)度跨度Fig.5 The span of GA,PSO,SFLA and ISFLA under two scales
實(shí)驗(yàn)設(shè)計(jì):選用網(wǎng)格資源數(shù)量為4,任務(wù)量為10、20、30、40、50個(gè)節(jié)點(diǎn)的DAG任務(wù)。初始種群為200,族群數(shù)為10,族群循環(huán)次數(shù)10次,種群循環(huán)500次,結(jié)束條件為種群循環(huán)500次。4種算法各運(yùn)行10組,分別對(duì)算法的時(shí)間開(kāi)銷求均值并進(jìn)行比較。實(shí)驗(yàn)結(jié)果如表3所示。
表3 不同規(guī)模下算法時(shí)間跨度Tab.3 The solutions obtained by different algorithms under the different task scales s
圖6為不同規(guī)模下4種算法的時(shí)間開(kāi)銷。從圖6可看出,SFLA和ISFLA的時(shí)間開(kāi)銷比GA和PSO要小。而從表3中反映的數(shù)據(jù)來(lái)看,GA和ISFLA的結(jié)果更好。因此,在網(wǎng)格資源有限的情況下,ISFLA能夠在較少的時(shí)間內(nèi)給出最好的全局最優(yōu)解。
圖6 不同規(guī)模下4種算法的時(shí)間開(kāi)銷Fig.6 The time cost of four algorithms under the different task scales
通過(guò)綜合分析網(wǎng)格動(dòng)態(tài)環(huán)境中的DAG任務(wù)調(diào)度的特點(diǎn),建立了一個(gè)網(wǎng)格任務(wù)調(diào)度模型。結(jié)合DAG任務(wù)和啟發(fā)式群體智能算法的特點(diǎn),設(shè)計(jì)了任務(wù)的編碼方式和度量方式?;卩徲蛩阉鞑呗院驮黾幼迦哼M(jìn)化點(diǎn),改進(jìn)了SFLA的局部搜索策略,進(jìn)而提出一種改進(jìn)型混洗蛙跳算法。實(shí)驗(yàn)表明,該算法能夠有效地提高搜索性能和收斂速度。下一步計(jì)劃在多目標(biāo)網(wǎng)格環(huán)境下的DAG任務(wù)調(diào)度算法中,把網(wǎng)格資源負(fù)載性能指標(biāo)融入到優(yōu)化策略。
[1]Foster I,Kesselman C,Tuecke S.The anatomy of the grid:enabling scalable virtual organizations[J].International Journal of High Performance Computing Applications,2001,15(3):200-222.
[2]蘭舟.分布式系統(tǒng)中的調(diào)度算法研究[D].成都:電子科技大學(xué),2009:17-54.
[3]胡成玉.面向動(dòng)態(tài)環(huán)境的粒子群算法研究[D].武漢:華中科技大學(xué),2010:19-67.
[4]馮春時(shí).群智能優(yōu)化算法及其應(yīng)用[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2009:23-55.
[5]劉波.蟻群算法改進(jìn)及應(yīng)用研究[D].秦皇島:燕山大學(xué),2010:12-45.
[6]Eusuff M M,Lansey K E.Optimization of water distribution network design using the shuffled frog leaping algorithm[J].Journal of Water Resources Planning and Management,2003,129(3):210-225.
[7]Niknam T,Azad Farsani E.A hybrid self-adaptive particle swarm optimization and modified shuffled frog leaping algorithm for distribution feeder reconfiguration[J].Engineering Applications of Artificial Intelligence,2010,23(8):1340-1349.
[8]朱海,王宇平.融合安全的網(wǎng)格依賴任務(wù)調(diào)度雙目標(biāo)優(yōu)化模型及算法[J].軟件學(xué)報(bào),2011,22(11):2729-2748.
[9]陳晶,潘全科.同構(gòu)計(jì)算環(huán)境中DAG任務(wù)圖的調(diào)度算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,(3):668-670.
[10]Carter B R,Watson D W,F(xiàn)reund R F,et al.Generational scheduling for dynamic task management in heterogeneous computing systems[J].Information Sciences,1998,106(3):219-236.
[11]馬丹.任務(wù)間相互依賴的并行作業(yè)調(diào)度算法研究[D].武漢:華中科技大學(xué),2007:65-69.
[12]Eusuff M,Lansey K,Pasha F.Shuffled frog-leaping algorithm:a memetic meta-h(huán)euristic for discrete optimization[J].Engineering Optimization,2006,38(2):129-154.