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

Поезд (Train)

Поезд (или состав) представляет собой последовательность нескольких сцепленных друг с другом железнодорожных вагонов, которые могут двигаться по железнодорожному узлу и управляться диаграммами процессов, собранными из объектов Железнодорожной библиотеки и Библиотеки моделирования процессов. Основными агентами, с которыми вы будете иметь дело при создании железнодорожных моделей, будут не вагоны (агента типа RailCar), а поезда (агенты типа Train). Если вагон является частью Train, то он полностью управляется этим поездом, и не будет управляться большинством низкоуровневых команд, таких, как setSpeed() или couple().

Поезда создаются объектами TrainSource, а уничтожаться из модели должны объектами TrainDispose. Поезд может быть разделен на два поезда объектом TrainDecouple, а два поезда, в свою очередь, могут быть сцеплены в один поезд, с помощью объекта TrainCouple. Управление перемещением поездов по железнодорожному узлу производится объектами TrainMoveTo. Поезда могут проходить через любые объекты Библиотеки моделирования процессов, такие, как Delay, Seize, Release и т.д.

Вагоны в составе упорядочены, и у состава всегда есть первый и последний вагоны (если в составе всего один вагон, то он является одновременно и первым и последним). На момент создания поезда все вагоны направлены в соответствии с тем, как направлен поезд, но позднее направление вагонов может измениться в результате сцепления/расцепления. Длина поезда (длина части пути, занимаемой этим поездом) равняется сумме длин всех его вагонов.

В Железнодорожной библиотеке нет понятия локомотива или каких-то других типов вагонов: все железнодорожные вагоны рассматриваются как одинаковые. Любой поезд может двигаться с любой скоростью, сцепляться и расцепляться с любой своей стороны.

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

Анимация поезда

Анимация поезда фактически является анимацией вагонов поезда, у самого состава нет какой-то особенной, присущей ему, графики.

Поезд в 3D анимации

Чтобы создать нестандартный тип поезда

  1. Перетащите элемент Тип поезда из палитры Железнодорожной Библиотеки в графический редактор.

  2. Появится диалоговое окно Создание агентов.
  3. На первой странице Мастера, укажите Имя нового типа поездов. Щелкните по кнопке Далее.

  4. Укажите параметры для этого типа поезда. Щелкните мышью кнопку < добавить... > в списке параметров, чтобы добавить новый параметр. Выделив этот параметр в списке, вы можете настроить его имя, тип и значение по умолчанию в настройках на панели справа. Чтобы удалить параметр, щелкните по кнопке .

  5. Щелкните по кнопке Готово.

Откроется графическая диаграмма только что созданного типа поезда с заданными вами в Мастере создания нового типа агента параметрами.

Вы можете использовать этот тип поезда в блоках диаграммы, например, в параметрах TrainSource:

Функции

Вагоны
Функция Описание
int size() Возвращает количество вагонов в поезде.
double getLength() Возвращает длину поезда (сумму длин всех вагонов), в метрах.
double getLength(LengthUnits units) Возвращает длину поезда (сумму длин всех вагонов) в указанных единицах длины.

units — константа, с помощью которой задаются единицы длины
boolean isEmpty() Проверяет, не пуст ли поезд, т.e. содержит ли он вагоны. Возвращает true, если он пуст; false, если нет.
Agent getFirst() Возвращает первый вагон поезда (если поезд пустой, то возвращает null).
Agent getLast() Возвращает последний вагон поезда (если поезд пустой, то возвращает null).
Agent getHeadCar() Возвращает вагон, находящийся в голове движущегося поезда (это может быть как первый, так и последний вагон состава), или null, если поезд не движется.
Agent getTailCar() Возвращает вагон, находящийся в хвосте движущегося поезда (это может быть как первый, так и последний вагон состава), или null, если поезд не движется.
Agent getCar(int i) Возвращает вагон с заданным индексом i. Индекс первого вагона равен 0, последнего: size() - 1.

i — номер вагона
Скорость
Функция Описание
double getSpeed() Возвращает скорость поезда, в м/с. Если поезд пустой, то возвращает 0.
double getSpeed(SpeedUnits units) Возвращает скорость поезда в указанных единицах скорости. Если у поезда нет вагонов, возвращает 0.

