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

Функции агента

Параметры
Функция Описание
<T> T getParameter(String name) Возвращает значение параметра с заданным именем name.
Вызывает сообщение об ошибке, если параметра с таким именем нет.

name — имя статического параметра
String[] getParameterNames() Возвращает массив с именами всех статических параметров агента.
boolean setParameter(String name, Object value, boolean callOnChange) Задает значение value для параметра с именем name. Возвращает true, если операция прошла успешно; в противном случае возвращает false.

name — имя статического параметра
value — новое значение
callOnChange — передайте значение true для этого аргумента, чтобы иметь возможность выполнить дополнительный написанный вами код при изменении значения параметра
void setParametersToDefaultValues() Задает для всех статических параметров их значения по умолчанию. Эту функцию можно использовать в нестандартных экспериментах, чтобы в некоторых случаях облегчить настройку агента верхнего уровня.
void markParametersAreSet() Используйте эту функцию, чтобы помечать всех агентов, созданных с помощью конструктора без аргументов, таким образом, словно их параметры уже заданы. Это предотвратит инициализацию параметров в первом месте, куда эти агенты отправятся (например, в библиотечном блоке, в популяции и так далее).
Размеры

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

Функция Описание
void setDimensions(double lengthInMeters, double widthInMeters, double heightInMeters) Задает длину, ширину и высоту агента в метрах.

lengthInUnits — новое значение длины агента
widthInUnits — новое значение ширины агента
heightInUnits — новое значение высоты агента
void setDimensions(double lengthInUnits, double widthInUnits, double heightInUnits, LengthUnits units) Задает длину, ширину и высоту агента в заданных единицах измерения units.

lengthInUnits — новое значение длины агента
widthInUnits — новое значение ширины агента
heightInUnits — новое значение высоты агента
units — константа, задающая единицы измерения длины
double getHeight() Возвращает высоту агента в метрах.
double getHeight(LengthUnits units) Возвращает высоту агента в заданных единицах измерения units.

units — константа, задающая единицы измерения длины
void setHeight() Задает высоту агента в метрах.
void setHeight(double heightInUnits, LengthUnits units) Задает высоту агента в заданных единицах измерения units.

heightInUnits — новое значение высоты агента
units — константа, задающая единицы измерения длины
double getLength() Возвращает длину агента в метрах.
double getLength(LengthUnits units) Возвращает длину агента в заданных единицах измерения units.

units — константа, задающая единицы измерения длины
void setLength(double lengthInUnits) Задает длину агента в метрах. Это касается только тех агентов, которые обрабатываются блоками Библиотеки Моделирования Процессов и Библиотеки Производственных Систем. Чтобы изменить размеры пешехода, машины и других агентов, работающих в специализированных библиотеках, используйте соответствующие функции этих агентов, например, setDiameter() в случае с пешеходами.

lengthInUnits — новое значение длины агента
void setLength(double lengthInUnits, LengthUnits units) Задает длину агента в заданных единицах измерения units. Это касается только тех агентов, которые обрабатываются блоками Библиотеки Моделирования Процессов и Библиотеки Производственных Систем. Чтобы изменить размеры пешехода, машины и других агентов, работающих в специализированных библиотеках, используйте соответствующие функции этих агентов, например, setDiameter() в случае с пешеходами.

lengthInUnits — новое значение длины агента
units — константа, задающая единицы измерения длины
double getWidth() Возвращает ширину агента в метрах.
double getWidth(LengthUnits units) Возвращает ширину агента в заданных единицах измерения units.

units — константа, задающая единицы измерения длины
void setWidth(double widthInUnits) Задает ширину агента в метрах.

widthInUnits — новое значение ширины агента
void setWidth(double widthInUnits, LengthUnits units) Задает ширину агента в заданных единицах измерения units.

widthInUnits — новое значение ширины агента
units — константа, задающая единицы измерения длины
Анимация
Функция Описание
Color getColor() Возвращает цвет той фигуры анимации агента, которая используется по умолчанию. Цвет можно задать с помощью функции setColor(Color). В противном случае он будет выбран случайным образом.
В случае нестандартного типа агента используйте функцию getFillColor() или любые подобные ей функции фигуры анимации.
void setColor(Color color) Задает цвет той фигуры анимации агента, которая используется по умолчанию. Эту функцию можно использовать, если агент был создан с помощью блока Source (PedSource, и так далее), где в свойстве Новый агент (Новый пешеход и так далее) была выбрана опция по умолчанию Агент. Также функцию можно использовать, если агента создали с помощью конструктора new Agent().
В случае нестандартного типа агента используйте функцию setFillColor() или любые подобные ей функции фигуры анимации.

color — новый цвет
void highlight(boolean yes) Включает или выключает подсветку анимации этого агента.

yes — булево значение. Передайте true, чтобы включить подсветку; передайте false, чтобы ее выключить.
Презентация
Функция Описание
IExperimentHost getExperimentHost() Возвращает объект, предоставляющий доступ к презентации запущенной модели и позволяющий управлять ею (менять масштаб, перемещаться и т.д.) посредством функций этого объекта.
Масштаб
Функция Описание
Scale getScale() Возвращает масштаб пространства вашего агента. Значение по умолчанию — 10 пикселей на метр.
double toLengthUnits(double lengthInPixels, LengthUnits units) Конвертирует заданную длину в пикселях в длину в единицах измерения длины с учетом масштаба агента, который используется как "пространство".

lengthInPixels — длина в пикселях; units — константа, задающая единицы измерения длины
double toPixels(double lengthInUnits, LengthUnits units) Конвертирует длину в заданных единицах измерения длины в длину в пикселях с учетом масштаба агента, который используется как "пространство".

lengthInUnits — длина в единицах измерения длины; units — константа, задающая единицы измерения длины
Агент в диаграмме процесса
Функция Описание
FlowchartBlock currentBlock() Возвращает тот блок диаграммы процесса, в котором сейчас находится ваш агент.
double getBlockEnterTime() Возвращает время, когда агент поступил в тот блок диаграммы процесса, где он сейчас находится. Если агент еще не поступил в диаграмму процесса, функция возвращает Double.NaN: это значит, что результат вызова функции не валиден.
double getFlowchartEntryTime() Возвращает время, когда агент поступил в первый блок диаграммы процесса. Если агент еще не поступил в диаграмму процесса, функция возвращает Double.NaN: это значит, что результат вызова функции не валиден.
Ресурсы
Функция Описание
<T extends Agent> List<T> resourceUnits() Возвращает список всех ресурсных единиц, захваченных агентом, или пустой список, если агент не захватил ни один ресурс.
Agent resourceUnitOfPool(Agent pool) Возвращает первую ресурсную единицу из заданного блока ResourcePool среди захваченных агентом ресурсных единиц или null, если агент еще не захватил ни один ресурс из этого блока.

pool — блок ResourcePool
<T extends Agent> List<T> resourceUnitsOfPool(Agent pool) Возвращает список ресурсных единиц из заданного блока ResourcePool, которые сейчас захвачены вашим агентом.

