Как остановить запуск симуляции по истечении определенного времени, НЕ отметьте
все.
Независимо от того, что делает моя модель, я хочу остановить симуляцию после работы в течение определенного времени (реального времени). Например, остановитесь через 5, 10 или 15 минут. Я попытался остановить его через 5 минут, используя
RunEnvironment.getInstance()endAt(double tick)
следующим образом:
RunEnvironment.getInstance()endAt(5000)
Он останавливается на 4 минуте 44 секунде. Я наткнулся на этот ответ , но, похоже, это не то, что я ищу (я могу ошибаться). Есть ли лучший способ добиться этого? Я очень новый для застолья и как - то путать о клеще концепции.
Спасибо.
1 ответ
Вот цитата из недавней газеты re. концепция клеща, которая может помочь.
События в симуляциях Repast управляются планировщиком дискретных событий. Сами эти события запланированы на определенный тик. Тики не обязательно представляют время, а скорее приоритет связанного с ним события. Галочки определяют порядок, в котором события происходят относительно друг друга. Например, если событие A запланировано на тик 3, а событие B - на тик 6, событие A произойдет до события B. Предполагая, что в промежуточные тики ничего не запланировано, за A сразу же последует B. Нет внутреннего понятия B. происходит через 3 тика. Конечно, тикам можно и часто придается некоторое временное значение посредством реализации модели. Например, имитация трафика может перемещать трафик вперед на 30 секунд для каждого тика.
Если вы хотите запланировать остановку по истечении некоторого времени на стене (например, 5 минут), вы можете запланировать действие, которое получает время при его первом вызове, а затем впоследствии проверяет, истекло ли правильное время. В этот момент вы могли позвонить
RunEnvironment.getInstance().endRun()
. Как выполнить арифметику времени - это вопрос Java, поэтому, если вы введете в Google запрос «Прошедшее время Java» или что-то подобное, вы должны получить ответ.
Что касается планирования действия, вам необходимо создать класс, реализующий IAction (https://repast.github.io/docs/api/repast_simphony/repast/simphony/engine/schedule/IAction.html) и запланировать это в любом месте. интервал кажется подходящим.