AnyLogic
Развернуть
Размер шрифта

Source создает агентов с параметрами, которые считывает из БД

Вы можете настроить блок 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 создавать агентов по шаблону и считывать параметры из БД

  1. Создайте новую таблицу. Затем создайте два столбца в таблице: route и destination (с данными типа String) и внесите данные как показано на скриншоте ниже:

  2. Откройте свойства вашего блока Source. В списке Прибывают согласно выберите вариант Времени между прибытиями.
  3. В поле Время между прибытиями ниже напечатайте 10 и выберите минуты из списка справа. Таким образом, этот блок будет создавать агента каждые 10 минут.
  4. Теперь мы укажем ему создавать автобусы Blue и Pink по очереди. Шаблон будем считывать из БД. На строке ниже поставьте флажок напротив Считать параметры агентов из БД.
  5. В выпадающем списке пункта Таблица база данных укажите таблицу, которая содержит параметры агентов.
  6. Мы хотим, чтобы нашим агентам были присвоены атрибуты, поэтому нам нужно Создать другой тип агента — Bus. Чтобы создать новый тип агента с параметрами, которые будут соответствовать данным таблицы БД, щелкните правой кнопкой мыши таблице базы данных (routes) в панели Проекты, выберите Создать > Тип агента из контекстного меню. Откроется окно мастера настройки Создание агентов. На первой странице укажите Имя нового типа: Bus, и выберите анимацию типа. На следующей странице мастера настройки, вы найдете параметры агента, в которых уже будут заданы атрибуты (route и destination) в соответствии со столбцами БД.
  7. Теперь у вас есть новый тип агента с заданными параметрами. Откройте свойства блока Source и укажите тип агента Bus в выпадающем списке пункта Новый агент. В появившейся таблице ниже можно настроить соответствие параметров агента относительно столбцов таблицы.

Таблица содержит ограниченное количество записей. В предыдущем примере блок Source создавал агентов бесконечно. При достижении последней записи в указанной таблице, он продолжал работать с первой записи. Для данного примера этого было достаточно. Но в определенных случаях нужно, чтобы блок Source прошел по таблице только один раз.

Пример: атлеты начинают гонку в соответствии со стартовым протоколом. Интервал между стартами составляет 1 минуту. На таблице ниже показан стартовый протокол:

Как ограничить создание агентов количеством записей в таблице БД

  1. Повторите действия из предыдущего примера: импортируйте данные во встроенную таблицу БД AnyLogic, создайте другой тип агента Athlete, укажите блоку Source создавать агентов с временем между прибытиями в одну минуту и установите флажок напротив пункта Считать параметры агентов из БД.
  2. В свойствах блока Source установите флажок напротив пункта Ограниченное количество прибытий. Это укажет блоку прекратить создавать агентов после того, как он достигнет последней записи в указанной таблице БД.
Как мы можем улучшить эту статью?