Карта плотности

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

Добавив Карту плотности на диаграмму агента, вы включаете карту плотности заданного типа (пешеходов или транспортеров) для вашей пешеходной модели.

Если в модели на одном уровне двигаются и пешеходы, и транспортеры, и вам необходимо отслеживать плотность для обоих типов, вы должны добавить два элемента Карта плотности: по одному элементу на каждый тип.

Примечание: Карты плотности, расположенные на одном уровне, обязательно должны быть разных типов, иначе возникнет ошибка.

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

Сам элемент выглядит как цветовая шкала карты плотности. Шкала показывает соответствие цветов на карте плотности и численных значений плотности двигающихся агентов (см. рисунок ниже).

Красный цвет обычно используется для отображения критической плотности. Значение критической плотности по умолчанию равно 1,5 единицам/м2. Синий цвет используется для отображения низкой плотности. При нулевой плотности на определенном участке уровня этот участок не закрашивается. Приведенная на рисунке шкала информирует о том, что, например, желтый цвет на карте плотности будет соответствовать плотности 0,75 единиц/м2.

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

Чтобы добавить и настроить карту плотности

  1. Перетащите элемент Карта плотности в графический редактор из палитры Разметка пространства (секция Производственные системы или секция Пешеходы).

  2. В панели Свойства задайте Тип карты плотности:
  3. С помощью параметра Период времени вы можете выбрать, какой набор данных будет использоваться для вашей карты плотности: опция Полный прогон модели позволяет использовать исторические данные от начала прогона до текущего момента. Опция Скользящее окно позволяет использовать данные, собранные в рамках указанного отрезка времени. Также вы можете выбрать, какое именно значение плотности будет отображаться на карте: Максимальное или Среднее.

    Примечание: Чем больше размер скользящего окна, тем больше памяти потребуется для обработки данных.

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

  4. В том случае, если вас не устраивает, что карта плотности закрашивает анимацию и план моделируемого пространства, делая их трудно различимыми, вы можете сделать карту более прозрачной, уменьшив коэффициент прозрачности карты с помощью бегунка Прозрачность.
  5. Карта плотности чаще всего используется для обнаружения участков пространства, на которых значение плотности достигает критических значений. Такие области отображаются на карте плотности красным цветом. По умолчанию значение критической плотности задано равным 1,5 единицы на квадратный метр. Вы можете изменить это значение в свойстве Критическая плотность.
  6. По умолчанию AnyLogic использует логарифмическую цветовую схему. При логарифмической схеме цвет стремительно приближается к "критическому" (красному) только при приближении к зоне критических значений плотности, а при малых значениях остается нейтральным. Вы можете сменить логарифмическую схему на линейную, выбрав опцию Линейная в свойстве Цветовая схема. В этом случае цвета будут меняться от синего к красному линейно согласно градиенту спектра цветов. При желании вы можете задать и свою собственную цветовую схему.

Демонстрационная модель: Pedestrian Density Map

Свойства

Основные свойства

Имя – Имя фигуры.

Исключить – Если опция выбрана, то фигура будет исключена из модели.

Отображается на верхнем агенте – Если опция выбрана, то фигура будет видна на презентации класса, в который будет вложен данный активный объект.

Блокировать – Если опция выбрана, то фигура будет считаться заблокированной и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку.

Видимость – Здесь вы можете выбрать, будет ли отображаться легенда карты плотности в окне модели во время выполнения модели.

Тип – Тип агентов, для которых отображается карта плотности: Пешеход или Транспортер.

Период времени – Здесь вы можете выбрать, в течение какого периода времени будут собираться данные плотности для построения карты. По умолчанию используется опция Полный прогон модели, т.е. для построения карты используются исторические данные за период с момента запуска модели и до настоящего момента. Вы также можете выбрать опцию Скользящее окно, чтобы использовать данные, собранные в течение определенного отрезка времени. Например, если вы задали скользящее окно в размере 5 минут, карта плотности будет строиться на основе данных, собранных только за последние 5 минут.

Скользящее окно – [Виден, если Период времени: Скользящее окно] Здесь вы можете указать точный отрезок времени, в течение которого будут собираться данные плотности для построения карты.

Отображаемое значение – Здесь вы можете выбрать, какое значение плотности будет использоваться для построения карты: Максимальное или Среднее.

