Форум Trainsim  

Вернуться   Форум Trainsim > Auran TrainZ > TrainZ - Маршруты и сценарии

Ответ
 
Опции темы Опции просмотра
Старый 24.09.2010, 01:43   #31
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Хм, "переведи..." (с) "Москва слезам не верит"
имеется глобальная база данных, в которых стрелка может быть помечена либо как занятая, либо как свободная. Сборка маршрута по идее должна проходить так (заодно и для себя напишу)

1) из базы данных "маршруты светофора N станции Х" создаётся подбаза "маршруты от светофора N до светофора K по станции Х" или "маршруты от светофора N станции Х до светофора K по станции Х2". Сортируется по приоритетам, если таковые были введены.
2) если имеется первый вариант, то:
а)если заданный номер маршрута больше, чем маршрутов всего, ждём 15 секунд, затем смотрим маршрут №1, далее в одном потоке (т.е. для виртуальной машины скриптов "линейным алгоритмом") проходит проверка занятости стрелок
б) проверяется следующая стрелка за тем светофором, занята ли она, и если занята, то не направлена ли на нас. Если направлена на нас и занята, увеличиваем номер маршрута на 1, переходим к пункту а)
в) Отсылаем светофору сообщение на предоткрытие. Ждём 0.5 секунды. После ожидания проверяем положения стрелок. Если они были переведены, увеличиваем номер маршрута на 1, переходим к пункту а)
г) Проверяем показание светофора. Если оно красное, убираем метки о занятости ,увеличиваем номер маршрута переходим к пункту а)
Если второй вариант:
а) проверяется направление перегона по тегу во входном светофоре следующей станции
б) если он повёрнут не на нас, посылаем сообщение о переключении перегона. Ждём подтверждения о его переключении, если такового не приходит за 0.4 секунды, ждём 5 минут, и переходим к пункту а)
в) проверяем положение стрелок, если все свободны, вписываем их занятость, ждём 0.5 секунд. Если не свободны, переходим на следующий номер маршрута, и к пункту а)
г) проверяем положение стрелок (если что-то случилось с положением, след. номер, переход к а), если ничего не случилось, переводим стрелки, открываем светофор, ждём 1 секунду
д) если светофор не открывается, убираем метки о занятости, переходим к следующему маршруту
далее...

когда стрелка освобождается, метка "занято" у неё снимается, ищутся все построенные маршруты с ней, светофорам, с которых эти маршруты были приготовлены, щлются сигналы о принудительном закрытии.
Если освобождённая стрелка последняя у маршрута, то он убирается из стека.

Вроде так...


Цитата:
Если в одну сторону на перегон отправляется пакет
с другого конца карты тоже может отправится другой пакет (причём не выполнено правило о прохождении пакета), то на одной из станций вполне может случиться коллизия.
Если же попытаться расталкивать составы по станциям, рассчитывая им пути на N станций вперёд, то вероятность коллизий в конце концов только увеличивается (из-за уменьшения количества свободных путей). Вывод: для однопутки наилучшее решение "пакет туда-пакет обратно", причём навстречу пакетам продвигаются по 1 поезду на перегон, с долгими ожиданиями. И размеры пакетов вполне можно оптимально рассчитывать. (не зря американцы делают сверхдлинные составы - у них навстречу пакетам почти нет движения)

Последний раз редактировалось TRam_; 24.09.2010 в 01:57.
TRam_ вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА

 
Старый 24.09.2010, 02:04   #32
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
б) проверяется следующая стрелка за тем светофором, занята ли она, и если занята, то не направлена ли на нас. Если направлена на нас и занята, увеличиваем номер маршрута на 1, переходим к пункту а)
тут неверно: ждём 5 минут. Ибо коллизия.

Цитата:
в) Отсылаем светофору сообщение на предоткрытие.
перед этим переведя стрелки, естественно.

Последний раз редактировалось TRam_; 24.09.2010 в 02:10. Причина: oфф trainzup открылся :)
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 10:10   #33
Combine
Матёрый пользователь
 
Аватар для Combine
 
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
Combine стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Too long, don't read
You, sir, are fucking awesome!

Цитата:
Давай после. Мне очень понравилась твоя идея с приоритетами, но ты и сам сказал, что их-то три. И ни какие "птички" и "галочки" не помогут в правилах сие изменить.
Их примерно 4294967296.

