Непрерывное пространство

Агенты могут обитать в различных типах пространств: непрерывное, дискретное и ГИС.

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

Чтобы сделать пространство среды непрерывным

  1. В панели Проекты, щелкните мышью тип агента, к котором обитают ваши агенты (например, Main). Откроется панель Свойства для этого типа агента.
  2. Откройте секцию свойств Пространство и сеть.
  3. В списке выберите популяции, которые хотите поместить в данную среду.
  4. Выберите Непрерывное из группы кнопок Тип пространства.
  5. Настройте свойства непрерывного пространства, если необходимо.

Размерности пространства, задаваемые на той же странице, (Ширина и Высота) используются только тогда, когда для расположения агентов используется один из стандартных шаблонов расположения. Они не ограничивают передвижение агентов.

Вы можете использовать следующие функции, чтобы получить размеры пространства:

double spaceHeight() - возвращает высоту среды в непрерывном пространстве.

double spaceWidth() - возвращает ширину среды в непрерывном пространстве.

double spaceZHeight() - возвращает высоту среды в непрерывном пространстве по оси Z.

Местоположение агента в непрерывном пространстве определяется двумя координатами (x,y) типа double.

Расположение агентов в непрерывном пространстве

Местоположение агента в непрерывном пространстве определяется двумя координатами (x,y) типа double. Существует несколько способов задать начальное расположение агентов в непрерывном пространстве:

Начальное расположение в узле

Чтобы задать начальное местоположение агентов в популяции

  1. Щелкните популяцию агентов, чтобы открыть их Свойства.
  2. В секции Начальное местоположение панели свойств популяции агентов выберите опцию Расположить агентов: в узле.
  3. В свойстве Узел, которое появится ниже, укажите имя узла сети, куда вы хотите поместить агента или популяцию: выберите узел из выпадающего списка или выберите его в графическом редакторе.
  4. Иначе, если вам нужно задать здесь разные узлы сети для агентов, вы можете написать выражение Java, которое будет возвращать различные узлы в зависимости от выполнения условий.

Начальное расположение в точке

Чтобы задать начальное местоположение агентов в популяции

  1. Щелкните популяцию агентов, чтобы открыть их Свойства.
  2. В секции Начальное местоположение панели свойств популяции агентов выберите Расположить агентов: в указанной точке.
  3. Задайте координаты местоположения в свойствах X, Y и Z.

Задание начального местоположения с помощью функции

Начальное расположение агентов может задаваться либо в типе агента, либо "централизованно" средой.

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

void setXYZ(double x, double y, double z) - задает координаты местоположения агентов. Используется только для для начальной расстановки агентов. Предполагается, что агент не движется.
Параметры:
x - X-координата места
y - Y-координата места
z - Z-координата места

Использование шаблона расположения агентов

Чтобы задать тип расположения для популяции агентов

  1. Откройте панель Свойства для типа агента, в котором живет популяция агентов (например, Main).
  2. Откройте секцию свойств Пространство и сеть.
  3. Выберите популяции агентов, которые хотите поместить в эту среду.
  4. Выберите Тип расположения и, если вы выберете не тип Задается пользователем, то установите флажок Применить при запуске.

Тип расположения Задается пользователем подразумевает, что вы сами берете на себя ответственность за расположение агентов и напишете соответствующий код, например, в свойстве Действие при запуске объекта Main. AnyLogic поддерживает следующие стандартные типы расположения агентов в непрерывном пространстве:

Случайное
агенты случайно и равномерно распределяются
в пределах размерностей пространства

Кольцо
агенты равномерно распределяются по кольцу, диаметр
которого меньше меньшей размерности пространства

Упорядоченное
агенты упорядоченно распределяются
в пределах размерностей пространства

Пружинящая масса
агенты располагаются аналогично системе с пружинящими массами, где агенты представляют собой массы, а их соединения - пружины. Этот тип зависит от выбранного типа сети

Тип расположения агентов в пространстве может быть также изменен динамически во время выполнения модели посредством программного интерфейса среды, например, с помощью методов:

setLayoutType( type ); //устанавливает принятый по умолчанию тип расположения, агенты при этом не изменяют своих местоположений
applyLayout(); //производит перестановку агентов согласно текущему типу сети

Значение параметра type может быть равно одной из этих констант:

Agent.LAYOUT_RANDOM (случайное), Agent.LAYOUT_ARRANGED (упорядоченное), Agent.LAYOUT_RING (кольцо), Agent.LAYOUT_SPRING_MASS (пружинящая масса), Agent.USER_DEFINED (задается пользователем)

Демо модель: Agent Network and Layouts Demo


См. также

Движение агентов в непрерывном пространстве