pool — блок ResourcePool
<T extends Agent> List<T> resourceUnitsOfSeize(Agent seize) Возвращает список ресурсных единиц, которые сейчас захвачены вашим агентом в заданном блоке Seize.

seize — блок Seize
Другие агенты
Функция Описание
<T extends Agent> T getNearestAgent(java.lang.Iterable<T> agents) Возвращает ближайшего агента из заданной коллекции (или популяции). Никогда не возвращает самого себя. Если коллекция пустая, то возвращает null.

agents — коллекция (или популяция) агентов
<T extends Agent> T getNearestAgentByRoute(java.lang.Iterable<T> agents)   Возвращает ближайшего агента из заданной коллекции (или популяции). Расстояние между агентами вычисляется согласно имеющимся маршрутам. Никогда не возвращает самого себя. Если коллекция пустая, то возвращает null.

agents — коллекция (или популяция) агентов
java.util.Collection<Agent> agents() Возвращает коллекцию со всеми агентами, живущими в этом пространстве. По содержимому коллекции можно будет итерироваться.
java.util.List<? extends Agent> agentsInRange(double distanceInUnits) Возвращает несортированный список агентов (из той популяции, в которой живет этот агент), которые находятся от этого агента не дальше заданного расстояния поиска.

distanceInUnits — расстояние поиска, в пикселях
java.util.List<? extends Agent> agentsInRange(double distanceInUnits, LengthUnits units) Возвращает несортированный список агентов (из той популяции, в которой живет этот агент), которые находятся от этого агента не дальше заданного расстояния поиска.

distanceInUnits — расстояние поиска, в заданных единицах
units — константа, задающая единицы измерения длины
java.util.List<T> agentsInRange(java.lang.Iterable<T> agents, double distanceInUnits) Возвращает несортированный список агентов из заданной коллекции (или популяции), которые находятся от этого агента не дальше заданного расстояния поиска.

agents — коллекция (или популяция) агентов
distanceInUnits — расстояние поиска, в пикселях
java.util.List<T> agentsInRange(java.lang.Iterable<T> agents, double distanceInUnits, LengthUnits units) Возвращает несортированный список агентов из заданной коллекции (или популяции), которые находятся от этого агента не дальше заданного расстояния поиска.

agents — коллекция (или популяция) агентов
distanceInUnits — расстояние поиска, в заданных единицах
units — константа, задающая единицы измерения длины
Agent randomAgentInside() Возвращает случайно выбранного агента из пространства (или null, если в пространстве нет других агентов).
Agent randomAgentInside(java.util.Random r) Возвращает случайно выбранного агента из пространства (или null, если в пространстве нет других агентов). Использует заданный генератор случайных чисел.

r — генератор случайных чисел
Agent[] getNeighbors()   Возвращает массив агентов-соседей. Количество соседей зависит от выбранного для пространства типа соседства (в случае соседства по модели Евклида - {N,S,E,W}, а в случае модели Мура - еще и {..,NW,NW,SE,SW}).
Общение агентов

Функции агента, отвечающие за общение агентов друг с другом, подробно описаны в статье Коммуникация между агентами.

Связи
Функция Описание
<T extends Agent> List<T> getConnections() Возвращает коллекцию агентов, связанных с вашим агентом двусторонними связями или пустую коллекцию, если таких агентов нет. Эту коллекцию нельзя изменять.
int getConnectionsNumber() Возвращает количество агентов, связанных с вашим агентом.
Agent getConnectedAgent(int index) Возвращает агента с заданным индексом, связанного с вашим агентом.

index — индекс связанного агента
Agent getRandomConnectedAgent() Возвращает случайно выбранного агента, связанного с вашим агентом.
boolean isConnectedTo(Agent a) Проверяет, связан ли ваш агент с заданным агентом. Если связь есть, возвращает true; в противном случае возвращает false.

a — другой агент
boolean connectTo(Agent a) Создает двустороннюю связь между вашим агентом и заданным агентом, после чего возвращает true. Возвращает сообщение об ошибке, если вы пытаетесь связать агента с сами собой. Ничего не делает и возвращает false, если агенты уже связаны.

a — другой агент
void disconnectFrom(Agent a) Уничтожает связь между вашим агентом и заданным агентом.

a — другой агент
void disconnectFromAll() Разрушает все связи вашего агента с другими агентами.
Сеть связей между агентами
Функция Описание
NetworkType getNetworkType() Возвращает тип сети. Обратите внимание, что этот тип мог быть не применен на самом деле.
double getNetworkConnectionRange() Возвращает диапазон связей вашего агента. Применимо для типа сети согласно расстоянию. В случае ГИС-пространства расстояние измеряется в метрах.
double getNetworkConnectionsPerAgent() Возвращает среднее или точное количество связей одного агента. Применимо для типов сети случайное, решеточно упорядоченное кольцо и малый мир.
double getNetworkNeighborLinkProbability() Возвращает вероятность того, что связанный агент является соседом вашего агента. Применимо для типа сети малый мир.
int getNetworkScaleFreeM() Возвращает количество связей в типе сети безразмерная.
void applyNetwork() Уничтожает все существующие связи и устанавливает новую сеть связей в соответствии с текущими настройками сети.
void applyNetwork(Random r) Уничтожает все существующие связи и устанавливает новую сеть связей в соответствии с текущими настройками сети, используя генератор случайных чисел, если того требует тип сети.
void setNetworkAllInRange(double connectionRange) Задает новый тип сети "согласно расстоянию": связи образуют только те агенты, расстояние между которыми меньше или равно заданной величине connectionRange. Этот тип сети возможен только в непрерывном пространстве. После вызова этой функции вызовите также функцию applyNetwork(), чтобы создать связи в соответствии с типом сети.

connectionRange — максимально допустимое расстояние между агентами
void setNetworkRandom(double connectionsPerAgent) Задает новый тип сети "случайная" с заданным средним количеством связей на одного агента. После вызова этой функции вызовите также функцию applyNetwork(), чтобы создать связи в соответствии с типом сети.

connectionsPerAgent — среднее количество связей на одного агента
void setNetworkRingLattice(int connectionsPerAgent) Задает новый тип сети "решеточно упорядоченное кольцо". Все агенты должны располагаться в кольце в естественном порядке и каждый агент при этом связан с заданным количеством ближайших соседей. После вызова этой функции вызовите также функцию applyNetwork(), чтобы создать связи в соответствии с типом сети.

connectionsPerAgent — количество связей на одного агента (четное число)
void setNetworkScaleFree(int m) Задает новый тип сети "безразмерная". Такие сети строятся в соответствии с правилами, описанными в книге Barabasi, A.L. and R. Albert. 1999. Emergence of scaling in random networks. Science 286(5439): 509-512. После вызова этой функции вызовите также функцию applyNetwork(), чтобы создать связи в соответствии с типом сети.

m — количество связей в сети. Агент с индексом m скорее всего будет являться хабом.
void setNetworkSmallWorld(int connectionsPerAgent, double neighborLinkProbability) Задает новый тип сети "малый мир". Такую сеть можно получить, заменив некоторые связи в сети типа "решеточно упорядоченное кольцо" на дальние. После вызова этой функции вызовите также функцию applyNetwork(), чтобы создать связи в соответствии с типом сети.

