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

Путь

Пути и Узлы являются элементами разметки пространства, которые задают местоположение агентов в пространстве.

  • Путь графически задает траекторию движения агентов из одного места в другой.
  • Узел задает место, в котором агенты могут находиться.

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

Вы можете выбрать путь в качестве Места агентов в параметрах следующих блоков Библиотеки Моделирования Процессов:

Delay
Queue
Match
Combine
Seize
Service
Conveyor
Batch
RackStore

Рисование пути

Путь может состоять из нескольких сегментов. Каждый сегмент может быть либо линейным, либо дуговым.

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

  1. Сделайте двойной щелчок мышью по элементу Путь палитры Разметка пространства .
  2. Значок элемента должен поменяться на этот: . Это означает, что активирован режим рисования и теперь вы можете рисовать ломаную точка за точкой, последовательно щелкая мышью в тех точках диаграммы, куда вы хотите поместить сегменты пути.
  3. Чтобы нарисовать дуговой сегмент, не отпускайте кнопку мыши после щелчка и двигайте курсором. Отпустите кнопку мыши, когда этот сегмент готов и можно добавить следующий.

  4. Чтобы завершить рисование, добавьте последнюю точку пути двойным щелчком мыши.

Свойства

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

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

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

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

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

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

Двунаправленный — Здесь вы можете задать движение по пути в обоих направлениях.

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

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

Внешний вид

Тип — Тип пути. Выберите один из типов:

Пунктирная линия
Линия
Дорога
Жел. дорога
Конвейер

Цвет линии — Задает цвет линии пути. Щелкните мышью внутри элемента управления и выберите нужный цвет из списка наиболее часто используемых цветов или же выберите любой другой цвет с помощью диалога Цвета. Если вы не хотите, чтобы путь был виден, выберите Нет линии.

Толщина — Задает толщину пути, если Тип линии: Дорога, Жел. дорога, или Конвейер.

Толщина линии — Задает толщину пути, если Тип линии: Пунктирная линия или Линия. Выберите нужную вам толщину из выпадающего списка или же введите ее значение в пикселах в поле справа.

Расположение

X — x-координата начальной точки пути.

Y — y-координата начальной точки пути.

Z — [Доступно, только если установлен флажок Отображать: В 2D и в 3D или Только в 3D] z-координата начальной точки пути.

Точки

В секции свойств Точки расположена таблица относительных координат точек пути.

Первая точка всегда имеет координаты (0,0,0), и они не редактируются.
В остальных строках таблицы задаются координаты последующих точек.
Координаты каждой точки представляют собой смещения этой точки от начальной по оси X, Y и Z соответственно.
Если координаты точек в двумерном пространстве XY вы можете изменить и в графическом редакторе, то расположение точек пути относительно оси Z можно изменить только в этой таблице.
Специфические

Отображать — Здесь вы можете выбрать, будет ли фигура отображаться В 2D и в 3D, Только в 2D или Только в 3D (для просмотра трехмерной анимации нужно добавить 3D окно).

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

Функции

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

Длина
Функция Описание
double length() Возвращает длину пути в пикселях, вычисленную в 3D пространстве.
double length(LengthUnits units) Возвращает длину пути в пикселях, вычисленную в 3D пространстве.

units — константа, задающая единицу измерения длины
Точки
Функция Описание
Point getStartPoint() Возвращает объект Point с координатами начальной точки пути.
Point getStartPoint(Point out) Возвращает объект Point с координатами начальной точки пути.

out — объект out типа Point, в который будут записаны полученные координаты. Объект может быть равен null.
Point getEndPoint() Возвращает объект Point с координатами конечной точки пути.
Point getEndPoint(Point out) Возвращает объект Point с координатами конечной точки пути.

out — объект out типа Point, в который будут записаны полученные координаты. Объект может быть равен null.
Position getStartPosition() Возвращает объект Position с координатами и ориентацией начальной точки пути.
Position getStartPosition(Position out) Возвращает объект Position с координатами и ориентацией начальной точки пути. out — объект out типа Position, в который будут записаны полученные координаты. Объект может быть равен null.
Position getEndPosition() Возвращает объект Position с координатами и ориентацией конечной точки пути.
Position getEndPosition(Position out) Возвращает объект Position с координатами и ориентацией конечной точки пути.

