Оформление приоритизации путей

Вопросы разработки OpenTTD, обсуждение новых сборок и патчей, решение проблем новых версий.

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

Оформление приоритизации путей

Сообщение C01d » Вс ноя 15, 2009 17:50

Родилась идея.

Каждой клетке Ж/Д путей присваивается число, по умолчанию 0. Игрок ставит туда какое угодно от 0 до 9999. Оно называется базовым числом приоритета.
Поезд при выборе маршрута выбирает тот, в котором сумма итоговых (после применения модификаторов) чисел приоритета на клетках меньше. При этом есть модификаторы: если на клетке находится семафор, то к итоговому числу прибавляется 50; если находится поезд - то 100 (эти числа можно изменить через настройки).
Если на пути находится другой поезд, но этот путь все равно более приоритетен, то наш состав все равно будет пытаться ехать по выбранному пути.

Как вам?
Аватара пользователя
C01d
Начальник станции
Начальник станции
 
Сообщения: 72
Зарегистрирован: Сб авг 30, 2008 11:17

Re: Оформление приоритизации путей

Сообщение Mihamster » Вс ноя 15, 2009 23:32

если хорошенько в никнуть в суть и устройство системы пенальти в ЯРПФ.. с его пмс, то все о чем вы написали можно делать и сейчас... умело расставляя светофоры и делая развилки...
Табито?Мэитадору
.....свобода каждого заканчивается там.. где начинается несвобода другого...
"Осваиваем Опен"
Аватара пользователя
Mihamster
Президент
Президент
 
Сообщения: 949
Зарегистрирован: Вт апр 29, 2008 23:06
Откуда: Москва

Re: Оформление приоритизации путей

Сообщение Ghost » Вс ноя 15, 2009 23:36

Чем оно по сути от точек пути отличается? Тем, что эти самые числа можно менять в динамике? И предполагается алгоритмическое описание маршрута в зависимости от этих самых чисел? Короче, идея непонятна. Раскрыть поширше надо.

Но, сдается мне, что это очередной велосипед с квадратными колесами. :D
Ghost
Директор
Директор
 
Сообщения: 385
Зарегистрирован: Сб сен 26, 2009 00:21
Откуда: Рыбинск

Re: Оформление приоритизации путей

Сообщение Wowan » Пн ноя 16, 2009 01:04

C01d писал(а):Каждой клетке Ж/Д путей присваивается число, по умолчанию 0. Игрок ставит туда какое угодно от 0 до 9999. Оно называется базовым числом приоритета.

Ниче се работку игрокам подкинул. У меня на карте 2048х2048 знаешь, скока путей и развилок? Чтобы им персонально еще числа присваивать...

Да проще присвоить числа поездам - их всего-то 700 у меня :)

Ха. И как бы еще присвоить приоритет самолетам при посадке - тут ваще элементарно. Считанные 300 самолетов :D
Аватара пользователя
Wowan
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1383
Зарегистрирован: Вт сен 18, 2007 14:43
Откуда: трасса М1, Минск — Москва

Re: Оформление приоритизации путей

Сообщение getrix » Пн ноя 16, 2009 01:28

Бред. Ибо все поезда попруться по одному пути - с высшим приоритетом.
Изображение
Аватара пользователя
getrix
Машинист
Машинист
 
Сообщения: 48
Зарегистрирован: Пт май 12, 2006 22:46
Откуда: Default City

Re: Оформление приоритизации путей

Сообщение C01d » Пн ноя 16, 2009 17:49

getrix писал(а):Бред. Ибо все поезда попруться по одному пути - с высшим приоритетом.

Вы читать пробовали? :evil: Поезд на клетке прибавляет к ее приоритету некое число, и путь теряет приоритет по сравнению с остальными. Хочется взять и обнять.

Wowan писал(а):
C01d писал(а):Каждой клетке Ж/Д путей присваивается число, по умолчанию 0. Игрок ставит туда какое угодно от 0 до 9999. Оно называется базовым числом приоритета.

Ниче се работку игрокам подкинул. У меня на карте 2048х2048 знаешь, скока путей и развилок? Чтобы им персонально еще числа присваивать...

Да проще присвоить числа поездам - их всего-то 700 у меня :)

Ха. И как бы еще присвоить приоритет самолетам при посадке - тут ваще элементарно. Считанные 300 самолетов :D


