无线传感网络设计问题.docx
《无线传感网络设计问题.docx》由会员分享,可在线阅读,更多相关《无线传感网络设计问题.docx(17页珍藏版)》请在冰豆网上搜索。
无线传感网络设计问题
第二次个人赛论文姓名代码:
88
无线传感网络设计问题
摘要
本文针对无线传感网络节点的放置和节点间相互通信的路径选择问题做了深入的研究。
对于问题
(1),本文根据概率论知识(当试验次数足够大时,可以近似认为事件发生的频率等于其概率)采用计算机仿真法,在监视区域内随机安放n个节点,组建无线传感网络,然后在监视区域随机取20000个点,通过检验这些点是否全部被所组建的无线传感网络覆盖来判断所组建的无线传感网络能否成功覆盖整个区域。
进行多次仿真,统计并计算出由这n个节点组成的无线传感网络成功覆盖整个区域的频率,将此频率与95%比较,然后根据不同情况适当调整n的大小,最后找出能成功覆盖整个区域的概率在95%以上的最少节点数n为565个。
对于问题
(2),本文建立图论模型,在满足题设节点间通信条件的前提下,考虑通信的及时性的时效性,以通信所用时间最短为选取最优通路的原则,先建立所给的120个节点间的距离矩阵,然后将距离矩阵中大于10的元素变为无穷大,从而将距离矩阵转化为带权邻接矩阵,最后用matlab软件求解,通过调用Dijkstraf算法,求解出10组节点间的通信通路,比如节点1与节点90间的通信通路为18064254665669313387156090(详见表1)。
最后,本文对问题
(1)和问题
(2)中的模型进行了评价,并对第一问中的仿真模型求解时只检验无线传感网络对整个监视区域是否完全覆盖,而没有考虑随机安放的节点间能否相互通信的问题进行了进一步讨论,并提出以节点间距离的最小值为判断依据,在原覆盖的基础上剔除一些与其他节点间最小距离大于10的节点的修正方案。
并对模型进行了简单的推广。
关键词:
计算机仿真;图论模型;概率论;Dijkstraf算法
一、问题的提出和重述
问题的提出
大气污染所引起的地球气候异常,导致地震、旱灾等自然灾害频频发生,给人民的生命财产造成巨大损失。
因此,不少国家政府都在研究如何有效监测自然灾害的措施。
在容易出现自然灾害的重点地区放置高科技的监视装置,建立无线传感网络,使人们能准确而及时地掌握险情的发展情况,为有效地抢先救灾创造有利条件。
科技的迅速发展使人们可以制造不太昂贵且具有通讯功能的监视装置。
放置在同一监视区域内的这种监视装置(以下简称为节点)构成一个无线传感网络。
如果监视区域的任意一点都处于放置在该区域内某一节点的监视范围内,则称节点能覆盖该监视区域。
研究能确保有效覆盖且数量最少的节点放置问题显然具有重要意义。
问题的重述
图1无线传感网络覆盖示意图
图1中,叉形表示一个无线传感网络节点,虚线的圆形区域表示该节点的覆盖范围。
可见,该无线传感网络节点完全覆盖了区域B,部分覆盖了区域A。
网络节点间的通信设计问题是无线传感器网络设计的重要问题之一。
如前所述,每个节点都有一定的覆盖范围,节点可以与覆盖范围内的节点进行通信。
但是当节点需要与不在其覆盖范围内的节点通信时,需要其它节点转发才可以进行通信。
图2无线传感网络节点通信示意图
图2所示,节点C不在节点A的覆盖范围之内,而节点B在A与C的覆盖范围之内,因此A可以将数据先传给B,再通过B传给C。
行成一个A-B-C的通路。
问题1:
在一个监视区域为边长b=100(长度单位)的正方形中,每个节点的覆盖半径均为r=10(长度单位)。
在设计传感网络时,需要知道对给定监视区域在一定的覆盖保证下应放置节点的最少数量。
对于上述给定的监视区域及覆盖半径,确定至少需要放置多少个节点,才能使得成功覆盖整个区域的概率在95%以上?
问题2:
在1所给的条件下,已知在该监视区域内放置了120个节点,它们位置的横、纵坐标如表1所示。
请设计一种节点间的通信模型,给出任意10组两节点之间的通信通路,比如节点1与节点90如何通信等。
二、问题的分析
根据查询的相关资料,无线传感网络设计中的节点放置和节点间通信问题是近今年的热门课题。
由于地理条件的复杂,一般情况下无线传感网络设计中的节点只能采用非均匀投放的方法
。
鉴于此,本文对题目中的问题做了如下分析:
针对问题一:
由于安放节点是随机的,某事件发生的概率可以用多次实验中该事件发生的频率代替
而两者均可用计算机仿真实现,因此可通过计算机不断产生随机数模拟节点安放和监视区域各点被覆盖的情况,再以题目中95%为约束,找出最优节点数。
针对问题二:
对于该问题,根据题目中所给的120个节点的坐标,很容易求出各节点间的距离,由题设可知,一个节点不在另一个节点覆盖的范围之内,则两节点间不能直接通信,要通过其它节点间接通信。
在通过其它节点实现间接通信的过程中,肯定会产生不同的通信通路,本文要做的是找出任意两点间的最优通信通路。
这很容易让人联想到图论模型最短路径的求法,于是可根据题设限制条件,将各点间的距离矩阵转化为带权邻接矩阵,通过matlab软件求解出各点间的最优通信通路。
三、模型假设
1、各节点的覆盖范围相同且稳定,不受天气及电磁干扰;
2、任何节点与其覆盖范围内的节点间的通信强度相同;
3、节点间的通信距离与通信所用的时长成正比。
四、符号及变量说明
:
每次仿真随机产生的节点数;
N:
每次安放好节点后在监视区域内随机取的检验点个数;
:
监视区域内第i个随机点与第j个节点间的距离(i=1,2…N;j=1,2…n);
:
第i个监测点与n个节点的距离最小值(i=1,2…N);
:
每个节点的覆盖半径,r=10;
T;仿真次数;
:
可以成功覆盖整个监视区域的仿真次数;
:
仿真中能成功覆盖整个监视区域的频率;
:
n个节点成功覆盖整个监视区域的概率;
:
问题2中所给120个点中第i个点与第j个点之间的距离(i,j=1,2…120);
:
问题2中所给120个点之间的距离矩阵;
:
问题2中所给120个点中第i个点与第j个点之间通信路径权值(i,j=1,2…120);
:
问题2中所给120个点之间的带权邻接矩阵;
:
第i个节点域其他节点距离的最小值(i=1,2…n);
五、模型的建立和求解
对于问题一的模型建立和求解
查阅相关文献得知,无线传感网络中的节点安放是非均匀的
,本文建立仿真模型,通过计算机在监视区域内随机产生n个节点
来模拟节点的非均匀安放根据概率论知识:
当试验次数足够大时,可以近似认为事件发生的频率等于其概率,于是可通过计算机在已将安放好节点的监视区域内随机产生N个检验点
,并求出这N个点与各节点间的距离
然后选出每个检验点与n个节点的距离最小值
,根据题设节点间的通信条件,将
与覆盖半径r比较,对于所有的i=1,2……N(N取足够大),若满足
则可以认为这n个节点组成的无线通信网络可以成功将监视区域覆盖,否则则认为没有成功覆盖。
对上述过程进行T次仿真,统计能成功覆盖整个监视区域次数t,并计算出相应的频率f,当T取足够大时,可以认为这n个节点能成功覆盖整个监视区域的概率
根据题目要求,比较p与95%的大小
若
则增大n值;反之则减小n值,再重复上述仿真过程,直至找出
时的最小n值。
仿真算法流程图如下:
初始化系统状态手动调整n值
N
仿真次
数到了吗?
求频率,等于95%吗
在监视区内随机产生n个节点
Y
在已经安放好节点的区内随机取检验点
频数增加Y
N检验点被
覆盖了吗?
N
检验次数
到了吗?
本文仿真程序相应的参数为:
T=1000N=20000(详见附录二第一题程序),通过不断手动调整n的大小,最后找出能成功覆盖整个区域的概率在95%以上的最少节点数为565个。
对于问题二模型的建立和求解
根据题意,两节点间能直接相互通信的条件为
否则要通过其它节点间接进行通信,在通过其它节点实现间接通信的过程中,肯定会产生不同的通信通路,本文要做的是找出任意两点间的最优通信通路。
于是本文建立图论模型,考虑到通信的时效性和及时性,以通信所用时间最短为选取最优通路的原则,并根据本文条件假设3(节点间的通信距离与通信所用的时长成正比),将通信时间最短转化为路径最短,采用Dijkstraf算法求出任意给定的两点间的最优通信通路
。
Matlab程序求解步骤如下:
Step1:
求出120点两两之间的距离矩阵
;
Step2:
将D中大于r的元素变为
,将距离矩阵D转化为带权邻接矩阵
;
Step3:
采用Dijkstraf算法,将W带入其中,计算出任意给定两节点间的最优通信通路。
所得的十组节点间的最优通信通路如表1:
表1
1-2
11110770419510218361041032
1-10
180642510
1-20
111562106454111989920
1-30
11156210630
1-40
1805540
1-50
18050
1-60
180642546656693133871560
1-70
11110770
1-80
180
1-90
18064254665669313387156090
六、模型的评价和改进
模型的评价
优点
1 对于问题1本文在题目信息和查阅相关资料的基础上,用计算机仿真法模拟无线网络节点的不规则放置和检验无线网络的覆盖率,充分利用计算机的优势,化繁为简,以频率代替概率,得出的结论可信度高。
2 在仿真过程中,对重要参数调整问题,本文采用手动调整法,这样可以避免计算机仿真次数过多,程序运行时间过长的问题,既可以节省时间又可以较准确判断最理想的n值。
3 求解问题2时,本文在考虑通信的时效性和及时性的基础上,建立图论模型,并以通信时间最短为最佳路径选取依据,又通过合理假设将时间最短转换成距离最短,这样就能与Dijkstraf算法完美结合,也能很便捷的求出题目要求的制定两点间的通信通路。
缺点
1.计算机仿真次数有限,所得结果不可避免会有一定误差
2.在建立仿真模型,检验监视区域是否完全被覆盖时,只考虑了区内点的被覆盖的概率,没有考虑所有节点间是否能实现相互通信。
模型的改进
本文通过分析对问题1的中的仿真模型进行改进。
在每次随机布置好节点后,先通过节点间的距离对这n个节点布置合理性进行初步检验,以一个节点与其他各节点距离的最小值
为判断依据,当
>r
时,则该节点与其他节点不能实现通信,应该讲该节点剔除。
修改后测程序见附表二。
讲过修改后,得到能成功覆盖整个区域的概率在95%以上的最少节点数为571个。
七、模型的推广和应用
本文所建立的仿真模型,用到了随机抽取和循环迭代思想,可广泛应用于估计某些事件可能发生的概率。
本文建立的图论模型也可广泛应用到无线设备比如手机的信号传递路径选取上。
参考文献:
[1]陶丹,马华东,刘亮无线传感器网络节点部署问题研究,北京100876
[2]茆诗松,程依明,濮晓龙.概率论与数理统计教程[M].北京:
高等教育出版社.2009;
[3]主编MATLAB程序设计教程(第二版)[M].出版社.2010;
附录一:
120个节点的坐标表
节点标号
X
Y
节点标号
X
Y
节点标号
X
Y
节点标号
X
Y
1
57
58
31
6
33
61
32
95
91
74
44
2
95
74
32
85
9
62
47
71
92
41
25
3
34
12
33
64
37
63
50
43
93
39
21
4
31
68
34
22
13
64
56
43
94
95
51
5
52
67
35
69
43
65
56
25
95
72
76
6
30
4
36
80
83
66
47
25
96
79
8
7
15
75
37
76
13
67
80
64
97
78
44
8
75
52
38
88
94
68
10
96
98
10
80
9
75
30
39
25
95
69
12
33
99
8
89
10
65
28
40
62
45
70
63
70
100
15
95
11
55
63
41
70
70
71
39
9
101
45
90
12
41
61
42
45
42
72
81
89
102
70
82
13
36
20
43
35
9
73
43
14
103
90
78
14
72
24
44
75
41
74
17
25
104
84
78
15
16
10
45
35
91
75
80
55
105
20
70
16
85
49
46
56
30
76
45
61
106
40
71
17
86
90
47
27
92
77
92
40
107
55
70
18
75
90
48
92
90
78
78
22
108
5
95
19
32
20
49
25
58
79
89
45
109
73
18
20
5
92
50
44
52
80
51
51
110
22
28
21
16
35
51
5
80
81
40
90
111
17
80
22
25
66
52
17
33
82
65
49
112
50
10
23
72
4
53
90
5
83
76
7
113
55
20
24
68
33
54
25
74
84
30
98
114
87
22
25
61
35
55
58
47
85
26
34
115
72
98
26
37
78
56
95
2
86
28
99
116
55
79
27
48
46
57
87
72
87
25
8
117
7
2
28
81
31
58
68
88
88
29
63
118
85
20
29
23
90
59
30
28
89
40
83
119
35
50
30
35
66
60
9
9
90
4
11
120
10
68
附录三:
第一题程序
clc
clear
n=565;%设定n个节点
T=1000;%随机设定节点的次数
N=20000;%检验覆盖率的仿真次数
r=10;%覆盖半径
t=0;%被完全覆盖次数
fori=1:
T
m=0;%覆盖的点的个数,每次循环初始化为零
Q=0;%区域覆盖率,每次循环初始化为零
fori=1:
n%在监视区域内随机产生n个节点
A(i)=100*rand;%横坐标
B(i)=100*rand;%纵坐标
end
fori=1:
N%在监视区域内随机取N个点看其是否被覆盖
x=100*rand;%横坐标
y=100*rand;%纵坐标
fori=1:
n
d(i)=sqrt((x-A(i)).^2+(y-B(i)).^2);%计算该点与n个节点的距离
end
ifmin(d)<=r%判断该点是否被覆盖
m=m+1;
end
end
ifm==N%判断是否被完全覆盖
t=t+1
end
end
p=t/T%监视区域被完全覆盖的频率
第二题程序
clc
clear
x=load('');y=load('');%输入节点坐标
fori=1:
120
forj=1:
120
d(i,j)=sqrt((x(i)-x(j)).^2+(y(i)-y(j))^2);%求出各节点间的距离矩阵
ifd(i,j)>10%将距离矩阵转化为带权邻接矩阵
d(i,j)=inf;
end
end
end
[dis,path]=dijkstraf(d,1,5)%调用Dijkstraf算法
第一题改进后的程序
clc
clear
n=565;%设定n个节点
t=500;%随机设定节点的次数
N=5000;%检验覆盖率的仿真次数
r=10;%覆盖半径
f=0;%被完全覆盖次数
fori=1:
t
m=0;%覆盖的点的个数,每次循环初始化为零
Q=0;%区域覆盖率,每次循环初始化为零
fori=1:
n%在监视区域内随机产生n个节点
A(i)=100*rand;%横坐标
B(i)=100*rand;%纵坐标
end
fori=1:
n%剔除不能与其他节点相互通信的节点
forj=1:
n
d(i,j)=sqrt((A(i)-A(j)).^2+(B(i)-B(j))^2);
ifd(i,j)==0
d(i,j)=inf;
end
end
end
L=min(d);
fori=1:
n
ifL(i)>10
A(i)=inf;
B(i)=inf;
end
end
A(A==inf)=[];
B(B==inf)=[];
fori=1:
N%在监视区域内随机取N个点看其是否被覆盖
x=100*rand;%横坐标
y=100*rand;%纵坐标
fori=1:
size(A,2)%变化循环次数
d(i)=sqrt((x-A(i)).^2+(y-B(i)).^2);%计算该点与n个节点的距离
end
ifmin(d)<=r%判断该点是否被覆盖
m=m+1;
end
end
ifm==N%判断是否被完全覆盖
f=f+1
end
end
p=f/t%监视区域被完全覆盖的概率