Остановить движение узла в одном симуляторе - PullRequest
0 голосов
/ 17 декабря 2018

Как остановить движение определенного узла в One Simulator ?Настройки скорости находятся в default_settings.txt . Но как динамически изменить скорость узла?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

В этом случае вы также можете использовать другой модуль движения в папке движения.Большинство из них основаны на перемещении по карте. Если вы можете предоставить соответствующие данные, основанные на карте, вы можете достичь «двигаться в течение некоторого времени и останавливаться после этого».

Между тем, написание собственного модуля движения является альтернативным методом, и в большинстве случаев он может быть более эффективным.В ОДНОМ симуляторе вы должны знать, что местоположение каждого узла обновляется в функции moveHosts(double timeIncrement) в World.java.Чтобы реализовать свою собственную логику движения, вам нужно переписать функцию move() в DTNHost.java.Также требуется новый модуль движения (например, MoveAndStop.java), который наследует MovementModel class в MovementModel.java и изменяет примерно Group.MovementModel=MoveAndStop.java в default_settings.txt.

Обратите внимание, что если вы хотите реализовать свое собственное движениеЛогика в соответствии с текущим временем симуляции, вы можете вызвать функцию SimClock.getTime(), чтобы получить ее.

Надеюсь, мой ответ может вдохновить вас на решение вашей проблемы.

0 голосов
/ 29 декабря 2018

В папке движения существует модуль "StationaryMovement", который может заставить определенный узел оставаться в определенном месте.

Настройка в "default_settings.txt": чтобы включить этот модуль, сначала необходимо создатьэтот конкретный узел как отдельная группа (например, Group1).Затем вам нужно изменить настройку "movementModel" этой группы на "StationaryMovement".

Например:

Group1.groupID = S
Group1.nrofHosts = 1
Group1.movementModel = StationaryMovement
Group1.nodeLocation = [X,Y]
...
...
...