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