摘 要:為解決基礎(chǔ)蟻群算法存在的前期搜索速度慢、后期容易陷入局部最優(yōu)解的問題,針對(duì)服務(wù)組合的動(dòng)態(tài)性、不穩(wěn)定性以及非功能屬性限制等情況,提出基于改進(jìn)蟻群算法的 Web 服務(wù)組合優(yōu)化方法首先分別介紹基本蟻群算法和 L-I-ACO 改進(jìn)蟻群算法,再將其應(yīng)用到 Web 服務(wù)組合優(yōu)化建模中,最后通過對(duì)比實(shí)驗(yàn)測試兩種算法的性能。實(shí)驗(yàn)結(jié)果表明,L-I-ACO 改進(jìn)蟻群算法性能較好,它彌補(bǔ)了基礎(chǔ)蟻群算法的不足,提高了動(dòng)態(tài)組合優(yōu)化過程中的準(zhǔn)確率和效率,更利于選取符合客戶要求的服務(wù)
關(guān)鍵詞:改進(jìn)蟻群算法;Web 服務(wù)組合優(yōu)化;動(dòng)態(tài)服務(wù)組合;L-IACO 算法
中圖法分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A
1 引言
動(dòng)態(tài)服務(wù)組合技術(shù)是當(dāng)前的研究熱點(diǎn),在動(dòng)態(tài)服務(wù)組合的整個(gè)流程中,需要選取符合用戶要求的服務(wù),這涉及選取相同屬性的多個(gè)服務(wù)和組合服務(wù)。隨著提供的服務(wù)不斷增多,選取服務(wù)問題的范圍快速擴(kuò)大,因此解決動(dòng)態(tài)服務(wù)組合中的服務(wù)選取問題變得尤為重要[1~2] 。這種解決服務(wù)選取問題被稱為服務(wù)組合優(yōu)化,是一個(gè)NP 難問題。由于Web 服務(wù)或許存在狀態(tài)不穩(wěn)定、服務(wù)非功能屬性經(jīng)常變化等情況,因此動(dòng)態(tài)服務(wù)組合中的服務(wù)選取問題需要一種能夠動(dòng)態(tài)適應(yīng)各種服務(wù)狀態(tài)變化的最優(yōu)算法[3] 。
目前,研究的一些主要方法包括貪心算法、遺傳算法、神經(jīng)網(wǎng)算法等。其中,貪心算法簡單易用,但往往不能得到全局最優(yōu)解;遺傳算法可以較好地處理復(fù)雜的組合優(yōu)化問題,但計(jì)算量較大;神經(jīng)網(wǎng)絡(luò)算法可以快速實(shí)現(xiàn)并具有適應(yīng)性,但對(duì)服務(wù)的不確定性和動(dòng)態(tài)性處理效果有限;傳統(tǒng)的蟻群算法有收斂速度慢和易于停滯等缺點(diǎn),無法很好地解決組合服務(wù)優(yōu)化中存在的多種非功能屬性約束的問題[4~6] 。因此,為解決上述問題,本文使用改進(jìn)蟻群算法進(jìn)行服務(wù)組合優(yōu)化,其不僅性能良好,而且能應(yīng)付Web 服務(wù)的動(dòng)態(tài)特性。其特點(diǎn)是能適應(yīng)動(dòng)態(tài)服務(wù)優(yōu)化,在非功能屬性值計(jì)算過程中可及時(shí)調(diào)整計(jì)算方式,而且需設(shè)參數(shù)少,操作簡單,優(yōu)化速度快,結(jié)果準(zhǔn)確性高。
2 基于改進(jìn)蟻群算法的Web 服務(wù)組合優(yōu)化
2.1 基本蟻群算法描述
蟻群算法(Ant Colony Optimization,ACO) 是由Dorigo 等在1991 年的第一屆歐洲人工生命會(huì)議上提出的一種隨機(jī)搜索算法,該算法是通過模擬大自然中螞蟻尋找食物的過程而得出的[7] 。蟻群算法是仿生優(yōu)化算法的一種,其特點(diǎn)有魯棒性強(qiáng)、并行分布式計(jì)算,以及易與其他方法結(jié)合等。經(jīng)過螞蟻之間互相配合、協(xié)調(diào)工作,在多個(gè)目標(biāo)優(yōu)化問題中找到最好的解決方式。該方法在動(dòng)態(tài)組合規(guī)劃問題、車輛路徑問題和旅行商問題等方面已得到廣泛的應(yīng)用[8] 。
采用蟻群算法處理Web 服務(wù)組合優(yōu)化問題的主要方式是螞蟻的位移過程,用此算法計(jì)算Web 服務(wù)組合優(yōu)化模型時(shí),每當(dāng)螞蟻路過一個(gè)抽象服務(wù)下的CS時(shí)都需要計(jì)算候選CS 的轉(zhuǎn)移概率,候選CS 指螞蟻所在位置的CS 和下一個(gè)AS 中間含有的全部CS。公式所示為該轉(zhuǎn)移概率計(jì)算方法:
2.2 L?I?ACO 算法的設(shè)計(jì)與實(shí)現(xiàn)
2.2.1 L?I?ACO 算法狀態(tài)轉(zhuǎn)移概率
當(dāng)Web 服務(wù)組合需要解決多個(gè)非功能性屬性約束的問題時(shí),隨著循環(huán)次數(shù)不斷增加,基本蟻群算法因其具有收斂速度慢、易于停滯的缺點(diǎn),容易導(dǎo)致信息素在局限的少量路徑上停留,易出現(xiàn)循環(huán)停滯現(xiàn)象。這樣得到的處理結(jié)果只能算是局部優(yōu)化,所以基本蟻群算法無法很好地解決這個(gè)問題[9] 。因此,本文研究了L?I?ACO 改進(jìn)蟻群算法來解決Web 服務(wù)組合優(yōu)化問題。
2.2.2 L?I?ACO 改進(jìn)蟻群算法
一個(gè)抽象服務(wù)含有多個(gè)候選服務(wù)實(shí)例,如圖1 所示,多個(gè)候選服務(wù)存在于2 個(gè)節(jié)點(diǎn)中間。若優(yōu)化處理每一個(gè)路徑,則是一個(gè)十分大的計(jì)算工程,大幅增加了組合優(yōu)化問題的難度。但是,若努力縮小優(yōu)化問題的范圍,將大范圍分解成小范圍,則可降低算法的尋優(yōu)難度。
L?I?ACO 算法從預(yù)計(jì)算部分和隨機(jī)選取尋優(yōu)部分兩個(gè)方面展開計(jì)算,預(yù)計(jì)算部分把近似同類屬性的服務(wù)分到一起,成為一個(gè)節(jié)點(diǎn)并增加限定要求,去掉屬性不相近的服務(wù),以縮小搜索范圍。
給同類屬性分類時(shí),可采用近似值匹配的方法。若把含有n 個(gè)非功能性屬性Q 的服務(wù)設(shè)為s,將代表這些屬性的量化值轉(zhuǎn)換成函數(shù)Q1(s),Q2(s),…,Qn(s),把含有m 個(gè)非功能性屬性Q 的服務(wù)設(shè)為s′,將代表這些屬性的量化值轉(zhuǎn)換成函數(shù)Q′1(s′),Q′2(s′),…Q′m(s′),若s 和s′服務(wù)屬性相似,則n≈m,Q1(s)≈Q′1(s′)…,因此可以計(jì)算這2 個(gè)服務(wù)的指標(biāo),如公式(6)所示:
C(s,s′)= Σ min(n,m)r =1 (Qr(s)-Q′r(s′))2 (6)
可以看出,若s 和s′相似,則C(s,s′)接近于0,因此可以判斷2 個(gè)服務(wù)的近似度。但此方法并不完善,若s 和s′的匹配度接近0,同時(shí)s′和s″的匹配度也接近0,則此時(shí)很難自動(dòng)把該3 個(gè)服務(wù)規(guī)分為一類。這種狀況下,需考慮先把s′和s″分到一類,之后繼續(xù)分配其他服務(wù),待計(jì)算好所有服務(wù)近似匹配分類后,若發(fā)現(xiàn)s″與某一類的大部分服務(wù)匹配度接近0,則可把s″分到這一類。
由于動(dòng)態(tài)服務(wù)組合以及服務(wù)質(zhì)量的諸多因素具有不確定性,因此對(duì)狀態(tài)轉(zhuǎn)移概率的路徑選取進(jìn)行了改變,具體做法如下:首先,采用改變計(jì)算概率值或隨機(jī)的方式選取服務(wù);其次,篩選出不滿足條件的服務(wù),這時(shí)就可采用狀態(tài)轉(zhuǎn)移概率的方式,這一操作可縮小服務(wù)選擇范圍,降低計(jì)算難度,提高計(jì)算速度,詳細(xì)算法如下。
假如最大循環(huán)次數(shù)可用Ncmax 表示;螞蟻個(gè)數(shù)用M 表示;最優(yōu)服務(wù)列表用Lij表示,其中i 和j 代表需要服務(wù)選擇分類的服務(wù)組合中的抽象服務(wù),即Sij 中設(shè)t=0 代表初始化時(shí)間、Nc =0代表循環(huán)控制變量、k =0 代表螞蟻循環(huán)變量。
為解決服務(wù)組合優(yōu)化問題,則需使式(19)中的5個(gè)目標(biāo)函數(shù)都達(dá)到最小,服務(wù)組合優(yōu)化后的解集便是得到的Pareto 最優(yōu)解集。
3 實(shí)驗(yàn)
本實(shí)驗(yàn)在兩種情況下分別測試基本蟻群算法和L?I?ACO 改進(jìn)蟻群算法的Web 服務(wù)組合優(yōu)化的成功率,情況1 是任務(wù)節(jié)點(diǎn)數(shù)是20,服務(wù)數(shù)是48;情況2 是任務(wù)節(jié)點(diǎn)數(shù)是35,服務(wù)數(shù)是110。每種情況測試8 次。結(jié)果如圖2、圖3 所示。
通過分析圖2 和圖3 曲線可得:基本蟻群算法在服務(wù)數(shù)是48 時(shí),隨著迭代次數(shù)的增加,成功率呈波動(dòng)狀態(tài),不穩(wěn)定,且總體成功率都在0.7 以下。當(dāng)服務(wù)數(shù)是110 時(shí),曲線波動(dòng)減少,但是成功率較低且一直沒有超過0.6,說明基本蟻群算法收斂速度慢,容易陷入局部最優(yōu)解,無法高成功率地實(shí)現(xiàn)最終服務(wù)組合優(yōu)化。L?I?ACO 改進(jìn)蟻群算法性能相對(duì)較好,在服務(wù)數(shù)是48 和服務(wù)數(shù)是110 時(shí),都能達(dá)到平均成功率90%以上,雖在迭代初期曲線稍有波動(dòng),但最后都達(dá)到平穩(wěn)高度,證明本文研究的L?I?ACO 改進(jìn)蟻群算法既彌補(bǔ)了基本蟻群算法的不足,又能大幅提高了Web 服務(wù)組合優(yōu)化的成功率。
4 結(jié)束語
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡(luò)上涌現(xiàn)了大量種類繁多的Web 服務(wù),但其中很大一部分Web 服務(wù)提供的功能是相互重疊的,并且這些服務(wù)的功能多數(shù)是小粒度的,難以充分滿足用戶需求。為解決這些問題,Web 服務(wù)組合技術(shù)應(yīng)運(yùn)而生。Web 服務(wù)組合將具有相同功能的Web 服務(wù)合并為集合,并根據(jù)用戶需求選擇組合多個(gè)簡單的Web 服務(wù),以形成新的功能更強(qiáng)大的Web 服務(wù)。本文旨在提出一種高效方法,從眾多的Web 服務(wù)數(shù)據(jù)庫中,選擇出滿足用戶需求且滿足QoS 限制的Web 服務(wù),進(jìn)而組合成更優(yōu)的Web 服務(wù)。本文通過對(duì)基本蟻群算法進(jìn)行改進(jìn),提出了L?I?ACO 改進(jìn)蟻群算法,既彌補(bǔ)了普通蟻群算法的不足,又能高效率、高準(zhǔn)確率地選取滿足客戶需求的Web 服務(wù)組合。
參考文獻(xiàn):
[1] 倪志偉,方清華,李蓉蓉,等.改進(jìn)蟻群算法在基于服務(wù)質(zhì)量的WEB 服務(wù)組合優(yōu)化中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2015,35(8):2238?2243+2279.
[2] 頡斌,楊揚(yáng),王潔瑩.基于MAPREDUCE 改進(jìn)蟻群算法的WEB 服務(wù)組合優(yōu)化[J].微型機(jī)與應(yīng)用,2016,35(8):61?64.
[3] 陳宇鋒.改進(jìn)蟻群算法在WEB 服務(wù)中應(yīng)用與實(shí)現(xiàn)[D].長沙:湖南大學(xué),2019.
[4] 曹騰飛,符云清,鐘明洋.融合遺傳蟻群算法的WEB 服務(wù)組合研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(6):81?85.
[5] 承松,周井泉,常瑞云.混沌蟻群算法的WEB 服務(wù)組合優(yōu)化研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2017,27(2):178?181+186.
[6] 夏亞梅,程渤,陳俊亮,等.基于改進(jìn)蟻群算法的服務(wù)組合優(yōu)化[J].計(jì)算機(jī)學(xué)報(bào),2012,35(2):2270?2281.
[7] 謝琴.蟻群算法在WEB 日志挖掘中的研究與應(yīng)用[D].重慶:重慶大學(xué),2006.
[8] 馬文龍,王錚,趙燕偉.基于改進(jìn)蟻群算法的制造云服務(wù)組合優(yōu)化[J].計(jì)算機(jī)集成制造系統(tǒng),2016,22(1):113?121.
[9] 承松.云計(jì)算環(huán)境下基于蟻群算法的WEB 服務(wù)組合研究[D].南京:南京郵電大學(xué),2017.
[10] 李東星,陳喆,錢雙洋,等.改進(jìn)蟻群算法及其在云服務(wù)組合優(yōu)化中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2017,34(3):13?20+26.
作者簡介:
裴毓( 1989—), 碩士, 助理工程師, 研究方向: 計(jì)算機(jī)網(wǎng)絡(luò)。
計(jì)算機(jī)應(yīng)用文摘·觸控2023年15期