Я хочу не приоритезировать поезда, а приоритезировать пути.
Проставлять можно не везде, а там, где есть затруднения.
И разумеется, сделать возможным проставлять значения приоритета не одной клетке, а сразу области m*n.

______________
Приведу пример.
Есть развязка двух путей-шестиколеек в форме буквы T.
Изображение
В нем есть магистраль, идущая из верхнего левого угла (красная стрелка), и путь до станции, идущий из нижнего левого угла (синяя стрелка).
Изображение
Через эту развязку ходят поезда, которые идут мимо и которые идут на станцию.
Изображение
На этой картинке цветами отмечены пути. Красные - это сквозные пути. Через них должны ходить поезда, которые идут мимо.
Синие - это двойные пути. Через них могут идти поезда как мимо, так и на съезд, в зависимости от текущей ситуации. Их можно назвать резервом.
Зеленые - это пути на съезд. По ним нельзя проехать мимо.
Таким образом в каждую сторону есть три пути, два из которых идут мимо и два из которых идут на съезд.

Теперь начнем проставлять приоритеты с помощью моей системы.
Для поезда, который едет мимо станции, по красному проехать гораздо лучше, чем по синему, ведь для того красный и предназачен!
Поэтому на красных проставляем 0.
Изображение
Синие пути - это резервные, и по ним лучше ехать, когда другой возможности нет. Ставим 30.
Изображение
Зеленые - специально для съезда, и по ним ограничений нет. Ставим 0.
Изображение

Получилась вполне понятная карта приоритетов. Поезда идут без ограничений по зеленым путям на станцию, по красным - мимо, а по синим - когда красный или зеленый (ведь поезд едет либо вперед, либо на съезд) заняты.
________________________
Теперь представим себя поездом. Мы подъезжаем к развязке и выбираем путь, по которому поедем. Начинаем думать:
Мы едем мимо станции, поэтому поедем либо по красному, либо по синему пути.
Видим: по красному друг за другом следуют два поезда, а по синему один.
Считаем и видим, что в зависимости от базовых чисел приоритета, длин поездов и модификатора приоритета на поездах (то, что прибавляется к приоритету клетки, если на ней есть поезд), путь можно выбрать разный.

Таким образом хозяин компании может регулировать дорожную ситуацию, всего лишь поменяв числа в клетках.
_____________

Здорово, не правда ли?
Аватара пользователя
C01d
Начальник станции
Начальник станции
 
Сообщения: 72
Зарегистрирован: Сб авг 30, 2008 11:17

Re: Оформление приоритизации путей

Сообщение Ghost » Пн ноя 16, 2009 18:36

А не надоесть вручную считать, какие приоритеты на каждый путь ставить? Далее. Приоритеты до какого момента будут действовать - до новой стрелки? или до какой-то определенной точки?

В итоге остаюсь при своем мнении: квадратные колеса. Вместо того, чтобы игрок как диспетчер распределял поезда в зависимости от состояния сети (семафорами, точками пути, продумыванием маршрутов и т.д.), предлагается все это каким-либо образом переложить на бездумного вычислителя. Мол, мы тут построили N-путную магистраль, загнали поездов до чертиков, а теперь эта машина пусть сама думает, как все это дело разрулить.
"А чего оно не рубится? Ладно, и так сойдет... Сейчас я как все это замесю... Ну ладно, зажарится как-нибудь!" (С)

Может, просто что-то в консерватории поправить? Сеть слегка перестроить? Или с семафорами поиграться?
Посмотрите, на настоящих магистралях иногда делаются переводы с одного пути на другой (параллельный). Почему бы не устроить такую же систему на Ваших магистралях, чтобы поезда могли оперативно переходит на свободный путь?
Ghost
Директор
Директор
 
Сообщения: 385
Зарегистрирован: Сб сен 26, 2009 00:21
Откуда: Рыбинск

Re: Оформление приоритизации путей

Сообщение C01d » Пн ноя 16, 2009 19:44

А не надоесть вручную считать, какие приоритеты на каждый путь ставить?

А вам не надоело еще считать, через сколько клеток делать протяжку семафоров для лучшего движения? Или какая длина поезда рентабельнее? Здесь все легко будет делаться на интуиции, как и во всей игре все вещи.
Далее. Приоритеты до какого момента будут действовать - до новой стрелки? или до какой-то определенной точки?