connectionsPerAgent — количество связей на одного агента (четное число)
neighborLinkProbability — вероятность связи с соседями
void setNetworkUserDefined() Задает новый тип сети "задается пользователем". Последующий вызов функции applyNetwork() не создаст никаких связей между агентами. Это тип сети, доступный по умолчанию.
Пространство
Функция Описание
SpaceType getAgentSpaceType() Возвращает тип пространства агента, если для этого агента есть данные о пространстве. Возвращает SPACE_UNDEFINED, если таких данных для агента нет.
SpaceType getEnvironmentSpaceType() Возвращает тип пространства агента, если агент является средой, для которой есть данные о пространстве. Возвращает SPACE_UNDEFINED, если таких данных для агента нет.
Agent getSpace() Возвращает агента, который является пространством, в котором живет этот агент.
Point randomPointOfSpace()   Возвращает случайно выбранную точку внутри пространства среды, в которой живет агент.
double spaceWidth()     Возвращает ширину пространства, в котором живет агент.
double spaceHeight()     Возвращает высоту пространства, в котором живет агент.
double spaceZHeight()   Возвращает высоту пространства вдоль оси Z.
void setSpace(Agent space) Задает агента space, который будет предоставлять пространство для вашего агента. Не используйте для этого движущихся агентов. После выполнения функции координаты и вращение агентов останутся прежними.

space — агент, который будет предоставлять пространство для вашего агента
void setupSpace(AbstractShapeGISMap gisMap) Настраивает в среде вашего агента ГИС-пространство на основании заданной ГИС-карты gisMap. Эту функцию можно вызывать только в том случае, если в среде вашего агента пусто. Возвращает ошибку, если тип пространства этой среды — не ГИС.

gisMap — ГИС-карта, которая будет использоваться в этой среде; этот аргумент не может быть равен null
void setupSpace(double width, double height) Задает размеры вашего пространства. Размеры используются только в том случае, когда применяются разные разметки пространства, и не ограничивают местоположение или движение агентов. Эту функцию можно вызывать только в том случае, если в среде вашего агента пусто.

width — ширина пространства
height — высота пространства
void setupSpace(double width, double height, double zHeight) Задает размеры вашего пространства. Размеры используются только в том случае, когда применяются разные разметки пространства, и не ограничивают местоположение или движение агентов. Эту функцию можно вызывать только в том случае, если в среде вашего агента пусто.

width — ширина пространства
height — высота пространства
zHeight — высота пространства по оси Z
void setupSpace(double width, double height, int rows, int columns, NeighborhoodType neighborhoodType) Задает дискретный тип пространства с заданными размерами и моделью соседства. Ширина ячейки в таком пространстве будет равна ширине всего пространства разделенной на количество столбцов, а высота — высоте пространства разделенной на количество рядов. Эту функцию можно вызывать только в том случае, если в среде вашего агента пусто.

width — ширина пространства
height — высота пространства
rows — количество рядов в пространстве
columns — количество столбцов в пространстве
neighborhoodType — модель соседства (модель Евклида или модель Мура)
Agent getEnvironment() Возвращает среду, которой принадлежит этот агент.
void setEnvironment(Agent env) Задает время, пространство, и т.д. для этого агента. Функция должна быть вызвана во время запуска агента.

env — среда агента
Тип расположения в пространстве
Функция Описание
LayoutType getLayoutType() Возвращает тип расположения. Обратите внимание, что этот тип мог еще не быть применен (посредством функции applyLayout()).
void setLayoutType(LayoutType type) Задает тип расположения. Чтобы применить новое расположение, вызовите функцию applyLayout(). По умолчанию задан тип расположения LAYOUT_USER_DEFINED, то есть, случайное расположение агентов в пространстве.

type — новый тип расположения
void applyLayout() Располагает агентов в пространстве в соответствии с выбранным типом расположения.
Местоположение
Функция Описание
double getX()     Возвращает текущую X-координату агента в пространстве. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
double getY()     Возвращает текущую Y-координату агента в пространстве. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
double getZ()   Возвращает текущую Z-координату агента в непрерывном пространстве.
double getLatitude()   Возвращает текущую широту агента, измеренную в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
double getLongitude()   Возвращает текущую долготу агента, измеренную в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
Point getXYZ()     Возвращает объект типа Point, содержащий текущие координаты агента. В случае ГИС пространства point.x хранит широту местоположения, измеренную в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90), point.y - долготу (-180 ... (Запад) ... 0 ... (Восток) ... +180), а point.z равен 0.
Point getXYZ(Point out)     Возвращает объект типа Point, содержащий текущие координаты агента. В случае ГИС пространства point.x хранит широту местоположения, измеренную в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90); point.y - долготу (-180 ... (Запад) ... 0 ... (Восток) ... +180), а point.z равен 0.

out — объект, в который будут записаны координаты (может быть null)
Position getPosition()     Возвращает объект типа Position, содержащий текущие координаты агента и его угол поворота в пространстве. В случае ГИС пространства point.x хранит широту местоположения, измеренную в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90), point.y - долготу (-180 ... (Запад) ... 0 ... (Восток) ... +180), а point.z равен 0.
Position getPosition(Position out)     Возвращает объект типа Position, содержащий текущие координаты агента и его угол поворота в пространстве. В случае ГИС пространства point.x хранит широту местоположения, измеренную в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90), point.y - долготу (-180 ... (Запад) ... 0 ... (Восток) ... +180), а point.z равен 0.

out — объект, в который будут записаны координаты и угол поворота агента (может быть null)
INode getNetworkNode()     Возвращает узел сети, в котором в данный момент времени находится агент.
void setLocation(Agent agent)     Задает в качестве местоположения этого агента местоположение другого агента.

agent — другой агент
void setLocation(Attractor attractor)   Задает местоположение агента в сети: агент помещается в узел, в котором находится указанный аттрактор, в точку расположения этого аттрактора.