Включить затухание – [Виден, если Период времени: Полный прогон модели и Отображаемое значение: Максимальное] Если опция выбрана, то карта плотности будет затухать, т.е. при падении значения плотности на определенном участке по прошествии определенного времени будет меняться и цвет этого участка на карте плотности: цвет не будет соответствовать максимальному измеренному значению плотности на данном участке за все время, а будет постепенно стремиться к текущему значению плотности.

Прозрачность – Здесь вы можете выбрать степень прозрачности отображаемой на анимации карты плотности. С помощью бегунка выберите значение, лежащее в интервале [0..100%]. Значение 100% соответствует абсолютной прозрачности (карта плотности не видна), значение 0% - абсолютной непрозрачности (карта плотности полностью закрашивает анимацию).

Критическая плотность – Значение критической плотности. На карте плотности это значение (и все значения, превосходящие данное) будут соответствовать "максимально критическому" - красному цвету (если не выбрана Другая цветовая схема, и цвета не переопределены пользователем).

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

Цвет – [Виден, если Цветовая схема: Другая] Если вы хотите сами задать цветовую схему для карты плотности, то здесь вы можете сами определить, какой цвет будет использоваться для какого значения плотности, задав выражение, возвращающее тот или иной цвет в зависимости от текущего значения плотности (это значение доступно как density), или же написав аналогичную функцию, и поместив здесь ее вызов. В качестве значения по умолчанию задано выражение, при котором на карте будут отображаться красным цветом области, на которых значения плотности достигли 70% от заданного критического значения плотности, остальные же участки закрашиваться не будут вовсе: density > self.criticalDensity * 0.7 ? red: transparent

Примечание: если цвет, заданный с помощью вашего кода, полностью непрозрачен (значение аргумента transparency в функции setTransparency(double transparency) равно 0), то прозрачность будет автоматически задаваться с помощью значения, заданного в параметре Прозрачность свойств карты плотности.
Местоположение и размер

УровеньУровень, для которого данный элемент будет отображать карту плотности.

X – X-координата легенды карты плотности (ее начальная точка).

Y – Y-координата легенды карты плотности (ее начальная точка).

Ширина – Ширина легенды карты плотности (в пикселях).

Высота – Высота легенды карты плотности (в пикселях).

Специфические

Отображать в – Опция задает, будет ли карта плотности отображаться В 2D и в 3D, Только в 2D или Только в 3D. Поскольку карта плотности может отображаться только в 2D анимации, то выбрана опция Только в 2D и элемент управления деактивирован.

Отображать имя – Если опция выбрана, то имя фигуры будет отображаться в графическом редакторе.

Функции

Тип

Функция

Описание

DensityMapType getType()

Возвращает тип карты плотности в зависимости от агентов, для которых собирается статистика: пешеходов или транспортеров.

Допустимые значения:
DensityMapType.PEDESTRIAN - карта плотности пешеходов
DensityMapType.TRANSPORTER - карта плотности транспортеров.

void setType(DensityMapType type)

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

Параметр:
type - тип карты плотности.

Допустимые значения:
DensityMapType.PEDESTRIAN - карта плотности для пешеходов
DensityMapType.TRANSPORTER - карта плотности для транспортеров.


Скользящее окно

Функция

Описание

double getSlidingWindow()

Возвращает размер скользящего окна в единицах модельного времени.

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

double getSlidingWindow(TimeUnits units)

Возвращает размер скользящего окна в указанных единицах времени.

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

Параметр:
units - константа, определяющая единицы измерения времени

void setSlidingWindow(double time)

Активирует и задает скользящее окно указанного размера в единицах модельного времени.

Параметр:
time - размер скользящего окна

void setSlidingWindow(double time, TimeUnits units)

Активирует и задает скользящее окно указанного размера в указанных единицах измерения времени.

Параметры:
time - размер скользящего окна
units - константа, задающая единицы измерения времени


Отображаемое значение плотности

Функция

Описание

DensityMapDisplayedValue getDensityValue()

Возвращает тип значения плотности, который используется для построения карты.

Допустимые значения:
DENSITY_VALUE_MAX - максимальное значение плотности
DENSITY_VALUE_MEAN - среднее значение плотности

void setDensityValue(DensityMapDisplayedValue valueType)

Задает тип значения плотности, который будет использоваться для построения карты.

Параметр:
valueType - константа, задающая единицу измерения времени

Допустимые значения:
DENSITY_VALUE_MAX - максимальное значение плотности
DENSITY_VALUE_MEAN - среднее значение плотности


