Агенты могут обитать в различных типах пространств: непрерывное, дискретное и ГИС.
В непрерывном пространстве есть возможность изменять местоположение агента и получать информацию о его текущем местоположении, перемещать агента с заданной скоростью из одного места в другое, выполнять действия по его прибытии в место назначения, рисовать анимацию (статического или движущегося) агента, устанавливать соединения согласно выбранному шаблону расположения агентов, и многие другие возможности. Часть функциональности непрерывного пространства даже не требует того, чтобы агенты принадлежали явно заданной среде — если среда не указана, то по умолчанию будет приниматься, что пространство именно непрерывное (но если агенты принадлежат среде, то тип пространства должен быть задан явно).
Чтобы сделать пространство среды непрерывным
- В панели Проекты, щелкните мышью тип агента, к котором обитают ваши агенты (например, Свойства для этого типа агента.
- Откройте секцию свойств Пространство и сеть.
- В списке выберите популяции, которые хотите поместить в данную среду.
- Выберите Непрерывное из группы кнопок Тип пространства.
- Настройте свойства непрерывного пространства, если необходимо.
Размерности пространства, задаваемые на той же странице, (Ширина и Высота) используются только тогда, когда для расположения агентов используется один из стандартных шаблонов расположения. Они не ограничивают передвижение агентов.
Вы можете использовать следующие функции, чтобы получить размеры пространства:
- double spaceHeight() — Возвращает высоту среды в непрерывном пространстве..
- double spaceWidth() — Возвращает ширину среды в непрерывном пространстве.
- double spaceZHeight() — Возвращает высоту среды в непрерывном пространстве по оси Z.
Местоположение агента в непрерывном пространстве определяется двумя координатами (x, y) типа double. Существует несколько способов задать начальное расположение агентов в непрерывном пространстве:
- Поместите агента в указанный узел сети.
- Задайте координаты X, Y, Z местоположения агента.
- Вызовите функцию setXYZ() при запуске модели.
- Используйте один из предлагаемых шаблонов расположения (Случайное, Упорядоченное, Кольцо, Пружинящая масса).
Чтобы задать начальное местоположение агентов в популяции
- Щелкните популяцию агентов, чтобы открыть их Свойства.
- В секции Начальное местоположение панели свойств популяции агентов выберите опцию Расположить агентов: в узле.
- В свойстве Узел, которое появится ниже, укажите имя узла сети, куда вы хотите поместить агента или популяцию: выберите узел из выпадающего списка или выберите его в графическом редакторе.
- Иначе, если вам нужно задать здесь разные узлы сети для агентов, вы можете написать выражение Java, которое будет возвращать различные узлы в зависимости от выполнения условий.
Чтобы задать начальное местоположение агентов в популяции
- Щелкните популяцию агентов, чтобы открыть их Свойства.
- В секции Начальное местоположение панели свойств популяции агентов выберите Расположить агентов: в указанной точке.
- Задайте координаты местоположения в свойствах X, Y и Z.
Начальное расположение агентов может задаваться либо в типе агента, либо "централизованно" средой.
Вы можете задать начальное местоположение агентов, вызвав функцию При запуске (в секции Действия агента свойств типа агента верхнего уровня).
void setXYZ(double x, double y, double z) — Задает координаты местоположения агентов. Используется только для начальной расстановки агентов. Предполагается, что агент не движется.
x — X-координата места
y — Y-координата места
z — Z-координата места
Чтобы задать тип расположения для популяции агентов
- Откройте панель Свойства для типа агента, в котором живет популяция агентов (например, Main).
- Откройте секцию свойств Пространство и сеть.
- Выберите популяции агентов, которые хотите поместить в эту среду.
- Выберите Тип расположения и, если вы выберете не тип Задается пользователем, то установите флажок Применить при запуске.
Тип расположения Задается пользователем подразумевает, что вы сами берете на себя ответственность за расположение агентов и напишете соответствующий код, например, в свойстве Действие при запуске агента 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 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.Во время движения агента, его презентация также будет анимирована и всегда будет находиться в текущем местоположении (x, y) относительно точки начала координат презентации агента. Это значит, что, если при создании модели анимация агента была помещена в точке с координатами (50, 100) на графической диаграмме контейнера (например, диаграмме типа агента Main) и текущее местоположение агента соответствует точке с координатами (17, 64), презентация агента будет отображаться в точке с координатами (67, 164). Вращение презентации агента всегда соответствует направлению его движения
-
Как мы можем улучшить эту статью?
-