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

Шаг 2. Задаем логику

Задайте логику процесса с помощью блоков Железнодорожной библиотеки

  1. Добавьте следующие блоки на диаграмму процесса: TrainSource, TrainMoveTo, TrainDecouple, TrainCouple, TrainDispose. С помощью этих блоков мы зададим логику, согласно которой будет передвигаться наш поезд.
  2. Начните диаграмму с блока TrainSource, который создает поезда, затем добавьте блок TrainMoveTo, расположив его рядом с первым блоком таким образом, чтобы они могли автоматически соединиться. Добавьте оставшиеся блоки на диаграмму процесса, как показано на рисунке ниже.

  3. В свойствах блоков TrainSource и trainMoveTo укажите следующее:
    Сначала мы укажем, чтобы поезда появлялись у ж/д точки stopLineEntry каждые 15 минут.

    TrainSource:

    Время между прибытиями: 15 минут
    Кол-во вагонов (включая локомотив): 11
    Точка ж/д пути: stopLineEntry

    После создания, каждый поезд будет направляться к ж/д точке stopLineArrival, у которой он будет замедляться, после чего окончательно остановится.

    TrainMoveTo:

    Маршрут: Вычисляется автоматически от текущего пути до пути назначения
    Цель движения: Заданная точка пути
    Точка ж/д пути: stopLineArrival
    При окончании движения: Затормозить и остановиться
  4. Мы также добавили блок TrainDecouple, задача которого отцеплять заданное количество вагонов от поступающего поезда. В свойствах блока можно увидеть, что по умолчанию он отцепляет один вагон от поезда, а именно первый (в нашем случае - это локомотив). Локомотив будет покидать блок через нижний порт outDecoupled (мы добавим это соединение на следующем шаге).
  5. Блок TrainCouple нужен для сцепления локомотива и вагонов в один состав.

Ниже приведены описания блоков Железнодорожной библиотеки, которые мы используем.

Блок Железнодорожной Библиотеки Описание
Train Source Создает поезда, выполняет начальную настройку и помещает их в железнодорожную сеть. Начинает любую ж/д диаграмму процесса. Поддерживает несколько типов расписаний прибытия.
Train Dispose Удаляет поезда из модели.
Train Move To Моделирует движение поездов. Может рассчитывать маршрут и положение стрелок по ходу движения поезда по маршруту. Поддерживает функции ускорения и торможения.
Train Couple Сцепляет два поезда, которые "касаются" друг друга, в один.
Train Decouple Расцепляет вагоны поступающего в блок поезда и создает из них новый поезд.
Train Enter Помещает поступающего в блок агента-поезд на заданный путь ж/д сети.
Train Exit Извлекает поступающий в объект поезд из ж/д сети и передает агента-поезд далее в обычную диаграмму процесса.
RailSettings Задает специфические настройки для железнодорожной сети.

Продолжим рисование диаграммы процесса

  1. Добавьте три блока TrainMoveTo и соедините их, как показано на рисунке, следуя описанным ниже шагам. С помощью этих блоков мы зададим поведение поезда на железнодорожном узле, которое будет включать в себя: отцепление, ход назад, сцепление с вагонами с последующим выталкиванием их на горку.
  2. Начните с присоединения блока TrainMoveTo к порту outDecoupled (который находится внизу) блока TrainDecouple, так как мы будем задавать логику для отсоединенного локомотива.

  3. Добавьте еще один блок TrainMoveTo на диаграмму процесса (trainMoveTo1). Задайте параметры нового блока, согласно которым локомотив направится к stopLineHump и остановится там.
    Маршрут: Вычисляется автоматически от текущего пути до пути назначения
    Цель движения: Заданная точка пути
    Точка ж/д пути: stopLineHump
    При окончании движения: Затормозить и остановиться
  4. Создайте еще два блока TrainMoveTo (trainMoveTo2, trainMoveTo3) путем Ctrl + перетаскивания (macOS: Cmd + перетаскивания) блока, который вы только что редактировали.
  5. Измените свойства блока trainMoveTo2. В данный момент локомотив отцеплен и нам нужно, чтобы он затолкал вагоны на горку, т.е. ему нужно вернуться к stopLineEntry и произвести сцепку с концом поезда. Так как мы не можем его развернуть на рельсах, локомотив поедет назад мимо пути trackArrival, на котором стоят вагоны:
    Направление движения: Назад
    Маршрут не должен содержать: trackArrival
    Точка ж/д пути: stopLineEntry
  6. Обратите внимание на количество соединений, ведущих от блока trainMoveTo3 к блоку trainCouple. Нижний порт блока TrainMoveTo, в отличие от порта out, который находится справа, используется поездами, которые сталкиваются с другими поездами. В нашем случае, сталкивание является сцеплением локомотива, прибывающего к точке ж/д пути stopLineArrival, с вагонами, которые мы предварительно отцепили от этого локомотива.
  7. Теперь внесите изменения в свойства блока trainMoveTo3, чтобы этот блок направлял поезд из его текущего местоположения к точке stopLineArrival:
    Точка ж/д пути: stopLineArrival

    Теперь, когда мы смоделировали передвижение локомотив к концу состава, нужно добавить еще один блок TrainMoveTo путем Ctrl + перетаскивания (macOS: Cmd + перетаскивания) блока trainMoveTo1. Он будет моделировать процесс толкания вагонов локомотивом к горке, представленной в нашей модели точкой ж/д пути stopLineHump.

  8. Измените свойства блока trainMoveTo4:
    Точка ж/д пути: stopLineHump
    Крейсерская скорость: 5 м/с
  9. Добавьте блок Delay из Библиотеки моделирования процессов, чтобы смоделировать задержку. Измените свойства блока, задав время этой задержки:
    Время задержки: 15 секунд

Мы завершили Шаг 2. Можете запустить модель и посмотреть, как по ж/д путям передвигаются товарные составы.

Если вы увидите ошибку "The car being created must fully be on one track", значит на пути недостаточно места для помещения поезда перед точкой ж/д пути stopLineEntry. В этом случае вам нужно будет увеличить длину пути trackEntry и отодвинуть дальше элемент stopLineEntry от начальной точки ж/д пути.

Локомотив подъезжает к составу, состоящему из вагонов, чтобы сцепиться с ним.

Мы также видим, как локомотив толкает вагоны на горку, после чего останавливается, вагоны отцепляются и сортируются.

Демо-модель: Hump Yard - Phase 2 Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.
Как мы можем улучшить эту статью?