Имитационная модель работы железнодорожного узла «Решетниково»
Третий блок направляет его к точке stopLine2, куда он изначально тянул вагоны. Сталкиваясь с составом, локомотив прикрепляется к нему сзади, что позволит ему толкать вагоны для сортировки, не заперев при этом себя на запасных путях. К третьему блоку движения необходимо обязательно присоединить и настроить блок типа trainCouple, в противном случае программа воспримет столкновение с составом не как… Читать ещё >
Имитационная модель работы железнодорожного узла «Решетниково» (реферат, курсовая, диплом, контрольная)
Так же в рамках ВКР была разработана имитационная модель, детально отражающая работу железнодорожного узла. Модели различных узлов, расположенных на одной ветке, могут быть связаны между собой при помощи блока «Delay» из библиотеки моделирования процессов (см. рис. 17), имитирующего задержку при исполнении процесса. Длительность задержки задаётся для каждого типа поезда индивидуально исходя из его скоростных характеристик.
В ходе разработки был сформирован ряд требований к модели:
- · Гибкость: входные данные могут меняться в зависимости от актуальных потребностей и особенностей расписания движения поездов всех типов.
- · Скорость: так как для нахождения оптимальных решений необходимо проводить множество тестов, каждый эксперимент должен требовать небольшого количества времени.
- · Интегрируемость: модель должна легко интегрироваться с ей подобными, а также иметь возможность загрузки информации из внешних баз данных.
- · Наглядность: доступные в AnyLogic инструменты 3D визуализации относительно просты в использовании и позволяют достаточно быстро создать наглядные продукт, привлекательный для потенциальных пользователей.
- · Простота в использовании: модель уже включает в себя алгоритмы, разработанные на языке JavaScript, позволяющие генерировать новых «агентов» (поезда) в соответствии с изменяющимися задачами.
В качестве детально моделируемого узла станция «Решетниково» была выбрана не случайно. Этот участок можно заслуженно считать одним из самых напряжённых, так как он включает в себя: депо пригородных поездов Московской области, разгрузочную платформу грузовых поездов, крупную сортировочную станцию с множеством запасных путей (см. приложение 4), грузовые и пассажирские поезда дальнего следования так же проходят через неё. Именно после Решетниково происходит сужение с двух путей, следующих на Тверь, до одного.
В разработанной модели задана логика движения четырёх типов поездов.
1) Пригородный поезд.
Состав генерируется при помощи функции TrainConstrPass (см. приложение 5), ставящей всегда первым вагоном локомотив, и формирующей остальной поезд из пассажирских вагонов. Блок PassSource помещает состав на пути в заданной точке, после чего тот при помощи блока PassMoveTo двигается до пассажирской платформы, где блок типа Delay, «Landing1», моделируют задержку в одну минуту для посадки и высадки пассажиров (см. рис. 20).
От посадочной платформы блок PassMoveTo1 посылает поезд в депо где тот «уничтожается» блоком PassTrainDispose.
2) Пассажирский поезд дальнего следования.
Генерируется блоком LongPassSource в той же точке, что и пригородный пассажирский поезд, при помощи функции TrainConstrPass (см. приложение 5). Блоком LongPassMoveTo направляется через станцию Решетниково для дальнейшего следования в сторону Твери. Логика движения задана так, чтобы исключить из пути платформу пригородных поездов (см. рис. 22). Количество путей на станции позволяет поезду пройти в обход остановившейся электрички.
3) Товарный поезд дальнего следования.
Блок CargoSource на основе функции TrainConstr (см. приложение 5) генерирует товарный состав, ставя первым вагоном локомотив и последующими с равной вероятностью вагоны типов CargoA, CargoB, CargoC и CargoD (см. приложение 5). Блок CargoMove направляет поезд на разгрузочную платформу. Данный блок, отвечающий за движение, настроен таким образом, чтобы при построении маршрута исключать платформы, требующиеся другим поездам. Блок типа delay «Unloading» создаёт задержку состава на разгрузочной платформе, после чего тот будет направлен дальше блоком CargoMove1 (см. рис. 24) и уничтожится в конце модели при помощи trainDispose.
Товарный поезд местного назначения
На запасных путях, при помощи блока trainDecouple, настроенного на отсоединение одного первого вагона, локомотив открепляется от состава и далее при помощи последовательной связки из трёх блоков типа TrainMoveTо огибает товарный состав по дуге, чтобы толкать вагоны на пути сортировочной станции. Первый блок направляет отсоединившийся локомотив вперёд, в точку stopLine3. В второй блок заставляет сдать назад, до точки stopLine1, используя более длинный дуговой путь (см. рис. 27). Важно запретить ему двигаться тем же путём иначе он просто присоединится обратно к составу, а компиляция модели прервётся.
Третий блок направляет его к точке stopLine2, куда он изначально тянул вагоны. Сталкиваясь с составом, локомотив прикрепляется к нему сзади, что позволит ему толкать вагоны для сортировки, не заперев при этом себя на запасных путях. К третьему блоку движения необходимо обязательно присоединить и настроить блок типа trainCouple, в противном случае программа воспримет столкновение с составом не как стыковку, а как аварию и прервёт прогон указывая на ошибку при выполнении дискретного события (см. рис. 28).
Далее блок trainMoveTo4 направляет локомотив и вагоны, снова ставшие единым составом на сортировку. Блок delay сымитирует соответствующую задержку, перед уничтожением агента блоком trainDispose2.
Так же модель поддерживает загрузку внешних баз данных. Так, например, блок TrainSource, помещающий новые составы на пути, может делать это как с заданными вручную интервалами, так и на основе информации из SQL. При выполнении подобной работы это особенно удобно, так как позволит не вводить фиксированное расписание пассажирских поездов вручную.
На основе ряда тестов, проведённых с моделью, были получены результаты, позволяющие принимать оптимизационные решения для участка.