Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   TrainZ - Маршруты и сценарии (http://www.trainsim.ru/forum/forumdisplay.php?f=24)
-   -   Система маршрутизации z7-xPath (Система расчёта поездных маршрутов стрелочная будка) (http://www.trainsim.ru/forum/showthread.php?t=11836)

Combine 24.09.2010 21:22

[QUOTE]Бука умеет аакуратно выделять под себя память, а правило нет (в результате трейнз выбивает в процессе сортировки светофоров и сборки маршрутов уже который раз ).[/QUOTE] Как правило, неправильно выделяет память программист... Я считаю, что правило необходимо.

TRam_ 24.09.2010 21:46

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

А правило будет, я уж говорил, что оно будет дополнительным внешним интерфейсом к будке.

CFM 24.09.2010 22:18

А если пересчитывать маневровые маршруты не сразу по всей карте, а в пределах только станции? Так постепенно и пересчитать все станции. К тому же, элементарные маневровые маршруты гораздо короче поездных, а значит, имеют в себе гораздо меньше стрелок, что должно облегчить пересчёт.
И ещё: как планируется алгоритм сборки составных маршрутов?

TRam_ 24.09.2010 22:23

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

Алгоритм составных пока не придумал - надо вначале хоть элементарные сделать.

genesis 24.09.2010 23:09

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

TRam_ 24.09.2010 23:23

[QUOTE] Есть же Router.GetObject(string)?[/QUOTE]= загрузка роутера.

[QUOTE]реализованный, скорее всего, на дереве[/QUOTE]бинарный поиск по длине или последним знакам названия (поскольку у нас стрелки как правило пронумерованы) не намного хуже дерева.

genesis 24.09.2010 23:25

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

TRam_ 24.09.2010 23:39

[QUOTE]Так ты что, каждый раз пробегаешь по всем стрелкам? Что-то я не понимаю вообще как оно работает.[/QUOTE]я собираюсь пробегать по стрелкам станции при построении маневровых маршрутов.

Для поездных светофоров сделана база данных станций, объектами которых являются соупы с

а) именами, типами и количеством поезных маршрутов светофоров
б) подсоупами поездных маршрутов этих светофоров

База стрелок по прямому назначению будут использоваться для получения ссылок на стрелки и для сохранения состояния занятости стрелок.

Combine 25.09.2010 00:16

[QUOTE]у да, две тысячи светофоров, у каждого из которых есть имя, и есть по 3-10 маршрутов, с запоминанием 5-6 имён стрелок в каждом.[/QUOTE] А зачем все маршруты хранить? Во-первых, можно хранить только актуальный список (без вариантных и т.п.), во-вторых, есть граф, есть Дейкстра, зачем вообще что-то хранить?

[QUOTE]А правило будет, я уж говорил, что оно будет дополнительным внешним интерфейсом к будке.[/QUOTE] Без будки обойдись. Что у тебя за мания карты всякой фигней захламлять по малейшему поводу? А если настройки понадобится изменить, что, по всем тремстам километрам эту будку искать?

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

Резюме. Задумка хорошая, реализация вредная.

TRam_ 25.09.2010 00:36

[QUOTE]А зачем все маршруты хранить? Во-первых, можно хранить только актуальный список (без вариантных и т.п.), во-вторых, есть граф, есть Дейкстра, зачем вообще что-то хранить?[/QUOTE]затем чтоб что-то было. Я с лёгкостью могу сделать алгоритм для создания "нашего" маршрута до нужного траксайда, триггера и т.п., но всё это будет висеть в возухе.

[QUOTE]Даже тупым поиском в глубину пройтись (стек выдержит), выбрать кратчайший маршрут, удовлетворяющий условиям и voila.[/QUOTE]кратчайшим? Я тут пол темы выслушиваю, что пути, по которым поезд должен двигаться, должен выбирать человек (ибо кратчайший не всегда быстрейший), а ты тут начинаешь.


