leach.energy分析仿真

2010-11-24 wcdj

 

本文对wireless.energy文件进行分析。wireless.energy的结构为:第一列表示:运行时间,第二列表示:节点ID,第三列表示:节点目前消耗的能量。用awk编写脚本提取自己需要的信息。下面是分析leach协议中,节点目前已消耗能量和时间关系的awk脚本:(可参考如下)
[1] leach_energy.awk (awk代码)
# leach_energy1.awk BEGIN{ node1=18; node2=65; node3=80 node4=96; } { if($2==node1){ if($3>2) $3=2; # init_energy=2 print $1,$3>>node1; } if($2==node2){ if($3>2) $3=2; print $1,$3>>node2; } if($2==node3){ if($3>2) $3=2; # init_energy=2 print $1,$3>>node3; } if($2==node4){ if($3>2) $3=2; print $1,$3>>node4; } }
把awk文件放在~/ns-allinone-2.27/ns-2.27/mit/leach_sims目录下:
cd ~/ns-allinone-2.27/ns-2.27/mit/leach_sims
gawk   -f   leach_energy.awk   leach.energy

执行后,会在~/ns-allinone-2.27/ns-2.27/mit/leach_sims目录下生成4个文件名为节点ID的文件。使用gnuplot工具对其中一个文件可生成如下图形:

leach.energy分析仿真_第1张图片

从图形中可以看出,随着时间(round,轮)节点消耗能量的变化趋势。

修改leach_energy.awk脚本文件,将输出全部重定向到leach_energy.out一个文件中,并画图显示如下:
[2] leach_energy2.awk (awk代码)
# leach_energy2.awk BEGIN{ node1=18; node2=65; node3=80 node4=96; output="leach_energy.out" } { if($2==node1){ if($3>2) $3=2; # init_energy=2 print $1,$3>>output; } if($2==node2){ if($3>2) $3=2; print $1,$3>>output; } if($2==node3){ if($3>2) $3=2; # init_energy=2 print $1,$3>>output; } if($2==node4){ if($3>2) $3=2; print $1,$3>>output; } }


leach.energy分析仿真_第2张图片

从图形中可以看出,随着时间的变化,有些节点消耗的能量并不均匀,即,在某个时间段曲线很陡。(这是LEACH协议有待改进的地方)
PS:LEACH协议是一个负载均衡的协议。它的基本思想是:以循环的方式选择簇首节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH协议可以将网络生命周期延长%15。

 

注意修改:在leach中,可以从leach.out文件分析可知,一轮20秒,即每20秒重新选举一次簇首节点。上述图中横坐标注释为time更为合适。

 

 

参考:Getting started with awk

 

 

你可能感兴趣的:(负载均衡,网络,能源,脚本,图形,output)