Цитата:
Только вот, упал он (Т6) когда я 10-й поезд запустил...
Ой не знаю... У меня в метро целая линия в 30км длиной заполнялась выскакивающими из порталов поездами. Следовали с интервалом полторы-две минуты. Количество поездов посчитай сам.

Цитата:
РаннингНамбер можно сделать номером поезда, который будет ключом к таблице данных поезда (мини-вариант системы расписаний) где и указывать нормальный приоритет.
Поддерживаю. RunningNumber я уже использую для хранения номера поезда в моем концепте "говорящего" ДСП.

По архитектуре: никак будок. Сделай его в виде правила.
Combine вне форума   Ответить с цитированием
Старый 24.09.2010, 13:52   #34
NickLon
Матёрый пользователь
 
Регистрация: 27.03.2008
Адрес: Мск
Сообщений: 603
Вы сказали Спасибо: 9
Поблагодарили 7 раз(а) в 6 сообщениях
NickLon стоит на развилке (репутация по умолчанию)
Отправить сообщение для NickLon с помощью ICQ
По умолчанию

Цитата:
Сообщение от TRam_ Посмотреть сообщение
имеется глобальная база данных, в которых стрелка может быть помечена либо как занятая, либо как свободная. Сборка маршрута по идее должна проходить так (заодно и для себя напишу)

1) ...
2) ...
и т.д.
Ой, ё! А зачем так сложно то? Чем сложнее, тем большая вероятность всяких глюков. Не проще ли сделать примерно так.
У светофоров расчитаны маршруты, так? У нас есть всего лишь несколько вариантов поведения:
1) прибытие на станцию, зная на какой путь;
2) прибытие на станцию на путь из группы (нам всё равно куда прибывать, лишь бы грузовым не залезть в пассажирский парк, а пассажирским - в грузовой);
3) отправление со станции;
4) маневры.
По первому случаю. Отыскиваем тот самый маршрут, который соответствует заданному направлению Н - Н1. Проверяем стрелки между этимми светофорами на занятость. Хотя бы одна занята, тогда Н - красный, стоим, курим бамбук до следующей проверки. Все стрелки свободны и открылся светофор (путь не занят другим поездом) - welcome to Н1!
По второму случаю. Хватаем первый маршрут из группы (это должна быть команда такая "собрать маршрут из группы"). Далее то же, что и в первом случае, только бамбук будем курить, когда проверим последний маршрут. Через время опять по кругу.
Третье. С отправлением проще. Там единственный вариант и его проверяем до умопомрачения. Но! Если это однопутка, или идём на неправильный, то тоже, что у тебя во втором варианте по пунктам а), б) и в).
Маневры - это отдельная эпопея там черт ногу может сломать, так что об этом можно как-нить отдельно.
Но! Меня смущают эти 5 минут везде. С одной стороны вроде и не надо бы особо часто ломиться в закрытую дверь, а с другой стороны хвост встречного спустя 5 секунд после проверки прошмыгнул обратный ему выходной (или когда входной проезжает перегон считается свободным?), а мы продолжаем ещё целых 5 минут курить бамбук. Думаю, оптимально будет 1-2 минуты.
P.S. Выражение "курить бамбук" применяю исключительно к железнодорожному транспорту. Ехал как-то на электричке в Саратовской губернии. На станции - остановка. Только остановился, открыл двери и тут по громкой связи:"Стоим, курим бамбук. Минут 20, выходной - закрыт!"
NickLon вне форума   Ответить с цитированием
Старый 24.09.2010, 14:10   #35
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Все стрелки свободны и открылся светофор (путь не занят другим поездом) - welcome to Н1!
и если хотя бы одна из этих стрелок Х-овая, и по другой её стороне проложен маршрут, то стрелки на нашем маршруте переведутся через 0.5 секунд, и курить бамбук на прийдётся намного больше часа, т.к. фактически маршрут собран (за исключением той стрелки), но светофор "чё-то не открывается". Аналогично с с маркерами пересечений. Вроде и стрелки свободны, ан нет: светофор закрыт и открываться не хочет.

По поводу групп...Ты имеешь в виду "если маршрут на один путь (станции/перегона) не собрался, собираем на другой"? Возникает вопрос: а в следующей команде как мы будем узнавать, с какого пути маршрут отправления/приёма создавать? Или правило "поискать маршрут отправления для поезда ** по станции ***Х " тоже надо?