units — константа, с помощью которой задаются единицы скорости
double getCruiseSpeed() Возвращает крейсерскую скорость поезда, в м/с.
double getCruiseSpeed(SpeedUnits units) Возвращает крейсерскую скорость поезда в указанных единицах скорости.

units — константа, с помощью которой задаются единицы скорости
void setSpeed(double v) Задает новую скорость поезда, в м/с. Если поезд движется, то новая скорость применяется мгновенно. Если поезд не движется, то значение скорости просто запоминается, но движение при этом не начинается. Во время движения поезда нельзя задать скорость равной нулю. Отменяет все ускорения/торможения, за исключением конечного торможения при подъезде поезда к точке назначения и торможения при вызове функции pauseTrain().

v — новая скорость поезда, в м/с.
void setSpeed(double v, SpeedUnits units) Задает новую скорость поезда в указанных единицах скорости. Если поезд движется, то новая скорость применяется мгновенно. Если поезд не движется, то значение скорости просто запоминается, но движение при этом не начинается. Во время движения поезда нельзя задать скорость равной нулю. Отменяет все ускорения/торможения, за исключением конечного торможения при подъезде поезда к точке назначения и торможения при вызове функции pauseTrain().

v — новая скорость поезда в указанных единицах скорости
units — константа, с помощью которой задаются единицы скорости
void setCruiseSpeed(double speed) Задает крейсерскую скорость поезда в м/с (значение должно быть больше 0).

speed — новая крейсерская скорость поезда
void setCruiseSpeed(double speed, SpeedUnits units) Задает крейсерскую скорость поезда в указанных единицах скорости (значение должно быть больше 0).

speed — новая крейсерская скорость поезда в указанных единицах скорости
units — константа, с помощью которой задаются единицы скорости
Ускорение и замедление
Функция Описание
double getAcceleration() Возвращает ускорение поезда, в м/с2.
double getAcceleration(AccelerationUnits units) Возвращает ускорение поезда в заданных единицах ускорения.

units — константа, с помощью которой задаются единицы ускорения
double getDeceleration() Возвращает торможение поезда, в м/с2.
double getDeceleration(AccelerationUnits units) Возвращает торможение поезда в указанных единицах ускорения.

units — константа, с помощью которой задаются единицы ускорения
void setAcceleration(double acceleration) Задает ускорение поезда (значение должно быть больше 0).

acceleration — новое ускорение поезда, в м/с2.
void setAcceleration(double acceleration, AccelerationUnits units) Задает ускорение поезда в указанных единицах ускорения (значение должно быть больше 0).

acceleration — новое ускорение поезда в указанных единицах ускорения
units — константа, с помощью которой задаются единицы ускорения
void setDeceleration(double deceleration) Задает торможение поезда (значение должно быть больше 0).

deceleration — новое торможение поезда, в м/с2.
void setDeceleration(double deceleration, AccelerationUnits units) Задает торможение поезда в указанных единицах ускорения (значение должно быть больше 0).

deceleration — новое торможение поезда в указанных единицах ускорения
units — константа, с помощью которой задаются единицы ускорения
void accelerateTo(double speed) Ускоряет или тормозит поезд до достижения заданной скорости. Функция может быть вызвана только во время движения поезда. Не изменяет крейсерскую скорость. Использует текущие настройки для ускорения/торможения. С помощью этого метода нельзя осуществлять торможение до нуля, поскольку управление остановкой поезда осуществляется объектом TrainMoveTo (используйте опцию торможение при окончании движения). Отменяет все ускорения/торможения, за исключением конечного торможения при подъезде поезда к точке назначения.

speed — новая желаемая скорость, в м/с.
void accelerateTo(double speed, SpeedUnits units) Функция схожая с функцией accelerateTo(double speed). Скорость задается в указанных единицах скорости.

