Zadání projektu SNT 2023/24
Cíl
Cílem projektu je:
- implementovat knihovnu (ve zvoleném jazyce) pro diskrétní modelování a simulaci založenou na událostech (tj neuvažujeme přepínání procesů),
- s pomocí knihovny implementovat demonstrační příklad/model systému hromadné obsluhy.
Transakce (proces) v událostně řízené simulaci
Uvažujme třídu Process s interním atributem "int state" vyjadřujícím stav procesu (proces se nachází ve stavu 0, 1, 2, atd). Chování procesu je rozděleno do obsluhy jeho chování v jednotlivých stavech (např. proces vznikl, proces vystoupil z fronty, proces dokončil čekání, ...).
class Process {
int state = 0;
// aktivace procesu
void Behavior() {
switch (state) {
case 0:
// znovu aktivuj za 10 casovych jednotek
// proces se dostane do stavu "1"
Wait(10, 1)
break;
case 1:
// dokonceno Wait(10). Naplanuj dalsi akci zabrani linky F. Pokud
// je linka volna, zaber ji a naplanuj dalsi akci
// pokud byla linka zabrana, pak je proces umisten do fronty a bude jednou reaktivovan do stavu "2"
if (F.Seize(this, 2) == true) {
// naplanuj do stavu "2", pripadne rovnou proved akci spojenou se stavem "2"
Activate(2);
}
break;
case 2:
// mam linku, zapocni praci ...
}
}
}
Funkce knihovny simulátoru
Knihovna nechť obsahuje:
- podporu pro specifikaci záznamů o naplánovaných událostech (aktivace procesu do zadaneho stavu)
- algoritmus řízení simulace Next-Event
- podporu pro obslužnou linku Facility a fronty
- generátory pseudonáhodných čísel (rovnoměrné rozložení, exponenciální, normální)
- statistiky front, obslužných linek (počet přístupů, doby čekání, využití linky)
Demonstrační příklad
Systém hromadné obsluhy s generováním transakcí. Nejméně dvě obslužné linky (F1, F2, ...). Transakce přistoupí (postupně) ke všem linkám (obsluha na první lince, pak na druhé, atd).
Technická zpráva
Zpráva nechť obsahuje:
- popis knihovny
- popis modelu
- demonstraci funkčnosti modelu
Link to this Page
- projekty-SNT last edited on 28 February 2024 at 5:03 pm by localhost