楊萬春 張晨曦
(山東交通學(xué)院理學(xué)院 山東 濟(jì)南 250357) 2(同濟(jì)大學(xué)軟件學(xué)院 上海 201804)
隨著交通行業(yè)信息化的發(fā)展和出行方式的多元化,現(xiàn)有研究在交通服務(wù)選擇[1]和交通流預(yù)測[2]等方面開展了大量工作,其中在功能相似的海量服務(wù)資源中挑選交通出行服務(wù)成為智能交通系統(tǒng)的關(guān)鍵。為此,如何將功能單一的服務(wù)按需定制、重新組裝來滿足用戶需求成為當(dāng)下的研究重點(diǎn)。如出行者要去參加國際會議,并在參加國際會議的空閑之余游覽旅游景點(diǎn),需要用到信息搜索、規(guī)劃線路、選擇交通方式、預(yù)訂酒店與景點(diǎn)、支付費(fèi)用、地圖顯示等服務(wù)。服務(wù)質(zhì)量(Quality of Service,QoS)包含多個指標(biāo),用戶在選擇出行服務(wù)的時候,會考慮速度、花費(fèi)、滿意度等非功能屬性?,F(xiàn)有的交通服務(wù)選擇研究大多將各個目標(biāo)聚合為一個單目標(biāo)函數(shù),然后采用數(shù)學(xué)規(guī)劃方法或者啟發(fā)進(jìn)化算法對單目標(biāo)問題進(jìn)行求解。文獻(xiàn)[3]采用蟻群算法進(jìn)行交通出行服務(wù)的選擇。文獻(xiàn)[4]將煙花爆炸算法和變異算子相結(jié)合以應(yīng)用于服務(wù)選擇模型。文獻(xiàn)[5]提出一種混合混沌機(jī)制與Levy變異的改進(jìn)煙花算法,但上述方法無法滿足用戶多目標(biāo)的需求。由于各個指標(biāo)維度之間可能存在矛盾,某個指標(biāo)的改善會引起其他指標(biāo)的惡化,例如可用性高的服務(wù),其價格花費(fèi)就會相應(yīng)提高,這就需要在不同維度指標(biāo)之間進(jìn)行平衡,從而能夠滿足用戶多方位的出行需求。多目標(biāo)優(yōu)化問題不存在使得所有目標(biāo)都達(dá)到最優(yōu)解,其是由Pareto最優(yōu)解或非劣最優(yōu)解構(gòu)成的解集。
現(xiàn)階段已有相關(guān)研究將啟發(fā)式進(jìn)化算法應(yīng)用于服務(wù)的多目標(biāo)選擇問題中,從而達(dá)到Pareto前沿。文獻(xiàn)[6]針對有數(shù)據(jù)依賴的組合服務(wù)構(gòu)建了依賴圖,基于依賴圖設(shè)計了基于集束搜索(beam search)和非支配排序遺傳算法(NSGA-II)的改進(jìn)啟發(fā)式進(jìn)化算法。文獻(xiàn)[7]采用分布估計算法進(jìn)行局部搜索以提高NSGA-II的性能。文獻(xiàn)[8]采用多目標(biāo)遺傳算法來確定一個Pareto最優(yōu)多維邊界,并能夠權(quán)衡相互沖突的目標(biāo)。文獻(xiàn)[9]針對服務(wù)選擇問題,給出了改進(jìn)的多目標(biāo)粒子群算法,在算法中加入了近似距離方法和外部存檔機(jī)制。文獻(xiàn)[10]先對候選服務(wù)進(jìn)行排序優(yōu)化篩選,在此基礎(chǔ)上給出了基于多目標(biāo)粒子群優(yōu)化的云服務(wù)選擇排序系統(tǒng)。文獻(xiàn)[11]提出了ε支配的多目標(biāo)遺傳算法來解決服務(wù)組合優(yōu)化問題。它支持用戶在當(dāng)前服務(wù)失敗時做出靈活的決策或選擇替代方案。文獻(xiàn)[12]給出了混合多目標(biāo)進(jìn)化算法,其將NSGA-II和差分進(jìn)化算法相結(jié)合,其中的差分進(jìn)化算法采用了自適應(yīng)變異算子和交叉算子。文獻(xiàn)[13]給出了基于多目標(biāo)進(jìn)化算法與決策支持的組合優(yōu)化方法。該方法首先應(yīng)用決策支持方法來計算用戶偏好的權(quán)重,然后將計算出來的權(quán)重應(yīng)用于擁擠距離的求解中。以上多目標(biāo)服務(wù)選擇方法采用不同的算法解決了多目標(biāo)服務(wù)選擇問題,但它們都沒有考慮服務(wù)的事務(wù)屬性問題。
針對網(wǎng)絡(luò)環(huán)境的不穩(wěn)定、信息傳輸?shù)牟豢煽康纫蛩?采用事務(wù)處理技術(shù)來保證組合服務(wù)的可靠性和一致性。文獻(xiàn)[14]給出了服務(wù)的事務(wù)屬性定義和規(guī)則。文獻(xiàn)[15]針對事務(wù)性服務(wù)的組合問題,給出了改進(jìn)的遺傳算法。文獻(xiàn)[16]給出了SLA感知的事務(wù)型組合服務(wù)容錯方法。
綜上所述,針對交通出行服務(wù)選擇,現(xiàn)有的研究都是基于服務(wù)的QoS屬性構(gòu)建了多目標(biāo)選擇模型,沒有考慮服務(wù)的事務(wù)屬性?;诜?wù)選擇模型的多目標(biāo)優(yōu)化算法在解集的收斂性、均勻性、廣泛性方面還存在性能不足。本文從QoS和事務(wù)兩個維度建立了服務(wù)優(yōu)化選擇模型,在該模型基礎(chǔ)上,設(shè)計了煙花爆炸算法與啟發(fā)式的差分進(jìn)化算法相結(jié)合的混合優(yōu)化方法,對組合服務(wù)進(jìn)行優(yōu)化選擇,利用外部存檔中的解作為Pareto最優(yōu)解集。該多目標(biāo)優(yōu)化算法將煙花爆炸算法的局部搜索能力以及差分進(jìn)化算法的種群多樣性結(jié)合起來,重新定義了爆炸半徑、交叉與變異算子,具有較好的搜索性能。
服務(wù)選擇問題是首先根據(jù)用戶的需求構(gòu)建抽象服務(wù)流程,然后在候選服務(wù)中選擇具體服務(wù),將選擇出的具體服務(wù)和抽象服務(wù)進(jìn)行綁定。這些候選服務(wù)具有不同的屬性參數(shù)值,因此可形成海量的服務(wù)組合方案。
交通信息服務(wù)的QoS屬性包括花費(fèi)(cost)、及時性(time)、可用性(availability)、可靠性(reliability)、滿意度(satisfaction)等。由于每種QoS屬性的單位或取值范圍不一樣,因此需要在統(tǒng)一的標(biāo)準(zhǔn)下計算QoS屬性。QoS屬性可以分為積極屬性和消極屬性兩類。積極屬性考慮QoS的最大化,如可用性、可靠性、滿意度等,其歸一化公式為式(1)。消極屬性考慮QoS的最小化,如花費(fèi)、及時性等,其歸一化公式為式(2)。
(1)
(2)
式中:q表示QoS屬性;q′表示歸一化后的結(jié)果;qmin表示QoS屬性中的最小值;qmax表示QoS屬性中的最大值。若qmax=qmin,則q′=1。
雖然服務(wù)的組合類型不同,但都可將其分解為順序類型的組合函數(shù)。順序類型的組合服務(wù)由n個組件順序構(gòu)成,其花費(fèi)和及時性具有累加特點(diǎn),而可用性、可靠性和滿意度則具有累乘特點(diǎn),如表1所示。
表1 組合函數(shù)
由于網(wǎng)絡(luò)的動態(tài)性和不穩(wěn)定性,組合服務(wù)在運(yùn)行過程中可能存在服務(wù)失效或異常情況,這會降低組合服務(wù)的可靠性。事務(wù)性組合服務(wù)就是利用事務(wù)處理的方法來保證組合服務(wù)的可靠性和一致性。在文獻(xiàn)[14]中,服務(wù)的事務(wù)屬性包含如下幾類:可補(bǔ)償?shù)氖聞?wù)屬性(c)、可重試的事務(wù)屬性(r)、樞紐事務(wù)屬性(p),及它們的組合cr(可補(bǔ)償+可重試)。組合服務(wù)的事務(wù)屬性由其組成部分的事務(wù)屬性來決定[14]。若該組合服務(wù)的事務(wù)屬性是{p,c,r,cr}之一,則這個組合服務(wù)滿足事務(wù)屬性的要求。為了保證組合服務(wù)的事務(wù)屬性,設(shè)置了事務(wù)優(yōu)先級,cr的優(yōu)先級為L3,c和r的優(yōu)先級都為L2,p的優(yōu)先級為L1,其中L3>L2>L1,并約定c和r不可比較。
本文將及時性、可用性和滿意度作為三個目標(biāo)準(zhǔn)則,希望組合服務(wù)CS的響應(yīng)時間短,可用性與滿意度高。設(shè)置五個QoS約束條件和一個事務(wù)約束條件,A0表示組合服務(wù)的最低可用性,T0表示組合服務(wù)的最大反應(yīng)時間,C0表示組合服務(wù)的最高花費(fèi),R0表示組合服務(wù)的最低可靠性,S0表示組合服務(wù)的最低信譽(yù)度,TP(CS)表示組合服務(wù)的事務(wù)屬性。對于QoS屬性來說,有些是越大越好,有些是越小越好,因此我們統(tǒng)一求Maximum,即在及時性的計算公式前面加負(fù)號。帶約束條件的多目標(biāo)優(yōu)化模型如下:
Maximum(-T(CS),A(CS),S(CS))
s.t.
(1)A(CS)≥A0
(2)T(CS)≤T0
(3)C(CS)≤C0
(4)R(CS)≥R0
(5)S(CS)≥S0
(6)TP(CS)∈{p,c,r,cr}
本文提出的改進(jìn)多目標(biāo)算法采用的是混合優(yōu)化選擇方法,將煙花爆炸算法[17]與差分進(jìn)化算法[18]相結(jié)合,利用外部存檔中的解作為Pareto最優(yōu)解集。
采用一個整數(shù)數(shù)組進(jìn)行編碼,數(shù)組的長度為個體所包含的服務(wù)數(shù),數(shù)組中每個元素的值為對應(yīng)抽象服務(wù)綁定的具體服務(wù)實(shí)例的標(biāo)識。圖1中是6個服務(wù)構(gòu)成的組合服務(wù),其中S[1]3表示第1個抽象服務(wù)選擇了其第3個候選服務(wù)實(shí)例,依此類推。
S[1]3S[2]6S[3]8S[4]10S[5]20S[6]2
煙花彈在空中爆炸會釋放出許多火星,且火星分布在以煙花彈為中心的一定區(qū)域范圍內(nèi)。對于煙花xi,其產(chǎn)生的火星數(shù)目si計算公式為:
(3)
式中:fmin表示種群中最小的適應(yīng)度值;α和m是常數(shù),m用來控制火星個數(shù)。煙花xi爆炸產(chǎn)生的半徑Ai的計算公式如下:
(4)
式中:fmax是種群中適應(yīng)度的最大值;A是常數(shù),用來調(diào)整爆炸半徑的大小。針對組合服務(wù)問題,我們通過變異率來替換半徑大小,即好的煙花爆炸后產(chǎn)生的半徑小,其對應(yīng)組合服務(wù)的變異率就小,差的煙花爆炸后產(chǎn)生的半徑大,其對應(yīng)組合服務(wù)的變異率就大。假設(shè)候選個體集合大小為K,煙花種群的大小為N,要在候選個體集合中選擇N-1個個體進(jìn)入到下一代,對于候選者xi,其被選擇的概率計算公式如下:
(5)
式中:R(xi)為xi到候選個體集合中的其他個體的距離之和。
(6)
式中:d(xi,xj)表示個體xi和xj的距離。在種群集合中,若個體的密度高,則選中該個體的概率就小。
差分進(jìn)化算法(DE)由變異、交叉和選擇操作構(gòu)成。對于第t代種群中的每一個目標(biāo)個體向量Xi(t),其相應(yīng)的變異操作如下:
Vi(t+1)=Xbest(t)+F×(Xr1(t)-Xr2(t))
(7)
式中:r1、r2為隨機(jī)選擇的整數(shù),且與個體i不相同,表示父代種群中兩個不同的個體;Xbest(t)是基向量;F為常數(shù),稱為縮放因子,用來控制差分向量的縮放程度。結(jié)合組合服務(wù)的特點(diǎn),我們設(shè)置變異操作公式中的F=1。假設(shè)有兩個個體Xr1(t)=(S[1]3,S[2]5,S[3]6,S[4]3),Xr2(t)=(S[1]6,S[2]5,S[3]9,S[4]2),將Xr1(t)與Xr2(t)比較,只有第2個服務(wù)相同,所以Xr1(t)-Xr2(t)=(1,0,1,1)。在Xbest(t)+(Xr1(t)-Xr2(t))的計算過程中,對Xbest(t)的第1、3、4個服務(wù)進(jìn)行變異,從而產(chǎn)生變異個體向量Vi(t+1)。
為了增強(qiáng)種群的多樣性,差分進(jìn)化算法將目標(biāo)向量個體Xi(t)與其相應(yīng)的變異個體Vi(t+1)進(jìn)行啟發(fā)式的交叉操作,得到試驗(yàn)個體,即目標(biāo)個體的候選個體Ui(t+1)。
(8)
式中:xij(t)表示父代種群中目標(biāo)個體向量Xi(t)中的第j維分量;vij(t+1)為變異個體Vi(t+1)中的第j維分量;tp(xij(t))表示Xi(t)的第j維分量的事務(wù)屬性。
差分進(jìn)化算法利用優(yōu)勝劣汰的方法來引導(dǎo)算法向全局最優(yōu)解逼近。在選擇操作中,算法首先對試驗(yàn)個體Ui(t+1)和目標(biāo)個體Xi(t)的適應(yīng)度值進(jìn)行計算,然后將二者進(jìn)行比較,并按照式(9)來選擇適應(yīng)度值較優(yōu)的個體進(jìn)入下一代。
(9)
經(jīng)過以上的變異、啟發(fā)式的交叉和選擇操作,種群將進(jìn)化到下一代,該過程反復(fù)循環(huán),直到算法達(dá)到預(yù)定的最大迭代次數(shù)時算法結(jié)束。
本文采用了一種可行解優(yōu)先的法則來處理約束條件,具體內(nèi)容如下:(1) 如果i是可行解,j是不可行解,則i優(yōu)于j;(2) 如果i和j都是可行解,則目標(biāo)函數(shù)適應(yīng)值大的個體較好;(3) 如果i和j都是不可行解,則違反約束力最少的個體較好。可行解的適應(yīng)度值由支配度(Domination Value)與密度(Density)兩個方面共同決定[19]。若i和j的支配度不同,則支配度值大的適應(yīng)度值大;若i和j的支配度相同,則考慮解的密度??尚薪鈏的適應(yīng)度函數(shù)計算公式如下:
Fitness(i)=Domination-Value(i)×Density(i)
(10)
個體i的支配度由其支配其他個體的個數(shù)來決定。個體i擁擠距離的計算方法是:首先針對一個目標(biāo),計算圍繞個體i的最近兩個體的目標(biāo)函數(shù)值差的絕對值,然后用該絕對值除以該目標(biāo)的最大值與最小值的差,得到個體i的一個目標(biāo)距離值,其次計算出個體i所有目標(biāo)的目標(biāo)距離值,最后將i的所有目標(biāo)距離值進(jìn)行平均即得密度,計算公式如下:
(11)
針對不可行解,我們設(shè)置了不可行度閾值α,計算公式如式(12)所示。該閾值能夠在種群中保留一部分目標(biāo)值較好的不可行解,從而達(dá)到由不可行解向可行解演變的目的,防止算法的未成熟收斂。
(12)
式中:T表示迭代次數(shù);v(i)表示個體i違反約束的程度;n為群體規(guī)模。如果i的約束違反度小于給定的閾值,則i的適應(yīng)度值按照式(10)計算,否則按照式(13)計算。
Fitness(i)=-∑vk/Domination-Value(i)
(13)
式中:vk表示個體i違反第k個約束的程度。
算法采用外部存檔來存儲進(jìn)化優(yōu)良個體加入外部存檔[20]。算法開始時外部存檔為空,隨著迭代次數(shù)的增加,那些不被父代個體所支配的試驗(yàn)個體將與外部存檔中的個體依次比較,若試驗(yàn)個體被外部存檔中的個體所支配,則拒絕該試驗(yàn)個體加入到外部存檔中;若試驗(yàn)個體支配外部存檔中的某些個體,則被支配的個體將從外部存檔中剔除;若試驗(yàn)個體與外部存檔中的個體之間互不占優(yōu),則試驗(yàn)個體是一個Pareto解從而加入到外部存檔中。當(dāng)外部存檔的容量達(dá)到最大時,我們采用文獻(xiàn)[20]中基于緊鄰個體間距離值和最小的剔除方法來進(jìn)行處理。該方法首先將新的非支配解加入到外部存檔中,然后求取所有個體與其緊鄰個體之間的距離值,其次求取任一個體左右緊鄰的兩個距離值和,最后剔除距離值和最小的個體。
改進(jìn)的多目標(biāo)優(yōu)化算法通過煙花爆炸與變異算子實(shí)現(xiàn)了局部搜索,同時利用差分進(jìn)化算法使種群具備較好的分布性和擴(kuò)展性,進(jìn)而向Pareto前沿面搜索。
步驟1在解空間內(nèi)隨機(jī)生成滿足事務(wù)屬性要求的n個體來構(gòu)成種群P,創(chuàng)建空的外部存檔NP。
步驟2計算P中每個個體的適應(yīng)度值,從種群P中選出非支配個體來更新NP,t=1。
步驟3若終止條件不滿足,則執(zhí)行步驟4到步驟7,否則轉(zhuǎn)至步驟8。
步驟4利用式(3)和式(4)生成新的種群P1,利用式(10)和式(13)計算新產(chǎn)生個體的適應(yīng)度值,用新個體更新外部存檔NP。
步驟5在種群P1中選擇n個個體構(gòu)成種群P2,個體的選擇概率與其適應(yīng)度值成正比。
步驟6對種群P2中的每個個體利用式(7)、式(8)和式(9)所示的變異及交叉操作生成子代個體,計算新產(chǎn)生個體的適應(yīng)度值,用新個體更新外部存檔NP。
步驟7利用式(5)和式(6)中基于距離的選擇方法選擇n個個體構(gòu)成新的種群,迭代次數(shù)t=t+1,返回步驟3。
步驟8輸出非支配解集NP,并終止算法。
以下通過仿真實(shí)驗(yàn)分析算法的可行性和有效性。實(shí)驗(yàn)環(huán)境為Windows 10,內(nèi)存為8 GB,開發(fā)語言為Python。在交通出行應(yīng)用場景中提取8個抽象服務(wù)構(gòu)成全體抽象服務(wù)集合,并假定流程為順序結(jié)構(gòu),考慮了五種QoS屬性:花費(fèi)、及時性、可用性、可靠性和滿意度。文獻(xiàn)[21]給出了仿真QoS數(shù)據(jù)在取值范圍內(nèi)的生成規(guī)則,文獻(xiàn)[22]中給出的QWS2.0數(shù)據(jù)集收集了網(wǎng)絡(luò)上實(shí)際存在的Web服務(wù)集,這些屬性提供者都是通過標(biāo)準(zhǔn)的測量工具測得的真實(shí)數(shù)據(jù)。百度地圖中針對服務(wù)給出了真實(shí)的評分和滿意度數(shù)據(jù)。本文參考文獻(xiàn)[21-22]與百度地圖中的服務(wù)數(shù)據(jù),得到相應(yīng)的實(shí)驗(yàn)指標(biāo)數(shù)據(jù)。服務(wù)的事務(wù)屬性從{p,c,r,cr}中隨機(jī)選擇。本文從問題規(guī)模、約束強(qiáng)度、迭代次數(shù)三個方面進(jìn)行比較,采用Hypervolume[23]評價指標(biāo)來分析各算法的優(yōu)劣。Hypervolume指標(biāo)能夠?qū)饧氖諗啃?、均勻性、廣泛性進(jìn)行評估,從而給出解集的綜合評估結(jié)果。圖2中虛線所圍的部分即是集合w={w1,w2,w3,w4}的Hypervolume指標(biāo)值HV(w),而個體w5則被集合{w1,w2,w3,w4}所支配。
圖2 Hypervolume指標(biāo)
Hypervolume指標(biāo)值越大表明集合的質(zhì)量越高。為了比較不同的多目標(biāo)優(yōu)化算法的性能,我們?nèi)诤隙鄠€優(yōu)化算法的Hypervolume指標(biāo)值,得到最大的集合wmax,然后利用式(14)計算集合w的HV ratio的值:
HVratio=HV(w)/HV(wmax)
(14)
θ用來表示全局約束的強(qiáng)度。對于積極屬性與消極屬性,分別用式(15)與式(16)計算θ。
(15)
(16)
設(shè)定約束強(qiáng)度為0.2,候選服務(wù)數(shù)量從40增加到120。如表2所示,隨著問題規(guī)模的增長,混合算法始終保持了較高的HV ratio值,優(yōu)于其他算法。當(dāng)候選服務(wù)數(shù)量為120時,混合算法的HV ratio為91.4%,NSGA-II-DE的值為89.3%,MOPSO的值為87.5%,NSGA-II的值為87.1%,GDE的值為78.4%。實(shí)驗(yàn)結(jié)果表明,本文算法在不同的問題規(guī)模情況下均能夠得到較好的解,由此可以驗(yàn)證本文算法在解決大規(guī)模服務(wù)選擇問題上具有可行性和有效性。
表2 候選服務(wù)數(shù)量方面的性能比較
設(shè)置候選服務(wù)數(shù)量為100,約束強(qiáng)度從0.2增長到0.6。隨著約束強(qiáng)度的增大,滿足約束的個體數(shù)量降低。表3所示混合算法的HV ratio值始終保持在90%以上。當(dāng)約束強(qiáng)度為0.6時,混合算法的HV ratio值為91%,NSGA-II-DE的值為88.1%,MOPSO的值為86.2%,NSGA-II的值為85.1%,GDE的值為66.3%。由此可見,混合算法能夠有效地解決強(qiáng)約束情況下的多目標(biāo)服務(wù)選擇問題。
表3 約束強(qiáng)度方面的性能比較
設(shè)置候選服務(wù)數(shù)量為100,約束強(qiáng)度為0.2,迭代次數(shù)從0到400。隨著迭代次數(shù)的增大,算法的HV ratio值都逐漸增大。在圖3中,當(dāng)?shù)?00次時,混合算法的HV ratio值達(dá)到93.1%,NSGA-II-DE的值為91.5%,MOPSO的值為90.6%,NSGA-II的值為87.3%,GDE的值為80.2%。經(jīng)過比較,混合算法能夠收斂到較高值,這說明混合算法求得的Pareto最優(yōu)解能夠很好地逼近理論P(yáng)areto最優(yōu)解。相對于其他算法,混合算法在解集的分布和范圍上具有明顯優(yōu)勢,從而驗(yàn)證了其在多目標(biāo)優(yōu)化選擇問題上的有效性,能夠滿足用戶對算法求解精度的要求。
圖3 迭代次數(shù)方面的性能比較
本文分析了交通出行服務(wù)的QoS和事務(wù)維度屬性,建立了多目標(biāo)服務(wù)優(yōu)化選擇模型。基于該模型,給出基于煙花爆炸與啟發(fā)式差分進(jìn)化的混合優(yōu)化算法。實(shí)驗(yàn)結(jié)果表明,混合優(yōu)化算法有較好的搜索性能,保證種群在進(jìn)化過程中保持良好的分布性和擴(kuò)展性,收斂性好,能夠有效地解決多目標(biāo)服務(wù)優(yōu)化選擇問題。下一步將研究面向交通領(lǐng)域的數(shù)據(jù)密集型服務(wù)的多目標(biāo)選擇問題,并進(jìn)一步改進(jìn)算法的性能。