out — объект out типа Position, в который будут записаны полученные координаты. Объект может быть равен null
boolean contains(double px, double py) Возвращает значение true, если точка с заданными координатами находится внутри элемента пути.

px — X-координата точки.
py — Y-координата точки
boolean contains(double px, double py, double distance) Возвращает true, если путь содержит точку с заданными координатами с учетом заданной погрешности distance; в противном случае возвращает значение false.

px — X-координата точки.
py — Y-координата точки.
distance — погрешность расстояния, позволяющая определить, находится ли заданная точка в непосредственной близости от линии данного элемента разметки.
boolean containsSq(double px, double py, double squareDistance) Возвращает значение true, если путь содержит точку с заданными координатами с учетом заданной погрешности square distance; в противном случае возвращает значение false.

px — X-координаты точки.
py — Y-координаты точки.
squareDistance — квадратичная погрешность расстояния, позволяющая определить, находится ли заданная точка в непосредственной близости от линии данного элемента разметки.
double getNearestPoint(double x, double y, Point out) Вычисляет точку на этом пути, ближайшую к заданным координатам (x, y) и записывает результат в объект Point. Возвращает квадрат расстояния до точки. Все расчеты производятся в горизонтальной проекции (z-координата не используется, как если бы все значения z равнялись нулю)

x — X-координаты точки.
y — Y-координаты точки.
out — объект Point, в который записываются координаты.
double getNearestPoint(double x, double y, double z, Point out) Вычисляет точку на этом пути, ближайшую к заданным координатам(x, y, z) и записывает результат в объект Point. Возвращает квадрат расстояния до точки.

x — X-координаты точки.
y — Y-координаты точки.
y — Y-координаты точки.
out — объект Point, в который записываются координаты.
Position getPositionAtOffset(double offset, Position out) Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе (в пикселях) от начальной точки пути.

offset — отступ, неотрицательное значение, которое равно или меньше длины пути
out — объект out типа Position, в который будут записаны полученные координаты. Объект может быть равен null
Position getPositionAtOffset(double offset, LengthUnits units, Position out) Возвращает объект Position с координатами и ориентацией точки, находящейся на заданном отступе от начальной точки пути.

offset — отступ, неотрицательное значение, которое равно или меньше длины пути
units — одна из констант, задающая единицу измерения длины
out — объект out типа Position, в который будут записаны полученные координаты. Объект может быть равен null.
Сетевые порты
Функция Описание
NetworkPort createPort(PathEndType endType) Создает сетевой порт на начальной или конечной точке пути в зависимости от значения аргумента.

endType — Указывает, на какой из конечных точек пути создается порт. Допустимые значения:
PathEndType.BEGIN
PathEndType.END
NetworkPort createPort(PathEndType endType, NetworkPort pairedPort) Создает сетевой порт на начальной или конечной точке пути в зависимости от значения аргумента. Созданный порт будет соединен с указанным портом из другой сети.

endType — Указывает, на какой из конечных точек пути создается порт. Допустимые значения:
PathEndType.BEGIN
PathEndType.END
pairedPort — Сетевой порт, принадлежащий другой сети.
Сетевой порт, созданный с помощью кода, можно соединить только с другим таким же портом. Чтобы соединить порты, созданные с помощью графического редактора, задайте нужные значения в их свойствах.
Сегменты
Функция Описание
int getSegmentCount() Возвращает количество сегментов пути.
MarkupSegment getSegment(int index) Возвращает сегмент по его индексу.

index — индекс сегмента (отсчет начинается с нуля)
Узлы
Функция Описание
Node getSource() Возвращает начальный узел пути. Начальный узел является началом пути.
Node getTarget() Возвращает конечный узел пути. Конечный узел является концом пути.
Видимость
Функция Описание
boolean isVisible() Возвращает true, если путь отображается, возвращает false, если путь не отображается.
void setVisible(boolean v) Задает видимость пути.

v — видимость. Если значение v равно true, путь будет отображаться; если значение vравно false — то нет.
Цвет / текстура
Функция Описание
Color getLineColor() Возвращает цвет пути или null, если у пути нет цвета или если путь отображает текстуру (в последнем случае используйте функцию getLineTexture()).
Texture getLineTexture() Возвращает текстуру пути или null, если у пути нет текстуры, а используется цвет (в последнем случае используйте функцию getLineColor()).
void setLineColor(Color color) Задает новый цвет пути.

