Systém je soubor elementárních částí (= prvků systému), které mají mezi sebou určité vazby. Matematicky je systém dvojice S = {U, R}:
Pro představu: Akvárko je systém složený ze stěn, vody, rybiček a všeho, co rybičky vyprděly. Vazby mezi rybičkami jsou takové, že velké rybičky žerou menší.
Model je napodobenina systému jiným, jednodušším systémem.
Příklad modelu: Fyzikální zákony jsou matematickým modelem reálného světa – modelují způsob, jakým reálný svět funguje.
Modelování je proces vytváření modelu systému a simulace je pak získávání nových znalostí o původním systému pomocí experimentování na tomto modelu.
Příklad: Modelování je vytváření LEGO traktoru. Simulací je pak shození traktoru ze stolu a pozorování, jak moc se rozbije.
Důležitou částí simulace je vyhodnocení výsledků (výstupních dat).
Kontrola, zda simulační model odpovídá abstraktnímu modelu. Čili že to, co jsme naprogramovali, dělá přesně to samé co jsme načmárali na papír.
Ověření, zda model dává validní výsledky – takové, které by dávalo pozorování původního systému při stejných podmínkách. Validace je náročná. Nelze vyrobit model, který bude 100% validní, respektive ani u sebedokonalešího modelu nelze 100% validitu dokázat.
Takže třeba u výše uvedeného příkladu s LEGO traktorem bychom po pár shození LEGO traktoru a skutečného traktoru zjistili, že ten z Lega se rozbije jinak než ten skutečný, takže dělat model z Lega nebyl asi dobrý nápad a zkusili bychom to třeba s papírem.
Simulace diskrétních systémů. Diskrétním systémem myslíme takový systém, ve kterém nás nezajímá stav v jakémkoli okamžiku v čase, ale pouze v klíčových momentech.
Proces je posloupnost událostí. Proces může být například zákazník v obchodu a jeho posloupnost událostí je: vstup do obchodu, výběr položek k nákupu, zaplacení na pokladně, odchod z obchodu.
Paralelní události se počítají sériově – nejdřív se provede jedna, pak druhá a teprve poté se posune simulační čas.
Jde o diskrétní systémy, které kromě procesů obsahují fronty, obslužné linky a potažmo sklady.
Procesy, které čekají na přidělení nějakých zdrojů (třeba čekají na obsloužení na nějaké obsazené lince), se mohou řadit do front.
Jde o zařízení, do kterého proces vstoupí, vykoná zde pomyslnou činnost a následně ho opustí. Pokud je linka plná, proces může vstoupit do fronty. Někdy se pojmem zařízení myslí práve obslužná linka.
Sklad je linka, která umí obsluhovat více procesů. Zároveň může nějaký proces zabrat více míst ve skladu.
Příklad: Parkoviště je sklad s 10ti sloty. Autobus zabere 4 sloty, auto jeden. Když na parkovišti stojí 3 auta a autobus, jsou tam jen 3 volná místa a další autobus musí stát ve frontě a čekat, až někdo odjede.
Některé procesy mohou mít větší prioritu. Jsou dva typy priority: slabou a silnou.
Při příchodu procesu se slabou prioritou k zařízení se nejprve dokončí obsluha procesu, který je uvnitř.
Právě obsluhovaný proces je postaven do zvláštní, vnitřní fronty. Silně prioritní proces je obsloužen. Pak se teprve doobslouží prvky z vnitřní fronty.
Řídící mechanismus simulace. Pokaždé, když nějaký proces dokončí svou diskrétní činnost a „čeká“ na opětovnou činnost (například je ve frontě, v nějaké trvající obsluze nebo prostě čeká na nějaký stav systému), kalendář vybere proces, který má běžet. Pokud v aktuálním simulačním čase už žádný proces nemá naplánovanou aktivitu, posune se kalendář v čase k nejbližšímu budoucímu procesu a aktivuje ho.
Pokud potřebujeme simulovat systém se spojitými průběhy, použiváme spojitou simulaci. Spadá sem například fyzikální simulace pohybu vesmírných těles, elektrických obvodů atd. Stejně jako u diskrétních simulací je zde čas diskrétní. Rozdíl je však v tom, že výpočet stavu systému probíhá v daných intervalech, také krocích. Kroky jsou dané vrchním a spodním omezením – simulátor může v případě potřeby krok zmenšit nebo zvětšit.
Výpočet stavu systému je často spojen s řešením diferenciálních funkcí. Např. při řešení fyzikálních modelů jsou jednotlivé prvky systému ve vztazích definovaných pomocí fyzikálních zákonů. Na počítači se diferenciální funkce řeší pomocí numerických metod. Funkce se přibližně proloží (aproximuje) polynomem a pak se extrapoluje výsledek v příštím integračním kroku.
Pokud je simulační čas od konce simulace vzdálený o malou část obvyklého derivačního kroku, přepočítá se poslední krok rovnou až do konce simulace.
Jde o spojitou simulaci s (občasnými) diskrétními událostmi. Simulátor počítá spojité průběhy a kontroluje, zda nedošlo k nějaké diskrétní události.
Příklad: Míček skáče po zemi. Jeho stoupání a klesání je spojitý průběh a počítá se spojitou simulací. Dopad míčku na zem, ztráta pohybové energie, změna směru pohybu – to je, pokud nezkoumáme fyzikální vlastnosti a pochody během odrážení míčku, diskrétní událost.
Stejné jako spojitá simulace s následujícím rozdílem: Při každém integračním kroku simulátor kontroluje, jestli nedošlo k nějaké diskrétní události. Pokud ano, tak se vrátí o krok zpátky, zmenší velikost kroku a počítá znovu. V momentě, kdy už nelze krok zmenšit, dojde k diskrétní události a nastaví se opět původní velikost integračního kroku.
Tento princip je důležitý kvůli co nejpřesnějšímu zjištění, kdy přesně k diskrétní události došlo.