Создание новой популяции агентов на основе данных БД

Если вы создаете новую популяцию агентов, при этом значения атрибутов для всех агентов хранятся в базе данных, вы можете создать популяцию, основываясь на существующих данных.

Допустим, у вас есть подобная таблица в формате Excel и вы хотите создать популяцию, состоящую из пяти агентов-городов:


Данные таблицы в формате Excel должны соответствовать следующим требованиям форматирования: 

Данное видео показывает, как создать популяцию агентов и задать агентам атрибуты на основе данных из таблицы MS Excel:

Обучающее видео: Reading agent attributes from a database

Данное видео показывает, как получить из базы данных значения адресов/географических координат агентов и расположить агентов на ГИС-карте согласно полученным значениям:

Обучающее видео: Placing agents on the GIS map

  Как создать популяцию агентов, на основе существующих данных

  1. Перетащите элемент Агент из палитры Агент на графическую диаграмму, в которой хотите создать популяцию (обычно - Main). Откроется окно мастера: Создание агентов
  1. Сначала выберите, что вы хотите создать: популяцию агентов, единственного агента или просто создать тип агента (агенты выбранного типа позже будут создаваться, к примеру, блоком диаграммы процессов Source). Мы хотим создать Популяцию агентов, поэтому щелкните мышкой по элементу Популяция агентов. Мастер откроет следующий шаг.

  2. Если ваша модель уже содержит определенные типы агентов, на следующей странице Мастера выберите Я хочу создать новый тип агента и нажмите Далее.


  1. Вы увидите следующую страницу Мастера. Укажите Имя нового типа (в нашем случае это City).  Имя популяции после этого автоматически изменится на cities.
  2. На этой же странице Мастера выберите пункт Использовать таблицу базы данных, так как мы хотим считать атрибуты из базы данных.
  1. Если вы планируете использовать агентов этого типа в диаграмме процесса (составленной, например из блоков Библиотеки Моделирования Процессов), поставьте флажок напротив опции Агент будет использоваться в диаграммах процессов как: и выберите роль агента (Агент, Ресурс, и т.д.) из выпадающего меню справа. Нажмите Далее.

  2. Если вы предварительно импортировали таблицу базы данных во встроенную базу данных AnyLogic, укажите Использовать существующую таблицу и выберите имя таблицы в выпадающем списке справа. В противном случае, если вы еще не импортировали данные, и они находятся во внешней базе данных или таблице (как в нашем случае), выберите пункт Импортировать таблицу из внешнего источника данных
  3. В левой панели, укажите Тип базы данных (в нашем случае это Excel/Access, можно также использовать Microsoft SQL Server). 
  4. Нажмите на кнопку Выбрать и укажите местоположение базы данных в открывшемся окне. В правой панели вы увидите список таблиц базы данных (если список пуст, нажмите на кнопку Показать список таблиц). В появившемся списке выберите таблицу, которая содержит данные для популяции агентов. Нажмите Далее.


  1. На следующей странице Мастера вы можете задать параметры нового типа агента. В таблице Соответствие параметров агента можно увидеть список параметров, которые будут созданы. По умолчанию, AnyLogic предлагает создать один параметр для каждого столбца таблицы БД, который содержит данные. Имя параметра можно изменить в столбце Параметр. Если вы не хотите создавать определенные параметры, выберите соответствующую строку в таблице и нажмите на кнопку  Удалить ниже. Нажмите Далее, когда закончите.

  1. На следующей странице Мастера укажите тип анимации агента. Если вы хотите, чтобы агенты отображались и в 2D, и в 3D, выберите пункт 3D, затем выберите требуемую фигуру из списка ниже. Если Вам необходимо, чтобы фигура отображалась только в 2D, выберите пункт 2D и затем требуемую фигуру из списка. Если ни одна фигура анимации вам не подходит, просто выберите пункт Нет. Вы можете создать анимацию позже на диаграмме типа агента. После того, как вы выбрали анимацию агента, нажмите Далее, чтобы перейти к последнему шагу.

  2. На последней странице Мастера Конфигурация создаваемой среды необходимо настроить среду, в которой будут находиться эти агенты. Выберите тип пространства (Непрерывное, ГИС или Дискретное) и настройте его параметры с помощью элементов управления, расположенных ниже. Если вы выбираете Непрерывное пространство, укажите его размеры (ширину и высоту) в полях пункта Размер, также укажите тип сети контактов агентов (в выпадающем списке пункта Тип сети). Мы выберем пространство ГИС и покажем, как расположить наших агентов в координатах, которые будут взяты из базы данных.

  1.  Нажмите Готово, чтобы завершить создание типа агента.

После завершения, на диаграмме агента верхнего уровня Main, появится элемент - это популяция агентов. Количество агентов, содержащихся в популяции, равно количеству записей в таблице базы данных, которую мы использовали.  В дереве элементов панели Проекты появится созданный тип агента ( City). Карта ГИС также появится автоматически, так как мы выбрали тип пространства ГИС.

Теперь мы покажем, как расположить агентов в координатах, которые будут взяты из базы данных. Нажмите на элемент cities на диаграмме  агента Main. Откройте секцию Начальное местоположение в панели Свойства. В пункте Расположить агентов выберите в точке (широта, долгота) и укажите следующее:

Мы обращаемся к индивидуальному агенту в популяции с помощью локальной переменной self.

Теперь, после запуска модели, агенты будут расположены в соответствии с координатами, которые мы взяли из базы данных:

Вы можете продолжить развивать логику агента City. Откройте диаграмму агента двойным нажатием по элементу City в панели Проекты и добавьте на диаграмму элементы, которые посчитаете нужными.