attractor — аттрактор
void setLocation(INode node)     Помещает агента в узел сети. В момент вызова функции агент не должен двигаться.
Функция должна использоваться только для инициализации местоположения агента. Для динамического изменения уже заданного ранее местоположения используйте функцию jumpTo(INode).
node — узел сети
void setLocation(Point point)     Задает местоположение агента. В момент вызова функции агент не должен двигаться.
Функция должна использоваться только для инициализации местоположения агента. Для динамического изменения уже заданного ранее местоположения используйте функцию jumpTo(Point).
point — объект, хранящий местоположение
void setXY(double x, double y)     Задает координаты местоположения агента.
В момент вызова функции агент не должен двигаться. Функция должна использоваться только для инициализации местоположения агента.
x — X-координата местоположения. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата местоположения. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
void setXYZ(double x, double y, double z)   Задает координаты местоположения агента в непрерывном пространстве. В момент вызова функции агент не должен двигаться.
Функция должна использоваться только для инициализации местоположения агента. Для динамического изменения уже заданного ранее местоположения используйте функцию jumpTo(x, y, z).
x — X-координата местоположения
y — Y-координата местоположения
z — Z-координата местоположения
void setPosition(Position position)     Задает местоположение и угол поворота агента. В момент вызова функции агент не должен двигаться.
Функция должна использоваться только для инициализации местоположения агента. Для динамического изменения уже заданного ранее местоположения используйте функцию jumpTo(x, y).
position — объект, хранящий местоположение и угол поворота
void setLatLon(double latitude, double longitude)   Задает местоположение и угол поворота агента в ГИС пространстве. В момент вызова функции агент не должен двигаться.
Функция должна использоваться только для инициализации местоположения агента.
latitude — широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90)
longitude — долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180)
Движение
Функция Описание
boolean isMoving()     Проверяет, движется ли агент в текущий момент в непрерывном 3D пространстве. Возвращает true, если агент движется; в противном случае возвращает false.
double timeToArrival()     Если агент движется, то возвращает время (в единицах модельного времени), нужное ему для того, чтобы прибыть в место назначения, с учетом того, что скорость не изменится. Если агент не движется, возвращает 0.
double timeToArrival(TimeUnits units)     Если агент движется, то возвращает время (в заданных единицах измерения времени), нужное ему для того, чтобы прибыть в место назначения, с учетом того, что скорость не изменится. Если агент не движется, возвращает 0.

units — константа, задающая единицы измерения времени
void stop()     Останавливает агента (если он двигался); агент остается при этом в том же месте, и Действие при достижении места назначения не выполняется.
void moveTo(double x, double y)     Начинает перемещение агента в место с заданными координатами в непрерывном или в ГИС пространстве.

x — X-координата местоположения. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата местоположения. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
void moveToStraight(double x, double y)     Начинает перемещение агента по прямой (без учета существующих сетей или маршрутов) в место с заданными координатами.

x — X-координата местоположения. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата местоположения. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
void moveTo(double x, double y, double z)   Инициирует перемещение агента в место с заданными координатами в непрерывном пространстве.

x — X-координата местоположения
y — Y-координата местоположения
z — Z-координата местоположения
void moveToStraight(double x, double y, double z)   Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в место с заданными координатами.

x — X-координата местоположения
y — Y-координата местоположения
z — Z-координата местоположения
void moveTo(Agent agent)     Инициирует перемещение агента к другому агенту.

agent — другой агент
void moveStraightTo(Agent agent)     Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) к другому агенту.

agent — другой агент
void moveTo(String geographicPlace)   Посылает запрос на ГИС-сервер для поиска местоположения с заданным названием и инициирует движение агента в найденную точку на ГИС карте.

node — имя места (например, города)
void moveTo(Point location)     Инициирует перемещение агента в направлении заданного местоположения.

location — место назначения
void moveToStraight(Point location)     Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в направлении заданного местоположения.

location — место назначения
void moveTo(INode node)     Инициирует перемещение агента в заданный узел.

node — узел сети
void moveTo(INode node, Point location)     Инициирует перемещение агента в заданную точку внутри указанного узла.

node — узел сети
location — (дополнительно) местоположение внутри узла, может быть null
void moveTo(Attractor attractor)   Инициирует перемещение агента в заданный аттрактор.

attractor — аттрактор
void moveToNearestAgent(java.lang.Iterable agents)     Инициирует перемещение агента к ближайшему агенту из данной коллекции (или популяции). Прекращает какое-либо движение в этот момент.

agents — коллекция (или популяция) агентов
Перемещение за указанное время
Все приведенные в этом разделе функции вызывают Действие при достижении места назначения.
Функция Описание
void moveToInTime(double x, double y, double tripTime)     Инициирует перемещение агента в точку с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

x — X-координата местоположения. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата местоположения. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(double x, double y, double tripTime, TimeUnits units)     Инициирует перемещение агента в точку с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

x — X-координата местоположения. В случае ГИС пространства это широта, измеренная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата местоположения. В случае ГИС пространства это долгота, измеренная в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(double x, double y, double z, double tripTime)   Инициирует перемещение агента в место с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

x, y, z: X-, Y-, Z- координаты местоположения
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(double x, double y, double z, double tripTime, TimeUnits units)   Инициирует перемещение агента в место с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

x, y, z: X-, Y-, Z- координаты местоположения
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(Agent agent, double tripTime)     Инициирует перемещение агента к другому агенту. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

agent — другой агент
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(Agent agent, double tripTime, TimeUnits units)     Инициирует перемещение агента к другому агенту. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

agent — другой агент
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(Attractor attractor, double tripTime)   Инициирует перемещение агента в заданный аттрактор. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

attractor — аттрактор
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(Attractor attractor, double tripTime, TimeUnits units)   Инициирует перемещение агента в заданный аттрактор. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

attractor — аттрактор
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(INode node, double tripTime)     Инициирует перемещение агента в заданный узел. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

node — узел
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(INode node, double tripTime, TimeUnits units)     Инициирует перемещение агента в заданный узел. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

node — узел
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(INode node, Point location, double tripTime)     Инициирует перемещение агента в заданную точку внутри указанного узла. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

node — узел
location — место внутри узла, может быть null
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(INode node, Point location, double tripTime, TimeUnits units)     Инициирует перемещение агента в заданную точку внутри указанного узла. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

node — узел
location — место внутри узла, может быть null
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToInTime(Point location, double tripTime)     Инициирует перемещение агента в направлении заданного местоположения. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

location — место назначения
tripTime — время перемещения, в единицах модельного времени
void moveToInTime(Point location, double tripTime, TimeUnits units)     Инициирует перемещение агента в направлении заданного местоположения. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

location — место назначения
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToNearestAgent (java.lang.Iterable agents, double tripTime)     Инициирует перемещение агента к ближайшему агенту из данной коллекции (или популяции агентов). Прекращает какое-либо движение в этот момент. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

agents — коллекция (или популяция) агентов
tripTime — время перемещения
void moveToStraightInTime(double x, double y, double z, double tripTime)   Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в место с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

x, y, z: X-, Y-, Z- координаты местоположения
tripTime — время перемещения, в единицах модельного времени
void moveToStraightInTime(double x, double y, double z, double tripTime, TimeUnits units)   Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в место с заданными координатами. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

x, y, z: X-, Y-, Z- координаты местоположения
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
void moveToStraightInTime(Point location, double tripTime)     Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в направлении заданного местоположения. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц модельного времени.

location — место назначения
tripTime — время перемещения, в единицах модельного времени
void moveToStraightInTime(Point location, double tripTime, TimeUnits units)     Инициирует перемещение агента по прямой (без учета существующих сетей или маршрутов) в направлении заданного местоположения. Изменяет скорость агента так, чтобы достичь цели за tripTime единиц времени.

location — место назначения
tripTime — время перемещения, в заданных единицах
units — константа, задающая единицы измерения времени
Мгновенное перемещение ("скачком")
Все приведенные в этом разделе функции не вызывают Действие при достижении места назначения.
Функция Описание
void jumpTo(double x, double y)     Мгновенно перемещает агента в заданное место в пространстве. Прекращает любое движение.