Цитата:
Но! Меня смущают эти 5 минут везде. С одной стороны вроде и не надо бы особо часто ломиться в закрытую дверь, а с другой стороны хвост встречного спустя 5 секунд после проверки прошмыгнул обратный ему выходной (или когда входной проезжает перегон считается свободным?)
можно не через 5 минут, а после очередного освобождения стрелки поездом. Тут без разницы.
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 17:01   #36
NickLon
Матёрый пользователь
 
Регистрация: 27.03.2008
Адрес: Мск
Сообщений: 603
Вы сказали Спасибо: 9
Поблагодарили 7 раз(а) в 6 сообщениях
NickLon стоит на развилке (репутация по умолчанию)
Отправить сообщение для NickLon с помощью ICQ
По умолчанию

Цитата:
Сообщение от TRam_ Посмотреть сообщение
и если хотя бы одна из этих стрелок Х-овая, и по другой её стороне проложен маршрут, то стрелки на нашем маршруте переведутся через 0.5 секунд, и курить бамбук на прийдётся намного больше часа, т.к. фактически маршрут собран (за исключением той стрелки), но светофор "чё-то не открывается". Аналогично с с маркерами пересечений. Вроде и стрелки свободны, ан нет: светофор закрыт и открываться не хочет.
Хм, действительно. А как правило "видит" светофоры? Светофоры видят маркеры. Значит, по идее, и правило может "увидеть" на пути маркер как объект и почитать его состояние, так же, как читаем состояние стрелки. Но тогда на х-овой стрелке обязательно надо ставить х-маркеры. Хотя их вроде всегда нужно ставить, но я пользуюсь Path Control, а там они явно задаются при создании маршрута, вручную.
Цитата:
По поводу групп...Ты имеешь в виду "если маршрут на один путь (станции/перегона) не собрался, собираем на другой"? Возникает вопрос: а в следующей команде как мы будем узнавать, с какого пути маршрут отправления/приёма создавать? Или правило "поискать маршрут отправления для поезда ** по станции ***Х " тоже надо?

можно не через 5 минут, а после очередного освобождения стрелки поездом. Тут без разницы.
Да, именно это я и имел ввиду. Поискать маршрут отправления для поезда, думаю, не получится, потому как маршруты у светофора, а вот поискать следующий светофор впереди - это, думаю, реально и плясать уже от его маршрутов. Правда, тут маршрутные и маневровые будут путаться под ногами, но для маршрутных всё равно нужно считать маршрут, поскольку часто он выполняет роль фактически выходного, а маневровые отсеиваются исходя из категории поезда. Так получится?
И таким образом реализовать "маршруты от светофора N станции Х до светофора K по станции Х2"
NickLon вне форума   Ответить с цитированием
Старый 24.09.2010, 17:07   #37
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
И таким образом реализовать "маршруты от светофора N станции Х до светофора K по станции Х2"
маршрут отправления строится до входного(или ещё какого-то) следующей станции. Но перегон, естественно, при этом не проверяется, повторюсь, будет проверяться состояние этого светофора на предмет направления перегона (закрытый входной в z7 имеет состояние 0, закрытый входной из-за встречного направления перегона - 1000)


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

Значит, по поводу маркеров... Прийдётся их логику изучать .


Цитата:
Правда, тут маршрутные и маневровые будут путаться под ногами, но для маршрутных всё равно нужно считать маршрут, поскольку часто он выполняет роль фактически выходного, а маневровые отсеиваются исходя из категории поезда. Так получится?
да, создание маршрутов сделанно именно так. Слово в слово

Последний раз редактировалось TRam_; 24.09.2010 в 17:16.
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 20:40   #38
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Эх, а будку-то в правило превратить не удаётся... Бука умеет аакуратно выделять под себя память, а правило нет (в результате трейнз выбивает в процессе сортировки светофоров и сборки маршрутов уже который раз ). В то же время с правилом удобнее: не надо лазить за окошком за пол карты ...

Видимо прийётся делать и будку, и "правило-паразит" этой будке .
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 20:51   #39
NickLon
Матёрый пользователь
 
Регистрация: 27.03.2008
Адрес: Мск
Сообщений: 603
Вы сказали Спасибо: 9
Поблагодарили 7 раз(а) в 6 сообщениях
NickLon стоит на развилке (репутация по умолчанию)
Отправить сообщение для NickLon с помощью ICQ
По умолчанию

