Vytvořené odpovědi
-
AutorPříspěvky
-
Michalk
ÚčastníkRozpojitelnost: U jednotlivých vozidel ji nemusíte vůbec řešit, ta má význam právě až v soupravách a hlavně v železniční dopravě, v MHD má význam téměř nulový.
Schválně zkusím popsat příklad rozpojování, kdy se to hodí. Mějme obratovou stanici. Bod obratu je rozpojovací bod s linkovým seznamem pro rozpojení: „*(L=objezd)“. V možnostech rozpojení mám nastaveno:
- rozpojit vlak, je-li možné
- zadní část ve stavu spojování, obrátit
- nové pořadí pro přední část, stejně jako linku
- nelze-li rozpojení provést, obratít vlak
- rozpojit od vozu 1
Linka objezd je vedená kolejištěm tak, aby se dostala na druhou stranu soupravy (tohle lze zařídit i bez změn linky, ale je to buď strašně pracné, nebo to není realistické).
A teď si představme, co se stane: Přijede tam jednotka složená z jednoho vozu, nezávisle na tom, zda má nastavenu nerozpojitelnou soupravu, nebo ne. Nelze ji rozpojit (její délka není větší, než rozpojovací délka), obrací se a odjíždí zpět. Potom tam přijede loko+vozy+řidičák, souprava má nastavenu nerozpojitelnou soupravu. Nelze ji rozpojit (je nastaveno), obrací se a odjíždí zpět. No a nakonec tam přijede souprava loko+vozy, která na nastaveno, že ji lze rozpojit. Dle nastavení se loko odvěsí, jako linka „objezd“ objede stojící soupravu, přivěsí se a celá souprava jako původní linka odjíždí. Vše v jednom bodě rozpojení.
Signalizace a pseudovozidla: Výsledkem je nějak zadrátovaný program signalizace. Pokud tu Pan Nikdo 0. píše, že by se to mělo řešit jinak, tak mohlo, proč ne. Já jen chtěl podotknout, že bez další programátorské práce jdou řešit dost zajímavé věci. A pokud bys je chtěl řešit, stejně to budeš řešit nějakým stavovým strojem, pak je jedno, jestli ten stavový stroj bude reprezentován kolejištěm s pseudovozidlem, nebo pravidly gramatiky daného jazyka signalizace, zapsané v textovém editoru jako např. Info text (záměrně jsem vypustil grafické zobrazení, protože to znamená ho naprogramovat – není záležitost jednoho večera). Co bude navíc uživatelsky přívětivější? Umíš ze stavového automatu (který by ještě část neprogramátorů zvládla navrhnout, možná i bez toho, že by věděli, co to vlastně formálně udělali) vytvořit gramatiku daného jazyka? Já bych sice teoreticky měl, ale za ty léta, co jsem to ve škole potřeboval, už jsem to dávno zapomněl. A většina předpokládám ani netuší, o čem to tu sakra ten blbec michalk píše :-).
Kurzy: Kurz je definovaný jako číslo, tak tam žádné znaky jako plus či hvězdična nenacpeš (teda nacpeš, ale bude to zase číslo dle ASCII). Ošetření, zda jsi zadal číslo a jestli je v požadovanám rozsahu za tebe udělá grafické rozhraní, pokud to dobře nastavíš, na to nepotřebuješ žádný další parser.
Jako mně je to buřt, odkud se čísluje, jestli od 0 nebo od 1. Teď si trochu zaspekuluju, ale co když datový typ použitý na číslo kurzu je unsigned? Nebudu teď řešit proč, to je nepodstatné. A nějakou NULL hodnotu potřebuješ a pak to holt padne na nulu.
Jinak je krásné, že se tu bavíme o něčem, co bychom chtěli, ale pokud k tomu nedotlačíme autora, tak nám nezbývá, než to nějak ohnout, třeba tak, jak psal Michal90, což z hlediska reality je dost blízko (stojí štrůdl vozů ve vozovně a výpravka přijde za řidičem: vem si třetí vůz, vyjíždíš v 4:20 jako kurz 03, linka 1) a je to docela elegantní řešení (abych za něj nehoroval, když ho používám taky, že).
Datumy (pro odlehčení): A teď si vemte, že jsem viděl používat i datumový formát RR-DD-MM. To je teprve prasárna… Něco bude 10-12-08. Vyberte si termín, jak je libo 🙂 12. srpna 2010, 10. prosince 2008, 8. prosince 2010, a možná i někdy jindy :-).
-
Odpověď byla upravena před 3 roky a 5 měsíci uživatelem
Michalk.
Michalk
ÚčastníkJen pár postřehů:
- Nastavovat rozpojitelnost/nerozpojitelnost jako default již u vozu v editoru je nesmysl: Jak to pak udělám, pokud chci mít třeba soupravu dvou nerozpojitelných vozů, které v nějakém místě potřebuju rozpojit? Nebo např. je souprava loko+vozy+loko nerozpojitelná? Co když se v půlce trasy dělí na dvě části, která každá pokračuje jinam, takže v jedné konečné se obrací bez objíždění a v druhé loko objíždí… Navíc to tak nemusí být pro všechny vlaky, ale třeba jen vybrané.
- Číslování kurzů od jedničny má svůj důvod – pokud bys prostudoval dokumentaci k síti důkladně, tak bys zjistil, že číslo 0 je použito jako indikátor, že s daným prvkem aktuálně žádný kurz spojený není (např. v taktovacím bodě).
- Když jsem si v malé síti (MHD v zhruba 30tis. městě) řešil to, aby se mi vozy přiřazovaly k daným kurzům náhodně, tak jsem to řešil přesně tak, jak popsal Michal90. Logika lze navíc postavit i tak, že na negarantovaný nízkopodlažní kurz lze náhodně přiřadit nízkopodlažní vozidlo (pokud to provozní situace dovolí – viz dále). Ve vozovně navíc mohou být i prvky typu myčka, kde vozidlo může náhodně strávit nějaký čas, takže ho předjedou jiné kurzy, čímž se toto pořadí ještě více promíchá. Řešil jsem i „neschopnosti“ vozidel – při zátahu byla nějaká pravděpodobnost, že je vozidlo porouchané a najelo do servisu a místo něj další výjezd vyrazilo vozidlo záložní, které při dalším zátahu opět zeschopnilo původní vozidlo. Ještě dodám, že taková „vozovna“ se dá elegantně schovat do úrovně -1 (-2).
- Logika světelné signalizace pomocí nějakého pseudovozítka v podzemí: Dá se na něj nahlížet i jako „programovací jazyk“ pro signalizaci. Lze tak nasimulovat i dost složitý řadič signalizace (aby taky ne, když je to vlastně konečný automat přijímající jazyky třídy 3)
-
Odpověď byla upravena před 3 roky a 5 měsíci uživatelem
Michalk.
Michalk
ÚčastníkGenerování probíhá právě tím řádkem SYMBOL R 1, a to R 1 by právě mělo náhodně vybrat z domků – ale jak koukám, nefunguje v beta4… A to bude problém, protože beta nemá intergované grafické symboly. Půjde tedy vygenerovat jen jeden typ domku.
Pokud tedy stačí, že se vygeneruje jen jeden typ domku, bude třeba nahradit v tom skriptu text „SYMBOL R 1“ za „SYMBOL X 0xC500“. To vygeneruje jeden z typů domku.
Pokud nevyhovuje typ domku, bude třeba otevřít novou prázdnou síť, vložit tam jeden požadovaný domek a uložit ji. Následně si ji otevřít v poznámkovém bloku a zjistit, jaký je to symbol. Někde na konci souboru bude něco jako
<Netz typ=“QU32″ dx=“32″ dy=“32″ dz=“1″ anz=“1″>
<Q k3=“65536,65536″ dx=“1″ dy=“1″ e1=“C500″>
g</Q>
</Netz>a nás bude zajímat právě to, co se nachází místo toho C500. To zapíšeme do toho skriptu.
Michalk
ÚčastníkMichal90: Zrovna dělat detekci čehokoli v již vytvořené síti je docela opruz. To kódování kvůli kompresi dat není zas tak úplně triviální. Nicméně pokud to pomůže, tak na generování řady symbolů (v tomto případě domů) lze úspěšně použít bna soubor a příkazovou řádku ve Win. Jednoduchý prográmek na to níže. Ještě by se to dalo upravit, aby to šlo spouštět v dávce najednou s parametry, ale to třeba příště :-), už tak mi to zabralo asi 15 minut :-).
Návod pro neprogramátory: následující text vložit do poznámkového bloku a uložit jako neco.bat (pozor, aby se to pak nejmenovalo neco.bat.txt, pak je to nutné přejmenovat na neco.bat), dvojklikem spustit a výsledek importovat do bahnu.
@echo off
echo generovani vodorovnych ci svislych rad domu do bahnu
echo vytvori bna soubor, ktery lze nacist bahnem
set /p soubor=zadej jmeno vystupniho souboru vcetne pripony .bna
set /p vyber=smer vodorovne/svisle/sikmo nahoru/sikmo dolu[v/s/n/d]
set svodorovne=v
set ssvisle=s
set ssikmonahoru=n
set ssikmodolu=d
if /i %vyber%==%svodorovne% goto lblvodorovne
if /i %vyber%==%ssvisle% goto lblsvisle
if /i %vyber%==%ssikmonahoru% goto lblsikmonahoru
if /i %vyber%==%ssikmodolu% goto lblsikmodolu else goto lblnothing
:lblvodorovne
set /p z=pocatecni souradnice x
set /p k=koncove souradnice x
set /p v=souradnice y
echo BNAFILEVERSION 3830 >> %soubor%
echo SETPOSABS %z%, %v% >> %soubor%
for /L %%x in (%z%,1,%k%) do (
echo SYMBOL R 1 >> %soubor%
echo SETPOSREL 1, 0 >> %soubor%)
goto lblend
:lblsvisle
set /p v=souradnice x
set /p z=pocatecni souradnice y
set /p k=koncove souradnice y
echo BNAFILEVERSION 3830 >> %soubor%
echo SETPOSABS %v%, %z% >> %soubor%
for /L %%x in (%z%,1,%k%) do (
echo SYMBOL R 1 >> %soubor%
echo SETPOSREL 0, 1 >> %soubor%)
goto lblend
:lblsikmonahoru
set /p z=pocatecni souradnice x
set /p k=koncove souradnice x
set /p v=pocatecni souradnice y, koncove budou dopocitany
echo BNAFILEVERSION 3830 >> %soubor%
echo SETPOSABS %z%, %v% >> %soubor%
for /L %%x in (%z%,1,%k%) do (
echo SYMBOL R 1 >> %soubor%
echo SETPOSREL 1, -1 >> %soubor%)
goto lblend
:lblsikmodolu
set /p z=pocatecni souradnice x
set /p k=koncove souradnice x
set /p v=pocatecni souradnice y, koncove budou dopocitany
echo BNAFILEVERSION 3830 >> %soubor%
echo SETPOSABS %z%, %v% >> %soubor%
for /L %%x in (%z%,1,%k%) do (
echo SYMBOL R 1 >> %soubor%
echo SETPOSREL 1, 1 >> %soubor%)
goto lblend
:lblnothing
echo neznam funkci %vyber%
:lblend
echo END >> %soubor%Michalk
ÚčastníkPokud stavíte reálnou síť (nebo aspoň s reálnou geografií), tak se dá použít generování bna souboru z osm (OpenStreetMap). Před pár roky jsem sem postnul vlastní program, který to umí. Nicméně nyní ho tu nemůžu najít. Pokud by byl zájem, zkusím ho pohledat doma na PC a postnout znovu. Krajinu to umí nagenerovat celkem hezky (horší je to s jízdními drahami, se kterými je i pak dost práce), ale má to háček v tom, že se drží reálných tvarů (problémy s tratěmi a silnicemi, které se většina snaží stavět co nejvíc rovně) a pravděpodobně se vám nepodaří napasovat generování na již postavou síť. Na druhou stranu napsat bat soubor, co vytvoří bna soubor, který vyplní (příp. orámuje) zadanou oblast, není vůbec těžké…
Nějaké přímé generování nt3 souboru sítě mě shodou okolností napadlo teď o Velikonocích (když jsem se pokusil začít stavět novou síť v betě4 a zjistil jsem, že je to fakt vopruz), naprogramovat to není až tak velký problém. Jen je tam ještě hodně otázek k dořešení, aby to umělo víc, než to, co zvládne generování bna souborů (např. výhybky, lepší vícestupňová logika při generování cest, aby se při generování např. dvoukolejné trati vygenerovala opravdu dvoukolejka a ne dvě částečně se překrývající jednokolejky, …).
Michalk
ÚčastníkStan: Jediné řešení je rozdělit traťový oddíl na dva. A aktivaci druhého dát do prvního (Pole Účinek na signalizace a traťové oddíly). V tomto případě nepotřebuješ ani druhé návěstidlo (platí obecně, žádný TO nepotřebuje nutně ke své funkci návěstidlo, ale ve velké části případů je vhodné ho použít). Pokud však nemusí být splněny podmínky pro postavení 2.TO okamžitě (např. další projížděná výhybka), bude nutné druhé návěstidlo použít.
Případně bych ještě všechny další TO, vedoucí přes tuto výhybku, zabezpečil signalizací obsazení z(á)hlaví, aby nemohl nastat případ, že se obsadí 1.TO, vlak projede a zůstane trčet na záhlaví a mezitím se aktivuje TO pro odjezd někam dál. Ale to jen v případě, že daný stav může nastat.
Michalk
ÚčastníkTo spíš vypadá na nějaké problémy s rozpojováním a změnou linek. Signalizace jsou nastaveny patrně dobře, ale zaměřil bych se sem: Nemůže se stát, že signalizaci vybaví už odjíždějící lokomotiva? Konkrétně, jaké nastavení má rozpojovací bod a bod změny linky na konci koleje? Pod jakou linkou vjíždí vlak? Zkus sem hodit i screeny jednotlivých kontaktů, rozpojovacích bodů a bodů změny linek na jedné koleji (předpokládám, že na ostatních to bude podobné).
Možná by mohlo stačit posunout kontakt na úplný konec koleje, tam kde máš zvukový bod.
-
AutorPříspěvky