Setdest用法
最近要从 ns2里面提取出它是怎么设置随机点分布的程序代码,然后加载到我自己的程序中,这样随机点产生的算法就不用自己编写了,多好。setdest就是这个关键的命令。在ns2下是这样用的:
节点分布在1000×1000的正方形区域中,每个节点随机选择自己的运动方向和运行速度,最小速度1m/s,最大速度为2m/s,,平均停留时间2s,场景持续300s,命令如下:
setdest -v 2 -n 30 -s 1 -m 1.0 -M 2.0 -t 300 -P 1 -p 2.0 -x 1000 -y 1000 > scen-30n-2p-300t-1000-1000
setdest -v 2 -n 30 -s 1 -m 1.0 -M 2.0 -t 300 -P 1 -p 2.0 -x 1000 -y 1000 > scen-30n-2p-300t-1000-1000
(setdest有两种命令格式,第一种的格式比较陈旧,所以不采用了)
生成的文件是scen-30n-2p-300t-1000-1000,里面有如下语句:
$ns_ at 50.000000000000 "$node_(2) setdest 369.463244915743 170.519203111152 3.371785899154"
这个的意思是在50秒时,节点2开始以3.37m/s的速度向(368.4,170.5)运动。
另外我们还能看到:
$god_ set-dist 1 2 2
$god_ set-dist 1 2 2
这是为God对象装入最短跳信息,表示节点1、2之间的最短跳数是2。提供了这个信息,就可以避免God在仿真运行时计算最短跳耗费大量时间。 Setdest程序使用random waypoint算法产生移动模型文件,此文件中已经包含了象上面一行那样的为God加载信息的语句。
下面是CMU document对god的解释:
“God(General Operations Director)用于保存一个全局的环境、网络或节点状态信息,这些信息应该由一个观测者掌握,而不应由任何一个仿真的参与者掌握”。目前,God对象 只保存网络中总共节点数和一个表格,其中保存从一个节点到另一个节点所需的最小跳数。下一跳信息一般是在仿真开始之前,通过运动模式文件加载到God对象 中的,主要因为在仿真中计算这些值非常耗费时间。然而,为了使这个例子尽量简洁,我们不使用模式文件,因此也就不给God对象提供下一跳信息。如何使用模 式文件给God提供下一跳信息将在本节的后半部分讨论。”
看了半天,我觉得它保存的就是各个节点到其他节点的跳数,节点移动过程中,动态的更改这个god对象:
$ns_ at 899.642 "$god_ set-dist 23 46 2" 表示:在节点23和46之间的最短路径在899.642s时变为2跳。
在CMU的Monarch项目中使用了God提供的链路长度信息来分析用于adhoc的最优链路长度,这些信息同样在每个包的CMUtrace中被打印出 来。这些信息的其他用途:1、通过移动模型,分析拓扑变化速率的特性。2、鉴别分裂部分的频率和大小。3、当通过God提供完美的邻居信息而不付出任何代 价时,研究路由协议的表现。
另外在学习setdest的时候,发行有同目录下还有一个叫做calcdest的程序,位于 (~ns/indeputilities/cmuscengen/setdest/calcdest,可以用来为由其他程序产生的移动模型文件加入为 God加载信息的语句。这个程序要求输入的移动模型文件符合一定格式,否则程序无法运行。如果calcdest不能处理你的模型文件,一个最简单的方法是 先把模型文件输入ad-hockey程序,然后再保存一下,如果这个程序能够读入你的模型文件,它会把它保存成为calcdest可处理的格式。
Setdest和calcdest都基于无线传输范围来计算节点间的最短跳数,而忽略了其他任何实际仿真中使用的传播模型的影响,这个范围可以通过这些程序的输入参数指定或直接从模型文件中读取。
看来目前与我无关。
(以上内容是从
http://www.isi.edu/nsnam/ns/tutorial/ 看到的,好东东,就载上来了)。
现在我的任务就是把scen-30n-2p-300t-1000-1000的内容提取出来,然后处理之。