Ну это то всё хорошо. Вроде как с поездными более-менее понятно. TRam, я как-то раньше сказал, что о маневровых - потом. (со вздохом) Давай сейчас это "потом" и откроем. Как ты думаешь маневровые маршруты считать? Посмотри на БМО от Tramwayz. ст. Бекасово. Там же черт ногу сломит! А всё должно работать, тем более, если он делал всё это по ТРА.
TRam, а ты часто Главный контроллер ищешь? На БМО как-то однажды хотел его найти, дабы все светофоры сразу переинициализировать, но так и не нашёл. Ну и? Сигналка там просто пыщет здоровьем! Так и здесь. Один раз поставил, настроил - забыл о его существовании. Так что по этому поводу, думаю, заморачиваться не стоит.

Последний раз редактировалось NickLon; 24.09.2010 в 20:59.
NickLon вне форума   Ответить с цитированием
Старый 24.09.2010, 21:02   #40
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Как ты думаешь маневровые маршруты считать? Посмотри на БМО от Tramwayz. ст. Бекасово. Там же черт ногу сломит!
по крайней мере поездные там будка пересчитывала вполне нормально, памяти хватало. Другое дело что там маневровые отнесены к другой станции (станционный контроллёр = станция), так что там думать прийдётся долго и упорно...

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

Последний раз редактировалось TRam_; 24.09.2010 в 21:08.
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 21:22   #41
Combine
Матёрый пользователь
 
Аватар для Combine
 
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
Combine стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Бука умеет аакуратно выделять под себя память, а правило нет (в результате трейнз выбивает в процессе сортировки светофоров и сборки маршрутов уже который раз ).
Как правило, неправильно выделяет память программист... Я считаю, что правило необходимо.
Combine вне форума   Ответить с цитированием
Старый 24.09.2010, 21:46   #42
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Как правило, неправильно выделяет память программист...
ну да, две тысячи светофоров, у каждого из которых есть имя, и есть по 3-10 маршрутов, с запоминанием 5-6 имён стрелок в каждом. Итого около 60 000 строк. Плюс сортированный массив объектов, содержащих ссылки на все стрелки (ибо для быстого поиска Soup не очень выгоден: мы из него можем получать только строки имён, и будем сильно напрягать роутер).

А правило будет, я уж говорил, что оно будет дополнительным внешним интерфейсом к будке.
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 22:18   #43
CFM
Матёрый пользователь
 
Аватар для CFM
 
Регистрация: 02.04.2008
Адрес: Кишинёв, Молдова
Сообщений: 379
Вы сказали Спасибо: 698
Поблагодарили 172 раз(а) в 42 сообщениях
CFM стоит на развилке (репутация по умолчанию)
Отправить сообщение для CFM с помощью ICQ Отправить сообщение для CFM с помощью Skype™
По умолчанию

А если пересчитывать маневровые маршруты не сразу по всей карте, а в пределах только станции? Так постепенно и пересчитать все станции. К тому же, элементарные маневровые маршруты гораздо короче поездных, а значит, имеют в себе гораздо меньше стрелок, что должно облегчить пересчёт.
И ещё: как планируется алгоритм сборки составных маршрутов?
CFM вне форума   Ответить с цитированием
Старый 24.09.2010, 22:23   #44
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
А если пересчитывать маневровые маршруты не сразу по всей карте, а в пределах только станции?
у меня все поездные маршруты в пределах каждой станции свои.

Алгоритм составных пока не придумал - надо вначале хоть элементарные сделать.
TRam_ вне форума   Ответить с цитированием
Старый 24.09.2010, 23:09   #45
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

Цитата:
Сообщение от TRam_ Посмотреть сообщение
ну да, две тысячи светофоров, у каждого из которых есть имя, и есть по 3-10 маршрутов, с запоминанием 5-6 имён стрелок в каждом. Итого около 60 000 строк. Плюс сортированный массив объектов, содержащих ссылки на все стрелки (ибо для быстого поиска Soup не очень выгоден: мы из него можем получать только строки имён, и будем сильно напрягать роутер).
Чево? Суп — это тип данных, реализованный, скорее всего, на дереве, каким боком к нему относится загрузка роутера?
Что-то памяти многовато требуется.
Если у тебя есть имена всех стрелок, то зачем нужен массив ссылок? Есть же Router.GetObject(string)?
genesis вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Система для обдувки стрелок Lex73 TrainZ - Маршруты и сценарии 2 17.01.2010 15:28
Система сообщений TRam_ TrainZ — Об игре 3 09.08.2009 17:21
ЧС2-система ЛЖД MSTS - Подвижной состав 21 16.04.2009 21:43
Не запускается игра (рестартует система) Beholder MSTS - Об игре 7 28.03.2009 21:55


Текущее время: 17:51. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?