Rozbor témat IMS-09/10
Obecné pokyny pro zpracování projektů:
- snažte se modely navrhovat realisticky – parametry a konstrukci modelů zdůvodněte (evidentně nevalidní modely budou méně hodnoceny)
- ukažte abstraktní model (AM) a simulační model (SM) – popište návrh abstraktního modelu a zdůvodněte prvky, které jste do AM zahrnuli a které ne. Projekty bez analýzy situace a návrhu AM budou méně hodnoceny. Verifikujte korespondenci AM a SM.
- AM spojitého modelu ukažte formou diferenciálních rovnic (případně schématu s integrátory)
- AM diskrétního modelu ukažte formou Petriho sítě (P/T, barvené)
- schémata, Petriho sítě a podobně lze napsat čitelně rukou na papír a vložit jako naskenované obrázky
- v dokumentaci musí být jasný postup zpracování problematiky
- za extrémně důležité se považuje experimentovat s modelem, kdy experinty získáte nové znalosti o modelovaném systému. Pokud nevíte, co byste chtěli experimenty zjistit o modelovaném systému, pak jste asi napotřebovali model toho systému.
- kromě výjimky projektu "Simulační jazyky" jsou povoleny pouze programovací jazyky C/C++, Java, Python (v centrálním zadání projektu je zmínka o nezbytném makefile). Standardním prostředkem je SIMLIB.
- nechat schválit neznamená pouhou ohlašovací povinnost. Opravující si vyhrazuje právo nápad zamítnout bez udání důvodu.
Uznáno z loňska
Studenti, kteří byli v minulém roce hodnoceni 15 a více body z projektu se mohou přihlásit do této varianty a budou jim (v určitém okamžiku najednou) přiděleny loňské body. Tito studenti pochopitelně netvoří týmy, ale vystupují sami za sebe.
Vlastní téma (naprosto odlišné od ostatních), nutno schválit
Pokud máte nápad na model, který nezapadá do žádné z variant (striktně vyžadováno), pak si nechte váš nápad schválit (e-mail, fórum, konzultace) a váš nápad zpracujte. Do tohoto tématu rozhodně nezapadají systémy hromadné obsluhy (SHO).
Implementace diskr. simulátoru založeného na přepínání procesů (opak řízení událostmi)
Ve zvoleném jazyce (C++,Java,Python) naprogramujte diskrétní simulátor s kalendářem událostí, který umožní modelování procesů (jako v SIMLIB). Tento simulátor vytvořte jako knihovnu. Součástí knihovny budou i třídy pro zpracování SHO (fronta, zařízení, sklad, základní statistika). Ověřte vaši knihovnu na příkladě vlastního modelu SHO, kde demonstrujete schopnosti knihovny. Demonstrační model může být triviální (jeden typ procesů, několik linek). Knihovna a princip řízení simulace musí být v dokumentaci důkladně popsány.
Implementace diskr. simulátoru založeného na řízení UDÁLOSTMI (opak procesně orientovaného přístupu)
Ve zvoleném jazyce (C++,Java,Python) naprogramujte diskrétní simulátor s kalednářem událostí, který umožní modelování na základě událostí. Tento simulátor vytvořte jako knihovnu. Součástí knihovny budou i třídy pro zpracování SHO (fronta, zařízení, sklad, základní statistika). Ověřte vaši knihovnu na příkladě vlastního modelu SHO, kde demonstrujete schopnosti knihovny. Demonstrační model může být triviální (jeden typ procesů, několik linek). Knihovna a princip řízení simulace musí být v dokumentaci důkladně popsány.
Implementace knihovny pro generování pseudonáhodných čísel
Naprogramujte knihovnu pro generován pseudonáhodných čísel. Knihovna musí obsahovat minimálně generátor čísel řídících se rovnoměrným rozložením, exponenciálním rozložením a normálním rozložením. Nad tyto tři vytvořte ještě generátory dalších třech existujících rozložení (zdroj: Wikipedia). Vašimi generátory vygenerujte pro každý typ rozložení statisticky hodnotný soubor dat (např. 1000 čísel). Ze souboru vygenerujte histogram a ten porovnejte (stačí vizuálně v grafu) s analytickým vyjádřením hustoty pravděpodobnosti. To znamená, že pro 6 rozložení to bude 6 grafů v dokumentaci. V dokumentaci popište metody generování čísel dle vašich zvolených rozložení.
Implementace spojitého simulátoru
Ve zvoleném jazyce (C++,Java,Python) naprogramujte spojitý simulátor na úrovni knihovny. Numerickou integraci v simulátoru zajistěte minimálně Eulerovou metodou, Runge-Kutta metodou a zvolenou vícekrokovou metodou. Funkčnost knihovny prezentujte na jednoduchém příkladě spojitého modelu. Uživatel knihovny musí mít možnost specifikovat požadovaný integrační krok a metodu integrace. V dokumentaci popište architekturu knihovny a demonstrujte výsledky experimentů s demonstračním modelem.
Model analogového filtru (včetně specifikace filtru)
Navrhněte smysluplný analogový filtr (ideálně nějaký z vašeho okolí). Navrhněte a implementujte jeho model prostředky knihovny SIMLIB (výhradně!!!). V rámci experimentování s modelem demonstrujte funkci modelu v zajímavých reálných situacích (na vstup modelu přiveďte konkrétní signál a sledujte odezvu). Experimentujte s parametry modelu. Zkuste se vyhnout jednoduchým zvukovým efektům.
Model dopravy: MHD
Modelujte dopravní síť hromadné dopravy v konkrétním městě. Pokuste se respektovat (s ohledem na možnosti) skutečnou strukturu sítě a harmonogramy jízd. Modelujte příchody požadavků do systému (toky cestujících) s ohledem na skutečný stav. Model implementujte v SIMLIB. Zkoumejte průchodnost systému. Součástí modelu je zřejmě i studie konkrétního města.
Model dopravy: vlaky
Podobně jako předchozí model MHD. Lze pojmout jako zkoumání průchodnosti dopravní sítě nebo jako zkoumání jednoho konkrétního (většího) uzlu. V případě modelu dopravního uzlu (nádraží, překladní stanice) pochopitelně opět vycházejte z konkrétního existujícího místa na této planetě. Lze u tohoto pojetí navíc předpokládat, že se budete zabývat větším detailem (například pohyb vlaku o kolejišti, výhybky, řazení vagónů, ...).
Model regulačního obvodu
Zvolte si realný příklad regulačního obvodu, kde se kombinuje spojitý jev (okolí, aktivita obvodu) a diskrétní události (sepnutí aktivity obvodu). Situace analyzujte formou diferenciálních (příp. diferenčních) rovnic a diskrétní části. Model vytvořte v SIMLIB. Simulačně ukažte činnost systému v různých situacích, případně navrhněte zlepšení obvodu a okolních podmínek.
Model ve vybraném simulačním jazyce
Zvolte si simulačná jazyk (např. Simula 67 – existuje pod názvem "cim"). Prostudujte způsob jeho použití v diskrétním či spojitém modelování. Navrhněte jednoduchý model demonstrující vlastnosti zvoleného jazyka. V dokumentaci popište důkladně váš model – cílem je předvést, že jste pochopili zvolený simulační jazyk.
Modelování číslicových obvodů
Vytvořte simulátor číslicových obvodů, který bude znát několik základních součástek (NAND, NOR, AND, NOT, OR) a bude programovatelný formou NETLIStu (popis propojení součástek). Ukažte činnost simulátoru na příkladech (kombinační logika, klopné obvody, ...). Předpokladem je různé časové zpoždění na různých typech bloků.
Výsledkem tedy bude program, který na vstup dostane strukturu obvodu (vámi navržený netlist), provede simulaci a na výstup vystiskne časový průběh všech (nebo sledovaných) portů (vstupních/výstupních) v obvodu. Součástí zadání je i navržení vstupního a výstupního formátu. Ať bude váš zvolený formát jakýkoliv, uživatel musí mít možnost sledovat průběh signálů v obvodu grafickou formou (aplikace má GUI nebo využije nějaký vizualizér – např. GNUplot). Není stanovena podoba aplikace, ani její způsob činnosti. Aplikace-simulátor musí korektně na logické úrovni simulovat (tzn. v úrovních 1,O,X) veškeré obvody z elementárních hradel.
Lze využít SIMLIB/C++ nebo libovolný z povolených programovacích jazyků.
SHO: nemocnice
Vytvořte diskrétní model (SIMLIB) nemocnice s různými odděleními, pacienty, zákroky, a podobně. Součástí modelu musí být i možné poruchy v systému. Modelujte proces příchodů pacientů do nemocnice (model musí být realistický, svůj model zdůvodněte v dokumentaci). Simulačně prověřte chování systému v různých situacích.
SHO: ukázka s několika různými procesy
Zvolte si problematiku, ve které vystupují alespoň dva různé procesy, kde každý má svou vlastní aktivitu a v některých situacích se oba procesy synchronizují (např. při předání něčeho). Vytvořte diskrétní model (SIMLIB). Simulačně prověřte chování systému v různých situacích.
SHO: výrobní podnik
Zvolte příklad výrobního podniku (ideálně reálného) a vytvořte jeho model. Model (v SIMLIB) musí realisticky vystihovat proces výroby, příchody požadavků do výroby a distribuci výrobků mimo podnik.
Ukázka celulárního automatu
Zvolte problematiku modelovatelnou efektivně (1D nebo 2D) celulárním automatem. Model musí realisticky popisovat zvolenou problematiku. Konstrukci modelu (pravidla automatu) zdůvodněte v dokumentaci (citováním odborného zdroje). Experimenty ukažte chování modelovaného systému.
Vlastní příklad diskrétního systému (téma musí být schváleno opravujícím)
Máte nápad na model diskrétního systému. Tématiku nutno schválit opravujícím.
Vlastní příklad spojitého systému (téma musí být schváleno opravujícím)
Máte nápad na model spojitého systému. Tématiku nutno schválit opravujícím.
Link to this Page
- archiv 08/09 last edited on 16 October 2009 at 2:08 pm by pchrubym.fit.vutbr.cz