生成节点场景的方法
2014-03-07 20:09
162 查看
生成节点场景的方法是,在mit/uAMPS/sims目录下有一个名为genscen的文件,该文件是用来生成节点的场景文件,这个可以在leach_test脚本中找到。
# leach_test
……
#Topology
# This file is the scenario that we are going to run.
# This file can be editted manually if you are very careful to create
# a predefined topology. To generate a random topology go to the
# ./mit/uAMPS/sims directory and run 'ns genscen'.
topology_file="mit/uAMPS/sims/100nodes.txt"
……
ns tcl/ex/wireless.tcl /
-sc mit/uAMPS/sims/nodescen /
-rp $alg /
-x $x /
-y $y /
-nn $nn /
-stop $stop /
-eq_energy $eq_energy /
-init_energy $init_energy /
-filename $filename /
-dirname $dirname /
-topo $topology_file /
-num_clusters $num_clusters /
-bs_x $bs_x /
-bs_y $bs_y 2>$dirname/$filename.err 1>$dirname/$filename.out &
进入mit/uAMPS/sims目录下,发现在运行./test之前就事先存在一个100nodes.txt文件,把它删除,我们自己也可以手动运行ns genscen来生成一个新的new100nodes.txt文件,这个文件里保存的就是随机生成的100个节点的位置信息,内容类似如下:
65.745973803916002 92.581722416254564
21.008649990432268 92.380389195112684
37.201202259027028 40.606367467253641
71.218022131928251 61.297971318148988
35.003944130150579 11.288995440718249
……
【注意】从leach_test脚本可知,100nodes.txt文件是事先生成好的, 如果这个文件不存在的话,运行./test会在leach.err文件中发现如下错误信息:
# leach.err
INITIALIZE THE LIST xListHead
couldn't open "mit/uAMPS/sims/100nodes.txt": no such file or directory
while executing
"open $opt(topo) r"
invoked from within
"set filename [open $opt(topo) r]"
(file "mit/uAMPS/sims/nodescen" line 3)
invoked from within
"source.orig mit/uAMPS/sims/nodescen"
("uplevel" body line 1)
invoked from within
"uplevel source.orig [list $fileName]"
invoked from within
"if [$instance_ is_http_url $fileName] {
set buffer [$instance_ read_url $fileName]
uplevel eval $buffer
} else {
uplevel source.orig [list $fileName]
..."
(procedure "source" line 8)
invoked from within
"source $opt(sc)"
invoked from within
"if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $op..."
(file "tcl/ex/wireless.tcl" line 293)
打开事先存在的100nodes.txt文件,发现节点的位置信息是在100*100的范围内,但是从leach_test脚本中,却发现x=1000 y=1000,即是在1000*1000的范围内。所以打开genscen文件进行修改:
# genscen
set outf [open "new100nodes.txt" w]
set num_nodes 100
set rng [new RNG]
$rng seed 0
# set lim 100
set lim 1000 # modified
for {set i 1} {$i <= $num_nodes} {incr i} {
set x [$rng uniform 0 $lim]
set y [$rng uniform 0 $lim]
puts $outf "$x/t$y"
}
修改后切换到~/ns-allinone-2.27/ns-2.27/mit/uAMPS/sims路径下,重新运行ns genscen来生成一个新的new100nodes.txt文件,打开后内容类似如下:
878.56345711209042 853.09648879482245
443.34628593332428 208.33796365574838
31.64275643957907 710.22841646812321
527.89944202075685 348.46698834955089
859.54059840158595 567.67113533228223
……
【注意】leach_test脚本的设置的文件名为100nodes.txt,所以要将新生成的文件new100nodes.txt重命名为100nodes.txt,然后再./test才能成功。
使用gnuplot工具对修改后的100nodes.txt进行画图显示如下:
对于1000*1000的网络拓扑,由于距离加大了,相对于100*100的网络拓扑节点通信消耗的能量更多。
通过对1000*1000的leach.alive分析可以看出,在time=81s的时候,此时网络中仅有4个存活的节点。
0.000000 100
10.000000 91
20.000000 83
30.000000 67
40.000000 67
50.000000 34
60.000000 26
70.000000 14
80.000000 10
81.200000 4
图示如下:
# leach_test
……
#Topology
# This file is the scenario that we are going to run.
# This file can be editted manually if you are very careful to create
# a predefined topology. To generate a random topology go to the
# ./mit/uAMPS/sims directory and run 'ns genscen'.
topology_file="mit/uAMPS/sims/100nodes.txt"
……
ns tcl/ex/wireless.tcl /
-sc mit/uAMPS/sims/nodescen /
-rp $alg /
-x $x /
-y $y /
-nn $nn /
-stop $stop /
-eq_energy $eq_energy /
-init_energy $init_energy /
-filename $filename /
-dirname $dirname /
-topo $topology_file /
-num_clusters $num_clusters /
-bs_x $bs_x /
-bs_y $bs_y 2>$dirname/$filename.err 1>$dirname/$filename.out &
进入mit/uAMPS/sims目录下,发现在运行./test之前就事先存在一个100nodes.txt文件,把它删除,我们自己也可以手动运行ns genscen来生成一个新的new100nodes.txt文件,这个文件里保存的就是随机生成的100个节点的位置信息,内容类似如下:
65.745973803916002 92.581722416254564
21.008649990432268 92.380389195112684
37.201202259027028 40.606367467253641
71.218022131928251 61.297971318148988
35.003944130150579 11.288995440718249
……
【注意】从leach_test脚本可知,100nodes.txt文件是事先生成好的, 如果这个文件不存在的话,运行./test会在leach.err文件中发现如下错误信息:
# leach.err
INITIALIZE THE LIST xListHead
couldn't open "mit/uAMPS/sims/100nodes.txt": no such file or directory
while executing
"open $opt(topo) r"
invoked from within
"set filename [open $opt(topo) r]"
(file "mit/uAMPS/sims/nodescen" line 3)
invoked from within
"source.orig mit/uAMPS/sims/nodescen"
("uplevel" body line 1)
invoked from within
"uplevel source.orig [list $fileName]"
invoked from within
"if [$instance_ is_http_url $fileName] {
set buffer [$instance_ read_url $fileName]
uplevel eval $buffer
} else {
uplevel source.orig [list $fileName]
..."
(procedure "source" line 8)
invoked from within
"source $opt(sc)"
invoked from within
"if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $op..."
(file "tcl/ex/wireless.tcl" line 293)
打开事先存在的100nodes.txt文件,发现节点的位置信息是在100*100的范围内,但是从leach_test脚本中,却发现x=1000 y=1000,即是在1000*1000的范围内。所以打开genscen文件进行修改:
# genscen
set outf [open "new100nodes.txt" w]
set num_nodes 100
set rng [new RNG]
$rng seed 0
# set lim 100
set lim 1000 # modified
for {set i 1} {$i <= $num_nodes} {incr i} {
set x [$rng uniform 0 $lim]
set y [$rng uniform 0 $lim]
puts $outf "$x/t$y"
}
修改后切换到~/ns-allinone-2.27/ns-2.27/mit/uAMPS/sims路径下,重新运行ns genscen来生成一个新的new100nodes.txt文件,打开后内容类似如下:
878.56345711209042 853.09648879482245
443.34628593332428 208.33796365574838
31.64275643957907 710.22841646812321
527.89944202075685 348.46698834955089
859.54059840158595 567.67113533228223
……
【注意】leach_test脚本的设置的文件名为100nodes.txt,所以要将新生成的文件new100nodes.txt重命名为100nodes.txt,然后再./test才能成功。
使用gnuplot工具对修改后的100nodes.txt进行画图显示如下:
对于1000*1000的网络拓扑,由于距离加大了,相对于100*100的网络拓扑节点通信消耗的能量更多。
通过对1000*1000的leach.alive分析可以看出,在time=81s的时候,此时网络中仅有4个存活的节点。
0.000000 100
10.000000 91
20.000000 83
30.000000 67
40.000000 67
50.000000 34
60.000000 26
70.000000 14
80.000000 10
81.200000 4
图示如下:
相关文章推荐
- Delphi 中递归生成TreeView节点的方法
- Delphi 中递归生成TreeView节点的方法
- java 实际场景下根节点 叶子节点 的不处理方法
- 获取Cocos Studio 2.X生成资源的子孙节点的方法
- OSG场景子节点获取其到世界坐标系的方法
- 高并发、分布式交易场景下唯一ID生成方法
- 数据库生成父子节点显示在dropdownlist控件上 (sqlserver查询方法)
- 场景阴影生成方法及实现
- jquery生成ns节点,创建svg元素的方法
- android驱动下生成设备节点的方法
- 递归生成treeview树形节点(没有用递归函数之后会有补充,这里只用系统的内置方法去生成)
- 数据库生成父子节点显示在dropdownlist控件上 (sqlserver查询方法)
- 微信小程序节点查询方法:wx.createSelectorQuery()的使用场景与注意事项
- Delphi 中递归生成TreeView节点的方法
- 用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART1 推荐
- 生成网络节点拓扑场景
- 用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2
- c# winform结合数据库动态生成treeview的父节点和子节点方法和思路
- iOS防止用户恶意点击场景分析、防止用户恶意点击方法之本地动态验证码生成
- json教程系列(2)-生成JSONObject的方法