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