NS2脚本中如何使用God(转)
来源:互联网 发布:淘宝店的数量限购 编辑:程序博客网 时间:2024/06/06 00:12
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 < $opt(nn)} {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0
$god_ new_node $node_($i)
}
- 这样这些节点对应的MobileNode对象的指针被填充到上面提到的mb_node数组中,在C++代码中可以随时随地通过God来获得当前网络的全局情况。比如判断两个节点是否邻节点,可以调用:
God::instance().IsNeighbor(i,j) //其中i,j是网络节点的地址
参考:http://blog.chinaunix.net/u1/33444/showart_273201.html
http://www.cse.msu.edu/~wangbo1/ns2/nshowto2.html
- NS2脚本中如何使用God(转)
- NS2脚本中如何使用God
- NS2脚本中如何使用God
- NS2脚本中如何使用God
- NS2脚本中如何使用God
- NS2中GOD的使用
- NS2中tcl脚本文件分析(转)
- 如何在NS2中产生和使用Poisson Traffic
- ns2利用god获取邻居列表
- 学习ns2过程中,如何在vim中使用cscope高效阅读代码
- NS2中如何实现广播broadcast
- rails中引入god
- NS2中有线网络trace文件分析脚本(awk)
- NS2使用tcl脚本debug工具tcl-debug-2.0
- ns2中定时器的使用详解
- Linux中使用GDB调试NS2
- ns2中定时器的使用详解
- 测试中如何使用自动化脚本?
- 全球大脑
- Linux环境 配置Java环境变量
- 良好的20条编程经验(转)
- 报表制作工具日期参数校验之二
- 最近学习了一下实分析。
- NS2脚本中如何使用God(转)
- va_start
- 让 火狐 只剩下导航栏
- P1024 外星人的密码数字
- 我看大学校园爱情
- hao,好学习。。
- 项目计划和需求变更控制
- C#创建与Excel打印输出(转载)
- 我的大学我的梦