百思论坛
                                                                  -工程科技交流平台

百思论坛 » 网络仿真软件 » NS » LEACH源代码分析专题


2009-6-10 16:57 datou198431
LEACH源代码分析专题

在论坛上看到很多NS友人对LEACH有很多疑问,应大家的要求开启LEACH源代码分析专题。
希望老鸟们多来分享自己的经验,使后来人少走弯路。
盗用思思版主的话:
                           :rose   [size=3]一颗真诚的心期待共鸣,
                           :rose  一双温暖的手期待相携,
                           :rose  一对深情的眼睛期待回眸,[/size]
[size=3]望大家来论坛的时候,多来此专题踩一踩。[/size]
[size=3]                                                                                该贴将长期置顶[/size]

2009-6-10 16:59 datou198431
引用dingqian1019的帖子《LEACH仿真》

ns下leach协议仿真


摸索了很久,今天终于实现了leach协议的仿真。把自己的经验教训发一下,希望能帮助新手快些上路,俺也是新手,呵呵,也希望能多交流一下。

  一开始下载的是mannasim,但不知道为什么,leach协议运行的时候出了一堆错误。于是又重新下载了MIT leach包。

  重新安装了ns2.27,安装的时候遇到很多bugs,具体解决方案网上都有,整个安装过程相当考验人的耐心。然后安装了MIT leach。这个过程在网上很容易搜索到。

  leach安装成功后运行,却不知道该怎么用。于是在本论坛搜索,找到一个很不错的文档(附件1),介绍了MIT uAMPS扩展的一些东东。主要介绍了各个文件的作用,最后有一个运行leach的实例,不过这个实例少了些东西,现在补充一下:

1.在cd到mit/uAMPS/sims文件夹下,里面有一个名为genscen文件,该文件是用来生成节点的场景文件。c运行ns genscen便可以生成一个new100nodes.txt文件。这个txt文件里是随机生成的100个节点的位置信息。

2.cd到ns-2.27文件夹下。编写脚本,给脚本随便一个名字,比如zz,脚本内容如下:
#!/bin/bash
./ns ./tcl/ex/wireless.tcl \      
-sc mit/uAMPS/sims/nodescen \   
-rp leach \ //
-x 1000 \
-y 1000 \
-nn 101 \
-stop 500 \
-eq_energy 1 \
-init_energy 2 \
-filename wireless \
-dirname mit/uAMPS/sims \
-topo mit/uAMPS/sims/new100nodes.txt \
-num_clusters 5 \
-bs_x 0 \
-bs_y 0 \
各个选项的作用可以见附件1的8~10页。
在命令行下输入: chmod 777 zz 回车
然后 ./zz回车就能运行了

3.模拟完成后,就需要分析结果。结果文档同样在mit/uAMPS/sims文件夹下,分别为:wireless.alive,wireless.energy,wireless.data
wireless.alive第一行是运行时间,第二行就节点ID,第三行是如果是1,表示该节点还存活,如果是0,则表示节点死亡。
wireless.energy和wireless.data也是同样的结构。

接着利用awk,编写脚本,提取自己需要的信息。在网上搜索到了一个现成的——leach协议剩余节点和时间关系的awk脚本(来自于[url=http://blog.baisi.net/?105639/viewspace-3105]http://blog.baisi.net/?105639/viewspace-3105[/url])
[code]
BEGIN {

  countcyl=0;
totalleft=0;

  lasttime=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;
}
END {
for(i=0;i<=countcyl;i++)
printf ( "%f %d\n",time[i],total[i]);
}

[/code]
上面代码保存为.awk文件 提取leach.alive中的数据 用gnuplot画图就行了“

4.leach和leach-c图仿真图见附件2,其中alive是使用leach协议仿真时的剩余节点数量曲线,alive2是采用leach-c协议时的曲线。

罗嗦了半天,希望对大家有帮助。:)

2009-6-10 17:16 datou198431
下面的资源都是论坛上的,我汇总一下

LEACH的安装:[url]http://www.baisi.net/viewthread.php?tid=32413&highlight=leach[/url]
leach的有用文章:[url]http://www.baisi.net/viewthread.php?tid=47695&highlight=leach[/url]
LEACH论文PHD:[url]http://www.baisi.net/viewthread.php?tid=1150420&highlight=leach[/url]
LEACH协议添加错误的解决方案:[url]http://www.baisi.net/viewthread.php?tid=784595&highlight=leach[/url]
如何分析LEACH的数据:[url]http://www.baisi.net/viewthread.php?tid=52378&highlight=leach[/url]
LEACH的源程序下载:[url]http://www.baisi.net/viewthread.php?tid=10172&highlight=leach[/url]
LEACH协议的安装步骤:[url]http://www.baisi.net/viewthread.php?tid=67609&highlight=leach[/url]

2009-6-11 00:00 fenghuamanlou
顶顶顶顶!感谢版主应大家要求开了这个专题

各位大哥,我的leach也安装成功了,可是按照帖子上说的步骤做,第二步./zz之后出了那么多错,完全晕了,救救我吧。
QQ:549443820.24小时在线等,急急急急急!

2009-6-11 08:27 fenghuamanlou
继续顶,等待大侠来救命

开了这么好的专题怎么没人顶呢?人都去哪了?
难道只有我一个人运行leach时有这个错误吗?继续等待运行leach成功的前辈来救命。:)

