Sunteți pe pagina 1din 6

1. Introducere n GPSS Orice program GPSS const dintr-o secven de instruciuni de control sau executabile.

Instruciunile executabile sau blocurile descriu logica fluxului tranzaciilor prin sistemul simulat. Dac blocurile reprezint componenta fix, tranzaciile sunt componenta mobil din sistem(clieni care sunt servii). Cnd o tranzacie intr ntr-un anumit bloc, el acioneaz asupra acelei tranzacii. Spre deosebire de blocuri, instruciunile de control fixeaz anumite condiii iniiale i definete cadrul n care va avea loc simularea. Acestea se mpart n mai multe categorii: entiti de ehipament (definesc sistemele de servire ); entiti de calcul (definesc funcii, expresii aritmetice); entiti de refereniere (locaii de memorie unde se pstreaz anumite informaii); entiti statistice (cu ajutorul lor se determin statistici ale diferitelor entiti). Strucura unei instruciuni GPSS. O instruciune GPSS are 4 cmpuri: cmpul etichet, cmpul operator, cmpul operand, cmpul de comentariu. Cmpurile unei instruciuni sunt separate prin unul sau mai multe spaii. Cmpul de comentariu este separat de celelalte cmpuri prin caracterul ; . Orice program GPSS ncepe cu instruciunea SIMULATE care nu are parametri. Ea are ca scop compilarea programului GPSS carei urmeaz. Este obligatorie prezena ei la nceputul programului. Generarea tranzaciilor se face cu ajutorul blocului GENERATE, care definete modul de injectare al tranzaciilor n sistem (mecanismul de generare a sosirilor). Sintaxa ei are forma: GENERATE A, B, C, Operandul A conine media intervalului dintre dou generri de tranzacii consecutive. Valoarea lui implicit este 0 care implic faptul c numrul de tranzacii care vor intra in sistem este nedefinit. Operandul B indic abaterea de la medie a timpului dintre dou tranzacii consecutive. Valoarea lui implicit este 0 care implic generatrea de tranzacii la intervale de timp egale. Dac M este media, iar abaterea atunci timpul dintre dou tranzacii consecutive este cuprins n intervalul (M-, M+ ) i evident M. Operandul C specific valoarea timpului cnd se genereaz prima tranzacie. Poate lipsi i n acest caz se determin n funcie de valoarea operanzilor A i B. Ceilali operanzi vor fi specificai atunci cnd vor fi utilizai. Blocul TERMINATE scoate tranzaciile din sistem. Are un singur operand A, ce conine o valoare ntreag prin care se decrementeaz acel cod de terminare definit n blocul START i acel cod pe baza cruia se lanseaz ieirile standard.; valoarea lui implicit este 0. Sub GPSS World, blocul START este selectat dintr-o fereastr care permite definirea numrului de tranzacii. Structura gerneral a unui program este prezentat n figura 1.1 Inializri, Definiii GENERATE .. TERMINATE Segment 1

GENERATE .. TERMINATE

Segment k

Figura 1.1. Structura unui program GPSS 2. Blocuri de servire Faciliti i blocurile SEIZE i RELEASE. Facilitatea este un sistem de servire cu o singur staie (CPU a unui sistem de calcul cu un singur processor, o cas de bilete, un telefon public etc.) Observaii. 1. Fiecare facilitate trebuie s aib un identificator unic. 2. Orice facilitate poate fi liber sau ocupat (stri de baz). Mai sunt stri speciale (starea de evacuare etc.), despre care vom discuta n prezentarea unor blocuri care gestioneaz astfel de stri. SEIZE este blocul prin care o tranzacie solicit o anumit facilitate; dac faciliatea este liber, ea este acordat tranzaciei respective, altfel aceasta va ateapta n blocul ei curent pn cnd se elibereaz facilitatea cerut. n momentul eliberrii, ea va servi una dintre tranzaciile care au solicitat-o, astfel: - dac tranzaciile au fost mprite n clase de prioriti, dintre cele care au prioritatea cea mai nalt, este selectat cea care ateapt de cel mai mult timp; - dac toate tranzaciile au aceeai prioritate se aplic regula FIFO. RELEASE este instruciunea dual. Ea elibereaz o facilitate ocupat de o anumit tranzacie. Ambele instruciuni au un singur operand A, care este identificatorul facilitii cerute, respectiv eliberate de acea tranzacie. Generarea timpului de servire este realizat cu ajutorul blocului de ntrziere ADVANCE. Cnd o tranzacie intr ntr-un bloc ADVANCE, este pstrat n acest bloc pentru un interval de timp specificat cu ajutorul operanzilor A i B ai blocului respectiv. Operandul A specific media intervalului de timp de staionare n acest bloc. Valoarea implicit este 0. Operandul B specific deviaia de la medie(implicit 0). Blocul ADVANCE ntrzie naintarea unei tranzacii pentru o perioad specificat de timp de simulare. Acest interval de timp se poate calcula n diferite moduri. Dac este specificat doar operandul A, este evaluat i va fi valoarea intervalului de timp. Dac sunt prezeni ambii operanzi i B nu este specificat printr-o funcie, ambele sunt evaluate numeric i este generat aleator un numr din intervalul A-B i A+B. Un bloc ADVANCE calculeaz timpul de ntrziere, l adaug la valoarea ceasului i plaseaz intrarea tranzaciei n lanul de evenimente viitoare (FEC), despre care vom discuta n capitolul urmtor. Exemplu: ADVANCE 101.6,50.3

