leach.alive文件分析仿真

2010-11-24 wcdj

 

在leach协议装好后,可以开始对wireless.alive文件进行分析。wireless.alive的结构如下:
第一列表示:运行时间,第二列表示:节点ID,第三列表示:节点状态(如果是1,表示该节点还存活;如果是0,则表示节点死亡)。
用awk编写脚本提取自己需要的信息。

下面是leach协议剩余节点和时间关系的awk脚本:(可参考如下)


[1] leach_alive1.awk

# leach_alive1.awk BEGIN { idx=0; left=0; last_time=0; t[0]=0; alive[0]=100; } { time=$1; id=$2; state=$3; if (time>last_time ) { idx++; last_time=time; t[idx]=time; left=0; } if (state==1) left++; alive[idx]=left; } END { for(i=0; i<=idx; i++) printf ( "%f %d/n", t[i], alive[i]); }

[2] leach_alive2.awk

# leach_alive2.awk BEGIN{ step=10;# gap of time time=10; dead=0; node_cnt=0; nn=100;# the number of common node printf "%d %d/n", 0, nn>>outfile;# initial state } { if( $3==0 ) { dead++; } node_cnt++; if( node_cnt==nn ){ printf "%f %d/n", time, nn-dead>>outfile; time+=step; # 这个地方不精确了,由step导致的,最后可能不正好是step长度 # reset counter node_cnt=0; dead=0; } } 

 

把awk文件放在~/ns-allinone-2.27/ns-2.27/mit/leach_sims目录下:
cd ~/ns-allinone-2.27/ns-2.27/mit/leach_sims
[1] awk   -f   leach_alive1.awk   leach.alive   >   leach_alive.txt
[2] gwak   –v   outfile=leach_alive.txt   –f   leach_alive2.awk   leach.alive
然后会生成一个leach_alive.txt文件,里面是提取的数据。下一步就是用gnuplot画图了,具体操作见下图所示。
PS: Cygwin运行时一般只是进入字符操作界面,这时由于X-server没有启动,因此与图形界面相关的程序无法显示,只要先执行startx或者xinit后再运行gnuplot即可。在gnuplot运行后,可以通过set terminal命令查看此工具支持的图片格式。

 

leach.alive文件分析仿真_第1张图片

 

退出gnuplot之后,就会在~/ns-allinone-2.27/ns-2.27/mit/leach_sims目录下生成一个leach_alive.gif文件。
leach.alive文件分析仿真_第2张图片

 

从leach_alive.gif结果中,可以看出在每轮中还存活的节点数目。

PS:在leach中,可以从leach.out文件分析可知,一轮20秒,即每20秒选举一次簇首节点。上述图中横坐标注释为time更为合适。基站的位置为(50,175),注意基站的位置对仿真的影响比较大,可以测试不同的位置进行对比。

 

更多可参考:Jerry

 

 

你可能感兴趣的:(脚本,测试,工具,图形,Terminal,2010)