Поезд считает сумму приоритетов до того момента, как закончится радиус его обзора. И да, каждую клетку он это дело пересчитывает.
Предвидя: нет, комп не зависнет, ибо посчитать сумму чисел - плевое дело.
Вместо того, чтобы игрок как диспетчер распределял поезда в зависимости от состояния сети (семафорами, точками пути, продумыванием маршрутов и т.д.)

Квадратные колеса - это как раз ваши семафоры. Они не предназначены для приоритезации изначально. Это вы придумали, как через задний проход удалить гланды (извините за пошлую аналогию).
предлагается все это каким-либо образом переложить на бездумного вычислителя

Гуманитарий детектед. А как вы перекладываете половину ваших дел на компьютер, который как раз является бездумным вычислителем?
Мол, мы тут построили N-путную магистраль, загнали поездов до чертиков, а теперь эта машина пусть сама думает, как все это дело разрулить.

О, бездумный вычислитель стал мыслить, чудесно. Числа легко расставляются прямо во время строительства развязки и слегка корректируются после запуска в эксплуатацию.
Может, просто что-то в консерватории поправить? Сеть слегка перестроить? Или с семафорами поиграться?

В любом случае, даже с идеальной сетью и семафорами, система приоритетов улучшит ситуацию и увеличит возможности по расширению сети и развязки в частности.
Посмотрите, на настоящих магистралях иногда делаются переводы с одного пути на другой (параллельный). Почему бы не устроить такую же систему на Ваших магистралях, чтобы поезда могли оперативно переходит на свободный путь?

Грррр! :evil: Они и так есть, вашу же медь! :twisted: Ставлю их каждые 15 клеток.
Поезда все равно теоретически не может с текущим алгоритмом найти САМЫЙ оптимальный путь.
_______________________
Моя система обеспечивает невероятную гибкость в организации движения против вашего извращения с семафорами.
Аватара пользователя
C01d
Начальник станции
Начальник станции
 
Сообщения: 72
Зарегистрирован: Сб авг 30, 2008 11:17

Re: Оформление приоритизации путей

Сообщение ultra_inside » Пн ноя 16, 2009 20:28

Мне кажется это бредом. Ну смотри, рассмотрим ситуацию когда у тебя есть вот эта развязка и предположим, что ниже эта шестепутка через условно 30 клеток упирается в такую же развязку. И вот предположим, что на верхней развязке появляется поезд, которому эту развязку надо проскочить по прямой (синий или красный), а на следующей свалить вправо (зеленый или синий) и вот поезд выбирает красный путь, а на следующей развязке ему надо "из крайнего левого ряда повернуть направо". Особенно забавно становится, когда в этот момент по синему тошнил, какой-нибудь тихоход 70 км/ч, а по красному летел экспресс и на этой нижней развязке вне зависимости ни от чего, все равно кто-то кого-то пропустит и потеряет время. Твоя система изначально порочна и как бы ты не пытался повысить пропускную способность развязки, которая достигла этого порога ничего из этого не выйдет. Ее надо перестраивать или вводить точки пути и расписание. На данный момент то, что ты сказал можно добиться светофорами и твоя идея не вносит ничего сверхнового. Даже больше, она лишает игру и того малого реализма, которой в ней есть.
ultra_inside
Начальник станции
Начальник станции
 
Сообщения: 62
Зарегистрирован: Вс май 17, 2009 20:48
Откуда: deep

Re: Оформление приоритизации путей

Сообщение C01d » Пн ноя 16, 2009 20:32

ultra_inside писал(а):Мне кажется это бредом. Ну смотри, рассмотрим ситуацию когда у тебя есть вот эта развязка и предположим, что ниже эта шестепутка через условно 30 клеток упирается в такую же развязку. И вот предположим, что на верхней развязке появляется поезд, которому эту развязку надо проскочить по прямой (синий или красный), а на следующей свалить вправо (зеленый или синий) и вот поезд выбирает красный путь, а на следующей развязке ему надо "из крайнего левого ряда повернуть направо". Особенно забавно становится, когда в этот момент по синему тошнил, какой-нибудь тихоход 70 км/ч, а по красному летел экспресс и на этой нижней развязке вне зависимости ни от чего, все равно кто-то кого-то пропустит и потеряет время. Твоя система изначально порочна и как бы ты не пытался повысить пропускную способность развязки, которая достигла этого порога ничего из этого не выйдет. Ее надо перестраивать или вводить точки пути и расписание. На данный момент то, что ты сказал можно добиться светофорами и твоя идея не вносит ничего сверхнового. Даже больше, она лишает игру и того малого реализма, которой в ней есть.

