少時几何

星月神话

导航

最小发射功率下WSN的连通性和覆盖率

简述:

实验要求我们将传感器节点随机均匀分布在1x1的方格中,然后计算节点的最小共同发射功率(COMPOW),保证网络刚好连通,并计算出这些节点的覆盖率。为了解决这个问题,我们的做法是随机均匀部署100个节点在1x1的方格中,结合判断连通性的算法[1],找出它们刚好连通时每个节点的最小通信半径,然后根据简化的路径损耗模型计算出此时的的发射功率,即我们求的COMPOW值;在计算覆盖率的时候,我们利用微元的思想,将 的方格划分成许多小正方形组成,然后统计覆盖区域小方格个数占总小方格个数的比例,该值近似为所求的覆盖率(方格越多,结果越精确)。

建模过程:

首先假设通信半径都等于感知半径,并且每个节点发射功率均相同。
1. 解最小通信半径
① 求出任意节点之间的距离(即通信半径),并递增排列;
② 利用实验一连通性的算法从①中递增距离中找出刚好使这些节点连通的距离。即最小通信半径d。
③ 利用简化的路径损耗模型计算出最小的共同发射功率 Pcompow:

2. 求解覆盖率
我们首先对半径为d的100个圆填充颜色,利用微元的思想,将1x1的方格划分成很多正方形小格,然后计算出覆盖区域所占的小方格数。

但是划分小方格程序上比较麻烦,于是我们想到了利用图像处理的方法,图像本身存储的就是矩阵,灰度图像矩阵元素的取值范围为p=[0,255],二值化处理后p=0 or 255,p=0代表纯黑色,p=255代表纯白色。于是利用Matlab的imread()函数将产生的图像转化为矩阵,统计里面0的个数(覆盖区域为黑色),再除以总的矩阵大小(这里为341x341),即为所求覆盖率,具体过程如下图:


图1 图像简单处理过程

画圆及填充的代码:

 1 clear all;
 2 clc;
 3 graph=rand(100,2);  %产生随机图
 4 dis=sort(pdist(graph));%产生任意两点之间的递增距离表
 5 theta=0:pi/100:2*pi;
 6 for n=1:size(dis,2);%递增距离
 7     if Connect(graph,dis(n))==1%判断是否连通
 8         d=dis(n);%最小连通距离
 9         break;
10     end
11 end
12 figure(1);
13 axis equal;
14 axis([0 1 0 1]);
15 for n=1:100
16     hold on
17     x = d*cos(theta) + graph(n,1);
18     y = d*sin(theta) + graph(n,2);
19     plot(x,y,'-');
20     fill(x,y,'k');
21 end
22 figure(2);
23 axis equal;
24 axis([0 1 0 1]);
25 for i=1:100
26     hold on
27     x = d*cos(theta) + graph(i,1);
28     y = d*sin(theta) + graph(i,2);
29     plot(x,y,'-');
30 end

 

 

 



 

posted on 2014-03-27 10:49  Lewiski  阅读(633)  评论(0编辑  收藏  举报