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

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

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

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

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