[QUOTE]Без будки обойдись. Что у тебя за мания карты всякой фигней захламлять по малейшему поводу? А если настройки понадобится изменить, что, по всем тремстам километрам эту будку искать?[/QUOTE]п***. При встраивании в правило скрипт начинает криво работать. Я не знаю почему, и, несмотря на то, что у меня огромный опыт тестирования скриптов (намного больший, чем их написания), за сегодняшний день получить не смог. Так что объявляю публичными алгоритмы GetDescriptionHTML, LinkPropertyValue и GetPropertyType, и пляшу их копиями в правиле. Так что реализации у меня всегда будут кривыми. Ибо прислушиваюсь не к одному единственному мнению.

TRam_ 26.09.2010 02:03

ЛОЛ, я вдруг обнаружил что эта система пересчитывает вообще ВСЕ элементарные маршруты между светофорами в одном направлении... Я в шоке, за 15 минут расчитать почти всё Киевское направление вместе с Бекасовым, оказывается, пустяк...

TRam_ 26.09.2010 04:56

Не, всё-таки поспешил хвастаться. Но кога влючил-таки систему с выкл. проверкой типа светофора, то маршруты тоже собирались быстро.

Рекордсменом на карте Москва-Нара могу назвать светофор ПГ3 ст. Бекасово-Сортировочное, у которого 49 элементарных маршрутов до следующих светофоров. Второе место поделили ПГ2 и Г2 той же станции с их 48 маршрутами :D

TRam_ 26.09.2010 06:12

