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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

Прозрачность – Здесь вы можете выбрать степень прозрачности отображаемой на анимации карты плотности. С помощью бегунка выберите значение, лежащее в интервале [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.

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

Функции

Тип

Функция

Описание

DensityMapType getType()

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

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


Плотность

Function

Описание

double currentDensity(double x, double y)

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

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

double maximumDensity(double x, double y)

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

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


Статистика

Функция

Описание

void reset()

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


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

Функция

Описание

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()

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

void setCriticalDensity
(double criticalDensity)

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

Параметр: 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