在一个模拟器中停止节点的移动

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()函数获取。

希望我的回答能对您有所启发,解决您的问题。