[QUOTE]Без будки обойдись. Что у тебя за мания карты всякой фигней захламлять по малейшему поводу? А если настройки понадобится изменить, что, по всем тремстам километрам эту будку искать?[/QUOTE]"выносной пульт будки уже работает"
[URL=http://s004.radikal.ru/i208/1009/ea/88d99c7243bd.jpg][IMG]http://s004.radikal.ru/i208/1009/ea/88d99c7243bdt.jpg[/IMG][/URL]

Kompozitor 26.09.2010 06:34

На каком минимальном билде фурычить будет?

Pevvel 26.09.2010 11:54

ТРам, ты суперкрут. Прочитал тему, эта вещь будет очень полезна.

TRam_ 26.09.2010 12:49

[QUOTE]На каком минимальном билде фурычить будет?[/QUOTE]думаю, что фурычить должно на всём, вплоть до 2006 .

Pevvel 26.09.2010 13:02

Офф. ТРам, у кого-то разве ещё стоит 2006 оО

TRam_ 26.09.2010 13:41

Ну, скрипты-то с 2006 особо не меняются... Особенно в области окошек и стрелок.

Combine 26.09.2010 17:57

[B]already[/B]. И зачем ты подчеркивания вместо пробелов используешь?

TRam_ 26.09.2010 17:59

[QUOTE] И зачем ты подчеркивания вместо пробелов используешь?[/QUOTE]потому что браузер не распознаёт даже те пробелы, которые вытянуты из string-table...

Combine 26.09.2010 20:41

Значит, ты что-то не так делаешь. У Варза распознает, у меня тоже распознает и т.д.

TRam_ 26.09.2010 21:03

Распознаёт один пробел между 2мя символами. А надо несколько.

PS - на один "плюсик" тоже неудобно нажимать, поэтому сделал ему расширитель.

Да, простейшие алгоритмы проверки свободности маршрута написал (за исключением поиска ПС на стрелках, попавших туда не по маршруту), теперь буду готовить ему тестировочный браузер.

Да, ещё одного не пойму. Почему если Sniff со стрелок пописывать в Init , то он не работает, а если в поток, с задержкой в 0.5 с, то работает? Типа мой объект создавался ДО стрелок?

TRam_ 26.09.2010 21:44

Окончательный (я надеюсь) вариант настроечного браузера
[URL=http://ipicture.ru/uploads/100926/HRxsdWKHdd.jpg][IMG]http://ipicture.ru/uploads/100926/thumbs/HRxsdWKHdd.jpg[/IMG][/URL]

genesis 26.09.2010 23:35

Несколько? Гугли HTML-разметку, кроме таблиц тебе ничего не потребуется.
Или класс HTMLWindow (common.gs)

TRam_ 27.09.2010 01:11

Разве ты здесь не видишь таблицу? Маршруты светофора находятся в 2 ячейках подтаблицы, которая окружена большой таблицей?

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

ПС сейчас попробую собрать самый первый маршрут этой системой...

Zabor 27.09.2010 01:25

Сори, что вмешиваюсь, не моя тема, но не понял - в ТРС применяется HTML разметка в интерфейсе?

* - в HTML таблице поля будут форматироваться по самому длинному названию - до ближайшего переноса, если совсем широко и "зажаты" остальные ячейки.

TRam_ 27.09.2010 01:50

[QUOTE]Сори, что вмешиваюсь, не моя тема, но не понял - в ТРС применяется HTML разметка в интерфейсе?[/QUOTE]да, конечно.

[QUOTE]* - в HTML таблице поля будут форматироваться по самому длинному названию - до ближайшего переноса, если совсем широко и "зажаты" остальные ячейки[/QUOTE]чего мне как раз не требуется - надо компактно расположенные "кнопки", но при этом удобно нажимаемые (т.е. чтоб были промежутки).

genesis 27.09.2010 01:52

В минибраузере применяется HTML-разметка в усеченном варианте, но для нужд ГУИ хватает.

Zabor 27.09.2010 01:55

Понятно, спасибо, больше не отвлекаю от фройлен Стрелка.

TRam_ 27.09.2010 03:22

Ага, херовина заработала фактически с первого раза (только пришлось ковырнуть направление перегона -не в ту сторону выставляла)


Обнаружилась интересная особенность: число заранее заданных маршрутов на одну горловину не ограничено :). Это жутко оставляет - даж у Zork'a такого нет

varz 27.09.2010 18:58

TRam_, у тебя какая редакция z7?

TRam_ 27.09.2010 21:28

Station Buider . В тестировании первых версий (когда маршрутостроение было) я участия не принимал, пришлось 43 килобайта писать самому...

Не подскажешь, как надёжно отключить самооткрытие светофоров?

TRam_ 29.09.2010 04:10

Итак, самая первая бетка. Поддерживаются только элементарные маршруты, выбирать из элементарных наилучший он тоже пока не умеет. Если "приоритет -1", то задать маршрут нельзя будет. Будку ставить так же, как "главный контроллер z7" (обязательно, и только одну на карту). В самом "главном контроллере z7" обязательно ставить "направление перегонов - ручной/командный" и режим "Проф". Маршруты выполняются в порядке задания. Для отмены маршрута нажимать на его название в разделе его станции... Так, если не хотите понимать эту груду слов - ждите мануала. Система несовместима с z7 script DNC.

А я пока её обкатаю.

Да, основное преимущество - стрелки после прокладывания по ним маршрута не блокируются.

[url]http://narod.ru/disk/25445057000/z7-xpath%20v0.1.cdp.html[/url]
[url]http://trainzold.mylivepage.ru/file/746/6353_z7-xpath_v0.1.cdp[/url]

TRam_ 29.09.2010 07:08

Так, небольшое исправление (после тестирования БМО выпал некритичнй баг, но лучше его убрать :) )

[url]http://narod.ru/disk/25445982000/z7-xpath%20v0.1a.cdp.html[/url] (старые удалил)

Инструкции будут днём.

CFM 29.09.2010 12:27

[QUOTE]Да, основное преимущество - стрелки после прокладывания по ним маршрута не блокируются.[/QUOTE]
Т.е. маршрут не замыкается? И окончательным разрешением светофору на открытие является что-то другое, а не замкнутость маршрута? Или ты имел в виду, что стрелки разблокируются после освобождения или отмены собранного маршрута?
На 41615 не хочет устанавливаться.

