1 / 23

Jazyk DSI

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;

lydie
Download Presentation

Jazyk DSI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Jazyk DSI

  2. 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

  3. Popis entity (poolu) entity<jmeno> ; entity <jmeno> attrib <jmeno>,… : typ; <jmeno>,… : typ; end; Typy atributů: int, real, bool, str (max 20 znaků)

  4. Příkladpopisuentit entity Zakaznik; entity Prodavac attrib jmeno:str:20; cislo:int; obedval: bool; snidal, svacil: bool:5; end;

  5. Popis aktivity activity<jmeno>channels<cislo> load [<cislo><jmeno entity> from <fronta|pool>]* [compute <prikazjayzka Pascal> ::] after <vyraztypu Real> :: eject [<jmeno entity> to <fronta|vyhybka|pool>] end;

  6. 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

  7. 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 Prodavaci end;

  8. Popisfronty 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)

  9. 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é

  10. Popis vyhýbky Switch<jmeno> for <entita> [case <logickyvyraz> :: <fronta|vyhybka|pool>]* otherwise <fronta|vyhybka|pool>

  11. 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

  12. Segmenty jazyka Pascal declarations<deklaracetypu a promennych>:: on start <prikaz> :: on write <prikaz>::

  13. Čá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)

  14. Část on start • Popíše činnosti, které se mají provést na začátku simulace systému

  15. Čá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.

  16. 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

  17. 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)

  18. Počáteční stav front (Příkaz v inicializačním souboru) queue<fronta> <pocet> queue <fronta> [entity <atribut> <hodnota> <atribut> <hodnota> … //]* end

  19. Inicializacegenerá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

  20. Řízení simulace • step • steps<pocetkroku> • next <delkacasovehointervalu> • till <casprerusenisimulace>

  21. Ladicí informace • debug on • Debugoff • Do protokolu se zapisuje velmi podrobný a velmi dlouhý výpis o činnosti systému

  22. Výpis stavu systému • show – výpis na obrazovku • write – zápis do protokolu (soubor *.out)

  23. Ří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.

More Related