Ожидание свободного пути

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Ожидание свободного пути

Сообщение pi1985 » Пт авг 03, 2012 11:40

Имею одноколейную дорогу с несколькими трёхколейными разъездами. Обычно поезда разъезжаются нормально. Но бывает, возникают ситуации, как на снимке1. Нижний Поезд 138 занимает центральный путь разъезда и стоит-ждёт свободного пути, хотя на разъезде, куда ему нужно (там стоит на центральном пути поезд 137) ещё два свободных пути.
Точно так же и на станции в конце линии (снимок2). Поезд139 с центральной платформы хочет отойти, но не может из-за отсутствия свободного пути, хотя на разъезде два свободных пути.
Поезда не потерявшиеся, все сигналы маршрутные. Как решить - ума не приложу.

Снимок1
Изображение

Снимок2
Изображение
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: Ожидание свободного пути

Сообщение Edd.Dragon » Сб авг 04, 2012 02:59

По второму рисунку, не соображу что не так. Даже сделал тест и запустил там 6 паравозов. Катаются исправно.

Изображение

P.S.: Правда, 6 - много. Наступает ситуация, когда трое на платформе, а 4-ый хочет въехать и именно его очередь выбирать путь. В итоге никто не выезжает, т.к. 4-ый не может въехать.

А теперь пригляделся - у тебя та же ситуация - все платформы же заняты! Скрин такой, что фиг что разберешь, потому следовало все поезда показать в окошках :) И видимо тоже в очереди как раз въезжающий - первый.

Из-за подобных проблем одноколейка юзабельна только там, где ты можешь гарантировать мощность потока поездов. Т.е. фактически - гарантировать свободное место на станциях и разъездах.

Иначе, единственный не геморный выход - двухколейка. Но в зависимости от патчей/дополнений - возможно дорогой. Хотя, если у тебя там куча поездов, то всяко понятно, что на одноколейке с разъездами нужен "регулировщик", следящий за ситуацией на всех промежутках этой ветки и предотвращающий возможные заторы. В данном случае достаточно просто пропустить очередь въезжающего и дать выехать кому-то со станции. Но возможны и ситуации посложнее с наплывом поездов.

Хотя, как по мне, пропуск очереди могли бы и закодить.

----------------

А по первому скрину - поезд на станции вроде как за сфетофор вылез хвостом. И кстати, для верхнего поезда нет заезда на станцию (разве что, у тебя разрешены повороты на 90 градусов).
Аватара пользователя
Edd.Dragon
Директор
Директор
 
Сообщения: 266
Зарегистрирован: Сб янв 14, 2012 06:09

Re: Ожидание свободного пути

Сообщение pi1985 » Пн авг 06, 2012 09:51

Edd.Dragon, спасибо за ответ.
6 паровозов в тесте действительно много. Из моего опыта следует, что на разъезде всегда должен быть как минимум один свободный путь, т. е. паровозов должно быть на 1 меньше, чем путей. По этой ветке катаются всего 5 поездов, а путей для них 6. По идее, всё должно работать и работало до определённого момента (не знаю, правда, до какого).
Edd.Dragon писал(а): все платформы же заняты!

Действительно, все платформы заняты, но для выезжающего поезда есть целых два пути выезда со станции. И он почему-то хочет проехать по центральному, который как раз и занят (если пару-тройку раз нажать кнопку "Проезд на красный" - сопротивляется этому как может - то он поедет именно на центральный путь и имеем крушение поездов). Если сделать разрыв в центральном пути, как на рисунке, то поезда снова ездят нормально. Правда, теперь возникает опасность пробки.
ТрансСиб ЖД, 21-е мар 1920 г.#1.png
ТрансСиб ЖД, 21-е мар 1920 г.#1.png (46.47 Кб) Просмотров: 9568

Edd.Dragon писал(а): именно его очередь выбирать путь