TRam_ 29.09.2010 12:50

[QUOTE]Или ты имел в виду, что стрелки разблокируются после освобождения или отмены собранного маршрута?[/QUOTE]я говорю стрелки не блокируются. НИКОГДА НЕ БЛОКИРУЮТСЯ. Ибо это не нужно.

Поэтому для автомашиниста следует применять правило, не трогающее стрелки, например STW drive.

[QUOTE]И окончательным разрешением светофору на открытие является что-то другое, а не замкнутость маршрута? [/QUOTE]окончательное разрешение на открытие светофора даёт сама сигналка z7, а эта система проверяет свободность стрелок, и : в случае маршрутов по станции - свободность следующего парка, в случае маршрута на другую станцию - направление перегона. После успешной проверки переводит стрелки и включает на светофоре режим предоткрытия. Остальное, как уже сказал, делает сигналка.


[QUOTE]На 41615 не хочет устанавливаться.[/QUOTE]это как? Скрипты с ошибками, или что?

NickLon 29.09.2010 14:42

[QUOTE=TRam_;205355]я говорю стрелки не блокируются. НИКОГДА НЕ БЛОКИРУЮТСЯ. Ибо это не нужно.
Поэтому для автомашиниста следует применять правило, не трогающее стрелки, например STW drive.
окончательное разрешение на открытие светофора даёт сама сигналка z7, а эта система проверяет свободность стрелок, и : в случае маршрутов по станции - свободность следующего парка, в случае маршрута на другую станцию - направление перегона. После успешной проверки переводит стрелки и включает на светофоре режим предоткрытия. Остальное, как уже сказал, делает сигналка.
[/QUOTE]
Хм, то есть подразумевается, что если юзаем твою систему, то извольте только ею и пользоваться? Симбиоз сей системы и, например, Path Control или Path Rule невозможен? Хм, смелое решение... Ну, посмотрим, может быть действительно, доверив всё твоей системе остальное можно выбросить на свалку истории?
А почему режим "Проф", типа, чтоб предоткрытия не было входных/выходных/маршрутных?

CFM 29.09.2010 14:52

[QUOTE]это как? Скрипты с ошибками, или что?[/QUOTE]
Пишет "Unable to open......to reading"
[QUOTE]я говорю стрелки не блокируются. НИКОГДА НЕ БЛОКИРУЮТСЯ. Ибо это не нужно.

Поэтому для автомашиниста следует применять правило, не трогающее стрелки, например STW drive.[/QUOTE]
Не согласен тут, маршрут должен замыкаться, это важно - исключается перевод стрелок в собранном маршруе, что особенно важно на больших станциях.
[QUOTE]окончательное разрешение на открытие светофора даёт сама сигналка z7, а эта система проверяет свободность стрелок, и : в случае маршрутов по станции - свободность следующего парка, в случае маршрута на другую станцию - направление перегона. После успешной проверки переводит стрелки и включает на светофоре режим предоткрытия. Остальное, как уже сказал, делает сигналка.[/QUOTE]
Я писал о минусах такого алгоритма:
1. в случае случайной комбинации положений стрелок (когда маршруты из них не собраны), когда между светофорами получается незамкнутый маршрут (который никто не собирал:)) светофор может открыться, когда не нужно, если перед ним есть ПС с машинистом.
2. будут старые проблемы с открытием светофора, когда едешь управлением назад или вагонами вперёд.

Если бы получилось научить светофоры открываться только при замкнутом маршруте, невзирая на отсутствие/присутствие машиниста, наличие вагонов перед локом, положение машиниста к светофору спиной/лицом, вот это был бы реал и значительное упрощение работы со светофорами. Кто согласится со мной?

TRam_ 29.09.2010 15:11

