本發(fā)明涉及無線傳感器網(wǎng)絡(luò)中服務(wù)組合領(lǐng)域,更具體地,涉及一種無線多跳傳感器網(wǎng)絡(luò)中分布式服務(wù)組合尋優(yōu)方法。
背景技術(shù):
目前,無線傳感器網(wǎng)絡(luò)應(yīng)用越來越廣泛,涵蓋的節(jié)點(diǎn)數(shù)量越來越多、種類越來越趨于多樣化,且應(yīng)用任務(wù)往往需要依靠多個(gè)節(jié)點(diǎn)協(xié)同完成。比如在智能建筑中由多個(gè)聲音傳感節(jié)點(diǎn)、匯聚節(jié)點(diǎn)、視頻監(jiān)控節(jié)點(diǎn)組成的無線異構(gòu)傳感器網(wǎng)絡(luò)中,對監(jiān)控區(qū)域目標(biāo)進(jìn)行定位、識(shí)別與跟蹤時(shí),就需要多聲音傳感節(jié)點(diǎn)對聲源位置進(jìn)行信息感知,再由匯聚節(jié)點(diǎn)通過多傳感器數(shù)據(jù)識(shí)別發(fā)出聲音的目標(biāo)位置,繼而由視頻監(jiān)控節(jié)點(diǎn)對目標(biāo)進(jìn)行識(shí)別并保持跟蹤。隨著無線傳感器網(wǎng)絡(luò)中異構(gòu)性特點(diǎn)與多樣化應(yīng)用需求越來越突出,如何從網(wǎng)絡(luò)內(nèi)各種分布式節(jié)點(diǎn)中發(fā)現(xiàn)具有特定功能的服務(wù)來滿足應(yīng)用的需求,顯得越來越重要。為實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)中多樣性應(yīng)用服務(wù)的靈活構(gòu)建,基于SOA思想,把各個(gè)無線網(wǎng)絡(luò)節(jié)點(diǎn)功能的服務(wù)化,通過節(jié)點(diǎn)服務(wù)組合與網(wǎng)內(nèi)協(xié)作,從而完成各種分布式應(yīng)用的功能性與非功能性需求。
現(xiàn)有web服務(wù)組合多采用基于中心服務(wù)器的架構(gòu),但與web服務(wù)提供者的可用性與網(wǎng)絡(luò)通信可靠性得到保障不同,無線傳感器網(wǎng)絡(luò)中服務(wù)節(jié)點(diǎn)會(huì)因其計(jì)算資源或能量耗盡而失效、服務(wù)節(jié)點(diǎn)間通信鏈路也是動(dòng)態(tài)變化且通信鏈路容量有限,目前基于中心式架構(gòu)的服務(wù)組合方法容易發(fā)生單點(diǎn)失效。另外,在傳感器網(wǎng)絡(luò)中服務(wù)組合尋優(yōu)方法相關(guān)研究方面,已公開成果“一種在無線自組織網(wǎng)絡(luò)中組合服務(wù)的執(zhí)行路徑的發(fā)現(xiàn)方法”(孫未未;任剛;何震瀛;荊一楠;余平,CN200710170788.0),其發(fā)現(xiàn)過程并為考慮自組網(wǎng)節(jié)點(diǎn)可用能量受限問題,且 服務(wù)發(fā)現(xiàn)過程繁瑣,效率較低;已公開成果“一種自組織網(wǎng)絡(luò)上的組合服務(wù)執(zhí)行路徑的選擇方法”(孫未未;陳煒于;何震瀛;王雪平;覃泳睿,CN200710170785.7),該方法采用中心式服務(wù)發(fā)現(xiàn)與服務(wù)組合選擇優(yōu)化方法,容易發(fā)生單點(diǎn)失效。
為此,本發(fā)明提出了一種應(yīng)用于無線傳感器網(wǎng)絡(luò)環(huán)境的分布式服務(wù)組合尋優(yōu)方法,無需中心節(jié)點(diǎn),針對用戶任務(wù)需求,通過分布式搜索并綜合考慮服務(wù)節(jié)點(diǎn)可用能源與網(wǎng)絡(luò)通信延遲等問題,提高了服務(wù)組合尋優(yōu)搜索效率,并得到能滿足應(yīng)用服務(wù)質(zhì)量需求的最佳節(jié)點(diǎn)組合。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種應(yīng)用于無線傳感器網(wǎng)絡(luò)中的分布式服務(wù)組合高效尋優(yōu)方法,采用圖模型對網(wǎng)絡(luò)節(jié)點(diǎn)服務(wù)與用戶應(yīng)用任務(wù)請求進(jìn)行建模描述,各節(jié)點(diǎn)服務(wù)無需在中心服務(wù)節(jié)點(diǎn)進(jìn)行注冊??紤]無線傳感器網(wǎng)絡(luò)中服務(wù)節(jié)點(diǎn)可用能源與網(wǎng)絡(luò)通信延遲等問題,將服務(wù)合成問題變換為一個(gè)能耗與通信代價(jià)組合尋優(yōu)的優(yōu)化問題,并采用基于廣度優(yōu)先回溯樹的分布式方法進(jìn)行搜索尋找最優(yōu)組合方案。
為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為:
提供一種無線傳感器網(wǎng)絡(luò)中分布式服務(wù)組合尋優(yōu)方法,其特征在于,該方法采用圖模型對網(wǎng)絡(luò)節(jié)點(diǎn)服務(wù)與用戶應(yīng)用任務(wù)請求進(jìn)行建模描述,將任務(wù)請求拆分成兩個(gè)特別節(jié)點(diǎn)nstart,nend,兩節(jié)點(diǎn)的服務(wù)描述為:Sstart:{φ,inputT},Send:{outputT,φ},那服務(wù)組合請求演變?yōu)閷ふ乙粭l從節(jié)點(diǎn)nend回溯,到節(jié)點(diǎn)nstart結(jié)束的最優(yōu)服務(wù)路徑,以nend為根服務(wù)請求節(jié)點(diǎn),采用廣度優(yōu)先的回溯方法尋找最優(yōu)服務(wù)節(jié)點(diǎn)組合,具體包含以下步驟:
步驟1,服務(wù)請求擴(kuò)散階段;
步驟2,廣度優(yōu)先回溯搜索尋優(yōu)階段。
進(jìn)一步的,所述步驟1包括:
步驟1.1,以nend為根服務(wù)請求節(jié)點(diǎn),開始回溯搜索過程,向其鄰居節(jié)點(diǎn)廣播初始服務(wù)請求數(shù)據(jù)包Packet1,尋找一條到達(dá)源節(jié)點(diǎn)nstart的服務(wù)路由,初始服務(wù)請求數(shù)據(jù)包格式,該服務(wù)請求數(shù)據(jù)包包括以下信息,根節(jié)點(diǎn)nend服務(wù)Send:{outputT,φ}以及源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},服務(wù)組合尋優(yōu)約束值DT、ET;
為避免數(shù)據(jù)包大量重復(fù)轉(zhuǎn)發(fā)浪費(fèi)網(wǎng)絡(luò)資源,采用三步握手轉(zhuǎn)發(fā)機(jī)制:1)轉(zhuǎn)發(fā)節(jié)點(diǎn)將轉(zhuǎn)發(fā)數(shù)據(jù)包映射為概要元數(shù)據(jù),并先將元數(shù)據(jù)發(fā)送給周圍鄰居節(jié)點(diǎn);2)鄰居節(jié)點(diǎn)根據(jù)元數(shù)據(jù)信息判斷是否已經(jīng)接收相同數(shù)據(jù),若有,則丟棄;若無,則返回REQ請求消息給轉(zhuǎn)發(fā)節(jié)點(diǎn);3)轉(zhuǎn)發(fā)節(jié)點(diǎn)將原始數(shù)據(jù)包發(fā)送給返回REQ請求消息的鄰居節(jié)點(diǎn);
每個(gè)節(jié)點(diǎn)維護(hù)服務(wù)路由表SerRoute_Table,該表項(xiàng)包括:源節(jié)點(diǎn)服務(wù)、本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level、上一級(jí)服務(wù)節(jié)點(diǎn)ID、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay、服務(wù)搜索是否完成標(biāo)志;
步驟1.2,網(wǎng)絡(luò)中根服務(wù)請求節(jié)點(diǎn)nend各鄰居節(jié)點(diǎn)ni接收到初始服務(wù)請求數(shù)據(jù)包,首先進(jìn)行是否滿足通信延遲與可用能量約束的判定:
1)計(jì)算該節(jié)點(diǎn)到根服務(wù)請求節(jié)點(diǎn)nend通信延時(shí),若Total_ComDelayi>DT則表示到達(dá)所允許的擴(kuò)散邊界,直接丟棄服務(wù)請求數(shù)據(jù)包;
2)若Total_ComDelayi≤DT,計(jì)算其可用能量是否大于約束值ET,若則直接向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1;
若Total_ComDelayi≤DT且計(jì)算服務(wù)si:{inputi,outputi,fi,metadatai}與請求數(shù)據(jù)包中根節(jié)點(diǎn)服務(wù)Send:{outputT,φ}以及源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT}的匹配程度:
If outputT=outputi,則表示節(jié)點(diǎn)ni輸出與根節(jié)點(diǎn)服務(wù)輸入匹配,節(jié)點(diǎn)ni的服務(wù)路由表SerRoute_Tablei新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level,上一級(jí)服務(wù)節(jié)點(diǎn)ID=nend、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyi,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayi,服務(wù)搜索是否完成標(biāo)志flag;其中,若inputi≠inputT,服務(wù)請求完成標(biāo)志flag=0,否則,flag=1;匹配結(jié)束后節(jié)點(diǎn)ni向其鄰居節(jié)點(diǎn)繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1;If outputT≠outputi,則表示節(jié)點(diǎn)ni數(shù)據(jù)輸出與根節(jié)點(diǎn)服務(wù)輸入不匹配,直接轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1到其鄰居節(jié)點(diǎn);
步驟1.3,網(wǎng)絡(luò)中下游節(jié)點(diǎn)接收到初始服務(wù)請求數(shù)據(jù)包Packet1并完成步驟1.2所述處理后,向其鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)初始服務(wù)請求數(shù)據(jù)包,直到到達(dá)擴(kuò)散邊界,該擴(kuò)散邊界由服務(wù)節(jié)點(diǎn)組合總通信延遲上限D(zhuǎn)T決定,接收轉(zhuǎn)發(fā)節(jié)點(diǎn)判斷若Total_ComDelay>DT,則丟棄不轉(zhuǎn)發(fā);
步驟1.4,經(jīng)過步驟1.1到步驟1.3的過程,根服務(wù)請求節(jié)點(diǎn)獲取其服務(wù)組合集中第1級(jí)(Ser_Level=1)所有服務(wù)節(jié)點(diǎn)ID,并開始第二階段的廣度優(yōu)先回溯搜索,獲取最優(yōu)服務(wù)節(jié)點(diǎn)組合。
進(jìn)一步的,所述步驟2包括:
步驟2.1,按廣度優(yōu)先搜索原則,第1級(jí)服務(wù)節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)ni作為新的搜索發(fā)起節(jié)點(diǎn),該節(jié)點(diǎn)ni隨后向網(wǎng)絡(luò)廣播新的服務(wù)請求數(shù)據(jù)包Packet2,該數(shù)據(jù)包格式,包括:本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level,本服務(wù)節(jié)點(diǎn)ID,本節(jié)點(diǎn)服務(wù)si:{inputi,outputi},源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},上一級(jí)服務(wù)節(jié)點(diǎn)ID,到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyi,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayi,服務(wù)組合尋優(yōu)約束值DT、ET;
步驟2.2,網(wǎng)絡(luò)中節(jié)點(diǎn)nk接收到Packet2后,根據(jù)自身提供的服務(wù)sk:{inputk,outputkfk,metadatak},按照步驟1.2到步驟1.3,首先進(jìn)行約束條件是否滿足判定 計(jì)算,其次計(jì)算與上一級(jí)節(jié)點(diǎn)服務(wù)si:{inputi,outputi}的服務(wù)匹配度,并繼續(xù)轉(zhuǎn)發(fā)Packet2;在計(jì)算服務(wù)匹配度過程中,如果outputk=inputi,則代表與上一級(jí)節(jié)點(diǎn)服務(wù)si匹配并成為第二級(jí)服務(wù)節(jié)點(diǎn)集成員,并在其服務(wù)路由表SerRoute_Tablek新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=2,上一級(jí)服務(wù)節(jié)點(diǎn)ID=ni、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyk,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayk,服務(wù)搜索是否完成標(biāo)志flag;同時(shí),后續(xù)搜索輪次中,如果節(jié)點(diǎn)收到的服務(wù)請求數(shù)據(jù)包含有相同的服務(wù)匹配項(xiàng)inputi,則直接丟棄該數(shù)據(jù)包;
步驟2.3,按廣度優(yōu)先搜索原則,第2級(jí)服務(wù)節(jié)點(diǎn)集中各個(gè)節(jié)點(diǎn)發(fā)起下一級(jí)搜索,搜索過程按照步驟2.1至步驟2.2進(jìn)行;
步驟2.4,依據(jù)廣度優(yōu)先原則,重復(fù)步驟2.1、步驟2.3,直到服務(wù)搜索過程最終匹配到源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},搜索過程完成需滿足以下條件:即某服務(wù)節(jié)點(diǎn)nu所提供服務(wù)su:{inputu,outputu,fu,metadatau}滿足inputu=inputT,該節(jié)點(diǎn)nu發(fā)送服務(wù)請求完成數(shù)據(jù)包finish_packetu給根服務(wù)請求節(jié)點(diǎn),包括:本服務(wù)節(jié)點(diǎn)ID、服務(wù)請求完成標(biāo)志flag,所屬服務(wù)級(jí)數(shù)Ser_Level,服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelayu以及平均可用能量Avr_AvaEnergyu;根服務(wù)請求節(jié)點(diǎn)nend接收到服務(wù)請求完成數(shù)據(jù)包finish_packetu,將服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelayu以及平均可用能量Avr_AvaEnergyu進(jìn)行歸一化處理并計(jì)算綜合評價(jià)值:
OPTu=μ·Avr_AvaEnergyu-λ·Total_ComDelayu (2)
整個(gè)服務(wù)組合搜索尋優(yōu)過程中,根服務(wù)節(jié)點(diǎn)會(huì)收到多個(gè)服務(wù)節(jié)點(diǎn)返回的服務(wù)請求完成數(shù)據(jù)包,均按公式(2)計(jì)算通信延時(shí)和評價(jià)可用能量綜合評價(jià)值,選擇綜合評價(jià)值最大的服務(wù)節(jié)點(diǎn)組合作為最優(yōu)組合,分布式服務(wù)組合搜索尋優(yōu)過程結(jié)束。
本發(fā)明的有益效果是:所提出的一種無線多跳傳感器網(wǎng)絡(luò)中分布式服務(wù)組合尋優(yōu)方法,解決了中心式服務(wù)組合尋優(yōu)方法容易發(fā)生單點(diǎn)失效且對網(wǎng)絡(luò)動(dòng)態(tài)變化適應(yīng)度低的問題。該方法采用廣度優(yōu)先回溯搜索尋優(yōu)算法,其搜索效率比深度優(yōu)先逐條路徑回溯搜索方法明顯提升;在尋優(yōu)過程中結(jié)合服務(wù)節(jié)點(diǎn)組合通信時(shí)延與可用能量約束條件,將部分不滿足約束條件服務(wù)節(jié)點(diǎn)組合篩除,有效抑制了搜索尋優(yōu)規(guī)模;采用三步握手轉(zhuǎn)發(fā)機(jī)制,有效抑制了數(shù)據(jù)包廣播重復(fù)轉(zhuǎn)發(fā)規(guī)模;采用了總通信時(shí)延與平均可用能量兩項(xiàng)指標(biāo)綜合評價(jià)服務(wù)節(jié)點(diǎn)組合性能,保障了服務(wù)質(zhì)量與可靠性。
附圖說明
圖1是本發(fā)明的分布式服務(wù)組合尋優(yōu)過程示意圖
圖2是本發(fā)明的初始服務(wù)請求數(shù)據(jù)包Packet1格式圖
圖3是本發(fā)明的服務(wù)路由表SerRoute_Table格式圖
圖4是本發(fā)明的中間節(jié)點(diǎn)服務(wù)請求數(shù)據(jù)包Packet2格式圖
圖5是本發(fā)明的服務(wù)請求完成數(shù)據(jù)包finish_packet格式圖
圖6是本發(fā)明的實(shí)施例自組網(wǎng)拓?fù)浣Y(jié)構(gòu)圖
圖7是本發(fā)明的分布式服務(wù)組合方法實(shí)施實(shí)例圖
具體實(shí)施方式
下面結(jié)合附圖,對優(yōu)選實(shí)施例作詳細(xì)說明。應(yīng)該說明的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。
整個(gè)無線自組網(wǎng)絡(luò)可表示為一個(gè)圖模型G={V,E},其中V={n1,n2,…,nm}, 其中網(wǎng)絡(luò)節(jié)點(diǎn)ni提供服務(wù)si可按如下方式建模:
si={inputi,outputi,fi,metadatai}
其中,inputi/outputi為服務(wù)si的輸入集/輸出集,fi為輸入/輸出的變換函數(shù),metadatai為描述服務(wù)si的元數(shù)據(jù),包括節(jié)點(diǎn)可用能量、計(jì)算與存儲(chǔ)資源等。
對于給定的用戶應(yīng)用任務(wù)請求T,表示為{inputT,outputT},搜尋滿足以下條件服務(wù)節(jié)點(diǎn)組合:
其中,G表示自組網(wǎng)節(jié)點(diǎn)圖模型,T為用戶任務(wù)請求。V′表示共同承擔(dān)任務(wù)T的服務(wù)節(jié)點(diǎn)集合,為V的一個(gè)子集。Total_ComDelay表示服務(wù)集V′中各網(wǎng)絡(luò)節(jié)點(diǎn)共同承擔(dān)任務(wù)T時(shí)的總通信延時(shí),Total_ComDelay≤DT表示總通信延時(shí)不能超過DT;Avr_AvaEnergy表示服務(wù)集V′中各網(wǎng)絡(luò)節(jié)點(diǎn)的平均可用能量,表示服務(wù)集中網(wǎng)絡(luò)節(jié)點(diǎn)最低可用能量不能少于ET。OPT=μ·Avr_AvaEnergy-λ·Total_ComDelay為服務(wù)集V′中各網(wǎng)絡(luò)節(jié)點(diǎn)的總通信驗(yàn)收與平均可用能量的綜合評價(jià)值,尋找一個(gè)綜合評價(jià)值最大的最優(yōu)服務(wù)集V′,其中λ,μ可由人工經(jīng)驗(yàn)值確定,Total_ComDelay、Avr_AvaEnergy在綜合計(jì)算前進(jìn)行歸一化處理。參見圖1,將任務(wù)請求拆分成兩個(gè)特別節(jié)點(diǎn)nstart,nend,兩節(jié)點(diǎn)的服務(wù)描述為:Sstart:{φ,inputT},Send:{outputT,φ},那服務(wù)組合請求演變?yōu)閷ふ乙粭l從節(jié)點(diǎn)nend回溯,到節(jié)點(diǎn)nstart結(jié)束的最優(yōu)服務(wù)路徑。那么以nend為根服務(wù)請求節(jié)點(diǎn),利用廣度優(yōu)先的回溯方法尋找最優(yōu)服務(wù)節(jié)點(diǎn)組合。
進(jìn)一步的,如圖6所示,由10個(gè)無線節(jié)點(diǎn)構(gòu)成傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),其中T節(jié)點(diǎn)是服務(wù)請求節(jié)點(diǎn)。參見圖7,各節(jié)點(diǎn)輸入輸出參數(shù)以及可用能量(PA,Power Available)給定,節(jié)點(diǎn)可用能量上限為5,現(xiàn)有任務(wù)T給定輸入A與輸出F,服務(wù)節(jié)點(diǎn)組合最小能量級(jí)別ET=3,服務(wù)節(jié)點(diǎn)組合通信延遲不超過60ms(通 信延時(shí)主要受跳數(shù)影響,假定每跳通信延時(shí)10ms計(jì)算,則總跳數(shù)不超過6跳)。滿足任務(wù)要求的分布式服務(wù)組合尋優(yōu)過程如下:
第一階段:服務(wù)請求擴(kuò)散階段:
Step1.1:以nend為根服務(wù)請求節(jié)點(diǎn),開始回溯搜索過程,向其鄰居節(jié)點(diǎn)廣播初始服務(wù)請求數(shù)據(jù)包Packet1,尋找一條到達(dá)源節(jié)點(diǎn)nstart的服務(wù)路由,初始服務(wù)請求數(shù)據(jù)包格式如圖2所示,該服務(wù)請求數(shù)據(jù)包包括以下信息:根節(jié)點(diǎn)nend服務(wù)Send:{outputT,φ}以及源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},服務(wù)組合尋優(yōu)約束值DT、ET,。其中,DT=60ms、ET=3。
為避免數(shù)據(jù)包大量重復(fù)轉(zhuǎn)發(fā)浪費(fèi)網(wǎng)絡(luò)資源,采用三步握手轉(zhuǎn)發(fā)機(jī)制:1)轉(zhuǎn)發(fā)節(jié)點(diǎn)將轉(zhuǎn)發(fā)數(shù)據(jù)包映射為概要元數(shù)據(jù),并先將元數(shù)據(jù)發(fā)送給周圍鄰居節(jié)點(diǎn);2)鄰居節(jié)點(diǎn)根據(jù)元數(shù)據(jù)信息判斷是否已經(jīng)接收相同數(shù)據(jù),若有,則丟棄;若無,則返回REQ請求消息給轉(zhuǎn)發(fā)節(jié)點(diǎn);3)轉(zhuǎn)發(fā)節(jié)點(diǎn)將原始數(shù)據(jù)包發(fā)送給返回REQ請求消息的鄰居節(jié)點(diǎn)。
每個(gè)節(jié)點(diǎn)維護(hù)服務(wù)路由表SerRoute_Table,該路由表格式如圖3所示,其表項(xiàng)包括:源節(jié)點(diǎn)服務(wù)、本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level、上一級(jí)服務(wù)節(jié)點(diǎn)ID、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay、服務(wù)搜索是否完成標(biāo)志。
Step1.2:網(wǎng)絡(luò)中根服務(wù)請求節(jié)點(diǎn)nend各鄰居節(jié)點(diǎn)ni,比如鄰居節(jié)點(diǎn)5、6接收到初始服務(wù)請求數(shù)據(jù)包,首先進(jìn)行是否滿足通信延遲與可用能量約束的判定:
1)計(jì)算該節(jié)點(diǎn)到根服務(wù)請求節(jié)點(diǎn)nend通信延時(shí),若Total_ComDelayi>DT則表示到達(dá)所允許的擴(kuò)散邊界,直接丟棄服務(wù)請求數(shù)據(jù)包;在本實(shí)施例中,分別計(jì)算上述兩個(gè)節(jié)點(diǎn)5、6到根服務(wù)請求節(jié)點(diǎn)nend通信延時(shí),Total_ComDelay5=10ms,Total_ComDelay6=10ms,未超出通信延遲約束。
2)若Total_ComDelayi≤DT,計(jì)算其可用能量是否大于約束值ET,若則直接向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1;具體的,在本實(shí)施例中,分別計(jì)算上述兩個(gè)節(jié)點(diǎn)5、6可用能量是否滿足約束條件,其中節(jié)點(diǎn)6的可用能量PA6=2低于最低可用能量ET=3,則該節(jié)點(diǎn)不能作為服務(wù)組合節(jié)點(diǎn),直接向其他鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)初始服務(wù)請求數(shù)據(jù)包。
方法中,若Total_ComDelayi≤DT且計(jì)算服務(wù)si:{inputi,outputi,fi,metadatai}與請求數(shù)據(jù)包中根節(jié)點(diǎn)服務(wù)Send:{outputT,φ}以及源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT}的匹配程度:
If outputT=outputi,則表示節(jié)點(diǎn)ni輸出與根節(jié)點(diǎn)服務(wù)輸入匹配,節(jié)點(diǎn)ni的服務(wù)路由表SerRoute_Tablei新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level,上一級(jí)服務(wù)節(jié)點(diǎn)ID=nend、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyi,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayi,服務(wù)搜索是否完成標(biāo)志flag。其中,若inputi≠inputT,服務(wù)請求完成標(biāo)志flag=0,否則,flag=1。匹配結(jié)束后節(jié)點(diǎn)ni向其鄰居節(jié)點(diǎn)繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1;
If outputT≠outputi,則表示節(jié)點(diǎn)ni數(shù)據(jù)輸出與根節(jié)點(diǎn)服務(wù)輸入不匹配,直接轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1到其鄰居節(jié)點(diǎn),具體表現(xiàn)在實(shí)施例中,如下:
3)計(jì)算節(jié)點(diǎn)5自身服務(wù)與服務(wù)組合請求的匹配程度,output5=F與outputT=F匹配。那么節(jié)點(diǎn)5在其服務(wù)路由表中新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=1,上一級(jí)服務(wù)節(jié)點(diǎn)ID=nend、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy5=3,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay5=10ms,服務(wù)搜索是否完成標(biāo)志flag=0。匹配結(jié)束后節(jié)點(diǎn)ni向其鄰居節(jié)點(diǎn)繼續(xù)轉(zhuǎn)發(fā)數(shù)據(jù)包Packet1;
Step1.3:網(wǎng)絡(luò)中下游節(jié)點(diǎn)接收到初始服務(wù)請求數(shù)據(jù)包Packet1并完成Step1.2 所述處理后,向其鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)初始服務(wù)請求數(shù)據(jù)包,直到到達(dá)擴(kuò)散邊界。該擴(kuò)散邊界由服務(wù)節(jié)點(diǎn)組合總通信延遲上限D(zhuǎn)T決定,接收轉(zhuǎn)發(fā)節(jié)點(diǎn)判斷若Total_ComDelay>DT,則丟棄不轉(zhuǎn)發(fā)。
Step1.4:經(jīng)過Step1.1->Step1.3所述過程,獲取服務(wù)節(jié)點(diǎn)組合方案中第1級(jí)(Ser_Level=1)所有服務(wù)節(jié)點(diǎn)ID,本實(shí)施例中即是節(jié)點(diǎn)5與節(jié)點(diǎn)4。節(jié)點(diǎn)4新增一條服務(wù)路由表記錄如下:源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=1,上一級(jí)服務(wù)節(jié)點(diǎn)ID=nend、到根節(jié)點(diǎn)服務(wù)路由平均可用能量4,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)20ms(到根服務(wù)節(jié)點(diǎn)實(shí)際通信跳數(shù)為2跳),服務(wù)搜索是否完成標(biāo)志flag=0。節(jié)點(diǎn)5與節(jié)點(diǎn)4開始第二階段的廣度優(yōu)先回溯搜索,獲取最優(yōu)服務(wù)節(jié)點(diǎn)組合。
第二階段:廣度優(yōu)先回溯搜索尋優(yōu)階段
Step2.1:按廣度優(yōu)先搜索原則,第1級(jí)服務(wù)節(jié)點(diǎn)中每個(gè)節(jié)點(diǎn)ni作為新的搜索發(fā)起節(jié)點(diǎn),該節(jié)點(diǎn)ni隨后向網(wǎng)絡(luò)廣播新的服務(wù)請求數(shù)據(jù)包Packet2,該數(shù)據(jù)包格式如圖4所示,包括:本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level,本服務(wù)節(jié)點(diǎn)ID,本節(jié)點(diǎn)服務(wù)si:{inputi,outputi},源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},上一級(jí)服務(wù)節(jié)點(diǎn)ID,到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyi,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayi,服務(wù)組合尋優(yōu)約束值DT、ET。本實(shí)施例中,選第1級(jí)服務(wù)節(jié)點(diǎn)中節(jié)點(diǎn)5與節(jié)點(diǎn)4作為新的搜索發(fā)起節(jié)點(diǎn),上述節(jié)點(diǎn)分別向網(wǎng)絡(luò)廣播新的服務(wù)請求數(shù)據(jù)包Packet2,以節(jié)點(diǎn)5為例,包括:本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=1,本服務(wù)節(jié)點(diǎn)ID=5,本節(jié)點(diǎn)服務(wù)s5:{E,F},源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},上一級(jí)服務(wù)節(jié)點(diǎn)ID=nend,到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy5=3,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay5=10ms,服務(wù)組合尋優(yōu)約束值DT=60ms、ET=3。
Step2.2:網(wǎng)絡(luò)中節(jié)點(diǎn)nk接收到Packet2后,根據(jù)自身提供的服務(wù)sk:{inputk, outputkfk,metadatak},按照Step1.2->Step1.3所述步驟,首先進(jìn)行約束條件是否滿足判定計(jì)算,其次計(jì)算與上一級(jí)節(jié)點(diǎn)服務(wù)si:{inputi,outputi}的服務(wù)匹配度,并繼續(xù)轉(zhuǎn)發(fā)Packet2;在計(jì)算服務(wù)匹配度過程中,如果outputk=inputi,則代表與上一級(jí)節(jié)點(diǎn)服務(wù)si匹配并成為第二級(jí)服務(wù)節(jié)點(diǎn)集成員,并在其服務(wù)路由表SerRoute_Tablek新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=2,上一級(jí)服務(wù)節(jié)點(diǎn)ID=ni、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergyk,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelayk,服務(wù)搜索是否完成標(biāo)志flag。同時(shí),后續(xù)搜索輪次中,如果節(jié)點(diǎn)收到的服務(wù)請求數(shù)據(jù)包含有相同的服務(wù)匹配項(xiàng)inputi,則直接丟棄該數(shù)據(jù)包。
體現(xiàn)在本實(shí)施例中,網(wǎng)絡(luò)中節(jié)點(diǎn)接收到節(jié)點(diǎn)5廣播的Packet2后,根據(jù)自身提供的服務(wù),按照Step1.2->Step1.3所述步驟,首先進(jìn)行約束條件是否滿足判定計(jì)算,其次計(jì)算與節(jié)點(diǎn)5服務(wù)s5:{E,F}的服務(wù)匹配度,并繼續(xù)轉(zhuǎn)發(fā)Packet2。在此過程中,可發(fā)現(xiàn)節(jié)點(diǎn)4盡管與節(jié)點(diǎn)5服務(wù)匹配,但其可用能量PA4=2低于最低可用能量ET=3,不能作為服務(wù)節(jié)點(diǎn);發(fā)現(xiàn)節(jié)點(diǎn)10與節(jié)點(diǎn)5服務(wù)匹配且可用能量PA10=5高于最低可用能量ET=3,且其與服務(wù)節(jié)點(diǎn)5最短通信路徑為2跳,其服務(wù)路由總通信延遲Total_ComDelay10=30ms低于上限值。即節(jié)點(diǎn)10可作為服務(wù)路由的第二級(jí)服務(wù)節(jié)點(diǎn),并在其服務(wù)路由表SerRoute_Table10新增一條記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=2,上一級(jí)服務(wù)節(jié)點(diǎn)ID=5、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy10=4,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay10=30ms,服務(wù)搜索是否完成標(biāo)志flag=0。
與節(jié)點(diǎn)5處理步驟相同,節(jié)點(diǎn)4可發(fā)現(xiàn)其第二級(jí)服務(wù)節(jié)點(diǎn):節(jié)點(diǎn)7與節(jié)點(diǎn)9,這兩個(gè)節(jié)點(diǎn)更新其服務(wù)路由表。節(jié)點(diǎn)7新增服務(wù)路由表記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=2,上一級(jí)服務(wù)節(jié)點(diǎn)ID=4、到根節(jié)點(diǎn) 服務(wù)路由平均可用能量Avr_AvaEnergy7=3.5,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay10=30ms,服務(wù)搜索是否完成標(biāo)志flag=1。節(jié)點(diǎn)7判斷服務(wù)搜索已完成,發(fā)送服務(wù)請求完成數(shù)據(jù)包finish_packet10給根服務(wù)請求節(jié)點(diǎn),包括:本服務(wù)節(jié)點(diǎn)ID=7、服務(wù)請求完成標(biāo)志flag=1,所屬服務(wù)級(jí)數(shù)Ser_Level=2,服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelay7=30ms以及平均可用能量Avr_AvaEnergy7=3.5。
節(jié)點(diǎn)9新增服務(wù)路由表記錄:源節(jié)點(diǎn)服務(wù)Sstart:{φ,A},本節(jié)點(diǎn)所屬服務(wù)層級(jí)Ser_Level=2,上一級(jí)服務(wù)節(jié)點(diǎn)ID=4、到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy7=4,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay10=30ms,服務(wù)搜索是否完成標(biāo)志flag=0。
Step2.3:按廣度優(yōu)先搜索原則,第2級(jí)服務(wù)節(jié)點(diǎn)集中,服務(wù)搜索標(biāo)志flag=0的各個(gè)節(jié)點(diǎn)發(fā)起下一級(jí)搜索,搜索過程按照Step2.1->Step2.2所述。
Step2.4:依據(jù)廣度優(yōu)先原則,重復(fù)Step2.1->Step2.3所述過程,直到服務(wù)搜索過程最終匹配到源節(jié)點(diǎn)服務(wù)Sstart:{φ,inputT},搜索過程完成需滿足以下條件:即某服務(wù)節(jié)點(diǎn)nu所提供服務(wù)su:{inputu,outputu,fu,metadatau}滿足inputu=inputT,該節(jié)點(diǎn)nu發(fā)送服務(wù)請求完成數(shù)據(jù)包finish_packetu給根服務(wù)請求節(jié)點(diǎn),包括:本服務(wù)節(jié)點(diǎn)ID、服務(wù)請求完成標(biāo)志flag,所屬服務(wù)級(jí)數(shù)Ser_Level,服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelayu以及平均可用能量Avr_AvaEnergyu。根服務(wù)請求節(jié)點(diǎn)nend接收到服務(wù)請求完成數(shù)據(jù)包finish_packetu,將服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelayu以及平均可用能量Avr_AvaEnergyu進(jìn)行歸一化處理并計(jì)算綜合評價(jià)值:
OPTu=μ·Avr_AvaEnergyu-λ·Total_ComDelayu (2)
整個(gè)服務(wù)組合搜索尋優(yōu)過程中,根服務(wù)節(jié)點(diǎn)會(huì)收到多個(gè)服務(wù)節(jié)點(diǎn)返回的服務(wù)請求完成數(shù)據(jù)包,均按公式(2)計(jì)算通信延時(shí)和評價(jià)可用能量綜合評價(jià)值, 選擇綜合評價(jià)值最大的服務(wù)節(jié)點(diǎn)組合作為最優(yōu)組合,分布式服務(wù)組合搜索尋優(yōu)過程結(jié)束。
體現(xiàn)在本實(shí)施例中,依據(jù)廣度優(yōu)先原則,重復(fù)Step2.1->Step2.3所述過程,直到服務(wù)搜索過程最終匹配到源節(jié)點(diǎn)服務(wù)Sstart:{φ,A}。整個(gè)搜索過程將獲得3條服務(wù)路由:
1)服務(wù)路由1:節(jié)點(diǎn)1‐>節(jié)點(diǎn)10‐>節(jié)點(diǎn)5:到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy=11/3,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay=50ms
2)服務(wù)路由2:節(jié)點(diǎn)7‐>節(jié)點(diǎn)4:到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy=3.5,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay=30ms
3)服務(wù)路由3:節(jié)點(diǎn)1‐>節(jié)點(diǎn)9‐>節(jié)點(diǎn)4:到根節(jié)點(diǎn)服務(wù)路由平均可用能量Avr_AvaEnergy=11/3,到根節(jié)點(diǎn)服務(wù)路由通信延時(shí)Total_ComDelay=40ms
將服務(wù)節(jié)點(diǎn)組合總通信延時(shí)Total_ComDelay以及平均可用能量Avr_AvaEnergy進(jìn)行歸一化處理并計(jì)算綜合評價(jià)值,取μ=1,λ=1:
服務(wù)路由1:
服務(wù)路由2:OPT=3.5/5-30/60=0.2
服務(wù)路由3:
按計(jì)算通信延時(shí)和評價(jià)可用能量綜合評價(jià)值結(jié)果,選擇綜合評價(jià)值最大的服務(wù)路由2作為最優(yōu)組合,分布式服務(wù)組合搜索尋優(yōu)過程結(jié)束。
顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無需也無法對所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。