В результате изучения этого пособия мы создадим очень простую модель, в которой будет один прямой железнодорожный путь и не будет стрелок. Пассажирские поезда будут останавливатьсяна одну минуту посередине этого пути, после чего будут продолжать свое движение в прежнем направлении.
Создайте поезд и "запустите" его по пути
Обратите внимание на параметры объекта trainSource. Мы сконфигурировали объект trainSource так, что он создает поезд на ж/д узле, помещает его на путь track так, что передний торец его первого вагона расположен в 200 метрах от начала пути. Поезд будет направлен вперед относительно направления пути (см. параметр Направление на пути), поэтому оставшаяся часть поезда расположится между началом пути и точкой 200. В момент своего создания поезд должен полностью находиться на пути, поэтому Вам нужно будет проверить, достаточно ли свободного места на пути для его размещения. По умолчанию у создаваемого объектом TrainSource поезда 11 вагонов, а длина каждого вагона по умолчанию равна 14 метрам. Поскольку 11*14 = 154 < 200, то места для размещения нового поезда на пути должно хватить.


Простейшая диаграмма железнодорожного процесса: поезд появляется и движется вдоль пути
По умолчанию объект TrainSource создает поезда каждые 10 минут, поэтому в моменты модельного времени 10, 20, 30… (как Вы помните, единицами модельного времени являются минуты), объект trainSource будет создавать поезд в одном и том же месте, и нам нужно убедиться, что ранее добавленный поезд уже освободит требуемую часть пути к моменту создания следующего поезда.
Крейсерская скорость, заданная Вами в объекте trainSource (10 метров в секунду, что соответствует 36 км/ч) будет принятой по умолчанию скоростью движения нашего поезда.
У поезда есть текущая скорость (скорость, с которой он движется в текущий момент времени). При создании поезда объектом TrainSourceего текущая скорость задается равной его крейсерской скорости, то есть полагается, что поезд уже двигался с этой крейсерской скоростью. Это делается для того, чтобы сделать возможным немедленное продолжение движения с той же скоростью. В любой момент времени Вы можете изменить скорость путем вызова функции setVelocity() этого поезда.
Теперь взгляните на параметры объекта trainMoveTo. Вы увидите, что в параметре При начале движения выбрана опция Продолжать движение с текущей скоростью, в параметре Направление движения выбрано Вперед, что означает, что поезд появится в модели двигающимся со скоростью 36 км/ч. В объекте trainMoveTo не заданы ни цель движения, ни опции маршрутизации поезда, поэтому поезд будет естественным образом покидать путь track через его правый конец, и заявка-поезд будет покидать объект trainMoveTo и уничтожаться объектом TrainDispose.
Теперь давайте промоделируем, как поезд ненадолго останавливается по ходу своего движения.
Добавьте остановку поезда
В первом объекте TrainMoveTo, который теперь называется toStop, мы указали цель движения, заданную графически с помощью красной линии. (Обратите внимание, что линия не является частью группы фигур ж/д узла.) Достигнув красной линии, заявка-поезд покидает объект toStop и поступает в объект trainStop типа Delay, моделирующий задержку. Пока заявка-поезд находится в объекте trainStop, поезд не движется. Затем, по истечении одноминутной задержки, заявка-поезд покидает объект trainStop и поступает во второй объект TrainMoveTo (toExit), который перемещает ее дальше.
В этой диаграмме
процесса мы используем объекты Железнодорожной библиотеки совместно с
объектами Основной библиотеки. Это возможно в силу того, что создаваемый объектом TrainSource объект Train является подклассом базового класса заявки Entity. Поэтому поезд может интерпретироваться как заявка и управляться блоками Основной библиотеки.

Полная диаграмма процесса модели. 2D анимация по умолчанию.
Если Вы посмотрите на параметры объекта toExit, то увидите, что в параметре При начале движения выбрана опция Продолжать движение с текущей скоростью. Вы можете резонно спросить - почему же поезд начал движение, если его скорость во время остановки была равна нулю? Ответ таков: мы не просили поезд тормозить и останавливаться во время первого перемещения. Поэтому поезд покинул объект toStop со скоростью 10 м/с, которая "осталась неизменной" во время остановки, хотя физически поезд не двигался. Очевидно, что это неестественное поведение: поезд не может мгновенно останавливаться и мгновенно набирать необходимую скорость. Но на определенном уровне абстракции, не требующем излишней точности на физическом уровне, такое упрощение может быть допустимо. Теперь давайте добавим торможение поезда перед остановкой и ускорение при возобновлении движения.
Добавьте ускорение / торможение
Закончим создание нашего примера добавлением трехмерной анимации моделируемого процесса.
Добавьте 3D анимацию
По умолчанию вагонам приписаны достаточно схематичные фигуры 3D анимации. Но Вы всегда можете заменить их, загрузив другое трехмерное изображение вагона с помощью элемента 3D объект или, что еще проще, просто использовав в качестве фигуры анимации вагона один из готовых к использованию трехмерных объектов, расположенных в палитре AnyLogic 3D Объекты.
Используйте готовые 3D объекты в качестве фигур анимации вагонов
Хотя в нашем поезде всего 11 вагонов, мы можем использовать только две фигуры в списке: последняя фигура будет использоватсья в качестве анимации для всех оставшихся вагонов. В нашем случае такая возможность представляется крайне удобной: все вагоны, за исключением первого - пассажирские, и могут отображаться одной и той же фигурой.
Это происходит потому, что трехмерные изображения вагонов имеют различную длину (как и в реальной жизни), а объект TrainSource использует для всех вагонов одну, заданную по умолчанию для объекта RailCar, длину, равную 14 метрам. Нам нужно задать различные длины для наших вагонов. Это может быть сделано в параметре Длины вагонов, м. объекта TrainSource или в коде его параметра Инициализация вагона.
В AnyLogic трехмерные изображения локомотива и всех типов грузовых вагонов в палитре 3D Объекты имеют длину 14 метров, а пассажирский вагон - 27 метров.
Нарисуйте платформу в месте остановки поезда
