1.算法概述
使用無線電用戶的頻率范圍在9kHz 到 275GHz[3]父虑,由于無線通信環(huán)境中的干擾特恬、信道衰落和無線電收發(fā)設(shè)備自身屬性等的影響舆逃,大部分無線電設(shè)備只能工作在 50GHz 以下。在 3GHz 以上無線頻譜資源利用率較低背捌,3GHz 以下的利用率低于30%[4]毙籽。因此,頻譜資源缺乏的主要原因為不合理的頻譜資源管理政策。
在低頻段的頻譜利用率較高辩棒,但在中頻段和高頻段利用率極低靡努,固定的頻譜管理政策是導(dǎo)致無線頻譜資源短缺的真正原因,不是頻譜資源不能滿足用戶需求垮衷。
認(rèn)知無線電讓無線通信設(shè)備能夠主動尋找可用信道,將未被使用的頻譜資源進(jìn)行再次利用乖坠,具體可通過認(rèn)知無線電的智能化特性實現(xiàn)頻率搀突、時間和空間域不同頻譜環(huán)境的信號感知,來充分滿足用戶使用需求熊泵。認(rèn)知無線電本身存在學(xué)習(xí)能力仰迁,能夠?qū)νㄐ怒h(huán)境中的變化做出分析和判斷甸昏,然后能尋找到“頻譜空穴”。
當(dāng)一個節(jié)點需要給網(wǎng)絡(luò)中的其他節(jié)點傳送信息時徐许,如果沒有到達(dá)目標(biāo)節(jié)點的路由施蜜,則必須先以多播的形式發(fā)出RREQ(路由請求)報文。RREQ報文中記錄著發(fā)起節(jié)點和目標(biāo)節(jié)點的網(wǎng)絡(luò)層地址雌隅,鄰近節(jié)點收到RREQ翻默,首先判斷目標(biāo)節(jié)點是否為自己。如果是恰起,則向發(fā)起節(jié)點發(fā)送RREP(路由回應(yīng));如果不是修械,則首先在路由表中查找是否有到達(dá)目標(biāo)節(jié)點的路由,如果有检盼,則向源節(jié)點單播RREP肯污,否則繼續(xù)轉(zhuǎn)發(fā)RREQ進(jìn)行查找。
按需路由選擇(ODR)吨枉。ODR使用Cisco發(fā)現(xiàn)協(xié)議(CDP)來在分支(末節(jié))路由器和中央路由器之間傳輸網(wǎng)絡(luò)信息蹦渣。與動態(tài)路由選擇協(xié)議相比,ODR提供IP路由選擇信息的開銷非常忻餐ぁ柬唯;而與靜態(tài)路由相比,ODR的手工配置量更少属提。
在大規(guī)模的路由網(wǎng)絡(luò)中权逗,例如在一個由省-地市-縣-營業(yè)點組成的四級遠(yuǎn)程互連的路由網(wǎng)絡(luò)中,如何維護(hù)大量的營業(yè)點路由器的直連子網(wǎng)路由和配置營業(yè)點的靜態(tài)路由成為一個巨大的負(fù)擔(dān).此案例中說明了如何利用cisco On-Demand Routing (ODR)技術(shù)來優(yōu)化這種大規(guī)模路由網(wǎng)絡(luò)的一個設(shè)想.
算法A文獻(xiàn):
算法B:
基礎(chǔ)算法B是基礎(chǔ)算法A的簡化冤议,路徑的退避時延只是節(jié)點退避時延的累加斟薇。算法的具體解釋,參考文獻(xiàn)’基礎(chǔ)算法B’恕酸。
2.仿真效果預(yù)覽
matlab2013b仿真
3.MATLAB部分代碼預(yù)覽
SOP_fre ?= zeros(NUM_SOP,1);
for i = 1:NUM_SOP
SOP_fre(i) ?= 10*round(MAX_Fre/10*rand(1,1)) + MIN_Fre;%設(shè)置總共的頻段情況20M~2400M,頻段變換步進(jìn)為10M
end
k ???????= 0.01;%調(diào)整10M的頻率段堪滨,需要時間10ms。
Infor ???= cell(sqrt(Num_node),sqrt(Num_node));
NUM_SOUR = 1;%源節(jié)點個數(shù)
NUM_DENT = 1;%目標(biāo)節(jié)點個數(shù)
if sel_sna == 1
Band_W ??= 2;%帶寬統(tǒng)一為2M
end
if sel_sna == 2
Band_Ws ?= cell(sqrt(Num_node),sqrt(Num_node));%定義每個節(jié)點的帶寬
SNRi ????= cell(sqrt(Num_node),sqrt(Num_node));%定義每個節(jié)點之間的信噪比
Pi ??????= cell(sqrt(Num_node),sqrt(Num_node));%定義每個節(jié)點之間數(shù)據(jù)傳輸?shù)牟怀晒怕?/p>
end
S_data ??= 0.3;%定義每個數(shù)據(jù)包的大小蕊温,通常袱箱,這個數(shù)據(jù)包的大小是相同的。
P0 ??????= 0.7;%表示節(jié)點P觀察到某個頻段可用同時Q也觀察到這個頻段可用的概率义矛;
qc ??????= 0.8;%在Q沒有觀察到頻段可用而P觀察到頻段可用的概率
Pc ??????= 0.1;%每個節(jié)點的沖突概率
W0 ??????= cell(sqrt(Num_node),sqrt(Num_node));%表示IEEE 802.11指數(shù)退避流程中退避窗口的最小值
Stime ???= 100;%利用蒙特卡羅的仿真思想发笔,對結(jié)果進(jìn)行多次仿真,求平均
for pp = 1:Stime
pp
%%
%-----START:初始化產(chǎn)生節(jié)點凉翻,注意了讨,這里,節(jié)點的顯示用方格坐標(biāo)顯示,但是實際的位置信息均存儲在每個節(jié)點的信息cell中
%-----START:初始化產(chǎn)生節(jié)點前计,注意胞谭,這里,節(jié)點的顯示用方格坐標(biāo)顯示男杈,但是實際的位置信息均存儲在每個節(jié)點的信息cell中
%-----START:初始化產(chǎn)生節(jié)點丈屹,注意,這里伶棒,節(jié)點的顯示用方格坐標(biāo)顯示旺垒,但是實際的位置信息均存儲在每個節(jié)點的信息cell中
%-----START:初始化產(chǎn)生節(jié)點,注意苞冯,這里袖牙,節(jié)點的顯示用方格坐標(biāo)顯示侧巨,但是實際的位置信息均存儲在每個節(jié)點的信息cell中
%以下的代碼僅僅為顯示節(jié)點
[X_view,Y_view,Index] = func_postion(Num_node);
% figure(1);
% for i = 1:sqrt(Num_node)
% ????for j = 1:sqrt(Num_node)
% ????????plot(X_view(i,j),Y_view(i,j),'b.');hold on
% ????end
% end
%下面的是產(chǎn)生的每個節(jié)點的基本信息
%以下的信息是基于AOVD協(xié)議產(chǎn)生每個節(jié)點的基本信息
%產(chǎn)生坐標(biāo)信息
POS = cell(sqrt(Num_node),sqrt(Num_node));
X ??= zeros(sqrt(Num_node),sqrt(Num_node));
Y ??= zeros(sqrt(Num_node),sqrt(Num_node));
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
X(i,j) ??= RR*rand(1,1);Y(i,j) = RR*rand(1,1);
POS{i,j} = [X(i,j),Y(i,j)];
end
end
%產(chǎn)生每個節(jié)點的附近的所有的頻段,每個節(jié)點附近的頻段的個數(shù)是隨機(jī)的1~NUM_SOP
FRE = cell(sqrt(Num_node),sqrt(Num_node));
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
tmp ????= randint(1,1,[1,NUM_SOP/2]); ?????????%產(chǎn)生該節(jié)點的頻段數(shù)的個數(shù)
Ind_sop = unique(randint(1,tmp,[1,NUM_SOP]));%產(chǎn)生對應(yīng)個數(shù)的隨機(jī)頻段的編號
FRE{i,j}= unique(SOP_fre(Ind_sop)); ?????????????????%每個節(jié)點附近的隨機(jī)頻點舅锄,構(gòu)成SOP集合來模擬頻譜分布的非均勻性
end
end
%產(chǎn)生每個節(jié)點的數(shù)據(jù)流
%分別定義單數(shù)據(jù)流;
%-------多數(shù)據(jù)流:并行的數(shù)據(jù)流司忱,交叉的數(shù)據(jù)流以及隨機(jī)的數(shù)據(jù)流皇忿;
[Data_flow,Starts,Ends] = func_data_flow(Num_node,sel_type);
%產(chǎn)生每個節(jié)點的退避最大窗口
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
W0{i,j} = 8-0.5*length(FRE{i,j});
end
end
%定義每個節(jié)點的帶寬
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
Band_Ws{i,j} = 2 + (1-2*rand(1,1));%通常情況下節(jié)點的帶寬都是相同的
end
end
%定義每個節(jié)點之間的信噪比
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
SNRi{i,j} = 5 + 2*rand(1,1);%每個路徑的SNR包括固有的5db以及隨機(jī)性差異
end
end
%定義每個節(jié)點之間數(shù)據(jù)傳輸?shù)牟怀筛怕?/p>
for i = 1:sqrt(Num_node)
for j = 1:sqrt(Num_node)
Pi{i,j} = 0.5 + 0.5*rand(1,1);%滿足高斯分布
end
end
%-----OVER:節(jié)點的初始化信息結(jié)束,通過循環(huán)可知坦仍,每次的參數(shù)是時變的鳍烁,符合實際情況
%-----OVER:節(jié)點的初始化信息結(jié)束,通過循環(huán)可知繁扎,每次的參數(shù)是時變的幔荒,符合實際情況
%-----OVER:節(jié)點的初始化信息結(jié)束,通過循環(huán)可知梳玫,每次的參數(shù)是時變的爹梁,符合實際情況
%-----OVER:節(jié)點的初始化信息結(jié)束,通過循環(huán)可知提澎,每次的參數(shù)是時變的姚垃,符合實際情況
%%
%%
%%
%%
%%
%-----START:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----START:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----START:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----START:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%根據(jù)之前定義的數(shù)據(jù)流,找到數(shù)據(jù)流的源節(jié)點和目標(biāo)節(jié)點盼忌,并根據(jù)最小延遲算法確定實際的路徑
%[Data_flow,Starts,Ends] ??
%根據(jù)已知的路徑和SOP集合积糯,計算每個交叉節(jié)點的沖突數(shù)
%通過計算延遲,使每個節(jié)點的頻譜進(jìn)行重新分配谦纱,從而使延遲達(dá)到最小值看成,頻譜從初始化產(chǎn)生的SOP集合中選擇
%計算初始的沖突數(shù)量,后面在動態(tài)分配頻段的時候跨嘉,進(jìn)行實時的更新
Num ??= zeros(sqrt(Num_node),sqrt(Num_node));
Num = func_find_Num(Data_flow,FRE,Num_node);
for i = 1:length(Starts)
for j = 1:length(Data_flow{i})
%首先計算節(jié)點延遲
%首先計算節(jié)點延遲
%不是目標(biāo)節(jié)點,是中間節(jié)點
%不是目標(biāo)節(jié)點,是中間節(jié)點
%不是目標(biāo)節(jié)點,是中間節(jié)點
if j < length(Data_flow{i})
tmp1 = Data_flow{i}(:,j);
tmp2 = Data_flow{i}(:,j+1);
%首先判斷當(dāng)前節(jié)點下有誤存在交集川慌,如果沒有頻段的交集則丟去該幀
if ?FRE{tmp1(1),tmp1(2)}(1) == FRE{tmp2(1),tmp2(2)}(1)
Dswitching(j) = 0;
if Num(tmp1(1),tmp1(2)) > 0
Dbackoff(j) ??= W0{tmp1(1),tmp1(2)}/((1-Pc) * (1-(1-Pc)^(1/(Num(tmp1(1),tmp1(2))-1))));
else
Dbackoff(j) ??= 0;
end ???????????????
else
Dswitching(j) = 2*k*abs(FRE{tmp1(1),tmp1(2)}(1) - FRE{tmp2(1),tmp2(2)}(1));
if Num(tmp1(1),tmp1(2)) > 0
Dbackoff(j) ??= W0{tmp1(1),tmp1(2)}/((1-Pc) * (1-(1-Pc)^(1/(Num(tmp1(1),tmp1(2))-1))));
else
Dbackoff(j) ??= 0;
end
end
%計算傳輸延遲
Dtrans(j) ??????= (1/(1-Pi{tmp1(1),tmp1(2)}))*S_data/( Band_Ws{tmp1(1),tmp1(2)}*log2(1 + SNRi{tmp1(1),tmp1(2)}) );
%進(jìn)行延遲信息反饋RREQ反饋
DN(j) ?????????= Dswitching(j) + Dbackoff(j) + Dtrans(j) ;
else%如果是目標(biāo)節(jié)點
%如果是目標(biāo)節(jié)點
%如果是目標(biāo)節(jié)點
tmp1 = Data_flow{i}(:,j);
tmp2 = Data_flow{i}(:,j); ????????
indss1 = 1;
%搜索最小DN值
for hh1 = 1:length(FRE{tmp1(1),tmp1(2)})
for hh2 = 1:length(FRE{tmp2(1),tmp2(2)})
indss1 = indss1 + 1;
%更新頻段
Fre_now ?= FRE{tmp1(1),tmp1(2)}(hh1);
%更新沖突數(shù)
Fre_nows ?????????????????= FRE;
Fre_nows{tmp1(1),tmp1(2)} = Fre_now;
Num = func_find_Num(Data_flow,FRE,Num_node);
Dswitching(indss1) = 2*k*abs(FRE{tmp1(1),tmp1(2)}(hh1) - FRE{tmp2(1),tmp2(2)}(hh2));
if Num(tmp1(1),tmp1(2)) > 0
Dbackoff(indss1) ??= W0{tmp1(1),tmp1(2)}/((1-Pc) * (1-(1-Pc)^(1/(Num(tmp1(1),tmp1(2))-1))));
else
Dbackoff(indss1) ??= 0;
end
%計算傳輸延遲
Dtrans(indss1) ??????= (1/(1-Pi{tmp1(1),tmp1(2)}))*S_data/( Band_Ws{tmp1(1),tmp1(2)}*log2(1 + SNRi{tmp1(1),tmp1(2)}) );
%進(jìn)行延遲信息反饋RREQ反饋
DNss(indss1) ????????= Dswitching(indss1) + Dbackoff(indss1) + Dtrans(indss1) ;
end
end
%找到最小值,給出最小值對應(yīng)的頻段及相關(guān)參數(shù)
DN(j) = min(DNss);
end
Num = func_find_Num(Data_flow,FRE,Num_node);
%計算路徑延遲 ???
%計算路徑延遲 ?
indss = 0;
for pp1 = 1:length(FRE{tmp1(1),tmp1(2)})
for pp2 = 1:length(FRE{tmp2(1),tmp2(2)})
indss = indss + 1;
H = length(Data_flow{i})-j+1;%多跳跳數(shù)
for j2 = 1:H
Dswitchingi_tmp(j2) = k*abs(FRE{tmp1(1),tmp1(2)}(pp1) - FRE{tmp2(1),tmp2(2)}(pp2));
end
Dswitchingi(indss) = sum(Dswitchingi_tmp);
if mod(H,2) == 0%偶數(shù)
for j2 = 1:H
Uhx_tmp(j2) = (1-P0)*qc^((1-Pc^j2)/(1-Pc^2));
end
Uhx = sum(Uhx_tmp);
end
if mod(H,2) == 1%奇數(shù)
for j2 = 1:H
Uhx_tmp(j2) = (1-P0)*qc^((1-Pc^j2)/(1-Pc^2)) + P0*Pc^(j2-1);
end
Uhx = sum(Uhx_tmp); ???????
end ??????
Dbackoffi(indss) ??= (S_data/Band_Ws{tmp1(1),tmp1(2)}) * (floor((H+1)/2) - Uhx)/Uhx;
DPss(indss) ?????????= Dswitchingi(indss) + Dbackoffi(indss);
end
end
DP(j) = min(DPss);
Droutej(j) ????= DP(j) + DN(j);
end
Droutej_i(:,i) ????= Droutej;
end
F_Droutej_i(:,:,pp) = Droutej_i;
end
%-----OVER:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----OVER:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----OVER:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%-----OVER:通過基礎(chǔ)算法A的相關(guān)方法計算目標(biāo)路徑的延遲
%最后的延遲為F_Droutej_i進(jìn)行求平均
for i = 1:size(Droutej_i,1)
for j = 1:size(Droutej_i,2)
Droutej_i_average(i,j) = mean(F_Droutej_i(i,j,:));
end
end
Droutess = mean(mean(Droutej_i_average));
01_044_m