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

RailSettings

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

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

Параметры

Тип вагона
Тип вагонов. Если известно, что все вагоны будут являться объектами какого-то одного класса вагона, то имеет смысл указать этот класс здесь, чтобы все его поля и методы были напрямую доступны в действиях этого объекта RailSettings.
[Обратите внимание, что в описаниях ниже RC будет означать тип, указанный пользователем в поле Тип вагона. Если пользователь не изменит введенное там по умолчанию значение, то RC будет означать RailCar.]
Далее: RC
Новый вагон
Тип вагона. Если вы используете какой-то свой тип для задания вагонов, то введите здесь имя агента этого типа.
Локальная переменная: int n — номер вагона в поезде, начиная с нуля

Действия

При въезде на станцию
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон будет добавляться на железнодорожный узел.
RC car — вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, по которому вагон въезжает на ж/д узел
При выезде со станции
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон будет покидать железнодорожный узел.
RC car — вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, по которому вагон покидает ж/д узел
Вызывать onAtSwitch только для первого вагона
Если опция выбрана, то код Действия при приближении к стрелке будет выполняться только для первого вагона состава (или для движущегося отдельно вагона), иначе он будет выполняться для каждого вагона, приближающегося к стрелке (такое поведение принято по умолчанию).
Синтаксис: boolean callAtSwitchForFirstCarOnly
Значение по умолчанию: false
При приближении к стрелке
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон приблизится к стрелке. В этом коде все еще можно переключать состояние стрелки.
RC car — вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, по которому вагон приближается к стрелкеv RailwaySwitch sw — стрелка
При въезде на путь
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон заедет на новый путь (и уже зарегистрирован на нем).
RC car — вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, на который заехал вагон
RailwaySwitch sw — стрелка, через которую вагон въезжает на путь
При выезде с пути
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон полностью покинет путь.
RC car — вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, который покинул вагон
RailwaySwitch sw — стрелка, через которую вагон покидает путь
При столкновении вагонов
Здесь вы можете задать код, который будет выполняться каждый раз, когда один вагон столкнется с другим вагоном. Код не вызывается для того вагона, в который врезался другой вагон.
RC car — вагон
boolean frontside — true, если с другим вагоном столкнулась передняя сторона вагона
RC other — другой вагон
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
RailwayTrack track — путь, на котором это произошло
При достижении особой точки
Здесь вы можете задать код, который будет выполняться каждый раз, когда вагон достигнет особой точки, заданной методом callbackAt() для вагона RailCar.
RC car — вагон
RailwayTrack track — путь
RailwayNetwork railYard — сеть ж/д разметки, задающая ж/д узел
double offset — точка на пути
Object info — объект с информацией, который был передан в качестве аргумента метода callbackAt()
При щелчке по вагону
Здесь вы можете задать код, который будет выполняться каждый раз, когда пользователь будет щелкать мышью по вагону.
RC car — вагон

Функции

Статистика
Функция Описание
int getNCars() Возвращает количество вагонов, находящихся на этом железнодорожном узле.
List<Agent> getCars() Возвращает вагоны, находящиеся на этом железнодорожном узле.
Обращение к вагонам и стрелкам
Функция Описание
Agent getCar(int index) Возвращает вагон, находящийся на этом железнодорожном узле и имеющий заданный индекс index. Если такого вагона нет, то возвращает null.
Switch[] getRouteSwitches(Track[] route) Возвращает все стрелки на указанном маршруте.
Маршрут
Функция Описание
RailwayTrack[] getShortestPath(RailwayTrack sourceTrack, RailwayTrack targetTrack, boolean forwardOnTrack,double targetOffset, RailwayTrack[] avoidTracks) Возвращает кратчайший маршрут от sourceTrack до targetTrack (или null, если путь не найден).

sourceTrack — начальный путь
targetTrack — путь назначения
forwardOnTrack — если true, то направление поезда на пути — вперед
targetOffset — смещение по пути направления
avoidTracks — список путей, которых не должно быть в маршруте
RailwayTrack[] getShortestUnblockedPath(RailwayTrack sourceTrack, RailwayTrack targetTrack,boolean forwardOnTrack, double targetOffset, RailwayTrack[] avoidTracks) Возвращает кратчайший маршрут от sourceTrack до targetTrack (или null, если путь не найден) с учетом заблокированных путей.

sourceTrack — начальный путь
targetTrack — путь назначения
forwardOnTrack — если true, то направление поезда на пути — вперед
targetOffset — смещение по пути направления
avoidTracks — список путей, которых не должно быть в маршруте
RailwayTrack[] getShortestAvailablePath( Agent train,RailwayTrack sourceTrack, RailwayTrack targetTrack, boolean forwardOnTrack,double targetOffset, RailwayTrack[] avoidTracks) Возвращает кратчайший маршрут от sourceTrack до targetTrack (или null, если путь не найден) с учетом заблокированных и зарезервированных путей.

train — поезд, для которого необходимо найти кратчайший маршрут
sourceTrack — начальный путь
targetTrack — путь направления
forwardOnTrack — если true, то направление поезда на пути — вперед
targetOffset — смещение по пути направления
avoidTracks — список путей, которых не должно быть в маршруте
Добавление вагонов и поездов
Функция Описание
void addCar(RC car, RailwayTrack track, double frontoffset, boolean orientation)
Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью блока TrainSource
Добавляет (ранее созданный) вагон в ж/д модель и помещает его на заданный путь (в заданную точку, с заданным направлением). Обе стороны вагона должны находиться на одном и том же пути. Если вагон пересекает другой вагон, находящийся на пути, то выдается сообщение об ошибке.

car — добавляемый вагон
track — путь, на который помещается вагон
frontoffset — смещение переднего торца вагона от начала пути
orientation — если true, то направление вагона (от конца к началу) будет соответствовать направлению пути (от начала к концу)
void addTrain(int n, RailwayTrack track, double frontoffset, boolean orientation)
Устарела, начиная с версии AnyLogic 6.5.1. Создавайте поезда и вагоны с помощью блока TrainSource
Создает поезд с заданным количеством вагонов и размещает его на заданной точке заданного пути с заданным направлением вагонов. Для создания вагонов используется настраиваемая функция newCar(). Если поезд пересекается с другими вагонами, которые уже размещены на заданном пути, то выдается сообщение об ошибке.

n — количество вагонов в поезде
track — путь, на который помещается поезд
frontoffset — смещение переднего торца первого вагона от начала пути
orientation — если true, то направление поезда (от хвоста к голове) будет соответствовать направлению пути (от начала к концу)
Как мы можем улучшить эту статью?