NS2脚本中如何使用God - 程序开发 - 文档专区 - Linux论坛

来源:百度文库 编辑:神马文学网 时间:2024/05/01 20:28:31
NS2脚本中如何使用God
在无线网络模拟中,借助God可以获得整个网络的一些全局性信息。在有些情况下,这些信息非常必要,比如要判断两个相邻无线节点是否在传输范围之类。
NS2对God的支持在C++空间中主要是God类,该类分别声明和实现在ns-2.30/mobile/god.h文件和ns-2.30/mobile/god.cc文件中(我使用的是ns-2.30版)。
如果在仿真脚本里使用God,需要以下几个基本设置:

  • 在node-config命令的选项中要开启能量模型,如果不开启能量模型,God将认为所有的节点之间都不相邻,其他信息也无从获得,这显然不是我们想要的。

$ns_ node-config    -...... \
                    -energyModel $opt(engmodel) \
                    -initialEnergy $opt(initeng) \
                    -txPower $opt(txPower) \
                    -rxPower $opt(rxPower) \
                    -idlePower $opt(idlePower) \
                    -......

  • 当然前面设置好上面这些参数的值:(以下为常用的典型值)

set opt(engmodel)    EnergyModel
set opt(initeng)    10000.0
set opt(txPower)    0.660
set opt(rxPower)    0.395
set opt(idlePower)    0.035

  • 以上设置完毕,下面创建God对象:

set god_ [create-god $opt(nn)]
$god_ on
#这里还可以加一些其他设置,比如
#$god_ allow_to_stop

  • 上面的变量$opt(nn)是网络中节点的数量,也许要提前赋值,例如:

set opt(nn) 10

  • 创建God对象后,C++空间的God对象也被创建,并且C++空间的God对象里的mb_node数组被分配,每个数组元素是一个MobileNode对象的指针,数组大小就是网络节点的数量大小。但现在这些指针的值都还为NULL,不指向任何MobileNode对象(MobileNode类是对应无线网络节点的类)。为了给这些指针赋值,在Tcl脚本里需要添加一些代码,具体的位置是在NS创建节点后,将这些节点与God联系起来:

for {set i 0} {$i

  • 这样这些节点对应的MobileNode对象的指针被填充到上面提到的mb_node数组中,在C++代码中可以随时随地通过God来获得当前网络的全局情况。比如判断两个节点是否邻节点,可以调用:

God::instance().IsNeighbor(i,j)   //其中i,j是网络节点的地址


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94593/showart_1913163.html
NS2脚本中如何使用God - 程序开发 - 文档专区 - Linux论坛 在autoconf/automake项目中禁止优化 - 程序开发 - 文档专区 - Linux论坛 linux下多进程、多线程编程 - 技术文档 - 程序开发 Linux时代 - 开源、自由... 关于linux图形界面编程基本知识 - 技术文档 - 程序开发 Linux时代 - 开源、... ldd3之模块学习总结(页 1) - 文档专区 - 无分类文档 - Linux论坛 - p... 我的计划--嵌入式学习路径 - 技术文档 - 程序开发 Linux时代 - 开源、自由、共... 我的计划--嵌入式学习路径 - 技术文档 - 程序开发 Linux时代 - 开源、自由、共... 我如何使用一个脚本把 Word 文档保存为文本文件? 在vs2008下开发基于C sharp的wince 程序 - 开发者专区 - [魅族论坛] Linux如何卸载程序 如何使用脚本创建环境变量? 如何访问 nand flash 分区 - 嵌入式开发 - Linux论坛 linux 2.6的shell脚本中如何kill掉 sleep进程 gcc编译选项介绍(转) - 技术文档 - 程序开发 Linux时代 - 开源、自由、共享 - 中国最大的Linux技术社区 使用PHP脚本修改Linux或Unix系统口令 使用PHP脚本修改Linux或Unix系统口令 在Eclipse3.1中如何使用Lomboz3.1开发JSP 在Eclipse3.1中如何使用Lomboz3.1开发struts 如何在项目开发过程中使用Struts-menu 在Eclipse3.1中如何使用Lomboz3.1开发JSP 在RCP程序中嵌入Word文档 如何使用gcc编译器? - 《Linux设备驱动开发详解》学习笔记 - DaiQ 使用Axis开发Web Service程序 转:Linux使用Eclipse开发C/C++