2009-6-11 09:28 bereck
:good
辛苦,确实需要这样的专题,先顶一个

2009-6-11 12:37 dlsr007
我也在研究LEACH,想看源代码

2009-6-11 16:09 fenghuamanlou
真的没人来救我们这些小菜鸟吗?

难道大家都不做leach了吗?还是大家都不屑于解决这个小问题啊。只是我真的不知道该怎么改,出现这样的错误。
顺便说明下,我的zz文件每行最后没有空格,不是这个问题。
来位大英雄救救我们这些小菜鸟啊。:)

2009-6-13 21:55 bereck
楼主辛苦啊,希望大家多多支持啊

2009-6-16 00:19 漂石
终于开了一个LEACH专题。。。。。。。

2009-6-16 00:25 漂石
[quote]原帖由 [i]datou198431[/i] 于 2009-6-10 16:59 发表
ns下leach协议仿真


摸索了很久,今天终于实现了leach协议的仿真。把自己的经验教训发一下,希望能帮助新手快些上路,俺也是新手,呵呵,也希望能多交流一下。

  一开始下载的是mannasim,但不知道为什么 ... [/quote]

代码有错

代码见附件

2009-6-17 12:07 dlsr007
LEACH安装的问题

我用的是cygwin+ns-2.29。
按照帖子:[url]http://hi.baidu.com/zhubanty/blog/item/6366d6ddf3215c305982ddd4.html[/url]所说明的方法来安装的。
但是在make时出错:说在wireless-phy.cc中的sendup函数里面node_->getLoc()函数没有定义?请高手出手救命啊!

2009-6-17 14:18 sunshineonnet
谢谢版主的辛勤工作。

2009-6-18 00:07 datou198431
再加点受关注比较高的帖子

NS2.29下 LEACH的安装:[url]http://www.baisi.net/thread-1136246-1-1.html[/url]
安装LEACH出现的问题:[url]http://www.baisi.net/thread-52988-1-1.html[/url]

2009-6-21 19:58 dlsr007
回复 #14 datou198431 的帖子

看LEACH的源代码,从何处开始看啊
希望有一个看的顺序,能够顺着看下去

2009-6-24 17:42 dlsr007
在看LEACH的代码的时候,看到了有两个能量相关的类:EnergyResource 和EnergyModel,他们各自是用来计算什么能量的呢?

2009-7-3 10:03 michelle_yu
终于成功安装,接下来学习源代码,高手告诉我哪有好的源码分析阿,谢谢啦!

2009-7-3 15:50 xinxiuz
gunplot 画图时出现问题

请问楼主图像是自己弹出来的吗? 还是在哪个文件中呢? 前面都正确了  就是没有出来图像

2009-7-3 15:52 xinxiuz
[quote]原帖由 [i]datou198431[/i] 于 2009-6-10 16:57 发表
在论坛上看到很多NS友人对LEACH有很多疑问,应大家的要求开启LEACH源代码分析专题。
希望老鸟们多来分享自己的经验,使后来人少走弯路。
盗用思思版主的话:
                           :rose   一颗真诚的心期 ... [/quote]


请问楼主图像是自己弹出来的吗? 还是在哪个文件中呢? 前面都正确了  就是没有出来图像  已经生成data.gnuplot文件了  就是生不成图像

2009-7-10 12:25 漂石
set datasize [expr $spreading_factor * \
                         [expr $BYTES_ID * [llength $msg] + $opt(sig_size)]]
为什么[llength $msg]要乘以$BYTES_ID

页: [1] 2 3 4 5

  查看完整版本: LEACH源代码分析专题