x — X-координата нового местоположения агента. В случае ГИС пространства это широта нового местоположения, в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
y — Y-координата нового местоположения агента. В случае ГИС пространства это долгота нового местоположения, в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180)
void jumpTo(double x, double y, double z)   Мгновенно перемещает агента в заданное место в пространстве. Прекращает любое движение.

x — X-координата нового местоположения агента
y — Y-координата нового местоположения агента
z — Z-координата нового местоположения агента
void jumpTo(String geographicPlace)   Посылает запрос на ГИС-сервер для поиска местоположения с заданным названием и мгновенно перемещает агента в найденную точку на ГИС карте.

node — имя места (например, города)
void jumpTo(INode node)     Мгновенно перемещает агента в заданный узел сети. Прекращает любое движение.

node — узел сети
void jumpTo(INode location, Point location)     Мгновенно перемещает агента в указанную точку внутри заданного узла сети. Прекращает любое движение.

node — узел сети
location — (опционально) точка внутри узла, может быть null
void jumpTo(Point location)     Мгновенно перемещает агента в заданное место в пространстве. Прекращает любое движение.

location — точка нового местоположения агента
void jumpToCell(int r, int c)   Перемещает агента в ячейку пространства с заданными индексами строки и столбца. Если данная ячейка уже занята другим агентом, то возникнет ошибка.

r — индекс строки ячейки дискретного пространства
c — индекс столбца ячейки дискретного пространства
boolean jumpToRandomEmptyCell()   Случайным образом выбирает незанятую ячейку дискретного пространства и перемещает агента в эту ячейку. Если свободных ячеек нет, то не делает ничего. Возвращает true, если свободная ячейка была успешно найдена, и false, если нет.
Цель движения
Функция Описание
double getTargetX()     Возвращает X-координату цели движения агента, если агент в данный момент движется. Если нет, то возвращает текущую X-координату агента в непрерывном или в ГИС пространстве. В случае ГИС пространства это широта, заданная в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
double getTargetY()     Возвращает Y-координату цели движения агента, если агент в данный момент движется. Если нет, то возвращает текущую Y-координату агента в непрерывном или в ГИС пространстве. В случае ГИС пространства это долгота (-180 ... (Запад) ... 0 ... (Восток) ... +180).
double getTargetZ()   Возвращает Z-координату цели движения агента, если агент в данный момент движется. Если нет, то возвращает текущую Z-координату агента в непрерывном пространстве.
double getTargetLat()   Возвращает широту цели движения агента, если агент в данный момент движется. Если нет, то возвращает текущую широту агента в ГИС пространстве. Широта задается в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90).
double getTargetLon()   Возвращает долготу цели движения агента, если агент в данный момент движется. Если нет, то возвращает текущую долготу агента в ГИС пространстве. Долгота задается в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180).
Расстояние до другой точки/агента
Функция Описание
double distanceByRoute(Agent other)   Возвращает расстояние от этого агента до другого агента, рассчитанное согласно длине имеющегося маршрута между точками.

other — агент, расстояние до которого нужно вычислить
double distanceTo(Agent other)     Возвращает расстояние от этого агента до указанного агента. В случае ГИС пространства возвращает расстояние в метрах.

other — агент, расстояние до которого нужно вычислить
double distanceTo(Agent other, LengthUnits units)     Возвращает расстояние от этого агента до указанного агента, в заданных единицах. В случае ГИС пространства возвращает расстояние в метрах.

other — агент, расстояние до которого нужно вычислить
units — константа, задающая единицы измерения длины
double distanceTo(double x, double y)     Возвращает расстояние от этого агента до указанной точки.

x — X-координата точки. В случае ГИС пространства это широта точки, в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90)
y — Y-координата точки. В случае ГИС пространства это долгота точки, в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180)
double distanceTo(double x, double y, LengthUnits units)     Возвращает расстояние от этого агента до указанной точки, в заданных единицах.

x — X-координата точки. В случае ГИС пространства это широта точки, в градусах (-90 ... (Юг) ... 0 ... (Север) ... +90)
y — Y-координата точки. В случае ГИС пространства это долгота точки, в градусах (-180 ... (Запад) ... 0 ... (Восток) ... +180)
units — константа, задающая единицы измерения длины
double distanceTo(double x, double y, double z)   Возвращает расстояние от этого агента до указанной точки.

x — X-координата точки
y — Y-координата точки
z — Z-координата точки
double distanceTo(Point p)     Возвращает расстояние от этого агента до указанной точки.

p — точка, расстояние до которой нужно вычислить
double distanceTo(Point p, LengthUnits units)     Возвращает расстояние от этого агента до указанной точки, в заданных единицах.

p — точка, расстояние до которой нужно вычислить
units — константа, задающая единицы измерения длины
Скорость
Функция Описание
double getSpeed() Возвращает скорость агента, в метрах в секунду. Применимо только для агентов, живущих в непрерывном или в ГИС пространстве. Обратите внимание, что ненулевое значение скорости не означает, что агент движется в данный момент - он начинает движение только при вызове функции moveTo().
double getSpeed(SpeedUnits units) Возвращает скорость агента, в заданных единицах измерения скорости. Применимо только для агентов, живущих в непрерывном или в ГИС пространстве. Обратите внимание, что ненулевое значение скорости не означает, что агент движется в данный момент - он начинает движение только при вызове функции moveTo().

units — константа, задающая единицы измерения скорости
void setSpeed(double speedInMPS) Задает новое значение скорости для агента (в метрах в секунду). Если в момент вызова функции агент двигался, то он продолжит движение с новой скоростью. Применимо только для агентов, живущих в непрерывном или в ГИС пространстве. Обратите внимание, что ненулевое значение скорости не означает, что агент движется в данный момент - он начинает движение только при вызове функции moveTo().

speedInMPS — новое значение скорости
void setSpeed(double speedInUnits, SpeedUnits units) Задает новое значение скорости для агента (в заданных единицах). Если в момент вызова функции агент двигался, то он продолжит движение с новой скоростью. Применимо только для агентов, живущих в непрерывном или в ГИС пространстве. Обратите внимание, что ненулевое значение скорости не означает, что агент движется в данный момент - он начинает движение только при вызове функции moveTo().

speedInUnits — новое значение скорости
units — константа, задающая единицы измерения скорости
Поворот
Функция Описание
double getRotation() Возвращает текущий угол поворота агента (в радианах). Применимо только при нахождении агента в непрерывном или в ГИС пространстве.
double getGISHeading() Возвращает угол текущего направления агента (измеряется в радианах, по часовой стрелке, начиная с северного направления). Применимо только при нахождении агента в ГИС пространстве.
void setRotation(double rotation) Задает угол поворота анимации агента (в радианах). Применимо только при нахождении агента в непрерывном или в ГИС пространстве.

rotation — угол поворота агента в радианах
boolean isAutomaticHorizontalRotation() Возвращает true, если агент поворачивается по ходу движения, false - если нет.
void setAutomaticHorizontalRotation(boolean yes) Задает, должна ли анимация агента автоматически поворачиваться в направлении движения агента.

