Diskrétní simulace událostí: Principy a implementace
Java knihovna javaSimulation poskytuje nástroje pro tvorbu simulací (správu seznamů, generování pseudonáhodných čísel a modelování procesů/korutin). Tento materiál shrnuje hlavní třídy Linkage/Link/Head, Random, Coroutine a Process a vysvětluje jejich použití na úrovni potřebné pro samostatné studium.
Definice: javaSimulation je sada tříd usnadňujících implementaci časově řízených simulací v Javě (správa front, plánování událostí, generování náhodných veličin, kvaziparalelní běh).
Seznamy v javaSimulation jsou realizovány přes vazby mezi položkami (linky). To dovoluje efektivní vkládání, odebírání a průchod bez potřeby indexů.
Definice: Linkage je základní uzel propojeného seznamu obsahující ukazatele na předchůdce a následníka.
Praktický příklad: pokud máme frontu čekajících procesů, metoda into přidá proces na konec, out ho odstraní, follow a precede umožňují vkládat relativně k jinému prvku.
Tabulka: srovnání operací Link vs Head
| Úkon | Link | Head |
|---|---|---|
| Vložit prvek na konec | into(S) | -- (Head příjímá prvky přes Link.into) |
| Odebrat prvek | out | clear (odebere všechny) |
| Zjistit první/poslední | pred/suc | first / last |
| Kontrola prázdnosti | kontrola null | empty |
Třída Random poskytuje metody pro generování pseudonáhodných čísel pro různá rozdělení. Je možné použít seed pro reprodukovatelnost.
Definice: Random je nástroj pro generování pseudonáhodných čísel se základními rozděleními (uniformní, normální, Poisson, atd.).
Hlavní rozhraní (vybrané metody):
Praktické použití:
Třída Coroutine poskytuje nízkoúrovňové nástroje pro modelování spolupracujících vlákonapodobných entit (korutiny) — umožňuje přepínání řízení mezi kontexty bez použití skutečných vláken JVM.
Definice: Coroutine je lehký m
Už máš účet? Přihlásit se
Klíčová slova: Diskrétní simulace, Java simulace
Klíčové pojmy: Linkage má SUC a PRED reference, Link.into(S) vloží prvek na konec seznamu S, Head.first / Head.last vrací okrajové prvky seznamu, Head.cardinal vrací počet prvků, Head.empty kontroluje prázdnotu, Random(seed) umožňuje reprodukovatelné posloupnosti, Random.negexp(lambda) generuje doby mezi příjezdy, Process.actions definuje chování procesu, Process.activate / reactivate plánují proces v SQS, hold/passivate zastavují aktivní proces, current() vrací právě běžící proces, resumeCurrent interně předává řízení ze SQS, SQS obsahuje naplánované události a jejich časy