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

Сбор статистики по агентам

AnyLogic поддерживает удобный механизм сбора агрегированной статистики по популяции агентов.

Поддерживается следующие типы функций сбора статистики: Кол-во, Сумма, Среднее, Мин. и Макс.

  • Кол-во. Подсчитывает количество агентов, для которых будет выполнено заданное Условие.
  • Сумма. Последовательно проходит по всем агентам и вычисляет заданное Выражение для каждого агента. Возвращает сумму полученных значений.
  • Среднее. Последовательно проходит по всем агентам и вычисляет заданное Выражение для каждого агента. Возвращает среднее полученных значений.
  • Мин. Последовательно проходит по всем агентам и вычисляет заданное Выражение для каждого агента. Возвращает минимальное из полученных значений.
  • Макс. Последовательно проходит по всем агентам и вычисляет заданное Выражение для каждого агента. Возвращает максимальное из полученных значений.

При необходимости Сумма, Среднее, Мин. и Макс. значения могут вычисляться только для тех агентов, для которых будет выполнено дополнительное Условие. Например, мы хотим сосчитать средний возраст потребителей продукта в агентной модели Диффузии по Бассу. Пусть агенты в нашей модели представлены реплицированным объектом типа Person. У этого типа есть диаграмма состояний с состояниями PotentialAdopter и Adopter и параметр age, задающий возраст человека. В этом случае наша функция сбора статистики должны выглядеть так:

Чтобы задать у популяции агентов новую функцию сбора статистики

  1. Выделите популяцию агентов в графическом редакторе или в панели Проекты.
  2. Перейдите в секцию Статистика панели Свойства.
  3. Щелкните мышью по кнопке Добавить ф-ю сбора статистики. При этом откроется новый раздел свойств, в котором вы сможете задать свойства создаваемой функции.
  4. Измените имя функции в поле Имя. Это имя будет использоваться для вызова данной функции.
  5. Выберите тип функции сбора статистики с помощью группы кнопок Тип.
  6. Задайте Выражение и/или Условие с помощью расположенных ниже элементов управления. Текущий элемент реплицированного объекта (т.е. тот, по которому в текущий момент проходит итерационный цикл функции сбора статистики) доступен в этих полях как agent.
  7. Чтобы добавить другие функции сбора статистики, пожалуйста, повторите шаги 3-6. Если какая-то ранее заданная функция вам больше не нужна, вы можете удалить ее, щелкнув по кнопке в соответствующем разделе свойств.

Заданную функцию сбора статистики можно будет вызывать, как и любую другую функцию: написав ее имя, после которого должны следовать круглые скобки. То есть, чтобы произвести сбор статистики с помощью заданной на приведенном выше рисунке функции, нужно будет написать peopleStat().

Визуализация статистики по популяции агентов

Визуализировать статистику по популяции агентов можно с помощью графиков.

Демо-модель: SIR Agent Based Networks Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Изучить визуализацию статистики с помощью графиков можно с помощью приведенной модели. В ней есть популяция агентов people, для которой заданы следующие функции сбора статистики: NSusceptible(), NInfectious() и NRecovered().

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

Для отображения функций сбора статистики нужно выбрать опцию Значение и указать имя соответствующей функции в поле Значение. Поскольку функции заданы для популяции people, то перед именем функции помешается префикс «people»: people.NSusceptible(), people.NInfectious(), people.NRecovered().

Как мы можем улучшить эту статью?