Timpul de ntrziere este generat aleator ntre 51.3 i 151.9, inclusiv i ntrzie tranzacia pentru acel interval de timp. Cozile la faciliti. Blocurile QUEUE i DEPART. Atunci cnd una sau mai multe tranzacii ateapt pentru a obine o facilitate ocupat de o tranzacie, sistemul GPSS definete n mod implicit o coad la aceast facilitate, n care sunt puse tranzaciile n ateptare. Sunt situaii cnd ne intereseaz anumite informaii(statistici) legate de ateptarea la facilitatea respectiv (timpul mediu de ateptare, numrul mediu de tranzacii care au ateptat pentru a fi servite etc). n acest caz, intrarea i ieirea din coad la facilitatea respectiv trebuie declarate explicit. Lucrul acesta se face cu blocurile amintite mai sus, care au doi operanzi. Operandul A specific identificatorul cozii n care intr tranzacia respectiv, pentru blocul QUEUE, respectiv din care iese tranzacia, pentru blocul DEPART. Operandul B conine un ntreg pozitiv cu care va fi incrementat(decrementat) un contor asociat cozii respective. Urmtorul exemplu prezint un program GPSS simplu care utilizeaz blocurile prezentate anterior: SIMULATE GENERATE 12,3 ;sosirea clientilor QUEUE COADA ;tranzactia intra in coada SEIZE STATIE ;cere facilitatea DEPART COADA ;iese din coada ADVANCE 10,4 ;timpul de servire RELEASE STATIE TERMINATE 1 Pentru execuia acestui program folosim produsul GPSS world student version; programul (modelul) poate fi editat cu acest produs(se selecteaz File-New-Model) sau poate fi ncrcat ca un fiier salvat anterior cu extensia .gps (File-Open), dup care se lanseaz Command-Create simulation, dup care se revine la Command-Start i se introduce numrul de tranzacii generate ( n exemplul nostru 1000). n urma execuiei corecte a acestui program, se afiez rezultatele simulrii n mod text.
START TIME 0.000 NAME COADA STATIE LABEL LOC 1 2 3 4 5 6 7 ENTRIES BLOCK TYPE GENERATE QUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE UTIL. END TIME 12046.894 BLOCKS 7 FACILITIES 1 STORAGES 0

VALUE 10000.000 10001.000 ENTRY COUNT CURRENT COUNT RETRY 1001 0 0 1001 0 0 1001 1 0 1000 0 0 1000 0 0 1000 0 0 1000 0 0

FACILITY RETRY DELAY

AVE. TIME AVAIL. OWNER PEND INTER

STATIE 0 QUEUE RETRY COADA 0 CEC XN 1001 FEC XN 1002 PRI 0 PRI 0

1001

0.825

9.931

1001

MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME 1 1 1001 ASSEM 1001 ASSEM 1002 679 CURRENT 3 CURRENT 0 0.057 NEXT 4 NEXT 1 0.689 PARAMETER PARAMETER

AVE.(-0) 2.142 VALUE VALUE

M1 12045.266 BDT 12058.373