yes — если true, то анимация агента будет поворачиваться, если false - нет
double getVerticalRotation() Возвращает угол поворота анимации агента относительно вертикальной оси Z (в радианах). Применимо при нахождении агента в непрерывном пространстве.
void setVerticalRotation(double rotation) Задает угол поворота анимации агента относительно вертикальной оси Z (в радианах). Применимо при нахождении агента в непрерывном пространстве.

rotation — угол поворота
boolean isAutomaticVerticalRotation() Возвращает true, если анимация агента автоматически наклоняется при движении по наклонным плоскостям (пример - коробка, которая едет по конвейеру), false - если нет (пример - пассажир, поднимающийся по лестнице и не отклоняющийся при этом, чтобы быть перпендикулярным плоскости лестницы).
void setAutomaticVerticalRotation(boolean yes) Задает, должна ли фигура анимации агента автоматически поворачиваться (наклоняться или отклоняться) относительно вертикальной оси при движении агента по наклонным плоскостям.

yes — если true, то анимация агента будет поворачиваться, если false - нет
Дискретное пространство
Функция Описание
int getR()   Возвращает индекс строки ячейки дискретного пространства, в которой находится агент.
int getC()   Возвращает индекс столбца ячейки дискретного пространства, в которой находится агент.
int spaceRows()   Возвращает количество строк в дискретном пространстве.
int spaceColumns()   Возвращает количество столбцов в дискретном пространстве.
double spaceCellWidth()   Возвращает ширину ячейки в дискретном пространстве.
double spaceCellHeight()   Возвращает высоту ячейки в дискретном пространстве.
CellPosition randomEmptyCell()   Ищет случайным образом свободную ячейку пространства и возвращает индексы ее строки и столбца в виде массива из двух элементов.
void setCell(int r, int c)   Помещает агента в заданную ячейку дискретного пространства. Подразумевается, что ячейка пуста, и агент еще не был помещен в какую-либо ячейку.
Может использоваться только для начальной инициализации местоположения агента.
r — индекс строки ячейки
c — индекс столбца ячейки
boolean isNextCellInsideSpace(CellDirection dir)   Проверяет, существует ли ячейка в заданном направлении от агента. Возвращает true, если ячейка существует, и false, если нет, и перемещение агента в данном направлении вытолкнет агента за пределы сетки дискретного пространства (например, вызов функции moveToNextCell(CellDirection) в таком случае выдаст ошибку).

dir — направление (NORTH, SOUTH, ..., NORTHEAST, ...)
void swapWithAgent(Agent anotherAgent)   Меняет местами двух агентов (другой агент тоже должен находиться в этом же дискретном пространстве).

anotherAgent — другой агент, с которым этот агент поменяется ячейками
void swapWithCell(int r, int c)   Меняется местами с другим агентом, находящимся в заданной ячейке. Эта ячейка может быть пуста - в этом случае агент просто переместится туда.

r — индекс строки новой ячейки
c — индекс столбца новой ячейки
void swapWithNextCell(CellDirection dir)   Меняется местами с другим агентом, находящимся в соседней ячейке по заданному направлению.

dir — направление (NORTH, SOUTH, ..., NORTHEAST, ...)
void moveToNextCell(CellDirection dir)   Перемещает агента в соседнюю ячейку в заданном направлении.

dir — направление (NORTH, SOUTH, ..., NORTHEAST, ...)
void jumpToCell(int r, int c)   Перемещает агента в ячейку пространства с заданными индексами строки и столбца. Если данная ячейка уже занята другим агентом, то возникнет ошибка.

r — индекс строки ячейки дискретного пространства
c — индекс столбца ячейки дискретного пространства
boolean jumpToRandomEmptyCell()   Случайным образом выбирает незанятую ячейку дискретного пространства и перемещает агента в эту ячейку. Если свободных ячеек нет, то не делает ничего. Возвращает true, если свободная ячейка была успешно найдена, и false, если нет.
Agent getAgentAtCell(int r, int c)   Возвращает агента, расположенного в заданной ячейке (или null, если ячейка пуста).

r — индекс строки ячейки
c — индекс столбца ячейки
Agent getAgentNextToMe(CellDirection dir)   Возвращает агента, расположенного в соседней ячейке по заданному направлению.

dir — направление (NORTH, SOUTH, ..., NORTHEAST, ...)
ГИС пространство
Функция Описание
IRouteProvider getRouteProvider()   Возвращает объект - поставщик маршрутов, используемый при построении маршрутов движения агента.
void setRouteProvider(IRouteProvider routeProvider)   Задает объект - поставщик маршрутов, используемый при построении маршрутов движения агента. Если агент в момент вызова функции двигался, то он будет остановлен.

routeProvider — поставщик маршрутов
AbstractShapeGISMap getGISMap()   Возвращает ГИС карту - объект типа AbstractShapeGISMap. Выдает ошибку, если агент живет не в ГИС среде. Обратите внимание, что возвращаемый объект - экземпляр базового класса для ГИС карт, и для дополнительных сервисов его нужно привести к типу ShapeGISMap.
Сети для построения маршрутов
Функция Описание
INetwork getNetwork()   Возвращает сеть, в которой находится этот агент.
INetwork[] getNetworks() Возвращает массив сетей, расположенных в этом агенте или пустой массив, если в агенте нет ни одной сети.
ConveyorNetwork[] getConveyorNetworks() Возвращает массив конвейерных сетей, расположенных в этом агенте или пустой массив, если в агенте нет таких сетей.
RailwayNetwork[] getRailwayNetworks() Возвращает массив ж/д сетей, расположенных в этом агенте или пустой массив, если в агенте нет таких сетей.
RoadNetwork[] getRoadNetworks() Возвращает массив дорожных сетей, расположенных в этом агенте или пустой массив, если в агенте нет таких сетей.
INode getNetworkNode()   Возвращает узел сети, в котором сейчас находится ваш агент.
Уровни
Функция Описание
getLevel()   Возвращает уровень, на котором живет ваш агент.
Level[] getLevels() Возвращает массив уровней в вашем агенте.
setLevel(Level level)   Размещает агента на заданном уровне.

level — уровень, на котором будет жить ваш агент
Диаграмма состояний
Функция Описание
boolean inState(IStatechartState<?,?> state) Возвращает true, если соответствующая диаграмма состояний этого агента находится в указанном состоянии: либо прямо в этом состоянии, если речь идет о простом состоянии, либо в одном из внутренних, если речь идет о сложном состоянии.

state — состояние
Уведомления об изменениях, события
Функция Описание
void onChange() Уведомление, которое обозначает, что какие-то данные агента могли измениться в результате некоего события. Возможные причины:
1. Перерасчет условий в событиях и переходах диаграммы состояний, которые срабатывают по условию
2. Перерасчет интенсивностей в событиях и переходах диаграммы состояний, которые срабатывают с заданной интенсивностью
По умолчанию эта функция вызывается, если агент создает событие или если один из портов агента получает сообщение. Это можно предотвратить, вызвав функцию nothingChanged().
Также вы можете вызвать эту функцию вручную, если хотите, чтобы какой-то конкретный агент заметил изменение даже в том случае, если не сработало событие.
void nothingChanged() Если вызвать эту функцию при срабатывании события, то исполнительный модуль не будет вызывать функцию onChange() агента, в котором произошло событие. Это сработает только для одного события. Вызов функции не влияет на остальных агентов, для которых либо пользователь вызвал вручную функцию onChange(), либо она сработала по каким-то другим причинам.
java.util.Set<DynamicEvent> getDynamicEvents() Возвращает набор всех существующих в данный момент (активных) динамических событий в агенте. Вы не можете изменять этот набор.
Агенты-контейнеры

