AnyLogic поддерживает синхронное, асинхронное и смешанное моделирование. Асинхронное моделирование означает непрерывную ось модельного времени, возможность планирования событий в произвольные моменты времени и выполнение непрерывных процессов, таких, как в системной динамике. Синхронное моделирование подразумевает наличие дискретных временных шагов и синхронное выполнение агентами (а возможно, и средой) действий во время выполнения этих шагов. Хотя в большинстве случаев асинхронные модели ближе к действительности и также более эффективны с точки зрения затрат на вычисления (шагив этом случае никогда не выполняются зазря ), иногда проблемы лучше решаются с помощью синхронных моделей (это относится ко многим академическим проблемам и к тем системам реального мира, в которых решения принимаются периодически через определенные промежутки времени, например, каждый день или каждый месяц).
AnyLogic предоставляет встроенную поддержку синхронных агентных моделей. Предположим, что в Вашей модели есть класс активного объекта Person для агентов, у которого установлен флажок Агент, добавлен объект Среда на диаграмму корневого класса Main и у вложенного объекта people (типа Person) этот объект указан в поле Среда.
Чтобы добавить синхронизацию в агентную модель
В моменты времени 0, 1, 2, 3, ... будет гарантировано выполнение событий в следующем порядке:
Обычно две стадии действия среды используются для подготовки модели к шагу и для "обертывания" шага, например, для обновления статистики. Две стадии действия агента используются для сбора информации и для принятия некоторых решений. Например, в известной игре Жизнь каждая ячейка считает количество живых соседей в коде Действия перед выполнением шага и изменяет свое состояние в коде Действия на шаге.
Добавляя такую синхронизацию, Вы не ограничиваете динамику Вашей модели только лишь дискретными временными шагами. Ваши агенты, так же, как и другие объекты, могут планировать другие события, выполнять переходы диаграмм состояний, запускать другие процессы - и все это параллельно выполнению заданных шагов синхронизации.