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

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