Задание операционной логики ж/д узла

Наряду с первоначальным низкоуровневым интерфейсом, начиная с версии AnyLogic 6.5.1 Железнодорожная библиотека поддерживает очень простой высокоуровневый способ задания операций железнодорожного узла с помощью диаграмм процесса, являющийся куда более гибким и мощным по сравнению с первоначальным. 

Сущность (заявка), перемещающаяся по объектам диаграммы железнодорожного процесса - поезд - последовательность сцепленных вместе вагонов

Библиотека содержит пять новых объектов диаграмм процесса, позволяющие моделировать все основные операции, производимые с поездами:

Объект Описание

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

TrainDispose
Удаляет поезда из модели: в том числе и те, которые не выехали за пределы путей.

TrainMoveTo
Управляет движением поездов. Вычисляет маршруты, переключает стрелки по ходу движения. Поддерживает ускорение и торможение.
 
TrainCouple
Сцепляет два "касающихся друг друга" состава в один. 

TrainDecouple
Отцепляет часть вагонов от поступающего поезда и создает новый поезд с отцепленными вагонами.

TrainEnter

Помещает поступающую в объект заявку-поезд на заданный путь указанной железнодорожной сети и вставляет заявку типа Train в диаграмму процесса поезда. Обычно используется в связке с объектом TrainExit для моделирования каких-то процессов (например, части движения поезда) на более высоком уровне абстракции, а не на детальном, физическом уровне. 


TrainExit

Извлекает поступающий в объект поезд из железнодорожной сети и передает заявку-поезд далее в обычную диаграмму процесса, которая может быть составлена из объектов Основной библиотеки и моделировать задержки (Delay), очереди (Queue), блоки принятия решений (SelectOutput) и т.д. Обычно используется в связке с объектом TrainEnter для моделирования каких-то процессов (например, части движения поезда) на более высоком уровне абстракции, а не на детальном, физическом уровне. 

С помощью этих объектов Вы можете выполнять любые операции с поездами и вагонами без необходимости писать программный код. Более того, диаграммы процессов железнодорожонго узла могут включать в себя объекты Основной библиотеки, такие, как Delay, SelectOutput, Hold, Seize, Release, Queue, и т.д. Это означает, что теперь операционная логика железнодорожных узлов может быть полностью задана графически простым перетаскиванием объектов (в стиле drag-and-drop).

Логика совместного использования ресурсов железнодорожного узла, таких как пути и стрелки, теперь может быть задана с помощью ресурсов и соответствующих объектов работы с ресурсами Основной библиотеки. Например, если часть узла (допустим, путь) должна быть заблокирована для того, чтобы дать проехать поезду, то Вы можете связать с этой частью узла ресурс. Тогда появившийся поезд должен будет захватить этот ресурс в свое пользование, а остальные поезда будут ждать в очереди объекта Seize. Для этих же целей Вы можете использовать объект Hold и пару объектов RestrictedAreaStart/End.

Объект SelectOutput может использоваться в диаграммах железнодорожных процессов для выбора между различными ветвями процесса, а объект Delay может естественным образом моделировать длительности остановок или длительносит операций, таких, как сцепление/расцепление или погрузка/разгрузка.

Простая сортировочная станция и диаграмма, задающая процесс сортировки

Диаграммы железнодорожных процессов, создаваемые из объектов Железнодорожной библиотеки AnyLogic, обычно получаются достаточно компактными. Например, вся логика сортировочной станции, на которой производится разборка прибывающих поездов, составленных из вагонов различного типа, и сборка составов, составленных из однотипных вагонов, может быть задана диаграммой процесса, собранной из менее чем 20 объектов, см. рисунок выше.