本發(fā)明屬于無(wú)線通信領(lǐng)域,特別涉及一種分布式拓?fù)淇刂品椒?,可用于認(rèn)知Ad Hoc網(wǎng)絡(luò)。
背景技術(shù):
認(rèn)知Ad Hoc網(wǎng)絡(luò)是一種充滿發(fā)展?jié)摿Φ臒o(wú)線網(wǎng)絡(luò)通信系統(tǒng),該網(wǎng)絡(luò)除了具有傳統(tǒng)Ad Hoc網(wǎng)絡(luò)的自組織、自配置、自適應(yīng)能力之外,還具有對(duì)頻譜資源的感知、機(jī)會(huì)接入以及動(dòng)態(tài)分配的能力,能夠靈活地用于各種無(wú)固定通信基礎(chǔ)設(shè)施支撐的環(huán)境,提高現(xiàn)有頻帶資源的利用率。
在認(rèn)知Ad Hoc網(wǎng)絡(luò)中,用戶分為兩類(lèi),一類(lèi)是主用戶,另一類(lèi)是次用戶,其中主用戶享有信道的優(yōu)先使用權(quán)。當(dāng)主用戶使用某一信道時(shí),干擾到主用戶數(shù)據(jù)傳輸?shù)拇斡脩舯仨毲袚Q到其他可用的信道來(lái)進(jìn)行數(shù)據(jù)傳輸,但這樣的切換降低了次用戶網(wǎng)絡(luò)的連通性,嚴(yán)重時(shí)會(huì)導(dǎo)致網(wǎng)絡(luò)的分割,從而發(fā)生分組傳輸?shù)臅r(shí)延和中斷。因此,需要優(yōu)化認(rèn)知Ad Hoc網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)來(lái)保證網(wǎng)絡(luò)的連通性。為了減小主用戶對(duì)次用戶網(wǎng)絡(luò)連通性的影響,研究者已經(jīng)提出了一些拓?fù)淇刂扑惴?,如XiJun Wang等作者在IEEE JASC 2014上發(fā)表的文章“Achieving Bi-Channel-Connectivity with Topology Control in Cognitive Radio Network”。XiJun Wang等的算法可以保證次用戶網(wǎng)絡(luò)的連通,并且能夠消除次用戶之間的干擾。但是這種方法缺乏與先進(jìn)干擾管理技術(shù)相結(jié)合的手段,消耗了過(guò)多的信道資源,使得網(wǎng)絡(luò)的頻譜利用率很難得到進(jìn)一步的提升。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于針對(duì)上述現(xiàn)有技術(shù)的問(wèn)題,提出一種基于串行干擾消除的分布式拓?fù)淇刂品椒?,用于保證次用戶網(wǎng)絡(luò)的連通性,消除次用戶之間的干擾,減少信道的使用個(gè)數(shù),提升網(wǎng)絡(luò)的頻譜利用率。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案包括如下:
(1)初始化網(wǎng)絡(luò)為k點(diǎn)連通,k≥2,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u分別獲得一跳和兩跳鄰接點(diǎn)的序列號(hào)和位置信息;
(2)根據(jù)序列號(hào)和位置信息建立局部?jī)商負(fù)渥訄DGu,并計(jì)算Gu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路能耗權(quán)重wp(x,y)和鏈路共存權(quán)重wc(x,y);
(3)判斷上述局部?jī)商負(fù)渥訄DGu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路是否能與主用戶鏈路在同一信道上進(jìn)行數(shù)據(jù)傳輸:若是,則將該鏈路放入鏈路共存集合CLu,即CLu=CLu∪(x,y),否則,則不放入鏈路共存集合CLu;
(4)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u構(gòu)建局部連通子圖Su:
(4a)初始化每個(gè)節(jié)點(diǎn)局部連通子圖Su的節(jié)點(diǎn)集合V(Su)為局部?jī)商負(fù)渥訄DGu中的所有節(jié)點(diǎn),初始化每個(gè)節(jié)點(diǎn)局部連通子圖Su的邊集合E(Su)為空集;
(4b)基于上述局部?jī)商負(fù)渥訄DGu,每個(gè)節(jié)點(diǎn)u根據(jù)鏈路能耗權(quán)重wp(x,y),構(gòu)建以u(píng)為根,遍及局部?jī)商負(fù)渥訄D中Gu所有節(jié)點(diǎn)的最短路徑樹(shù)Tu=(V(Tu),E(Tu)),并將E(Tu)記錄到局部連通子圖Su的邊集合E(Su)中,即其中V(Tu)=V(Gu)為最短路徑樹(shù)Tu的節(jié)點(diǎn)集合,E(Tu)為T(mén)u的邊集合;
(5)根據(jù)局部?jī)商負(fù)渥訄DGu,判斷節(jié)點(diǎn)u的出邊所對(duì)應(yīng)的鏈路中是否存在兩條或者兩條以上的鏈路屬于鏈路共存集合CLu:若是,則執(zhí)行步驟(6),否則,執(zhí)行步驟(7);
(6)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)構(gòu)建第一沖突子圖LSu,并根據(jù)LSu構(gòu)建第一局部生成子圖Tu′:
(6a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u根據(jù)最短路徑樹(shù)Tu找到與自己沖突的節(jié)點(diǎn),構(gòu)成沖突節(jié)點(diǎn)集CNu,并初始化第一沖突子圖LSu=(V(LSu),E(LSu)),其中LSu的邊集合為E(LSu)={(a,b)|a,b∈u∪CNu,(a,b)∈E(Gu)},LSu的節(jié)點(diǎn)集合為V(LSu)=u∪CNu;
(6b)每個(gè)節(jié)點(diǎn)u判斷各自的第一沖突子圖LSu是否連通:若是,則節(jié)點(diǎn)u根據(jù)鏈路共存權(quán)重wc(x,y),在LSu上構(gòu)建局部第一局部生成子圖Tu′,否則,節(jié)點(diǎn)u用斯坦納生成樹(shù)法在Gu上構(gòu)建第一局部生成子圖Tu′;
(6c)節(jié)點(diǎn)u將步驟(6b)中生成的第一局部生成子圖Tu′的邊集合E(Tu′)記錄到局部連通子圖Su的邊集合E(Su)中,即將Tu′的節(jié)點(diǎn)集合V(Tu′)記錄到局部連通子圖Su的節(jié)點(diǎn)集合V(Su)中,即將Tu′的節(jié)點(diǎn)集合V(Tu′)記錄到邏輯沖突鄰居集LCNu中,即節(jié)點(diǎn)u通過(guò)洪泛的方式把LCNu和E(Su)的拓?fù)湫畔l(fā)送給Su中的所有節(jié)點(diǎn),執(zhí)行步驟(8);
(7)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u構(gòu)建第二沖突子圖CSu,并根據(jù)CSu構(gòu)建第二局部生成子圖Tu″:
(7a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u根據(jù)最短路徑樹(shù)Tu找到與自己沖突的節(jié)點(diǎn),構(gòu)成沖突節(jié)點(diǎn)集CNu,并初始化第二沖突子圖CSu=(V(CSu),E(CSu)),其中CSu的節(jié)點(diǎn)集合為V(CSu)=CNu,邊集合為E(CSu)={(c,d)|c,d∈CNu,(c,d)∈E(Gu)};
(7b)每個(gè)節(jié)點(diǎn)u檢測(cè)各自的第二沖突子圖CSu是否連通:若是,節(jié)點(diǎn)u根據(jù)鏈路共存權(quán)重wc(x,y)在CSu上構(gòu)建第二局部生成子圖Tu″,否則,節(jié)點(diǎn)u用斯坦納生成樹(shù)法在Gu\u上構(gòu)建第二局部生成子圖Tu″;
(7c)節(jié)點(diǎn)u將步驟(7b)中生成的第二局部生成子圖Tu″的邊集合E(Tu″)記錄到局部連通子圖Su的邊集合E(Su)中,即將Tu″的節(jié)點(diǎn)集合V(Tu″)記錄到局部連通子圖Su的節(jié)點(diǎn)集合V(Su)中,即將Tu″的節(jié)點(diǎn)集合V(Tu″)記錄到邏輯沖突鄰居集LCNu中,即節(jié)點(diǎn)u通過(guò)洪泛的方式把LCNu和E(Su)的拓?fù)湫畔l(fā)送給Su中的所有節(jié)點(diǎn),執(zhí)行步驟(8);
(8)每個(gè)節(jié)點(diǎn)u根據(jù)其他節(jié)點(diǎn)發(fā)來(lái)的拓?fù)湫畔⒏伦约旱木植窟B通子圖Su和邏輯沖突鄰居集LCNu,將局部連通子圖Su上的一跳鄰節(jié)點(diǎn)v作為邏輯鄰節(jié)點(diǎn),構(gòu)成邏輯鄰節(jié)點(diǎn)集LNu={v∈V(Su)|(u,v)∈E(Su)};
(9)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u確定自己的發(fā)射功率,即將發(fā)射功率調(diào)整為能夠覆蓋到所有邏輯鄰節(jié)點(diǎn)集所需要的功率:
(10)根據(jù)網(wǎng)絡(luò)中的所有節(jié)點(diǎn)構(gòu)成的局部連通子圖Su生成最終的全網(wǎng)拓?fù)銰=(V(G),E(G)),其中V(G)為網(wǎng)絡(luò)中所有節(jié)點(diǎn),E(G)每個(gè)節(jié)點(diǎn)與自己的邏輯鄰節(jié)點(diǎn)間的鏈路,即E(G)={(u,v)|u∈V(G),v∈LNu};
(11)使用貪婪染色算法對(duì)已構(gòu)建的最終全網(wǎng)拓?fù)銰中的每個(gè)節(jié)點(diǎn)u進(jìn)行信道分配。
本發(fā)明具有如下優(yōu)點(diǎn):
1)本發(fā)明聯(lián)合串行干擾消除,功率控制和信道分配,消除了主用戶的干擾,提高了次用戶數(shù)據(jù)傳輸?shù)某晒Ω怕?;通過(guò)功率控制使得次用戶能夠和主用戶同時(shí)進(jìn)行數(shù)據(jù)傳輸和接收,從而在保證次用戶網(wǎng)絡(luò)的連通性的同時(shí),提升了頻譜利用率;通過(guò)信道分配給相互干擾的次用戶分配不同的信道,從而消除了次用戶之間的干擾。
2)本發(fā)明通過(guò)功率控制構(gòu)建適合信道分配的拓?fù)浣Y(jié)構(gòu),避免了高復(fù)雜度的連通性判斷;
3)本發(fā)明通過(guò)聯(lián)合認(rèn)知網(wǎng)絡(luò)的次用戶和主用戶在同一信道上進(jìn)行數(shù)據(jù)傳輸,進(jìn)一步提高了頻率利用率,在保證認(rèn)知網(wǎng)絡(luò)連通性的前提下,進(jìn)一步減少了認(rèn)知網(wǎng)絡(luò)所需的信道數(shù)目,提高了網(wǎng)絡(luò)整體的魯棒性。
附圖說(shuō)明
圖1為本發(fā)明的實(shí)現(xiàn)總流程圖;
圖2為本發(fā)明中構(gòu)建局部生成子圖的子流程圖;
圖3為本發(fā)明中節(jié)點(diǎn)u拓?fù)錁?gòu)建的示例圖;
圖4為用本發(fā)明和現(xiàn)有的DBCC得到的平均信道數(shù)的仿真對(duì)比圖;
圖5為用本發(fā)明和現(xiàn)有的DBCC得到的平均獨(dú)立路徑數(shù)的仿真對(duì)比圖。
具體實(shí)施方式
本發(fā)明使用網(wǎng)絡(luò)場(chǎng)景包括一對(duì)主用戶和一個(gè)認(rèn)知Ad Hoc網(wǎng)絡(luò)以及K個(gè)可用信道,其中,主用戶包括一個(gè)主用戶發(fā)送端和一個(gè)主用戶接收端,所有的次用戶受到同一對(duì)主用戶的影響,主用戶可使用K個(gè)信道中的任意一個(gè)信道,在主用戶占用了某一信道時(shí),次用戶只有在不干擾主用戶傳輸?shù)那闆r下才能使用此信道進(jìn)行數(shù)據(jù)傳輸,主用戶可以通過(guò)廣播獲得所有次用戶的地理位置,主用戶發(fā)送功率PPU在整個(gè)拓?fù)淇刂七^(guò)程中保持不變。
認(rèn)知Ad Hoc網(wǎng)絡(luò),由n個(gè)分布在二維平面區(qū)域內(nèi)的節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)代表一個(gè)次用戶,且具有唯一的序列號(hào),并可以通過(guò)GPS定位技術(shù)來(lái)獲取位置信息,每個(gè)節(jié)點(diǎn)可以在K個(gè)信道中任意一個(gè)信道中發(fā)送數(shù)據(jù),同時(shí)在其他所有信道上偵聽(tīng)數(shù)據(jù),除此之外每個(gè)節(jié)點(diǎn)在物理結(jié)構(gòu)、初始設(shè)置、功能特性、參數(shù)指標(biāo)等方面不存在任何差異,在該網(wǎng)絡(luò)中,任意節(jié)點(diǎn)間的無(wú)線信道為加性高斯白噪聲信道,節(jié)點(diǎn)通過(guò)全向天線與周?chē)?jié)點(diǎn)通信,最大發(fā)射功率均為Pmax,任意節(jié)點(diǎn)u的發(fā)射功率Pu可以在最小和最大之間連續(xù)調(diào)節(jié),即0≤Pu≤Pmax,傳輸半徑r為節(jié)點(diǎn)發(fā)射功率的傳輸距離,任意兩個(gè)節(jié)點(diǎn)之間存在無(wú)線鏈路的充要條件是它們之間的歐式距離小于或等于節(jié)點(diǎn)的傳輸半徑r。
參照?qǐng)D1,本發(fā)明的實(shí)現(xiàn)步驟如下:
步驟1,認(rèn)知網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u發(fā)送自己的第一節(jié)點(diǎn)信息HELLO-1包,并接收一跳鄰節(jié)點(diǎn)發(fā)送的第一節(jié)點(diǎn)信息HELLO-1包。
(1a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u以最大發(fā)射功率Pmax向u的一跳鄰節(jié)點(diǎn)廣播一次第一節(jié)點(diǎn)信息HELLO-1包,該HELLO-1包中含有節(jié)點(diǎn)u的序列號(hào)和節(jié)點(diǎn)u的位置信息;
(1b)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u接收一跳鄰節(jié)點(diǎn)以最大發(fā)射功率Pmax廣播的HELLO-1包,并根據(jù)收到的HELLO-1包,統(tǒng)計(jì)得到自己的一跳鄰節(jié)點(diǎn)集DNu。
步驟2,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u根據(jù)上第一節(jié)點(diǎn)信息HELLO-1包,發(fā)送自己的第二節(jié)點(diǎn)信息HELLO-2包,并接收一跳鄰節(jié)點(diǎn)發(fā)送的HELLO-2包。
(2a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u接收所有一跳鄰節(jié)點(diǎn)發(fā)送的第一節(jié)點(diǎn)信息HELLO-1包,并以最大發(fā)射功率Pmax向自己的一跳鄰節(jié)點(diǎn)廣播一次第二節(jié)點(diǎn)信息HELLO-2包,該HELLO-2包含有節(jié)點(diǎn)u的所有一跳鄰節(jié)點(diǎn)的序列號(hào)和位置信息;
(2b)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u接收一跳鄰節(jié)點(diǎn)以最大發(fā)射功率Pmax廣播的第二節(jié)點(diǎn)信息HELLO-2包,并根據(jù)收到的HELLO-1包,統(tǒng)計(jì)得到自己的二跳鄰節(jié)點(diǎn)集ENu。
步驟3,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u構(gòu)建自己的局部?jī)商負(fù)渥訄DGu并計(jì)算Gu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路能耗權(quán)重wp(x,y)和鏈路共存權(quán)重wc(x,y)。
(3a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u根據(jù)接收到的一跳鄰節(jié)點(diǎn)發(fā)送的HELLO-1和HELLO-2包信息,獲取并記錄自己的兩跳鄰節(jié)點(diǎn)v2的序列號(hào)和位置信息,其中v2∈ENu,同時(shí)將ENu的所有節(jié)點(diǎn)賦予給局部?jī)商負(fù)渥訄DGu的節(jié)點(diǎn)集合V(Gu),即
(3b)每個(gè)節(jié)點(diǎn)u根據(jù)自己的位置信息以及兩跳鄰節(jié)點(diǎn)的位置信息,計(jì)算任意兩個(gè)節(jié)點(diǎn)x,y之間直接傳輸所需要的最小發(fā)射功率其中,x,y∈V(Gu),β為接收信噪比門(mén)限值,其根據(jù)接收機(jī)的靈敏度和誤碼率要求確定;α為路徑損耗因子,dx,y是節(jié)點(diǎn)x,y之間的歐式距離;
(3c)若Px,y小于節(jié)點(diǎn)u的最大發(fā)射功率Pmax,則確定節(jié)點(diǎn)x,y之間存在連接關(guān)系,否則,節(jié)點(diǎn)x,y之間不存在連接關(guān)系;
(3d)每個(gè)節(jié)點(diǎn)u根據(jù)兩跳鄰節(jié)點(diǎn)之間的連接關(guān)系,建立局部?jī)商負(fù)渥訄DGu=(V(Gu),E(Gu)),其中局部?jī)商負(fù)渥訄DGu的節(jié)點(diǎn)集合為V(Gu)=ENu∪{u},Gu的邊集合為其中是節(jié)點(diǎn)之間的歐式距離;
(3e)局部?jī)商負(fù)渥訄DGu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路能耗權(quán)重wp(x,y),按照下式計(jì)算:
wp(x,y)=Px,y,
其中,x,y∈V(Gu),Px,y為任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間直接傳輸所需要的最小發(fā)送功率,按照下式計(jì)算:
其中,β為接收信噪比門(mén)限值,其根據(jù)接收機(jī)的靈敏度和誤碼率要求確定;α為路徑損耗因子,dx,y是節(jié)點(diǎn)x,y之間的歐式距離;
(3f)局部?jī)商負(fù)渥訄DGu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路共存權(quán)重wc(x,y),按照下式計(jì)算:
其中,x,y∈Gu,dx,y為節(jié)點(diǎn)x,y間的歐式距離,Rmax為節(jié)點(diǎn)的最大傳輸半徑,εx,y為鏈路共存因子,當(dāng)鏈路(x,y)屬于鏈路共存集合CLu時(shí),εx,y=1,否則,εx,y=0。
步驟4,判斷上述局部?jī)商負(fù)渥訄DGu中任意兩個(gè)有連接關(guān)系的節(jié)點(diǎn)x,y之間的鏈路是否能與主用戶鏈路在同一信道上進(jìn)行數(shù)據(jù)傳輸。
(4a)每個(gè)節(jié)點(diǎn)u對(duì)所有局部?jī)商負(fù)渥訄DGu中的節(jié)點(diǎn)按度的大小進(jìn)行降序排序,其中節(jié)點(diǎn)的度為該節(jié)點(diǎn)的出邊數(shù)目;
(4b)依照節(jié)點(diǎn)度的次序選擇Gu中的節(jié)點(diǎn)x∈V(Gu),判斷節(jié)點(diǎn)x在發(fā)送數(shù)據(jù)時(shí)是否會(huì)對(duì)主用戶產(chǎn)生干擾,判斷條件為:
若條件成立,則節(jié)點(diǎn)x在發(fā)送數(shù)據(jù)時(shí)不會(huì)對(duì)主用戶產(chǎn)生干擾,執(zhí)行步驟(4c),否則,按節(jié)點(diǎn)度的次序?qū)ο乱粋€(gè)節(jié)點(diǎn)執(zhí)行步驟(4b),直到V(Gu)中所有節(jié)點(diǎn)判斷完畢,其中,為節(jié)點(diǎn)x與主用戶接收端PUr的歐式距離,為主用戶發(fā)送端PUt與主用戶接收端PUr的歐式距離,PPU為主用戶的發(fā)射功率;
(4c)根據(jù)局部?jī)商負(fù)渥訄DGu找出節(jié)點(diǎn)x的所有一跳鄰居節(jié)點(diǎn),用這些鄰節(jié)點(diǎn)構(gòu)成一跳鄰節(jié)點(diǎn)集DNx,對(duì)于該一跳鄰居節(jié)點(diǎn)集DNx中所有的節(jié)點(diǎn)y∈DNx,按度的大小進(jìn)行降序排序,并依照該度的次序判斷該一跳鄰居節(jié)點(diǎn)集DNx中哪些節(jié)點(diǎn)能夠在主用戶存在的情況下,成功接收來(lái)自節(jié)點(diǎn)x的數(shù)據(jù),判斷條件為:
當(dāng)主用戶的干擾強(qiáng)度小于節(jié)點(diǎn)y的接收靈敏度時(shí),判斷條件為:
主用戶的干擾強(qiáng)度強(qiáng)到滿足串?dāng)_干擾消除條件時(shí),判斷條件為:
若上述兩個(gè)判斷條件中有一個(gè)成立,則鏈路(x,y)能與主用戶鏈路在同一信道進(jìn)行數(shù)據(jù)傳輸,并將該鏈路放入鏈路共存集合CLu,即CLu=CLu∪(x,y);否則,則不放入鏈路共存集合CLu,并按照節(jié)點(diǎn)x的所有一跳鄰居節(jié)點(diǎn)集DNx的度的順序?qū)ο乱粋€(gè)一跳鄰居節(jié)點(diǎn)進(jìn)行判斷,直到節(jié)點(diǎn)x的所有一跳鄰居節(jié)點(diǎn)全部執(zhí)行完畢,為節(jié)點(diǎn)y與主用戶發(fā)送端PUt的歐式距離。
步驟5,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u構(gòu)建局部生成子圖Su=(V(Su),E(Su)),并確定自己的邏輯鄰節(jié)點(diǎn)。
參照?qǐng)D2,本步驟的具體實(shí)現(xiàn)如下:
(5a)初始化每個(gè)節(jié)點(diǎn)局部連通子圖Su的節(jié)點(diǎn)集合V(Su)為局部?jī)商負(fù)渥訄DGu中的所有節(jié)點(diǎn),初始化每個(gè)節(jié)點(diǎn)局部連通子圖Su的邊集合E(Su)為空集;
(5b)基于上述局部?jī)商負(fù)渥訄DGu,每個(gè)節(jié)點(diǎn)u根據(jù)鏈路能耗權(quán)重wp(x,y),通過(guò)使用Dijkstra算法或Bellman-Ford算法,構(gòu)建以u(píng)為根,遍及局部?jī)商負(fù)渥訄D中Gu所有節(jié)點(diǎn)的最短路徑樹(shù)Tu=(V(Tu),E(Tu)),并將E(Tu)記錄到局部連通子圖Su的邊集合E(Su)中,即其中V(Tu)=V(Gu)為最短路徑樹(shù)Tu的節(jié)點(diǎn)集合,E(Tu)為T(mén)u的邊集合。
步驟6,根據(jù)局部?jī)商負(fù)渥訄DGu,判斷節(jié)點(diǎn)u的出邊所對(duì)應(yīng)的鏈路中是否存在兩條或者兩條以上的鏈路屬于鏈路共存集合CLu:若是,則執(zhí)行步驟7,否則,執(zhí)行步驟8。
步驟7,網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)構(gòu)建第一沖突子圖LSu,并根據(jù)LSu構(gòu)建第一局部生成子圖Tu′。
(7a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u根據(jù)最短路徑樹(shù)Tu找到與自己沖突的節(jié)點(diǎn),構(gòu)成沖突節(jié)點(diǎn)集CNu,并初始化第一沖突子圖LSu=(V(LSu),E(LSu)),其中LSu的邊集合為E(LSu)={(a,b)|a,b∈u∪CNu,(a,b)∈E(Gu)},LSu的節(jié)點(diǎn)集合為V(LSu)=u∪CNu;
(7b)每個(gè)節(jié)點(diǎn)u判斷各自的第一沖突子圖LSu是否連通:若是,則節(jié)點(diǎn)u根據(jù)鏈路共存權(quán)重wc(x,y),在LSu上構(gòu)建局部第一局部生成子圖Tu′,否則,節(jié)點(diǎn)u用斯坦納生成樹(shù)法在Gu上構(gòu)建第一局部生成子圖Tu′;
(7c)節(jié)點(diǎn)u將步驟(7b)中生成的第一局部生成子圖Tu′的邊集合E(Tu′)記錄到局部連通子圖Su的邊集合E(Su)中,即將Tu′的節(jié)點(diǎn)集合V(Tu′)記錄到局部連通子圖Su的節(jié)點(diǎn)集合V(Su)中,即將Tu′的節(jié)點(diǎn)集合V(Tu′)記錄到邏輯沖突鄰居集LCNu中,即節(jié)點(diǎn)u通過(guò)洪泛的方式把LCNu和E(Su)的拓?fù)湫畔l(fā)送給Su中的所有節(jié)點(diǎn),執(zhí)行步驟(9)。
步驟8,網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u構(gòu)建第二沖突子圖CSu,并根據(jù)CSu構(gòu)建第二局部生成子圖Tu″。
(8a)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u根據(jù)最短路徑樹(shù)Tu找到與自己沖突的節(jié)點(diǎn),構(gòu)成沖突節(jié)點(diǎn)集CNu,并初始化第二沖突子圖CSu=(V(CSu),E(CSu)),其中CSu的節(jié)點(diǎn)集合為V(CSu)=CNu,邊集合為E(CSu)={(c,d)|c,d∈CNu,(c,d)∈E(Gu)};
(8b)每個(gè)節(jié)點(diǎn)u檢測(cè)各自的第二沖突子圖CSu是否連通:若是,節(jié)點(diǎn)u根據(jù)鏈路共存權(quán)重wc(x,y)在CSu上構(gòu)建第二局部生成子圖Tu″,否則,節(jié)點(diǎn)u用斯坦納生成樹(shù)法在Gu\u上構(gòu)建第二局部生成子圖Tu″;
(8c)節(jié)點(diǎn)u將步驟(8b)中生成的第二局部生成子圖Tu″的邊集合E(Tu″)記錄到局部連通子圖Su的邊集合E(Su)中,即將Tu″的節(jié)點(diǎn)集合V(Tu″)記錄到局部連通子圖Su的節(jié)點(diǎn)集合V(Su)中,即將Tu″的節(jié)點(diǎn)集合V(Tu″)記錄到邏輯沖突鄰居集LCNu中,即節(jié)點(diǎn)u通過(guò)洪泛的方式把LCNu和E(Su)的拓?fù)湫畔l(fā)送給Su中的所有節(jié)點(diǎn),執(zhí)行步驟(9)。
通過(guò)步驟6-步驟8,得到具體的局部連通子圖Su的結(jié)果如圖3所示,其中,圖3(a)表示節(jié)點(diǎn)u通過(guò)互換第一節(jié)點(diǎn)信息HELLO-1包和第二節(jié)點(diǎn)信息HELLO-2包構(gòu)建的局部?jī)商負(fù)渥訄DGu;圖3(b)表示節(jié)點(diǎn)u利用鏈路能耗權(quán)重wp(x,y)構(gòu)建的最短路徑樹(shù)Tu;圖3(c)表示節(jié)點(diǎn)u構(gòu)建的第一沖突子圖LSu;圖3(d)表示節(jié)點(diǎn)u構(gòu)建的第二沖突子圖CSu;圖3(e)表示節(jié)點(diǎn)u在LSu上構(gòu)建的第一生成子圖Tu′;圖3(f)表示節(jié)點(diǎn)u在CSu上構(gòu)建的第二生成子圖Tu″;圖3(g)表示節(jié)點(diǎn)u根據(jù)第一生成子圖Tu′最終構(gòu)建的生成局部連通子圖Su;圖3(h)表示節(jié)點(diǎn)u根據(jù)第二生成子圖Tu″最終構(gòu)建的局部連通子圖Su;
其中上述步驟(7b)和(8b)中所述Dijkstra算法和斯坦納生成樹(shù)法參照Xinjun Wang等作者2014年在IEEE JASC上發(fā)表的文章“Achieving Bi-Channel-Connectivity with Topology Control in Cognitive Radio Network”。
步驟9,每個(gè)節(jié)點(diǎn)u根據(jù)其他節(jié)點(diǎn)發(fā)來(lái)的拓?fù)湫畔⒏伦约旱木植窟B通子圖Su和邏輯沖突鄰居集LCNu,將局部連通子圖Su上的一跳鄰節(jié)點(diǎn)v作為邏輯鄰節(jié)點(diǎn),構(gòu)成邏輯鄰節(jié)點(diǎn)集LNu={v∈V(Su)|(u,v)∈E(Su)}。
步驟10,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)u確定自己的發(fā)射功率,即將發(fā)射功率調(diào)整為能夠覆蓋到所有邏輯鄰節(jié)點(diǎn)所需要的功率:其中u的所有邏輯鄰節(jié)點(diǎn)所需要的功率,是指u的所有邏輯鄰節(jié)點(diǎn)的發(fā)射功率的最大值,pu,v表示u的邏輯鄰節(jié)點(diǎn)v的發(fā)射功率。
步驟11,將網(wǎng)絡(luò)中的所有節(jié)點(diǎn)構(gòu)成的局部連通子圖Su組合起來(lái)構(gòu)成最終的全網(wǎng)拓?fù)銰=(V(G),E(G)),其中V(G)為網(wǎng)絡(luò)中所有節(jié)點(diǎn),E(G)每個(gè)節(jié)點(diǎn)與自己的邏輯鄰節(jié)點(diǎn)間的鏈路,即E(G)={(u,v)|u∈V(G),v∈LNu}。
步驟12,根據(jù)上述形成最終的全網(wǎng)拓?fù)銰,對(duì)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)u進(jìn)行信道分配。
(12a)節(jié)點(diǎn)u用最大發(fā)送功率Pmax在公共控制信道上廣播請(qǐng)求分配信道包RAC,其他節(jié)點(diǎn)在收到這個(gè)包時(shí)需要再次中轉(zhuǎn)該包,直到邏輯沖突鄰居集LCNu中的所有節(jié)點(diǎn)都接收到RAC包為止;
(12b)邏輯沖突鄰居集LCNu中的節(jié)點(diǎn)在收到RAC包后,查看自己已經(jīng)分配的信道,并回饋信道分配包AC給節(jié)點(diǎn)u,其中信道分配包AC中包含了該節(jié)點(diǎn)已經(jīng)分配的信道,如果該節(jié)點(diǎn)還未分配信道就將包AC記為空包;
(12c)節(jié)點(diǎn)u收集所有LCNu中的節(jié)點(diǎn)回饋的AC包,并從還未被占用的信道中選擇主用戶占用概率最小的信道,作為自己的可用信道;
(12d)每個(gè)節(jié)點(diǎn)獨(dú)立執(zhí)行上述過(guò)程,直到所有節(jié)點(diǎn)都分配完信道為止。
上述步驟1-步驟12中,節(jié)點(diǎn)u表示網(wǎng)絡(luò)中任意節(jié)點(diǎn),鏈路(x,y)表示網(wǎng)絡(luò)中節(jié)點(diǎn)x,y形成的邊。
本發(fā)明的效果可通過(guò)仿真進(jìn)一步說(shuō)明:
(1)仿真條件
在仿真場(chǎng)景中,網(wǎng)絡(luò)中所有節(jié)點(diǎn)隨機(jī)均勻分布在一個(gè)1000×1000m2的二維平面區(qū)域中,接收信噪比SNR的門(mén)限值β設(shè)為-80dBm,路徑損耗因子α取值為4,網(wǎng)絡(luò)中所有節(jié)點(diǎn)采用相同的最大發(fā)射功率,其中最大發(fā)射功率Pmax=256mW,對(duì)應(yīng)的最大傳輸半徑Rmax=400m。
(2)仿真內(nèi)容和結(jié)果
仿真1,用本發(fā)明方法與現(xiàn)有DBCC算法對(duì)所平均所需信道數(shù)進(jìn)行仿真對(duì)比,結(jié)果如圖4所示:
從圖4可見(jiàn),隨著網(wǎng)絡(luò)中次用戶節(jié)點(diǎn)數(shù)的增多,本發(fā)明在三種不同主用戶傳輸功率下所需平均信道數(shù)緩慢增長(zhǎng),且都明顯少于DBCC,因此本發(fā)明可以有效地提高頻譜利用率。
仿真2,用本發(fā)明與現(xiàn)有DBCC算法對(duì)生成拓?fù)涞钠骄?dú)立路徑數(shù)進(jìn)行仿真對(duì)比,結(jié)果如圖5所示:
從圖5可見(jiàn),隨著網(wǎng)絡(luò)中次用戶節(jié)點(diǎn)數(shù)的增多,本發(fā)明在三種不同主用戶傳輸功率下生成拓?fù)涞钠骄?dú)立路徑數(shù)緩慢增長(zhǎng),且都明顯大于DBCC,因此本發(fā)明可以有效地提高網(wǎng)絡(luò)魯棒性。