jazyk dsi
DESCRIPTION
Jazyk DSI. Simulační objekty. Aktivity Fronty Pooly Vyhybky Jméno objektu: max 20 znaků, začíná písmenem, obsahuje jen písmena a číslice, odlišné od klíčových slov. Popis entity (poolu). e ntity < jmeno > ; entity < jmeno > attrib < jmeno >,… : typ ; < jmeno >,… : typ ; end; - PowerPoint PPT PresentationTRANSCRIPT
Jazyk DSI
Simulační objekty
• Aktivity• Fronty• Pooly• Vyhybky– Jméno objektu: max 20 znaků, začíná písmenem,
obsahuje jen písmena a číslice, odlišné od klíčových slov
Popis entity (poolu)
entity <jmeno> ;
entity <jmeno> attrib <jmeno>,… : typ; <jmeno>,… : typ;end;
Typy atributů: int, real, bool, str (max 20 znaků)
Příklad popisu entit
entity Zakaznik;
entity Prodavac attrib jmeno:str:20; cislo:int; obedval: bool; snidal, svacil: bool:5;end;
Popis aktivityactivity <jmeno> channels <cislo> load [<cislo><jmeno entity> from <fronta|pool>]* [compute <prikaz jayzka Pascal> ::] after <vyraz typu Real> :: eject [<jmeno entity> to <fronta|vyhybka|pool>]end;
Poznámky k popisu aktivity
• channels 0 znamená neomezený počet kanálů obsluhy.
• Je-li uvedena část compute, provede se daný výpočet na začátku práce aktivity
• Klauzulí after může být i více
Příklad popisu aktivity
Activity PlaceniUPokladny channels 3 load 1 Prodavac from Prodavaci 1 Zakaznik from qZak 1 Kosik from qKosiky compute Prodavac^.unava:=Prodavac^.unava+1 after Prodavac^.unava+4 eject Kosik to qKosiky after Prodavac^.unava+5 eject Zakaznik to pool,Prodavac to Prodavaciend;
Popis fronty
queue <jmeno> of <jmeno entity> <rezim> [signal to <aktivita>,<aktivita,…]• Frontové režimy– Fifo– Lifo– Random– Prior <atribut> (čím menší hodnota, tím dříve)
Klauzule signal to
• Je-li uvedena, předávají se signály následujícím simulačním objektům v uvedeném pořadí.
• Předání signálu ovlivňuje pořadí spouštění aktivit.
• Není-li uvedena, je předávání signálů náhodné
Popis vyhýbky
Switch <jmeno> for <entita> [case <logicky vyraz> :: <fronta|vyhybka|pool>]* otherwise <fronta|vyhybka|pool>
Vyhýbka
• Podmínky se vyhodnocují v pořadí shora dolů• Část otherwise je povinná (i když občas ze
sémantického hlediska nemůže nastat)• Někdy je vhodné před vyhýbku zařadit aktivní
prvek (aktivitu) s krátkou, nebo nulovou dobou trvání a v její části compute provést rozhodovací algoritmus
Segmenty jazyka Pascal
declarations <deklarace typu a promennych>::on start <prikaz> ::on write <prikaz>::
Část declarations
• Umožňuje definovat globální proměnné použitelné ve všech simulačních objektech
• Umožňuje definovat vlastní procedury a funkce (například generátor pseudonáhodných čísel s nějakým nestandardním rozložením)
Část on start
• Popíše činnosti, které se mají provést na začátku simulace systému
Část on write
• Popíše činnosti, které se mají provést ihned po spuštění řídícího příkazu write (například lze naprogramovat výpis vlastních složitějších statistik)
• Výstupní protokol je definován jako textový soubor s jménem FOU.
Generování pseudonáhodných čísel
• Random – rovnoměrné rozdělení od 0 do 1• Uniform(a,b) – rovnoměrné rozdělení od a do b• NegExp(strhodnota) – exponenciální rozdělení• Normal(strhodnota,rozptyl) – normální• intUniform(i,j) – celočíselné rovnoměrné
rozdělení od i do j
Standardní funkce
• Time – modelový čas• contents (q) – počet entit ve frontě• BusyChannels(a) – počet obsazených kanálů v
aktivitě• hasFreeChannels(a) – má aktivita volný kanál?
(logická hodnota)
Počáteční stav front (Příkaz v inicializačním souboru)
queue <fronta> <pocet>
queue <fronta> [entity <atribut> <hodnota>
<atribut> <hodnota> … //]* end
Inicializace generátorů náhodných čísel
• radomize <cislo>• randomize time• Není-li uvedeno, inicializuje se generátor
hodnotou určenou ze systémového času, ta je zapsána do výstupního protokolu
Řízení simulace
• step• steps <pocet kroku>• next <delka casoveho intervalu>• till <cas preruseni simulace>
Ladicí informace
• debug on• Debug off
• Do protokolu se zapisuje velmi podrobný a velmi dlouhý výpis o činnosti systému
Výpis stavu systému
• show – výpis na obrazovku• write – zápis do protokolu (soubor *.out)
Řízení simulace
• menu – vyvolá interaktivní menu• file – předá řízení inicializačnímu souboru• quit – ukončení simulace• Klávesa Esc – přerušení simulace
• Pokud soubor *.ini neexistuje, nebo v něm není další vykonatelný příkaz, předá se řízení interaktivnímu menu.