Вы можете настроить блок Source для создания агентов с атрибутами, которые нужно считать из БД.
Если вам нужно создавать агентов в определенное время, обратите внимание на статью Source создает агентов в соответствии с метками времени в БД для детальных инструкций.
В данной статье мы опишем как считывать атрибуты агента из БД, но при этом создавать агентов в соответствии с временем между прибытием, интенсивностью, расписанием интенсивностей или расписанием прибытий блока Source.
Предположим, мы моделируем двустороннее движение транспорта в аэропорту. Мы знаем, что есть два курсирующих автобуса на маршрутах Blue route и Pink route с интервалом для каждого маршрута 20 минут.
Расписание Blue route: 00:10, 00:30, 00:50, 01:10, и т.д.
Расписание Pink route: 00:20, 00:40, 01:00, 01:20, и т.д.
Как видите, есть некий регулярный шаблон, который мы можем легко внедрить в модель. Мы хотим использовать только один блок Source для создания агентов, при этом не указывать постоянно время отправления.
Как заставить Source создавать агентов по шаблону и считывать параметры из БД
- Создайте новую таблицу. Затем создайте два столбца в таблице: route и destination (оба Типа: String) и внесите данные как показано на скриншоте ниже:
- Откройте свойства вашего блока Source. В списке Прибывают согласно, выберите вариант Времени между прибытиями.
- В поле Время между прибытиями ниже, напечатайте 10 и выберите минуты из списка справа. Таким образом, этот блок будет создавать агента каждые 10 минут.
- Теперь мы укажем ему создавать автобусы Blue и Pink по очереди. Шаблон будем считывать из БД. На строке ниже поставьте флажок напротив Считать параметры агентов из БД.
- В выпадающем списке пункта Таблица база данных укажите таблицу, которая содержит параметры агентов.
- Мы хотим, чтобы нашим агентам были присвоены атрибуты, поэтому нам нужно Создать другой тип агента — Bus. Чтобы создать новый тип агента с параметрами, которые будут соответствовать данным таблицы БД, щелкните правой кнопкой мыши таблице базы данных (routes) в панели Проекты, выберите Создать > Тип агента из контекстного меню. Откроется окно мастера настройки Создание агентов. На первой странице укажите Имя нового типа: Bus, и выберите анимацию типа. На следующей странице мастера настройки, вы найдете параметры агента, в которых уже будут заданы атрибуты (route и destination) в соответствии со столбцами БД.
- Теперь у вас есть новый тип агента с заданными параметрами. Откройте свойства блока Source и укажите тип агента Bus в выпадающем списке пункта Новый агент. В появившейся таблице ниже можно настроить соответствие параметров агента относительно столбцов таблицы.
Таблица содержит ограниченное количество записей. В предыдущем примере блок Source создавал агентов бесконечно. При достижении последней записи в указанной таблице, он продолжал работать с первой записи. Для данного примера этого было достаточно. Но в определенных случаях нужно, чтобы блок Source прошел по таблице только один раз.
Пример: атлеты начинают гонку в соответствии со стартовым протоколом. Интервал между стартами составляет 1 минуту. На таблице ниже показан стартовый протокол:
Как ограничить создание агентов количеством записей в таблице БД
- Повторите действия из предыдущего примера: импортируйте данные во встроенную таблицу БД AnyLogic, создайте другой тип агента Athlete, укажите блоку Source создавать агентов с временем между прибытиями в одну минуту, и установите флажок напротив пункта Считать параметры агентов из БД.
- В свойствах блока Source, установите флажок напротив пункта Ограниченное количество прибытий. Это укажет блоку прекратить создавать агентов после того, как он достигнет последней записи в указанной таблице БД.
-
Как мы можем улучшить эту статью?
-