Включение времени прилива в AnyLogic

#anylogic

#anylogic

Вопрос:

Каким был бы наилучший способ включить изменяющееся время прилива в модель AnyLogic? Я хотел бы использовать время для эффективной блокировки и разблокировки порта. Я рассмотрел параметр расписания, и формат (Начало: День1, Время) не кажется лучшим способом сделать это.

Ответ №1:

Вы можете моделировать прилив с помощью повторяющегося триггера по времени. AnyLogic предлагает для этого динамическое событие, которое может само себя перепланировать.

В зависимости от того, как у вас есть временные данные для приливов (список дат, фиксированные периоды, база данных), вы можете извлекать это значение для каждого нового перепланирования динамического события.

Я приложил скриншот простого образца модели. Здесь я предполагаю, что у вас есть список с интервалом в минутах между каждым моментом прилива, влияющим на порт (Отлив / порт заблокирован — Прилив / Порт открыт — Отлив / Порт заблокирован — и так далее ….) . Затем динамическое событие устанавливает логическую переменную portBlocked, но в зависимости от ваших потребностей вы также можете инициировать переход диаграммы состояния, блокировать модули блок-схемы или запускать функцию.

Пример модели запуска прилива (скриншот)

Код действия динамического события:

 portBlocked=!portBlocked;
create_MyDynamicEvent(tideIntervalsInMinutes.get(tideCounter),MINUTE);
tideCounter  ;
  

Объяснение кода:

  1. Запускайте необходимые действия (здесь простая логическая переменная)
  2. Перепланируйте событие для следующего изменения прилива
  3. Обновите счетчик прилива (используется для извлечения соответствующего интервала времени прилива из списка)

В коде запуска модели вам сначала нужно будет запустить динамическое событие один раз, для этого просто используйте тот же код, что и в пункте 2 выше.