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

TransporterControl

Настраивает правила навигации в сети и алгоритм маршрута для транспортеров, двигающихся по заданным путям.

Если вы используете заданные по умолчанию правила навигации (в свойстве Навигация выбрана опция Автоматическая), то столкновения транспортеров в сетевых узлах могут устраняться автоматически (это задается опцией Устранять коллизии). Подъехав к узлу, транспортеры остановятся. По истечении заданного отрезка времени, задаваемого в поле Таймаут определения коллизий, они продолжат движение (каждый по своему маршруту), наезжая друг на друга. Таким способом могут устраняться столкновения, которые вызваны движением транспортеров друг навстречу другу. Едущие друг за другом транспортеры столкнуться не могут - едущий следом транспортер в случае необходимости просто остановится и будет ждать.

С помощью опции Избегать коллизий вы можете оптимизировать движение транспортеров: если по пути (через узел) должны будут одновременно проехать несколько транспортеров, то данный путь/узел будет доступен только для одного из них. Остальные уступят дорогу, чтобы избежать столкновения.

Если задан индивидуальный алгоритм навигации, то каждый узел и/или путь будет проверяться на выполнение соответствующих условий. При выполнении этих условий транспортер сможет продолжать движение по узлу/пути.

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

Демо-модель: TransporterControl Overtaking Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Навигация
Задает правила движения транспортеров в сети. Если выбрано значение Автоматическая, то исполняющий модуль AnyLogic будет по умолчанию устранять столкновения транспортеров и оптимизировать их движение. Если выбрано значение Другая, то вы можете задать собственные условия, согласно которым транспортеры будут передвигаться по путям и узлам сети.
Синтаксис: boolean automaticNavigation
Избегать коллизий
[Параметр виден, если Навигация: Автоматическая]
Если опция выбрана, то исполняющий модуль AnyLogic будет оптимизировать движение транспортеров таким образом, чтобы максимально снизить вероятность столкновений, однако это не гарантирует предотвращение всех столкновений. Алгоритм анализирует маршруты транспортеров. В случае, когда один и тот же путь необходим нескольким транспортерам одновременно, он будет доступен только одному из них, а остальные транспортеры будут ждать, пока этот путь не освободится.
Синтаксис: boolean avoidCollisions
Устранять коллизии
Если опция включена, столкновения транспортеров будут автоматически устраняться исполняющим модулем AnyLogic. Если по истечении времени, выделенного по умолчанию на устранение столкновения, это столкновение не будет устранено, то транспортеры продолжат движение, наезжая друг на друга в соответствующем точечном узле. Если опция выключена, то столкновение транспортеров приведет к остановке модели, при этом появится сообщение об ошибке.
Синтаксис: boolean resolveCollisions
Таймаут определения коллизий
[Параметр виден, если выбрана опция Устранять коллизии]
Время, в течение которого транспортеры не двигаются, встретившись на перекрестке, моделируя тем самым устранение столкновения.
Тип значения: double
Локальная переменная: Agent unit — агент
Может войти в узел
[Параметр виден, если Навигация: Другая]
Здесь вы можете задать выражение с условиями, которые будут проверяться для каждого узла в маршруте. Если выражение возвращает true, транспортер может попасть в этот узел.
Тип значения: boolean
Локальные переменные:
T unit — транспортер
Agent agent — агент
Node node — узел
Может войти на путь
[Параметр виден, если Навигация: Другая]
Здесь вы можете задать выражение с условиями, которые будут проверяться для каждого пути в маршруте. Если выражение возвращает true, транспортер может попасть на этот путь.
Тип значения: boolean
Локальные переменные:
T unit — транспортер
Agent agent — агент
Path path — путь
Найти путь
Здесь вы можете задать алгоритм, согласно которому будет прокладываться индивидуальный маршрут.
Тип значения: RouteData
Локальные переменные:
T unit — транспортер
Agent agent — агент
ILocation source — исходная точка
ILocation target — цель
Исключить пути
Список путей, которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров.
Тип значения: Path[]
Локальные переменные:
T unit — транспортер
Agent agent — агент
Исключить узлы
Список узлов, которые вы хотите исключить из автоматически рассчитываемого маршрута транспортеров.
Тип значения: Node[]
Локальные переменные:
T unit — транспортер
Agent agent — агент
Включить пути
Список путей, которые вы хотите включить в автоматически рассчитываемый маршрут транспортеров.
Тип значения: Node[]
Локальные переменные:
T unit — транспортер
Agent agent — агент

Действия

При входе на путь
Здесь вы можете задать Java код, который будет выполняться, когда транспортер попадает на путь.
Локальные переменные:
T unit — транспортер, который начал движение по этому пути
Path path — путь, по которому движется транспортер
При выходе с пути
Здесь вы можете задать Java код, который будет выполняться, когда транспортер покидает путь.
Локальные переменные:
T unit — транспортер, покидающий путь
Path path — путь, по которому движется транспортер
При входе в узел
Здесь вы можете задать Java код, который будет выполняться, когда транспортер входит в узел, который является частью сети.
Локальные переменные:
T unit — транспортер, поступающий в узел
Node node — узел, в который входит транспортер
При выходе из узла
Здесь вы можете задать Java код, который будет выполняться, когда транспортер покидает узел, который является частью сети.
Локальные переменные:
T unit — транспортер, покидающий в узел
Node node — узел, в который входит транспортер

Функции

Функция Описание
RouteData findShortestPath(ILocation source, ILocation target, Node[] nodesToAvoid, Path[] pathsToAvoid) Рассчитывает кратчайший маршрут из одной точки в другую, учитывая узлы и пути, которые должны быть исключены.
RouteData findShortestPath(ILocation source, ILocation target, Node[] nodesToAvoid, Path[] pathsToAvoid, Path[] pathsToInclude) Рассчитывает кратчайший маршрут из одной точки в другую, учитывая узлы и пути, которые должны быть исключены, а также пути, которые должны быть включены.
RouteData findShortestPath(T unit, ILocation source, ILocation target, Node[] nodesToAvoid, Path[] pathsToAvoid, Path[] pathsToInclude) Рассчитывает кратчайший маршрут для указанного транспортера из одной точки в другую, учитывая узлы и пути, которые должны быть исключены, а также пути, которые должны быть включены.
int getCollisions() Возвращает общее количество столкновений, произошедших в модели.
void disableCollisionAvoidanceInNodes(Collection<? extends Node> nodes) С помощью вызова этой функции вы можете отключить обработку столкновений в коллекции узлов, которую вы передаете в качестве аргумента функции. Транспортеры, которые будут двигаться по направлению к этим узлам, всегда смогут в них въехать, а, оказавшись в узле, перестанут воспринимать друг друга как препятствие.
Как мы можем улучшить эту статью?