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

Функции для сбора статистики по коллекции

AnyLogic предлагает ряд функций для сбора статистики по элементам коллекции. Эти функции определены в классе UtilitiesCollection и являются глобальными (доступными из любой части модельного кода). Любую функцию из списка ниже можно вызвать, просто напечатав ее имя без префикса с именем популяции: count( people, p -> p.income > 10000 );

Подсчет элементов, удовлетворяющих конкретному условию

Функция Описание
int count(collection, condition) Подсчитывает число элементов заданной коллекции, удовлетворяющих заданному условию.

Примеры:

count(people, p -> p.income > 10000);

В этом примере мы ведем подсчет элементов коллекции people, доход income которых превышает 10000. В качестве первого аргумента функции мы указываем имя коллекции, относительно которой будем выполнять итерацию. В качестве второго аргумента, мы указываем условие, которое будет проверяться для каждого элемента. В условии мы сначала указываем локальную переменную (в нашем случае она называется p, но может называться как угодно), которую можем использовать для обращения к элементу, проверяемому в данный момент. После этого мы вставляем Java оператор ARROW -> (он состоит из двух символов) и определяем условие (содержащее локальную переменную p): p.income>10000.
Функция count() выполняет итерацию по каждому элементу коллекции people и проверяет доход income для каждого элемента. Если уровень дохода отдельно взятого элемента превышает 10000 (результат вычисления заданного условия условие равен true), мы считаем этот элемент.

count(people, p -> p.sex == MALE && p.age >= 18);

В этом примере мы проверяем два условия (используем логический оператор AND &&, чтобы указать AnyLogic, что оба условия должны быть выполнены: и первое, и второе) и считаем только те элементы, которые удовлетворяют обоим условиям. Чтобы получить общее количество элементов, находящихся в данный момент в коллекции, необходимо вызвать функцию коллекции size(). Эта функция принадлежит коллекции people, поэтому вызывать ее нужно следующим образом: people.size();

Получение среднего значения (атрибуты элементов и т.д.) в коллекции

Функция Описание
double average(collection, value) Возвращает среднее значение в коллекции.

Пример:

average(people, p -> p.income);

Здесь мы вычисляем средний доход income в коллекции people.
double averageWhere(collection, value, condition) Возвращает среднее арифметическое значений среди элементов коллекции, удовлетворяющих заданному условию.

Пример:

average(people, p -> p.income, p -> p.age > 18 );

Здесь мы вычисляем средний доход income у элементов старше 18 лет. Первый аргумент функции задает коллекцию people, второй определяет значение value (мы будет считать среднее значение value для всех элементов коллекции people), а третьим аргументом является условие: мы будем вычислять среднее значение только для тех элементов коллекции, которые этому условию удовлетворяют.
Обратите внимание, что мы снова задаем локальную переменную p до того, как описать условие.

Получение минимального (максимального) значения в рамках коллекции

Функция Описание
double max(collection, value) Возвращает максимальное значение в заданной коллекции.
double maxWhere(collection, value, condition) Возвращает максимальное значение в среди элементов коллекции, которые удовлетворяют заданному условию.

Примеры:

maxWhere(people, p -> p.income);

В этом примере мы получаем максимальный доход income всех элементов коллекции.

maxWhere(people, p -> p.income, p -> p.sex == FEMALE);

В этом примере мы получаем максимальный доход income всех элементов женского пола в коллекции people.
double min(collection, value) Возвращает минимальное значение среди элементов коллекции.
double minWhere(collection, value, condition) Возвращает минимальное значение среди элементов коллекции, которые удовлетворяют заданному условию.

Вычисление суммы значений элементов

Функция Описание
double sum(collection, value) Возвращает сумму значений в заданной коллекции.

Пример:

sum(people, p -> p.income );

В этом примере мы вычисляем общий доход income всех элементов коллекции people.
double sumWhere(collection, value, condition) Возвращает сумму значений в элементов заданной коллекции, которые удовлетворяют заданному условию.

Пример:

sumWhere(people, p -> p.income, p -> p.age > 18);

В этом примере мы вычисляем общий доход income взрослых (элементов старше 18 лет).
Как мы можем улучшить эту статью?