В этом месте я что-то не понял. Я думал, что поезда независимы друг от друга и едут, ориентируясь только на сигналы. Единственное, что я никак не понимал, по какому принципу поезда уступают друг-другу дорогу на слияниях. А оно вот как оказалось! Кстати, если поезд на разъезде остановить (по идее, он должен уступить свою очередь), то ничего не изменится - со станции никто выезжать не хочет (точнее, хочет, но только по центральному пути, который занят). Почему такое происходит, я не понял.
Edd.Dragon писал(а):Скрин такой, что фиг что разберешь

Я бы савку приложил, но форум её принимать не хочет из-за большого размера.
Вот, выложил на файлообменник.
Версия с CargoDist отсюда
Edd.Dragon писал(а):единственный не геморный выход - двухколейка.

Конечно, тем более, что наличные позволяют. Просто для пяти поездов строить двухколейку я посчитал ненужным и сделал разъезд. Тем более, что рельеф не позволяет сделать нормальную развязку.
Edd.Dragon писал(а):вроде как за сфетофор вылез хвостом

У меня почему-то на таких участках всегда поезд рисуется слегка вылезшим. Почему-то поезд слегка наежает на клетку с закрытым сигналом и на ней останавливается, хотя мне кажется логичнее, если бы поезд останавливался перед этой клеткой. Тогда бы не было того, что если перед маршрутным стоит блок-сигнал, то поезд останавливается именно перед блок-сигналом. На рисунке правый блок-сигнал закрыт, хотя путь до маршрутного сигнала свободен, и закрыт потому, что поезд ещё не проехал квадратик с маршрутным сигналом. Получается, что если ставить сигналы с частотой например, 4, то следуя с дистанцией 4 клетки, поезда на развилках будут тормозить из-за этого и на участке в 4 клетки между блок-сигналом и последующим маршрутным снова разгоняться.
Gribble & Co., 27-е фев 1916 г..png
Gribble & Co., 27-е фев 1916 г..png (22.47 Кб) Просмотров: 9568
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: Ожидание свободного пути

Сообщение ziond » Пн авг 06, 2012 11:01

В консоли набери
Код: Выделить всё
set yapf.rail_curve45_penalty 100
и будет тебе щастье :D Из-за этого поезд и не хочет с прямой свернуть, т.к. штраф большой

ЗЫ. А вообще не понятно, зачем было дефолтные 100 на 300 менять :roll:
ziond
Директор
Директор
 
Сообщения: 355
Зарегистрирован: Пт мар 13, 2009 15:59

Re: Ожидание свободного пути

Сообщение pi1985 » Пн авг 06, 2012 13:12

ziond писал(а):В консоли набери
Код: Выделить всё
set yapf.rail_curve45_penalty 100
и будет тебе щастье :D Из-за этого поезд и не хочет с прямой свернуть, т.к. штраф большой

ЗЫ. А вообще не понятно, зачем было дефолтные 100 на 300 менять :roll:

Таки да, работает! :D
А где про это можно почитать про то, как работает pathfinder?
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: Ожидание свободного пути

Сообщение pi1985 » Пн авг 06, 2012 14:11

Провёл испытания: собрал две тестовые одноколейки с разъездом.
Campbell & Co., 5-е фев 1991 г..png

Правый нижний вариант оказался безразличен к значению этого параметра.
Левая верхняя отказывалась работать при значении 300 и начинала работать, если установить 100.
Вывод. Основной путь должен быть прямолинейным до конца разъезда и основные пути с разных сторон не должны совпадать, т. е. боковые пути должны быть с одной стороны по ходу движения.
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: Ожидание свободного пути

Сообщение дворник » Пн авг 06, 2012 15:18

Надо бы проверить и др. значения в cfg-файле секции pf на предмет отличия от стандартных значений. Т.к это влияет на оценку алгоритмом найденных маршрутов.

