如何解决NS2:分配移动节点时节点移动性错误
我尝试通过修改一些脚本行,从现有的 NS-2.35 M-DART 协议制作一个移动节点。但是当我运行脚本有一个错误说:
anal2@ubuntu:~/Downloads/test2$ ns 1_mdart-EM.tcl
num_nodes is set 10
INITIALIZE THE LIST xListHead
INITIALIZE THE LIST xListHead
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.2,distCST_ = 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0
SORTING LISTS ...DONE!
SORTING LISTS ...DONE!
ns: _o23 setdest 175.0 90.0 0.0:
(_o23 cmd line 1)
invoked from within
"_o23 cmd setdest 175.0 90.0 0.0"
invoked from within
"catch "$self cmd $args" ret"
invoked from within
"if [catch "$self cmd $args" ret] {
set cls [$self info class]
global errorInfo
set savedInfo $errorInfo
error "error when calling class $cls: $args" $..."
(procedure "_o23" line 2)
(SplitObject unkNown line 2)
invoked from within
"_o23 setdest 175.0 90.0 0.0"
移动节点的面积应该设置为节点密度。我还为移动节点设置了目的地,但错误仍然存在。我在某处做错了吗?我在下面提供我的脚本以供参考。谢谢:D
已编辑:我忘记将节点移动速度设置在 setdest 节点上。但是即使我输入了速度值,仍然会出现同样的错误。
###########################################
# Define Option
###########################################
set val(chan) Channel/WirelessChannel; #channel type
set val(ant) Antenna/OmniAntenna; #antenna type
set val(propagation) Shado; #propagation model
set val(netif) Phy/Wirelessphy; #network interface type
set val(ll) LL; #link layer type
set val(ifq) Queue/DropTail; #interface queue type
set val(ifqlen) 50; #max packet in ifq
set val(mac) Mac/802_11; #MAC type
set val(rp) MDART; #routing protocol
set val(n) 10 ; #node number
set val(density) 4096; #node density [node/km^2]
set val(end) 206.0; #simulation time [s]
set val(dataStart) 100.0; #data start time [s]
set val(dataStop) [expr $val(end) - 6.0]; #data stop time [s]
set val(seed) 1; #general pseudo-random sequence generator
set val(macFailed) true; #ATR protocol: ns2 MAC Failed callback
set val(etxMetric) true; #ATR protocol: ETX route metric
set val(throughput) 5.40; #CBR rate (<= 5.4Mb/s)
#########################################
# Channel Model
#########################################
#Setting antenna at center of node,1.5 meters above it
Antenna/OmniAntenna set X_ 0
Antenna/OmniAntenna set Y_ 0
Antenna/OmniAntenna set Z_ 1.2
Antenna/OmniAntenna set Gt_ 1.0 ;#transmitter gain
Antenna/OmniAntenna set Gr_ 1.0 ;#receiver gain
Phy/Wirelessphy set L_ 1.0 ;#system loss factor
if {$val(propagation) == "TwoRay"} {
set val(prop) Propagation/TwoRayGround
set prop [new $val(prop)]
Phy/Wirelessphy set CPThresh_ 10.0 ;#capt. thresh. in Watt
Phy/Wirelessphy set CSThresh_ 1.559e-11 ;#carr. sens. thresh.
Phy/Wirelessphy set RXThresh_ 3.652e-10 ;#receive signal thresh
Phy/Wirelessphy set freq_ 2.4e9 ;#chan. freq. (Hz)
Phy/Wirelessphy set Pt_ 0.28 ;#trans. signal power (Watt)
}
if {$val(propagation) == "Shado"} {
set val(prop) Propagation/Shadowing
set prop [new $val(prop)]
$prop set pathlossExp_ 3.8 ;#path loss exponent
$prop set std_db_ 2.0 ;#shadowing deviation (dB)
$prop set seed_ 1 ;#RNG seed
$prop set dist0_ 1.0 ;#ref. distance (m)
$prop set CPThresh_ 10.0 ;#capt. thresh (Watt)
$prop set RXThresh_ 2.37e-13 ;#rec. sign. thresh
$prop set CSThresh_ [expr 2.37e-13 * 0.0427] ;#carr. sens. thresh
$prop set freq_ 2.4e9 ;#chann. freq (Hz)
Phy/Wirelessphy set Pt_ 0.28
}
#####################################################
# Topology DeFinition
#####################################################
#Scenario creation according to chosen node density
set val(dim) [expr $val(n) / $val(density)]
set val(x) [expr [expr sqrt($val(dim))] * 1000]
set val(y) [expr [expr sqrt($val(dim))] * 1000]
####################################################
# Pseudo-random sequence generator
####################################################
#General pseudo-random sequence geneator
set genSeed [new RNG]
$genSeed seed $val(seed)
set randomSeed [new RandomVariable/Uniform]
$randomSeed use-rng $genSeed
$randomSeed set min_ 1.0
$randomSeed set max_ 100.0
#mobility model: x node position [m]
set genNodeX [new RNG]
$genNodeX seed [expr [$randomSeed value]]
set randomNodeX [new RandomVariable/Uniform]
$randomNodeX use-rng $genNodeX
$randomNodeX set min_ 1.0
$randomNodeX set max_ [expr $val(x) - 1.0]
#mobility model: Y node position [m]
set posNodeY [new RNG]
$posNodeY seed [expr [$randomSeed value]]
set randomNodeY [new RandomVariable/Uniform]
$randomNodeY use-rng $posNodeY
$randomNodeY set min_ 1.0
$randomNodeY set max_ [expr $val(y) - 1.0]
#Data pattern: node
set genNode [new RNG]
$genNode seed [expr [$randomSeed value]]
set randomNode [new RandomVariable/Uniform]
$randomNode use-rng $genNode
$randomNode set min_ 0
$randomNode set max_ [expr $val(n) - 1]
################################
# General deFinition
################################
#Instantiate the simulator
set ns [new Simulator]
#Define topology
set topo [new Topography]
$topo load_flatgrid $val(x) $val(y)
#create GOD
create-god $val(n)
##############################
# Trace file deFinition
##############################
;#create trace object for ns,nam,monitor and inspect
set tracefile [open ns.tr w] ;#Adding this
$ns trace-all $tracefile ;#adding this
;#new format for wireless traces
$ns use-newtrace
#set namTr [open nam.tr w]
#$ns namtrace-all-wireless $namTr $val(x) $val(y)
set scenarioTr [open scenario.tr w]
#nam file creation
set namfile [open mdart.nam w]
$ns namtrace-all $namfile
$ns namtrace-all-wireless $namfile $val(x) $val(y)
#set chan [new $val(chan)];
#create channel
set chan_1_ [new $val(chan)]
set chan_2_ [new $val(chan)]
$prop topography $topo
#Global node setting
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propInstance $prop \
-phyType $val(netif) \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace OFF \
-movementTrace OFF \
-channel $chan_1_
################################
# Nodes deFinition
################################
;# Create the specified number of nodes [$val(n)] and "attach" them to the channel.
#for {set i 0} {$i < $val(n) } {incr i} {
# set node($i) [$ns node]
# $node($i) random-motion 0 ; #disabled random motion
#$ns initial_node_pos $n($i) 20 ;
#}
################################
# Node conode(figurationode(
################################
;#node initial coordinates
set node(0) [$ns node]
$node(0) random-motion 0
$node(0) set X_ 20.0
$node(0) set Y_ 65.0
$node(0) set Z_ 0.0
$ns initial_node_pos $node(0) 20
set node(1) [$ns node]
$node(1) random-motion 0
$node(1) set X_ 50.0
$node(1) set Y_ 10.0
$node(1) set Z_ 0.0
$ns initial_node_pos $node(1) 20
set node(2) [$ns node]
$node(2) random-motion 0
$node(2) set X_ 0.0
$node(2) set Y_ 0.0
$node(2) set Z_ 0.0
$ns initial_node_pos $node(2) 20
set node(3) [$ns node]
$node(3) random-motion 0
$node(3) set X_ 95.0
$node(3) set Y_ 35.0
$node(3) set Z_ 0.0
$ns initial_node_pos $node(3) 20
set node(4) [$ns node]
$node(4) random-motion 0
$node(4) set X_ 8.0
$node(4) set Y_ 50.0
$node(4) set Z_ 0.0
$ns initial_node_pos $node(4) 20
$ns node-config \
-channel $chan_2_
set node(5) [$ns node]
$node(5) random-motion 0
$node(5) set X_ 150.0
$node(5) set Y_ 165.0
$node(5) set Z_ 0.0
$ns initial_node_pos $node(5) 20
set node(6) [$ns node]
$node(6) random-motion 0
$node(6) set X_ 30.0
$node(6) set Y_ 70.0
$node(6) set Z_ 0.0
$ns initial_node_pos $node(6) 20
set node(7) [$ns node]
$node(7) random-motion 0
$node(7) set X_ 65.0
$node(7) set Y_ 114.0
$node(7) set Z_ 0.0
$ns initial_node_pos $node(7) 20
set node(8) [$ns node]
$node(8) random-motion 0
$node(8) set X_ 50.0
$node(8) set Y_ 165.0
$node(8) set Z_ 0.0
$ns initial_node_pos $node(8) 20
set node(9) [$ns node]
$node(9) random-motion 0
$node(9) set X_ 180.0
$node(9) set Y_ 100.0
$node(9) set Z_ 0.0
$ns initial_node_pos $node(9) 20
###################################
# Nodes placement
###################################
#parameters for trace Inspect
puts $scenarioTr "# nodes: $val(n),max time: $val(end)"
puts $scenarioTr "# nominal range: 250"
for {set i 0} {$i < $val(n)} {incr i} {
set X [expr [$randomNodeX value] ]
$node($i) set X_ $X
set Y [expr [$randomNodeY value] ]
$node($i) set Y_ $Y
$node($i) set Z_ 0.0
$ns initial_node_pos $node($i) 20
puts $scenarioTr "\$node_($i) set X_ $X"
puts $scenarioTr "\$node_($i) set Y_ $Y"
puts $scenarioTr "\$node_($i) set Z_ 0.0"
}
###################################
# moving nodes
###################################
$ns at 3.0 "$node(0) setdest 175.0 90.0 15.0"
#$ns at 3.0 "$node(6) setdest 52.0 12.0 25.0"
#############################
# Data load
#############################
set udp0 [new Agent/UDP]
$ns attach-agent $node(0) $udp0
set null0 [new Agent/Null]
$ns attach-agent $node(6) $null0
$ns connect $udp0 $null0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 1000
$cbr0 attach-agent $udp0
$cbr0 set rate_ [expr $val(throughput) / [expr $val(n) * sqrt($val(n))]]Mb
$ns at $val(dataStart) "$cbr0 start"
$ns at $val(dataStop) "$cbr0 stop"
###############################
# Routing model (for M-DART)
###############################
if {$val(rp) == "M-DART"} {
Agent/ATR set macFailed_ $val(macFailed)
Agent/ATR set etxMetric_ $val(etxMetric)
}
############################
# Tracing
############################
;#Simulation time print
proc timeTrace { tracePause} {
global ns
set Now [$ns Now]
$ns at [expr $Now + $tracePause] "timeTrace $tracePause"
puts "$Now simulation seconds"
}
$ns at 10.0 "timeTrace 10.0"
if {$val(rp) == "MDART"} {
for {set i 0} {$i < $val(n)} {incr i} {
# printing the routing table
$ns at [expr $val(end) - 1.0] "[$node($i) agent 255] routingTablePrint"
# printing the dht table
$ns at [expr $val(end) - 0.5] "[$node($i) agent 255] dhtTablePrint"
}
}
#########################
# Start and end
#########################
for {set i 0} {$i < $val(n) } {incr i} {
$ns at $val(end) "$node($i) reset";
}
$ns at $val(end) "fileTrace"
$ns at $val(end) "$ns halt"
proc fileTrace {} {
#global ns tracefile namTr
global ns tracefile scenarioTr
$ns flush-trace
close $tracefile ;#adding tis
#close $scenarioTr
#close $namTr
#exec nam nam.tr &
}
$ns run
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。