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

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

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

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


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

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

  6. Задайте Выражение и/или Условие с помощью расположенных ниже элементов управления. Текущий элемент реплицированного объекта (т.е. тот, по которому в текущий момент проходит итерационный цикл функции сбора статистики) доступен в этих полях как item

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