Код: Выделить всё
[pf]
forbid_90_deg = true
roadveh_queue = true
pathfinder_for_trains = 2
pathfinder_for_roadvehs = 2
pathfinder_for_ships = 2
reverse_at_signals = false
wait_oneway_signal = 15
wait_twoway_signal = 41
wait_for_pbs_path = 30
reserve_paths = false
path_backoff_interval = 20
opf.pf_maxlength = 4096
opf.pf_maxdepth = 48
npf.npf_max_search_nodes = 10000
npf.npf_rail_firstred_penalty = 1000
npf.npf_rail_firstred_exit_penalty = 10000
npf.npf_rail_lastred_penalty = 1000
npf.npf_rail_station_penalty = 100
npf.npf_rail_slope_penalty = 100
npf.npf_rail_curve_penalty = 100
npf.npf_rail_depot_reverse_penalty = 5000
npf.npf_rail_pbs_cross_penalty = 300
npf.npf_rail_pbs_signal_back_penalty = 1500
npf.npf_buoy_penalty = 200
npf.npf_water_curve_penalty = 100
npf.npf_road_curve_penalty = 100
npf.npf_crossing_penalty = 300
npf.npf_road_drive_through_penalty = 800
npf.npf_road_dt_occupied_penalty = 800
npf.npf_road_bay_occupied_penalty = 1500
npf.maximum_go_to_depot_penalty = 2000
yapf.disable_node_optimization = false
yapf.max_search_nodes = 10000
yapf.rail_firstred_twoway_eol = true
yapf.rail_firstred_penalty = 1000
yapf.rail_firstred_exit_penalty = 10000
yapf.rail_lastred_penalty = 1000
yapf.rail_lastred_exit_penalty = 10000
yapf.rail_station_penalty = 1000
yapf.rail_slope_penalty = 200
yapf.rail_curve45_penalty = 100
yapf.rail_curve90_penalty = 600
yapf.rail_depot_reverse_penalty = 5000
yapf.rail_crossing_penalty = 300
yapf.rail_look_ahead_max_signals = 10
yapf.rail_look_ahead_signal_p0 = 500
yapf.rail_look_ahead_signal_p1 = -100
yapf.rail_look_ahead_signal_p2 = 5
yapf.rail_pbs_cross_penalty = 300
yapf.rail_pbs_station_penalty = 800
yapf.rail_pbs_signal_back_penalty = 1500
yapf.rail_doubleslip_penalty = 100
yapf.rail_longer_platform_penalty = 800
yapf.rail_longer_platform_per_tile_penalty = 0
yapf.rail_shorter_platform_penalty = 4000
yapf.rail_shorter_platform_per_tile_penalty = 0
yapf.road_slope_penalty = 200
yapf.road_curve_penalty = 100
yapf.road_crossing_penalty = 300
yapf.road_stop_penalty = 800
yapf.road_stop_occupied_penalty = 800
yapf.road_stop_bay_occupied_penalty = 1500
yapf.maximum_go_to_depot_penalty = 2000
дворник
Президент
Президент
 
Сообщения: 563
Зарегистрирован: Сб дек 05, 2009 22:57

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 14:39

Попробуй проставить светофоры, ибо у тебя не все проставлены. У меня целые сети с кучей пересечений и всё работает под управлением светофоров.
Картинку твою взял, написал что куда, посмотри, сделай, авлсь поможет. В cfg ничего не меняю и не менял.
Изображение
Перед разъездами тоже нужны светофоры, а о получается целая длинна пути до другой станции дается ему для резервации пути, а там косяк - другой стоит. В случае с проставленными свотофорами - они мило разъезжаются... Вроде как. У меня так, как минимум.
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 14:42

И на всех ваших картинках вроде как именно из-за не проставленных светофоров проблемы.
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 14:58

Сделал копию:
Изображение
Теперь мне путь не блокируют на выход из станции. Плюс на путь до депо по верхней линии можно ехать ТОЛЬКО в одну сторону, сделал односторонним светофором. Двое будут ждать свободной платформы и при этом не блокируют выход. Трое могут спокойно выехать по одному и идут туда, где односторонний светофор.

