Включение приливов в AnyLogic - PullRequest
1 голос
/ 28 марта 2019

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

1 Ответ

0 голосов
/ 09 апреля 2019

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

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

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

Tide Trigger Example Model (Screenshot)

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

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

Пояснение к коду:

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

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

...