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


默认分类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!而你这个图在总体趋势上来看是个下降的走势!是符合我们的推断的!所以你这个仿真是有效的 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值