speed — новая скорость, до которой должен ускориться/затормозить поезд
units — константа, с помощью которой задаются единицы скорости
Управление движением
Функция Описание
boolean isMoving() Проверяет, движется ли поезд в текущий момент времени. Пустой поезд понимается как не двигающийся. Возвращает true, если поезд движется; false, если нет.
void pauseTrain() Замедляет движение поезда в соответствии с настройками замедления до полной остановки поезда. Поезд остается в блоке TrainMoveTo.
void resumeTrain() Ускоряет движение остановившегося поезда в соответствии с настройками ускорения, пока поезд не достигнет крейсерской скорости.
boolean getDirection() Проверяет, движется ли в голове поезда первый вагон этого состава. Возвращает true, если первый вагон движется в голове; false — если нет
boolean getOrientation(boolean front) Проверяет, соответствует ли направление поезда направлению пути, на котором находится заданная граница поезда (см. параметр front), т.e. соответствует ли направление "от конца к началу поезда" направлению "от начала к концу пути". Возвращает true, если направления совпадают, false — если нет.

front — если true, то проверяется несцепленный торец первого вагона, если false — то последнего
boolean isForwardOnTrack(boolean front) Проверяет, движется ли поезд по направлению к концу того пути, на котором находится заданная граница (см. параметр front) этого поезда.

front — если true, то проверяется несцепленный торец первого вагона, если false — то последнего
Route getRoute() Возвращает маршрут, по которому в данный момент движется поезд (если такой есть). Маршрут существует только до тех пор, пока поезд управляется блоком TrainMoveTo.
List<Railwaytrack> getAllOccupiedTracks() Возвращает все занятые ж/д пути.
RailwayTrack getTrack(boolean front) Возвращает путь (ломаную), где в текущий момент находится заданная граница поезда.

front — если true, то под границей понимается несцепленный торец первого вагона, если false — то последнего
RailwayTrack getTargetTrack() Возвращает путь назначения движущегося поезда (если цель не задана, то возвращает null).
double getOffset(boolean front) Возвращает смещение заданной границы поезда (см. параметр front) относительно начальной точки пути, в метрах. 0 соответствует началу пути.

front — если true, то проверяется несцепленный торец первого вагона, если false — то последнего
double getOffset(boolean front, LengthUnits units) Возвращает расстояние от начальной точки пути до заданной границы поезда (см. параметр front) в указанных единицах длины. 0 соответствует началу пути.

front — если true, то проверяется несцепленный торец первого вагона, если false — то последнего
units — константа, с помощью которой задаются единицы длины
double getTargetOffset() Возвращает смещение от начала пути назначения до цели движения на нем (при условии, что цель задана) для движущегося поезда, в метрах.
double getTargetOffset(LengthUnits units) Возвращает расстояние от начальной точки пути назначения до точки назначения движущегося поезда в указанных единицах длины. Подразумевается, что точка назначения уже задана.

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

units — константа, с помощью которой задаются единицы длины
double distanceToTrain(Agent train, boolean targetSide) Возвращает расстояние (в метрах) в ж/д сети от головы поезда до заданной границы другого поезда.

train — другой поезд targetSide — заданная граница другого поезда. Если true, то под границей подразумевается несцепленный торец первого вагона, если false — последнего
double distanceToTrain(Agent train, boolean targetSide, LengthUnits units) Возвращает расстояние (в заданных единицах длины) в ж/д сети от головы поезда до заданной границы другого поезда.

train — другой поезд
targetSide — заданная граница другого поезда. Если true, то под границей подразумевается несцепленный торец первого вагона, если false — последнего
units — константа, с помощью которой задаются единицы длины
double getDistanceDriven() Возвращает расстояние (в метрах), которое проехал поезд с момента своего создания (или последнего вызова метода resetDistanceDriven(), если такой был).
void resetDistanceDriven() Устанавливает расстояние, пройденное поездом, равным нулю.
Разное
Функция Описание
RailSettings getSettings() Возвращает настройки железнодорожной сети.
RailwayNetwork getRailYard() Возвращает железнодорожный узел, на котором в данный момент находится поезд. Если поезд пустой, то возвращает null.
void highlight(boolean yes) Выделяет или снимает выделение с фигуры поезда на анимации.

yes — если true, то поезд будет выделен, если false, то выделение будет снято
Как мы можем улучшить эту статью?