Цитата:
Сообщение от TRam_
повторюсь, обязательно будет возможность выбрать "самый удобный", в остальных случаях будет искаться первый из тех, который был получен в процессе просчёта (да, в процессе просчёта вначале определяются самые "левые" маршруты, так что по тупикам система в общем-то и не должна вести: у нас как-никак правостороннее движение, всё второстепенное справа). Но если будете настаивать, могу добавить прописывание приоритета каждому маршруту. Автоматике это доверять нельзя: только человек знает где меньше отклонений, где лучше путь, и т.п.
|
Да-да-да, приоритеты и возможность вообще удалить ненужный мусор.
Что касается сборки маршрутов, предлагаю сделать это с помощью двухуровневого резервирвания, суть токова:
Каждый поезд, следующий в пункт назначения, имеет перед собой две зоны резервации, в зависимости от типа и приоритета поезда.
Первая зона простирается на достаточно большое расстояние и показывает планируемый для поезда маршрут. Если другой поезд тоже потребует резервирования маршрута конфликтующего с первым, право быть первым дается поезду с высшим приоритетом.
Вторая зона резервации простирается на меньшее расстояние (я предполагаю 4-6 БУ), эта резервация в обычных условиях гарантированно принадлежит данному поезду и по ней уже собираются маршруты.
Для такой системы трех стандартных приоритетов мало, нужно будет предусмотреть больше вариантов: высокоскоростное движение, скоростное, фирменное/премиум, скорый, пассажирский, пригородный, несколько типов грузовых — сквозные, сборные, участковые, рефрижераторные, виды маневровых: вывозная работа, маневры на станциях и т.п.
Таким образом, к примеру, птичкам будет гарантироваться зеленая улица длиной 20 км, маневровый в пределах станции не займет маршрут через всю горловину, а грузовой автоматически встанет под обгон.
А теперь перспективы платформы:
Идя дальше, разумной становится идея расписаний поездов, по которым поездам назначаются приоритеты и маршруты. С их помощью уже реальна полностью автоматическое разруливание поездов, т.к. автоДСП (а стрелочные посты одной станции логично объединить) будет знать поездную обстановку и решать коллизии маршрутов. Более того, это позволит немного отойти от стандартной модели двухуровневого резервирования, к примеру, ДСП может пропустить маневровый, если его проследование займет пару минут, а поезд, зарезервировавший путь, еще далеко.
И не надо говорить, что это нечто фантастическое и требует каких-то сложных решений с ИИ. На самом деле вся деятельность на железных дорогах строго регламентирована и четко делится на на отдельные задачи, которые, в свою очередь, также делятся, и в конце концов получаются атомарные задачи, которые решаются элементарно.
Для примера, рассмотрим процесс формирования состава на сортировке.
Готовые составы из парка С должны быть отправлены в парк О, где к ним прицепляется локомотив. Казалось бы, трудная задача, но пойдем по порядку. Итак, состав на пути Х парка С. Система формирования (назовем ее по аналогии автоДСПГ) запрашивает свободные вытяжные маневровые локомотивы, задает им маршрут к составу. Далее строит ему маршрут на нужный путь парка О. Затем запрашивает свободные локомотивы в депо и организует прицепку к составу. Все, поезд передается в руки автоДСП, его работа уже полностью описана.
Как сортировать составы на горке? Каждый вагон имеет пункт назначения. Сборный или участковый собирает вагоны с ГР промежуточных станций, маневровые — с ПП предприятий, и ГР и предприятия назначают каждому вагону пункт назначения (а если вагон разгружен — то он передается в компетенцию системы распределения вагонов, назовем ее автоГрузовойДиспетчер, который отправляет вагоны под погрузку на другие предприятия). Поступая в приемный парк, состав переходит в компетенцию автоДСПГ, который сортирует вагоны по пункту назначения на нужные пути.
Как выдавать локомотив и откуда их брать? На каждой станции формирования есть депо, где есть определенный запас тяги. Необходимое количество локов в депо поддерживает локомотивный диспетчер. Анализируя расписание и количество локов в депо он организует резервные, сплотки от туда, где избыток, туда, где недостаток. Отправляемой сплотке выдается маршрут, и она становится обычным поездом в ведении автоДСП.
Несмотря на общую сложность системы, декомпозиция позволяет большой пирог разделить на маленькие кусочки, к каждому из которых назначается ответственный. Каждый объект отвечает за свою четко ограниченную область, применяя при этом строго ограниченный набор операций. В совокупности получается полноценный ЖД-комплекс. Это называется объектно-ориентированным подходом к моделированию.
Несмотря на запредельный объем всей системы, ее реализация состоит из небольших шагов, первый из которых — данный стрелочный пост.
Итак, для тех кто еще не врубился, здесь описана полноценная АСУЖТ с интерактивным миром.
- Мир включает в себя предприятия, города и порталы. Они определяют вагонопотоки. Вагонопотоки, являются входными данными в нашей задаче.
- Вагонопотоки по всей карте обрабатывает грузовой диспетчер. Он отслеживает события прибытия грузовых поездов/вагонов в пункт назначения, устанавливая пункт назначения разгруженных вагонов к погрузчикам.
- Такие вагоны подбираются сборными/участковыми, которые организуются участковыми или сортировочными станциями. Местный автоДСПГ сортирует их, готовые составы выставляет в отправочные парки, отдавая их в руки автоДСП.
- Пассажирские поезда ходят согласно расписанию, с достаточно постоянной составностью, поэтому глобальный диспетчер им не нужен. Лишь начальник пассажирской технической станции вносит свою лепту в их организацию, формируя составы нужной вместимости (исходя из пассажиропотока, который определяет сколько пассов хотят из А попасть в Б). Также он организует выставку готовых составов на пассажирскую станцию согласно расписанию, отдавая поезд в компетенцию автоДСП.
- Стабильный подход локомотивов обеспечивается локомотивным диспетчером, который из мест с избытком отправляет сплотки в места с недостатком.
- Ну и последнее звено — машинисты. Машинист здесь представляет собой методы ведения поездов различных типов, операции сцепки, расцепки, надвига и т.п. Получает указания он от ДСП. Одним из машинистов может стать...
- Игрок, впрочем, игрок может стать кем угодно — глобальным диспетчером, отвечающим за распределение ресурсов по дороге, местным начальником, отвечающим за раздельный пункт — станцию, горку, депо, получающем приказы диспетчеров (ДНЦ, кстати, здесь оказывается ненужным — его функции реализовнаны двухуровневым резервированием маршрутов. Хотя он хорошо сработает в тех случаях, когда существует узел или сложный участок), да хоть стрелочником, для этого Владимиру потребуется лишь сделать так, чтобы его пост лишь отдавал приказы, а стрелки переводил игрок

- Ну и на выходе получается — потоки + расписание = движение.
Система полностью расширяема. Хотите перекрытия путей и ремонтных работ — реализуем диспетчера ремонта, который иногда организует окна и выезд поездов с ПМС

И т.д.
Это все реализует мечту НикЛона — автоматическая бесконечная сессия с нелинейным сюжетом

Или заядлого машиниста: загрузить сессию, получить случайный поезд с случайным маршрутом и, опять же, нелинейным сюжетом.
Или автодиспетчер для МП. Или пульт ДСП. Много всего, короче.
Я уже джва года хочу такую игру^W^W обдумываю этот план