【WSN】基于COMPOW協(xié)議下的網絡連通率和覆蓋率附matlab代碼
1 簡介
COMPOW (COMMON POWER)協(xié)議是一種簡單的將功率控制與路由協(xié)議相結合的解決方案,其基本思想是:所有的傳感器節(jié)點使用一致的發(fā)射功率,在保證網絡連通的前提下將功率最小化。COMPOW建立各個功率級的路由表,在功率Pi級時,通過使用功率Pi交換HELLO消息建立路由表RTpi,所有可達節(jié)點都是路由表中的表項。COMPOW選擇最小的發(fā)射功率使得與最大發(fā)射功率具有相同數量的表項,于是整個網絡使用公共的發(fā)射功率但該協(xié)議只適用于節(jié)點分布均勻的情況,缺陷較為明顯。
①在固定節(jié)點個數的前提下,仿真求得使網絡保持連通的最小通信半徑(最低能級、COMPOW協(xié)議)。
②在以上通信半徑的前提下,假設連通半徑等于覆蓋半徑,計算隨機布撒的節(jié)點的覆蓋率。
在1x1的單位矩形中隨機部署100個傳感器節(jié)點,假設每個節(jié)點的連通半徑一樣。對節(jié)點劃分為5個能級(一級:r=0.08,?二級:r=0.12,三級:r=0.16,四級:r=0.20,五級:r=0.24),分別模擬出連通率隨節(jié)點能級的變化趨勢,進而判斷出使網絡節(jié)點連通的最低能級r。
網絡節(jié)點連通性判斷采用Warshell算法,使用鄰接矩陣(adjacencyMatrix)表示各節(jié)點之間的連通性能。在該算法中,矩陣adjacencyMatrix是判斷矩陣,?表示從i到j連通,由于是無向圖,進而從i到j也連通。
2 部分代碼
%參數初始化、矩陣初始化
clc
clear all
close all
N=100;
M=(1000+1)*(1000+1); ?%將矩陣分為1000*1000份
r=0;
flag=zeros(1,M); %這里定義為一維數組是為了在計算覆蓋率的時候便于計算。先將其置零。
sum=0; ? ? ? ? ? %被覆蓋的額數
x=rand(1,N);
y=rand(1,N);
r ? ? %輸出最小能級對應的半徑
%繪制節(jié)點覆蓋范圍,并將其置為黑色。
angle=0:pi/50:2*pi;
for k=1:N
? ?figure(1);
? ?plot(r*cos(angle)+x(k),r*sin(angle)+y(k));
? ?plot(x(k),y(k),'.');
? ?axis([0,1,0,1]);
? ?axis equal;
? ?hold on ;
? ?figure(2);
? ?plot(r*cos(angle)+x(k),r*sin(angle)+y(k));
? ?plot(x(k),y(k),'.');
? ?fill(r*cos(angle)+x(k),r*sin(angle)+y(k),[0,0,0]);
? ?axis([0,1,0,1]);
? ?axis equal;
? ?hold on ;
end
%把矩陣分成1000*1000份,逐一判斷是否在覆蓋范圍內,并置標志位為1
for i=0:0.001:1 ? ?%把矩陣分成1000*1000份
? ?for j=0:0.001:1
? ? ? ?for m=1:N
? ? ? ? ? ?if (i-r)<x(m) && x(m)<(i+r) &&(j-r)<y(m) && y(m)<(j+r)
? ? ? ? ? ? ? ?if ?(x(m)-i)^2+(y(m)-j)^2<r^r
? ? ? ? ? ? ? ? ? ?flag( int32(i*1000*1001+j*1000)+1 )=1; ? ? ?%將已經被覆蓋的地方標記,從1開始,轉化成整型 ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %已被覆蓋就不用再計算
? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?end
? ? ? ?end
? ?end
end
%計算覆蓋率
for i=1:M
? ?if flag(i)==1
? ? ? ?sum=sum+1;
? ?end
end
sum
double(sum/M) ? %輸出覆蓋率,轉為double顯示 ? 0.1600 ? 0.9760
% sum(flag==1)/M ? ? %輸出覆蓋率
3 仿真結果

4 參考文獻
https://www.51dzw.com/embed/embed_78611.html
博主簡介:擅長智能優(yōu)化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯(lián)系博主刪除。
