WSN 无线传感网络模拟测试
src/main/java/com/ten/wsn/connection
(1)在不同节点数目n情况下,拟合出连通率与通信半径的关系曲线
(2)在不同通信半径R情况下,拟合出连通率与节点数量n的关系曲线
(1)在不同节点数目下,判断连通率与通信半径的关系:
a. 在一个边长为1的正方形区域,随机撒N个节点,即通过rand函数随机生成节点X、Y轴坐标从而生成随机节点
b. 改变通信半径R,从0.01每次递增0.01直到达到1
c. 遍历生成的随机节点,根据sqrt函数求得两点间的距离r,判断r与R的大小关系;若r
d. 根据随机节点的连通性判断来创建邻接矩阵p
e. 通过快速wars hell算法判断图连通性,求p,p^2,…直到p的n-1阶矩阵,将所有矩阵相加;若矩阵中存在0元素,则判断图不连通;反之,则判断图连通
f. 重复上述实验1000次,将图连通的次数与实验次数1000次相处,即得到了连通率
(2)在不同通信半径下,判断连通率与节点数目的关系:
a. 在边长为1的正方形区域内,给定通信半径R;
b. 改变节点数目N,从1每次递增1直到达到100;
c. 根据节点数目N,通过rand(n,2,1)创建随机节点,矩阵第一列为节点X轴坐标,矩阵第二列为节点Y轴坐标;
d. 遍历生成的随机节点,根据sqrt函数求得两点间的距离r,判断r与给定R的大小关系;若r
e. 根据随机节点的连通性判断来创建邻接矩阵p
f. 通过快速wars hell算法判断图连通性,求p,p^2,…直到p的n-1阶矩阵,将所有矩阵相加;若矩阵中存在0元素,则判断图不连通;反之,则判断图连通
g. 重复上述实验1000次,将图连通的次数与实验次数1000次相处,即得到了连通率
src/main/java/com/ten/wsn/coverage
(1)给定传感器网络规模(即节点数目n)和能级,绘出网络的覆盖图;
(2)给定传感器网络规模(即节点数目n),拟合出网络覆盖率与能级之间的关系折线图。
(1)步骤描述
A. 给定节点数目n = 100,通信半径R=0.10.3(R基于实验一的结果,100个随机节点,通信半径在0.10.3之间可实现连通)
B. 在一个边长为1的正方形区域,随机撒100个节点,即通过rand函数随机生成节点X、Y轴坐标从而生成随机节点;
C. 判断随机网络是否连通,如连通执行下步,否则返回A
D. 将边长为1的正方形区域,划分成100*100网格,将网格的交点作为实验对象点;
E. 在网格中,从上到下,从左到右遍历各交点,,根据sqrt函数求得每一个交点到100个随机节点的距离r,判断r与R的大小关系;若r
F. 将被覆盖的交点个数N / 总交点数100*100,即为所要求得传感器网络的覆盖率;
G. 多次改变所给定的通信半径R的值,求得其覆盖率;
src/main/python/com/ten/wsn/clustering
语言:python
库:numpy matplotlib
给定场景,给定WSN的节点数目,节点随机分布,能按照LEACH的介绍,实现(每一轮)对WSN的分簇。
请记录前k轮(eg.k=10)/ 绘制第k轮时,网络的分簇情况,即每个节点的角色(簇头or簇成员)及其关系,如是簇成员,标记其所属的簇头
Note要求:
节点数目不宜过小;每轮只完成分簇,不考虑通信过程;每轮可以以定时器确定,也可以以完成当轮分簇为准;
簇成员在寻找簇头时,以距离作为接收信号强弱的判断依据;当选为簇头的节点将,以后几轮的分簇中将,不再成为簇头,这个约束条件,在仿真中应能体现。
http://www.biyezuopin.vip
src/main/python/com/ten/wsn/energy
语言:python
库:numpy matplotlib
情况1:给定所有节点具有相同的能量,考查第一个节点能量耗尽出现在第几轮。
情况2:节点具有不同的能量,考查第一个节点能量耗尽出现在第几轮。
Note:可参考如下设计,可以不局限于如下设计。
对于节点的能量和能量消耗可以简化处理:节点初始能量为整数(eg.5000mJ),节点的能量消耗仅考虑关键的几次通信过程,其他能量消耗不计。
几次通信过程:
setup:
簇成员:每收1个候选簇头信息,则能量-1,每个候选簇头仅被收集1次;通知簇头成为其成员,发送信息-2。
候选簇头:被簇成员接收信息,即发送信息,则能量-2;被通知成为簇头,接收信息-1。
Steady:
每个簇成员每轮向簇头发送10次数据,每次成员能量-2,簇头能量-1。