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

Функции RouteData

Объект RouteData содержит информацию о маршруте транспортера в виде списка задач по движению. Задачи выполняются последовательно в том порядке, в котором они перечислены. Каждая задача описывает движение транспортера по одному сегменту маршрута. Сегмент заканчивается, когда меняется тип движения. Существуют следующие типы движения:

  • PATH —  движение по сетевому пути
  • PLAIN — движение внутри узла сети (в том числе движение между точечным узлом и путем)
    Тип движения PLAIN также описывает движение транспортера с произвольным типом навигации внутри ячейки навигационной сетки.
  • PORT — движение между двумя сетевыми портами

Для работы с объектом RouteData можно использовать следующие функции:

Общие
Функция Описание
boolean isEmpty() Возвращает true, если объект RouteData содержит какую-либо информацию о маршруте транспортера. В противном случае возвращает false.
int size() Возвращает количество задач на движение в объекте RouteData.
RouteData findShortestRoute(Collection<RouteData> collection, LengthUnits units) Возвращает кратчайший маршрут из коллекции объектов RouteDataв указанных единицах длины.

collection — коллекция объектов RouteData
units —  константа, задающая единицу измерения длины
Информация о маршруте
Функция Описание
IRouteLocation getSourceLocation() Возвращает начальную точку маршрута, описанного в объекте RouteData.
IRouteLocation getTargetLocation() Возвращает конечную точку маршрута, описанного в объекте RouteData.
double distance(LengthUnits units) Возвращает длину маршрута, описанного в объекте RouteData, в заданных единицах длины.

units — константа, задающая единицу измерения длины
boolean contains(INode node) Проверяет, содержит ли маршрут, описанный в объекте RouteData, указанный узел сети.

node — узел сети
boolean contains(IPath path) Проверяет, содержит ли маршрут, описанный в объекте RouteData, указанный сетевой путь.

path — сетевой путь
Информация о задачах по движению
Функция Описание
IMovement getMovement(int index) Возвращает задачу по движению с указанным индексом из списка задач в объекте RouteData.

index — индекс задачи по движению из списка задач в объекте RouteData
IMovement getFirstMovement() Возвращает первую задачу по движению из списка задач в объекте RouteData. Если объект RouteData не содержит информации о маршруте, функция возвращает null.
IMovement getLastMovement() Возвращает последнюю задачу по движению из списка задач в объекте RouteData. Если объект RouteData не содержит информации о маршруте, функция возвращает null.
List<IMovement> getMovements() Возвращает список всех задач по движению из объекта RouteData. Возвращаемый список нельзя модифицировать.
Создание задач по движению
Функция Описание
IMovement createPlainMovement(INetworkMarkupElement networkElement, Point source, Point target) Создает задачу по движению типа PLAINв пределах одного сетевого узла.

networkElement — сетевой узел, где должно произойти движение
source — точка начала движения в узле (задается в абсолютной системе координат)
target — точка завершения движения в узле (задается в абсолютной системе координат)
IMovement createPathMovement(IPath path, boolean forward) Создает задачу по движению типа PATHв пределах одного сетевого пути в указанном направлении.

path — сетевой путь, где должно произойти движение
forward — если true, движение начинается с начальной точки пути; если false — с конечной точки пути
IMovement createPathMovement(IPath path, double sourceOffset, double targetOffset, LengthUnits units) Создает задачу по движению типа PATH. Движение происходит в пределах одного сетевого пути, начинается со смещением от начальной точки пути и завершается со смещением от начальной точки пути. Смещение задается в указанных единицах длины.

path — сетевой путь, где должно произойти движение
sourceOffset — расстояние от начальной точки пути до точки начала движения
targetOffset — расстояние от начальной точки пути до точки завершения движения
units —  константа, задающая единицу измерения длины
IMovement createPortMovement(MarkupPort source, MarkupPort target) Создает задачу по движению типа PORT между двумя указанными сетевыми портами.

