Master's Thesis

Discrete Simulation Library for C++

Final Thesis 1.58 MB

Author of thesis: Bc. Alexej Beňuš

Acad. year: 2025/2026

Supervisor: Dr. Ing. Petr Peringer

Reviewer: Ing. Martin Hrubý, Ph.D.

Abstract:

This thesis presents the design and implementation of a C++ library for discrete-event simulation. The library supports both process-oriented and event-oriented modelling and uses C++20 coroutines to implement lightweight simulation processes that can be suspended and resumed without using operating-system threads. The implementation includes resources, probability distributions, statistics collection, and interchangeable event calendar structures. Special attention is given to the pending event set, which is one of the central data structures in a discrete-event simulator. Several calendar implementations are provided, including simple structures based on standard C++ containers and specialized structures such as Calendar Queue, SNOOPy Calendar Queue, and FELT Calendar. The library is evaluated using correctness tests, calendar benchmarks, portability tests, and comparisons with SIMLIB/C++. The results show that the suitability of a calendar structure depends on the workload size and timestamp distribution. The comparison with SIMLIB also shows that runtime performance depends strongly on the selected benchmark: SIMLIB is faster in the resource-contention benchmark, while the implemented simulator performs better in the process-delay benchmark with distributed arrivals. In the tested large-process workloads, the implemented simulator also used less memory than SIMLIB.

Keywords:

C++, discrete-event simulation, simulation library, process-oriented simulation, coroutines, event calendar, Calendar Queue, SNOOPy, FELT, SIMLIB

Date of defence

25.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaDznamka

Grading

D

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky přítomných, např. k obsahu některých slajdů prezentace u SZZ, začlenění korutin do výsledného řešení či formátu zápisu maker. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm D - uspokojivě.

Language of thesis

English

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Intelligent Devices (NIDE)

Composition of Committee

doc. Ing. František Zbořil, CSc. (předseda)
doc. Ing. Vladimír Janoušek, Ph.D. (místopředseda)
Ing. Martin Hrubý, Ph.D. (člen)
Ing. Jaroslav Rozman, Ph.D. (člen)
Dr. Ing. Petr Peringer (člen)
Ing. Tomáš Goldmann, Ph.D. (člen)

Supervisor’s report
Dr. Ing. Petr Peringer

Aktivita studenta byla téměř po celou dobu řešení projektu podprůměrná, podrobnější detaily prakticky nekonzultoval. Výsledek je tím negativně ovlivněn - chybí mi především některé základní vlastnosti (například priority plánovaných událostí). Vzhledem k výše uvedeným problémům navrhuji jen podprůměrné hodnocení stupněm D

Evaluation criteria Verbal classification
Informace k zadání

Zadání této diplomové práce není složité - vyžaduje získat přehled o možnostech implementace diskrétních simulačních systémů a vytvořit na jejich základě experimentální implementaci s cílem použít vlastnosti moderního C++ v této oblasti (především korutiny pro implementaci procesů). Zadání je na základní úrovni splněno, navíc je v práci více implementací kalendáře událostí, než jsem požadoval. Celkově jsem ale očekával lepší výsledky.

Aktivita při dokončování

Text byl dokončován na poslední chvíli. První nekompletní verzi jsem viděl 12 dnů před termínem odevzdání a druhou 3 dny před termínem.  Některé moje připomínky byly do textu zapracovány, ale  podle mého názoru by text vyžadoval ještě několik iterací.

Publikační činnost, ocenění

-

Práce s literaturou

Kromě předepsané literatury si student vyhledával zdroje samostatně.

Aktivita během řešení, konzultace, komunikace

Konzultace byly pouze 2 za celý letní semestr. Další komunikace probíhala přes e-mail, ale nepříliš často (jen 4 e-maily za únor--duben). Přístup studenta v tomto směru hodnotím jako podprůměrný.

Points proposed by supervisor: 60

Grade proposed by supervisor: D

Reviewer’s report
Ing. Martin Hrubý, Ph.D.

Tato diplomová práce je dle mého názoru tragicky odbytá. DEVS je zmíněn formálně a zcela bez návaznosti na koncepci knihovny. Diplomantova knihovna je nepodařenou kopií knihovny SIMLIB v oboru diskrétní simulace. Přináší alespoň dva experimenty, které bych doporučil diplomantovi vyzdvihnout v jeho obhajobě: 1) rozbor vhodnosti použití různých kalendářových datových struktur ve vztahu k charakteru modelu (u jakých modelů se vyplatí volba konkrétní implementace kalendáře), 2) komentář k integraci coroutines do syntaxe simulačního modelu. Dle mého názoru použití coroutines kazí čitelnost modelů.

Evaluation criteria Verbal classification Points
Rozsah splnění požadavků zadání

Evaluation level: zadání splněno pouze částečně s vážnějšími výhradami

Ke splnění zadání mám několik výhrad:

  1. Zadání (dle mého názoru) očekává nějakou inspiraci DEVSem. K tomu nedošlo v žádném ohledu.
  2. Zadání přikazuje směrovat knihovnu do aplikace na Systémy hromadné obsluhy. Řešení je zde ubohé. Chybí zcela koncept priorit, tudíž nelze transakce plnohodnotně řadit do front. Fronta jako koncept je zde nekoncepčně řešena. Fronty nelze kombinovat, neboť jsou zadrátovány do objektů obslužných linek. Implementace statistik je nekoncepční.
  3. Zadání ukládá demonstrovat knihovnu na 20 příkladech. Ty jsou velmi stručně dokumentovány v příloze. Žádný jejich rozbor. Žádné výstupy z experimentů. Příklady jako ověření funkce knihovny neplní svůj účel.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Prezentační úroveň technické zprávy

V kapitolách 2 a 3 se nachází formální popis DEVS. Zcela bez jakéhokoli vztahu k výsledné práci. Technická zpráva se nijak nezabývá konceptem Systémů hromadné obsluhy. Diplomant alespoň kladl větší důraz na různé implementace datové struktury pro kalednář událostí. Tomu věnuje i větší část experimentování. Run-time výkonnost simulátorů je významná, ale rozhodně je významnější postavit čitelnou syntaxi zápisu simulačních modelů, která v této DP vyšla dost rozpačitě.

60
Formální úprava technické zprávy 80
Práce s literaturou 70
Realizační výstup

Zdrojové texty nejsou příliš komentované. Naprosto nevhodně je do knihovny integrován sběr a správa statistik. Zcela bez koncepce. 

60
Využitelnost výsledků

Neočekávám.

Náročnost zadání

Evaluation level: méně obtížné zadání

U tohoto zadání předpokládám záměr vytvořit procesně orientovanou simulační knihovnu inspirovanou DEVSem. Výsledek si bohužel z koncepce DEVS nevzal vůbec nic. Práci interpretuji jako velmi zjednodušenou a omezenou re-implementaci knihovny SIMLIB. Inovace spočívá v integraci coroutines.

Points proposed by reviewer: 50

Grade proposed by reviewer: E

Responsibility: Mgr. et Mgr. Hana Odstrčilová