По умолчанию у каждого агента есть внутренняя коллекция contents(), похожая на контейнеры, которые создаются в блоках Batch и Pickup Библиотеки Моделирования Процессов. Функции, перечисленные в этом разделе, помогут вам добавлять других агентов в коллекцию contents() и удалять их по своему желанию.

Функция Описание
<T extends Agent> List<T> contents() Возвращает список агентов, которые хранятся во внутренней коллекции contents() вашего агента.
addAgentToContents(Agent agent) Добавляет заданного агента во внутреннюю коллекцию contents() вашего агента.

agent — агент, которого нужно добавить во внутреннюю коллекцию
removeAgentFromContents(Agent agent) Удаляет заданного агента из внутренней коллекции contents() вашего агента.

agent — агент, которого надо удалить из внутренней коллекции
Иерархия модели, популяции
Функция Описание
Agent getOwner() Возвращает агента, в который вложен этот агент, или null, если этот агент является агентом верхнего уровня в модели.
Agent getRootAgent() Возвращает агента верхнего уровня модели или null, если он не может быть найден.
AgentList<?> getPopulation() Для агента, живущего в популяции, возвращает список агентов, живущих в агенте-владельце этого агента, или null, если агент не реплицирован (не живет в популяции).
AgentList<Agent> getDefaultPopulation() Возвращает созданную по умолчанию для агента популяцию (находящуюся в агенте верхнего уровня модели) или null, если агент верхнего уровня не может быть найден.
void goToPopulation(AgentList newPopulation) Перемещает агента в другую популяцию. Агент покинет свою текущую среду и попадет в среду новой популяции newPopulation (если такая имеется).

newPopulation — новая популяция агента. Если null, то агент попадет в созданную по умолчанию популяцию агента верхнего уровня модели и покинет свою текущую среду.
void deleteSelf() Удаляет этого агента из популяции агентов (или реплицированного блока), которому он принадлежит. Выдает ошибку, если агент находится в каком-то блоке диаграммы процесса. Также выдает ошибку, если агент не принадлежит никакой популяции (т.е. является одиночным, нереплицированным агентом).
boolean isReplicated() Возвращает true, если этот агент принадлежит популяции или реплицированному блоку, и false - если нет.
int getIndex() Если этот агент живет в популяции (коллекции типа «список»), функция возвращает индекс этого агента в этом списке. Возвращает -1, если популяция не типа «список».
Текущая реализация неэффективна (у нее линейная сложность).
Шаги синхронизации
Функция Описание
boolean areStepsEnabled() Проверяет, включены ли временные шаги. Если включены, возвращает true. В противном случае возвращает false.
void enableSteps(double stepDuration) Включает дискретные временные шаги с заданной длительностью.

stepDuration — длительность временного шага
void disableSteps() Выключает временные шаги
Исполняющий модуль
Функция Описание
Engine getEngine() Возвращает исполняющий модуль, управляющий данным агентом.
void setEngine(Engine engine) Задает исполняющий модуль для данного агента. Требуется при создании агента с помощью конструктора по умолчанию.

engine — исполняющий модуль, который будет управлять данным агентом
Управление выполнением модели
Функция Описание
boolean runSimulation() Команда исполняющего модуля, которая выполняется только в том случае, если модуль находится в состоянии PAUSED. В других состояниях не делает ничего, просто возвращает false.
Переводит исполняющий модуль в состояние RUNNING и затем запускает модель в отдельном потоке. Выполнение может быть прервано в результате одного из следующих событий:
  • больше нет событий, которые нужно выполнить (состояние FINISHED)
  • достигнуто заданное время stopTime, когда выполнение модели должно завершиться (состояние FINISHED)
  • была вызвана функция pause() (состояние PAUSED)
  • агент верхнего уровня был уничтожен (состояние FINISHED)
  • во время выполнения события или уничтожения агента произошла ошибка (состояние ERROR)
Эта функция не должна вызываться из потока выполнения модели!
Ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии PAUSED, FINISHED или ERROR.
boolean pauseSimulation() Команда исполняющего модуля, которая выполняется только в том случае, если модуль находится в состоянии RUNNING. В других состояниях не делает ничего, просто возвращает false.
Переводит исполняющий модуль в состояние PLEASE_WAIT и затем выставляет флаг, который при проверке исполняющим модулем, вынуждает его завершить выполнение модели после того, как выполнится текущее событие. Дальнейшее поведение зависит от контекста, из которого была вызвана эта функция:
  • Если эта функция вызывается из потока выполнения модели, из кода действия элемента управления или из действия по щелчку фигуры, то она мгновенно возвращает true. Модель приостанавливается сразу после выполнения текущего события.
  • Если эта функция вызвана из какого-либо другого места (например, из заданного пользователем параллельного потока), то она ждет завершения потока выполнения модели и возвращает true.
Ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии PAUSED, FINISHED или ERROR.
boolean stopSimulation() Команда исполняющего модуля, выполняемая только в том случае, если модуль не находится в состоянии IDLE.
В состоянии IDLE не делает ничего, просто возвращает false. Если модуль находится в состоянии RUNNING, то устанавливает флаг, который при проверке потоком выполнения модели, вынуждает исполняющий модуль завершить выполнение модели. Дальнейшее поведение зависит от контекста, из которого вызван эта функция:
  • •Если эта функция вызывается из потока выполнения модели, из кода действия элемента управления или из действия по щелчку фигуры, то она мгновенно возвращает true, оставляя модуль в состоянии PLEASE_WAIT. Модель останавливается и уничтожается позднее (обработку этого момента можно добавить в Действие после "прогона" модели эксперимента или в Действие при уничтожении агента верхнего уровня). В таких ситуациях рекомендуется использовать функцию finish().
  • •Если эта функция вызвана из какого-либо другого места (например, из заданного пользователем параллельного потока), то она ждет завершения потока выполнения модели, а затем уничтожает модель (вызывает функцию root.onDestroy()) и забывает о ней. После этого она помещает управляющий модуль в состояние IDLE и возвращает true.
