ns2下LEACH协议的一个简单仿真测试
2014-03-02 22:55
267 查看
阅读74 评论0 字号:大中小 订阅
安装好了LEACH协议,运行./test后生成许多文件,结果文档在mit/leach_sims文件夹下,分别为:leach.alive,leach.energy,leach.data
leach.alive第一行是运行时间,第二行是节点ID,第三行记录的是节点状态,如果是1,表示该节点还存活,如果是0,则表示节点死亡。其他文件都是差不多的结构。模拟完成后,就需要分析结果。
在leach_sims文件夹下新建一个test.awk的文件,然后把以下代码复制进去,利用awk,编写脚本,提取自己需要的信息,提取leach.alive文件中的数据信息。{在网上搜索到了一个现成的--leach协议剩余节点和时间关系的awk脚本
BEGIN {
countcyl=0;
totalleft=0;
time[0]=0;
node=0;
total[0]=100;
};
{
simtime=$1;
nodeid=$2;
statenode=$3;
if(simtime>lasttime ) {
countcyl++;
lasttime=simtime;
time[countcyl]=simtime;
totalleft=0;
}
if (statenode==1)
totalleft++;
total[countcyl]=totalleft;
};#这些代码,处理leach.alive每一行,都执行一次。其大意为在total[i]存储第i轮时的剩余节点个数(存活节点数)time[i] 是第i轮对应的时间值
END {
for(i=0;i<=countcyl;i++) printf("%f=%d\n",time[i],total[i]);
};#这个代码,是在处理完leach.alive的最后一行之后执行的,就是在这里,将数据写到了输出文件中。 注意:printf ( "%f %d\n",time[i],total[i]); 这句%f和%d之间加一个空格!
注意:test.awk文件要在Linux环境下创建后,再拷贝代码进去,否则因为格式等问题,.awk文件运行时会出错。
这个AWK文件主要是用来处理leach.alive文件的,在终端进入mit/leach_sims目录下,输入命令
gawk -f test.awkleach.alive>data.gnuplot
该命令就是用AWK文件去处理leach.alive文件,处理结果存入data.gnuplot。
最后一,用gnuplot来画图!
在终端输入命令 gnuplot,回车进入gnuplot命令行,在gnuplot> 后输入命令 plot 'data.gnuplot' withlinespoints(w linesp 简写形式)回车这时候会生成如下一个图:
解析:
(1)如果我们把init_energy 2 \改为init_energy 10\
也就是节点的能量翻了5倍!那么,在270秒的时候是绝对没有节点死亡的!因为他们的能量消耗最多的才消耗到2J
(2)Data.gnuplot画出的仿真图像横坐标代表的是时间,纵坐标代表的是当前节点的总数
(3)我们定义的是一百的节点,在前270秒的时候,节点总数总是100,直到有节点能量损耗完毕,那个红点就会小于100!而你这个图在总体趋势上来看是个下降的走势!是符合我们的推断的!所以你这个仿真是有效的
相关文章推荐
- 如何在ns2中实现一个简单的网络协议
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 【转】Leach协议学习(2)——简单仿真测试
- 如何在ns2中实现一个简单的网络协议
- 如何在ns2中实现一个简单的网络协议
- 如何在ns2中实现一个简单的网络协议
- 【转】Leach协议学习(2)——简单仿真测试
- 如何在ns2中实现一个简单的网络协议
- 如何在ns2中实现一个简单的网络协议
- Leach协议在ns2下函数调用视图
- 用Python实现一个简单的文件传输协议
- NS2相关学习——完成一个新协议(3)
- 最简单的IOS Block与协议 block是一个数据类型
- 怎么在NS2中添加一个协议
- NS2学习笔记 在一个节点上同时使用不同的应用层协议
- NS2相关学习——完成一个新协议(2)
- 一个简单的通用协议测试软件(平台)