color — новый цвет
void setLineColor(Paint color) Задает новый цвет (или текстуру) пути.

color — новый цвет (или текстура)
Уровень
Функция Описание
Level getLevel() Возвращает уровень, на котором расположен данный элемент.
Удаление
Функция Описание
void remove() Удаляет путь из презентации. Если путь не является частью презентации, функция не выполняет ничего. Обратите внимание, что удаление из презентации не обязательно подразумевает удаление из логики модели, поскольку логические сети и маршруты могли быть заданы еще до удаления элемента и не исчезают.

Направление движения

У пути есть начальная и конечная точка, и поэтому у него есть направление движения.

Важно знать где поместить начальную точку пути в случае, когда путь анимирует блок Библиотеки Моделирования Процессов (Queue, Conveyor, и т.д.), т.к.:

  • Conveyor перемещает агентов от начальной точки пути к конечной.
  • Queue помещает объектов в свою очередь с конечной точки пути к начальной (начало очереди в конечной точке пути).

Если путь однонаправленный, направление движения отображается на элементе пути в виде стрелки. Если путь двунаправленный, вы можете узнать направление движения, выделив путь в графическом редакторе — направление отобразится на элементе пути в виде стрелки.

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

  1. Щелкните путь в графическом редакторе правой кнопкой мыши и выберите опцию Изменить направление из контекстного меню. Вы увидите, что теперь путь изменил свое направление.

Редактирование пути

Чтобы добавить дополнительный сегмент к пути

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

  2. Теперь вы снова в режиме рисования. Вы можете добавить столько сегментов, сколько вам необходимо, как прямых, так и дуговых.
  3. Чтобы завершить рисование, добавьте последнюю точку ломаной двойным щелчком мыши.

Чтобы сделать дуговую линию прямой

  1. Щелкните мышью путь в графическом редакторе, чтобы выделить его.
  2. Зажмите клавишу Ctrl на клавиатуре и, не отпуская ее, щелкните мышью точку изгиба дугового сегмента и перетащите ее.

  3. Отпустите клавишу Ctrl и кнопку мыши, когда сегмент стал прямым и принял требуемую форму.

Чтобы сделать прямую линию дуговой

  1. Щелкните путь правой кнопкой мыши и выберите опцию Редактировать направляющие из контекстного меню. Направляющие линии появятся для каждой точки изгиба пути. Щелкните мышью по точке направляющей линии и перетаскивайте ее, не отпуская кнопку мыши.

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

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

Чтобы соединить два пути в один

  1. Когда вы соединяете два пути в их конечных точках, они объединяются в один путь. Например, на рисунке ниже была использована опция Добавить линию для присоединения пути path к пути path1.

  2. Точка соединения, в которой два пути объединяются, выделена голубым цветом. Две фигуры теперь стали одним элементом, путем path. Сегменты, бывшие частью пути path1, унаследовали имя элемента и направление движения у пути path.

  3. Пока вы будете соединять пути только в их крайних точках, они будут сливаться в один путь.

Чтобы соединить два и более путей с помощью узла

  1. Вы можете соединять пути узлами, если нарисуете присоединение сегмента одного пути к любой части пути другого, только не к его крайней точке. Например, на рисунке ниже элемент разметки путь path был присоединен к пути path1 в середине пути. Таким образом можно присоединить множество путей друг к другу.

  2. Точечный узел появится на месте соединения автоматически. Он выделен голубым цветом. Теперь вы создали сеть с несколькими путями в ней. На рисунке вы можете видеть, что точечный узел разделяет путь на части, path и path2, в то время как путь path1 не сливается с другим, а остается отдельным путем.

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

Вы можете отсоединить путь от сети, отделить пути друг от друга, отделить сегмент от пути или разбить один путь на несколько.

Чтобы разъединить пути или сегменты

  1. Щелкните путь в графическом редакторе правой кнопкой мыши и выберите опцию Разделить на две фигуры из контекстного меню.
  2. Когда точки изгиба будут выделены, щелкните мышью по той из них, где нужно разделить путь на сегменты. Теперь каждый из сегментов, ранее соединенных этой точкой, стал отдельным путем, и вы можете редактировать каждый путь отдельно. Даже если сегменты выглядят, будто они еще соединены, она соединены только графически и не являются больше одним путем.

Как мы можем улучшить эту статью?