Проблемы производительности: альтернатива условному событию - PullRequest
1 голос
/ 06 апреля 2020

так что моя модель работает нормально, но так как я ввел условные события (= событие, которое срабатывает при выполнении заданного условия), я считаю, что производительность вычислений снижается.

Это особенно раздражает, когда я проводить эксперименты со многими итерациями ...

Есть ли альтернативный способ вызвать событие при указанном условии?

Спасибо:)

1 Ответ

1 голос
/ 06 апреля 2020

Ответом на это будет инициирование событий непосредственно механизмом, влияющим на условия, которые вы отслеживаете. Поэтому вместо проверки «постоянного» состояния убедитесь, что при каждом изменении условия вы запускаете проверку. Если это невозможно, потому что слишком много влияющих факторов или оно постоянно меняется, рассмотрите циклическую проверку c с дискретными временными шагами с подходящим вам интервалом. Даже это будет гораздо более эффективным (в зависимости от выбранного вами интервала проверки времени), чем текущий непрерывный мониторинг.

Пример того, как выполнять мониторинг триггера событий вместо непрерывного мониторинга:

В вашей главной записи добавьте глобальную переменную-счетчик типа int (здесь: nrAgentsState1) и создайте функцию для обновления этой переменной (здесь: updateStateCounter). Также в функции: проверка, которая запускает функцию при достижении вашей границы.

Global count variable and update function in Main[1]

При переходе в состояние, которое вы хотите отслеживать (здесь: состояние1), вызовите функция в main, которая обновляет глобальный счетчик. Для перехода, выходящего из отслеживаемого состояния, добавьте то же действие, но с параметром -1 .

Update counter on transition

...