Задайте логику процесса с помощью блоков Железнодорожной библиотеки
- Добавьте следующие блоки на диаграмму процесса: TrainSource, TrainMoveTo, TrainDecouple, TrainCouple, TrainDispose. С помощью этих блоков мы зададим логику, согласно которой будет передвигаться наш поезд.
- Начните диаграмму с блока TrainSource, который создает поезда, затем добавьте блок TrainMoveTo, расположив его рядом с первым блоком таким образом, чтобы они могли автоматически соединиться. Добавьте оставшиеся блоки на диаграмму процесса, как показано на рисунке ниже.
-
В свойствах блоков TrainSource и trainMoveTo укажите следующее:
Сначала мы укажем, чтобы поезда появлялись у ж/д точки stopLineEntry каждые 15 минут.TrainSource:
Время между прибытиями: 15 минут
Кол-во вагонов (включая локомотив): 11
Точка ж/д пути: stopLineEntryПосле создания, каждый поезд будет направляться к ж/д точке stopLineArrival, у которой он будет замедляться, после чего окончательно остановится.
TrainMoveTo:
Маршрут: Вычисляется автоматически от текущего пути до пути назначения
Цель движения: Заданная точка пути
Точка ж/д пути: stopLineArrival
При окончании движения: Затормозить и остановиться - Мы также добавили блок TrainDecouple, задача которого отцеплять заданное количество вагонов от поступающего поезда. В свойствах блока можно увидеть, что по умолчанию он отцепляет один вагон от поезда, а именно первый (в нашем случае - это локомотив). Локомотив будет покидать блок через нижний порт outDecoupled (мы добавим это соединение на следующем шаге).
- Блок TrainCouple нужен для сцепления локомотива и вагонов в один состав.
Ниже приведены описания блоков Железнодорожной библиотеки, которые мы используем.
Блок Железнодорожной Библиотеки | Описание |
---|---|
Train Source | Создает поезда, выполняет начальную настройку и помещает их в железнодорожную сеть. Начинает любую ж/д диаграмму процесса. Поддерживает несколько типов расписаний прибытия. |
Train Dispose | Удаляет поезда из модели. |
Train Move To | Моделирует движение поездов. Может рассчитывать маршрут и положение стрелок по ходу движения поезда по маршруту. Поддерживает функции ускорения и торможения. |
Train Couple | Сцепляет два поезда, которые "касаются" друг друга, в один. |
Train Decouple | Расцепляет вагоны поступающего в блок поезда и создает из них новый поезд. |
Train Enter | Помещает поступающего в блок агента-поезд на заданный путь ж/д сети. |
Train Exit | Извлекает поступающий в объект поезд из ж/д сети и передает агента-поезд далее в обычную диаграмму процесса. |
RailSettings | Задает специфические настройки для железнодорожной сети. |
Продолжим рисование диаграммы процесса
- Добавьте три блока TrainMoveTo и соедините их, как показано на рисунке, следуя описанным ниже шагам. С помощью этих блоков мы зададим поведение поезда на железнодорожном узле, которое будет включать в себя: отцепление, ход назад, сцепление с вагонами с последующим выталкиванием их на горку.
- Начните с присоединения блока TrainMoveTo к порту outDecoupled (который находится внизу) блока TrainDecouple, так как мы будем задавать логику для отсоединенного локомотива.
-
Добавьте еще один блок TrainMoveTo на диаграмму процесса (trainMoveTo1). Задайте параметры нового блока, согласно которым локомотив направится к stopLineHump и остановится там.
Маршрут: Вычисляется автоматически от текущего пути до пути назначения
Цель движения: Заданная точка пути
Точка ж/д пути: stopLineHump
При окончании движения: Затормозить и остановиться - Создайте еще два блока TrainMoveTo (trainMoveTo2, trainMoveTo3) путем Ctrl + перетаскивания (macOS: Cmd + перетаскивания) блока, который вы только что редактировали.
-
Измените свойства блока trainMoveTo2. В данный момент локомотив отцеплен и нам нужно, чтобы он затолкал вагоны на горку, т.е. ему нужно вернуться к stopLineEntry и произвести сцепку с концом поезда. Так как мы не можем его развернуть на рельсах, локомотив поедет назад мимо пути trackArrival, на котором стоят вагоны:
Направление движения: Назад
Маршрут не должен содержать: trackArrival
Точка ж/д пути: stopLineEntry - Обратите внимание на количество соединений, ведущих от блока trainMoveTo3 к блоку trainCouple. Нижний порт блока TrainMoveTo, в отличие от порта out, который находится справа, используется поездами, которые сталкиваются с другими поездами. В нашем случае, сталкивание является сцеплением локомотива, прибывающего к точке ж/д пути stopLineArrival, с вагонами, которые мы предварительно отцепили от этого локомотива.
-
Теперь внесите изменения в свойства блока trainMoveTo3, чтобы этот блок направлял поезд из его текущего местоположения к точке stopLineArrival:
Точка ж/д пути: stopLineArrival
Теперь, когда мы смоделировали передвижение локомотив к концу состава, нужно добавить еще один блок TrainMoveTo путем Ctrl + перетаскивания (macOS: Cmd + перетаскивания) блока trainMoveTo1. Он будет моделировать процесс толкания вагонов локомотивом к горке, представленной в нашей модели точкой ж/д пути stopLineHump.
-
Измените свойства блока trainMoveTo4:
Точка ж/д пути: stopLineHump
Крейсерская скорость: 5 м/с -
Добавьте блок Delay из Библиотеки моделирования процессов, чтобы смоделировать задержку. Измените свойства блока, задав время этой задержки:
Время задержки: 15 секунд
Мы завершили Шаг 2. Можете запустить модель и посмотреть, как по ж/д путям передвигаются товарные составы.
Если вы увидите ошибку "The car being created must fully be on one track", значит на пути недостаточно места для помещения поезда перед точкой ж/д пути stopLineEntry. В этом случае вам нужно будет увеличить длину пути trackEntry и отодвинуть дальше элемент stopLineEntry от начальной точки ж/д пути.
Локомотив подъезжает к составу, состоящему из вагонов, чтобы сцепиться с ним.
Мы также видим, как локомотив толкает вагоны на горку, после чего останавливается, вагоны отцепляются и сортируются.
Демо-модель: Hump Yard - Phase 2 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.-
Как мы можем улучшить эту статью?
-