Пару минут спустя, увидел ошибку у себя. Односторонний светофор который на верхней линии в разъезде и ведущий в депо, поставил не той стороной, его следует повернуть лицом в другую сторону, на встречу идущих со станции, когда с одноколлейки попадают на разъезд и в депо.
Последний раз редактировалось Tigron Чт авг 09, 2012 15:10, всего редактировалось 1 раз.
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 15:03

А шестой поезд который стоит в депо не выпустил, хотя и можно. Я бы ему светофорами дал возможность встать очень рядом с одним из двух других, на одной линии, опять же, не блокируя полный выход тех, кто идет со станции.
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение pi1985 » Чт авг 09, 2012 17:10

Tigron писал(а):Попробуй проставить светофоры, ибо у тебя не все проставлены. У меня целые сети с кучей пересечений и всё работает под управлением светофоров.
Картинку твою взял, написал что куда, посмотри, сделай, авлсь поможет. В cfg ничего не меняю и не менял.
Изображение
Перед разъездами тоже нужны светофоры, а о получается целая длинна пути до другой станции дается ему для резервации пути, а там косяк - другой стоит. В случае с проставленными свотофорами - они мило разъезжаются... Вроде как. У меня так, как минимум.

Через пару минут симуляции:
Изображение
Изображение
Светофор, стоящий перед разъездом, позволяет поезду подъехать к нему независимо от занятости путей. Если с разъезда нет выезда, поезда так и будут стоять в ожидании свободного пути, так его и не дождавшись. Всё потому, что поездов четыре и, путей тоже четыре. Так они и будут стоятъ лоб в лоб, пока один из них не сдаст назад. Поэтому отсутствие светофора перед разъездом гарантирует, что вседа будет свободен выезд с него на перегон при наличии свободного места на следующем разъезде, конечно.
pi1985
Президент
Президент
 
Сообщения: 676
Зарегистрирован: Вт апр 03, 2012 23:10
Откуда: Донбассъ - Забайкалье

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 17:54

Вот твоя:
Изображение
черным - то что нужно удалить. Красным - там надо поставить светофор помеченый цифрой 6 отсюда:
Изображение
Вот я сделал свою, с изменениями:
Изображение
После выезда из депо не ставлю сигнал, чтобы однуколлейку не блокировал в случае занятости путей и резерва. Если прдположить что там, вместо депо - станция, то он не выйдет на линию если до самой развязки не имеет возможности занять себе место. Если он имеет такую возможность, смело идет в путь не блокируя ничего. Если выше выходит кто со станции и он занял себе путь, то и ему никто не мешает спокойно добраться.
Далее, выход со станции выше возможен ТОЛЬКО в том случае если есть места в резерве специально для поездов со станции. Там может быть занято например если снизу кто-то идет в резер и пото на станцию выше., а другие, те кто вышел со станции выше, уже заняли свой резерв. Отсюда следует, что светофоров до развязки со станции выше - нету. В развязке и в специальном пути для поездов со станции я поставил светофоры с горизонтальной полоской, что даёт гарантию свободного пути для тех кто со станции выше. Вот вроде всё расписал. Первая моя картинка - не правильная. Поспешил. У меня уместились 7 поездов. На картинки стрелками указал где какие стоят светофоры.
Третий поезд со станции выше пошел в депо:
Изображение
Шестой поезд сразу пошел на станцию:
Изображение
И так далее.
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 18:04

Так получается исправить ситуацию и без влезаний в cfg?)
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск

Re: Ожидание свободного пути

Сообщение Tigron » Чт авг 09, 2012 18:09

Сделал 9 поездов, двое стоят в депо:
Изображение
Не выходят, а значит и не блокируют проезд. Хоть путь и есть свободный, но им туды нельзя)
Tigron
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 19
Зарегистрирован: Ср авг 08, 2012 13:05
Откуда: Красноярск


Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

cron