boolean finishSimulation() Команда исполняющего модуля, выполняемая только в том случае, если модуль находится в состоянии RUNNING или PAUSED. В других состояниях не делает ничего, просто возвращает false.
Устанавливает флаг, который при проверке исполняющим модулем, вынуждает его завершить выполнение после завершения выполнения текущего события. Дальнейшее поведение зависит от контекста, из которого вызвана эта функция:
  • Если эта функция вызывается из потока выполнения модели, из кода действия элемента управления или из действия по щелчку фигуры, то она мгновенно возвращает true. Модель останавливается сразу после выполнения текущего события (обработку этого момента можно добавить в Действие после "прогона" модели эксперимента.
  • Если эта функция вызвана из какого-либо другого места (например, из заданного пользователем параллельного потока), то она ждет завершения потока выполнения модели и возвращает true.
Ко времени завершения работы этой функции исполняющий модуль может находиться в состоянии FINISHED или ERROR.
Сообщения об ошибках
Функция Описание
RuntimeException error(Throwable cause, String errorText) Сообщает об ошибке во время выполнения модели: выдает ошибку RuntimeException с соответствующим текстом errorText, предварив его полным именем агента. Эта функция никогда ничего не возвращает, лишь выдает ошибку. Тип возвращаемого объекта задается в тех случаях, когда вы хотите использовать следующий способ вызова: throw error("my message");

cause — причина (сохраняется для более подробного сообщения), может быть null
errorText — текст с описанием ошибки, который будет выводиться в панель Ошибки
RuntimeException errorInModel(Throwable cause, String errorText) Сообщает об ошибке во время выполнения модели: выдает ошибку ModelException с заданным текстом ошибки, предварив его полным именем агента. Эта функция никогда ничего не возвращает, лишь выдает ошибку. Тип возвращаемого объекта задается в тех случаях, когда вы хотите использовать следующий способ вызова: throw errorInModel("my message");
Данная функция отличается от функции error() тем, как отображается сообщение об ошибке: ошибки в логике модели не так "серьезны" по сравнению с другими ошибками. Они случаются довольно часто и сообщают разработчику о необходимости изменить некоторые параметры модели.
Примером могут послужить такие сообщения: "агент не смог покинуть блок диаграммы процесса, поскольку следующий блок занят" или "недостаточная вместимость стеллажа".

cause — причина (сохраняется для более подробного сообщения), может быть null
errorText — текст с описанием ошибки, который будет выводиться в панель Ошибки
void warning(String warningText) Выдает предупреждение в ходе выполнения модели с заданным текстом предупреждения warningText, предварив его полным именем агента.
При отображении таких сообщений соблюдается ряд условий:
  • Когда возникает множество предупреждений с одинаковым текстом warningText, отображаются только первые 10.
  • Когда возникает больше 1000 предупреждений с разным текстом warningText, все последующие предупреждения warnings, включая повторы тех, которые уже вошли в первую 1000, не отображаются.
  • Будьте аккуратны с использованием динамически меняющегося текста warningText, например, при перечислении имен агентов. Для таких случаев мы рекомендуем использовать warning(warningTextFormat, args).
void warning(String warningTextFormat, Object ... args) Выдает предупреждение в ходе выполнения модели с заданным текстом предупреждения warningText, предварив его полным именем агента.
При отображении таких сообщений соблюдается ряд условий:
  • Когда возникает больше 1000 предупреждений с разным текстом warningTextFormat, все последующие предупреждения warnings, включая повторы тех, которые уже вошли в первую 1000, не отображаются.
  • Можно вызывать множество предупреждений со строками одинакового формата, который определяет тип предупреждения, но если аргументы args будут отличаться, AnyLogic отобразит только первые 10 предупреждений каждого типа.
  • Когда возникает больше 1000 предупреждений с разным текстом warningTextFormat, все последующие предупреждения warnings, включая повторы тех, которые уже вошли в первую 1000, не отображаются.
Не используйте динамически изменяющийся аргумент warningTextFormat, например, для перечисления имен агентов. Вместо этого используйте аргументы args.
Общая информация об агенте
Функция Описание
int getId() Возвращает уникальный идентификатор вашего агента в контексте текущего выполнения модели.
String getName() Возвращает имя вашего агента, например, имя его экземпляра в агенте-среде с индексом в квадратных скобках, если ваш агент реплицирован. Для агентов верхнего уровня возвращает root. Для популяции по умолчанию имя популяции будет <population>.
String getFullName() Возвращает полное имя вашего агента и путь к нему, начиная с агента верхнего уровня.
String agentInfo() Возвращает информацию о вашем агенте:
  • Задана дли для него среда
  • Текущие координаты x, y, z
  • Значения вращения по горизонтали и вертикали в радианах
  • Скорость движения агента
  • Двигается агент сейчас или нет
  • Связи агента
String toString() Возвращает информацию об агенте в текстовом формате, возможно, в нескольких строках. Используйте эту функцию, чтобы отображать информацию об агенте в окне инспекта в ходе выполнения модели. Чтобы настроить то, что возвращает функция, идите в секцию Специфические свойств типа агента и щелкните по кнопке Создать функцию toString() с параметрами. В свойствах созданной функции вы сможете настроить ее под ваши нужды.
Специфические
Функция Описание
void create() Создает вложенные объекты вашего агента и вызывает пользовательские функции: onBeforeCreate() в начале onCreate() в конце.
Эта функция вызывается после того, как агент был создан и его параметры были заданы агентом-средой. Если существуют какие-то вложенные объекты, функция doCreate() должна быть реализована в подклассе.
void createAndStart(Agent anyAgent) Делает агента-среду вашего агента агентом верхнего уровня, создает внутреннюю структуру агента (вложенные агенты, диаграммы состояний и так далее) и запускает его. Таким образом диаграмма состояний агента и события начинают работу.
Эту функцию необходимо вызывать для всех агентов, созданных пользователем в своем коде с помощью конструктора без аргументов.
Не вызывайте эту функцию для агентов, созданных обычным путем в интерфейсе AnyLogic и для агентов, созданных в библиотечных блоках (Source, PedSource и так далее).

anyAgent — любой допустимый агент модели. Вам нужно получить агента верхнего уровня модели, который станет настоящей "средой" созданного агента. Значение не может быть равно null и должно содержать отсылку getEngine() к допустимому исполнительному модулю.
<T extends AgentExtension> T ext(Class<T> c) Возвращает расширение заданного типа агента. Создает расширение, если его еще не было. В некоторых случаях функция tryExt() может быть полезной, если вам просто нужно проверить, есть ли у агента какие-то расширения, не создавая их.
Создав свой нестандартный класс расширения, не забудьте его зарегистрировать.
Функция может вернуть сообщение об ошибке, если запрошенное расширение несовместимо теми расширениями, которые у агента уже есть (например, вы запросили "Агент с дискретным типом пространства", а у агента уже есть расширение "агент с непрерывным типом пространства").
Пользователям не стоит сохранять ссылку на полученное расширение. Вместо этого лучше сохранить ссылку на самого агента и при необходимости вызывать эту функцию, чтобы получить расширение. Причина такого ограничения заключается в том, что агент в любой момент времени может получить другое расширение, которое перепишет некоторые функции, реализованные в ранее добавленном расширении.
c — тип расширения. Используйте одну из констант EXT_* или ваш собственный класс расширения, если вы его задали
<T extends AgentExtension> tryExt(Class<T> c) Возвращает расширение заданного типа агента только в том случае, если этот агент уже содержит такое расширение. Возвращает null, если расширение не задано.

c — тип расширения. Используйте одну из констант EXT_* или ваш собственный класс расширения, если вы его задали
Как мы можем улучшить эту статью?