[QUOTE]1. в случае случайной комбинации положений стрелок (когда маршруты из них не собраны), когда между светофорами получается незамкнутый маршрут (который никто не собирал) светофор может открыться, когда не нужно, если перед ним есть ПС с машинистом.
2. будут старые проблемы с открытием светофора, когда едешь управлением назад или вагонами вперёд.[/QUOTE]

решение проблемы 1:
все светофоры принудительно переведены в предзакрытое состояние, открываться не хотят и не могут (т.к. в предоткрытое состояние их переводила z7 script dnc, теперь она не используется)
решение проблемы 2:
развернуть поезд. (да каким угодно способом, может я чуть иную команду напишу, чем z7 turnround)


[QUOTE]Не согласен тут, маршрут должен замыкаться, это важно - исключается перевод стрелок в собранном маршруе, что особенно важно на больших станциях.[/QUOTE]ты алгоритма не понял. Если ты не разрешаешь машинистам переводить стрелки, то их никто не переведёт, правильно? Без различия, большая или маленькая у нас станция.

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

Да, вот, думаю, окончательная бета-версия, (в папках а не cdp-файлах), мануал уже делаю.

[url]http://ifolder.ru/19529309[/url]
[url]http://narod.ru/disk/25460442000/z7%20xPath%20v0.1b.rar.html[/url]
[url]http://trainzold.mylivepage.ru/file/746/6354_z7_xPath_v0.1b.rar[/url]


[QUOTE]светофоры открываться только при замкнутом маршруте, невзирая на отсутствие/присутствие машиниста, наличие вагонов перед локом, положение машиниста к светофору спиной/лицом, вот это был бы реал и значительное упрощение работы со светофорами. Кто согласится со мной?[/QUOTE]я против "положения машиниста". Потому что при развороте направления поезда машинист оказывается в первом вагоне с головы (вне зависимости от того, является ли первый вагон локомотивом или нет).

По поводу "самооткрытия" - качай мою весч, и попробуй добиться хоть одного самооткрытия :)

NickLon 29.09.2010 15:28

[QUOTE=CFM;205380]Пишет "Unable to open......to reading"
Не согласен тут, маршрут должен замыкаться, это важно - исключается перевод стрелок в собранном маршруе, что особенно важно на больших станциях.
[/QUOTE]
Я тоже был удивлен. Но если я правильно понял скорректированную задумку автора, стрелка, которая учавствует в собранном маршруте считается занятой. И если попытаться, но опять же таки, этой же разработкой собрать маршрут, в который входит занятая стрелка, то маршрут не соберется и стрелки не переведуться. Да, TRam?
[QUOTE]
Я писал о минусах такого алгоритма:
1. в случае случайной комбинации положений стрелок (когда маршруты из них не собраны), когда между светофорами получается незамкнутый маршрут (который никто не собирал:)) светофор может открыться, когда не нужно, если перед ним есть ПС с машинистом.
[/QUOTE]
В z7 версии Проф это, по-моему, исключено. Там не предотрытия входных/выходных/маршрутных, как в Проф2. Хотя сама по себе невозможность работать в версии Проф2 говорит скорее о слабости алгоритма, чем о его силе. Неужели нельзя жестко позакрывать предоткрытие? Вручную же можно.
[QUOTE]
2. будут старые проблемы с открытием светофора, когда едешь управлением назад или вагонами вперёд.

Если бы получилось научить светофоры открываться только при замкнутом маршруте, невзирая на отсутствие/присутствие машиниста, наличие вагонов перед локом, положение машиниста к светофору спиной/лицом, вот это был бы реал и значительное упрощение работы со светофорами. Кто согласится со мной?[/QUOTE]
Ну, это уже из области улучшений.:rolleyes: Тут хотя бы те постулаты, которые в самом начале темы и разработки соблюдены были. Но об этом, думаю, можно судить только опробовав то, что нам было предложено.


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

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim