萬(wàn)里 丁沖沖
南京財(cái)經(jīng)大學(xué)信息工程學(xué)院 江蘇 210046
本文提出一種基于Pareto解集的多目標(biāo)粒子群算法來(lái)解決多目標(biāo)的Web服務(wù)組合全局優(yōu)化問(wèn)題,利用粒子群算法的尋優(yōu)策略,對(duì)問(wèn)題進(jìn)行建模優(yōu)化,并對(duì)已有算法本身存在的一些不足地方,進(jìn)行分析和改進(jìn),最終產(chǎn)生滿足用戶需求的一組Pareto非劣解集,供用戶來(lái)進(jìn)行選擇。
一個(gè) Web服務(wù)組合通常由提供不同的簡(jiǎn)單功能的多個(gè)Web服務(wù)構(gòu)成,這些不同功能的子服務(wù)通常相互之間彼此獨(dú)立。常用的Web服務(wù)組合的結(jié)構(gòu)有四種,分別是順序結(jié)構(gòu),并行結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
在實(shí)際的應(yīng)用中,提供功能相同或相似的Web服務(wù)數(shù)量較多,它們?cè)诠δ苌峡梢韵嗷ヌ娲?,但它們具有不同的非功能屬性,例如服?wù)的執(zhí)行時(shí)間,執(zhí)行價(jià)格,可信度以及可用性等。在Web服務(wù)進(jìn)行組合的時(shí)候,需要按照指定的任務(wù)完成相應(yīng)的功能,對(duì)于每個(gè)不同的任務(wù),只包含相應(yīng)的描述信息和接口信息,不指向具體的服務(wù),我們稱之為抽象服務(wù)。這樣對(duì)復(fù)雜功能的Web服務(wù),都有一定數(shù)量的抽象服務(wù)組合而成,在真正執(zhí)行的時(shí)候,這些抽象服務(wù)將從候選服務(wù)里選出具體的服務(wù)來(lái)實(shí)現(xiàn),通常抽象服務(wù)的候選服務(wù)有一個(gè)或者多個(gè)。以順序結(jié)構(gòu)為例,如圖1中所示,S代表Web服務(wù)執(zhí)行的起點(diǎn),T代表終點(diǎn),Wi為第i個(gè)抽象服務(wù),Wi,j代表第i個(gè)抽象服務(wù)的第j個(gè)候選服務(wù),其中(1≤i≤n,1≤j≤m)。
圖1 Web服務(wù)組合選擇
考慮到Web服務(wù)的非功能屬性通常具有多個(gè)評(píng)價(jià)參數(shù)。因此,很難找到一個(gè)全方位的最優(yōu)解,使得組合的效果在各個(gè)屬性方向上同時(shí)達(dá)到最優(yōu)解,而且一些屬性本身就具有互相偏離性,比如說(shuō)時(shí)間短的服務(wù)與價(jià)格低的服務(wù)關(guān)系,或者價(jià)格低的服務(wù)與可信度高的服務(wù)的關(guān)系,通常這些服務(wù)的屬性很難達(dá)到一致最優(yōu)。所以只能對(duì)各個(gè)目標(biāo)折中求解,使得各個(gè)目標(biāo)盡可能符合用戶需要。以往的處理方法往往是對(duì)各個(gè)目標(biāo)進(jìn)行線性加權(quán),利用一個(gè)評(píng)價(jià)函數(shù)尋求多個(gè)目標(biāo)的平衡,但這種方法會(huì)帶來(lái)諸多問(wèn)題。
本文采用的是利用多目標(biāo)求解方法,將多個(gè)目標(biāo)函數(shù)作為一個(gè)目標(biāo)向量考慮,該目標(biāo)向量的維數(shù)由屬性的個(gè)數(shù)確定。求得目標(biāo)向量通常會(huì)不止一個(gè),所求得的這些向量之間,不存在一向量在任何一個(gè)目標(biāo)上比另一個(gè)向量好,但同時(shí)其他目標(biāo)也不差的更好解。這些解構(gòu)成的集合稱為Pareto最優(yōu)解集,單個(gè)解稱為Pareto最優(yōu)解或者非劣解。多目標(biāo)優(yōu)化的幾個(gè)基本概念如下:
定義1
(1) Pareto支配:解x0支配x1(x0? x1)當(dāng)且僅當(dāng)
(2) Pareto最優(yōu):如果解x0是Pareto最優(yōu)的當(dāng)且僅當(dāng)┐?x1:x1? x0。
(3) Pareto最優(yōu)集:所有Pareto最優(yōu)解的集合Ps={ x0|┐?x1? x0}
(4) Pareto最優(yōu)前端或均衡面或Pareto前端:所有Pareto最優(yōu)解對(duì)應(yīng)的目標(biāo)函數(shù)值所形成的區(qū)域PF:
以兩目標(biāo)為例,圖2描述了受支配解和非受支配解在目標(biāo)空間的分布。
圖2 受支配解與非受支配解的關(guān)系
粒子群算法和其他進(jìn)化算法類似,也是根據(jù)對(duì)環(huán)境的適應(yīng)度將種群中的個(gè)體移動(dòng)到好的區(qū)域,與其他進(jìn)化算法不同,它不對(duì)個(gè)體使用進(jìn)化算子,而將每個(gè)個(gè)體看成是搜索空間中的一個(gè)沒(méi)有體積沒(méi)有質(zhì)量的粒子,在搜索空間中以一定的速度飛行,并根據(jù)個(gè)體和集體飛行的經(jīng)驗(yàn)的綜合分析來(lái)動(dòng)態(tài)調(diào)整這個(gè)速度。
標(biāo)準(zhǔn)PSO中,粒子在搜索空間的速度和位置根據(jù)如下的公式確定:
式中,w為慣性權(quán)重;r1、r2為加速常數(shù);rand()為區(qū)間[0,1]上均勻分布的隨機(jī)數(shù);Pt和Gt分別為t時(shí)刻粒子的自身最好位置pbest和全局最好位置gbest。pbest為粒子自身飛過(guò)的最好位置,而 gbest為粒子所對(duì)應(yīng)的全局最好位置,它是整個(gè)群體所經(jīng)歷的最好位置。xt=(xt1,xt2,…,xm)與 vt=(vt1,vt2,…,vm)為時(shí)刻t的位置與速度。
標(biāo)準(zhǔn)粒子群算法流程如下:
(1) 初始化粒子群,隨機(jī)產(chǎn)生所有粒子的位置和速度并確定粒子的pbest和gbest。
(2) 對(duì)每個(gè)粒子,將它的當(dāng)前位置與它經(jīng)歷的最好位置pbest進(jìn)行比較,如果當(dāng)前位置更好,則將其作為當(dāng)前的最好位置pbest,否則,pbest保持不變。
(3) 對(duì)每個(gè)粒子,將它的當(dāng)前位置和群體中所有粒子所經(jīng)歷的最好位置 gbest作比價(jià),如果這個(gè)粒子的位置更好,則將其設(shè)置為當(dāng)前的gbest;否則gbest保持不變。
(4) 更新粒子的速度和位置。
(5) 如未達(dá)到結(jié)束條件(通常為預(yù)定的運(yùn)算精度或迭代次數(shù)),返回步驟(2)。
(6) 開(kāi)始下一輪迭代計(jì)算;否則,取當(dāng)前gbest為最優(yōu)解。
標(biāo)準(zhǔn)粒子群算法只要通過(guò)簡(jiǎn)單的變換就能夠?qū)B續(xù)空間求最優(yōu)解取得很好的效果。但是在實(shí)際應(yīng)用中,問(wèn)題空間往往都在離散空間中,而標(biāo)準(zhǔn)粒子群算法往往較難處理。在標(biāo)準(zhǔn)粒子群基礎(chǔ)上,一些研究者提出了離散粒子群算法(DPSO),此類方法的研究大致有兩個(gè)處理方向,一個(gè)是仍將離散空間中的組合優(yōu)化問(wèn)題轉(zhuǎn)化成為連續(xù)空間中來(lái)處理,再按照標(biāo)準(zhǔn)粒子群的方法,對(duì)粒子的速度和位置進(jìn)行更新和改變;而另一個(gè)方向是對(duì)粒子的速度、位置信息等進(jìn)行重新的編碼,其更新的機(jī)理也會(huì)隨著具體問(wèn)題的不同,而具有相對(duì)的靈活性和針對(duì)性。
基于連續(xù)空間的離散粒子群算法,以二進(jìn)制編碼的粒子群算法(BPSO)為代表,該算法首先由Kennedy和Eberhart提出,作者定義了一個(gè)sigmoid模糊函數(shù):
相應(yīng)的將位置更新公式變?yōu)椋?/p>
其中rand為[0,1]之間均勻分布的隨機(jī)數(shù),在標(biāo)準(zhǔn)粒子群算法中,當(dāng)前速度對(duì)下一時(shí)刻的粒子飛行方向和位置產(chǎn)生影響,使得搜索在一定的空間范圍內(nèi)變動(dòng)。但是在BPSO中,速度的定義已經(jīng)改變,通過(guò)sigmoid模糊函數(shù),表示粒子位置取1的概率為S(vt),取0的概率為1-S(vt)。由于BPSO保留了標(biāo)準(zhǔn)粒子群算法中較多的更新方式,所以很多在處理連續(xù)空間上的方法都可以使用,但是由于BPSO二進(jìn)制編碼的局限性,所以該算法的應(yīng)用領(lǐng)域并不是很廣,對(duì)一些組合優(yōu)化問(wèn)題并不是很好的解決方法。
目前針對(duì)離散空間的DPSO研究較少,Clerc教授最先提出一種基于離散點(diǎn)位置交換的改進(jìn)粒子群算法并成功求解了旅行商問(wèn)題。在此算法中,位置標(biāo)示為一個(gè)離散值向量,而速度則表示粒子的運(yùn)動(dòng)趨勢(shì),這樣位置在交換前和交換后均為離散值。此算法在保持標(biāo)準(zhǔn)粒子群公式的條件下,改變了運(yùn)算符號(hào)的意義,其新的符號(hào)分別為:
1,位置減操作Θ:例如xΘy,表示一個(gè)速度,即粒子由x朝y方向飛行。
2,速度加操作⊕:表示兩個(gè)速度的疊加,先按照第一個(gè)速度移動(dòng),再按照第二個(gè)速度移動(dòng)。
3,位置加速度操作⊕:位置加上某一個(gè)速度后,得到一個(gè)新的位置。
4,系數(shù)乘速度操作?:表示以這個(gè)系數(shù)為概率來(lái)按照這個(gè)速度移動(dòng)位置。
基于離散空間的DPSO與標(biāo)準(zhǔn)粒子群算法的運(yùn)動(dòng)方式有很大不同,粒子不是通過(guò)在解空間內(nèi)連續(xù)的運(yùn)動(dòng)方式來(lái)向最優(yōu)解靠攏,而是采取跳動(dòng)的方式來(lái)尋找,這種方式能夠減小上一代粒子對(duì)下一代粒子的影響,從而能夠更好的進(jìn)行尋優(yōu)。
上文中,Clerc提出的算法是針對(duì)特定的旅行商問(wèn)題,粒子的運(yùn)動(dòng)方式也僅僅適用于存在值序概念的組合優(yōu)化問(wèn)題,而對(duì)Web服務(wù)組合問(wèn)題并不好直接應(yīng)用。通過(guò)分析發(fā)現(xiàn),在Web服務(wù)組合問(wèn)題上,可以對(duì)離散空間的DPSO算法做進(jìn)一步的改進(jìn)。由于Web服務(wù)的各個(gè)抽象服務(wù)之間具有相對(duì)的獨(dú)立性,并且各個(gè)抽象服務(wù)的候選服務(wù)之間相互的關(guān)聯(lián)度也很低,因此在此離散空間的尋優(yōu)問(wèn)題上,粒子由當(dāng)前位置跳到下一位置的過(guò)程中,速度并不像標(biāo)準(zhǔn)粒子群算法那樣有效的影響到尋優(yōu)結(jié)果和收斂速度,因此位置的更新機(jī)理就成為考慮的重點(diǎn)。
為此,提出一種針對(duì)Web服務(wù)組合特點(diǎn)的基于離散空間的位置采取跳動(dòng)方式的改進(jìn)粒子群算法。該算法結(jié)合蟻群算法的思想和遺傳算法的思想,并將三種算法結(jié)合起來(lái),使得算法更加簡(jiǎn)單有效。在蟻群算法中,螞蟻在尋找食物過(guò)程中選擇路線會(huì)傾向于信息濃度較高的一條作為前進(jìn)方向,在整個(gè)群體共同發(fā)揮作用下,能夠一條發(fā)現(xiàn)最優(yōu)解的路徑。所以在粒子群算法中可以引進(jìn)這種思想,使得粒子在更新過(guò)程中,也能夠受到一定的因素影響。但是粒子群算法在搜索過(guò)程中,單個(gè)粒子只會(huì)保留下其最優(yōu)信息,一旦多個(gè)粒子聚集在同一位置,將很難跳出此局部最優(yōu)位置,最終無(wú)法找到全局最優(yōu)解。針對(duì)粒子群算法收斂速度快但容易陷入局部最優(yōu)的特點(diǎn),可以借助遺傳算法的變異策略,對(duì)部分粒子進(jìn)行一定的擾動(dòng),從局部最優(yōu)解跳出,使得搜索空間覆蓋更廣。本文采取的是對(duì)每一個(gè)粒子以一定的概率進(jìn)行變異,并在每一代粒子中都進(jìn)行變異,這樣能有效防止局部最優(yōu)解被保留下來(lái)。
以上通過(guò)對(duì)問(wèn)題以及三種算法的簡(jiǎn)單分析,提出了一種新型的交換粒子群算法公式:
其中a1,a2均為0-1之間的數(shù),Pkbest代表第k代粒子的最好位置,Pkgbest代表第k代所有粒子的最好位置,xk+1代表第k+1代粒子的位置。通過(guò)此公式進(jìn)行更新時(shí),第k+1代粒子將以概率a1取得第k代粒子的最好位置,以概率(1- a1)×a2取得第k代所有粒子的最好位置,以概率(1- a1)×(1-a2)來(lái)選取隨機(jī)的位置。通過(guò)改變a1和a2的值,使得粒子既能夠?qū)ψ陨淼男畔⒁欢ǔ潭壬系谋A?,又能夠不斷更新自身的信息,同時(shí)還可以給粒子帶來(lái)類似遺傳算法中變異的效果,此公式還精簡(jiǎn)了粒子群算法中的更新方式,從而使得該算法對(duì)整個(gè)問(wèn)題的求解變得簡(jiǎn)單而有效。
利用粒子群算法對(duì)Web服務(wù)組合模型進(jìn)行編碼,其主要思想為:將一個(gè)Web服務(wù)組合方案看作是粒子群中一個(gè)飛行的粒子,粒子的維數(shù)代表一個(gè)Web服務(wù)組合的抽象服務(wù)的個(gè)數(shù),而在每一維上的位置則代表了相應(yīng)的候選服務(wù)。這樣,一旦每一個(gè)粒子的維數(shù)以及粒子每一維上的位置確定下來(lái),該粒子就表示了一個(gè)確定的Web服務(wù)組合方案,而粒子在每一維上的位置的變化,則代表Web服務(wù)組合過(guò)程中用來(lái)實(shí)現(xiàn)抽象服務(wù)的候選服務(wù)的變化,每一個(gè)粒子通過(guò)改變?cè)诟骶S上的位置來(lái)更新自身的最優(yōu)解,而全局最優(yōu)解集通過(guò)各個(gè)粒子的最優(yōu)解的更新以及多次迭代來(lái)實(shí)現(xiàn)更新。
粒子的初始化。Web服務(wù)組合的維數(shù)為N,每一維上的候選服務(wù)為M個(gè),先對(duì)每一維的Web抽象服務(wù)進(jìn)行編號(hào),在對(duì)這些抽象服務(wù)的候選服務(wù)進(jìn)行編號(hào),Wi,j代表第i個(gè)抽象服務(wù)的第 j個(gè)候選服務(wù),其中(1≤i≤N,1≤j≤M),再對(duì)每一個(gè)Web服務(wù)給定各個(gè)屬性的初值,將Web服務(wù)的編號(hào),位置和屬性關(guān)聯(lián)起來(lái),通過(guò)編號(hào)即可以獲得每一個(gè)Web服務(wù)相應(yīng)的位置和屬性。每一個(gè)粒子只包含 Web服務(wù)的位置信息,例如粒子信息如下(7,9,3),表示W(wǎng)eb服務(wù)組合中有3個(gè)抽象服務(wù),第1個(gè)抽象服務(wù)選擇其候選服務(wù)中的第7個(gè),第2個(gè)抽象服務(wù)選擇其候選服務(wù)中的第9個(gè),第3個(gè)抽象服務(wù)選擇其候選服務(wù)中的第3個(gè)。粒子的初始位置可以作為粒子的初始最好位置。
適應(yīng)度的計(jì)算。每一個(gè)粒子代表一個(gè) Web服務(wù)組合方案,可以將粒子在各維上的數(shù)據(jù)取出,按照相應(yīng)的Web服務(wù)組合模型方案進(jìn)行計(jì)算,在本文中,Web服務(wù)組合QoS中的時(shí)間和價(jià)格按照簡(jiǎn)單的疊加即可,而可信度和可用性按照疊乘即可,這樣適用度的優(yōu)劣,對(duì)于全局時(shí)間和價(jià)格越低越好,而全局的可信度和可用性則越高越好。
粒子群的初始化及更新,初始化一組粒子群,并將第一個(gè)粒子作為臨時(shí)參考最優(yōu)個(gè)體,對(duì)每一個(gè)粒子進(jìn)行評(píng)價(jià),如果有粒子可以支配臨時(shí)參考最優(yōu)個(gè)體,則用這個(gè)粒子替代臨時(shí)參考最優(yōu)個(gè)體,如果沒(méi)有粒子可以支配臨時(shí)參考最優(yōu)個(gè)體,則不必更新,最后再將不被這個(gè)臨時(shí)參考最優(yōu)解支配的其他解記錄下來(lái)。
最優(yōu)解的保留,將上一步進(jìn)行多次的迭代,將每次記錄下來(lái)的解都放在一個(gè)外部的空間中,因?yàn)樯弦徊街械呐R時(shí)參考最優(yōu)解,具有很強(qiáng)的支配性,因此,不被它支配的解,也不容易被其他的解支配,而經(jīng)過(guò)多次迭代后,這些解最終只會(huì)在這個(gè)外部檔案中被支配,不會(huì)被外部檔案以外的解支配,再將最后一次迭代的臨時(shí)參考最優(yōu)解放入這個(gè)檔案中來(lái)。最后,對(duì)這個(gè)外部空間中的所有解,進(jìn)行排劣操作,將被支配的解從這個(gè)空間中刪除掉,從而外部空間中的解之間不再具備支配關(guān)系,此時(shí)得到的解的集合便是Pareto最優(yōu)解集,從而得到Pareto最優(yōu)組合方案,其他所有的Web服務(wù)組合方案都不會(huì)在服務(wù)質(zhì)量上支配這些方案,從而可以將這些方案推薦給用戶,供用戶選擇。
根據(jù)上面分析,針對(duì)本文所述Web服務(wù)組合問(wèn)題的求解流程圖如圖3所示。
圖3 算法的主要流程
本文實(shí)驗(yàn)的硬件環(huán)境為一臺(tái)pc機(jī),主要配置如下:intel CORE i3處理器,主頻 2.4GHz,內(nèi)存 4G。軟件環(huán)境為windows7操作系統(tǒng)以及Myeclipse8.5,采用java實(shí)現(xiàn)。實(shí)驗(yàn)中的Web服務(wù)的任務(wù)數(shù)為10個(gè),屬性采用模擬方式實(shí)現(xiàn),屬性包括時(shí)間,價(jià)格,可信度以及可靠性,取值范圍分別為:0