1.程式功能描述
兩層基站(BS)組成整個通訊網路,第 1 層為 Macro 基站記為 ,第 2 層為 Micro 基站記為 ,均服從泊松分佈,相互獨立,在座標為 10×10km 的面積內、按照泊松分佈隨機生成若干個點(隨機拋灑兩遍 nodes,兩層疊加起來)。然後畫成 voronoi 圖: 也就是在相鄰兩個點(同種類的點)之間距離的二分之一處畫一條線。同時分析網路系統的能耗。
2.測試軟體版本以及執行結果展示
MATLAB2022a版本執行
3.核心程式
%計算每個使用者的訊號的強度 for i = 1:Nu %針對Macro %選擇最近的一個基站,計算對應的距離 for j1 = 1:N1 dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2); end dist1 = min(dist_tmp1); P1(i) = Pt1*h*DeltaB1*dist1^(-alpha1); %針對Micro %選擇最近的一個基站,計算對應的距離 for j2 = 1:N2 dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2); end dist2 = min(dist_tmp2); P2(i) = Pt2*h*DeltaB2*dist2^(-alpha2); %選擇較大的一個聯結 [V,I] = max([P1(i),P2(i)]); J(i) = I; end %計算得到的J為每個使用者對應選擇的基站標號 J; %根據如下規則計算SINR %定義與 Macro層BS連線的使用者集合 U1 = find(J==1); %定義與 Micro層BS連線的使用者集合 U2 = find(J==2); %計算SINR1和RATE1 %計算SINR2和RATE2 SINR1 = zeros(1,Nu); SINR2 = zeros(1,Nu); RATE1 = zeros(1,Nu); RATE2 = zeros(1,Nu); DeltaT1 = zeros(1,Nu); DeltaT2 = zeros(1,Nu); for i = 1:Nu %計算SINR1和RATE1 if J(i) == 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for j1 = 1:N1 dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2); end for j2 = 1:N2 dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2); end [V1,I1]= min(dist_tmp1); dist1 = V1; FZ = Pt1*h*dist1^(-alpha1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ind1 = 0; tmps = []; for j1 = 1:N1 if (j1 < I1) | (j1 >I1) ind1 = ind1 + 1; tmps(ind1) = Pt1*h*dist_tmp1(j1)^(-alpha1); end end FM1 = sum(tmps); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tmps = []; for j1 = 1:N2 tmps(j1) = Pt2*h*dist_tmp2(j1)^(-alpha2); end FM2 = sum(tmps); SINR1(i) = FZ/(FM1+FM2+10^(delta2/20)/1000); RATE1(i) = B*log2(1+SINR1(i)); DeltaT1(i) = epsl/RATE1(i); else SINR1(i) = 0; RATE1(i) = 0; DeltaT1(i) = 0; end %計算SINR2和RATE2 if J(i) == 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for j1 = 1:N1 dist_tmp1(j1) = sqrt((xu(i)-x1(j1))^2 + (yu(i)-y1(j1))^2); end for j2 = 1:N2 dist_tmp2(j2) = sqrt((xu(i)-x2(j2))^2 + (yu(i)-y2(j2))^2); end [V2,I2]= min(dist_tmp2); dist2 = V2; FZ = Pt2*DeltaB2*h*dist2^(-alpha2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tmps = []; for j1 = 1:N1 tmps(j1) = Pt1*h*dist_tmp1(j1)^(-alpha1); end FM1 = sum(tmps); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tmps = []; ind2 = 0; for j1 = 1:N2 if (j1 < I2) | (j1 >I2) ind2 = ind2 + 1; tmps(ind2) = Pt2*h*dist_tmp2(j1)^(-alpha2); end end FM2 = sum(tmps); SINR2(i) = FZ/(FM1+FM2+10^(delta2/20)/1000); RATE2(i) = B*log2(1+SINR2(i)); DeltaT2(i) = epsl/RATE2(i); else SINR2(i) = 0; RATE2(i) = 0; DeltaT2(i) = 0; end end %計算E Pbs1 = zeros(1,Nu); Pm1 = zeros(1,Nu); Pbs2 = zeros(1,Nu); Pm2 = zeros(1,Nu); 12_011m
4.本演算法原理
網路通訊系統的Voronoi圖顯示與能耗分析是一種結合網路通訊和圖形學的方法,用於研究網路中各個節點之間的連線關係和能量消耗情況。透過Voronoi圖,我們可以直觀地展示網路中各個節點的可達性和連線關係,同時分析網路的能耗分佈和最佳化方法。
Voronoi圖,也稱為泰森多邊形,是一種基於點集的分割圖形。在這個圖中,每個點被表示為一個頂點,每個頂點周圍區域內的其他點都距離該點最近。透過Voronoi圖,我們可以將一個連續的平面分割為若干個不重疊的區域,使得每個區域都包含一個頂點。
在網路通訊系統中,我們可以將網路中的各個節點作為Voronoi圖的頂點,節點之間的連線關係作為邊。透過這種方式,我們可以將網路拓撲結構轉化為圖形結構,從而更直觀地展示網路的連線關係。
Voronoi圖的生成主要依賴於計算幾何中的一些基本演算法。以下是生成Voronoi圖的基本步驟:
確定頂點集:在網路通訊系統中,頂點集可以由網路中的各個節點構成。
確定距離函式:距離函式用於計算任意兩個節點之間的距離。在Voronoi圖中,距離函式通常採用歐幾里得距離或曼哈頓距離。
計算最小生成樹:最小生成樹是一種包含所有頂點且邊權值最小的樹形結構。在網路通訊系統中,最小生成樹可以用於表示網路中各個節點之間的連線關係。常用的最小生成樹演算法有Prim演算法和Kruskal演算法。
生成Voronoi圖:根據最小生成樹和距離函式,我們可以生成Voronoi圖。在生成過程中,對於每個頂點,我們計算其周圍區域內的其他頂點距離該點的距離,並將這些頂點連線起來形成邊。最終得到的圖形就是Voronoi圖。
在網路通訊系統中,能耗是一個重要的效能指標。能耗分析旨在研究網路中各個節點的能量消耗情況,以便進行最佳化和節能。在進行能耗分析時,我們可以考慮以下幾個方面:
傳輸能耗:節點在傳輸資料時需要消耗能量。傳輸能耗與傳輸距離、傳輸速率以及傳輸功率等因素有關。一般來說,傳輸距離越遠,傳輸速率越高,傳輸功率越大,則傳輸能耗也越大。
接收能耗:節點在接收資料時也需要消耗能量。接收能耗與接收速率、接收功率等因素有關。一般來說,接收速率越高,接收功率越大,則接收能耗也越大。
處理能耗:節點在處理資料時需要消耗能量。處理能耗與處理器的時脈頻率、指令執行能耗等因素有關。一般來說,處理器的時脈頻率越高,指令執行能耗越大,則處理能耗也越大。
空閒能耗:節點在空閒狀態下也需要消耗能量。空閒能耗與節點的待機功耗等因素有關。一般來說,節點的待機功耗越大,則空閒能耗也越大。