Статистика

Функция

Описание

void reset()

Вызов данного метода сбрасывает значения, которые пользователь видит и может получить при помощи метода maximumDensity() до текущих значений плотности.

double currentDensity(double x, double y)

Возвращает текущее значение плотности пешеходов или транспортеров (в зависимости от типа карты плотности) в области, граничащей с заданной точкой, в единицах/м2, где единицы - это пешеходы или транспортеры. Это значение не отображает текущую ситуацию, а аккумулирует исторические данные.

Параметры:
x - X-координата точки
y - Y-координата точки

double maximumDensity(double x, double y)

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

Параметры:
x - X-координата точки
y - Y-координата точки

double meanDensity(double x, double y)

Возвращает среднее значение плотности в указанной точке, в единицах/м2.

Параметры:
x - X-координата точки
y - Y-координата точки


Цветовая схема

Функция

Описание

DensityMapColorScheme getColorScheme()

Возвращает цветовую схему карты плотности.

Допустимые значения: LINEAR_COLOR_SCHEME, LOGARITHMIC_COLOR_SCHEME, CUSTOM_COLOR_SCHEME

void setColorScheme
(DensityMapColorScheme colorScheme)

Задает новую цветовую схему.

Параметр: colorScheme - новая цветовая схема.
Допустимые значения: LINEAR_COLOR_SCHEME, LOGARITHMIC_COLOR_SCHEME, CUSTOM_COLOR_SCHEME

double getCriticalDensity()

Возвращает критическую плотность карты плотности в единицах на м2.

void setCriticalDensity
(double criticalDensity)

Задает новую критическую плотность для карты плотности в единицах на м2.

Параметр: criticalDensity - новое значение критической плотности


Затухание и прозрачность

Функция

Описание

double getTransparency()

Возвращает прозрачность карты плотности. Значение находится в диапазоне [0, 1], 0 - карта плотности полностью непрозрачная, 1 - карта плотности полностью прозрачная.

void setTransparency
(double transparency)

Задает новое значение прозрачности для карты плотности.

Параметр: transparency - новое значение прозрачности. Значение должно находиться в диапазоне [0, 1], 0 - карта плотности полностью непрозрачная, 1 - карта плотности полностью прозрачная.

boolean isEnableAttenuation()

Возвращает true, если карта плотности отображается с затуханием; в противном случае возвращает false.

void setEnableAttenuation
(boolean enable)

Включает/выключает затухание для карты плотности.

Параметр: enable - затухание. Если enable равен true - карта плотности отображается с затуханием, если равен false - затухание выключено.


Видимость

Функция

Описание

void show()

Показывает карту плотности.

void hide()

Скрывает карту плотности.

void display(boolean flag)

Задает видимость для карты плотности.

Параметр: flag - видимость. Если flag равен true - карта плотности отображается. Если равен false - карта плотности не отображается.

boolean isVisible()

Возвращает true, если шкала карты плотности видна; в противном случае возвращает false.

void setVisible(boolean v)

Задает видимость шкалы карты плотности.

Параметр: v - видимость. Если v равен true - шкала карты плотности отображается, если равен false - не отображается.


Уровень

Функция

Описание

Level getLevel()

Возвращает уровень, для которого отображается карта плотности.


Местоположение шкалы

Функция

Описание

double getX()

Возвращает X-координату шкалы для карты плотности.

double getY()

Возвращает Y-координату шкалы для карты плотности.

void setX(double x)

Задает X-координату шкалы для карты плотности.

Параметр: x - новая X-координата

void setY(double y)

Задает Y-координату шкалы для карты плотности.

Параметр: y - новая Y-координата


Размер шкалы

Функция

Описание

double getWidth()

Возвращает ширину шкалы для карты плотности (в пикселях).

double getHeight()

Возвращает высоту шкалы для карты плотности (в пикселях).

void setWidth (double width)

Задает ширину шкалы для карты плотности (в пикселях).

Параметр: width - новое значение ширины

void setHeight (double height)

Задает высоту шкалы для карты плотности (в пикселях).

Параметр: height - новое значение высоты


Удаление

Функция

Описание

void remove()

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



См. также

Разметка пространства для пешеходных моделей

Статистика пешеходных потоков

Разметка пространства для моделей производственных систем

Произвольная навигация

Java документация (англ.): Класс DensityMap