楊宏偉,薛富城,李 莉
(長春理工大學(xué) 計算機學(xué)院,吉林 長春 130022)
目前解決Web服務(wù)組合問題的方法可以分為兩類:一類是根據(jù)服務(wù)質(zhì)量屬性值(QoS)通過智能算法進行尋優(yōu)求解模型[1];另一種是通過Petri網(wǎng)工具進行建模求解[2]。如果單純采用Petri對服務(wù)組合進行求解,當(dāng)服務(wù)數(shù)量過于龐大時,復(fù)雜度過高;如果單純采用智能算法對QoS模型進行求解時,智能算法大都會在接近最優(yōu)值時陷入局部最優(yōu)值并且不能具體表達出各組合服務(wù)間的邏輯關(guān)系。
在本文中,我們將介紹一種基于Petri網(wǎng)的Web服務(wù)組合模型,并通過麻雀算法對模型進行求解,該方法對解決Web服務(wù)組合問題有良好的效率和準(zhǔn)確度,并且在面對復(fù)雜問題時能更清晰表現(xiàn)出各組合服務(wù)之間的邏輯關(guān)系。本文的主要貢獻如下:
(1)為了清楚地描述服務(wù)之間約束關(guān)系和執(zhí)行邏輯,本文提出了基于Petri的服務(wù)組合模型對組合過程進行建模,將服務(wù)組合所有邏輯關(guān)系在Petri網(wǎng)進行映射,對Petri網(wǎng)的結(jié)構(gòu)和行為進行分析驗證,可對服務(wù)組合的可行性、有效性、邏輯合法性進行驗證以及沖突解決,獲得服務(wù)質(zhì)量更優(yōu)的組合序列;
(2)如果單純采用Petri對服務(wù)組合進行求解,當(dāng)服務(wù)數(shù)量過于龐大時,復(fù)雜度過高,因此在Petri網(wǎng)模型基礎(chǔ)上,本文提出了麻雀(SSA)算法的服務(wù)組合模型,采用自適應(yīng)步長調(diào)節(jié)的方法,避免了算法陷入局部收斂導(dǎo)致局部最優(yōu)的結(jié)果??紤]服務(wù)質(zhì)量可靠性、可用性、執(zhí)行時間、性能和成功率對服務(wù)組合進行多目標(biāo)優(yōu)化,通過Petri網(wǎng)對服務(wù)組合的合法性進行驗證,得出最優(yōu)服務(wù)組合序列。
根據(jù)服務(wù)質(zhì)量屬性(QoS)的方法已經(jīng)受到廣泛的研究關(guān)注。解決大規(guī)模服務(wù)組合問題時,改進的遺傳算法(GA)[3-5]、改進的蟻群優(yōu)化算法(ACO)[6-8]和改進的粒子群優(yōu)化算法[9,10]可以高效解決服務(wù)組合問題。但是這些算法都是將多目標(biāo)問題轉(zhuǎn)化為單目標(biāo)問題,會出現(xiàn)局部最優(yōu)值情況。文獻[11]提出了一種多目標(biāo)蜂群算法的Web服務(wù)組合優(yōu)化方法,文獻[12]中的作者使用改進的萬有引力搜索算法解決問題,文獻[13]提出了一種融合遺傳聚類的可靠Web服務(wù)組合優(yōu)化方法。文獻[14]對基于QoS的Web服務(wù)組合多目標(biāo)算法進行了比較分析。huo等[15]提出了一種Eliteguided多目標(biāo)人工蜂群算法有效解決了Web服務(wù)組合問題。一種改進的遺傳算法(CGA)[16]使用一種真正的編碼方法來解決基于QoS的服務(wù)選擇問題,避免了算法中長染色體的負(fù)面影響。
Petri網(wǎng)建模和模擬的能力非常強大,能夠直觀地表示出系統(tǒng)中的關(guān)系,可以通過網(wǎng)的運行對系統(tǒng)的可達性、活性、有界性進行分析。所以目前很多學(xué)者使用Petri網(wǎng)理論來解決Web服務(wù)組合問題。Groefsema H等[17]使用有色Petri網(wǎng)將服務(wù)組合映射到Kripke結(jié)構(gòu)。Entezari-Maleki等[18]提出了一種基于定時彩色Petri網(wǎng)(TCPN)的模型,用于評估多云環(huán)境中的服務(wù)組合,同時最大程度地減少服務(wù)于組合服務(wù)請求的云數(shù)量。Sha等[19]為了提高服務(wù)發(fā)現(xiàn)的準(zhǔn)確性和效率,提出了一種基于Petri網(wǎng)的面向用戶需求的Web服務(wù)發(fā)現(xiàn)方法。
對于現(xiàn)有的研究,服務(wù)組合問題已取得了一定的成果,但大部分的研究都很少考慮到服務(wù)QoS屬性計算方式與組合順序有密切關(guān)系,較少地考慮了基于QoS屬性評估的同時對服務(wù)組合的合法性、可行性以及服務(wù)執(zhí)行的邏輯合理性的分析驗證。因此本文針對這些問題在基于Petri網(wǎng)的服務(wù)組合方法基礎(chǔ)上結(jié)合改進的麻雀算法對服務(wù)組合進行合法性判斷,并通過邏輯順序?qū)Ψ?wù)組合的QoS進行計算,選擇出最優(yōu)的服務(wù)組合序列。
Petri網(wǎng)[20]的概念是德國科學(xué)家Carl Adam提出的,用于描述系統(tǒng)結(jié)構(gòu)及執(zhí)行邏輯的一種網(wǎng)狀模型。云環(huán)境中存在很多應(yīng)用,通過這些應(yīng)用能夠高效率地完成用戶所提出的請求。所以本文以其中某服務(wù)作為例子,用戶發(fā)出請求R,首先將其分解為多個子任務(wù)R=(Task1,Task2,…,Taskn)完成,其中每個子任務(wù)Taski,(i=1,2,…n)完成某一特定功能。任務(wù)R由該子任務(wù)集合按照一定業(yè)務(wù)邏輯完成任務(wù),在執(zhí)行每個子任務(wù)的過程中,通過服務(wù)發(fā)現(xiàn),每個子任務(wù)Taski,(i=1,2,…n)都可由多個候選原子服務(wù)來完成,假設(shè)子任務(wù)Task有m個候選原子服務(wù)表示為Si=(si1,si2,…,sim),在這些候選服務(wù)集合中,通過對比服務(wù)非功能屬性選擇一個綜合性能最優(yōu)的Web服務(wù)Sik,(k=1,2,…,m)來執(zhí)行子任務(wù)Task。當(dāng)所有的子任務(wù)都選擇了對應(yīng)的原子服務(wù),則可進行服務(wù)組合。通過服務(wù)選擇,計算每個組合服務(wù)的QoS值,最終選擇出性能最優(yōu)的服務(wù)組合方案,最后的組合方案按照請求的一定邏輯順序執(zhí)行。為了完成用戶的請求,需通過服務(wù)組合將每個任務(wù)的相關(guān)特定功能的原子服務(wù)集合進行集成。由于不同服務(wù)之間存在著執(zhí)行邏輯關(guān)系,為了能夠了解服務(wù)之間的相互關(guān)系,本文采用Petri網(wǎng)進行建模對網(wǎng)系統(tǒng)進行動態(tài)分析和驗證。
定義1 定義一個原子服務(wù),其可表示為四元組cs={s_id,s_function,s_type,s_status,s_constr}。其中s_id表示服務(wù)的標(biāo)識,s_function表示服務(wù)具有的執(zhí)行功能,s_type表示服務(wù)類型,s_status表示該服務(wù)狀態(tài),s_constr表示服務(wù)之間約束關(guān)系或者評價指標(biāo)值。
定義2 定義一個服務(wù)組合優(yōu)化Petri網(wǎng)(service composition petri net,SCPN),其由十一元組P={P,T,E,L,I,O,F,Eth,Lth,S,Mcs} 組成,其中當(dāng)且僅當(dāng):
(1)P={p1,p2,…,pm} 表示庫所的有限集合,其中,pi,(i=1,2,…,m)表示候選原子服務(wù)集合的第i個原子服務(wù);
(2)T={t1,t2,…,tn},(n>0)表示變遷的有限集合,其中P∩T=?,P∪T≠?;
(3)E={e1,e2,…,em},(m>0)表示原子服務(wù)響應(yīng)時間評估值的有限集合,表現(xiàn)出服務(wù)組合中原子服務(wù)的執(zhí)行效率;
(4)L={l1,l2,…,lm},(m>0)表示原子服務(wù)失效頻率的有限集合;
(7)F?(P×T)∪(P×T)表示SCPN網(wǎng)有向弧的有限集合;
(8)Eth={eth_1,eth_2,…,eth_m} 表示服務(wù)響應(yīng)時間臨界值的有限集合;
(9)Lth={lth_1,lth_2,…,lth_m} 表示服務(wù)失效頻率臨界值的有限集合;
(11)dom(F)∪cod(F)=P∪T;
麻雀搜索算法(sparrow search algortihm,SSA)是一種受到麻雀覓食和被捕食預(yù)警的新的群體智能算法,它的搜索精度和收斂速度等比其它群體智能算法更為優(yōu)秀,并且其參數(shù)較少,穩(wěn)定性高[21]。麻雀算法可根據(jù)其覓食的過程表示為發(fā)現(xiàn)者-加入者模型,在此基礎(chǔ)模型中還加入預(yù)警報告機制。
在SSA中,模擬麻雀覓食過程獲得優(yōu)化問題的解。由n只麻雀組成的種群可表示為如下形式
(1)
其中,d為問題維數(shù),n是麻雀的數(shù)量,所有麻雀的適應(yīng)度值如下
(2)
其中,f表示適應(yīng)度值。
發(fā)現(xiàn)者一般占到種群的10%~20%,位置更新公式如下
(3)
其中,t代表當(dāng)前迭代次數(shù);α為0到1之間取值的隨機數(shù);T為最大的迭代次數(shù);L表示大小為1*d的單位陣;Q是服從標(biāo)準(zhǔn)正態(tài)分布的隨機數(shù);R0∈[0,1]和YJ∈[0.5,1]分別表示預(yù)警值和安全值。當(dāng)R0 除了發(fā)現(xiàn)者,其余的麻雀都為加入者,并根據(jù)下式進行位置更新 (4) 偵察預(yù)警麻雀占到種群的10%~20%,其位置更新公式如下 (5) 其中,β表示步長參數(shù),取值為一個正態(tài)分布的隨機數(shù),并且均值為0,方差為1;e是無限接近于0的一個常數(shù);K的值在[-1,1]之間隨機確定,表示麻雀飛行的方向;fi表示第i只麻雀的適應(yīng)度值,fg是當(dāng)前種群最佳適應(yīng)度值;fw表示當(dāng)前種群最低適應(yīng)度值。預(yù)警麻雀的位置更新可分為兩種情況:①當(dāng)fi≠fg時,表示當(dāng)前麻雀的位置偏離群體,容易被捕食者獵食,應(yīng)當(dāng)發(fā)出警告,此時算法容易陷入局部最優(yōu),可根據(jù)公式進行調(diào)整;②當(dāng)fi=fg時,表明當(dāng)前麻雀的位置在群體之中,可以通過預(yù)警,及時調(diào)整覓食的搜索路線,避免被捕食者獵食。 步長因子是控制算法收斂的關(guān)鍵。如果步長衰減過快,麻雀搜索算法可能無法獲取最優(yōu)解;反之,麻雀算法可能陷入局部最優(yōu)解。為了使算法獲得更好的優(yōu)化能力,本研究提出了一種動態(tài)改變步長因子的改進方法。在麻雀算法前期,采用較大的步長控制因子來擴大解空間中的整體搜索范圍并加快搜索速度;在優(yōu)化的后期,解空間趨于穩(wěn)定,此時應(yīng)該提高解的精度,減小步長控制因子。基于以上的考慮,本研究對麻雀搜索算法的步長控制因子β進行改進 β=α-0.2·((i+1)/5·Gmax)+0.5),fi (6) β=α,fi≥fpbest (7) 其中,Gmax為最大迭代次數(shù),fi是當(dāng)前適應(yīng)度值,fpbest是歷史最佳適應(yīng)度值,i是當(dāng)前迭代次數(shù),α是默認(rèn)步長因子,β是當(dāng)前步長。 算法流程如圖1所示。 圖1 自適應(yīng)步長麻雀算法流程 服務(wù)組合的評價標(biāo)準(zhǔn)主要是通過服務(wù)各個屬性指標(biāo)對服務(wù)組合性能進行綜合評價。根據(jù)Petri網(wǎng)SCPN的變遷規(guī)則以及各個指標(biāo)計算方法來確定麻雀搜索算法的適應(yīng)度函數(shù)。但在確定適應(yīng)度函數(shù)之前,由于不同的指標(biāo)其標(biāo)準(zhǔn)不同,需對各個指標(biāo)進行標(biāo)準(zhǔn)化。Web服務(wù)QoS的多個屬性對QoS綜合值的正負(fù)影響不同,因此提出了兩種服務(wù)屬性:正服務(wù)屬性和負(fù)服務(wù)屬性。 正服務(wù)屬性:針對本文所考慮的QoS屬性,其中可用性、可靠性、性能以及成功率都屬于正服務(wù)屬性。對于用戶而言,Web服務(wù)的可靠性越高,其QoS值越高,更值得用戶信任。 負(fù)服務(wù)屬性:負(fù)服務(wù)屬性表示屬性的取值與服務(wù)質(zhì)量成反比,比如執(zhí)行時間,執(zhí)行時間越長,用戶的體驗度就會越差,服務(wù)質(zhì)量越低。 為了能夠統(tǒng)一標(biāo)準(zhǔn),便于計算,對QoS各個屬性進行標(biāo)準(zhǔn)化處理,將其值轉(zhuǎn)換至區(qū)間[0,1],其QoS值越大服務(wù)質(zhì)量就越高,標(biāo)準(zhǔn)化處理后的服務(wù)質(zhì)量QoS的二維矩陣表示如式(8)所示 (8) 其中,Qt表示標(biāo)準(zhǔn)化后的矩陣,矩陣的行代表各種QoS屬性值,矩陣的列代表各個屬性的值。矩陣可以適當(dāng)擴展。每當(dāng)添加屬性時,都應(yīng)在矩陣中添加一列。 QoS屬性標(biāo)準(zhǔn)化公式如下 (9) (10) 通過對各個服務(wù)質(zhì)量屬性進行了標(biāo)準(zhǔn)化后,可得到適應(yīng)度函數(shù)公式如式(11)所示 (11) 對于服務(wù)組合的問題中,采用二進制編碼會使得問題更加復(fù)雜,假設(shè)有R個服務(wù)需要進行組合,每個服務(wù)都具有K個候選原子服務(wù),采用二進制編碼的解將有R×K個二進制位,表示成SV={r11,r12,…,r1k;r21,r22,…,r2k;…;rr1,rr2…,rrk}。其解空間過于龐大,對于系統(tǒng)來說在計算的過程中太浪費內(nèi)存和時間。因此本文采用十進制進行編碼大大縮減了解空間,具體編碼方式如下: 假設(shè)Web請求R需要W個子任務(wù)(Task1,Task2,…,Taskw)一起完成,其每個子任務(wù)都需要一個服務(wù)完成,其每個服務(wù)都有一個候選服務(wù)集合Si=(si1,si2,…,sim),(i=1,2,…,w),則編碼方式可表示成SV={r1,r2,…,rk…,rw},由W個整數(shù)組成的解空間,其中,rk∈{1,2,…,m},m∈N*,每個服務(wù)的候選服務(wù)數(shù)量可能不同,因此m的取值也可能不同。 為了驗證本文提出的Petri網(wǎng)模型的可行性,本文采用了Petri的可達標(biāo)識圖分析方法[21]對Petri網(wǎng)TBPN進行動態(tài)性能分析,對于系統(tǒng)服務(wù)執(zhí)行邏輯進行死鎖判斷。為了能夠獲得全局最優(yōu)的服務(wù)組合,本文在Petri網(wǎng)SCPN描述多約束的基礎(chǔ)上,結(jié)合本文提出的SSA算法有效避免了出現(xiàn)復(fù)雜度高或者隨機性大的問題。本研究的作者使用QWS真實數(shù)據(jù)集對順序結(jié)構(gòu)進行了大量實驗[22]。QWS數(shù)據(jù)集是由Guelph大學(xué)的Eyhab Al-Masri教授收集的Web服務(wù)數(shù)據(jù)集。QWS中的所有數(shù)據(jù)集都是從各個服務(wù)網(wǎng)站收集的真實數(shù)據(jù)集。該數(shù)據(jù)集包含2507個實際服務(wù)和9個QoS值。實驗環(huán)境如下:Intel(R)Core(TM)i5-8300H CPU@2.30 GHz 2.30 GHz,16 GB ddr4 2666 MHz memory,64 bit Windows 10 OS,and MATLAB R2015b。 通過可達標(biāo)識圖對SCPN網(wǎng)絡(luò)可達狀態(tài)進行分析。該實例的初始標(biāo)識狀態(tài)為M0={1,0,0,0,0,0,0,0,0},其可達集見表1,其中所有狀態(tài)標(biāo)識供9種,模型標(biāo)識為PBTPN={p1,p2,p3,p4,p5,p6,p7,p8,p9},其每一行代表一個標(biāo)識。 表1 SCPN網(wǎng)可達集合 網(wǎng)絡(luò)可達狀態(tài)分析結(jié)果如圖2所示。 圖2 可達狀態(tài)分析結(jié)果 對BTPN的可達狀態(tài)標(biāo)識圖進行分析,以狀態(tài)序列(M0,M1,M4,M6,M7,M8)為例進行分析,其結(jié)果如下。其中,Stat表示狀態(tài),Tran表示變遷。 (1)M0={1,0,0,0,0,0,0,0,0},Stat={M0},Tran=?; (2)M1={0,1,0,0,0,0,1,0,0},Stat={M0,M1},Tran={t1}; (3)M4={0,0,0,1,0,0,0,0,0},Stat={M0,M1,M4},Trasition={t1,t4}; (4)M6={0,0,0,0,0,0,1,0,0},Status={M0,M1,M4,M6},Trasition={t1,t4,t6}; (5)M7={0,0,0,0,0,0,0,1,0},Status={M0,M1,M4,M6,M7},Trasition={t1,t4,t6,t7}; (6)M8={0,0,0,0,0,0,0,0,1},Status={M0,M1,M4,M6,M7,M8},Trasition={t1,t4,t6,t7,t10}。 從運行結(jié)果可知,從系統(tǒng)最初狀態(tài)M0通過變遷序列總能到達系統(tǒng)結(jié)束狀態(tài)M8,因此網(wǎng)系統(tǒng)不存在死鎖,所有的狀態(tài)都包含所有庫所和變遷,因此該網(wǎng)系統(tǒng)具有活性和全覆蓋性,服務(wù)組合之間邏輯結(jié)構(gòu)具有正確性以及有效性。 本節(jié)實驗用來驗證不同用戶偏好對服務(wù)組合評估的影響,用來對比本文提出的方法在服務(wù)組合優(yōu)化領(lǐng)域的有效性,排除用戶偏好對算法進行組合服務(wù)選擇的干擾性。本文將提出的SSA算法與DPSO算法和文獻[16]中的CGA算法進行對比。本文選取文獻[23]給出20組的不同的用戶偏好進行了實驗對比,實驗參數(shù)為:選取可用性、吞吐量、響應(yīng)時間和可靠性4種QoS屬性,迭代次數(shù)500次,子任務(wù)數(shù)為10,候選服務(wù)集的規(guī)模為100個,用戶偏好的具體值見表2。 表2 用戶體驗 具體實驗結(jié)果見表3,根據(jù)組合服務(wù)的目標(biāo)函數(shù)計算方式,在不同的用戶偏好下,使用改進的SSA算法尋找的組合服務(wù)適應(yīng)度值高于其它算法,本節(jié)實驗可以排除用戶偏好對于SSA算法進行服務(wù)組合的影響。 表3 每個用戶體驗的適應(yīng)度值 本節(jié)將對所提出算法解決服務(wù)組合問題的有效性進行分析。對比使用SSA、DPSO和CGA這3種算法計算適應(yīng)度函數(shù)100次求得的適應(yīng)度值的平均值,適應(yīng)度值大的算法有效性高。選取服務(wù)規(guī)模為n*m,n為服務(wù)請求數(shù),m為候選服務(wù)數(shù)。分別取n為10,20,50;分別選取m為50,100,200,400,800。迭代次數(shù)設(shè)置為100。實驗結(jié)果如圖3~圖5所示。 圖3 n=10時3種算法的平均適應(yīng)度值 圖4 n=20時3種算法的平均適應(yīng)度值 圖5 n=50時3種算法的平均適應(yīng)度值 從實驗結(jié)果圖中得出,無論服務(wù)組合規(guī)模如何增長,SSA始終保持著比另外兩種算法高的平均適應(yīng)度值,說明SSA算法解決服務(wù)組合問題的有效性;當(dāng)問題維度升高時,在n達到50時,SSA仍然有著比另外兩種算法高的平均適應(yīng)度值,表明SSA算法在面對高維度問題時的有效性和高精確性。 智能算法的重要性能指標(biāo)之一就是其收斂性[24]。算法的收斂是指經(jīng)過多步迭代之后得出的數(shù)值不應(yīng)該無限增大, 而是趨于某個數(shù)值,不能收斂的算法是沒有使用價值的。本節(jié)將分析實驗結(jié)果,重點討論SSA算法的收斂性。 為了更清晰表現(xiàn)算法的收斂性,本節(jié)將迭代次數(shù)設(shè)為100,服務(wù)規(guī)模n*m設(shè)為:10*10,20*20,50*50;選取不同規(guī)模服務(wù)組合50次實驗后的平均適應(yīng)度值。實驗結(jié)果如圖6~圖8所示。 圖6 10*10服務(wù)規(guī)模 圖7 20*20服務(wù)規(guī)模 圖8 50*50服務(wù)規(guī)模 從圖6~圖8中可以看出,當(dāng)服務(wù)規(guī)模為10*10、迭代次數(shù)為10時,SSA算法的平均適應(yīng)度值已經(jīng)明顯高于另外兩種算法;隨著迭代次數(shù)的增加,SSA開始收斂,當(dāng)?shù)螖?shù)到達50時,SSA算法已經(jīng)收斂。同理,隨著服務(wù)規(guī)模的增長,SSA在迭代50代左右,同樣會趨于最優(yōu)值。這表明SSA算法有著良好的收斂性能。 智能算法的穩(wěn)定性是在面對復(fù)雜問題時能否準(zhǔn)確得出最優(yōu)值的關(guān)鍵。本節(jié)為了驗證SSA算法解決不同規(guī)模的Web 服務(wù)組合的穩(wěn)定性,將SSA、DPSO和CGA算法在問題維度為10*10、20*20、30*30、40*40和50*50這5種情況下運行50次,記錄各算法所得適應(yīng)度值并計算其標(biāo)準(zhǔn)差。在同等情況下,平均適應(yīng)度值標(biāo)準(zhǔn)差低的,算法穩(wěn)定性強。 從圖9中可以看出,SSA算法的標(biāo)準(zhǔn)差明顯小于另外兩種算法。隨著服務(wù)規(guī)模的增長,3種算法的標(biāo)準(zhǔn)差都在增長,這是因為問題的維度在不斷擴大,算法的穩(wěn)定性都受到了影響。在50*50規(guī)模時,算法的標(biāo)準(zhǔn)差明顯高于在10*10規(guī)模時,但SSA算法仍然低于另外兩種算法,并保持在較低的水平。這表明SSA的算法穩(wěn)定性良好。 圖9 算法標(biāo)準(zhǔn)差 針對Web服務(wù)組合現(xiàn)有的模型單一、無法清楚表示出各服務(wù)組合間的邏輯關(guān)系和當(dāng)問題規(guī)模變復(fù)雜時智能算法效率低下等問題,本文首先提出了基于Petri網(wǎng)的服務(wù)組合模型SCPN網(wǎng),并對所提出的模型進行了可行性驗證。然后提出了基于自適應(yīng)步長調(diào)節(jié)的麻雀搜索算法對模型進行了求解。通過實驗驗證了所提出的SCPN網(wǎng)模型對解決服務(wù)組合問題的可行性,同時驗證了所提出改進的SSA算法具有收斂速度快、搜索精度高、算法性能穩(wěn)定和解決服務(wù)組合問題的有效性。3.2 自適應(yīng)步長調(diào)節(jié)的麻雀搜索算法
3.3 適應(yīng)度函數(shù)設(shè)計
3.4 編碼方式
4 實驗與結(jié)果分析
4.1 實驗環(huán)境
4.2 Petri網(wǎng)系統(tǒng)的服務(wù)組合驗證與分析
4.3 用戶偏好設(shè)置
4.4 有效性分析
4.5 收斂性
4.6 算法穩(wěn)定性
5 結(jié)束語