START TIME este valoarea de nceput a ceasului la nceputul simulrii; END TIME este valoarea ceasului la sfritul simulrii; BLOCKS conine numrul blocurilor; FACILITIES conine numrul facilitilor; STORAGES conine numrul entitilor de acest tip. Observm c sunt prezentate blocurile i numrul de tranzacii care au intrat n fiecare bloc. Ieirile conin i informaii relative la cozi, faciliti etc. Relativ la singura facilitate (FACILITY STATIE) ieirile standard cele mai importante sunt: ENTRIES numrul total de tranzacii servite (cu 1 mai mult dect cele introduse; vom justifica mai trziu acest lucru). UTIL.- coeficientul de utilizare al faciliti. AVE. TIME- timpul mediu de utilizare pe tranzacie (timpul mediu de servire a unui client); observm c media este cuprins n intervalul [10-4,10+4], n concordan cu declaraia din program. Relativ la coada COADA,declarat la facilitate, ieirile standard cele mai importante sunt: ENTRY numrul total al tranzaciilor care intr n coad pe toat durata simulrii. ENTRY(0) numrul total al tranzaciilor ce intr n coad i ies imediat (nu ateapt deloc). AVE.CONT. lungimea media a cozii respective. AVE.TIME - timpul mediu de ateptare n coad (inclusiv cele care au timpul de ateptare 0). AVE.(-0) timpul mediu de ateptare n coad (fr cele care au timpul de ateptare 0). Sisteme cu mai multe staii de servire. STORAGE este o instruciune declarativ prin care se identific sistemul de servire respectiv i se specific numrul de staii de servire. Numele sistemului se specific prin intermediul cmpului de etichet, iar numrul de staii prin singurul operand A. Solicitarea, respectiv eliberarea staiilor de lucru se realizeaz prin blocurile ENTER i LEAVE care conin doi operanzi: Operandul A conine identificatorul entitii de tip STORAGE solicitat, respectiv eliberat.; Operandul B indic numrul de staii de lucru cerute, respectiv eliberate. Exemplu. Presupunem c ntr-un dipensar avem un cabinet unde se fac radiografii, dotat cu un singur aparat, care este deservit de doi tehnicieni. Intervalul dintre dou sosiri consecutive ale pacienilor este o variabil aleatoare uniform cu media 22 i abaterea de la medie 7. Cnd sosete un client se face o operaie pregtitoare a aparatului de ctre un tehnician. Timpul alocat pentru aceast operaie este repartizat uniform avnd media 5 i abaterea 2. Timpul de servire al aparatului este uniform repartizat cu media 15 i deviaia

standard 5. Se cer: media timpului de lucru al fiecrui tehnician, media timpului de utilizare al aparatului, timpul mediu de ateptare al fiecrui client cnd cere un prim tehnician, respectiv un al doilea tehnician i timpul mediu ct ateapt pentru accesul la aparat. Programul GPSS care rezolv aceast problem este prezentat mai jos. SIMULATE XRTECH STORAGE 3 ;Trei tehnicieni GENERATE 22,7 ;Generarea tranzactiilor QUEUE QTECH1 ;Coada la tehnician ENTER XRTECH,1 ;Cere primul tehnician DEPART QTECH1 ;Iese din coada ADVANCE 5,2 ;Timpul cat este servit de primul tehn. QUEUE QTECH2 ;Coada pentru tehnician ENTER XRTECH,1 ;Mai cere un tehnician DEPART QTECH2 ;Iese din coada QUEUE QMACH ;Coada la aparat SEIZE XRMACH ;Cere aparatul DEPART QMACH ;Iese din coada ADVANCE 10,5 ;Timpul de servire la aparat RELEASE XRMACH ;Elibereaza aparatul LEAVE XRTECH,2 ;Elibereaza tehnicienii TERMINATE 1 ;Tranzacia iese din sistem
START TIME 0.000 NAME QMACH QTECH1 QTECH2 XRMACH XRTECH LABEL LOC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTRIES BLOCK TYPE GENERATE QUEUE ENTER DEPART ADVANCE QUEUE ENTER DEPART QUEUE SEIZE DEPART ADVANCE RELEASE LEAVE TERMINATE UTIL. END TIME 1139.286 BLOCKS 15 FACILITIES 1 VALUE 10003.000 10001.000 10002.000 10004.000 10000.000 ENTRY COUNT CURRENT COUNT RETRY 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 50 0 0 STORAGES 1

FACILITY RETRY DELAY

AVE. TIME AVAIL. OWNER PEND INTER

XRMACH 0 QUEUE 0) RETRY QTECH1 0.000 0 QTECH2 0.000 0 QMACH 0.000 0 STORAGE RETRY DELAY XRTECH 0 FEC XN 51 PRI 0

50

0.432

9.849

0 AVE.(-

MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME 1 1 1 0 0 0 50 50 50 50 50 50 0.000 0.000 0.000 ENTRIES AVL. 100 CURRENT 0 1 NEXT 1 0.000 0.000 0.000

CAP. REM. MIN. MAX. 3 3 0 ASSEM 51 3

AVE.C. UTIL. 1.092 PARAMETER 0.364 VALUE 0

BDT 1144.997

Semnificaia ieirilor este asemntoare cu cea prezentat la modelul anterior. Ieirile standard ale entitilor STORAGE sunt: CAP.(Capacity) numrul de staii disponibile; REM.- numrul de staii neutilizate la sfritul; MIN. -numrul minim de staii utilizate pe perioada simulrii; MAX. - numrul maxim de staii utilizate pe perioada simulrii; ENTRIES - numrul de "intrri" n entitatea Storage pe perioada simulrii; AVL.- Starea de disponibilitate a entitii Storage la sfritul simulrii; 1 nseamn disponibil, 0 nedisponibil; AVE.C.(Average Contents) media ponderat a numrului de componente utilizate UTIL.(Average Utilization )media timpului de utilizare a staiiilor.