您的位置:首页 > 其它

ns2下LEACH协议的一个简单仿真测试

2014-03-02 22:55 267 查看



默认分类2010-09-1621:30:33
阅读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!而你这个图在总体趋势上来看是个下降的走势!是符合我们的推断的!所以你这个仿真是有效的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: