在一个模拟器中停止节点的移动
Stop movement of a node in one simulator
如何停止One Simulator中特定节点的移动?
速度设置在default_settings.txt中找到。但是如何动态改变一个节点的速度呢?
在movement文件夹中,有"StationaryMovement"
模块,可以让特定的节点停留在特定的位置。
"default_settings.txt"
中的设置:
要启用此模块,首先,您需要将此特定节点创建为单个组(例如,Group1
)。然后,您需要将此组的 "movementModel"
设置更改为 "StationaryMovement"
。
例如:
Group1.groupID = S
Group1.nrofHosts = 1
Group1.movementModel = StationaryMovement
Group1.nodeLocation = [X,Y]
...
...
在这种情况下,您还可以使用movement文件夹中的其他movement模块。大部分都是基于地图的移动,如果你能提供相应的基于地图的数据,就可以实现"move for some time and stop thereafter"。
同时,编写自己的运动模块是一种替代方法,在大多数情况下它会更有效。
在ONE模拟器中,需要知道在World.java
中的moveHosts(double timeIncrement)
函数中更新每个节点的位置。
要实现自己的移动逻辑,需要重写DTNHost.java
中的move()
函数。 MovementModel.java
中的MovementModel class
继承default_settings.txt
中的Group.MovementModel=MoveAndStop.java
的新运动模块(例如MoveAndStop.java)也需要default_settings.txt
中的Group.MovementModel=MoveAndStop.java
变化。
注意,如果要根据当前模拟时间实现自己的运动逻辑,可以调用SimClock.getTime()
函数获取。
希望我的回答能对您有所启发,解决您的问题。
如何停止One Simulator中特定节点的移动? 速度设置在default_settings.txt中找到。但是如何动态改变一个节点的速度呢?
在movement文件夹中,有"StationaryMovement"
模块,可以让特定的节点停留在特定的位置。
"default_settings.txt"
中的设置:
要启用此模块,首先,您需要将此特定节点创建为单个组(例如,Group1
)。然后,您需要将此组的 "movementModel"
设置更改为 "StationaryMovement"
。
例如:
Group1.groupID = S
Group1.nrofHosts = 1
Group1.movementModel = StationaryMovement
Group1.nodeLocation = [X,Y]
...
...
在这种情况下,您还可以使用movement文件夹中的其他movement模块。大部分都是基于地图的移动,如果你能提供相应的基于地图的数据,就可以实现"move for some time and stop thereafter"。
同时,编写自己的运动模块是一种替代方法,在大多数情况下它会更有效。
在ONE模拟器中,需要知道在World.java
中的moveHosts(double timeIncrement)
函数中更新每个节点的位置。
要实现自己的移动逻辑,需要重写DTNHost.java
中的move()
函数。 MovementModel.java
中的MovementModel class
继承default_settings.txt
中的Group.MovementModel=MoveAndStop.java
的新运动模块(例如MoveAndStop.java)也需要default_settings.txt
中的Group.MovementModel=MoveAndStop.java
变化。
注意,如果要根据当前模拟时间实现自己的运动逻辑,可以调用SimClock.getTime()
函数获取。
希望我的回答能对您有所启发,解决您的问题。