Sunteți pe pagina 1din 2

Metoda Canonica

Metoda canonica este o tehnica de realizare a modelelor de simulare care poate fi implementata intr-un program de simulare indiferent de metoda utilizata (programarea evenimentului, scalarea activitatilor sau interactiunii proceselor). Metoda canonica presupune 2 etape: 1. Definirea modelului 2. Crearea specificatiilor 1. Presupune identificarea obiectelor si entitatilor din sistem si a atributelor acestora. Pentru un sistem de tipul ./.1 (/FIFO) Obiectele si atributele sunt urmatoarele: Obiect Sistem Generator cereri Statia de servire Siruri de asteptare Atribute Ceas sistem <- indica momentul curent al simularii Repartitia intervalelor intre sosiri, numarul cererilor sosite (numar total cereri) Repartitia duratelor de servire starea ei (libera, accepta) Lungimea sirului

Fiecare obiect se creaza in functie de structura sistemului iar atributele se pot extinde pentru fiecare obiect in functie de elementele de calcul care sunt necesare. 1. Dinamica modelului d esimulare este asigurata din interactiunea unor perechi succesive de tipul conditie actiune. Conditiile reprezinta expresii logice care includ obiectele si atributele acestora si eventual functiile primitive in ALARM si SET ALARM. Orice model contine obligatoriu 2 conditii: - initializare care se executa doar la inceputul programului. - terminale care se executa la finalul programului si care este dependenta de timp sau de starea sistemului sau de o combinatie a acestora. Actiunile reprezinta instructiunile care se executa in urma indeplinirii unor conditii. Exista 5 clase de actiuni: 1. 2. 3. 4. 5. Modificarea valorii unei actiuni Apelarea altei actiuni Generarea sau eliminarea altui obiect Comunicarea cu mediul extern prin preluarea si calculul unei valori Incheierea simularii

Functie primitiva Obiect.atribut = valoare SET ALARM (nume alarma, moment, parametrii) WHEN ALARM (nume alarma) AFTER ALARM (nume alarma, parametrii) CANCEL ALARM (nume alarma) CREATE (object) DESTROY (obiect) INPUT (variabile) OUTPUT

Rol Calculeaza o anumita valoare pentru un atribut al unui obiect. Ex (cresterea lungimii unui sir cu o unitate) sir.lungime = sir.lungime + 1 Rolul acesteia este de a crea o alarma la un anumit moment sau dupa un anumit interval de timp. Prin aceasta se indica sistemului la acel moment de timp se va indeplini o anumita conditie si trebuie declansata o actiune Declanseaza o actiune consecutiva alarmei respective Are rol de a declansa alte actiuni dupa indeplinirea alarmei respective. Are rolul de a anula o alarma deja existenta Creaza un obiect din sistem. Distruge un obiect Preia variabilele din exteriorul sistemului Transfera in exterior valorile variabilelor respective

Conditiile si actiunile se grupeaza in tranzitii care sunt asemanatoare procedurilor complexe din programul de simulare. Pentru sistemul de tipul ././1: (/FIFO) tranzitiile care descriu evenimentele sistemului sunt urmatoarele: Initializare { CREATE (statie) CREATE(sir) INPUT (intensitate sosire, intensitate servire) statie.stare = liber sir.lungime = 0 generator.nr.cereri sosite = 0 } Sosire cerere { WHEN ALARM (sosire) sir.lungime = sir.lungime + 1 SET.ALARM (sosire, AT) } nota: crearea in SET>ALARM are rolul de a stabili urmatoarele momente cand va intra in sistem o noua cerere. In acest mod orice cerere sosita va initia sau va determina sosirea urmatoarelor cereri. Incepere servire { IF sir.lungime = 0 AND statie.stare = liber sir.lungime = sir.lungime 1 statie.stare = ocupata SET ALARM (terminare servire, ST) }

S-ar putea să vă placă și