source — сетевой порт, где должно начаться движение
target — сетевой порт, где должно завершиться движение
IMovement createNodeTransferMovement(INode node, IPath sourcePath, IPath targetPath) Создает задачу по движению типа PATH или PLAIN между двумя указанными сетевыми путями в пределах указанного сетевого узла. В случае прямоугольного или многоугольного узла это будет движение типа PLAIN, а в случае точечного узла, это будет движение типа PATH.

node — сетевой узел, где должно произойти движение
sourcePath — сетевой путь, где должно начаться движение
targetPath — сетевой путь, где должно завершиться движение
Добавление задач по движению
Функция Описание
addMovement(IMovement movement) Добавляет указанную задачу по движению в объект RouteData. Эта задача помещается в конец существующего списка задач.

movement — задача по движению
addMovement(int index, IMovement movement) Добавляет указанную задачу по движению в объект RouteData и помещает ее в существующий список задач с указанным индексом.

index — индекс, с которым новая задача должна быть помещена в существующий список задач
movement — задача по движению
addMovements(IMovement... movements) Добавляет разрозненные задачи по движению в объект RouteDataв порядке перечисления этих движений в виде аргументов. Эти задачи помещаются в конец существующего списка.

movements — задача по движению
addMovements(Collection <? extends IMovement> movements) Добавляет коллекцию задач по движению в объект RouteData в порядке расположения этих движений в коллекции. Эти задачи помещаются в конец существующего списка.

movements — коллекция задач по движению
addPlainMovement(INetworkMarkupElement networkElement, Point source, Point target) Добавляет в объект RouteData задачу по движению типа PLAIN в пределах одного сетевого узла.

networkElement — сетевой узел, где должно произойти движение
source — точка начала движения в узле (задается в абсолютной системе координат)
target — точка завершения движения в узле (задается в абсолютной системе координат)
addPathMovement(IPath path, boolean isForward) Добавляет в объект RouteData задачу по движению типа PATH в пределах одного сетевого пути в указанном направлении. Задача помещается в конец существующего списка.

path — сетевой путь, где должно происходить движение
forward — если true, движение начинается в начальной точке пути; если false — в конечной точке пути
addPathMovement(IPath path, double sourceOffset, double targetOffset, LengthUnits units) Добавляет в объект RouteData задачу по движению типа PATH. Движение происходит в пределах одного сетевого пути, начинается с заданным смещением от начальной точки пути и завершается с заданным смещением от начальной точки пути. Смещение рассчитывается в указанных единицах длины. Задача помещается в конец существующего списка.

path — сетевой путь, где должно происходить движение
sourceOffset — расстояние от начальной точки пути до точки начала движения
targetOffset — расстояние от начальной точки пути до точки завершения движения
units — константа, задающая единицу измерения длины
addNodeTransferMovement(INode node, IPath sourcePath, IPath targetPath) Добавляет в объект RouteData задачу по движению типа PATH или PLAIN с одного заданного пути на другой в пределах указанного сетевого узла. В случае прямоугольного или многоугольного узла, это будет движение типа PLAIN, а в случае точечного узла, это будет движение типа PATH.

node — сетевой узел, где должно происходить движение
sourcePath — сетевой путь, где должно начинаться движение
targetPath — сетевой путь, где должно завершаться движение
addPortMovement(MarkupPort source, MarkupPort target) Добавляет в объект RouteData движение типа PORT между двумя сетевыми портами.

source — сетевой порт, где должно начинаться движение
target — сетевой порт, где должно завершаться движение
Удаление задач по движению
Функция Описание
boolean removeMovement(IMovement movement) Удаляет указанную задачу по движению из объекта RouteData. Если функция возвращает true, задача была найдена в списке задач и успешно удалена. Если функция возвращает false, задача не была найдена в списке.

movement — задача по движению
removeMovement(int index) Удаляет задачу по движению с указанным индексом из списка задач в объекте RouteData.

index — индекс задачи по движению
removeFirstMovement() Удаляет первую задачу по движению из списка задач в объекте RouteData.
removeLastMovement() Удаляет последнюю задачу по движению из списка задач в объекте RouteData.
Как мы можем улучшить эту статью?