Вы можете смоделировать прилив с помощью повторного запуска по времени.
AnyLogic предлагает Динамическое Событие для этого, событие, которое может перепланировать себя.
В зависимости от того, как у вас есть данные времени для приливов (список дат времени, фиксированных периодов, базы данных), вы можете получить это значение для каждого нового графика динамического события.
Я приложил скриншот простого образца модели. Здесь я предполагаю, что у вас есть список с интервалом в минутах между каждым влияющим на порт моментом прилива (отлив / порт заблокирован - отлив / порт открыт - отлив / порт заблокирован - и так далее ....). Затем динамическое событие устанавливает логическую переменную portBlocked, но в зависимости от ваших потребностей вы также можете инициировать переход Statechart, блокировать блок-схемы или вызвать функцию.
Код действия динамического события:
portBlocked=!portBlocked;
create_MyDynamicEvent(tideIntervalsInMinutes.get(tideCounter),MINUTE);
tideCounter++;
Пояснение к коду:
- Запустите необходимые действия (здесь простая логическая переменная)
- Перепланировать событие для следующего изменения прилива
- Обновление счетчика приливов (используется для извлечения соответствующего интервала времени приливов из списка)
В коде запуска модели вам нужно будет инициировать динамическое событие один раз, для этого просто используйте тот же код, что и в пункте 2 выше.