Для этого можно между развязками сделать переезд между путями, чтобы поезд мог съехать заранее. И вообще, смотрит он гораздо дальше, чем два таких переезда (как раз переехать на два пути вправо - не так много места занимает, чем если бы он разом два ряда преодолел). И никто не отменял "подождать свободного пути" на переезде.
Аватара пользователя
C01d
Начальник станции
Начальник станции
 
Сообщения: 72
Зарегистрирован: Сб авг 30, 2008 11:17

Re: Оформление приоритизации путей

Сообщение ultra_inside » Пн ноя 16, 2009 20:41

Ну вот. Вы уже частично решили улучшили свою развязку. Надо еще не много поработать и все будет работать просто со светофорами.
ultra_inside
Начальник станции
Начальник станции
 
Сообщения: 62
Зарегистрирован: Вс май 17, 2009 20:48
Откуда: deep

Re: Оформление приоритизации путей

Сообщение sda6 » Пн ноя 16, 2009 20:51

все это хорошо, только вот зачем эти приореты, конкретный пример можете привести?
единая ж/д по сда-новски --> viewtopic.php?f=14&t=2850&start=0
а тут обсуждаем фантазии и не только по модернизации траспорта: viewtopic.php?f=14&t=2778&start=0
Аватара пользователя
sda6
Президент
Президент
 
Сообщения: 677
Зарегистрирован: Вс ноя 25, 2007 16:53
Откуда: Украина / Черновцы

Re: Оформление приоритизации путей

Сообщение ultra_inside » Пн ноя 16, 2009 20:58

sda6 писал(а):все это хорошо, только вот зачем эти приореты, конкретный пример можете привести?


Человек же объясняет, что таким образом, он хочет оптимизировать свою сеть и сделать (по его мнению) более легкий способ выбора пути для поездов, которые еще и корректировать "на лету" можно будет. То есть, все то, чего в реальной жизни нет.
ultra_inside
Начальник станции
Начальник станции
 
Сообщения: 62
Зарегистрирован: Вс май 17, 2009 20:48
Откуда: deep

Re: Оформление приоритизации путей

Сообщение Ghost » Пн ноя 16, 2009 21:41

C01d
Не угадали - программист детектед. :D
Который прекрасно представляет, что можно переложить, а что не следует. И половину дел уж точно не перекладывает.

Кто-то в OTTD играет, чтобы построить нечто идеальное. Кто-то решает головоломку по оптимизации. Кто-то реализует детскую мечту о настольной железной дороге (гдр-овской). Но все они, в большей или меньшей степени, хотят реализма. Который в OTTD хоть чуть-чуть, но имеет место быть. Так вот тот реализм и заключается в голове и руке диспетчера, а не в каких-то весовых коэффициентах, развешенных по всей магистрали... Хотя, конечно, каждому свое...

Тут еще подумалось про оптимальность пути. В текущий момент оптимальные пути могут быть забиты и самым оптимальным будет какой-нибудь очень обходной. У меня в игре так и происходит - поезда иногда идут по другой ветке, если основная забита. И они сами как-то находят этот путь. Чаще всего, это действие не приводит к оптимизации их маршрута, но какую-то его часть они преодолевают без помех. Но иногда получается быстрее.
При наличии таких циферок будет ровно то же самое - где суждено возникнуть пробке, там она обязательно и возникнет...
Ghost
Директор
Директор
 
Сообщения: 385
Зарегистрирован: Сб сен 26, 2009 00:21
Откуда: Рыбинск

Re: Оформление приоритизации путей

Сообщение Mihamster » Вт ноя 17, 2009 00:33

C01d
мой вам совет...
займись изучением работы алгоритмов поиска пути ЯРПФ.... разобравшись ты увидишь много того о чем, как мне кажется, ты пытаешься сказать....
единственный минус.... аналоги твоих "цифорок" в ЯРПФ.. нельзя менять динамически.... только перед игрой...

но суть одна и таже...
Табито?Мэитадору
.....свобода каждого заканчивается там.. где начинается несвобода другого...
"Осваиваем Опен"
Аватара пользователя
Mihamster
Президент
Президент
 
Сообщения: 949
Зарегистрирован: Вт апр 29, 2008 23:06
Откуда: Москва

След.

Вернуться в Разработка OpenTTD

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

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