Sunteți pe pagina 1din 167

UNIVERSITATEA TRANSILVANIA DIN BRAOV

Centrul de nvmnt la Distan


i nvmnt cu Frecven Redus
FACULTATEA DE MATEMATIC I INFORMATIC
PROGRAM DE LICEN: INFORMATIC

Modele de simulare computaional


CURS PENTRU NVMNT LA DISTAN

AUTORI: Conf. Dr. Ion Florea

ANUL III
2012-2013

CUPRINS
Introducere ............................................................................................................................. 4
Modulul 1: Implementarea fenomenului aleator n informatic ............................... 7
M1.U1.1. Introducere ................................................................................................................ 7
M1.U1.2. Obiectivele unitii de nvare ................................................................................. 7
M1.U1.3. Generarea numerelor aleatoare ................................................................................ 7
M1.U1.4. Generarea variabilelor aleatoare prin metoda invers ........................................... 11
M1.U1.5. Generarea variabilelor aleatoare normale bazate pe probe .................................... 14
M1.U1.6. Generarea variabilei normale pe baza teoremei de limit central......................... 18
M1.U1.7. Metoda respingerii .................................................................................................. 19
M1.U1.8. Metoda descompunerii............................................................................................ 21
M1.U1.9. Rezumat .................................................................................................................. 22

Modulul 2: Modelarea i simularea sistemelor de ateptare


U1. Modelarea i simularea sistemelor de ateptare cu o singur staie de servire ......... 24
M2.U1.1. Introducere ............................................................................................................... 24
M2.U1.2. Obiectivele unitii de nvare ................................................................................ 25
M2.U1.3. Modelul exp()/exp()/1:(,FIFO) ....................................................................... 25
M2.U1.4. Simularea sistemelor de ateptare cu diciplina de servire primul-sosit-primulservit ......................................................................................................................................... 30
M2.U1.5. Simularea sistemelor de ateptare cu diciplina de servire head-of-line................... 32
M2.U1.6. Simularea sistemelor de ateptare cu evacuarea clientului servit .......... ..................35
M2.U1.7. Test de evaluare a cunotinelor............................................................................... 39
M2.U1.8. Rezumat ................................................................................................................... 41
U2. Modelarea i simularea sistemelor de ateptare cu numr constant de staii de
servire paralele, cu coad la toate staiile ........................................................................... 40
M2.U2.1. Introducere ............................................................................................................... 42
M2.U2.2. Obiectivele unitii de nvare ................................................................................ 43
M2.U2.3. Modelul exp()/exp()/c:(,FIFO) ........................................................................ 43
M2.U2.4. Algoritmul de simulare pentru modelul cu disciplina primul-sosit-primul-servit... 49
M2.U2.5. Simularea sistemelor cu numr constant de staii paralele de tip head-of-line........ 50
M2.U2.6. Simularea sistemelor cu numr constant de staii paralele cu evacuarea
clientului servit......................................................................................................................... 54
M2.U2.7. Teste de evaluare ..................................................................................................... 55
M2.U2.8. Rezumat ................................................................................................................... 55
U3. Modelarea i simularea sistemelor de ateptare cu numr variabil de staii de
servire paralele ....................................................................................................................... 61
M2.U3.1. Introducere ............................................................................................................... 61
M2.U3.2. Obiectivele unitii de nvare ................................................................................ 62
M2.U3.3. Algoritmul de simulare pentru sistemul cu disciplina primul-sosit-primul-servit... 62
M2.U3.4. Algoritmul de simulare pentru sistemul cu disciplina head-of-line......................... 65
M2.U3.5.Algoritmul de simulare pentru sistemul cu evacuarea clientului servit.................... 68
M2.U3.6. Teste de evaluare a cunotinelor............................................................................. 72
M2.U3.7. Rezumat ................................................................................................................... 72

U4. Modelarea i simularea sistemelor de ateptare cu coad la fiecare de servire ........ 68


M2.U4.1. Introducere ............................................................................................................... 74
M2.U4.2. Obiectivele unitii de nvare ................................................................................ 75
M2.U4.3. Simularea sistemelor cu staii de acelai tip ........................................................... 75
M2.U4.4. Simularea sistemelor cu staii de tipuri diferite .......... ...........................................76
M2.U4.5. Teste de evaluare a cunotinelor ............................................................................. 86
M2.U4.6. Rezumat ................................................................................................................... 88

Modulul 3: Limbajul de simulare GPSS


U1. Concepte introductive ale limbajului GPSS ................................................................. 90
M3.U1.1. Introducere ............................................................................................................... 90
M3.U1.2. Obiectivele unitii de nvare ................................................................................ 90
M3.U1.3. Generarea tranzaciilor............................................................................................. 90
M3.U1.4. Blocuri de servire..................................................................................................... 91
M3.U1.5. Miscarea tranzaciilor .............................................................................................. 96
M3.U1.6.Generatorii de numere aleatoare in GPSS ................................................................ 98
M3.U1.7. Teste de evaluare a cunotinelor............................................................................. 98
M3.U1.8. Rezumat ................................................................................................................... 99
U2. Expresii, funcii, parametrii tranzaciilor i statistici GPSS ..................................... 100
M3.U2.1. Introducere ............................................................................................................. 100
M3.U2.2. Obiectivele unitii de nvare .............................................................................. 100
M3.U2.3. Expresii GPSS ....................................................................................................... 101
M3.U2.4. Funcii predefinite GPSS pentru generarea unor variabile aleatoare..................... 103
M3.U2.5. Parametrii tranzaciilor, blocul ASSIGN ............................................................... 106
M3.U2.6. Variabile globale (savevalue) ............................................................................ 107
M3.U2.7. Instruciunea TABLE i blocul TABULATE........................................................ 109
M3.U2.8. Teste de evaluare a cunotinelor........................................................................... 110
M3.U2.9. Rezumat ................................................................................................................. 111
U3.Controlul micrii tranzaciilor .................................................................................... 112
M3.U3.1. Introducere ............................................................................................................. 112
M3.U3.2. Obiectivele unitii de nvare .............................................................................. 112
M3.U3.3. Blocul Transfer................................................................................................. 112
M3.U3.4. Blocul TEST .......................................................................................................... 113
M3.U3.5. Blocurile PRIORITY, PREEMPT i RETURN ...................................................... 114
M3.U3.6. Comutatori logici. Blocurile LOGIC i GATE....................................................... 116
M3.U3.7. Blocul SELECT .................................................................................................... 119
M3.U3.8. Test de evaluare a cunotinelor............................................................................. 123
M3.U3.9. Rezumat ............................................................................................................... 124

Modulul 4. Construcia modelelor de simulare


U1. Modele formale de simulare. ........................................................................................ 125
M4.U1.1. Introducere ............................................................................................................. 126
M4.U1.2. Obiectivele unitii de nvare .............................................................................. 126
M4.U1.3. Formalismul DEVS .............................................................................................. 127
M4.U1.4. Construcia modular a modelelor cu structur fix.............................................. 128
M4.U1.5. Conceptul de cadru experimental .......................................................................... 130
M4.U1.6. Construcia modular a reelelor cu structur variabil ......................................... 131
M4.U1.7. Studii de caz ......................................................................................................... 134
M4.U1.8. Test de evaluare a cunotinelor............................................................................. 144
M4.U1.9. Rezumat ................................................................................................................ 145
U2. Simulatoare abstracte pentru modele DEVS.............................................................. 135
M4.U2.1. Introducere ............................................................................................................. 146
M4.U2.2. Obiectivele unitii de nvare .............................................................................. 146
M4.U2.3. Simulatorul abstract ............................................................................................... 146
M4.U2.4. Mecanismul simulrii pentru modele cuplate cu structur fix............................. 151
M4.U2.5. Simularea modelelor n reea cu structur variabil .............................................. 154
M4.U2.6. Studii de caz........................................................................................................... 156
M4.U2.7. Test de evaluare a cunotinelor............................................................................. 161
M4.U2.8. Rezumat ................................................................................................................. 162

Bibliografie ......................................................................................................................... 163


Rspunsuri/Indicaii de rezolvare a testelor de evaluare ................................................. 165

Introducere
Simularea reprezint reproducerea comportrii unui sistem real, folosind un model, n scopul
de a formula anumite concluzii despre sistemul n cauz. Datorit evoluiei informaticii,
simularea digital, adic efectuarea de experimente cu ajutorul calculatorului asupra unui
sistem, reprezint unul din instrumentele principale n studiul sistemelor.
Realizarea modelrii i simulrii unui sistem presupune trei obiecte de baz:
sistemul real, care este privit ca o surs fundamental de date;
modelul, care este mulimea de instruciuni pentru generarea datelor comparabile cu cele ale
sistemului real;
simulatorul, care este un algoritm codificat ntr-un limbaj de programare, care execut
instruciunile modelului.
Nu exist o definiie general a ceea ce este un sistem. Putem spune c un sistem poate avea
una dintre urmtoarele interpretri:
sistemul este o combinaie de unul sau mai multe elemente legate structural ntre ele, care se
influeneaz reciproc;
un sistem este o construcie formalizat, care furnizeaz bazele modelrii sistemului
respectiv.
n concordan cu prima definiie, vom folosi termenul de sistem pentru a desemna o parte a
realitii de care suntem interesai, pentru a o studia i, eventual pentru a o optimiza. La acest
nivel, aspectul cel mai important este c sistemul este format din una sau mai multe
componente care comunic ntre ele. De asemenea, mediul n care se afl sistemul respectiv,
marginile lui, intrrile i ieirile din sistem sunt alte elemente care trebuie s le identificm la
acest nivel. Putem spune c specificarea informal reprezint modalitatea de descriere a
sistemului la acest stadiu. Stabilirea variabilelor descriptive ale componentelor sistemului,
precum i a parametrilor, constituie o alt problem esenial a acestei faze.
Conform celei de-a doua definiii, termenul de sistem este o construcie formal, care
reprezint un model pentru sistemul definit de prima aseriune. Pentru a face deosebire ntre
cele dou noiuni, folosim termenii de sistem real, respectiv sistem dinamic, pentru
conceptul desemnat de prima, respectiv de a doua definiie. Prin comportare a sistemului
nelegem modul cum sistemul respectiv rspunde la intrri, prin ieiri. Starea sistemului
reprezint condiia sistemului la un moment dat, iar dinamica sistemului reprezint modul
cum aceasta se schimb n timp. Cnd starea sistemului este definit de una sau mai multe
variabile, acestea le denumim variabile de stare sau variabilele interne. Variabilele
externe reprezint influena mediului extern asupra sistemului respectiv. Variabilele
sistemului pot avea caracter determinist sau aleator. Caracterul aleator al variabilelor unui
sistem a dus la necesitatea elaborrii unor metode de generare a lor cu ajutorul calculatorului.
Dinamica sistemului este descris de aa numita funcie de tranziie, care specific starea
urmtoare a sistemului, n funcie de intrarea n sistem i de starea acestuia. Modul cum este
realizat tranziia este determinat de ctre funcia de ieire. Conceptul de stare joac un rol
central n descrierea sistemului. Starea reprezint modul de memorare al trecutului sistemului.
Pe baza strii i a mesajului de intrare se determin evoluia lui viitoare. Valorile variabilelor
de ieire depind de variabilele i parametrii de intrare. Dependena este determinat de
structura logic a modelului considerat; o valoare a unei variabile de ieire se obine pe baza
unei relaii funcionale dintre acestea i valorile variabilelor de stare, a celor externe precum i
a parametrilor sistemului.

Structura sistemului este reprezentat de componentele lui, fiecare avnd o anumit stare i
de legturile ntre acestea. Dac fiecare dintre aceste componente este considerat un sistem,
avem un sistem cuplat.
De asemenea, caracterul dinamic al sistemului este dat de evoluia lui n timp. Variabila
ceas indic momentele cnd au loc modificri n starea sistemului. Dac mulimea valorilor
variabilei ceas este izomorf cu mulimea numerelor ntregi, respectiv cu mulime numerelor
reale, avem un sistem discret, respectiv un sistem continuu.
Simularea, poate fi definit i ca o tehnic de realizare a experimentelor cu calculatorul, care
implic construirea unor modele matematice i logice care descriu comportarea unui sistem
real. Simularea trebuie s genereze intrrile i ieirile tinnd seama de strile interne ale
sistemului, prin algoritmi adecvai i s descrie evoluia n timp a strilor interne ale
sistemului. Dei, n general, ofer soluii aproximative, simularea este o tehnic eficient de
cercetare att pentru fenomenele fizice percepute de om, precum si pentru acelea percepute,
dar imposibil de studiat analitic. Necesitatea simulrii rezid i din faptul c, adesea sistemele
reale nu pot fi studiate concret, fie din cauza dificultilor de evaluare cantitativ sau calitativ
a fenomenelor, fie din cauza complexitii acestora(numr mare de variabile de intrare/ieire,
numr mare de stri posibile, complexitatea funciilor care indic comportamentul
sistemului).
Etapele realizarii unui model de simulare sunt prezentate n continuare.
Definirea problemei const n stabilirea obiectivelor simulrii, adic ipotezele care trebuie
testate i efectele care trebuie estimate.
Formularea problemei. Pentru a construi un model de simulare al unui sistem,
componentelor sale li se asociaz variabile i parametri, comportmentul unora dintre acestea
fiind cunoscut (controlabile) pe care le numim variabile i parametri de intrare, iar altele
necontrolabile, pe care le numim variabile de ieire. Interaciunile dintre componentele
modelului sau legturile sistemului cu exteriorul se regsesec sub forma unor relaii
funcionale. Printre variabilele modelului se regsesc i unele care msoar performanele
sistemului, numite i factori de eficien ai acestuia. Construirea unui model matematic de
simulare este o problem central, care va fi prezentat pe larg n ultimul capitol.
Estimarea parametrilor de intrare ai sistemului se realizeaz prin metode statistice,
folosind datele colecionate n prima etap despre sistemul real.
Realizarea unui model matematic de simulare. Evaluarea performanelor modelului i
testarea parametrilor are ca scop verificarea modelului nainte ca el s fie programat. Se
verific dac parametrii de intrare ai modelului au fost bine estimai (folosind testele de
verificare statistic), se verific dac modelul conine toate variabilele i parametrii eseniali
precum i relaiile functionale, necesare reprezentrii sistemului real.
Descrierea algoritmilor de simulare i descrierea programului de calcul se poate face
folosind limbaje de programare universale ( Pascal, C++, Java etc.) sau limbaje specializate
(GPSS, Simula, Simscript, GASP, etc.). Limbajele de simulare specializate fac mult mai
uoar descrierea unui sistem i comportarea lui n timp.
Validarea modelului const n testarea situaiilor n care relaiile matematice ntre
componente sunt uor de verificat; se compar rezultatele obinute prin simulare cu cele
obinute pe cale analitic. De asemenea, o alt metod const n compararea rezultatelor
obinute prin simulare cu datele obinute n cazul unor sisteme asemntoare, sau cu cele care
se pot observa pe cale experimental.
Planificarea experienelor de simulare const n considerarea de valori pentru parametrii i
variabilele de intrare pentru un eantion reprezentativ de valori, care s acopere pe ct este
posibil, situaiile reale n care s-ar putea afla sistemul, n vederea selectrii variantei optime,
care satisface cerinele modelului respectiv.

Analiza simulrii reprezint studiul reaciei sistemului la modificarea valorilor variabilelor


de intrare. Acest lucru se realizeaz prin colecionarea datelor simulate, prelucrarea lor,
calculul factorilor de eficien i interpretarea mrimilor statistice ale modelului.
n primul rnd, cartea se adreseaz studenilor de la programul de studiu Informatic
nvmnt la distan; n acest sens, n redactarea volumului, au fost respectate standardele
nvmntului la distan. De asemenea, cartea poate fi util masteranzilor i tuturor celor
interesati de diverse aspecte ale modelrii i simulrii sistemelor.
Obiectivele cursului
Cursul intitulat Introducere n modelarea i simularea sistemelor are ca obiectiv
principal nsuirea cunotinelor legate de studiul sistemelor prin metode ale
simulrii cu calculatorul. Dup parcurgerea acestui curs, studenii i vor schimba
atitudinea n ceea ce privete studiul sistemelor, facnd o distincie ntre metodele
simulrii i cele analitice tradiionale, studiate n cadrul cursurilor de Cercetri
operaionale i Teoria grafurilor. De asemenea, vor obine abiliti n modelarea i
simularea unor sisteme cu caracter economic, al cror studiu cu ajutorul sistemelor
de calcul a devenit o component esenial a managementului n societile
evoluate. n acest sens, la sfritul acestui curs, studentul va fi capabil s:
 opereze cu noiuni precum: generarea cu calculatorul a numerelor i variabilelor
aleatoare, algoritmi de simulare a sistemelor de ateptare, construcia formal a
modelelor de simulare, limbaje de simulare;
 identifice componentele unui sistem i s descrie un model de simulare;
 realizeze un program de simulare;
explice diferenele dintre un limbaj de programare tradiional i un limbaj de
simulare.
Cerine preliminare.
Studenii trebuie s posede cunotine, deprinderi, abiliti obinute n cadrul
cursurilor de Algoritmic, Programare procedural, Programare orientat pe
obiecte i Cercetri operaionale.
Resurse.
Sisteme de calcul pe care s fie instalate:
un sistem de operare din familia Windows (XP sau Viata);
medii de programare tradiionale (C++, Java);
limbajul de simulare GPSS World (varianta student).
Structura cursului
Cursul este structurat n patru module, astfel: primul modul cuprinde o unite de
nvare, al doilea modul cuprinde patru uniti de nvare, al treilea i al patrulea
modul conin cte trei uniti de nvare. La rndul su, fiecare unitate de nvare
cuprinde: obiective, aspecte teoretice privind tematica unitii de nvare
respective, exemple, teste de evaluare precum i probleme propuse spre discuie i
rezolvare.
Evaluarea va cuprinde att verificarea nsuirii cunotiinelor teoretice prezentate,
ct i utilizarea lor n studiul unor sisteme concrete, prin realizarea de programe de
simulare pentru studiul acestora.

Modulul 1. Implementarea fenomenului aleator n informatic


Cuprins
Introducere ................................................................................................................. 6
Competene......................................................................................................................6
U1. Generarea cu calculatorul a numerelor i variabilelor aleatoare...........................7
Introducere
n multe situaii, variabilele unui sistem sunt aleatoare. Pentru a simula sistemul
respectiv, este necesar s existe modaliti de generare cu calculatorul a unor valori
de selecie ale variabilelor respective. Generarea unor valori numerice n
conformitate cu o anumit repartiie, a reprezentat o preocupare a cercettorilor i
nainte de apariia sistemelor de calcul. Acest lucru s-a realizat prin utilizarea unor
dispozitive fizice. Generatoarele bazate pe dispozitive fizice au cteva dezavantaje
cum ar fi: rezultatele sunt dificil de reprodus, iar funcionarea dispozitivelor poate
fi afectat de evenimente externe. Din acest motiv, dup apariia i dezvoltarea
calculatoarelor, interesul s-a orientat spre metodele de algoritmice.
Simularea unei variabile aleatoare este utilizat frecvent n Statistic (de exemplu
n tehnicile de eantionare), n modelarea stohastic, n implementarea algoritmilor
aleatori (de tip Monte Carlo), n criptografie (generarea aleatoare a unor elemente
ale sistemelor de criptare/decriptare), n testarea programelor i luarea unor decizii
pe baza unor rezultate ntmpltoare.
Metodele de simulare a variabilelor aleatoare cu ajutorul calculatorului nu sunt
perfecte ntruct calculatorul n sine este un dispozitiv determinist, iar majoritatea
metodelor se bazeaz pe secvene deterministe de calcul. Din acest motiv, valorile
generate cu ajutorul calculatorului sunt n realitate "pseudo-aleatoare". n
continuare vom omite calificativul "pseudo" doar pentru simplitate.
Din punct de vedere al modului de proiectare, generatoarele pot fi clasificate n:
- generatoare de numere aleatoare uniform repartizate;
- generatoare de numere aleatoare neuniform repartizate.
De cele mai multe ori generatoarele din a doua categorie se construiesc pe baza
celor din prima categorie.

Competene
La sfritul acestui modul studenii vor fi capabili s:
- explice ce se ascunde n spatele instruciunilor de generare a numerelor
aleatoare pe care le conine fiecare limbaj de programare;
- construiasc un generator de numere aleatoare;
- identifice diferena ntre generarea de numere aleatoare i generarea de
variabile aleatoare;
- nsueasc metodele de generare a variabilelor aleatoare standard;
- implementeze algoritmii prezentai ntr-un limbaj de programare general.

1. Unitatea de nvare M1.U1. Generarea cu calculatorul a


numerelor i variabilelor aleatoare aleatoare
Cuprins
M1.U1.1.
M1.U1.2.
M1.U1.3.
M1.U1.4.
M1.U1.5.
M1.U1.6.
M1.U1.7.
M1.U1.8.
M1.U1.9.

Introducere............................................................................................................ 7
Obiectivele unitii de nvare.............................................................................. 7
Generarea numerelor aleatoare.............................................................................. 7
Generarea variabilelor aleatoare prin metoda invers .......................................... 11
Generarea variabilelor aleatoare normale bazate pe probe......................................14
Generarea variabilei normale pe baza teoremei de limit central..........................18
Metoda respingerii...................................................................................................19
Metoda descompunerii............................................................................................21
Rezumat...................................................................................................................22
M1.U1.1. Introducere
Ce nseamn un numr aleator. Nu se poate spune despre un numr c este
aleator, de exemplu afirmaia numrul 3 este ntmpltor nu are sens. Se poate
vorbi despre un ir de numere aleatoare independente, cu o repartiie de
probabilitate specificat, cnd fiecare numr al irului a fost obinut la ntmplare,
iar el nu este n nici un fel legat de celelalte numere ale irului i, n plus fiecare
numr are o anumit probabilitate de a se afla ntr-un anumit interval.
M1.U1.2. Obiectivele unitii de nvare
Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n generarea cu calculatorul a numerelor aleatoare.
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice algoritmii de generare a numerelor aleatoare.
 neleag i s explice metodele de generare a variabilelor aleatoare.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

M1.U1.3. Generarea numerelor aleatoare


Este incorect a spune c un anumit numr este aleator. Se poate vorbi despre un ir de numere
aleatoare, care sunt valori de selecie ale variabilei aleatoare uniforme. Aceast variabil se
definete astfel: Dac U este o variabil discret uniform, atunci toate valorile ei sunt egal
probabile i dac U este continu, atunci ea admite o densitate de forma:
k , daca x (a, b )
f(x)=
0, daca x (a, b )
de unde rezult c funcia de repartiie uniform este:

0, daca x a
x a

, daca a < x < b


F(x)=
b a
1, daca x b
Dac lum a=0 si b=1 obinem:
0, daca x 0

F(x)= x, daca 0 < x < 1


1, daca x 1

Generatorul de numere aleatoare, prin procedee algoritmice trebuie s ndeplineasc anumite


cerine:
- generatorul trebuie s produc iruri orict de lungi care s nu conin repetiii, adic
generatorul trebuie s aib perioada ct mai mare posibil;
- generatorul trebuie s produc numere independente stochastic unul fa de altul(de fapt
ct mai puin dependente stochastic unul fata de altul);
- generatorul trebuie s produc numere a cror repartiie s fie uniform.
De obicei, generatoarele produc iruri de numere aleatoare cuprinse n intervalul (0,1) sau
dintr-o mulime de numere naturale de forma {0,..., n} . Cele dou modaliti sunt echivalente,
innd cont de faptul c produsul dintre o constant i o variabil aleatoare este o variabil
aleatoare. Dac generm x (0,1) atunci [nx ] (parte ntreag) este un numr din mulimea
{0,..., n} . De asemenea, dac generm un k {0,..., n} , atunci putem genera orice valoare
ntreag sau real, pe baza proprietii c suma dintre o constant i o variabil aleatoare este
o variabil aleatoare.

Un algoritm complicat nu produce obligatoriu numere aleatoare. Un exemplu n acest sens


este ([Knu00] ) metoda prii din mijloc a ptratului (J. von Neumann). S presupunem c
folosim o reprezentare n baza b a numerelor ntregi cu care lucrm(de obicei b=2 sau b=10).
De asemenea, s presupunem c toate aceste numere au 2a cifre; a=1,2,...(cel puin dup
completare cu cifre zero nesemnificative). Fiind dat numr pseudoaleator X n , urmtorul
numr pseudoaleator X n+1 se definete dupa von Neumann ca fiind format din cifrele prii
din mijloc a ptratului lui X n .Astfel ridicnd pe X n la ptrat se obine un numr cu 4a cifre;
X n+1 pote fi exprimat prin:

x n2 x n2 2 a
X n+1 = a 3a b
b b
Este o surs slab de numere aleatoare; de exemplu pentru a=2, b=10 numrul 3792 se
reproduce deoarece 3792 2 =14379264.
Dac inem seama de condiia de repetabilitate X n +1 = X n =X i dac notm:
x2
x2 x2 r
=
;
k
X 0,b 2 a ; r,k 0,b a
b 3a
ba = ba ;


atunci gsirea numerelor care se repet revine la studierea ecuaiei:

x2 r
k b 2 a b a x = x 2 r k b 3a x 2 b a x = r + k b 3a
a
b
Deci exista un algoritm pentru determinarea numerelor repetabile X n funcie de a,b,r , deci
generatorul nu este bun. Astfel, o formul relativ complicat nu genereaz obligatoriu numere
aleatoare.

x=

n continuare vom prezenta o metod aritmetic uor de programat care, n anumite condiii
produce numere aleatoare care ndeplinesc testele statistice. Metoda congrueniala liniar
([Knu00] )const n generarea numerelor dup o formul de recuren de forma:
X n +1 = (a X n + c)( mod M ) ; n=0,1,2,...
n care:
M( M N , M>1) se numete modul;
a ( 0 < a M , 1 a < M ) se numete multiplicator;
c(0 c < M ) se numete increment;
X0 (0 X 0 < M ) se numete termenul iniial;
Se mai folosete notaia X n +1 =( X 0 ,-a,-c,M); generatorul prezentat se numete i mixtcongruenial.

Observaii.
1. Se poate arta c:

c an 1
(mod M ); a 2
X n = a n X 0 +
a 1

2. O condiie necesar pentru a avea un generator bun, este ca el s aib o perioad ct mai
mare. n ([Knu00]) se demonstreaz n ce condiii generatorul mixt congruenial are perioad
maxim. n aceleai lucrri se prezint testele pe care trebuie s le ndeplineasc un ir generat
pentru a fi aleator.
3. n cazul particular n care c = 0 , generatorul se numete congruenial multiplicativ.
4. Toate limbajele de programare au proceduri de sistem pentru generarea de numere pseudoaleatoare.
5. Secvena de valori generate depinde de valoarea iniial x0 . Aceasta este de regul
stabilit de ctre utilizator prin proceduri specifice fiecrui limbaj de programare (de exemplu,
funcia srand din C). Dac se dorete ca la fiecare relansare a programului s fie generat alt
secven de valori este indicat valoarea x0 s fie stabilit pornind de la ceasul intern al
calculatorului.
Exemplu Gsirea perioadei unui ir congruenial X n+1 = 5 X n (modulo 7), X 0 = 1 .
Avem: X 1 = 5 , X 2 = 4 , X 3 = 6 , X 4 = 2 , X 5 = 3 , X 6 = 1 , deci perioada irului
este 7.
Generarea de iruri aleatoare de bii. Pentru a genera iruri reprezentate pe 32 de bii, de
forma:

(i )
n

(1 )

(2)

b b

.....

se genereaza cu regula:
(i)

b
n care p > q > 0, iar

(i )

( 32 )
n

(b

(i )
n p

, folosim o releia de recuren n care fiecare bit

(i )

+ bn ( p q ) mod 2

(i )

,.....,bp sunt valori binare care asigur iniializarea generatorului.

Pentru ca generatorul s aib proprieti statistice bune, parametrii p i q se aleg astfel nct

Z [X ] . Un exemplu de alegere a parametrilor este p


= 98 i q = 27. n acest caz perioada generatorului este 2 1 .

polinomul

+ 1 s fie prim n

Exemple de generatori de numere aleatoare.


- X n+1 = 16807 X n (mod 2 31 1) ; observm c 16807=75.
- X n+1 = 65539 X n (mod 2 31 ) ; observm c 2147483647+1=231.
- X n+1 = 5 3 X n (mod 213 ) ; observm c 8192=213.
- X n+1 = 2456949 X n (mod 2 24 ) , X 0 = 1234567 ; perioada acestui generator
este 4194304.
- X n+1 = 3513383 X n (mod 2 25 ) , X 0 = 1234567 ; perioada acestui generator
este 8388608.
- X n+1 = 630360016 X n (mod 2 31 1) , observm c 630360016=
=24 11 13 137 2011, i 630360016=1429=229 729 (mod 231-1)
Alte metode de generare a numerelor aleatoare([Knu00])
a) Construirea unor generatori de forma: X n = (X n j + X n k ) (mod m)
Pentru j=1 i k=2 se obine un generator de forma irului lui Fibonacci care nu a dat rezultae
bune. Un generator bun este: X n = ( X n 24 + X n 55 ) (mod m); n 55 , m este ntreg par;
X 0 ,.., X 55 sunt numere ntregi arbitrare nu toate pare.

Se poate arta c generatorul de mai sus are o perioad de lungime 2 f 2 55 1 , unde f este un
numar ntreg cu a f <e, astfel nct m = 2 .
P0. Y [1],..., Y [55] sunt initializate cu valorile X 54 ,..., X 0 ; j 24; k 55.
P1. repeat
{Dac urmeaz s calculm valoarea lui X n ,atunci n celula
e

Y [ j ] se afl valoare lui X n 24 i n celula Y[k] se afl


valoarea lui Yn 55 }
Y[k] (Y[k]+Y[j]) ;
X[n] Y [ k ] ;

n n + 1; j j 1; k k 1;
if j=0 then j 55 ;
if k=0 then k 55 ;
endif
until[ nu se doreste continuarea generarii]

b) Randomizare prin amestecare


Algoritmul 1
P0. Presupunem c se cunoate modul de generare a dou iruri de numere aleatoare ( X n ) nN
i (Yn ) n N ; acest algoritm va produce succesiv termenii unui ir mult mai aleator. Utilizm
un vector auxiliar v[0],,v[k-1], unde k este un numr convenabil ales. Iniial, vectorul v va
conine primii k termeni ai irului ( X n ) n N .
P1. Se genereaz X, Y ca fiind urmtorii termeni din irurile ( X n ) n N i respective (Yn ) n N .

P2. Se stabileste j [kY m ]; unde m este modulul sirului Yn ; {j are o valoare aleatoare
0<j<k, determinat de Y}
P3. Se returneaz v[j] si apoi v[j] X.

Observaie: Se demonstreaz c lungimea irului obinut prin amestecare este c.m.m.m.c. al


lungimilor sirurilor ( X n ) nN i (Yn ) nN .

10

Algoritmul 2
P0. {Fiind dat o metod pentru generarea unui ir aleator ( X n ) n N , acest algoritm va
produce succesiv termenii unui ir mult mai aleator, folosind un vector v[0],,v[k1]. Iniial, vectorul v va conine valorile primilor k termeni ai irului ( X n ) nN , iar
variabila auxiliar Y conine valoarea termenului al k+1-lea al irului }.
P1. j [kY m] ; m este modulul irului ( X n ) n N , din care j are o valoare
aleatoare 0 j < k , determinat de Y.
P2. Y v[j]; returneaza Y, iar apoi se stabileste v[j], urmtorul termen al
irului ( X n ) n N .
S ne reamintim...
irurile de numere aleatoare sunt valori de selecie ale repartiieiei uniforme.
Pentru a se genera astfel de iruri se folosesc metode algoritmice, cum este de
exemplu metoda congruenial.
Valorile astfel generate trebuie s satisfac anumite teste prin care se verific faptul
c perioada irului este suficient de mare, numerele sunt egal probabil i
independente stochastic

I. ntrebri.
1. Care sunt caracteristicile unui ir de numere aleatoare.
2. Care carateristic a sistemelor impune implementarea fenomenului aleator n
simulare.
3. Care este deosebirea dintre generarea de numere aleatoare i generarea de
variabile aleatoare.
II. Exerciii propuse.
1. Determinai perioada irurilor congrueniale:
a) X n+1 = 11X n (modulo 32), X 0 = 1 ;
b) X n +1 = 121X n + 567(modulo 100), X 0 = 0 .
M1.U1.4. Generarea variabilelor aleatoare prin metoda invers
Dac pn acum ne-am ocupat de generarea numerelor aleatoare, adic valori de selecie ale
unei variabile uniform repartizate, n cele ce urmeaz o s ne ocupm de generarea valorilor
de selecie ale unor variabile aleatoare diferite de cea uniform.

Lem. Fie X o variabil aleatoare oarecare a crei funcie de repartiie este F(x) i fie U o
variabil aleatoare uniform pe (0,1). Dac este inversa funciei F, atunci variabila
x = (U ) are repartiia F.
aleatoare ~
Demonstraie.P( ~
x < a) = P( F ( ~
x ) < F ( a )) = P (U < F (a )) = F ( a)
Consecin. Dac U 1 ,U 2 ,...,U n este un ir de numere aleatoare uniforme pe (0,1) atunci
x 1 ,...,x n ; xi= (ui ) este un ir de numere aleatoare independente a cror funcie de repartiie

este F( = F 1 ).
Dac inversa are o expresie analitic uor calculabil numeric, atunci lema spune c
problema generrii unui ir de numere aleatoare cu funcia de repartiie F(x) se reduce la

11

generarea unui ir de aceeai lungime de numere aleatoare uniforme pe (0,1). De asemenea,


dac printr-un anumit procedeu reuim s generm numere aleatoare ntregi x, uniform
repartizate pe intervalul (0,M), M fiind suficient de mare, atunci putem determina numerele
aleatoare U, uniforme pe (0,1) prin relaia U=x/M.

Metoda invers de generare a variabilelor aleatoare se bazeaz pe lema demonstrat


anterior. Presupunem c avem un generator de numere aleatoare pe (0,1) numit RND, c
functia F-1 este calculabil i msurabil, rezult c procedeul de generare a unei valori de
selecie a variabilei aleatoare X , care are funcia de repartiie F este urmtorul:
Pas 0. Iniializeaz RND i algoritmul pentru calculul lui F-1.
Pas 1. Genereaz U uniform pe (0,1).
Pas 2. Calculeaz X=F-1(U) ; returneaz X.
Observaii: 1. Metoda se poate aplica n cazul n care F-1 se poate calcula uor.
2. Dac U este uniform pe (0,1) atunci 1-U este uniform pe (0,1). ntr-adevr
P(1-U<x)=P(-U<x-1)=P(-U1-x)=1-P(U<1-x)=1-Fu(1-x)=1-(1-x)=x.
Exemplu. Generarea variabilei exponeniale negative de parametru , >0.
Aceast variabil aleatoare are funcia de repartiie
0, daca x 0
F(x)=
x
1 e , daca x > 0

Inversa F 1 (u ) se calculeaz astfel:

y = 1 e x e x = 1 y x = ln (1 y ) x = 1 ln( 1 y )

deci F

(u ) =

ln( 1 u ) . Algoritmul este :

P0. Iniializeaz RND, Citete

P1. Repeat
U:=RND;
If U > 0.00001 {Altfel nu se poate calcula logaritmul}
then

X:=

( 1 )(ln U )

until U > 0.00001


P2. Return X.

Exemplu. Generarea variabilei discrete simple


O astfel de variabil este de forma

x1 ...xm
;
p1 ... pm

X:

p
i =1

Funcia de repartiie este:

12

= 1 ; pi0; 1 i m

0, daca x < x1
p , daca x x < x
1
2
1
p1 + p 2 , daca x 2 x < x3
F (x ) =
.......
p1 + p 2 + ... + p n 1 , daca x m 1 x < x m

1, daca x m < x
n acest caz, valorile inversei funciei de repartiie pot fi calculate n modul
urmtor:
1
F (u ) = xi dac F ( xi 1) < u F ( xi) , pentru i = 1,..., m
cu

= i

F (x ) = 0 .
0

Dac descriem funcia de repartitie prin tabelul:


x0 =

F0 = 0

x
F

.......

1
1

........

x
F

i 1

x x
F F

i +1

i 1

i +1

........
........

x
F

atunci algoritmul de simulare const n generarea unei valori, u, uniform


repartizate n (0,1) i n gsirea indicelui i pentru care F i 1 < u F i .
Pe baza acestei formule, se poate scrie urmtorul algoritm.
i

Fie Fi= p ; 1 i m.
=1

P0. Iniializare RND; Citeste(x(i),p(i); 1im);


Pentu i=1,m calculeaz Fi;
j:=0.
P1. U: =RND.
P2. while U<Fj do j:=j+1.
P3. X:=X(j); Return X

Exemplu
Folosind metoda invers, scriei un algoritm pentru generarea repartiiei Weibull,
a crei funcie de repartiie este:

0, daca x 0
F ( x) =
x

1
, daca x > 0
e

Rezolvare: Inversa se calculeaz astfel: y=1- e


x= [ ln(1 y )] ; deci
1

1-y= e

F-1(u)= [ ln(1 u )] .
1

Algoritmul de generare este:

13

ln(1-y)=-x

P0. Iniializeaz RND, Citete ;


P1. Repeat
U:=RND;
If U > 0.00001 {Altfel nu se poate calc. logaritmul}
X:= ( (ln U ))

then

until U > 0.00001


P2. Return X.
I. ntrebri.
1. n ce situaie se poate aplica metoda invers de generare a variabilelor
aleatoare.
2. Care este legtura ntre generarea de iruri de numere alaetoare i metoda
invers de generare a variabilelor aleatoare.
M1.U1.5. Generarea variabilelor discrete bazate pe probe
1. Variabila Bernoulli. n cazul experimente Bernoulli exist doua tipuri de rezultate:
succese (A) sau eecuri (B), P(A)=p; P(B)=q=1-p, 0 p 1 . Mecanismul aleator
fizic pe care l putem asocia unui experiment Bernoulli este cel al unei urne n care exist A
bile albe i B bile negre; extragerea din urn a unei bile albe este echivalent unui succes,
iar extragerea din urn a unei bile negre, este echivalent unui eec. Simularea unei probe
Bernoulli se face cu algoritmul de generare a variabilei discrete, genernd variabila

0 1

q p

D:

2. Variabila geometric. ntr-un sir de probe Bernoulli, notm cu X variabila care reprezint
un numr de eecuri nregistrate pn la apariia unui succes; X se numete variabila
geometric. Functia de frecven a lui X este:
f(x)=P(X=x)= p q ; x=0,1,2,
x

Funcia de repartiie este:

1 q x +1
F(x)=P(X x)= p q = p(1+q+q ++q )=p
=1-qx+1 .
1 q
i =0
x

Generarea variabilei geometrice prin numrarea de probe Bernoulli.


P0. Citete p; iniializare RND; i: =0
P1. repeat
U: =RND;
If U>p then i: = i+1 {Numr eecurile}
Until U p {succes};
P2. X:=i ; Return X.
3. Variabila binomiala cu exponent negativ. ntr-un ir de probe Bernoulli fie X numrul de
eecuri realizate pna la apariia a k succese (variabila binomial cu exponent negativ sau
variabila binomial negativ sau variabila Pascal). Deci pentru a obtine X eecuri sunt
necesare k+X probe Bernoulli.

14

x + k 1 k x
p q ; x=0,1,2
x

Funcia de frecven a lui X este: f(x)=

Generarea variabilei Pascal prin numararea probelor Bernoulli


P0. Citete p, k ; iniializare RND ; j:= 0 ; i:= 0
P1. repeat
U: =RND;
if U<p then i:= i+1 \* eec
else j:= j+1 \* succes
until j<k .
P5. X:=i; Return X
3.Variabila binomial. Variabila X care reprezint numrul de succese n n probe Bernoulli
se numete variabila binomial de parametri (n,p). (Schema bilei ntoarse). Avem

n
x

f(x)= p q
x

n x

; x=0,1,,n.

Observaie. Dac Bi; 1 i n sunt variabile Bernoulli asociate la n probe Bernoulli,


n

atunci variabila binomial este de forma:

B .
i

i =1

Generarea variabilelor binomiale prin numrarea probelor Bernoulli


P0. Initializare RND; Citete p, n; x:=0; i:=0.
P1. repeat
U:=RND; i:= i+1
if u p then X:=X+1
until i< n
P3. Return X.
4. Variabila hipergeometric. Presupunem c ntr-o urn exist A bile albe i B bile negre,
A+B=N si fie p =

A
B
, q = . Presupunem ca n este fixat. Numarul X al bilelor albe
N
N

obinute n n extrageri, fr introducerea bilei extrase napoi n urn se numete variabila


aleatoare hipergeometric. Funcia de frecven este

A N A


x n x

f(x) =
; x= 0,1,2,,n.
N

x
Variabila hipergeometric este caracterizat de trei parametri (N,p,n)(sau (N,A,n)).
Problema generrii variabilei hipergeometrice (N,p,n) revine de fapt la simularea unei
extracii fr ntoarcere dintr-o urn i repetarea acestei simulri de n ori, cu schimbarea de
fiecare dat a compoziiei urnei. Astfel, dac Ni,0in este numrul bilelor din urn dup
extracia de rang i,(N0=N), rezult c Ni=Ni-1-1,1in, iar probabilitatea de a extrage
o bil alb n extracia i este:
N p S
pi= i 1 i 1
; 1 i n,
N i 1 1

15

1, daca in extractia i - 1 a fost scoasa o bila alba


Unde S=
0, altfel.

Justificare: pi 1 =

pi=

N A i-1
, unde NA
N i-1

i-1

reprezinta numarul bilelor albe dupa a i-1 proba, deci

N i 1 p i 1 S
N i 1 1

Generarea variabilei hipergeometrice prin numrare


P0. Iniializare RND; Citete N,p,n;i:=0; X:=0.
P1. repeat
U:=RND;i:= i+1; S=0;
if U p then S:=0;
X:=X+S;
NpS
p:=
; N:=N-1
N 1
until i<n .
P3. Return X.
4. Variabila Poisson.
Variabila discret X are o repartiie Poisson de parametru , dac funcia sa de frecven este:
i
pi=p(X=i)= e ; i=0, 1, 2,
i!
X reprezint numrul evenimentelor rare (de exemplu venirii ntr-un un sistem de ateptare)
care apar pe unitatea de timp. n continuare vom demonstra echivalena ntre fluxul sosirilor
poissonian i intervalul ntre sosiri exponenial negativ. Fie X variabila aleatoare care
reprezint numrul sosirilor ntr-un sistem de ateptare ntr-un interval de timp de lungime 1.
Spunem c sistemul de ateptare are sosiri Poisson de parametru (>0) dac([KaDu99]):
1. Numrul sosirilor n intervale de timp disjuncte sunt independente.
2. Probabilitatea unei singure sosiri ntr-un interval de timp t este t.
3. Probabilitatea a cel puin dou sosiri ntr-un interval de timp suficient de mic este 0.
ntr-un sistem de ateptare cu sosiri Poisson, intervalul de timp egal cu unitatea poate fi
mprit n n subintervale disjuncte, fiecare avnd lungimea egal cu 1/n. Dac n este suficient
de mare, proprietatea 3 ne asigur c probabilitatea a cel puin dou sosiri pe un asemenea
subinterval va fi 0, deci putem considera c pe un asemenea subinterval, poate sosi un singur
client sau nu avem nici o sosire. Dac considerm sosirea pe un asemenea subinterval ca un
succes i faptul c nu avem nici o sosire ca un eec, atunci densitatea de repartiie a lui X va
putea fi aproximat cu densitatea unei variabile aleatoare binomiale de parametric n i p, n
care p=/n. Deci:
k

n
n
P( X = k ) p k (1 p ) n k = 1
k n n
k

nk

Pentru a obine valoarea exact a lui P(X=k), l facem pe n s tind la , deci

16

n
P( X = k ) = lim
n k
n


1
n


1
k
n(n 1)...(n k + 1)
n
= lim
k
=
n
k!
n k
1
n

nk


1
k
n k +1

n
n n 1
=
lim
...
=

n
k!
n
n
n

1
n
n


1
k
1
k

n
k 1
e
=
=
lim1 1 ... 1

k ! n n
n k
k!

1
n
Am obinut deci relaia:
P( X = k ) =

k
k!

e , k = 0,1,2,...

Formula obinut reprezint densitatea de repartiie a variabilei aleatoare Poisson de


parametru . Att media ct i variana variabilei Poisson sunt egale cu 1.
Variabila aleatoare exponenial negativ de parametru (>0) are funcia de repartiie:
1 e x , daca x > 0
F ( x) =
altfel
0,
De asemenea media, respectiv variana acestei variabile sunt 1/, respectiv 1/2. Fie AT
intervalul de timp ntre dou sosiri consecutive; atunci:
P( AT < t ) = 1 P( AT t ) = 1 P( Nici o sosire pe intervalul de lungime t ) =

(t )e
0

= 1

0!

= 1 e t

Deci, pentru a genera X trebuie s generm intervale de timp de venire astfel nct suma lor
s acopere intervale de timp egale cu unitatea; numrul j al acestor variabile va fi o valoare de
j

1 <

selectie a variabilei Poisson. Deci j satisface condiia:

=1

Dar =

j +1

=1

ln U ( este generat prin metoda inversa).

Deci

ln U 1 <
=1

U
=1

j +1

j +1

=1

=1

ln U , adic lnU . > ln U ,adic

=1

j +1

>

=1

Generarea variabilei Poisson prin metoda multiplicarii

17

P0. Initializare RND; Citete ; L:= e


P1. repeat
U:=RND; P:= P U ;
if PL then j:=j+1;.
until P<L.
P3. X:=j; return X.

; j:=0; P:=1;

I. ntrebri.
1. Care este mecanismul aleator fizic corespunztor variabilei Bernoulli.
2. Care sunt tipurile de evenimente care pot apare n cazul unei variabile
aleatoare Bernoulli.
3. Care este legtura dintre variabila Poison i cea exponenial negativ.
4. La care variabil discret al crei mecanism aleator este descris de extragerea
unei bile dintr-o urn, cu dou tipuri de bile, nu se introduce bila napoi n urn,
dup extragere.
5. Cum se simuleaz introducerea napoi a bilei extrase sau nu.

M1.U1.6. Generarea variabilei aleatoare normale pe baza teoremei de limit central.


Variabila aleatoare X are repartiia normal N ( , ) dac densitatea ei de repartiie este de
forma

f (x ) =

( x )2
2 2

unde i sunt parametrii variabilei aleatoare. Se arat c media variabilei este iar deviaia
standard este . Funcia de repartiie nu are o expresie explicit. Dac notm cu Z variabila
normal N(0,1), atunci avem relaia X = Z + . De asemenea, funcia de repartiie n acest
1
caz se exprim prin F (z ) = + ( z )sign (z ) , unde (z ) este funcia lui Laplace, pentru care
2
exist o tabel de valori. Generarea variabilei normale N(0,1) se bazeaz pe o form
particular a teoremei de limit central: dac se d o selecie X1,..,Xn efectuat asupra unei
variabile aleatoare X astfel nct media lui X este i variana lui X este 2 , atunci variabila
X + ... + X n n
Z= 1
n
are asimptotic, cnd n , o repartiie N(0,1). n cazul n care X=U (adic o variabil
uniform pe (0,1)), rezult c dac U1,...,Un este o selecie ntmpltoare asupra lui U, atunci
n
n
i cu variana
(din
variabila Y=U1+...+Un are asimptotic o repartiie normal cu media
2
12
1
1
cauz c media lui U este , iar variana lui U este
)
2
12
Aceast teorem poate fi folosit pentru generarea unei variabile normale N(0,1). S - a
constatat c dac volumul seleciei n satisface condiia n>10, atunci variabila

18

n
2
Z=
n
12
poate aproxima bine o variabil N(0,1). O valoare convenabil pentru n este n=12, caz n care
Z= U1+...+U12-6.
Y

M1.U1.7. Metoda respingerii


Presupunem c exist o metod de simulare a unei variabile aleatoare Y care are densitatea de
repartiie g(x). Ne propunem s simulm o variabil aleatoare X care are densitatea de
repartiie f(x) , prin generarea unei valori a lui Y i acceptarea ei cu o probabilitate
proporional cu f(Y)/g(Y). Fie c o constant astfel nct

f (y)
c, y din domeniul de definiie.
g(y)
Putem enuna urmtorul algoritm:
P0. Iniializare RND; Iniializare algoritmul de generare a
lui Y;
P1. Genereaz y valoare a lui Y;
U: =RND;
f (y)
P2. Dac u
atunci X: =y
g(y)
altfel goto P1;
P3. Return X.

Observaie. Se poate demonstra ca variabila aleatoare X ale crei valori au fost generate prin
algoritmul anterior are densitatea de repartiie f.
Exemplu. Generarea unei variabile aleatoare cu densitatea de repartiie:
3 x 2 , daca x [0,1]
f (x ) =
.
0, in rest
Considerm densitatea variabilei aleatoare uniforme pe [0,1]
x, daca x [0,1]
g (x ) =
0, in rest
Pe intervalul [0,1], max(f(x)/g(x))=3, deci lum c=3. Astfel:
f (x )
x2
cg ( x )
Pe baza acestei relaii, putem enuna urmtorul algoritm:
P0. Iniializare RND;
U2: =RND;
P1. U1: =RND; \* valoare a lui Y ;
P2. Dac U 2 U 12 atunci X: =U2 altfel goto P1;
P3. Return X.
Exemplu. Simularea repartiiei seminormale.
Fie X o variabil cu densitatea de repartiie: f ( x) =
Considerm Y o variabil cu repartiia exponenial:

19

x2
2

, dac x>0

g(x) = e x ,

dac x > 0.

Se observ c:

f (x)
=
g (x)

2e

x2
2

Valoarea maxim a raportului se obine pentru x=1, deci

f (x)
=
cg ( x )

2e

( x 1) 2
2

U e

2e

deci

Algoritmul de generare este:


P0. Iniializare RND; Iniializare
generare a lui Y~Exp(1);
P1. Genereaz y valoare a lui Y;
U: =RND;
( y 1)2

P2. Dac

c =

algoritmul

de

atunci X: =y;
altfel goto P1;

P3. Return X.
M1.U1.8. Metoda descompunerii
Se aplic atunci cnd funcia de repartiie a variabilei de simulat poate fi scris ca o
combinaie convex a unor funcii de repartiie asociate unor variabile pentru care se cunosc
metode de simulare.
Fie F1,F2,,Fn funcii de repartiie i fie (p1,p2,,pn) o repartiie de probabilitate
n

( 0 p i 1, pi = 1 ).
i =1

Considerm funcia de repartiie F(x) =

p F ( x).
i

Pentru a simula o variabil aleatoare n

i =1

conformitate cu repartiia dat de F se aplic algoritmul:


P1. Se genereaz o valoare de selecie a variabilei discrete
x1 ...x n
;.
X:
p1 ... p n
P2. Se returneaz o valoare generat corespunztoare lui Fi.

Observaie. Metoda se aplic n acelai mod n cazul n care se cunosc funciile de densitate
ale variabilelor X i .
Exemplu . Simularea repartiiei normale. Fie X o variabil cu repartiia normal
standard. Atunci |X| are repartiia seminormal. Tinnd cont de faptul c repartiia
normal este simetric, putem scrie:
1
1
FX ( x) = F| X | ( x) + F| X | ( x) ,
2
2

20

S ne reamintim...
Generarea sau simularea unei variabile aleatoare const n generarea unor valori de
selecie ale acestora.
Dac funcia de repartiie a variabilei aleatoare se poate inversa atunci se aplic metoda
invers de generare. Exemple de variabil aleatoare care se genereaz prin metoda
invers sunt cea exponenial negativ, cea discret. n caz contrar, se poate folosi
metoda respingerii.
Generarea variabilelor aleatoare discrete bazate pe probe, utilizeaz conceptul de
experiment Bernoulli, asociat extragerii unei bile dintr-o urn care conine bile albe i
bile negre.
Variabila normal se genereaz prin metodele respingerii i descompunerii.

Test de evaluare a cunotinelor


I.Exerciii propuse.
Scriei un algoritm pentru generarea urmtoarelor variabile aleatoare:
1. Repartiia Pearson de tipul XI.
Indicaie: Funcia de repartiie a variabilei este:
0, daca x 0

F ( x) =
1
, daca x > 0, > 0, > 0
+ 1

a crei invers este: F-1(u)= (1 u )

2. Repartiia Arcsin
Indicaie: Funcia de repartiie a variabilei este:
0, daca x ( 1,1)

F ( x) = 1
arcsin x + , daca x (1,1)

2

a crei invers este: F-1(u)=sin u

3. Repartiia Cauchy
Indicaie: Funcia de repartiie a variabilei este:

F ( x) =

arctgx + ;
2

a crei invers este: F 1 (u ) = tg u


2

4. Scriei un algoritm pentru generarea variabilei aleatoare a crei densitate de repartiie


este f(x) = 20x(1 - x)3, 0< x <1 .
Indicaie: Se folosete metoda respingerii, considernd densitatea variabilei
exponeniale (ca n exemplul prezentat)

21

M1.U1.7. Rezumat. Aceast unitate de nvare prezint conceptele de baz ale


generrii cu calculatorul a numerelor i variabilelor aleatoare. Sunt prezentate
conceptele de numr aleator, este evideniat faptul c problema generrii numerelor
aleatoare este destul de complicat. Astfel, este prezentat metoda prii din mijloc,
care dei n aparen produce numere aleatoare, se dovedete c numerele generate prin
aceast metod au o perioad relativ mic. Este prezentat metoda congruenial
liniar precum i condiiile n care aceast metod produce numere care au o perioad
maxim. De asemenea, sunt prezentai i ali generatori de numere aleatoare.
Pornind de la generarea numerelor aleatoare, care reprezint valori de selecie ale
variabilei uniforme, se prezint cteva metode de generare ale unor variabile aleatoare
uzuale, unele dintre ele fiind folosite n simularea unor sisteme. Metoda invers de
generare a variabilelor aleatoare se bazeaz pe determinarea inversei funciei de
repartiie. Prin aceast metod, se pot genera unele repartiii clasice, cum ar fi
exponeniala negativ, Weibull, discret simpl.
n continuare sunt prezentai algoritmi de generare a variabilelor aleatoare bazate pe
experimentul Bernoulli. Aceti algoritmi au rolul de a familiariza studenii cu
implementarea algoritmic a fenomenul aleator i a scoate n eviden legtura dintre
dou repartiii des utilizate, exponenial negativ i Poison.
O alt metoda de generare a variabilelor aleatoare este cea a respingerii. Aceasta se
bazeaz pe existena unei metode de simulare a unei variabile aleatoare, care are o
anumit densitatea de repartiie; generarea unei valori a unei alte variabile aleatoare, se
face prin generarea unei valori a primei i acceptarea ei cu o probabilitate
proporional cu raportul celor dou densiti.
Sunt prezentate dou metode de generare a variabilei aleatoare normale.

22

Modulul 2. Modelarea i simularea sistemelor de ateptare


Cuprins
Introducere ............................................................................................................... 23
Competene............................................................................................................... 24
U1. Modelarea i simularea sistemelor de ateptare cu o singur staie de servire ...... 24
U2. Modelarea i simularea sistemelor de ateptare cu numr constant de staii de
servire paralele, cu coad la toate staiile .................................................................. 42
U3. Modelarea i simularea sistemelor de ateptare cu numr variabil de staii de
servire paralele.......................................................................................................... 61
U4. Modelarea i simularea sistemelor de ateptare cu coad la fiecare de servire ..... 74
Introducere
Modelele de ateptare se ocup cu studiul sistemelor care prezint aglomerri.
Astfel de sisteme le gsim frecvent in lumea real. Exemple de astfel de sisteme
sunt: sistemul caselor de marcat la un magazin; resursele unui sistem de calcul;
un punct medical; o cabin telefonic etc.
Componentele unui astfel de sistem sunt: o surs de clieni care intr n sistem
pentru a fi servii; una sau mai multe staii de servire ale clienilor; una sau mai
multe cozi de ateptare n care ateapt clienii s fie servii.
Topologia sistemului descrie modul de dispunere a staiilor, paralel sau serie,
dup cum servirea clientului se realizeaz de ctre o singur staie sau de ctre
toate staiile. n cele ce urmeaz vom considera staiile dispuse n paralel. Clienii
sosii n sistem sunt servii imediat dac exist cel puin o staie liber sau sunt
plasai ntr-o coad, n care ateapt pn cnd o staie devine liber. Putem
considera c exist o coad unic la sistemul de staii paralele sau fiecare staie de
servire are propeia sa coad.
Studiul unui sistem de ateptare se realizeaz folosind un model de ateptare.
Elementele cunoscute ale unui sistem de ateptare sunt fluxul intrrilor n sistem
i mecanismul serviciului. Intrrile sunt caracterizate fie de numrul clienilor
sosii pe unitatea de timp, fie de intervalul de timp dintre dou sosiri consecutive.
Ambele mrimi sunt variabile aleatoare de repartiie cunoscut. Mecanismul
serviciului este format din:
Timpul de servire sau numrul de clieni servii pe unitatea de timp, ambele
reprezentnd variabile aleatoare de repartiie cunoscut.
Disciplina de servire reprezint regulile dup care se selecteaz din coad
clientul care urmeaz s fie servit (FIFO - primul sosit, primul servit, bazate pe
mprirea clienilor n clase de prioriti etc ).
Lungimea maxim a cozii.
Elementele necunoscute sau factorii de eficien ai sistemului sunt timpul de
ateptare, timpul de neocupare sau de lenevire al staiilor, numrul de clieni aflai
n sistem la un moment dat etc. Astfel, un model de ateptare se specific prin:
A/S/c:(L;d)
Unde:A este repartiia intervalalui de timp ntre dou sosiri consecutive; S este
repartiia intervalului de timp de servire; c este numrul staiilor de servire;
L este lungimea maxim a cozii; d este disciplina de servire.
n anumite condiii restrictive, care in de fluxul intrrilor n sistem i disciplina
servirii, au fost elaborate modele matematice care furnizeaz formule de calcul ai
23

factorilor de eficien ai sistemelor respective. Pentru multe tipuri de sisteme de


ateptare astfel de formule nu exist. n aceste situaii, modalitatea de studiu este
simularea lor. Exemple de astfel de sisteme sunt cele cu numar dinamic de statii de
servire paralele sau cele cu coad proprie la fiecare staie de servire.
Competene
La sfritul acestui modul studenii vor fi capabili s:
 s neleag elementele de baz ale sistemului de ateptare;
 s identifice sistemele din lumea real care se pot modela i simula folosind
conceptele prezentate;
 s identifice entitile algoritmilor de simulare i mecanismul simulrii;
 s identifice modalitile de validare ale algoritmilor de simulare;
 s implementeze algoritmii prezentai ntr-un limbaj de programare cunoscut;
 s testeze programele pentru anumite situaii particulare i s compare rezultatele
obinute prin simulare cu cele analitice, cnd acestea exist.

Unitatea de nvare M2.U1. Modelarea i simularea sistemelor de


ateptare cu o singur staie de servire
Cuprins
M2.U1.1. Introducere................................................................................................ 24
M2.U1.2. Obiectivele unitii de nvare.................................................................. 25
M2.U1.3. Modelul exp()/exp()/1:(,FIFO) ......................................................... 25
M2.U1.4. Simularea sistemelor de ateptare cu diciplina de servire primul-sositprimul-servit ............................................................................................................. 30
M2.U1.5. Simularea sistemelor de ateptare cu diciplina de servire head-of-line ....... 32
M2.U1.6. Simularea sistemelor de ateptare cu evacuarea clientului servit..................35
M2.U1.7. Test de evaluare a cunotinelor ................................................................ 39
M2.U1.8. Rezumat.................................................................................................... 41
M2.U1.1. Introducere
Exist numeroase sisteme care pot fi studiate ca modele de ateptare cu o singur
staie de servire. ncepnd cu o banal cabin telefonic i continund cu unitatea
central de prelucrare a unui calculator i n general resurse ale sistemelor cu un
singur element de servire, putem da exemple de astfel de sisteme.
nc de la nceputul secolului trecut, s-a observat c fluxul apelurilor la o central
telefonic cu un singur operator, urmeaz o repartiie Poisson, care este echivalent
cu faptul c intervalul ntre dou sosiri consecutive este valoare de selecie a
variabilei exponeniale negative. n teoria sistemelor de ateptare, aceast repartiie
este considerat un standard, n ceea ce privete descrierea sosirilor n sistem.
Cu ipotezele suplimentare c i timpul de servire are o repartiie exponenial
negativ i disciplina de servire este FIFO, se pot obine formule matematice ale
factorilor de eficien ai acestui model. Rezultatele obinute cu aceste formule sunt
comparate cu cele returnate de programul de simulare realizat pe baza agoritmul
prezentat.
Modelele n care disciplina de servire se stabilete dup criterii care nu iau n
considerare ordinea intrrii clienilor n sistem, se numesc modele cu prioritate. n
astfel de sisteme, clienii sunt mprii n clase de prioriti. Dac notm cu m

24

numrul de total de clase, atunci clienii clasei i au prioritate la servire fa de


clienii clasei j dac i<j. De asemenea, n cadrul aceleiai clase clienii sunt servii
n ordinea FIFO(primul sosit-primul servit). Clienii pot sosi n sistem dup
aceeai repartiie sau dup repartiii ale timpului ntre sosiri diferite. Distingem:
sisteme de tip cap de linie(head-of-line), n care dac un client sosit care
are o prioritate superioar clientului servit, clientul sosit ateapt pn la
terminarea servirii clientului pentru a fi la rndul lui servit;
sisteme cu evacuare sau modele cu prioritate absolut, n care un client sosit
de clas superioar clientului servit va genera evacuarea n coad a clientului de
prioritate cea mai mic servit i oferirea uneia dintre faciliti de servire clientului
nou sosit; n ceea ce privete timpul de servire al clientului evacuat, el poate fi
vechiul timp, adic servirea se reia de la nceput, sau poate fi timpul rmas, adic
diferena dintre timpul total de servire i timpul efectuat.
Un exemplu de astfel de sistem este organizarea servirii proceselor, atunci cnd
solicit o anumit resurs a calculatorului. Procesele sun mprite n clase de
prioriti. Un proces al nucleului sistemului de operare are prioritate mai nalt
dect unul din alt categorie (de exemplu unul utilizator).Cnd un astfel de proces
este executat, se produce forarea CPU, procesul n curs de execuie este evacuat i
CPU va servi un alt proces. Un exemplu de aplicare a servirii pe baza strategiei
HOL este listarea fiierelor. Chiar dac apare un fiier de listat cu o prioritate mai
nalt acesta ateapt pn cnd se termin listarea n curs.
M2.U1.2. Obiectivele unitii de nvare
Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n modelarea i simularea sistemelor de ateptare cu o singur staie de servire.
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice un model matematic al acestei clase de sisteme;
 identifice sisteme din lumea real care se pot studia prin modelare i simulare
conform teoriei prezentate;
 implementeze algoritmii prezentai

Durata medie de parcurgere a unitii de nvare este de 3 ore.

M2.U1.3. Modelul exp()/exp()/1:(,FIFO)


Acest model este caracterizat de([GrHa98], [Vd77]): intervalul ntre dou sosiri consecutive
are o repartiie exponenial negativ de parametru ; durata serviciului are o repartiie
exponenial negativ de parametru ; exist o singur staie de servire; lungimea cozii poate
fi orict de mare iar disciplina de servire este FIFO.
1
1
Repartiia exp(), are media , deci dac este media sosirilor pe unitatea de timp, atunci

este media intervalului ntre dou sosiri consecutive. Aa cum am demonstrat n modulul 1,
dac repartiia timpului ntre dou sosiri consecutive este o variabil aleatoare exponenial

25

negativ de parametru , atunci numrul de clieni sosii pe unitatea de timp reprezint o


variabil Poisson de acelai parametru, adic, dac Pn (t ) reprezint probabilitatea sosirii a n

(t ) n e t
. Deci:
n!
probabilitatea s nu aib loc nici o sosire pe un interval t, va fi e t ;

clieni n sistem ntr-un interval de lungime t, atunci Pn (t ) =

probabilitatea s aib loc o singur sosire pe intervalul t, va fi (t )e t ;

1 (e t
=

loc mai multe sosiri pe intervalul t,


(t ) 2
(t ) 2
+ te t ) = 1 {[1 t +
...] + t [1 t +
... ] } =
2!
2!

probabilitatea

de

avea

va

fi

( .t ) 2
+ ... = O ((t ) 2 ) .
2

Deoarece durata serviciului este exp(), atunci

este durata medie a serviciului iar

reprezint numrul mediu de clieni servii pe unitatea de timp. Pe baza unei proprieti
importante a repartiiei exponeniale, se poate afirma c timpul rmas pn la terminarea unui
serviciu, este independent de cel efectuat pn la momentul respectiv. Aceasta ne permite s
afirmm c dac un client sosete n sistem i gsete staia de servire ocupat, timpul su de
ateptare este repartizat ca i timpul de servire. De asemenea probabilitatea ca un serviciu s
fie terminat ntr-un interval de timp t este t + O ( t ) .
Dac
n 1,
Fie N(t) numrul de clieni din sistem la momentul t i fie Pn(t)=P(N(t)=n).
atunci evenimentul ca n sistem la momentul t+t s fie n clieni poate fi exprimat ca
reuniunea urmtoarelor evenimente ([Ciu78]):
{n clieni n sistem la momentul t} {nici o sosire n intervalul de timp
(i)
(t,t+t)}{nici un client servit n intervalul (t,t+t) };
(ii)
{(n+1) clieni n sistem la momentul t} {nici o sosire n intervalul de timp
(t,t+t)}{un client servit n intervalul (t,t+t) };
(iii)
{(n-1) clieni n sistem la momentul t} {o sosire n intervalul de timp
(t,t+t)}{nici un client servit n intervalul (t,t+t) };
{n clieni n sistem la momentul t} {o sosire n intervalul de timp (t,t+t)}{un
(iv)
client servit n intervalul (t,t+t) }.
Deci
Pn (t + t ) = Pn (t )[1 t + O (t )][1 t + O (t )] + Pn (t )[t + O ( t )][ t + O( t )] +
+ Pn +1 (t )[1 t + O( t )][ t + O( t )] + Pn 1 (t )[t + O( t )][1 t + O( t )]
relaie care se poate scrie sub forma
Pn (t + t ) Pn (t )
O( t )
= Pn 1 (t ) ( + ) Pn (t ) + Pn +1 (t ) +
t
t
Deci
lim

t 0

Pn (t + t ) Pn (t )
= Pn' (t ) = Pn 1 (t ) ( + ) Pn (t ) + Pn+1 (t )
t

(2.1.1)

Dac n=0, atunci evenimentul ca n sistem la momentul t+t s nu fie nici un client poate fi
exprimat ca reuniunea urmtoarelor evenimente:
(i) {nici un client n sistem la momentul t} {nici o sosire n intervalul de timp (t,t+t)};

26

(ii){un client n sistem la momentul t} {nici o sosire n intervalul de timp (t,t+t)}{un


client servit n intervalul (t,t+t) }.
Obinem: P0 (t + t ) = P0 (t )[1 t + O ( t )] + P1 (t )[ t + O ( t )][1 t + O (t )] ,
care se transform n:

P0 (t + t ) P0 (t )
O( t )
= P1 (t ) P0 (t ) +
t
t

din care rezult c:


P (t + t ) P0 (t )
lim 0
= P0' (t ) = P1 (t ) P0 (t )
(2.1.2)
t 0
t
Vom presupune c procesul stochastic {Pn(t)}nN este staionar, adic lim Pn (t ) = p n , adic
n

dup intervale mari de timp sistemele devin stabile statistic i c

= 1 , adic soluiile

n=0

sistemului de ecuaii difereniale format de (2.1.1), (2.1.2) s formeze un sistem complet de


probabiliti. n aceste condiii sistemul staionar format de ecuaiile (2.1.1), (2.1.2) devine:

p1 p 0 = 0

(2.1.3)

p n 1 ( + ) p n + p n+1 = 0
Ecuaia (2.1.3) se mai poate scrie sub forma p1 =

(2.1.4)

p 0 . Dac notm Z k = p k + p k +1 ,

ecuaia (2.1.4) se poate scrie sub forma Z n 1 + Z n = 0 , adic Z n 1 = Z n , ()n 1 ; ecuaia


(2.1.3) nseamn Z 0 = 0 , deci Z n = 0, ()n 0 , adic
p n + p n +1 = 0 , de unde:

p n +1 =

p n , ()n 0

(2.1.5)

din care rezult c:


n

p n = p 0 , () n 1

Deoarece

(2.1.6)

= 1 , rezult c

n=0

n
p 0 =
n =0

(2.1.7)

Fie

(2.1.7.a)

mrimea se numete factor de utilizare sau intensitate de trafic. El exprim proporia de


timp n care staia de servire este ocupat. Dac presupunem c <1, altfel lungimea cozii ar

1
crete nedefinit n timp, atunci suma seriei geometrice infinite n este
, deci :
1
n =0

27

p 0 = 1 , p n = n (1 ), n 1

(2.1.8)

Numrul mediu de clieni n sistem va fi :

n =0

n =1

N = np n = n n (1 ) = (1 )( + 2 2 + 3 3 + ....) =
d n
( ) =
d n =1

= (1 ) (1 + 2 + 3 2 + ....) = (1 )
= (1 )

(2.1.9)

(
)=
=
d 1
1

Observaie.
Din relaia (2.1.9) rezult c atunci cnd se apropie de 1, valoarea medie a
numrului de clieni n sistem va tinde ctre .
(ii)
Procesul stochastic N(t) este discret i este un proces de natere i deces.
Lungimea medie a cozii este dat de:
(i)

n =1

n =1

n =0

L = (n 1) p n = n p n p n = n p n n (1 ) =
n =1

+
n

n =1

n =1

2
=

+
=
1 1 1 1

n +1

n =1

(2.1.10)

Pentru a afla timpul mediu de ateptare n sistem, notat cu WT vom folosi formula lui Little,
N=WT, din care va rezulta c:

WT =

1

=

(2.1.11)

Pentru a calcula timpul mediu de ateptare n coad, notat cu WTQ vom folosi faptul c
timpul mediu de servire este:
TS=1/

(2.1.11.a)

Din formula WT=WTQ+1/ , obinem:


WTQ = WT

( )

(2.1.12)

Factorul de eficien al sistemului este:


1

E[WT ]
1
Ie =
=
=
=
1
E[ ST ]
1

(2.1.13)

Pentru a calcula timpul mediu de lenevire al staiei(TL) observm c numrul mediu de


staii neocupate este 1 p 0 = 1 i deci:
TL = (1 ) E[ AT ] =

(2.1.14)

28

S ne reamintim...
Elementele unui sistem de ateptare sunt: repartiia intervalalui de timp ntre dou
sosiri consecutive; repartiia intervalului de timp de servire; este numrul staiilor de
servire; lungimea maxim a cozii; d este disciplina de servire.
Echivalena ntre fluxul sosirilor poissonian i intervalul ntre dou sosiri
consecutive exponenial negativ.
n cazul modelului exp()/exp()/1:(,FIFO), factorii de eficien ai sistemului
sunt exprimai de formulele 2.1.9-2.1.13
Exemplu.
1.ntr-un schimb de lucru la un atelier de reparaii auto cu un singur mecanic, sosesc
n medie 5 maini defecte ce urmeaz s fie reparate. Presupunem c fluxul intrrilor
este poissonian, durata de servire este exponenial negativ iar mecanicul poate
repara n medie 0,9 maini pe or. S se calculeze numrul de maini defecte care
ateapt s fie reparate i timpul mediu de ateptare al unei maini n coad.
5
Rezolvare. Vom alege ora ca unitate de msur. Atunci = = 0,625 maini care
8
sosesc ntr-o or. Deoarece = 0,9 maini reparate pe or, rezult c intensitatea de
0,625
= 0,69 < 1 .
trafic este = =

0,9
Numrul de maini defecte n ateler care ateapt s fie reparate(lungimea cozii) este
E[ L] =

Timpul
E[WTQ ] =

= 2.2 .
1
mediu
de
ateptare

al

unei

maini

coad

este

=
= 3,1 ore.
( ) (1 )

I.ntrebri.
1. De ce fluxul intrrilor ntr-un sistem trebuie s fie mai mic dect fluxul ieirilor.
2. Care este deosebirea dintre disciplina de servire HOL i cea bazat pe evacuarea
clientului n curs de servire.
3. Care este deosebirea dintre timpul de ateptare n coad i timpul petrecut n
sistem de un client.
4. Care sunt factorii de eficien ai sistemului.
II. Problem.
1. La un birou de informaii al CFR solicitanii sosesc aleator, dup o lege Poisson,
media intervalului ntre dou sosiri consecutive fiind de 0,5 minute. Timpii de
servire sunt exponeniali negativi cu media 0,25 minute. S se determine numrul
mediu de solicitani din coada de ateptare, timpul mediu de ateptare al unui
solicitant, timpul mediu consumat de un solicitant n sistem i ponderea timpilor
mori

29

M2.U1.4. Simularea sistemelor de ateptare cu diciplina de servire primul-sosit-primulservit


Din structura unui sistem de ateptare (prezentat anterior) rezult care sunt entitile
simulrii, i anume:
coada, unde clienii sosii ateapt pentru a fi servii;
staia de servire;
mecanismul de generare a mrimilor aleatore specifice modelului (intervalul de timp
ntre dou sosiri consecutive i timpul de servire pe care le asociem cu intrrile n sistem);
entitatea de calcul a factorilor de eficien, pe care o asociem cu ieirile din sistem.
Algoritmul pe care i vom prezenta, se bazeaz pe regula evenimentului urmtor sau a
timpului minim. Dac Atime reprezint timpul eveniment al urmtoarei sosiri (iniial are
valoarea 0 i odat cu fiecare sosire i se adaug valoarea variabilei IntAriv, care reprezint
intervalul ntre dou sosiri consecutive) si Ctime momentul terminrii unei serviri, n orice
moment este posibil unul dimtre urmtoarele dou evenimente :
prelucrarea unei sosiri (Aevent), dac AtimeCtime;
prelucrarea terminrii unei serviri (Cevent), n caz contrar.
Simularea se deruleza pn cnd numrul de sosiri generate atinge o valoare dat, notat cu
Tnra. Dac definim ca ciclu al simulrii prelucrarea unei sosiri sau a unei serviri, practic
simularea se desfsoar prin repetarea acestor cicluri. Dac facem ipoteza c fluxul sosirilor
este mai mic dect cel al servirilor, atunci numrul servirilor nu va depi valoarea Tnra. De
asemenea, dac numrul de sosiri simulate are o valoare suficient de mare, atunci aproape toi
clienii vor fi pn la urm servii. Deci, putem spune c numrul de cicluri ale simulrii nu
depete valoarea 2Tnra, pentru sistemele cu disciplina de servire primul-sosit-primul-servit.
Validarea algoritmilor se realizeaz comparnd rezultatele practice, obinute prin simulare cu
cele obinute pe cale analitic, n cazurile n care asemenea formule exist i evaluarea lor
numeric se poate realiza cu ajutorul calculatoarelor.

Entitile modelului i mecanismul simulrii. Entitatea server este caracterizat de


atributele(variabilele):
Ctime, reprezint timpul eveniment al terminrii servirii unui client, adic ceasul serverului. Dac serverul este liber i nu exist clieni ce urmeaz s fie servii, atunci Ctime=.
variabila Tsc, care conine durata serviciului clientului n curs de servire.
Entitatea coad este caracterizat de:
variabila Nc, care indic numrul clienilor aflai n coada de ateptare la un moment dat.
vectorul Ts, care conine valorile timpilor de servire pentru clienii aflai n coad.
Prelucrarea unei sosiri const n: dac n momentul sosirii staia este ocupat clientul este
plasat n coada de ateptare (incrementarea lui Nc cu 1i Ts(nc) primete valoarea Stime,
timpul de servire generat) i se actualizeaz timpul total de ateptare n coad al clienilor;
dac staia este n lenevire, clientul este servit imediat, caz n care se actualizeaz timpul total
de lenevire al staiei.
Terminarea servirii unui client const n: se actualizeaz timpul total de ateptare n coad al
clienilor, timpul total de lucru i numrul total de clieni servii ai staiei; dac coada este
nevid, se servete un nou client i se decrementeaz lungimea cozii, iar n caz contrar staia
intr n lenevire, adic Ctime devine .
n ambele cazuri, se colecteaz nite valori pe baza crora la sfritul simulrii entitatea de
determinare a factorilor de eficient calculeaz:
MTW reprezint media timpului de ateptare a unui client n coad:MTw=Tw/Nrs;
30

Mts reprezint timpul mediu de servire a unui client:Mts=Tts/Nrs;


Clen reprezint coeficientul de lenevire a staiei de lucru: Clen=Tlen/Ltime;
Mqueue este lungimea medie a cozii: Mqueue=Tw/Ltime.
n aceste formule Tw reprezint timpul total de ateptare n coad al tuturor clienilor, Tts este
timpul total de servire, Nrs este numrul total de servicii, Tlen este timpul total de lenevire al
serverului iar Ltime este lungimea intervalului de timp n care se deruleaz simularea care
coincide cu momentul ultimului eveniment din sistem, dac momentul iniial al simulrii este
zero.
n cele ce urmeaza, vom prezenta algoritmul de simulare.
Procedure SistAstOStatFIFO(Tnra);
Citete(Param.de gen. ai interv.ntre 2 sosiri consec.i ai timpului
de serv.);
Nc0;Ltime0;
Ctime;Tw0;
Nrs0;
Gen (IntAriv,Stime);AtimeIntAriv;Nra1;
While NraTnra do
If AtimeCtime then {Aevent}
If Ctime= then
TlenTlen+Atime-Ltime;
CtimeAtime+Stime
else
TwTw+Nc*(Atime-Ltime);
NcNc+1;
tscStime;
Ts(Nc)Stime
Endif;
LtimeAtime;Gen(IntAriv,Stime);AtimeAtime+IntAriv;NraNra+1
Else{Cevent}
TwTw+Nc*(Ctime-Ltime);LtimeCtime;TtsTts+Tsc;NrsNrs+1;
If Nc=0 then Ctime
Else
CtimeCtime+Ts(1);tsc Ts(1);
For i=1,nc-1 do
Ts(i):=Ts(i+1)
Endfor;
NcNc-1;
Endif
Endif
Endwhile;
MTwTw/Nrs;
MTsTts/Nrs;
ClenTlen/Ltime;
MqueueTw/Ltime;
Scrie: MTw, Mts, Clen, Mqueue
End.

31

Exemplu. Vom considera modelul exp()/exp()/1:(,FIFO). Acest model este


studiat analitic. Vom folosi formulele 2.1.10 -2.1.14 ale factorilor de eficien ai
acestui tip de sistem, pe care le vom folosi in validarea algoritmului de simulare.
Dac considerm c intervalele ntre sosiri, respectiv duratele serviciilor sunt
variabile aleatoare exponeniale negative de parametri 0,5 respectiv 1 i numrul
sosirilor simulate este 10000, avem:
(a) Rezultate obinute prin simulare
- Media timpului de ateptare n coad = 0.99394
- Lungimea medie a cozii =0.49841
- Timpul mediu de servire=0.99132
- Intensitatea de trafic= 0.49719
(b) Rezultate obinute analitic
- Media timpului de ateptare n coad = 1.0
- Lungimea medie a cozii =0.5
- Timpul mediu de servire=1.0
- Intensitatea de trafic= 0.5

S ne reamintim...
Etitile simulrii sunt: coada, staia de servire, mecanismul de generare a
mrimilor aleatore, entitatea de calcul a factorilor de eficien.
n orice moment este posibil unul dimtre urmtoarele dou evenimente: prelucrarea
unei sosiri sau prelucrarea terminrii unei serviri, n funcie de valorile
variabilelor Atime i Ctime;
Prelucrarea unei sosiri const n: dac n momentul sosirii staia este ocupat
clientul este plasat n coada de ateptare (incrementarea lui Nc cu 1i Ts(nc) primete
valoarea Stime( timpul de servire generat) i se actualizeaz timpul total de ateptare
n coad al clienilor; dac staia este n lenevire, clientul este servit imediat, caz n
care se actualizeaz timpul total de lenevire al staiei.
Terminarea servirii unui client const n: se actualizeaz timpul total de ateptare
n coad al clienilor, timpul total de lucru i numrul total de clieni servii ai staiei;
dac coada este nevid, se servete un nou client i se decrementeaz lungimea cozii,
iar n caz contrar staia intr n lenevire, adic Ctime devine .
I.ntrebri.
1. Care este semnificaia variabilei Atime i cum se modific valoarea ei.
2. Care este semnificaia variabilei Ctime i cum se modific valoarea ei.
3. Pe ce tip de eveniment se actualizeaz timpul de lenevire.
4. Care este condiia ca urmtorul eveniment s fie o sosire.
5. Care este condiia ca urmtorul eveniment s fie terminarea unei serviri.
M2.U1.5. Simularea sistemelor de ateptare cu diciplina de servire head-of-line
Descrierea entitilor modelului de simulare i a mecanismului simulrii.
Entitatea coad este caracterizat de atributele:
nc=(nc(1),..,nc(m)), n care nc(i) (i=1,..,m), reprezint numrul de clieni din clasa i
aflai n coad ;

32

vectorul bidimensional Ts=(Ts(i,j), i=1,..,m, j=1,..,nc(i)), nc(i) 1; Ts(i,j) conine


timpul de servire al celui de-al j-lea client din clasa i, poziia n list fiind dat de ordinea
sosirii (disciplina FIFO n cadrul clasei).
variabila cs, indic indicele de clas cea mai nalt al clienilor aflai n coad, este
dat de urmtoarea relaie
min {i/nc(i) > 0,i = 1,..,m}, daca exista i astfel incat nc(i ) > 0
cs =
(2.1.15)
m + 1, altfel
Entitatea server este descris de variabilele Ctime, Tsc a cror semnificaie a fost prezentat n
cadrul modelului anterior.
Prelucrarea urmtoarei sosiri const n: dac staia este liber, se actualizeaz timpul de
lenevire al staiei i se servete imediat clientul sosit, aciune care const n faptul c variabila
Ctime primete valoarea timpului de servire al clientului sosit; dac staia este ocupat se
actualizeaz timpii totali de ateptare n coad ai clienilor corespunztori claselor de clieni i
se introduce n coad clientul sosit, ultimul n cadrul clasei sale.
Prelucrarea terminrii unei serviri, const n: actualizarea timpilor totali de ateptare n coad
ai clienilor, actualizarea timpilor totali de servire ai clienilor mprii pe clase de prioriti,
incrementarea numrului total de servicii i determinarea valorii variabilei cs, n funcie de
care se execut una din urmtoarele aciuni:
- se preia un nou client pentru a fi servit (timpul de servire al acestui client va fi evident
Ts(cs,1)). Dup selectarea clientului de prioritate cs, acesta este scos din coad, ceea
ce este echivalent cu translatarea spre stnga a celorlali eventuali clieni de clas cs
(al doilea client devine primul .a.m.d.), datorit faptului c clienii din aceeai clas
sunt servii dup regula FIFO.
- staia intr n lenevire.
La sfritul simulrii, entitatea de determinare a factorilor de eficien, calculeaz:
timpul mediu de ateptare n coad al clienilor din clasa k, MTw(k), exprimat prin:
MTw(k)=Tw(k)/Nrsc(k)
n care Tw(k), respectiv Nrsc(k) reprezint timpul total de ateptare n coad al clienilor,
respectiv numrul clienilor servii din clasa k, k=1,..,m;
numrul mediu de clieni din clasa k aflai n coad, MLq(k), conform formulei
MLq(k)=Tw(k)/Ltime ;
m

lungimea medie a cozii Mqueue, exprimat prin MQueue = MLq( k ) ;


k =1

timpul mediu de servire al clienilor din clasa k, dat de relaia


MTs(k)=TTsc(k)/Nrsc(k)
TTsc(k) fiind timpul total de servire al clienilor din clasa k;
coeficientul de lenevire al staiei de lucru se determin la fel ca n algoritmul anterior..

Descrierea algoritmului de simulare.


Procedure SistAstMclaseOstaieHOL(m,Tnra);
Citete(
Param.
de
generare
ai
interv.
ntre
dou
sosiri
consecutive, ai timpului de servire, ai clasei de prioriti);
For i=1,m do
nc(i)0; Tw(i)0;
Ttsc(i) 0;Nrsc(i)0
Endfor;
Ltime0; Ctime;Gen(IntAriv, cp, Stime);
AtimeIntAriv; Nra1;

33

While NraTnra do
If AtimeCtime then {Aevent}
If busy=0 then {Staia este liber}
TlenTlen+Atime-Ltime;TscStime;CtimeAtime+Stime
Else {Actualizarea timpilor de ateptare n coad}
for i=1,m do
Tw(i)Tw(i)+nc(i)*(Atime-Ltime)
endfor;
nc(cp)nc(cp)+1;Ts(cp,nc(cp))Stime;
Endif;
Gen(IntAriv,cp,Stime;LtimeAtime;AtimeAtime+IntAriv;NraNra+1;
Else{Cevent}
for i=1,m do
Tw(i)Tw(i)+ nc(i)*(Ctime-Ltime)
endfor;
LtimeCtime;Nrsc(cs)Nrsc(cs)+1;
Tts(cs)Tts(cs)+Tsc;cs1;
while (cs<m)and (nc(cs)=0)do cscs+1 endwhile;
If ( cs=m) and (nc(cs)=0) then Ctime;
Else
CtimeCtime+Ts(cs,1); TscTs(cs,1);
For k=1,nc(cs)-1 do Ts(cs,k)Ts(cs,k+1) endfor;
nc(cs)nc(cs)-1;
Endif;
Endif
Endwhile
Mqueue0;Tts0;Nrs0;
for i=1,m
MTw(i)Tw(i)/Nrsc(i);Mtsc(i)Ttsc(i)/Nrsc(i);
MLq(i)Tw(i)/Ltime;Mqueue Mqueue+ MLq(i);
NrsNrs+Nrsc(i); TtsTts+Ttsc(i);
Endfor;
ClenTlen/Ltime; MTsTts/Nrs;
Scrie:( MTw(i), Mtsc(i), MLq(i),i=1..m), Clen, Mqueue, MTs
End

S ne reamintim...
Fa de algoritmul de simulare al modelului cu disciplina FIFO apar urmtoarele
deosebiri:
Numrul de clieni din coad este organizat ca un vector
Coada este organizat ca un vectorul
bidimensional Ts=(Ts(i,j), i=1,..,m,
j=1,..,nc(i)), nc(i) 1; Ts(i,j) conine timpul de servire al celui de-al j-lea client din
clasa i, poziia n list fiind dat de ordinea sosirii (disciplina FIFO n cadrul clasei).
Variabila cs, indic indicele de clas cea mai nalt al clienilor aflai n coad, este
dat de urmtoarea relaie
min {i/nc(i) > 0,i = 1,..,m}, daca exista i astfel incat nc(i ) > 0
cs =
m + 1, altfel
Numrul de clieni din coad este organizat ca un vector

34

Validarea algoritmului i consideraii practice


Exemplu. Dac considerm modelul n care intervalul ntre sosiri, respectiv
durata serviciului sunt exponeniale negative de parametri 0.5, respectiv 1,
numrul claselor de prioriti este 2 i numrul sosirilor simulate este 10000,
obinem:
(a) prin simulare
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.6563
- Media timpului de ateptare n coad al clienilor de clas 2 = 1.3337
- Media timpului de servire al clienilor de clas 1= 1.0039
- Media timpului de servire al clienilor de clas 1= 0.9904
- Intesitatea de trafic = 0.5100
- Numrul mediu de clieni din coad de clas 1 = 0.1635
- Numrul mediu de clieni din coad de clas 2 = 0.3478
(b) analitic (folosind formulele prezentate n [MiCiMu73])
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.6643
- Media timpului de ateptare n coad al clienilor de clas 2 = 1.3285
- Media timpului de servire al clienilor de clas 1= 1.0000
- Media timpului de servire al clienilor de clas 2=1.0000
- Intesitatea de trafic = 0.5000
- Numrul mediu de clieni din coad de clas 1 = 0.1643
- Numrul mediu de clieni din coad de clas 2 = 0.3357
Observm c rezultatele obinute prin simulare sunt foarte apropiate de cele
obinute analitic.
Exemplu.Modelul n care intervalul ntre sosiri, respectiv durata serviciului sunt
exponeniale negative de parametri 0.5, respective 1, numrul claselor de
prioriti este 1 i numrul sosirilor simulate este 10000.
(a) Rezultatele obinute prin simulare sunt:
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.99216
- Media timpului de servire al clienilor de clas 1= 1.00326
- Intesitatea de trafic = 0.49928
- Lungimea medie a cozii = 0.49875
Observaie. Deoarece avem o singur clas de prioriti i n cadrul clasei se
respect ordinea sosirilor, modelul este de fapt unul cu disciplina primul-sosit
primul-servit. Rezultatele simulrii concord cu aceast observaie, fiind
aproximativ egale celor obinute analitic n cazul primul-sosit primul-servit .
I.ntrebri.
1. Cum este organizat coada n cadrul sistemelor HOL.
2. Cum se selecteaz clientul care va fi servit de ctre staie.
3. Care factori de eficien se determin n plus.
4. De ce atunci cnd se consider o singur clas de prioriti sistemul este
acelai cu disciplina FIFO.
M2.U1.6. Simularea sistemelor de ateptare cu evacuarea clientului servit
Entitile modelului, mecanismul simulrii i descrierea algoritmului. Entitatea coad
este caracterizat de atributele nc i Ts amintite n cazul head of line la care se adaug
vectorul bidimensional Tc, Tc=(Tc(i,j), i=1,..,m, j=1,..,nc(i)), nc(i) 1); Tc(i,j) are valoarea

35

0, respectiv o valoare ntreag mai mare dect 0, dup cum al j-lea client din clasa i nu este
evacuat sau este evacuat; n momentul sosirii, componenta corespunztoare a vectorului este
iniializat cu 0 i la fiecare evacuare este incrementat. Entitatea server este descris de
variabilele Ctime, Tsc, care au aceeasi semnificatie cu cea prezentat pentru modelul anterior
si variabila tcs care reprezint tipul clientului n curs de servire.
Prelucrarea urmtoarei sosiri const n:
dac staia este neocupat, clientul sosit este servit imediat i se actualizeaz timpul total de
lenevire a staiei;
dac staia este ocupat:
- se actualizeaz timpii de ateptare n coad ai clienilor pe clase de prioritate;
- dac clientul sosit are o prioritate mai slab dect a clientului servit, clientul sosit este
introdus n coad, altfel sunt actualizate valorile vectorilor care dau timpii totali de servire i
ale celor ce dau numrul de servicii, clientul n curs de servire este evacuat, este introdus n
coad pe prima poziie n cadrul clasei sale cu timpul de servire rmas pn la completarea
serviciului, adic diferena dinte Ctime i Atime, incrementdu-se tc-ul su.
Prelucrarea terminrii unei serviri, const n actualizarea timpilor totali de ateptare n coad,
a timpilor totali de servire i a numrului de servicii, urmat de determinarea variabilei cs,
conform formulei (2.1.15); dac coada este vid (cs=m+1) staia intr n lenevire (Ctime=),
altfel (csm) se selecteaz pentru servire primul client din clasa cs i acesta este scos din
coad.
La sfritul simulriise determina a factorii de eficien.
timpul mediu de ateptare n coad al clienilor din clasa k neevacuai, MTw(k), exprimat
prin:
MTw(k)=Tw(k)/Nrsc(k), n care Tw(k), respectiv Nrsc(k) reprezint timpul total
ateptare al clienilor, respectiv numrul clienilor servii neevacuai din clasa k, k=1,..,m;
timpul mediu de ateptare n coad al clienilor din clasa k evacuai, MTwe(k), exprimat
prin: MTwe(k)=Twe(k)/Nrsce(k), n care Twe(k), respectiv Nrsce(k) reprezint timpul total
ateptare al clienilor, respectiv numrul clienilor servii evacuai din clasa k, k=1,..,m;
numrul mediu de clieni din clasa k aflai n coad, MLq(k), comform formulei
MLq(k)=(Tw(k)+ Twe(k))/Ltime ;
m

lungimea medie a cozii Mqueue, exprimat prin MQueue = MLq( k ) ;


k =1

timpul
mediu
de
servire
al
clienilor
din
clasa
k
neevacuai,
MTsc(k)=TTsc(k)/Nrsc(k);TTsc(k), respectiv Nrsc(k) fiind timpul total de servire, respectiv
numrul clienilor neevacuai servii din clasa k;
timpul mediu de servire al clienilor din clasa k evacuai, MTsce(k)=TTsce(k)/Nrsce(k),
TTsce(k), respectiv Nrsce(k) fiind timpul total de servire, respectiv numrul clienilor evacuai
servii din clasa k;
timpul mediu de servire al staiei MTs, exprimat prin MTsTTs/Nrs, n care Tts este timpul
total de servire iar Nrs reprezint numrul total de servicii;
coeficientul de lenevire al staiei de lucru, Clen
ClenTlen/Ltime, n care Tlen
reprezint timpul total de lenevire, iar 1-Clen reprezint intensitatea de trafic a sistemului sau
coeficientul de utilizare al staiei.
n continuare vom prezenta procedura pseudocod, care descrie algoritmul de simulare
pentru acest model.
Procedure SistAstPrioritEvacOstat(m,Tnra);
Citete(Param.de gen.ai inter.ntre dou sosiri consec. ai timpului
de servire, ai clasei de prioriti);

36

for

i=1,..,m do
Tw(i)0;
Twe(i)0; nc(i)0; Nrsc(i)0 ;
TTsc(i)0;Nrsce(i)0; TTsce(i)0 ;
endfor;
Ltime0; Ctime;
Gen(IntAriv, cp, Stime);AtimeIntAriv;Nra1;
While NraTnra do
If AtimeCtime then{Aevent}
if busy=0 then
TlenTlen+(Atime-Ltime);
CtimeAtime+Stime;TscStime; cscp;
Tcs0
else
for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Atime-Ltime
else
Twe(i)Twe(i)+Atime-Ltime
endif
endfor;
endfor
if cscp then
nc(cp)nc(cp)+1;Ts(nc,nc(cp))Stime;
Tc(nc,nc(cp))0
Else {are loc o evacuare}
If Tcs=0 then
Nrsc(cs)Nrsc(cs)+1;
Ttsc(cs)Ttsc(cs)+Tsc-(Ctime-Atime)
Else
Nrsce(cs)Nrsce(cs)+1;
Ttsce(cs)Ttsce(cs)+Tsc-(Ctime-Atime)
Endif;
nc(cs)nc(cs)+1;
for i=nc(cs),2 downto
Ts(cs,i)Ts(cs,i-1);
Tc(cs,i)Tc(cs,i-1);
Endfor;
Tc(cs,1)tcs+1;
Ts(cs,1)Ctime-Atime;
cscp;
CtimeAtime+Stime;
tcs0;
TscStime
endif;
Gen(IntAriv,cp,Stime);
LtimeAtime;
AtimeAtime+IntAriv;
NraNra+1;
Else {Cevent}

37

for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Ctime-Ltime
else Twe(i)Twe(i)+Ctime-Ltime
endif
endfor;
endfor;
If tcs=0 then
Nrsc(cs)Nrsc(cs)+1; Ttsc(cs)Ttsc(cs)+Tsc
Else
Nrsce(cs)Nrsce(cs)+1;Ttsce(cs)Ttsce(cs)+Tsc
Endif;
cs1
while (cs<m) and (nc(cs)=0) do
cscs+1 endwhile;
LtimeCtime;
If (cs=m) and (nc(cs)=0) then
Ctime;
Else
CtimeCtime+Ts(cs,1);Tsc Ts(cs,1);
Tcs Tc(cs,1);
for j=1,nc(cs)-1 do
Ts(cs,j)Ts(cs,j+1);Tc(cs,j)Tc(cs,j+1)
Endfor;
nc(cs)nc(cs)-1;
Endif;
Endif
Endwhile
nrs0;Tts0;MQueue0;
for i=1,m
MTw(i)Tw(i)/Nrsc(i);MTwe(i)Twe(i)/NrSce(i);
Mtsc(i)Ttsc(i)/Nrsc(i);Mtsce(i)Ttsce(i)/Nrsce(i);
MLq(i)(Tw(i)+Twe(i))/Ltime; MQueueMQueue+Mqueue(i);
nrsnrs+nrsc(i)+ nrsce(i); TtsTTs+Ttsc(i)+Ttsce(i)
Endfor;
MtsTts/nrs;ClenTlen/Ltime;
Scrie:(MTw(i),Mtwe(i),MLq(i),Mtsc(i),Mtsce(i),i=1..m),
Clen,Mts,MQueue
End.

S ne reamintim...
Fa de algoritmul de simulare al modelului cu disciplina HOL apar urmtoarele
deosebiri:
Cnd are loc o sosire, se testeaz dac clasa clientului sosit este superioar celei a
clientului n curs de servire. n caz afirmativ, se produce forarea staiei de servire,
adic clientul n curs de servire este re-introdus n coad, cu un timp de servire egal
cu diferena dintre Ctime i Atime.
Se folosete o nou variabil care codific daca clientul respectiv este evacuat sau
nu.
Se calculeaz i ali factori de eficien legai de clienii evacuai.

38

Exemplu. Dac intervalul de timp ntre sosiri, respectiv durata serviciilor sunt
exponeniale negative de parametri 1, respectiv 2, avem dou clase de prioriti i
numrul evenimentelor simulate este 5000, obinem:
- Timpul mediu de ateptare n coad al clienilor de clas 1 = 0.13884;
- Timpul mediu de ateptare n coad al clienilor de clas 2 = 0.78191;
- Timpul mediu de servire al clienilor neevacuai de clas 1 = 0.51473;
- Timpul mediu de servire al clienilor evacuai de clas 1 = 0.00000;
- Timpul mediu de servire al clienilor neevacuai de clas 2 = 0.49412;
- Timpul mediu de servire al clienilor evacuai de clas 2 = 0.41449;
- Lungimea medie a cozii=0.49757;
- Intensitatea de trafic = 0.50248.
- Timpul mediu de ateptare n coad al clienilor de clas 1 = 0.13692;
- Timpul mediu de ateptare n coad al clienilor de clas 2 = 0.77384.
Observm c mediile timpilor de ateptare n coad determinate prin simulare sunt
apropiate de cele determinate analitic n cazul considerat. De asemenea, timpul
mediu de servire al clienilor de clas 1 este 0, ceea ce concord cu faptul c clienii
de clas 1 nu pot fi evacuai.
I. ntrebri.
1.Pe ce tip de eveniment poate apare forarea staiei
2.Prin ce variabil se evideniaz c un client a fost evacuat.
3.Care factori de eficien se determin n plus fa de sistemele cu disciplina HOL.
4. Cum se determin timpul de servire al clientului evacuat.
M2.U1.7. Test de evaluare a cunotinelor
Marcai varianta corect.
1. Repartiia exp(), are media:
a) .
b)

c) 2

d)

2. Dac Pn (t ) reprezint probabilitatea sosirii a n clieni n sistem ntr-un interval de lungime


t, atunci:
( t ) n e t
(t ) n e t
.
c) Pn (t ) =
.
a) Pn (t ) =
n
n!
( t ) n e t
( t ) n
P
(
t
)
=
b) Pn (t ) =
.
d)
.
n
n!
n2
3. Probabilitatea s aib loc o singur sosire pe intervalul t, va fi:
c) e t .
a) ( t )e t .
b) ( t 2 )e t .
d) 2 ( t )e t .
4. Probabilitatea ca un serviciu s fie terminat ntr-un interval de timp t este :
c) t + O ( t ) .
a) 2 t + O( t ) .
b) 2 t + O( t ) .

d) t + 2O( t ) .

39

5. Numrul mediu de clieni n sistem este:


a)

.
2

d)
.

c)


2
.
b)

6. Lungimea medie a cozii este dat de:

n
.
1
2
b)
.
1

2n
.
1

.
d)
1

a)

c)

7. Timpul mediu de ateptare n sistem este dat de:


a)

c)

2
1
.
d)
.


8. Timpul mediu de ateptare n coad este dat de:
b)

a)

b)
.
( )
9. Dac AtimeCtime are loc :

c)

d)

.
( )

a) determinarea factorilor de eficien.


c) prelucrarea unei sosiri.
b) terminarea simulrii.
d) prelucrarea unei serviri.
10. Ctime= dac:
a) serverul este liber i nu exist clieni
c) serverul termin servirea unui
ce urmeaz s fie servii.
client.
b) coada este vid.
d) n coad exist un singur client
11. n cazul algoritmului cu evacuarea staiei, dac clientul sosit are o prioritate mai tare dect
a clientului servit:
a) Clientul n curs de servire este
b) Clientul n curs de servire este
evacuat, este introdus n coad pe prima
evacuat, este introdus n coad pe
poziie n cadrul clasei sale cu timpul de
prima poziie n cadrul clasei sale cu
servire rmas pn la completarea
reluarea servirii.
serviciului.
a) Clientul n curs de servire este scos
Clientul sosit este introdus n coad.
din sistem.

40

M2.U1.8. Rezumat
Aceast unitate de nvare prezint modelarea i simularea sistemelor de ateptare
cu o staie de servire. La nceput este prezentat un model matematic pentru un sistem
cu o singur staie de servre, disciplina FIFO, cu repartiii exponeniale ale
intervalului ntre dou sosiri consecutive i timpului de servire. Aceast abordare
analitic a sistemelor de ateptare, scoate n eviden utilizarea unor cunotiine de
teoria probabilitilor n modelarea sistemelor de ateptare.
n continuare sunt prezentai algoritmi de simulare pentru sistemele de ateptare
corespunztoare celor trei discipline de servire. Pentru fiecare algoritm, sunt
prezentate rezultate ale execuiei programelor obinute prin implementarea
algoritmilor; sunt comparate rezultatele obinute prin simulare cu cele rezultate din
formulele analitic.

41

Unitatea de nvare M2.U2. Modelarea i simularea sistemelor de


ateptare cu un numr constant de staii de servire paralele cu
coad unic
Cuprins
M2.U2.1. Introducere........................................................................................................... 42
M2.U2.2. Obiectivele unitii de nvare............................................................................. 43
M2.U2.3. Modelul exp()/exp()/c:(,FIFO) ..................................................................... 43
M2.U2.4. Algoritmul de simulare pentru modelul cu disciplina primul-sosit-primulservit..........................................................................................................................................49
M2.U2.5. Simularea sistemelor cu numr constant de staii paralele de tip head-of-line .......50
M2.U2.6.Simularea sistemelor cu numr constant de staii paralele cu evacuarea clientului
servit..........................................................................................................................................54
M2.U2.7. Teste de evaluare ................................................................................................. 55
M2.U2.8. Rezumat............................................................................................................... 55
M2.U2.1. Introducere
Exist numeroase sisteme care pot fi studiate ca modele de ateptare cu un numr
constant de staii de servire paralele. ncepnd cu un magazin cu mai multe case de
marcat i continund cu un sistem de calcul multi-procesor, putem da exemple de
astfel de sisteme.
Studierea analitic a modelului n care, att intervalul ntre dou sosiri consecutive,
ct i timpul de servire au sunt valori selecie ale variabilei exponeniale negative
(de parametri diferii) i disciplina de servire este FIFO, este important deoarece
ofer cititorului un exemplu de utilizare a conceptelor matematice n modelarea
unui astfel de sistem. De asemenea, formulele matematice ale factorilor de
eficien ai acestui model vor fi utilizate pentru a compara rezultatele obinute prin
programul de simulare implementat pe baza algoritmului prezentat cu cele
obinute, prin formule matematice.
De asemenea, vom considera modelele corespondente n care clienii sunt mprii
n clase de prioriti. Vor fi evideniate elementele care le difereniaz de cele cu
disciplina FIFO i vor fi prezentate mai multe exemple de execuie a programelor
de simulare, din care vom deduce c algoritmii de simulare respect logica
modelelor respective.

M2.U2.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n modelarea i simularea sistemelor de ateptare cu mai multe staii de servire
paralel. La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice un model matematic al acestei clase de sisteme;
 identifice sisteme din lumea real care se pot studia prin modelare i simulare
conform teoriei prezentate;
 implementeze algoritmii prezentai.

42

Durata medie de parcurgere a unitii de nvare este de 3 ore.

M2.U2.3. Modelul exp(


)/exp(
)/c:(
,FIFO)
Sistemul de ateptare este caracterizat de un flux al intrrilor poissonian de parametru , adic
intervalul ntre dou sosiri consecutive este o variabil aleatoare exponenial negativ de
parametru i n care duratele de servire n fiecare staie au aceeai repartiie exponenial
negativ de parametru . Presupunem c sistemul are c staii dispuse n paralel (c este o
constant natural). Presupunem c la momentul t=0 n sistem ateapt i clieni(iN). Se
formeaz o singur coad de ateptare i clienii sunt servii dup regula FIFO. Aceasta
nseamn c dac o staie este liber, primul client din coad va fi servit de staia respectiv.
Dac dou sau mai multe staii se elibereaz simultan, atunci primul client va fi servit de staia
cu numrul de ordine cel mai mic; presupunem c staiile sunt numerotate n ordinea 1,,c.
Ca i n cazul sistemelor de ateptare cu o singur staie de servire, notm cu
Pn (t ) = P ( N (t ) = n) , adic probabilitatea ca n sistem la momentul t s fie n clieni. Dac n=0
este valabil acelai raionament din cazul sistemelor de acelai tip cu o singur staie de
servire([GrHa98], [Vd77]), deci vom obine relaia:
P0 (t + t ) = P0 (t )[1 t + O(t )] + P1 (t )[ t + O (t )][1 t + O (t )]
Fie 1nc-1; n acest caz coada de ateptare va fi vid deoarece numrul clienilor din sistem
este mai mic dect numrul staiilor de servire. Dac E este evenimentul care const n faptul
c pe intervalul (t,t+t) s fie servit un singur client, atunci 1-P(E), va fi probabilitatea ca
nici un client s nu fie servit pe intervalul (t,t+t). n acest caz, oricare din clienii n curs de
servire pot pleca n intervalul de timp (t,t+t). Acest eveniment se realizeaz cu probabilitatea
1-[1-P(E)]n . Pe de alt parte s observm c, pentru n<c, avem:

n
n
n
[1 P( E )] n = 1 P( E ) + ... + (1) k [ P( E )] k + ... + (1) n [ P( E )]n =
n
k
1
n
= 1 [ t + O(t )] + .... = 1 nt + O(t )
1
deci 1 [1 P( E )]n = nt + O (t ) .
Pe baza acestor consideraii, folosind un raionament analog celui din cazul sistemului de
ateptare cu o singur staie, putem scrie relaia:
Pn (t + t ) = Pn (t )[1 t + O(t )][1 nt + O (t )] + Pn +1 (t )[1 t + O (t )][(n + 1) t + O(t )] +
+ Pn 1 (t )[t + O(t )][1 (n 1) t + O(t )] + Pn (t )[t + O(t )][nt + O(t )]
n cazul nc, printr-un raionament similar obinem:
Pn (t + t ) = Pn (t )[1 t + O (t )][1 ct + O(t )] + Pn+1 (t )[1 t + O (t )][ct + O (t )] +
+ Pn 1 (t )[t + O (t )][1 ct + O(t )] + Pn (t )[t + O(t )][ct + O(t )]
Procednd la fel ca n cazul sistemului de ateptare cu o singur staie, obinem:
P0' (t ) = P1 (t ) P0 (t )

43

Pn' (t ) = Pn 1 (t ) ( + n ) Pn (t ) + ( n + 1) Pn +1 (t ), n = 1,.., c 1.

(2.2.1)

Pn' (t ) = Pn 1 (t ) ( + c ) Pn (t ) + cPn +1 (t ), n = c, c + 1,....


Considerm acum cazul staionar, n care Pn (t ) = p n , n 0 . Sistemul de ecuaii difereniale
(2.2.1) devine:

p1 p 0 = 0
p n 1 ( + n ) p n + (n + 1) p n +1 = 0, n = 1,.., c 1

(2.2.2)

p n 1 ( + c ) p n + cp n+1 = 0, n = c, c + 1,....
din a doua ecuaie a sistemului (3.29 2.2.2) obinem:

p n 1 np n = p n 1 (n + 1) p n +1 = 0, n = 1,.., c 1
Z n = p n1 np n

Dac notm cu

Relaia precedent devine:

Z n Z n +1 = 0, n = 1,.., c 1

Deoarece din prima ecuaie a sistemului (2.2.2) deducem Z 1 = 0 , rezult c pentru n=0,1,..,c1 avem c Z n = 0 , relaie care se mai poate scrie sub forma:

pn =

p n 1 = p n1 , n = 0,1,.., c 1
n
n

( 2.2.3)

din care rezult


pn =

n
n!

p 0 , n = 0,1,.., c 1.

(2.2.4)

Dac nc, mai nti folosim ultima ecuaie a sistemului (2.2.3), n care lum n=c. Deci
( + c ) p c = p c 1 + cp c +1
care se mai poate scrie sub forma
c ( p c +1 p c ) = ( p c p c 1 )
Dac aceeai relaie o scriem pentru c+1, c+2,..,c+r(rN*), gsim
c ( p c + 2 p c +1 ) = ( p c +1 p c )
.................................................
c ( p c + r +1 p c + r ) = ( p c + r p c + r 1 )
Adunnd membru cu membru aceste relaii, obinem: c ( p c + r +1 p c ) = ( p c + r p c 1 )
sau

cp c + r +1 + Z c = p c + r

Dar Zc=0 i deci

p c + r +1 =

Aadar, pentru n=c,c+1, avem

p c + r , r N adic p c + r +1
*

pn =
c

=
c

r +1

c
c!

p0

n c

pc

44

(2.2.5)

unde

pc =

c
c!

p0

Deci soluia sistemului se poate scrie sub forma


n
p 0 , daca n = 0,1,.., c - 1

n!
pn = n

p , daca n c
c!c n c 0

(2.2.6)

c 1 n c
c 1 n 1 n
1
p
p
=
+
avem
=
+
p
=
1

n c 0
0
n
c!
n=0
n =0 n!
n =0 n! c! n =c c

Din condiia

n
c
c 1

+
p0 =
n =0 n!

c!1 c

din care rezult

Dac notm cu * =

n=c c

(2.2.7)

, * reprezentnd factorul de utilizare al sistemului, atunci


c

c 1
c
n
formula precedent se mai poate scrie p 0 =
+

*
n = 0 n!
c! 1

(2.2.8)

De asemenea formula (2.2.6) se poate scrie n funcie de * astfel


n
p 0 , daca n = 0,1,.., c - 1

n!
pn = c
* n c p , daca n c
0
c!

(2.2.9)

( )

S determinm acum caracteristicile modelului. Lungimea medie a cozii este:

LQ =

(n c) p n =

n = c +1
2

(n c)

n = c +1

( )
c!

* n c

p0 =

* + 2 * + 3 * + ... = * (1 + 2 * + 3 * + .....) = *
Dar
= *

c
c!

p 0 * + 2 * + ...

2
d
* + * + ..... =
*
d

*
d *

=
d * 1 * (1 * ) 2

Prin urmare

LQ = p 0

c +1

c!c 1 *

Dac n formula obinut nlocuim expresia lui * , obinem

45

(2.2.10)

LQ = p 0
(c 1)!c (c )2

(2.2.11)

Numrul mediu al staiilor neocupate este LS = c

(2.2.12)

Folosind formulele anterioare obinem:


c 1

c 1

LS = (c n) p n = p 0 (c n )
n =0

n =0

c 1 n c 1 n 1
= p 0 c

=
n!
n =0 n! n =1 ( n 1)!

c 1

n 1
c
n
c
(
)

p
c
=

+
= p 0 c

+

0
=

(c 1)!
(c 1)!
n = 0 n!
n =1 ( n 1)!

n =0 n!
c 1

c 1 n 1 c
c 1 n
1
c
(
)
=

+
p
c
= p 0 ( c )
+
0

*
n =0 n! c! (1 )
n =0 n! c (c 1)!
1
= p 0 (c )
=c
p0

Numrul mediu de clieni n sistem N, se calculeaz adugnd la lungimea medie a cozii


numrul mediu de clieni care sunt servii care este c * = =

, deci

N = p0
+
2
(c 1)!c (c )

(2.2.13)

Pentru a afla timpul mediu de ateptare n sistem, notat cu WT vom folosi formula lui Little,
N=WT, din care va rezulta c:
c

1
1
1
1
1

+
+
= p0
WT = p 0
2
2

(c 1)!c (c )
(c 1)!c (c )

(2.2.14)

Timpul mediu de aeptare n coad, notat cu WTQ, se obine din relaia WTQ=WT-1/,

adic: WTQ = p 0

(2.2.15)

(c 1)!c (c )2

S ne reamintim...
Exist o coad unic la toate staiile de servire. Cnd un client sosete n sistem, el
este servit imediat, altfel el este introdus ultimul n coad (regula FIFO).
Cnd se elibereaz o staie de servire, aceasta va servi primul client din coad
(regula FIFO).
n cazul modelului exp()/exp()/c:(,FIFO), factorii de eficien ai sistemului
sunt exprimai de formulele 2.2.10-2.2.15
Factorul de utilizare al sistemului este dat de formula * =

46

Exemplu. ntr-un atelier se afl patru strunguri. Se constat experimental c


legea sosirilor este poissonian, sosind n medie 10 piese pe or. Timpul de
prelucrare al unei piese la o main urmeaz o lege exponenial negativ i
numrul mediu de piese prelucrate pe or este 8. S se determine:i)Probabilitatea
ca n atelier s nu existe nici o pies neprelucrat la un moment dat.
ii)Probabilitatea ca n secie s nu existe nici o pies care s atepte s fie
prelucrat la un moment dat. iii)Numrul mediu de piese care ateapt s fie
prelucrate la un moment dat, precum i numrul de piese care exist n atelier la
acel moment i timpul mediu de ateptare al unei piese pn cnd intr n
prelucrare, precum i timpul mediu ct o pies st n atelier.
Rezolvare. Modelul de ateptare corespunztor acestei probleme este unul cu
n=4 staii de servire, fluxul intrrilor este = 10 /or, fluxul ieirilor este = 8 /
or.
1
1
i) p 0= =
=
=
k
n
k
4
3
n 1
1 10
8
10


+
+

3!(32 10 ) 8
(n 1)!(n )
k = 0 n! 8
k = 0 n!
1
=
= 0,285 = 28,5 %
2
3
4
10 1 10
1 10
8 10
1+ + + +

8 2 8
6 8
6 22 8
ii) Probabilitatea evenimentului de a nu exista nici o pies care s atepte la un
1
moment dat este p = p 0 + p1 + p 2 + p3 + p 4 , unde: p1 = p 0 = 0,356 ,
1!
2

1
1
1
p 2 = p 0 = 0,222 , p3 = p 0 = 0,092 ,
p 4 = p 0 = 0,028 ,
2!
3!
4!
deci p=0,698=69,8 % 70 %.
iii)Numrul mediu de piese care ateapt s intre n prelucrare la un moment dat
reprezint
lungimea
medie
a
cozii
i
este
dat
de

E[ L ] =
(n 1)!(n )2

10 8
p 0 =
2
3!(32 10 )

10
0,285 = 0,0192 piese.
8
10

= 1,269
Numrul mediu de piese din sistem este E[ N ] = E[ L] + = 0,0912 +

8
piese.Timpul mediu de ateptare a unei piese n coad este
n

8
10
p 0 =
E[WTQ ] =
0,285 = 0,00192 ore =
2
2
(n 1)!(n )
3!(32 10 ) 8
0,115 min. Timpul mediu de staionare al unei piese n sistem este
1
1
E[WT ] = E[WTQ ] + = 0,00192 + = 0,126 ore = 0,115 min.

8
I. ntrebri.
1.Care este formula intesitii de trafic n acest caz.
2.Care sunt tipurile de evenimente care descriu variaia numrului de clieni din
sistem.
3. Cum se calculeaz media numrului de clieni din sistem.
4. Care factori de eficien suplimentari se determin fa de sistemul cu o
singur staie de servire.

47

M2.U2.4. Algoritmul de simulare pentru modelul cu disciplina primul-sosit-primul-servit


Entittile modelului si mecanismul simulrii. Entitatea coad este descris de aceleai
variabile ca i n cazul modelului cu aceeasi disciplina de servire prezentat n unitatea de
nvare anterior. Entitatea server este format din ansamblul celor n staii de servire
independente. Fiecare staie este identificat prin numrul su de ordine i, i=1,..,n i este
caracterizat de atributele(variabilele) urmtoare:
Ctime(i), reprezint timpul eveniment al terminrii servirii unui client de ctre staia i, adic
ceasul staiei. Dac staia este liber i nu exist clieni ce urmeaz s fie servii atunci
Ctime(i)= ;
Tsc(i) este durata timpului de servire al clientului servit de staia i, i=1,..,n.
Fie Ct dat de relaia:
Ct=min{Ctime(i)/i=1,..,n}
i ip, indicele de staie, dat de:
ip=min{i/Ctime(i)=Ct; i=1,..,n}
Dac AtimeCtime(ip), se prelucreaz sosirea respectiv, adic clientul sosit este servit de
staia de indice cel mai mic neocupat, dac exist staii n lenevire sau clientul sosit este
introdus n coad i se actualizeaz timpii totali de ateptare n coad, n caz contrar.
Dac Atime>Ctime(ip), atunci evenimentul urmtor este terminarea servirii de ctre staia ip,
situaie n care se actualizeaz timpii totali de ateptare, timpii totali de servire, numerele
totale de servicii, dup care se trece la servirea unui nou client, dac coada este nevid sau
staia respectiv trece n lenevire.
La sfritul simulrii se determin factorii de eficien:
MTW reprezint media timpului de ateptare a unui client n coad MTw=Tw/Tnrs;
Mts ce reprezint timpul mediu de servire a unui client Mts=Ttss/Tnrs;
MTs(i) reprezint timpul mediu de servire al staiei i, i=1,..,n MTs(i) Tts(i)/Nrs(i);
Clen ce reprezint coeficientul de lenevire al staiei de lucru i Clen(i)=Tlen(i)/Ltime;
Mqueue care este lungimea medie a cozii Mqueue=Tw/Ltime.
n aceste formule Tw reprezint timpul total de ateptare n coad al tuturor clienilor, Ttss
este timpul total de servire al staiilor, Nrss este numrul total de servicii, Tlen(i),
respectivTts(i) si Nrs(i) este timpul total de lenevire, respectiv timpul total de servire si
numrul total de servicii ale satiei de lucru i, i=1,..,n, iar Ltime este lungimea intervalului de
timp n care se deruleaz simularea.
Procedura pseudocod urmtoare descrie algoritmul de simulare.
Procedure SistAstnStaiiFIFO(n,Tnra);
Citete: Parametrii de generare ai intervalului ntre dou sosiri
consecutive i ai timpului de servire;
Nc0;Ltime0;Tw0;
For i=1,n do
Tts(i)0; Nrs(i)0;
Ctime(i) ;
endfor;
Gen (IntAriv,Stime);AtimeIntAriv;Nra1;
While NraTnra do
ip1;
for i=2,n do if Ctime(i)>Ctime(ip) then ipi endif endfor;
If AtimeCtime(ip) then{Aevent}
TwTw+Nc*(Atime-Ltime);j0;
do jj+1 until (busy(j)=0) or (j=n);

48

If Ctime(j)= then
For i=j,n do
If Ctime(i)= then Tlen(i)Tlen(i)+Atime-Ltime endif;
endfor;
Ctime(j)Atime+Stime;Tsc(j)Stime
Else NcNc+1; Ts(Nc)Stime
Endif;
LtimeAtime;Gen(IntAriv,Stime);
AtimeAtime+IntAriv;NraNra+1;
Else{Cevent}
TwTw+Nc*(Ctime(ip)-Ltime);LtimeCtime(ip);
NrssNrss+1;TTssTTss+Tsc(ip);
Tts(ip)Tts(ip)+Tss(ip);Nrs(ip)Nrs(ip)+1;
If Nc=0 thenCtime(ip)
Else
NcNc-1; Tsc(ip) Ts(1);Ctime(ip)Ctime(ip)+Ts(1);
For i=1,nc do Ts(i) Ts(i+1) Endfor;
Endif;
Endif
Endwhile
MTwTw/Nrs; MTssTTts/Nrss;MClen0;
For i=1,n
MClenMclen+Clen(i); Clen(i)Tlen(i)/Ltime;
MTs(i) Tts(i)/Nrs(i)
Endfor;
MqueueTw/Ltime;MClenMclen/n;
Scrie: MTw, Mqueue,Mclen,( Mts(i), Clen(i),i=1,..,n)
End.

Exemplu.
Anterior am prezentat analitic modelul exp()/exp()/n(,FIFO). Considerm
modelul n care intervalul ntre sosiri, respectiv timpii de servire ai staiilor sunt
repartizai exponenial negativ de parametri 0.5, respectiv 0.2 iar numrul
staiilor de servire este 5.
Rezultatele obinute prin execuia programului, sunt :
- Media timpului de ateptare n coad=0.25092;
- Lungimea medie a cozii = 0.13048;
- Media timpului de servire al clienilor = 4.98565.
Rezultatele obinute analitic (folosind formulele 3.37, 3.42), sunt:
- Media timpului de ateptare n coad=0.26;
- Lungimea medie a cozii = 0.13;
- Media timpului de servire al clienilor =5.00.
Observm c rezultatele obinute prin simulare sunt aproximativ egale cu cele
analitice, ceea ce probeaz corectitudinea algoritmului de simulare.

S ne reamintim...
Etitile simulrii sunt: coada, staia de servire, mecanismul de generare a
mrimilor aleatore, entitatea de calcul a factorilor de eficien.
n orice moment este posibil unul dimtre urmtoarele dou evenimente: prelucrarea
unei sosiri sau prelucrarea terminrii unei serviri, n funcie de valorile

49

variabilelor Atime i min{Ctime(i)/i=1,..,n};


Prelucrarea unei sosiri const n: dac n momentul sosirii toate staiiile sunt
ocupate clientul este plasat n coada de ateptare (incrementarea lui Nc cu 1i Ts(nc)
primete valoarea Stime, timpul de servire generat) i se actualizeaz timpul total de
ateptare n coad al clienilor; dac exist staii n lenevire, clientul va fi servit
imediat, de staia n lenevire de indice minim caz n care se actualizeaz timpul total
de lenevire al staiei.
Terminarea servirii unui client const n: se actualizeaz timpul total de ateptare
n coad al clienilor, timpul total de lucru i numrul total de clieni servii ai staiei
care a terminat servirea; dac coada este nevid, se servete un nou client i se
decrementeaz lungimea cozii, iar n caz contrar staia intr n lenevire, adic Ctimeul su devine .

I.ntrebri.
1.Cum se stabilete valoarea timpului minim.
2.Cum se stabilete care staie de servire este selectat pentru a se servi un client
sosit cnd exist staii n lenevire.
3.Cum se stabilete valoarea timpului evenimentului urmtor.
4.Ce se ntmpl cnd o staie termin de servit un client.
5.Cum se determin timpul de lenevire al staiilor.
M2.U2.5. Simularea sistemelor cu numr constant de staii paralele de tip head-of-line
Descrierea entitilor modelului de simulare i a mecanismului simulrii. Entitatea coad este
caracterizat de atributele:
nc=(nc(1),..,nc(m)), n care nc(i) (i=1,..,m), reprezint numrul de clieni din clasa i aflai n
coad ;
vectorul bidimensional Ts=(Ts(i,j), i=1,..,m, j=1,..,nc(i)), nc(i) 1; Ts(i,j) conine timpul
de servire al celui de-al j-lea client din clasa i, poziia n list fiind dat de ordinea sosirii
(disciplina FIFO n cadrul clasei).
variabila cs, indic indicele de clas cea mai nalt al clienilor aflai n coad, este dat de
urmtoarea relaie
min {i/nc(i) > 0,i = 1,..,m}, daca exista i astfel incat nc(i ) > 0
cs =
(2.2.16)
m + 1, altfel
Entitatea server este descris de variabilele Ctime, Tsc a cror semnificaie a fost prezentat
n cadrul modelului anterior.
Prelucrarea urmtoarei sosiri const n: dac staia este liber, se actualizeaz timpul de
lenevire al staiei i se servete imediat clientul sosit, aciune care const n faptul c variabila
Ctime primete valoarea timpului de servire al clientului sosit; dac staia este ocupat se
actualizeaz timpii totali de ateptare n coad ai clienilor corespunztori claselor de clieni i
se introduce n coad clientul sosit, ultimul n cadrul clasei sale.
Prelucrarea terminrii unei serviri, const n: actualizarea timpilor totali de ateptare n coad
ai clienilor, actualizarea timpilor totali de servire ai clienilor mprii pe clase de prioriti,
incrementarea numrului total de servicii i determinarea valorii variabilei cs, n funcie de
care se execut una din urmtoarele aciuni:
- se preia un nou client pentru a fi servit (timpul de servire al acestui client va fi evident
Ts(cs,1)). Dup selectarea clientului de prioritate cs, acesta este scos din coad, ceea

50

ce este echivalent cu translatarea spre stnga a celorlali eventuali clieni de clas cs


(al doilea client devine primul .a.m.d.), datorit faptului c clienii din aceeai clas
sunt servii dup regula FIFO.
- staia intr n lenevire.
La sfritul simulrii, entitatea de determinare a factorilor de eficien, calculeaz:
timpul mediu de ateptare n coad al clienilor din clasa k, MTw(k), exprimat prin:
MTw(k)=Tw(k)/Nrsc(k), n care Tw(k), respectiv Nrsc(k) reprezint timpul total de ateptare n
coad al clienilor, respectiv numrul clienilor servii din clasa k, k=1,..,m;
numrul mediu de clieni din clasa k aflai n coad, MLq(k), conform formulei
MLq(k)=Tw(k)/Ltime ;
m

lungimea medie a cozii Mqueue, exprimat prin MQueue = MLq( k ) ;


k =1

timpul mediu de servire al clienilor din clasa k, dat de relaia MTs(k)=TTsc(k)/Nrsc(k),


TTsc(k) fiind timpul total de servire al clienilor din clasa k;
coeficientul de lenevire al staiei de lucru se determin la fel ca n algoritmul anterior..
Procedura pseudocod pentru descrierea algoritmului de simulare este prezentat n continuare.
Procedure SistAstMclaseOstaieHOL(m,Tnra);
Citete(
Param.
de
generare
ai
interv.
ntre
dou
sosiri
consecutive, ai timpului de servire, ai clasei de prioriti);
For i=1,m do
nc(i)0;
Tw(i)0;
Ttsc(i)0;
Nrsc(i)0
Endfor;
Ltime0;Ctime;
Gen(IntAriv, cp, Stime);
AtimeIntAriv;
Nra1;
While NraTnra do
If AtimeCtime then {Aevent}
If busy=0 then {Staia este liber}
TlenTlen+Atime-Ltime;TscStime;CtimeAtime+Stime
Else {Actualizarea timpilor de ateptare n coad}
for i=1,m do
Tw(i)Tw(i)+nc(i)*(Atime-Ltime)
endfor;
nc(cp)nc(cp)+1;Ts(cp,nc(cp))Stime;
Endif;
Gen(IntAriv,cp,Stime);
LtimeAtime;AtimeAtime+IntAriv;NraNra+1;
Else{Cevent}
for i=1,m do
Tw(i)Tw(i)+ nc(i)*(Ctime-Ltime)
endfor;
LtimeCtime;Nrsc(cs)Nrsc(cs)+1;
Tts(cs)Tts(cs)+Tsc;cs1;
while (cs<m)and (nc(cs)=0)do
cscs+1
endwhile;

51

If ( cs=m) and (nc(cs)=0) then Ctime;


Else
CtimeCtime+Ts(cs,1);
TscTs(cs,1);
For k=1,nc(cs)-1 do
Ts(cs,k)Ts(cs,k+1)
endfor;
nc(cs)nc(cs)-1;
Endif;
Endif
Endwhile
Mqueue0;
Tts0;
Nrs0;
for i=1,m
MTw(i)Tw(i)/Nrsc(i);
Mtsc(i)Ttsc(i)/Nrsc(i);
MLq(i)Tw(i)/Ltime;
Mqueue Mqueue+ MLq(i);
NrsNrs+Nrsc(i);
TtsTts+Ttsc(i);
Endfor;
ClenTlen/Ltime; MTsTts/Nrs;
Scrie:( MTw(i), Mtsc(i), MLq(i),i=1..m), Clen, Mqueue, MTs
End

S ne reamintim...
Fa de algoritmul de simulare al modelului cu disciplina FIFO apar
urmtoarele deosebiri:
Numrul de clieni din coad este organizat ca un vector
Coada este organizat ca un vectorul
bidimensional Ts=(Ts(i,j), i=1,..,m,
j=1,..,nc(i)), nc(i) 1; Ts(i,j) conine timpul de servire al celui de-al j-lea client din
clasa i, poziia n list fiind dat de ordinea sosirii (disciplina FIFO n cadrul clasei).
Variabila cs, indic indicele de clas cea mai nalt al clienilor aflai n coad, este
dat de formula 2.2.16

52

Exemplu. Dac considerm modelul n care intervalul ntre sosiri, respectiv


durata serviciului sunt exponeniale negative de parametri 0.5, respectiv 1,
numrul claselor de prioriti este 2 i numrul sosirilor simulate este 10000,
obinem:
(a) prin simulare
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.6563
- Media timpului de ateptare n coad al clienilor de clas 2 = 1.3337
- Media timpului de servire al clienilor de clas 1= 1.0039
- Media timpului de servire al clienilor de clas 1= 0.9904
- Intesitatea de trafic = 0.5100
- Numrul mediu de clieni din coad de clas 1 = 0.1635
- Numrul mediu de clieni din coad de clas 2 = 0.3478
(b) analitic (folosind formulele prezentate)
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.6643
- Media timpului de ateptare n coad al clienilor de clas 2 = 1.3285
- Media timpului de servire al clienilor de clas 1= 1.0000
- Media timpului de servire al clienilor de clas 2=1.0000
- Intesitatea de trafic = 0.5000
- Numrul mediu de clieni din coad de clas 1 = 0.1643
- Numrul mediu de clieni din coad de clas 2 = 0.3357
Observm c rezultatele obinute prin simulare sunt foarte apropiate de cele
obinute analitic.

Exemplu.Modelul n care intervalul ntre sosiri, respectiv durata serviciului sunt


exponeniale negative de parametri 0.5, respective 1, numrul claselor de
prioriti este 1 i numrul sosirilor simulate este 10000.
(a) Rezultatele obinute prin simulare sunt:
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.99216
- Media timpului de servire al clienilor de clas 1= 1.00326
- Intesitatea de trafic = 0.49928
- Lungimea medie a cozii = 0.49875
Observaie. Deoarece avem o singur clas de prioriti i n cadrul clasei se
respect ordinea sosirilor, modelul este de fapt unul cu disciplina primul-sosit
primul-servit. Rezultatele simulrii concord cu aceast observaie, fiind
aproximativ egale celor obinute analitic n cazul primul-sosit primul-servit .

I.ntrebri.
1.Ce factori de eficien suplimentari se calculeaz, fa de sistemul cu disciplina
FIFO.
2.Cum se selecteaz un client pentru a fi servit, cnd o staie termin de servit un
client.
3. Cum este organizat coada n acest caz.

53

M2.U2.6. Simularea sistemelor cu numr constant de staii paralele cu evacuarea


clientului servit
Entitile modelului, mecanismul simulrii i descrierea algoritmului. Entitatea coad
este caracterizat de atributele nc i Ts amintite n cazul head of line la care se adaug
vectorul bidimensional Tc, Tc=(Tc(i,j), i=1,..,m, j=1,..,nc(i)), nc(i) 1); Tc(i,j) are valoarea
0, respectiv o valoare ntreag mai mare dect 0, dup cum al j-lea client din clasa i nu este
evacuat sau este evacuat; n momentul sosirii, componenta corespunztoare a vectorului este
iniializat cu 0 i la fiecare evacuare este incrementat. Entitatea server este descris de
variabilele Ctime, Tsc, care au aceeasi semnificatie cu cea prezentat pentru modelul anterior,
si variabila tcs care reprezint tipul clientului n curs de servire.
Prelucrarea urmtoarei sosiri const n:
dac staia este neocupat, clientul sosit este servit imediat i se actualizeaz timpul total de
lenevire a staiei;
dac staia este ocupat:
- se actualizeaz timpii de ateptare n coad ai clienilor pe clase de prioritate;
- dac clientul sosit are o prioritate mai slab dect a clientului servit, clientul sosit este
introdus n coad, altfel sunt actualizate valorile vectorilor care dau timpii totali de servire i
ale celor ce dau numrul de servicii, clientul n curs de servire este evacuat, este introdus n
coad pe prima poziie n cadrul clasei sale cu timpul de servire rmas pn la completarea
serviciului, adic diferena dinte Ctime i Atime, incrementdu-se tc-ul su.
Prelucrarea terminrii unei serviri, const n actualizarea timpilor totali de ateptare n coad,
a timpilor totali de servire i a numrului de servicii, urmat de determinarea variabilei cs,
conform formulei (2.2.16); dac coada este vid (cs=m+1) staia intr n lenevire (Ctime=),
altfel (csm) se selecteaz pentru servire primul client din clasa cs i acesta este scos din
coad.
La sfritul simulriise determina a factorii de eficien.
timpul mediu de ateptare n coad al clienilor din clasa k neevacuai, MTw(k), exprimat
prin:
MTw(k)=Tw(k)/Nrsc(k) n care Tw(k), respectiv Nrsc(k) reprezint timpul total
ateptare al clienilor, respectiv numrul clienilor servii neevacuai din clasa k, k=1,..,m;
timpul mediu de ateptare n coad al clienilor din clasa k evacuai, MTwe(k), exprimat
prin: MTwe(k)=Twe(k)/Nrsce(k), n care Twe(k), respectiv Nrsce(k) reprezint timpul total
ateptare al clienilor, respectiv numrul clienilor servii evacuai din clasa k, k=1,..,m;
numrul mediu de clieni din clasa k aflai n coad, MLq(k), comform formulei
MLq(k)=(Tw(k)+ Twe(k))/Ltime ;
m

lungimea medie a cozii Mqueue, exprimat prin MQueue = MLq( k ) ;


k =1

timpul mediu de servire al clienilor din clasa k neevacuai, dat de relaia:


MTsc(k)=TTsc(k)/Nrsc(k), TTsc(k), respectiv Nrsc(k) fiind timpul total de servire, respectiv
numrul clienilor neevacuai servii din clasa k;
timpul mediu de servire al clienilor din clasa k evacuai, dat de relaia:
MTsce(k)=TTsce(k)/Nrsce(k),TTsce(k), respectiv Nrsce(k) fiind timpul total de servire,
respectiv numrul clienilor evacuai servii din clasa k;
timpul mediu de servire al staiei MTs, exprimat prin MTsTTs/Nrs, n care Tts este timpul
total de servire iar Nrs reprezint numrul total de servicii;
coeficientul de lenevire al staiei de lucru, ClenTlen/Ltime; n care Tlen reprezint timpul
total de lenevire, iar 1-Clen reprezint intensitatea de trafic a sistemului sau coeficientul de
utilizare al staiei.

54

n continuare vom prezenta procedura pseudocod, care descrie algoritmul de simulare pentru
acest model.
Procedure SistAstPrioritEvacMaiMulteStat(m,Tnra);
Citete(Param.de gen.ai inter.ntre dou sosiri consec. ai timpului
de servire, ai clasei de prioriti);
for i=1,..,m do
Tw(i)0;
Twe(i)0; nc(i)0; Nrsc(i)0 ;
TTsc(i)0;Nrsce(i)0; TTsce(i)0 ;
endfor;
Ltime0; Ctime;
Gen(IntAriv, cp, Stime);AtimeIntAriv;Nra1;
While NraTnra do
If AtimeCtime then{Aevent}
if busy=0 then
TlenTlen+(Atime-Ltime);
CtimeAtime+Stime;TscStime; cscp;
Tcs0
else
for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Atime-Ltime
else
Twe(i)Twe(i)+Atime-Ltime
endif
endfor;
endfor
if cscp then
nc(cp)nc(cp)+1;Ts(nc,nc(cp))Stime;
Tc(nc,nc(cp))0
Else {are loc o evacuare}
If Tcs=0 then
Nrsc(cs)Nrsc(cs)+1;
Ttsc(cs)Ttsc(cs)+Tsc-(Ctime-Atime)
Else
Nrsce(cs)Nrsce(cs)+1;
Ttsce(cs)Ttsce(cs)+Tsc-(Ctime-Atime)
Endif;
nc(cs)nc(cs)+1;
for i=nc(cs),2 downto
Ts(cs,i)Ts(cs,i-1);
Tc(cs,i)Tc(cs,i-1);
Endfor;
Tc(cs,1)tcs+1;
Ts(cs,1)Ctime-Atime;
cscp; CtimeAtime+Stime;
tcs0; TscStime
endif;
Gen(IntAriv,cp,Stime);
LtimeAtime; AtimeAtime+IntAriv;
NraNra+1;
Else {Cevent}

55

for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Ctime-Ltime
else Twe(i)Twe(i)+Ctime-Ltime
endif
endfor;
endfor;
If tcs=0 then
Nrsc(cs)Nrsc(cs)+1; Ttsc(cs)Ttsc(cs)+Tsc
Else
Nrsce(cs)Nrsce(cs)+1;Ttsce(cs)Ttsce(cs)+Tsc
Endif;
cs1
while (cs<m) and (nc(cs)=0) do
cscs+1 endwhile;
LtimeCtime;
If (cs=m) and (nc(cs)=0) then
Ctime;
Else
CtimeCtime+Ts(cs,1);Tsc Ts(cs,1);
Tcs Tc(cs,1);
for j=1,nc(cs)-1 do
Ts(cs,j)Ts(cs,j+1);Tc(cs,j)Tc(cs,j+1)
Endfor;
nc(cs)nc(cs)-1;
Endif;
Endif
Endwhile
nrs0;Tts0;MQueue0;
for i=1,m
MTw(i)Tw(i)/Nrsc(i);MTwe(i)Twe(i)/NrSce(i);
Mtsc(i)Ttsc(i)/Nrsc(i);Mtsce(i)Ttsce(i)/Nrsce(i);
MLq(i)(Tw(i)+Twe(i))/Ltime; MQueueMQueue+Mqueue(i);
nrsnrs+nrsc(i)+ nrsce(i); TtsTTs+Ttsc(i)+Ttsce(i)
Endfor;
MtsTts/nrs;ClenTlen/Ltime;
Scrie:(MTw(i),Mtwe(i),MLq(i),Mtsc(i),Mtsce(i),i=1..m),
Clen,Mts,MQueue
End.

S ne reamintim...
Fa de algoritmul de simulare al modelului cu disciplina HOL apar urmtoarele
deosebiri:
Cnd are loc o sosire, se testeaz dac exist un client n curs de servire de clas mai
slab dect cea a clientului sosit; n caz afirmativ, se produce forarea unei staii de
servire care servete un astfel de client ( dac exist mai multe staii de acest fel, se
alege cea de indice minim). Clientul n curs de servire selectat pentru evacuare este
re-introdus n coad, cu un timp de servire egal cu diferena dintre Ctime-ul staiei
respective i Atime.
Se folosete o nou variabil care codific daca clientul respectiv este evacuat sau
nu.
Se calculeaz i ali factori de eficien legai de clienii evacuai.
56

Exemplu. Considerm cazul n care fluxul sosirilor, respectiv cel al servirilor sunt
exponeniale negative de parametru 1, respective 2, avem 2 clase de prioriti i o
singura staie de servire. Prin simulare obinem urmtoarele rezultate:
Media timpului de asteptare n coad a clienilor neevacuai de clas 1=0.19127
Media timpului de ateptare n coad a clienilor evacuai de clas 1=0
Media timpului de servire a clienilor neevacuai de clas 1=0.51410
Media timpului de servire a clienilor evacuai de clas 1=0
Media timpului de ateptare n coad a clienilor neevacuai de clas 2=0.69507
Media timpului de ateptare n coad a clienilor evacuai de clas 2=0.69507
Media timpului de ateptare n coad a clienilor din clasa 2=0.69935
Media timpului de servire a clienilor neevacuai de clas 2=0.38877
Media timpului de servire a clienilor evacuati de clas 2=0.43235
Media timpului de servire al staei=0.44914
Coeficientul de lenevire al staiei=0.49614
Intensitatea de trafic=0.50386.
Analitic, folosind modelul prezentat n capitolul anterior obinem:
Media timpului de ateptare a clienilor clasei 1=0,19573
Media timpului de ateptare a clienilor clasei 2=0.73417.
Observm c:
rezultatele obinute prin simulare sunt aproximativ egale cu cele analitice;
n cazul clienilor de clas 1, medile timpului de ateptare, respectiv de servire ale
clienilor evacuai sunt 0, ceea ce este n concordan cu faptul c clienii de clas 1
nu pot fi evacuai.
I.ntrebri.
1.Care este deosebirea dintre evacuarea clientului servit n cazul sistemelor cu mai
multe staii de servire i cel cu o singur staie de servire.
2. Pe ce tip de eveniment apare o forare a unei staii de servire.
3. Care sunt factorii de eficien calculai suplimentar, n raport cu sistemul HOL cu
mai multe staii de servire, ct i cu sistemul cu o staie cu evacuare.

M2.U2.7. Test de evaluare a cunotinelor


Marcai varianta corect.
1. Factorul de utilizare al modelulului exp()/exp()/c:(,FIFO) are formula:
1

.
c)
a)
c
c
1
2
d) 2 .
b)
.
c
c
2. n cazul modelulului exp()/exp()/c:(,FIFO), lungimea medie a cozii este dat de :

57

a)
(c 1)!c (c )2

c). p 0
(c 1)!c (c )2



1
1

b) p 0
.
d). p 0
2
(c 1)!c (c )
c
(c )
3. n cazul modelulului exp()/exp()/c:(,FIFO), numrul mediu al staiilor neocupate este :
c). 1 .
a) c 2 .
d) c .
b) c 2 .
4. n cazul modelulului exp()/exp()/c:(,FIFO), lungimea medie a cozii este:
2

.
a) p 0
(c 1)!c (c )2

b) p 0

c). p 0

(c 1)!c (c )2

d).

c).

(c 1)!c (c )
(c 1)!c (c )2
5. n cazul modelulului exp()/exp()/c:(,FIFO), timpul mediu de ateptare n sistem este:

a) p 0

b). p 0

(c 1)!c (c )

d).

(c 1)!c (c )

(c 1)!c (c )
(c 1)!c (c )2
6. n cazul modelulului exp()/exp()/c:(,FIFO), timpul mediu de aeptare n coad, este:
2

a). p 0
(c 1)!c

c).

(c )2
c

1
1
b).
d). p 0
2
(c 1)!c (c )
(c 1)!c (c )2
7. n cazul algoritmului de simulare pentru modelul cu disciplina primul-sosit-primul-servit,
valoarea timpului cnd are loc urmtorul eveniment n cadrul staiilor de lucru este Ctime(ip),
n care indicele ip al staiei este dat de:
a) Ct=max{Ctime(i)/i=1,..,n} ;
c). Ct=min{Ctime(i)/i=1,..,n} ;
ip=min{i/Ctime(i)=Ct; i=1,..,n}..
ip=max{i/Ctime(i)=Ct; i=1,..,n}.
b) Ct=min{Ctime(i)/i=1,..,n} ;
d). Ct=max{Ctime(i)/i=1,..,n} ;
ip=min{i/Ctime(i)=Ct; i=1,..,n}.
ip=max{i/Ctime(i)=Ct; i=1,..,n}.
8. Folosind notaiile din algoritmul de simulare pentru modelul cu disciplina primul-sositprimul-servit lungimea medie a cozii este:

58

a). Tw/Atime
c). MTw/Ltime
b) Tw/Ltime.
d). Tw/Ctime
9. n cazul simulrii sistemelor cu numr constant de staii paralele de tip head-of-line,
variabila cs, care indic indicele de clas cea mai nalt al clienilor aflai n coad, este dat
de:
a).
c).
min {i/nc(i) > 0 ,i = 1,..,m},
max {i/nc(i) > 0 ,i = 1,..,m},

cs = daca exista i astfel incat nc(i ) > 0


cs = daca exista i astfel incat nc(i ) > 0
n + 1, altfel
m + 1, altfel

b).

d).

max {i/nc(i) > 0 ,i = 1,..,m},

cs = daca exista i astfel incat nc(i ) > 0


n + 1, altfel

min {i/nc(i) > 0 ,i = 1,..,m},

cs = daca exista i astfel incat nc(i ) > 0


m + 1, altfel

10. n cazul simulrii sistemelor cu numr constant de staii paralele cu evacuarea clientului
servit, faptul c un client din coad a fost evacuat este indicat de vectorul bidimensional Tc,
ale crui valori sunt stabilite astfel:
a) Tc(i,j) valoare ntreag mai mare
c) Tc(i,j) are valoarea 0, respectiv o
dect 0, respectiv valoarea 0, dup cum
valoare ntreag mai mare dect 0,
al j-lea client din clasa i nu este
dup cum al j-lea client din clasa i nu
evacuat sau este evacuat; n momentul
este evacuat sau este evacuat; n
sosirii, componenta corespunztoare a
momentul
sosirii,
componenta
vectorului este iniializat cu 0 i la
corespunztoare a vectorului este
fiecare evacuare este decrementat..
iniializat cu 0 i la fiecare evacuare
este de crementat.
b) Tc(i,j) valoare ntreag mai mare
d) Tc(i,j) are valoarea 0, respectiv o
dect 0, respectiv valoarea 0, dup cum
valoare ntreag mai mare dect 0,
al j-lea client din clasa i nu este
dup cum al j-lea client din clasa i nu
evacuat sau este evacuat; n momentul
este evacuat sau este evacuat; n
sosirii, componenta corespunztoare a
momentul
sosirii,
componenta
vectorului este iniializat cu 0 i la
corespunztoare a vectorului este
fiecare evacuare este incrementat.
iniializat cu 0 i la fiecare evacuare
este incrementat.

M2.U2.8. Rezumat
Aceast unitate de nvare prezint modelarea i simularea sistemelor de
ateptare cu numr constant de o staii de servire paralele. La nceput este
prezentat un model matematic pentru un sistem cu disciplina FIFO, cu repartiii
exponeniale ale intervalului ntre dou sosiri consecutive i timpului de servire.
Aceast abordare analitic a sistemelor de ateptare, scoate n eviden utilizarea
unor cunotiine de teoria probabilitilor n modelarea acestei clase de sisteme de
ateptare. n continuare sunt prezentai algoritmi de simulare pentru sistemele de
ateptare corespunztoare celor trei discipline de servire. Pentru fiecare algoritm,
sunt prezentate rezultate ale execuiei programelor obinute prin implementarea
algoritmilor; sunt comparate rezultatele obinute prin simulare cu cele rezultate
din formulele analitic.

59

60

Unitatea de nvare M2.U3. Simularea sistemelor de ateptare cu


numr variabil de staii de servire paralele
Cuprins
M2.U3.1. Introducere........................................................................................................... 61
M2.U3.2. Obiectivele unitii de nvare............................................................................. 62
M2.U3.3. Algoritmul de simulare pentru sistemul cu disciplina primul-sosit-primul-servit .. 62
M2.U3.4. Algoritmul de simulare pentru sistemul cu disciplina head-of-line........................ 65
M2.U3.5. Algoritmul de simulare pentru sistemul cu evacuarea clientului servit....................68
M2.U3.6. Teste de evaluare a cunotinelor.......................................................................... 72
M2.U3.7. Rezumat............................................................................................................... 72
M1.U1.1. Introducere
Exist situaii cnd numrul staiilor de servire poate s varieze n funcie de
lungimea cozii de ateptare; astfel, dac numrul clienilor aflai n coada de
ateptare este suficient de mare, se impune adugarea de noi staii de servire, cu
scopul de a diminua timpul de ateptare n coad al clienilor iar dac numrul
clienilor care ateapt n coad este suficient de mic, se impune scoaterea unor
staii de servire n momentul terminrii serviciului, cu scopul de a diminua timpul
de lenevire al staiilor. Este natural s introducem criterii de introducere a noi staii
de servire, respectiv de scoatere a acestora. Astfel criteriul de introducere este
qlength/nbplmax
iar cel de scoatere este
qlength/nbp lmin
n care qlength reprezint lungimea cozii, nbp reprezint numrul de staii ocupate,
iar lmax i lmin reprezint doi parametri ai modelului.
Presupunem, de asemenea c tot timpul exist cel puin o staie gata pentru a servi
clieni, chiar i n cazul cnd nu exist nici un client n coad. Deosebirea
esenial dintre modelul cu n staii de servire care lucreaz n paralel, cu n dat i
constant i modelul cu numr variabil de staii const n modul de determinare a
timpului de lenevire al staiilor. n primul caz, o staie care nu lucreaz se afl n
lenevire, pe cnd n acest caz teoretic nu ar trebui s existe timp de lenevire, dect
atunci cnd coada este vid i o singur staie este neocupat, deoarece aici staiile
se introduc atunci cnd exist un numr suficient de clieni care ateapt n coad
i se scot atunci cnd acesta este suficient de mic.
Entitile acestui model sunt aceleai celor abordate anterior. De data aceasta,
staiile se mpart n trei categorii: ocupate, inactive i n lenevire. Staiile ocupate
sunt cele care servesc clienii; staiile inactive sunt cele scoase din sistem datorit
diminurii numrului de clieni din coad; la fiecare valoare a ceasului simulrii nu
poate exista dect cel mult o staie n lenevire, atunci cnd coada este vid i se
ateapt o eventual sosire.
Fa de cazul cu numr fixat de staii paralele, vom folosi n plus variabila nbp,
care conine numrul staiilor active i vectorul sbp, n care sbp(i), i=1,..,nbp,
reprezint identificatorul celei de-a i-a staii active. O staie inactiv i este descris
de Ctime(i)= , iar pentru o staie n lenevire se adaug n plus condiia nbp=1.
Factorii de eficien determinai sunt aceeai ca i n cazul modelului
61

corespunztor cu numr fixat de staii paralele, cu o singur excepie: nu se mai


determin coeficientul de lenevire al fiecrei staii, ci coeficientul mediu de
lenevire al staiilor.
Vom considera modelele corespondente n care clienii sunt mprii n clase de
prioriti. Vor fi evideniate elementele care le difereniaz de cele cu numr
constant de staii paralele i vor fi prezentate mai multe exemple de execuie a
programelor de simulare, din care vom deduce c algoritmii de simulare respect
logica modelelor respective.

M1.U1.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal neleagerea de ctre
studeni a mecanismului de funcionare specific al acestei clase de sisteme de
ateptare.
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice un astfel de sistem;
 identifice sisteme din lumea real care se pot studia prin simularea unor astfel de
sisteme;
 implementeze algoritmii prezentai.

Durata medie de parcurgere a unitii de nvare este de 3 ore.

M2.U2.3. Algoritmul de simulare pentru sistemul cu disciplina primul-sosit-primul-servit


Prezentm n continuare algoritmul n limbaj pseudocod ([Flo00a]).
Procedure SistAstNrVariabStaiiParaleleFIFO(Tnra,lmax,lmin);
Citete: Parametrii de generare ai intervalului ntre dou sosiri
consecutive, ai clasei i ai timpului de servire;
Ltime0;Tw0;nc0;Tl0;nbp1;sbp(1)1;Ctime(1); qlength0;
For j=1 to n
Tts(j)0;Nrs(j)0
Endfor;
Gen (IntAriv,Stime); AtimeIntAriv;Nra1;
While NraTnra do
ipsbp(1);
for j:=2 to nbp
if ctime(ip)>ctime(sbp(j)) then ipsbp(j)endif;
endfor;
if AtimeCtime(ip) then{Aevent}
if (nbp=1) and (Ctime(sbp(1)= ))
then
TlenTlen+(Atime-Ltime);
Ctime(sbp(1))Atime+Stime;
Tsc(sbp(nbp)) Stime
else

62

TwTw+nc*(Atime-Ltime);ncnc+1;Ts(nc)Stime;
if (nc/nbpLmax) and (nbp<n) then
j1;
While (jn) and busy(j)=1) do jj+1 endwhile;
nbpnbp+1; sbp(nbp)j;
Ctime(sbp(nbp))Atime+Ts(1);
Tsc(sbp(nbp)) Ts(1);
For j:=1 to nc-1 do Ts(j) Ts(j+1)
endfor;
ncnc-1;
endif
endif
LtimeAtime;Gen(Stime,IntAriv);NraNra+1;
AtimeAtime+IntAriv
Else
TwTw+nc*(Ctime(ip)-Ltime);
LtimeCtime(ip);Nrs(ip)Nrs(ip)+1;
Ttss(ip)Ttss(ip)+ Tsc(ip);
If (nc/nbp<lmin) and (nbp>1) then
j1;
while ( jnbp) and (sbp(j)<>ip) jj+1 endwhile;
if nbp>1 then
for k=j,nbp-1 do sbp(k)sbp(k+1)endfor;
nbpnbp-1
endif
else
If nc=0 then Ctime(ip);
Else
Ctime(ip)Ctime(ip)+Ts(1); Tsc(ip) Ts(1);
For j:=1 to nc-1 do Ts(j) Ts(j+1) endfor;
ncnc-1
Endif
Endif
endif
Endwhile;
Tnrs0;TTss0;
for j:=1 to n
TTssTTss+ Tts(j);TnrsTnrs+Nrss(j);
Mtss(j)Tts(j)/ Nrs(j)
Endfor;
MClenTlen/(n*Ltime);
MTsTTss/Tnrs; MTwTw/Tnrs;Mqueue Tw/Ltime;
Scrie: Mtw, MTs, MClen,Mqueue, ( MTss(j),Clen(j) ,j=1,..n)
End.

S ne reamintim...
Fa de sistemul cu numr fixat de staii paralele, vom folosi n plus variabila nbp,
care conine numrul staiilor active i vectorul sbp, n care sbp(i), i=1,..,nbp,
reprezint identificatorul celei de-a i-a staii active. O staie inactiv i este descris de
Ctime(i)= , iar pentru o staie n lenevire se adaug n plus condiia nbp=1.
Factorii de eficien determinai sunt aceeai ca i n cazul modelului corespunztor

63

cu numr fixat de staii paralele, cu o singur excepie: nu se mai determin


coeficientul de lenevire al fiecrei staii, ci coeficientul mediu de lenevire al staiilor.
Actualizarea configuraiei de staii se realizeaz astfel:
cnd apare o sosire n sistem se testeaz dac qlength/nbplmax i nbp<n; n
caz afirmativ se activeaz o nou staie;
cnd se termin o servire se testeaz dac qlength/nbp<lmin i nbp>1; n caz
afirmativ se dezactiveaz staia respectiv.

Exemplu.
(i) Cazul n=1, repartiia timpului ntre sosiri exponential negativ de parametru
=0.5, repartiia timpului de servire exponential negativ de parametru =1,
lmax=1, lmin=1, numrul sosirilor simulate=10000.
Rezultatele obinute prin simulare, sunt:
- Media timpului de ateptare n coad = 0.91469 ;
- Lungimea medie a cozii =0.45385 ;
- Timpul mediu de servire=0.99144 ;
- Intensitatea de trafic= 0.49180
Aceste rezultate sunt apropiate de cele obinute n cazul modelului cu o singur staie
de servire, cu aceleai repartiii ale intervalului de timp ntre dou sosiri consecutive
i timpului de servire.
Exemplu.
(ii) Considerm modelul n care intervalul ntre sosiri, respectiv timpii de servire ai
staiilor de servire sunt repartizai exponenial negativ de parametri 0.5, respectiv
0.3 , numrul staiilor de servire este 3, pragul maxim=2, pragul minim
= 2 . Rezultatele obinute prin execuia programului sunt:
a) Cazul cu numr fix de staii
Media timpului de ateptare n coad=0.58539
Lungimea medie a cozii = 1.44125
Media timpului de servire al clienilor = 3.22673
Coeficientul mediu de lenevire=0.47532
b) Cazul cu numr variabil de staii
Media timpului de ateptare n coad=2.85393
Lungimea medie a cozii = 1.44125
Media timpului de servire al clienilor = 3.22504
Coeficientul mediu de lenevire=0.08762.
Exemplu.
(iii)Considerm modelul n care intervalul ntre sosiri, respectiv timpii de servire ai
staiilor de servire sunt repartizai exponenial negativ de parametri 0.5, respectiv
0.3, numrul staiilor de servire este 3, pragul maxim=3, pragul minim
= 1 . Rezultatele obinute prin execuia programului sunt urmtoarele:
- Media timpului de ateptare n coad = 4.11065
- Lungimea medie a cozii = 2.02867
- Media timpului de servire al clienilor = 3.29903
- Coeficientul mediu de lenevire=0.06760.

64

Observm c:
- Media timpului de ateptare, respectiv lungimea medie a cozii, cresc n cazul (ii.b) n
raport cu cazul (ii.a), n schimb scade coeficientul de lenevire.
- Media timpului de asteptare, respectiv lungimea medie a cozii scad n cazul (iii), n
raport cu cazul (ii.b), n schimb crete coeficientul de lenevire; cazul (iii) difer de
cazul (ii) prin micorarea pragului de introducere a unei noi staii n lucru i a celui de
scoatere, ceilali parametri ramnd aceeai.
Rezulatele comparative ntre cazul cu numr constant de staii de servire i cazurile cu numr
variabil, sunt n concordan cu ipotezele care au stat la baza construci modelului cu numr
variabil de staii de servire.
M2.U2.4. Algoritmul de simulare pentru sistemul cu disciplina head-of-line
Entitile modelului sunt aceleai ca i n cazul celorlalte modele prezentate i sunt descrise de
aceleai atribute ca i n cazul modelului cu numr fix de staii, cu disciplina de servire head
of line, plus atributele nbp si sbp care au fost prezentate pentru cazul anterior.
Procedure SistAstNrVariabStaiiParaleleHOL(m,n,Tnra,lmax,lmin);
Citete:Parametrii de generare ai intervalului ntre dou sosiri
consecutive, ai clasei i ai timpului de servire;
Ltime0;
For i:=1 to m do
Tw(i)0;Ttsc(i)0;Nrsc(i)0; nc(i)0
endfor;
For j=1 to n do Tts(j)0;Nrs(j)0 Endfor;
Tl0;nbp1;sbp(1)1;busy(1)0;Ctime(1);
Gen (k,IntAriv,Stime); AtimeIntAriv;Nra1;
While NraTnra do
ipsbp(1);
for j:=2 to n
if ctime(ip)>ctime(sbp(j)) then ipsbp(j)endif
endfor;
if AtimeCtime(ip) then{Aevent}
if (nbp=1) and(busy(sbp(1)=0))
then
TlenTlen+(Atime-Ltime);
Ctime(sbp(1))Atime+Stime; ks(sbp(1))k
else
for i:= 1 to m Tw(i)Tw(i)+nc(i)*(Atime-Ltime) Endfor;
nc(k) nc(k)+1; Ts(k,nc(k))Stime;
qlengthqlength+1;
if (qlength/nbplmax) and (nbp<n) then
j1;
While (jn) and (busy(j)=0) do jj+1 endwhile;
nbpnbp+1;
sbp(nbp)j; ic1;
while (nc(ic)=0) and (icm)) do icic+1 endwhile;
Ctime(sbp(nbp))Atime+Ts(ic,1);busy(sbp(nbp))1;
ks(sbp(nbp))ic;
Tsc(sbp(nbp))Ts(ic,1);
For j:=1 to nc(ic)-1 Ts(ic,j) Ts(ic,j+1) endfor;
nc(ic)nc(ic)-1; qlengthqlength-1;
endif
endif

65

LtimeAtime;Gen(k,Stime,IntAriv);NraNra+1;
AtimeAtime+IntAriv
Else{Cevent-Staia ip a terminat serviciul}
for i:= 1 to m
Tw(i)Tw(i)+nc(i)*(Ctime(ip)-Ltime)
Endfor;
LtimeCtime(ip);
Nrs(ip)Nrs(ip)+1;
Nrsc(ks(ip))Nrsc(ks(ip))+1;
Ttss(ip)Ttss(ip)+ Tsc(ip);
Ttsc(ks(ip))Ttsc(ks(ip))+ Tsc(ip);
If (qlength/nbp<lmin) and (nbp>1)
j0;
do jj+1;until ( j=nbp) or (sbp(j)=ip) ;
if nbp>1 then
for k=j,nbp-1do sbp(k)sbp(k+1);
endfor;
nbpnbp-1
else
ic1;
while (nc(ic)=0) and ( icm-1))icic+1 endwhile;
If (ic =m) and (nc(ic)=0) then Ctime(ip);
Else
Ctime(ip)Ctime(ip)+Ts(ic,1);Tsc(ip) Ts(ic,1);
ks(ip) ic;
For j:=1 to nc(ic)-1Ts(ic,j) Ts(ic,j+1)endfor;
nc(ic)nc(ic)-1; qlengthqlength-1;
Endif
Endif
endif
Endwhile;
Tnrs:=0;
for j:=1 to n
Tnrs:=Tnrs+Nrss(j);Mtss(j)Tts(j)/ Nrs(j)
Endfor
Mqueue0; TTw0;
for i:=1 to m
MTw(i)Tw(i)/Nrsc(i); TTwTTw+Tw(i);
MLq(i)Tw(i)/Ltime;MqueueMqueue+MLq(i);
Mtsc(i)Mtsc(i)/Nrsc(i)
Endfor;
MTtwTTw/Tnrs; MTlenTlen/n;
Scrie: MTtw,Mtlen,( MTs(j), ,j=1,..n),(MTw(i),MLq(i),Mtsc(i),
i=1,..,m), Mqueue
End.

S ne reamintim...
Fa de algoritmul de simulare cu disciplina FIFO, algoritmul cu disciplina HOL, din
aceeai clas, se deosebete prin modul de organizare a cozii i de selectare a
clientului care va fi servit, care sunt aceleai ca n cazul algoritmului cu numr fixat
de staii i disciplina HOL.

66

Exemplu.
Cazul n=1, m=2; deoarece numrul de staii este tot timpul 1 modelul se reduce
la cazul cu numr fixat de staii i dou clase de servire.
(a) Rezultate obinute prin simulare(n=1, m=2, =0.5, =1, Numr
sosiri=10000)
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.635
- Media timpului de ateptare n coad al clienilor de clas 2 = 1.319
- Lungimea medie a cozii=0.491
- Timpul mediu de servire al clienilor clasei 1 = 0.990
- Timpul mediu de servire al clienilor clasei 2 = 0.996
- Media timpului de servire al staiei = 0.993
- Coeficientul de utilizare al staiei =0.498
- Media timpului de servire al tuturor clienilor= 0.993.
Observm c rezultatele simulrii sunt apropiate att de cele obinute prin
simulare ct si de cele obinute analitic, n cazul modelului cu numr fixat de
staii, considernd numrul de staii egal cu 1.
Exemplu.
(i)Studiul comparativ al rezultatelor obinute prin simulare pentru modelul head
of line cu numr fixat de staii, cu cele obinute n cazul cu numr variabil de
staii.
(a) Prin simulare cu numr fixat de staii (m=2,n=2, =1, =1, Numr sosiri =
10000)
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.200
- Media timpului de ateptare n coad al clienilor de clas 2 = 0.3374
- Lungimea medie a cozii=0.283
- Timpul mediu de servire al clienilor clasei 1 = 0.983
- Timpul mediu de servire al clienilor clasei 2 = 0.972
- Media timpului de servire al staiei 1 = 0.991
- Media timpului de servire al staiei 2 = 0.959
- Coeficientul de lenevire al staiei 1= 0.432
- Coeficientul de utilizare al staiei 1 =0.568
- Coeficientul de lenevire al staiei 2= 0.603
- Coeficientul de utilizare al staiei 2 =0.397
- Coeficientul mediu de lenevire al staiilor=0.518
- Media timpului de servire al tuturor clienilor= 0.978.
(b) Prin simulare cu numr variabil de staii (m=2,n=2, =1, =1, lmax=4,
lmin=2, Numr sosiri = 10000)
- Media timpului de ateptare n coad al clienilor de clas 1 = 0.693
- Media timpului de ateptare n coad al clienilor de clas 2 = 2.616
- Lungimea medie a cozii=1.673
- Timpul mediu de servire al clienilor clasei 1 = 1.010
- Timpul mediu de servire al clienilor clasei 2 = 0.994
- Media timpului de servire al staiei 1 = 0.999
- Media timpului de servire al staiei 2 = 1.002
- Coeficientul mediu de lenevire al staiilor=0.166
- Media timpului de servire al tuturor clienilor= 1.002
Observam ca
- mediile timpilor de servire sunt aproximativ egale;
67

- n cazul modelului cu numr variabil de staii de servire cresc mediile


timpilor de ateptare n coad i lungimea medie a cozii dar, n schimb scade
coeficientul mediu de lenevire al staiilor, adic n conformitate cu ipotezele care
au stat la baza construciei acestui model.
M2.U2.5. Algoritmul de simulare pentru sistemul cu evacuarea clientului servit
Procedura pseudocod urmtoare([Flo01]) descrie algoritmul de simulare.
Procedure SistAtPriEvacNrVarStaii(m,n,Tnra,lmax,lmin);
Citete: Parametrii de generare ai intervalului ntre sosiri, ai
clasei de prioritate i ai timpului de servire;
for i=1,m do
Tw(i)0;Ttsc(i)0Ttsce(i)0;Twe(i)0;nc(i)0;nrsc(i)0;
nrsce(i)0;
Endfor;
for i=1,n do
Ttss(i)0;Ttse(i)0;kes(i)0;Ns(i)0;Nse(i)0;Ctime(i)
Endfor;
Tlen0;nbp1;sbp(1) 1;qlength0;Ltime0;
Gen(k,IntAriv,Stime);AtimeIntAriv;Nra1;
While NraTnra do
ipsbp(1);
for j=2,nbp
if Ctime(ip)>Ctime(sbp(j)) then ipsbp(j)endif
endfor;
if AtimeCtime(ip) then {aevent}
if (nbp=1) and (busy(sbp(1)=0)) then
TlenTlen+Atime-Ltime;
Ctime(sbp(1))Atime+Stime;kes(sbp(1))k;
tcs(sbp(1)) 0;
else
for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Atime-Ltime
else Twe(i)Twe(i)+Atime-Ltime
endif;
if (qlength/nbp>Lmax) and (nbp<n) then
p0;
do pp+1 until (busy(p)=0);
nbpnbp+1;sbp(nbp)p;
Ctime(p) Atime+Stime;
kes(p) k;
tcs(p) 0;
else {nu se introduce o nou staie}
kekes(sbp(1));
for j=2,n do
if ke<kes(sbp(j)) then kekes(sbp(j))
endif;
endfor;

68

if kke then
nc(k) nc(k)+1; tc(k,nc(k))0;
Ts(k,nc(k))Stime;qlengthqlength+1
else
p1;
while (kes(sbp(p))ke)pp+1 endwhile;
pesbp(p);
for i=p+1,nbp do
if(kes(sbp(i)=ke)and Ctime(sbp(i)Ctime(pe))
then pesbp(i)
endif
endfor;
if tcs(pe)=0 then
Ttss(pe)Ttss(pe)+T(pe)-(Ctime(pe)-Atime);
Ttsc(ke) Ttsc(ke)+T(pe)-(Ctime(pe)-Atime);
Nrss(pe)Nrss(pe)+1;
Nrsc(ke) Nrsc(ke)+1
Else
Ttsse(pe) Ttsse(pe)+T(pe)-(Ctime(pe)-Atime);
Ttsce(ke)Ttsce(ke)+T(pe)-(Ctime(pe)-Atime);
Nrsse(pe) Nrsse(pe)+1;Nrsce(ke) Nrsce(ke)+1
Endif;
Nc(ke)nc(ke)+1;
for j=nc(ke) downto 2
Ts(ke,j)Ts(ke,j-1);
Tc(ke,j)Tc(ke,j-1)
Endfor;
Ts(ke,1)Ctime(pe)-Atime; Tc(ke,1))Tcs(pe)+1;
Ctime(pe)Ctime(pe)+Stime;Kes(pe)k;
T(pe)Stime; Tcs(pe)0
Endif
Endif;
Gen(k,IntAriv,Stime);
LtimeAtime; AtimeAtime+IntAriv;NraNra+1
Else{Cevent}
for i=1,m do
for j=1,nc(i) do
if tc(i,j)=0 then Tw(i)Tw(i)+Ctime(ip)-Ltime
else Twe(i)Twe(i)+Ctime(ip)-Ltime
endif
endfor
endfor;
if (tcs(ip)=0) then
Ttss(ip) Ttss(ip)+T(ip);
Ttsc(kes(ip)) Ttsc(kes(ip))+T(ip);
Nrss(ip)Nrss(ip)+1;
Nrsc(kes(ip)) Nrsc(kes(ip))+1
Else
Ttsse(ip) Ttsse(ip)+T(ip);
Ttsce(kes(ip)) Ttsce(kes(ip))+T(ip);

69

Nrsse(ip)Nrsse(ip)+1;Nrsce(kes(ip))
Nrsce(kes(ip))+1
Endif;
If (nbp>1) and (qlength/nbp<lmin) then
j1;
while jnbp do
if ipsbp(j) then jj+1 endif
endwhile;
if nbp>1 then
for k=j,nbp-1 do Sbp(k)sbp(k+1) Endfor;
nbpnbp-1
endif
else
if(qlength>0) then
cs1;
while (nc(cs)=0) do cscs+1 endwhile;
Kes(ip)cs; Ctime(ip) Ctime(ip)+Ts(cs,1);
T(ip) Ts(cs,1); Tcs(ip) Tc(cs,1);
for j=1,nc(cs)-1 do
Ts(cs,j)Ts(cs,j+1); Tc(cs,j)Tc(cs,j+1)
Endfor;
nc(cs)nc(cs)-1;qlengthqlength-1
else
ctime(sbp(1));kes(sbp(1))0
endif;
endif
Endwhile;
Mqueue0;{Mqueue=lungimea medie a cozii}
for k=1,m
MTw(k)Tw(k)/Nsc(k);MTwe(k)Twe(k)/Nsce(k
MTsc(k)Ttsc(k)/Nsc(k);MTsce(k)Ttsce(k)/Nsce(k
MLq(k)Tw(k)/Ltime;MLqe(k)Twe(k)/Ltime;
MqueueMqueue+ MLq(k)+ MLqe(k)
Endfor;
MTlenTlen/n;ClenMTlen/Ltime;
For j=1,n
MTs(j)Tts(j)/Nrs(j);MTse(j)Ttse(j)/Nrse(j
MTss(j)(Tts(j)+ Ttse(j))/(Nrs(j)+ Nrse(j));
Endfor;
Scrie
Mqueue,
Mtlen,Clen,(MTw(k),
MTwe(k),
MTsc(k),
MTsce(k),
MLq(k), MLqe(k) , k=1,..,m), ( MTs(j), MTse(j), MTss(j),j=1,..,n)
End

S ne reamintim...
Fa de algoritmul de simulare cu disciplina HOL, algoritmul cu forare, din aceeai
clas, se deosebete prin faptul c atunci cnd are loc o sosire i se ndeplinesc
condiiile de foare, are loc acest fenomen, similar algoritmului cu numr fixat de
staii.
Mecanismul de activare i dezactivare a staiilor, este similar celorlali algoritmi din
aceast clas.

70

Exemplu.
n cele ce urmeaz, vom studia comparativ modelele cu evacuarea clientului
servit, pentru care intervalul ntre sosiri, respectiv timpul de servire sunt
exponeniale negative de parametru 1, numrul de staii de servire este 2, numrul
sosirilor simulate este 5000, iar pentru modelul cu numr variabil de staii avem
n plus lmin=1, lmax=2
Rezultatele obinute prin simulare, pentru modelul cu numr fix de staii, sunt:
Media timpului de ateptare n coad a clienilor neevacuai de clas 1=0.08820
Media timpului de ateptare n coad a clienilor evacuai de clas 1=0
Media timpului de servire a clienilor neevacuai de clas 1=0.98618
Media timpului de servire a clienilor evacuai de clas 1=0
Media timpului de ateptare n coad a clienilor neevacuai de clas 2=0.34021
Media timpului de asteptare n coad a clienilor evacuai de clas 2=0.52927
Media timpului de ateptare n coad a clienilor din clasa 2=0.37928
Media timpului de servire a clienilor neevacuai de clas 2=0.81422
Media timpului de servire a clienilor evacuai de clas 2=0.81456
Media timpului de servire al staiei 1 =0.90891
Coeficientul de lenevire al staiei 1 =0.37836
Intensitatea de traf ic a staiei 1=0.62164
Media timpului de servire a staiei 2 =0.87313
Coeficientul de lenevire al staiei 2=0.46315
Intensitatea de traf ic a staiei 2=0.53865
Coeficientul mediu de lenevire = 0.42075
Lungimea medie a cozii=0.37264.
Pentru modelul cu numr variabil de staii de servire, prin simulare obinem:
Media timpului de ateptare n coad a clienilor neevacuai de clas
1=1.07762.
Media timpului de ateptare n coad a clienilor evacuai de clas 1=0
Media timpului de servire a clienilor neevacuai de clas 1=0.95904
Media timpului de servire a clienilor evacuai de clas 1=0
Media timpului de ateptare n coad a clienilor neevacuai de clas 2 =
86.61482
Media timpului de ateptare n coad a clienilor evacuai de clas 2 = 25.23325
Media timpului de servire a clientilor neevacuai de clas 2=0.85749
Media timpului de servire a clienilor evacuai de clas 2=0.84439
Media timpului de servire al tuturor clienilor =0.76736
Coeficientul mediu de lenevire al staiilor =0.04954
Lungimea medie a cozii=22.88242.
Observm c:
Mediile timpilor de servire sunt aproximativ egale.
n cazul modelului cu numr variabil, cresc valorile lungimii medii a
cozii, timpilor medii de ateptare n coad, scade n schimb valoarea
coeficientului de lenevire.
Aceste observaii sunt n concordan cu ipotezele care stau la baza acestui
model.

71

I. ntrebri.
1. Care este diferena dintre o staie n lenevire i una inactiv..
2. Cum se determin coeficientul de lenevire al staiilor.
3. Care sunt condiiile de activare, respectiv dezactivare a staiilor.
4. Pe ce tip de eveniment apar activarea, respectiv dezactivare a staiilor.
5. Care este condiia ca o staie s fie n lenevire.
6. Cum influeneaz creterea, respectiv descreterea pragului lmax factorii
de eficien ai sistemului.
7. Aceeai ntrebare pentru lmin.

M2.U3.6. Test de evaluare a cunotinelor


Marcai varianta corect.
1. n cadrul algoritmilor prezentai, variabila nbp conine:
a) numrul staiilor de servire.
c) numrul clienilor servii.
b) numrul staiilor de servire active.

d) numrul clienilor care ateapt.

2.n vectorul sbp, sbp(i), i=1,..,nbp, reprezint:


a) identificatorul celei de-a i-a staii
c) identificatorul celei de-a i-a staii
active.
inactive.
b) identificatorul celei de-a i-a staii n
d) identificatorul celei de-a i-a staii
lenevire.
dezactivate.
3. O staie inactiv i este n lenevire dac
este descris de Ctime(i)= , iar pentru o staie n lenevire se adaug n plus condiia nbp=1:
c) Ctime(i)= i nbp=1.
a) Ctime(i)= i nbp=.
b) Ctime(i)=1 i nbp=..
d) Ctime(i)=1i nbp=1.
4. Se activeaz o nou staie cnd apare o sosire n sistem i este ndeplinit condiia:
c) qlength/nbplmax i nbp=n.
a) qlength/nbplmax i nbp<n.
b) qlength/nbp=lmax i nbp<n.
d) qlength/nbp< max i nbp<n.
5. Se dezactiveaz o staie cnd se termin o servire i este ndeplinit condiia:
c) qlength/nbp=lmin i nbp>1.
a) qlength/nbp<lmin i nbp=1.
d) qlength/nbp<lmin i nbp>1.
b) qlength/nbp=lmin i nbp=1.
M2.U3.7. Rezumat
Aceast unitate de nvare prezint simularea sistemelor de ateptare cu numr
variabil de staii servire paralele. Pentru aceast clas de sisteme nu exist
metode analitice de studiu. Pentru aceste sisteme, staiile de servire se mpart n
categorii: ocupate, inactive i n lenevire.
Deosebirea esenial dintre modelul cu n staii de servire care lucreaz n paralel,
cu n dat i constant i modelul cu numr variabil de staii const n modul de
determinare a timpului de lenevire al staiilor. n primul caz, o staie care nu
lucreaz se afl n lenevire, pe cnd n acest caz teoretic nu ar trebui s existe
timp de lenevire, dect atunci cnd coada este vid i o singur staie este
neocupat, deoarece aici staiile se introduc atunci cnd exist un numr suficient
de clieni care ateapt n coad i se scot atunci cnd acesta este suficient de
mic.

72

Sunt prezentai algoritmi corespunztori disciplinelor de servire studiate. Pentru


fiecare algoritm, sunt prezentate rezultate ale execuiei programelor obinute prin
implementarea algoritmilor, considernd diferite situaii particulare; rezultatele
obinute sunt n concordan cu logica modelelor considerate.

73

Unitatea de nvare M2.U4. Simularea sistemelor de ateptare cu


coad la fiecare de servire
Cuprins
M2.U4.1. Introducere........................................................................................................... 74
M2.U4.2. Obiectivele unitii de nvare............................................................................. 75
M2.U4.3. Simularea sistemelor cu staii de acelai tip......................................................... 75
M2.U4.4. Simularea sistemelor cu staii de tipuri diferite .......... ...........................................76
M2.U4.5. Teste de evaluare a cunotinelor .......................................................................... 86
M2.U4.6. Rezumat............................................................................................................... 88
M2.U4.1. Introducere
n unitile de nvare anterioare ale modulului, am presupus c exist o coad de
asteptare unic pentru toate staiile de servire. n cele ce urmeaz, vom presupune
c fiecare staie de servire are propria sa coad. Cnd un client sosete n sistem, el
va alege o anumit staie la care se va lega pentru a fi servit, pe baza unui
mecanism aleator, pe care l vom descrie pentru fiecare model n parte. De
asemenea, cnd staia termin de servit un client, dac coada sa este nevid va
selecta un nou client pentru servire, pe baza unei anumite discipline a cozii. Vom
considera att situaia n care atunci cnd coada staiei devine vid, aceasta s intre
n lenevire precum i cea n care staia respectiv s preia un client care ateapt la
o alt staie, adic este permit migraia clienilor de la o staia la alta.
De asemenea, vom considera att situaia n care toate staiile sunt identice, precum
i cea n care clienii i staiile sunt mprii n categorii. Un exemplu foarte des
ntlnit este de a considera dou categorii de clieni(privilegiai i obinuii
sau neprivilegiai) i evident o divizare a staiilor de servire n dou categorii
corespondente.
n realitate, exist numeroase sisteme care pot fi abstractizate n acest mod. Astfel,
sistemul de operare al unui calculator, conine resurse pe care clienii(procesele n
execuie) ncearca sa le acceseze. Aceste resurse pot fi de acelai tip. n acest caz,
se poate presupune ca exist o coad unica la toate resursele sau fiecare resurs
are propria sa coad.
Procesele la nivelul unui sistem de calcul pot fi divizate n procese utilizator i
procese ale nucleului sistemului de operare. Deci, avem o mprire a proceselor n
dou categorii. Dac considerm, c memoria este mprit ntr-un mod
similar(utilizator i nucleu), i fiecare zon este format din mai multe partiii,
atunci putem modela sistemul ca un astfel de model de ateptare.
Tot la nivelul sistemului de calcul, procesele se mpart n clase de prioriti. Deci
este normal s abordm astfel de sisteme de ateptare, considernd cele trei situaii
prezentate n capitolul anterior(FIFO, HOL, evacuare).
n magazinele de tip super-market, sistemul caselor de marcat poate fi considerat
un astfel de model de ateptare.
Pentru astfel de sisteme nu exist metode analitice de studiu, deci existena unor
metode algoritmice de simulare devine eficient.

74

M2.U4.2. Obiectivele unitii de nvare


Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n simularea sistemelor de ateptare cu coad la fiecare staie de servire paralel.
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice diferenele dintre sistemele cu coad unic i cele cu
coad la fiecare staie.
 implementeze algoritmii prezentai.identifice sisteme din lumea real care se pot
studia prin simulare conform teoriei prezentate;

Durata medie de parcurgere a unitii de nvare este de 2 ore.

M2.U4.3. Simularea sistemelor cu staii de acelai tip


n cele ce urmeaz, vom considera c disciplina de servire este FIFO.
Entitile modelului i mecanismul simulrii . n cele ce urmeaz vom nota prin n numrul
de staii i fiecare staie este identificat prin numrul i, i=1,..,n. Cnd sosete un client n
sistem, i alege staia care l va servi pe baza unui mecanism aleator, pe care l vom descrie n
continuare. Dac notm cu pi probabilitatea de a alege staia i, alegerea staiei este echivalent
cu generarea variabilei discrete X:
1 ... n

X :
p1 ... pn
unde pi este

(
)
1
nc
i

1
n
n 1 , i = 1,... n , daca n > 1
p i =
nc ( j )


j =1

p i = 1, altfel

n aceasta formula, nc (i ) este numrul de clieni aflati la staia i .


Observatia 2.4.1.
i)
Daca nc (k ) > nc (l ) atunci printr-un calcul simplu putem arta ca p k < pl .
n

ii)

De asemenea avem i

p
i =1

= 1.

iii)
Cnd toate staiile sunt libere, adica nc(i ) = 0 , pentru oricare i , i = 1,.., n putem
considera una dintre posibilitile:
iii.1) p1 = 1, p 2 = ... = p n = 0
1
iii.2) p1 = p 2 = ... = p n =
n
Staiile sunt caracterizate de vectorii Ctime , nc , care au aceeai semificaie ca i n cazul
algoritmilor prezentai n unitile de nvare anterioare. Vectorul bi-dimensional Ts conine
valorile timpilor de servire ai clienlior generate la sosire; Ts (i, j ) reprezint timpul necesar
serviri celui de al j -lea client introdus n coada staiei i .
Definim Ct prin formula:
75

Ct = min{Ctime (i ) / i = 1,.., n}
i ip prin

ip = min{ i / Ctime ( i ) = Ct ; i = 1,.., n}


Algoritmul pe care l vom presenta se bazeaz pe mecanismul descris anterior. Odat cu
fiecare eveniment se prelucreaz:
- Tw = (Tw( 1 ), ..., Tw(n) ) , unde Tw(i ) reprezint timpul total de ateptare n coad al
clienilor la staia i, i = 1,.., n ;
- Tlen = (Tlen (1),..., Tlen( n)) , unde Tlen (i ) reprezint timpul total de lenevire al staiei
i, i = 1,.., n .
n plus, dup terminarea fiecrui serviciu, sunt prelucrai:
- Tts = (Tts (1),..., Tts ( n)) , unde Tts (i) este timpul total de servire al staiei i, i = 1,.., n ;
- Nrs = ( Nrs (1),..., Nrs ( n)) , unde Nrs (i ) este numrul total de clieni servii de staia
i, i = 1,.., n ;
Procedura urmatoare realizeaza actualizarea acestora.
Procedure Actualizare (tipev,timpev,Tw,timpev,Ltime,nc,Tlen)
for i=1,n do
Tw(i)Tw(i)+nc(i)*(timpev-Ltime)
endfor;
for i=i,n do
if Ctime (i)= then Tlen(i)Tlen(i)+timpev-Ltime
endif;
endfor;
Ltimetimpev;
if tipev=Cev then
Nrs(ip) Nrs(ip)+1; Tts(ip)Tts(ip)+Tss(ip)
Endif;
end;

La sfritul simulrii sunt determinai urmtorii factori de eficien:


Mtw(i ) reprezint media timpului de ateptare la staia i : Mtw(i ) = Tw(i ) / Nrs (i )
Mts (i ) reprezint media timpului de servire la statia i : Mts (i ) = Tts (i ) / Nrs (i )
Ltime va conine timpul total al simulrii; Clen(i ) reprezinta coeficientul de lenevire al
statiei i , Clen(i ) = Tlen(i ) / Ltime
Mqueue(i ) reprezinta lungimea medie a cozii statiei i : Mqueue(i ) = Tw(i ) / Ltime .
Urmatoarea procedura pseudo-code descrie algoritmul de simulare (FloCa05).
Procedure SistAstnStaiiFIFO(n,Tnra);
Read(Parameters random generation);
Ltime0;
for i=1,n do
nc(i)0; Tts(i)0;Nrs(i)0; Ctime(i) ;Tw(i)0
endfor;
Gen(IntAriv,Stime); AtimeIntAriv;Nra1;
While NraTnra do
ip1;
for i=2,n do
if Ctime(i)>Ctime(ip) then ipI
endif

76

endfor;
if AtimeCtime(ip) then {Aevent}
tipevAev;
timpevAtime;
Actualizare (tipev,timpev,Tw,timpev,Ltime,nc,Tlen);
GenST(j);
if Ctime(j)= then{Statie libera}
Ctime(j)Atime+Stime; Tss(j)Stime
else
nc(j)nc(j)+1 Ts(j,nc(j))Stime
endif;
LtimeAtime;
Gen(IntAriv,Stime);AtimeAtime+IntAriv; NraNra+1
else {Cevent}
tipevCev;timpev Ctime(ip);
Actualizare (tipev,timpev,Tw,timpev,Ltime,nc,Tlen)
if nc(ip)=0 then Ctime(ip)
else
Ctime(ip)Ctime(ip)+Ts(ip,1); Tss(ip) Ts(ip,1);
for i=1,nc(ip) do Ts(ip,i) Ts(ip,i+1) endfor;
nc(ip)nc(ip)-1;
endif;
endif
endwhile
for i=1,n do
MTw(i)=Tw(i)/Nrs(i); Mts(i)=Tts(i)/Nrs(i) ;
Clen(i)=Tlen(i)/Ltime;Mqueue(i)=Tw(i)/Ltime.
endfor;
Scrie: MTw, Mqueue,Mclen, Mts
end.

S ne reamintim.
Fiecare staie are coad proprie. Cnd un client sosete n sistem, se determin pe
baza unui mecanism aleator staia care l va servi.
Probabilitile de alegere a staiilor sunt determinate pe baza numrului de clieni
legai la staia respectiv.
Cnd se elibereaz o staie de servire, aceasta va servi primul client din coada sa
(regula FIFO).
Exemplu.
n cele ce urmeaz vom considera 10000 de sosiri simulate. De asemenea, vom lua
n = 1 . Acest model este cu disciplina FIFO, o staie, cu o singur coad. Vom
considera modelul exp( ) / exp( ) / 1 : (, FIFO )) . Dac lum = 1, = 2 , obinem
rezultatele date n tabelul urmtor. dup cum putem observa, rezultatele obtinute prin
simulare sunt aproximativ egale cu cele analitice i cu cele obinute prin simulare n
modelul prezentat n prima unitate de nvare..
Media timpului de ast.
Factorul de lenevire
Media timpului de serv.
Lung. Medie a cozii

Simularea 1
0.492
0.497
0.502
0.493

77

Simularea 2
0.513
0.492
0.500
0.522

Abordarea Analitica
0.5
0.5
0.5
0.5

Exemplu.
n cele ce urmeaz vom considera 10,000 de sosiri simulate. Vom considera
n = 2 , = 1, = 2 i starea iniial este dat de observaia 2.4.1(iii.1)
Rezultatele sunt date n tabelul urmtor.
Media timpului de ast.
Factorul de lenevire
Media timpului de serv.
Lung. Medie a cozii

Simularea 1
0.164
0.757
0.493
0.162

Simularea 2
0.164
0.755
0.494
0.163

Simularea 3
0.163
0.756
0.492
0.162

Dac considerm c starea iniial este dat de observaia 2.4.1.2 (iii.2),


rezultatele sunt date n tabelul urmtor:
Simularea 1
Statia 1 Statia 2
Media timpului
de serv.
Factorul de
lenevire
Media timpului
de ast.

Simularea 2
Statia 1 Statia 2

Simularea 3
Statia 1 Statia 2

0.495

0.484

0.498

0.467

0.492

0.491

0.58

0.935

0.574

0.937

0.577

0.936

0.167

0.144

0.171

0.121

0.167

0.138

ntrebri.
1. Care este deosebirea dintre descrierea mecanismului sosirilor ntre
sistemul prezentat i cel cu coad unic.
2. Care este diferena dintre descrierea cozii ntre sistemul prezentat i cel cu
coad unic.
3. Ce se ntmpl cnd o staie termin serviciul.

Observaia 2.4.2. ntr-un mod asemntor cu algoritmii prezentai n unitatea de nvare


numrul 2 din acest modul, se poate extinde acest algoritm considernd disciplinele de servire
HOL i cu evacuarea clientului servit.
M2.U4.4 Simularea sistemelor cu staii de tipuri diferite
Entitile simulrii. n cele ce urmeaz considerm dou clase de clieni( privilegiai i
obisnuii) i dou clase corespunztoare de staii de servire. Numrul staiilor de servire va fi m + n ,
unde m este numrul staiilor din prima clas i n este numrul staiilor din a doua clas.
Fiecare staie este identificat printr-un ntreg i (i = 1,.., m + n) .
Mecanismul sosirilor. Atime, IntAriv au aceeai semnificaie ca i n modelele prezentate
anterior. Fie p probabilitatea sosirii unui client privilegiat si q = 1 p probabilitatea sosirii
unui client obinuit. Generarea clasei creia i aparine clientul, va fi valoare de selecie a
variabilei Bernoulli
0 1

B :
p q
Daca valoarea generat este 0, atunci clientul va fi servit de o staie din prima clas. Dac
notm cu p i probabilitatea alegerii staiei i, aceasta va fi valoarea de selecie a variabilei
aleatoare:

78

1 ... m

X :
p1 ... pm
Dac avem un client din clasa a doua, alegerea staiei se va face prin generarea unei valori a
variabilei Y
m + 1 ... m + n

Y :
qm +1 ... qm + n
unde q j ( j = m + 1,..., m + n) este probabilitatea alegerii staiei j.

Probabilitile pi i q j sunt date de:

1 nc(i ) 1 , daca m > 1


m
m 1
pi =
(
)
nc
j

j =1

1, daca m = 1

1 nc ( j ) 1 , daca n > 1
m+ n
n 1
q j =
nc ( k )

k = m +1

q j = 1, daca n = 1

Teorema

i)

1.

Dac
m

0 pi 1, i = 1,...,m si

nc(k ) > nc(l )(l, k {1,..,m},l k )

atunci

p k < pl ,

atunci

qk < ql ,

pi = 1 .

i =1

ii)

Daca

nc (k ) > nc (l )(l , k {m + 1,.., m + n}, l k )

0 qi 1, i = m +1,...,m + n si

m + n

= 1 .

i = m + 1

Demonstraie i) Mai nti vom presupune c m > 1 . Dac nc ( k ) > nc (l ) atunci avem
nc ( k )
nc (l )
nc ( k )
nc (l )
inegalitatea m
, adic. 1 m
, de unde rezult c.
> m
< 1 m
nc( j ) nc(i)
nc( j )
nc(i)
j =1

j =1

j =1

j =1

pk < pl .
n acelai mod verificm q k < ql
m

Avem 0 nc(i ) nc( j ) , ceea ce poate fi scris 0


j =1

nc(i )
m

nc( j )
j =1

1
nc(i ) 1

i astfel 0 1 m
m 1 m 1 < 1
nc( j )
j =1

79

1 , adic 0 1

nc(i )
m

nc( j )
j =1

1,

m
m
1
1
1
nc(i )
nc(i )

1
p
=

i
m

m 1 m 1 m 1 m
i =1
i =1
i =1
i =1
nc( j )
nc( j )

j =1
j =1

m
m
m
1
1
nc (i ) =
=

= 1.

m
m 1
m 1 m 1
i =1
(m 1) nc(i )
m

i =1

Pentru m = 1 demonstraia este evidenta. De asemenea, n acelai mod putem demonstra ii).

Observaia 2.4.3. i) Aceast teorem stabilete c { pi / i = 1,.., m} i respectiv


{qi / i = m + 1,.., m + n} formeaz un sistem complet de probabiliti.
ii) Cu ct numrul de clieni legai la o staie este mai mic, cu att probabilitatea alegerii
staiei respective crete.
Variabilele ip , Ctime(ip), Atime au aceeai semnificaie ca i n algoritmul prezentat
anterior. Cele dou tipuri de evenimente constau n:
prelucrarea unei sosiri :
se genereaza o valoare a variabilei B (tipul clientului): pe baza valorii lui B, se
genereaza o valoare de selectie a variabilei X, daca clientul este privilegiat,
respectiv Y daca clientul este neprivilegiat , care va fi statia la care se leaga
clientul sosit.
Daca statia generata este libera, va fi servit de staia respectiva, sau clientul sosit
este introdus n coad;
se actualizeaz timpii totali de ateptare n coad, timpii de lenevire ai statiilor etc.
prelucrarea terminrii unei serviri: se actualizeaz timpii totali de ateptare, timpii totali
de servire, numerele totale de servicii, dup care se trece la servirea unui nou client, dac
coada este nevid. n cazul n care coada este vid vom considera doua situaii posibile:
i)
staia respectiv trece n lenevire i asteapt sosirea unui client pe care l va servi
imediat.
ii)
Staia va servi un client din coada altei staii; selectarea staiei i a clientului se va
face n mod aleator i va fi descris n cele ce urmeaz.
Dup fiecare eveniment se actualizeaz:
- Tw=(Tw(1),..., Tw(m+n)), in care Tw(i) reprezint timpul total de asteptare al clientilor la
staia i, i=1,..,m+n;
- Tlen=( Tlen(1),, Tlen(m+n)), in care Tlen(i) reprezint timpul total de lenevire al staiei i ,
i=1,..,m+n.
n plus, dup fiecare servire se actualizeaz:
- Tts=(Tts(1),,Tts(m+n)), n care Tts(i) reprezint timpul total de lucru al staiei i,
i=1,..,m+n ;
- Nrs=(Nrs(1),,Nrs(m+n)), n care Nrs(i) reprezint numrul total de clieni servii de ctre
staia i, i=1,..,m+n .
La sfritul simulrii se determin factorii de eficien:
Mtw(i) reprezint media timpului de ateptare a unui client n coad la statia i
MTw(i)=Tw(i)/Nrs(i).
Mtw1 reprezint media timpului de ateptare a unui client n coad la statiile din clasa 1

80

Tw(i)

Mtw1 =

i =1
m

Nrs (i)
i =1

Mtw2 reprezint media timpului de ateptare a unui client n coad la statiile din clasa 2
m+n

Mtw2 =

Tw(i)

i =1
m +1

Nrs(i)
i =1

Mts(i) reprezint timpul mediu de servire a unui client de catre statia i


Mts(i)=Tts(i)/Nrs(i).
Clen(i) ce reprezint coeficientul de lenevire al staiei de lucru i
Clen(i)=Tlen(i)/Ltime.
Clen1 reprezint media coeficientilor de lenevire al stailor de lucru din clasa 1
m

Clen1 =

Clen(i)
i =1

m
Clen2 reprezint media coeficientilor de lenevire al stailor de lucru din clasa 2
m+n

Clen 2 =

Clen(i)

i = m +1

n
Daca Ltime este lungimea intervalului de timp n care se deruleaz simularea si Mqueue(i)
care este lungimea medie a cozii la statia i, atunci
Mqueue(i)=Tw(i)/Ltime.
Mqueue1 reprezint media lungimilor cozilor la staiile de lucru din clasa 1
m

MQueue1 =

MQueue(i)
i =1

m
Mqueue2 reprezint media lungimilor cozilor la staiile de lucru din clasa 2.
m+ n

Mqeue2 =

MQueue(i)

i = m +1

Generarea aleatoare a statiei de unde migreaza clientii pentru a fi serviti de o statie


devenita libera. Fie {i1 ,.., ik } mulimea staiilor ocupate la un moment dat care au cel puin
un client n coad. Astfel, {i1 ,.., ik } {1,.., m} sau {i1 ,.., i k } {m + 1,.., m + n} . Pentru fiecare
staie i, i {1,.., m} sau i {m + 1,.., m + n} , i {i1 ,..., ik }, j {i1 ,..., i k } definim d ij =| i j | ,
ik

adic distana de la staia i la staia j. Fie Si = d ij . Considernd staia i care termin


j = i1

serviciul, definim:

81

d ij
1

Si
pj =
, daca k > 1 , j {i1 ,..., i k }
k 1
1, if k = 1
probabilitatea ca staia i s primeasc un client de la staia j.
Teorema 2. Multimea { p j / j {i1 ,.., ik }} formeaz un sistem complet de probabiliti. De
asemenea, dac d il > d ij , atunci pl < p j ( l , j {i1 ,.., ik }, i {i1 ,.., ik } ).

Demonstraie. Deoarece 0 < d ij < S i , rezult c 0 <

d ij
Si

< 1 , adic 0 < 1

d ij
Si

< 1 , ceea ce

dup mparire cu k-1 devine 0 < p j < 1 .

ik

De asemenea, avem

p
j = i1

ik

j = i1

d ij

Si k 1
=
= 1.
k 1 k 1

Pentru a demonstra ultima afirmaie observm c din d il > d ij rezult c 1

d ij
d il
,
< 1
Si
Si

adic pl < p j .

Observaia 2.4.4. Condiia d l > d j exprim faptul c staia l se afl mai departedect staia j
i teorema justific faptul c se va selecta pentru servire un client dintr-o staie mai deprtat
cu o probabilitate mai mic.
i1 ... ik
. Staia de unde se va lua clientul pentru a fi
Considerm variabila aleatoare Z:

...
p
p
i
i
k

1
servit de ctre staia care si-a terminat serviciul, va fi o valoare de selecie a variabilei Z .

Selectarea clientului care va fi servit. Fie l valoarea generat a variabilei Z, adic indicele
staiei din coada creia se va lua clientul. Numrul de clieni din coada staiei l este nc(l ) 1 .
Indicele clientului din coada staiei care va fi servit, se va obine ca valoare de selecie a
variabilei
1
... nc(l ) 1

1
1
T:

...
nc(l ) 1
nc(l ) 1

adic oricare client din coad are aceeai probabilitate de a fi ales.


Descrierea algoritmului de simulare.
Procedure QueSystTwoCatSt(m,n,Tnra);
Read(Parameters Generation of Stime, IntArriv,ClientCat );
Atime0;Ltime0;Nra0;
for i=1,m+n do
nc(i)0; Tts(i)0 Nrs(i)0;Ctime(i) ;Tw(i)0;
GenArrival(Atime,Stime,NrSt,Nra);
While NraTnra do
ip1;
for i=2,m+n do
if Ctime(i)>Ctime(ip) then ipi endif
endfor;

82

if AtimeCtime(ip) then {Aevent}


tipevAev;timpevAtime;
PrelVectEfFact(tipev,timpev,Tw,timpev,Ltime,nc,Tlen);
JoinStation(Stime,NrSt);
LtimeAtime;GenArrival(Atime,Stime,NrSt,Nra) ;
else{ Cevent}
tipevCev;timpev Ctime(ip);
PrelVectEfFact(tipev,timpev,Tw,timpev,Ltime,nc,Tlen)
if nc(ip)>1 then PrelFinServ(ip,Ctime,Ts,Tss,nc)
else PrelIdlSt(ip,Ctime)
endif
endif
endwhile;
EfFactComp() ;
Write( MTw, Mqueue,Mclen, Mts )
end.

n funcie de tipul urmtorului eveniment, procedura PrelVectEfFact va actualiza valorile


vectorilor utilizai pentru determinarea factorilor de eficien.
Procedure PrelVectEfFact(tipev,timpev,Ltime,nc, Tw ,Tlen,Nrs,Tts)
for i=1,m+n do
Tw(i)Tw(i)+nc(i)*(timpev-Ltime)
endfor;
for i=1,m+n do
if Ctime (i)= then Tlen(i)Tlen(i)+timpev-Ltime
endif;
endfor;
Ltimetimpev;
if tipev=Cev then
Nrs(ip) Nrs(ip)+1; Tts(ip)Tts(ip)+Tss(ip)
Endif;
End.

Pe lng IntAriv si Stime GenArriv va genera clasa de staii i statia la care se va lega clientul.
Procedure GenArriv(p,nc,Stime,Atime,NrSt);
Gen(Stime);Gen(IntAriv);
Atime Atime+IntAriv;NraNra+1;Discr(p,B);
if B=0 then Discr(nc,X,NrSt)
else Discr(nc,Y,NrSt)
endif
end;

Procedura JoinStation va lega clientul la o staie de care va fi servit.


Procedure JoinStation(Stime,NrSt);
if Ctime(NrSt)= then{Free Station}
Ctime(NrSt)Atime+Stime;Tss(NrSt)Stime
else
nc(NrSt)nc(NrSt)+1;Ts(NrSt,nc(NrSt)Stime
endif;
end;

Procedura FinServ este executat cnd o staie termin un serviciu i coada de ateptare este
nevid. Va fi selectat primul client din coad pentru a fi servit.

83

Procedure FinServ(ip, Ctime, Ts, Tss, nc);


Ctime(ip)Ctime(ip)+Ts(ip,1); Tss(ip) Ts(ip,1);
for i=1,nc(ip) do Ts(ip,i) Ts(ip,i+1)
endfor;
nc(ip)nc(ip)-1
end;

Procedura PrelIdlSt abordeaz situaia cnd o staie de servire termin de servit un client i
coada este vid. Sunt considerate dou situaii: staia intr n lenevire, respectiv este preluat
un client care se afl n coada altei staii(migrarea clienilor).
Procedure PrelIdlSt(ip, Ctime);
Ctime(ip)
End;
Procedure PrelIdlSt(ip, Ctime);{second approach}
If ip<=m then li1; lsm
else
lim+1;lsm+n
endif;
k0;
for i=li to ls do
if nc(i)>1then
kk+1;
ind(k)i;
d(i) abs(ip-i)
endif
endfor;
S0;
for j=1 to k do SS+d(ind(j)) endfor;
for j=1 to k do
X(1, ind(j)) ind(j);
X(2,ind(j)) (1-d(ind(j))/S))/(k-1) endfor;
Discr(X,NrSt);
For j=2 to nc(NrSt) do
Y(1,j) j;Y(2,j) 1/( nc(NrSt)-1)
endfor;
Discr(Y,NrCl);
Ctime(ip)Ctime(ip)+Ts(NrSt,NrCl);Tss(ip) Ts(NrSt,NrCl);
for i=NrCl,nc(NrSt)-1 do
Ts(NrSt,i) Ts(NrSt,i+1)
endfor;
nc(NrSt)nc(NrSt)-1;
end;

La sfritul simulrii, procedura EfFactComp implementeaz formulele care dau factorii de


eficien ai sistemului.

Observaia 2.4.5. Modelul prezentat poate fi extins, considernd oricare numr de categorii
de staii. Astfel, n locul distribuie Bernoulli, utilizat pentru a genera categoria de staii,
0 ...k 1
(k 2 ) , n care
putem considera o variabil aleatoare discret oarecare de forma
p 0 .. p k 1
pi (i = 0,.., k 1) reprezint probabilitatea alegerii categoriei de staii i.

84

Exemple n cele ce urmeaz, considerm 10,000 de sosiri simulate.

i) Cazul 1. n=1, m=1, p=0,5. Acest model este cu disciplina FIFO, o staie, cu o singur coad
considera modelul exp( ) / exp( ) / 1 : (, FIFO)) . Dac lum = 2, = 2 , obinem rezultatele date
2.4.1. Dup cum putem vedea, rezultatele obinute prin simulare sunt aproximativ egale cu cele analit
cele obinute prin simulare n cazul prezentat n M2U1.
Staia 1
Staia 2 Abordarea Analitic
Media timpului de ateptare
0,488
0,507
0,5
Factorul de lenev.
0,491
0,499
0,5
Media timpului de servire
0,505
0,501
0,5
Lungimea medie a cozii
0,492
0,507
0,5
Tabelul 2.4.1. Rezultatele pentru cazul 1

ii)Cazul 2. n=2,m=1, =2, =2,p=0.5 n acest caz avem probabiliti egale ca un client sosit s apari
dintre clase. Acest caz trateaz situaia cnd nu este permis migraia clienilor. Rezultatele sunt prez
tabelul 2.4.2.

Clasa privilegiati
Clasa obinuii
Media timpului de ateptare
0.056
0.452
Factorul de lenevire
0.747
0.509
Media timpului de servire
0.512
0.501
Lungimea medie a cozii
0.027
0.443
Tabelul 2.4.2. Rezultatele pentru cazul 2
n acest caz, avem valori mult mai mici pentru Media timpului de ateptare i Lungimea medie a cozii
clienilor privilegiai. De asemenea, valoarea Factorului de lenevire este mai mare pentru clasa c
privilegiai, explicaia fiind c numrul de staii este dublu. Media timpului de servire este aceeai pentru

clase.

iii) Cazul 3. n=2,m=1 =2, =2,p=0.66. n acest caz(Tabelul 2.4.3), avem o probabilitate mai mare de
clienilor privilegiai. Presupunem c clienii nu pot migra de la o staie la alta. n acest caz, avem valoari a
pentru Factorul de lenevire. n cazul Mediei timpului de ateptare i Lungimii medii a cozii avem va

mici n cazul clienilor privilegiai, deoarece raportul dintre numrul sosirilor din aceast clas i
staiilor este mai mic.
Clasa privilegiati
Clasa obinuii
Media timpului de ateptare
0.094
0.287
Factorul de lenevire
0.670
0.662
Media timpului de servire
0.504
0.500
Lungimea medie a cozii
0.062
0.194
Tabelul 2.4.3. Rezultatele pentru cazul 3

iv) Cazul 4. n=2,m=1 =2, =2,p=0.5. n acest caz, avem probabiliti egale ale sosirilor, dar avem
dublu de staii de servire pentru clienii privilegiai. De asemenea, este tratat i situaia n care este
migraia clienilor. Rezultatele sunt prezentate n tabelul 2.4.4. Observm c avem o valoare mai
Mediei timpului de ateptare i Lungimii medii pentru clienii privilegiai, n cazul n care este
migraia.De asemenea, valorile Factorului de lenevire este mai mare pentru clienii privilegiai. Aa
de ateptat, Mediile timpilor de servire sunt aproximativ egale.

V) Cazul 5. n=2, m=1 =2, =2,p=0.66. n acest caz (Tabelul 2.4.5), avem o probabilitate mai mare a
pentru clieni privilegiai. Probabilitatea p este proporional cu numrul staiilor clasei. Clienii pot mi
staia lor iniial.

85

n concluzie, putem spune c dac sistemul permite migraia clienilor de la o staie la alta, factorii de
tind s se mbunteasc.
care pi (i = 0,.., k 1) reprezint probabilitatea alegerii categoriei de staii i.
Fr migratia clientilor
Privilegiai
Obinuii
Media timpului de
ateptare
Factorul de lenevire
Media timpului de
servire
Lungimea medie a cozii

Media timpului de
ateptare
Factorul de lenevire
Media timpului de
servire
Lungimea medie a cozii

0.031
0.756

0.448
0.511

Cu migratia clientilor
Privilegiai
Obinuii
0.056
0.747

0.495
0.490
0.512
0.016
0.448
0.027
Tabelul 2.4.4. Rezultatele pentru cazul 4
.
Fr migratia clientilor
Cu migratia clientilor
Privilegiai
Privilegiai
Obinuii
Obinuii
0.094
0.056
0.255
0.287
0.670
0.667
0.642
0.662
0.504
0.498
0.511
0.500
0.062
0.037
0.179
0.194

0.452
0.509
0.501
0.443

Tabelul 2.4.5. Rezultatele pentru cazul 5

I. ntrebri.
1.Care este mecanismul prin care un client sosit alege o anumit categorie de staii.
2.Care este mecanismul prin care un client sosit alege o anumit staie dintr-o categorie de staii.
3. n ce const principiul migraiei clienilor.
4. Cum se selecteaz staia de unde va migra clientul.
5. Cum seselecteaz clientul care va migra de la o anumit coad.
M2.U4.6. Test de evaluare a cunotinelor
Marcai varianta corect.
1. Dac notm cu pi probabilitatea de a alege staia i,aceasta este dat de:
a)
c)
0 , i = 1,... n ,

p i = daca n > 1
1 nc ( i ) 1 , i = 1,... n , daca n > 1
n
1, altfel
n 1
p i =

(
)
nc
j

j =1

1, altfel

86

1, i = 1,...n,

d) p i = daca n > 1
1 nc ( i ) , i = 1,... n , daca n > 1
n
1, altfel

b) p i =
.

nc
(
j
)

j =1

1, altfel
2. Cnd toate staiile sunt libere, putem considera una dintre posibilitile:
a) p1 = 1, p 2 = ... = p n = 0
c) p1 = 1, p 2 = ... = p n = 0
i

p1 = p

sau
2

= ... = p

1
n

p1 = p

= ... = p

b) p1 = p 2 = ... = p n = 0

d) p1 = p 2 = ... = p n = 0

sau

1
.
n

1
1
.
.
p 1 = p 2 = ... = p n =
p 1 = p 2 = ... = p n =
n
n
3. n cazul algoritmului de simulare al sistemelor cu staii de tipuri diferite
clasa creia i aparine clientul, va fi valoare de selecie a variabilei:
a) Gauss.
c) Normal.
b) Bernoulli.
d) Poisson.
4. Considernd staia i care termin serviciul, definim probabilitatea ca staia i s
primeasc un client de la staia j, prin:
0, daca k > 1 ,
1, daca k > 1 ,

c) p j = j {i1 ,..., ik } .
a) p j = j {i1 ,..., i k }
1, if k = 1
0, if k = 1

d ij
d ij
, daca k > 1 ,
1
1
Si

Si
, daca k > 1 ,

k 1
b) p j = j {i1 ,..., i k }

1, if k = 1
.
d) p j = j {i1 ,..., ik }

1, if k = 1

5. Selectarea clientului care va migra dintr-o coad pentru a fi servit, se face dupa principiul:
a) se alege primul client din coad.
c) se alege ultimul client din coad.
d) se alege clientul cu timpul de
b) oricare client din coad are aceeai
servire cel mai mic.
probabilitate de a fi ales.

87

M2.U4.6. Rezumat
Aceast unitate de nvare prezint modelarea i simularea sistemelor de ateptare cu coad la fieca
de servire, considernd disciplina FIFO. Mai nti, este prezentat cazul n care exist o singur categ
stsii. Se prezint mecanismul aleator de alegere a staiei la care se va lega clientul sosit. Sunt prezen
mecanismul simulrii, ct i algoritmul de simulre n pseudocod. De asemenea, sunt prezentate i inte
rezultatele obinute prin execuia programului de simulare, pentru anumite situaii semnificative
propus un test de evaluare a cunotiinelor.

Algoritmul de simulare cu divizarea staiilor n categorii, reprezint o extindere a situaiei prezentate a


Este propus un mecanism de de alegere a categoriei de staii, respectiv a staiei la care se va lega
sosit. De asemenea, este prezentat modul cum clientul poate migra de la o staie aglomerat la o alt
care termin de servit un client. Sunt prezentate i interpretate cteva rezultate obinute prin e
programului de simulare.

88

Modulul 3. Limbajul de simulare GPSS


Cuprins
Introducere ............................................................................................................... 89
Competenele modului .............................................................................................. 89
U1. Concepte introductive ale limbajului GPSS ........................................................ 90
U2. Expresii, funcii, parametrii tranzaciilor i statistici GPSS ................................100
U3.Controlul micrii tranzaciilor...........................................................................112
Introducere
GPSS(General Purpose Simulation System ) a fost dezvoltat nc din anii
60 de ctre IBM i este unul dintre cele mai rspndite limbaje de simulare. Vom
utiliza varianta student a GPSS World , versiune care funcioneaz sub Windows.
Orice program GPSSconst 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).
O instruciune GPSSare 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.

Competene
La sfritul acestui modul studenii vor fi capabili:
 s identifice sistemele din lumea real care se pot modela i simula cu limbajul
GPSS;
 s explice sintaxa i semantica blocurilor GPSS;
 s explice mecanismul simulrii sub GPSS;
 s identifice blocurile care sunt utilizate pentru realizarea unui program de
simulare a unui anumit sistem.
 s descrie rezultatele obinute n urma execuiei programului de simulare
realizat.

89

Unitatea de nvare M3.U1. Concepte introductive ale limbajului


GPSS
Cuprins
M3.U1.1. Introducere........................................................................................................... 90
M3.U1.2. Obiectivele unitii de nvare............................................................................. 90
M3.U1.3. Generarea tranzaciilor ......................................................................................... 90
M3.U1.4. Blocuri de servire................................................................................................. 91
M3.U1.5. Miscarea tranzaciilor........................................................................................... 96
M3.U1.6.Generatorii de numere aleatoare in GPSS.............................................................. 98
M3.U1.7. Teste de evaluare a cunotinelor.......................................................................... 98
M3.U1.8. Rezumat............................................................................................................... 99
Introducere
Aceast unitatea de nvare prezint structura unui program GPSS i cteva dintre
caracteristicile GPSS. Se prezint modalitatea de generare a tranzaciilor n sistem
i modul cum acestea nainteaz, pn cnd ies din sistem. Sunt explicate blocurile
care ofer servicii precum i metoda de generare a timpului de servire. De
asemenea, se explic rolul declarrii cozilor la diverse entiti.
Obiectivele unitii de nvare
La sfritul acestei uniti de nvare studenii vor fi capabili:
 s neleag structura unui model GPSS.
 s neleag conceptul de tranzacie i modul cum acestea sunt servite i
nainteaz prin sistem;
 s neleag rolul declarrii cozilor la blocurile de servire.
 s explice rezultatele simulrii;
 s explice modul cum se genereaz timpul de servire.

Durata medie de parcurgere a primei uniti de nvare este de 2 ore.

M3.U1.3. 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,D,E
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.
Operandul D specific numrul maxim de tranzacii generate; este opional. Dac lipsete,
numrul de tranzacii este generat folosind mediul GPSS World.
Operandul E specific prioritatea tranzaciei; este opional. Dac este specificat, este un
numr natural; dac nu este specificat toate tranzaciile au aceeai prioritate.
90

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 3.1.1
Inializri,
Definiii
GENERATE
..
TERMINATE

Segment 1

..............
GENERATE
..
TERMINATE

Segment k

Figura 3.1.1. Structura unui program GPSS


Un segment conine specificaiile legate de o anumit clas de tranzacii (generare, servire,
cozi, etc.)
M3.U1.4. 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.

91

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 ntr-o seciune urmtoare.
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 (obligatoriu)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.
Exemplu. Program GPSS simplu care utilizeaz blocurile prezentate anterior.
SIMULATE
GENERATE
12,3
;sosirea clienilor
QUEUE
COADA ;tranzacia intr n 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 CommandStart 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

LABEL

END TIME
12046.894

NAME
COADA
STATIE
LOC BLOCK TYPE

BLOCKS
7

FACILITIES STORAGES
1
0
VALUE
10000.000
10001.000
ENTRY COUNT CURRENT COUNT RETRY

92

1
GENERATE
1001
0
0
2
QUEUE
1001
0
0
3
SEIZE
1001
1
0
4
DEPART
1000
0
0
5
ADVANCE
1000
0
0
6
RELEASE
1000
0
0
7
TERMINATE
1000
0
0
FACILITY ENTRIES UTIL. AVE.TIME AVAIL.OWNER PEND INTER RETRY DELAY
STATIE
1001
0.825
9.931 1
1001
0
0
0
0
QUEUE
MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
COADA
1
1
1001
679
0.057
0.689
2.142
0

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 [104,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.

93

Exemplu. Presupunem c ntr-un dispensar avem un cabinet unde se fac


radiografii, dotat cu un singur aparat, care este deservit de doi operatori. 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 operator. 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 operator, respectiv un al
doilea operator i timpul mediu ct ateapt pentru accesul la aparat. Programul
GPSS care rezolv aceast problem este prezentat mai jos.
SIMULATE
STORAGE
GENERATE
QUEUE
ENTER
DEPART
ADVANCE
QUEUE
ENTER
DEPART
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
LEAVE
TERMINATE

XOPER

3 ;Trei operatori
22,7 ;Generarea tranzaciilor
QOPER1 ;Coad la operator
XOPER,1 ;Cere primul operator
QOPER1 ;Iese din coada
5,2;Tim.servre primul operator
QOPER2 ;Coada pentru operator
XOPER,1 ;Mai cere un operator
QOPER2 ;Iese din coada
QMACH ;Coada la aparat
XRMACH ;Cere aparatul
QOPER ;Iese din coada
10,5 ;Timpul de servire la aparat
XRMACH ;Elibereaza aparatul
XOPER,2 ;Elibereaza operatorii
1 ;Tranzacia iese din sistem

n urma execuiei corecte a acestui program, se afiez rezultatele simulrii n mod


text.
START TIME
0.000
LABEL

LOC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

END TIME
1139.286
BLOCK TYPE
GENERATE
QUEUE
ENTER
DEPART
ADVANCE
QUEUE
ENTER
DEPART
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
LEAVE
TERMINATE

BLOCKS
15

FACILITIES
1

STORAGES
1

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

FACILITY ENTRIES UTIL. AVE.TIME AVAIL. OWNER PEND INTER RETRY DELAY
XRMACH
50
0.432
9.849
1
0
0
0
0
0

94

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME


QOPER1 1
0
50
50
0.000
0.000
QOPER2 1
0
50
50
0.000
0.000
QMACH
1
0
50
50
0.000
0.000
STORAGE CAP. REM. MIN. MAX.
XRTECH
3
3
0
3

ENTRIES AVL.
100
1

AVE.(-0) RETRY
0.000
0
0.000
0
0.000
0

AVE.C. UTIL. RETRY DELAY


1.092 0.364
0
0

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.
S ne reamintim...
Generarea tranzaciilor se face cu blocul Generate.
Facilitatea este unitatea de servire cu un singur element; corespunde sistemelor de
ateptare cu o singur staie de servire.
Entitatea Storage este unitatea de servire cu mai multe elemente; corespunde
sistemelor de ateptare cu o mai multe staii de servire paralele. .
Timpul de servire este generat cu blocul Advance.
Tranzacia iese din sistem cnd atinge blocul Terminate.

95

I. ntrebri.
1. Care este diferena dintre o facilitate i o entitate de tip storage.
2. Care este blocul care genereaz intervalul de timp ntre dou tranzacii
consecutive.
3. De ce se declar cozile la facilitile de servire.
II. Probleme propuse
1. Scriei un bloc GENERATE care genereaz tranzacii din 10 in 10 minute.
2. Scriei un bloc ADVANCE care genereaz un timp ntre tranzacii n intervalul
[5,15].
3. Scriei un program GPSS pentru un sistem de servire format dintr-o facilitate
legat n serie cu o entitate storage cu 3 staii de servire, n care o tranzacie cere
mai nti facilitatea i apoi dou dintre staiile de servire. Prin execuia acestui
program trebuie s se obin i anumite informaii despre media timpului petrecut
de tranzacii n sistem, media timpului de ateptare pentru obinerea facilitii,
respectiv pentru utilizarea celor dou staii de servire.
M3.U1.5. Miscarea tranzaciilor
Fiecare tranzacie generat caut s se mite ct mai mult prin model; ea poate atinge un bloc
TERMINATE i atunci iese din model sau se poate bloca ntr-un anumit bloc. La un moment
dat pot exista trei tipuri de aciuni:
Aciuni planificate la un anumit moment viitor determinat.
Activiti planificate s se desfaoare la acel moment i care se pot desfaura.
Activiti planificate s se desfaoare la acel moment i care nu se pot desfura din cauza
unor condiii interne ale modelului, cum este de exemplu cererea unei faciliti care este deja
ocupat cu o alt tranzacie.
Gruparea tranzaciilor. Tranzaciile n cadrul unui sistem simulat cu GPSS se afl la orice
moment (valoarea ceasului) ntr-un anumit bloc i ntr-unul din urmtoarele 2 lanuri:
- lanul CEC (al evenimentelor curente) ce conine tranzaciile care intr n categoriile
2 i 3 enunate mai sus;
- lanul FEC (al evenimentelor urmtoare); sunt tranzaciile care urmeaz s avanseze
dintr-un anumit bloc n blocul urmtor la un moment urmtor bine determinat
(tranzacii care intr ntr-un bloc ADVANCE).
Aceste lanuri sunt nite liste nlanuite, fiecare nod reprezentnd o tranzacie care conine,
printre altele urmtoarele cmpuri:
 Numrul tranzaciei (TN) reprezint un ntreg ce identific n mod unic tranzacia din
modelul/sistemul simulat.
 Blocul curent (CB) este numrul blocului n care se afl tranzacia la momentul respectiv.
 Urmtorul bloc (NB) este numrul blocului la care va fi transmis tranzacia respectiv.
 Timpul de plecare (DT) este momentul / valoarea ceasului la care tranzacia va fi mutat
la blocul desemnat de NB
 Prioritatea (P) a tranzaciei respective care este utilizat numai cnd mprim tranzaciile
n clase de prioriti
 Pointer ctre urmtoarea tranzacie.
Algoritmul dup care tranzaciile se mic n sistem este prezentat n figura 3.1.2. Dac CEC
este o coad organizat pe prioriti sau organizat pe principiul FIFO, FEC este o coad
ordonat cresctor a DT-ului tranzaciilor; penru cele care au acelai DT ordinea este FIFO.
Toate aceste instruciuni ascund n spatele lor o anumit secven de cod.
Observaii.

96

1. Tanzaciile care pot fi generate ntr-un program de ctre una sau mai multe instruciuni
GENERATE, le putem privi ca o list ordonat dup valorile timpului de sosire (calculat pe
baza perametrilor A i B ai tranzaciei).
2. Totdeauna cnd se mut o tranzacie din FEC n CEC, automat se va genera o nou
tranzacie.
3. Numrul tranzacilor generate efectiv va fi cu unu mai mare dect numrul tranzaciilor
cerute ntr-un bloc START.
4. n exemplele prezentate programele au fost executate specificndu-se numrul de tranzacii.
innd cont de structura unui program GPSS i cele specificate mai sus, pentru a se simula
pentru un anumit interval de timp, se adaug un segment format dintr-un bloc GENERATE,
care are numai argumentul A constant, care specific durata simulrii si un bloc
TERMINATE.
Exemplu. Program GPSS care simuleaz pentru o zi, presupunnd c timpul se
msoar n minute .
SIMULATE
GENERATE
12,3
;sosirea clienilor
QUEUE
COADA ;tranzacia intr n coada
SEIZE
STATIE
;cere facilitatea
DEPART
COADA
;iese din coada
ADVANCE
10,4
;timpul de servire
RELEASE
STATIE
TERMINATE 1
GENERATE 480
TERMINATE 1
P r elu cr ea z cea su l i m u t toa te
tr a n z a ci ile cu D T = va loa r ea
cea su lu i, d in F E C n C E C

STA RT

NU
NU

tr a n z . n C E C
ca r e p ot fi m u ta te

F E C vid
sa
D uA T C < = 0

DA

DA

P re lu c re a z
st a t ist ic ile i se
a fie a z a ie irile
m o d e lu lu i

P r im a tr a n z a cie d in C E C este
m u ta t p r in c t m a i m u lte
blo cu r i n co n for m ita te cu
log ica m od elu lu i

DA

T r a n z a cia a
a ju n s n bloc u l
T E R M IN A T E

re sp e c t iv

NU

P r elu cr ea z C B ,
N B a le tr a n z a ciei
r esp e ctive; la s
tr a n z a cia n C E C

NU

- S e p r elu cr ea z
sta ti sticile
m od elu lu i
-P r elu cr ea z T C
- ter g e tr a n z a cia

T r a n z a cia a
a ju n s n tr -u n b loc
ADVANCE

DA

P r elu cr ez C B u l,N B -u l i D T u l tr a n z a ciei


T r a n z a c ia este
m u ta t d in
C E C n F E C

Figura 3.1.2. Algoritmul de micare a tranzaciilor

97

STO P

DA
NU
TC? 0

M3.U1.6. Generatorii de numere aleatoare in GPSS sunt identificai prin RN1,


RN2,,RN8. RN1 este utilizat implicit n blocurile GENERATE i ADVANCE. Toi
genereaz numere pseudoaleatoare cuprinse ntre 0 i 0.9999. Fiecare dintre aceti generatori
se bazeaz pe o relaie recursiv. Blocul RMULT se utilizeaz pentru a iniializa smna
generatorului respective i are sintaxa:
RMULT A,B,C,D,E,F,G, H
A,,H sunt numere ntregi, A este folosit pentru iniializarea lui RN1.a.m.d. H pentru
RN8. Dac pe poziia respectiv apare spaiu atunci smna iniial este cea implicit a
generatorului respectiv.
S ne reamintim...
Dup momentul generrii, tranzaciile nainteaz prin sistem pn cnd ntlnete un
bloc care este ocupat de o alt tranzacie.
Tranzaciile pot face parte din lanul evenimentelor curente sau lanul evenimentelor
viitoare.
La un anumit moment al simulrii, tranzaciile din lanul evenimentelor curente
nainteaz ct pot prin sistem. Cnd nu mai este posibil acest lucru se avanseaz
cesul la valoarea timpului asociat primei tranzacii din lanul evenimentelor viitoare
i aceast tranzacie este mutat n lanul evenimentelor curente i se reia micarea
tranzaciilor prin sistem.
O tranzacie trece din lanul evenimentelor curente n lanul evenimentelor viitoare
cnd atinge un bloc Advance.
I.ntrebri.
1. Care sunt diferenele dintre cele dou lanuri de tranzacii.
2. Ce se ntmpl cnd o tranzacie intr ntr-un bloc ADVANCE.
3. Ce fel de numere genereaz generatorii GPSS.
4. Cum se iniializeaz generatorii GPSS
II. Rescriei i executai exemplul prezentat anterior, pentru o durat a simulrii de 8
ore.
M3.U1.7. Test de evaluare a cunotinelor
Marcai varianta corect.
1. Entitatea Facility reprezint:
a) O list de tranzactii.
b) Bloc de ntrziere.
c) Bloc pentru
tranzacii

generare de

2. Entitatea Storage reprezinta:


a) Bloc pentru
generare de
tranzacii

d) Sistem de servire cu o singur


staie.
c) Bloc de iniializare

b) Sistem de servire cu mai multe


d) O list de tranzactii.
staii.
3. Cererea unei faciliti se realizeaza cu blocul :
a) Queue
c) Leave
b) Enter

d) Seize.
98

4. Cererea unui numr de elemente Storage se realizeaza cu blocul :


a) Queue
c) Leave
b) Enter
d) Seize.
5. Care cmp este obligatoriu pentru blocul Queue:
a) A
c) B
b) Ambele
d) Niciunul
6. Tranzaciile care pot trece imediat n blocul urmtor fac parte din :
a) Lanul evenimentelor curente
c) Lanul evenimentelor viitoare
b) Lanul evenimentelor de
d) Lanul evenimentelor de revenire
sincronizare
7. Tranzactiile care ateapt sincronizarea fac parte din :
a) Lanul evenimentelor curente
c) Lanul evenimentelor viitoare
b) Lanul evenimentelor de
sincronizare

d) Lanul evenimentelor de revenire

M3.U1.8 Rezumat
Unitatea de nvare prezint cteva elemente introductive n limbajului GPSS. La
nceput sunt prezentate structura general a unui program GPSS, modul cum sunt
generate tranzaciile, instruciunile prin care sunt declarate facilitile, care
corespund sistemelor de servire cu o singur staie, entitile de tip storage, care
corespund sistemelor de servire cu mai multe staii paralele. De asemenea, este
prezentat modalitatea prin care se genereaz timpul de servire, modul de declarare a
unei cozi i instruciunea care declaneaz execuia modelului.
Foarte important pentru a nelege modul de lucru al GPSS, este cunoaterea
modului cum avanseaz tranzaciile prin sistem, gruparea tranzaciilor n lanuri
precum i modul cum o tranzacie trece dintr-un lan n altul. Acest lucru, este
fundamental i pentru nelegerea modului cum sistemul se mic.
De asemenea, este prezentat modalitatea de generare a numerelor aleatoare n
GPSS.

99

Unitatea de nvare M3.U2. Expresii, funcii, parametrii


tranzaciilor i statistici GPSS
Cuprins
M3.U2.1. Introducere..........................................................................................................100
M3.U2.2. Obiectivele unitii de nvare............................................................................100
M3.U2.3. Expresii GPSS ....................................................................................................101
M3.U2.4. Funcii predefinite GPSS pentru generarea unor variabile aleatoare.....................103
M3.U2.5. Parametrii tranzaciilor, blocul ASSIGN .............................................................106
M3.U2.6. Variabile globale (savevalue) ..........................................................................107
M3.U2.7. Instruciunea TABLE i blocul TABULATE.......................................................109
M3.U2.8. Teste de evaluare a cunotinelor.........................................................................110
M3.U2.9. Rezumat..............................................................................................................111
M3.U2.1. Introducere
Ca orice alt limbaj de programare, i GPSS permite construcia de
expresii specifice. GPSS introduce condeptul de atribut numeric standard asociat
diverselor entiti, prin care se evideniaz anumite caracteristici numerice ale
acestora. De asemenea, prin intermediul funciilor GPSS se pot exprima anumite
construcii specifice, cum ar fi de exemplu diverse repartiii de probabilitate, care
pot fi argumente ale unor blocuri.
Parametrii tranzaciilor pot reine anumite valori specifice tranzaciilor,
pe care le putem considera c au un caracter local. n schimb, variabilele globale,
reprezint entiti care au semnificaie pentru toate tranzaciile programului
respectiv.
n simularea oricrui sistem, obinerea de statistici este un obiectiv
important. n acest sens, GPSS ofer aceast facilitate prin cele dou blocuri
pereche, TABLE i TABULATE , precum i prin blocul QTABLE, pentru
statistici legate de cozi.
M3.U2.2. Obiectivele unitii de nvare
Aceast unitate de nvare i propune ca obiectiv principal o iniiere a studenilor
n modelarea i simularea sistemelor de ateptare.
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice modul de construcie al expresiilor GPSS;
 neleag i s explice un modul de construcie i utilizare al funciilor GPSS;
 utilizeze funciile GPSS pentru generarea de distribuii de probabilitate, altele
dect cea uniform;
 neleag modul de utilizare a parametrii tranzaciilor;
neleag i s explice modul de utilizare a variabilelor locale i globale GPSS .

Durata medie de parcurgere a primei uniti de nvare este de 2 ore.

100

M3.U2.3. Expresii GPSS


Atribute numerice standard. n principiu sunt entiti numerice. Ele pot fi:
- predefinite(asociate staiilor, cozilor, tranzaciilor, unor blocuri);
- definite de utilizator.
Ele se definesc astfel:
a) <identificator de familie> $<nume>, va referi atributul din familia specificat cu numele
indicat.
<identificator de familie><ntreg>, va referi atributul avnd numrul de ordine specificat
din familia indicat.
Deoarece numrul atributelor numerice standard este foarte mare, n cele ce urmeaz, n
aplicaii vom specifica semnificaia atributului respectiv.
Exemplu. n FN$SNORM FN este familia funciilor definite de utilizator(despre
care vom discuta imediat), iar SNORM este numele funciei; n V$PRET, V indic
faptul c avem un atribut numeric de tip variabil utilizator, iar PRET este
numele variabilei.

Funcii GPSS. Funciile GPSS au o alt semnificaie dect o rutin dintr-un limbaj de
programare sau o funcie matematic. Necesitatea utilizrii funciilor rezid, de exemplu, din
exprimarea timpului dintre 2 tranzacii consecutive i a timpilor de ntrziere nu numai ca
valori aleatoare uniforme, ci i ca valori ale unor repartiii oarecare.
Specificarea unei funcii. Indiferent de tipul funciei, definiia acesteia necesit:
numele funciei este un identificator definit de utilizator n cmpul etichet; cuvntul cheie
FUNCTION se gsete n cmpul instruciune;
specificarea variabilei funciei se gsete n cmpul operand A;
specificarea tipului funciei(D,E pentru discret, C pentru continu, L,M pentru list) se
gsete n poziia operandului B;
numrul de puncte utilizate n definiia funciei se gsete n poziia operandului B,
imediat dup tipul funciei;
punctele ce definesc funcia sunt perechi de numere (abscis i ordonat); perechile sunt
separate prin slash, iar numerele din cadrul perechilor sunt separate prin virgul.
Evaluarea funciei.
Cazul discret. Fie (a1,b1), ,(an,bn) (a1<a2<<an) punctele utilizate n definiia
funciei i x punctul n care vrem s determinm valoarea funciei; fie j astfel nct
aj-1<x<aj, a0 = - , j=1,..,n. Valoarea funciei n x este
b1, dac < x a1
b2 , dac a1<xa2

bn-1, dac an-2<xan-1


bn , dac an-1<xan
Exemplu. Prin instruciunea
DurataServ FUNCTION RN2,D4
0.2,4/0.3,5/0.6,2/1.0,6
se obine

101

4, daca 0 r 0.2
5, daca 0.2 r 0.3

DurataServ =
2, daca 0.3 r 0.6
6, daca 0.6 r 1.0
adic DurataServ primete valoarea 4 cu probabilitatea 0.2, valoarea 5, cu
probabilitatea 0.1, valoarea 2 cu probabilitatea 0.3 i valoarea 6 cu
probabilitatea 0.4.
Dac n locul literei D se folosete litera E, atunci dup ce pe baza argumentului funciei, se
determin perechea, se face i o evaluare a celei de-a doua componente, care este returnat ca
valoare a funciei

Exemplu.
TIP FUNCTION RN6, D6
0.16667,1/0.33333,2/0.5,3/0.66667,4/0.8333,5/1,6
Funcia definit va genera valorile 1,2,3,4,5,6 egal probabile.
.
Exemplu.
Edisc
FUNCTION
X$QRA,E5
1,S$Stor1/3,S$Stor2/5,S$Stor3/9,S$Stor5/10,S$Stor6
Cazul continuu. Pentru evaluarea funciei ntr-un punct dat se folosete metoda interpolrii
liniare.
Exemplu. Prin instruciunea
SOSIRI FUNCTION RN3,C3
0,2/0.5,8/1.0,11
am declarat o funcie pentru care numrul nodurilor de interpolare este n=3. Dreapta
care trece prin (0,2) i (0.5,8) este y=12x + 2. Dac valoarea generat prin
RN3 este 0.3, atunci SOSIRI = 12*0.3+2=5.6
Exemplu. Dac am definit o funcie, putem s o folosim ca operand al unui bloc
GENERATE sau ADVANCE apelnd-o cu FN$<Nume>

Cazul Lista. Litera L indic tipul funciei, iar numrul natural care l urmeaz definete
numrul de perechi ale listei care urmeaz declaraiei funciei. Valoarea argumentului este
folosit pentru a determina poziia n list a valorii returnate. Se definete o list de valori din
care va fi ales rezultatul. Cnd funcia este evaluat, mai nti este evaluat argumentul i este
folosit ca numr ordinal. El va indica poziia din list, care este returnata ca rezultat. Valoarea
argumentului trebuie s nceap cu 1 i s fie incrementat cu 1 pentru fiecare pereche
succesiv de numere. Valoarea lui X nu poate sa lipseasca.
Exemplu.
Listtype
FUNCTION
Q$Frizer,L5
1,PAR1/2,PAR2/3,PAR3/4,PAR4/5,PAR5
Prin aceast declaraie, se definete Listtype, care va lua una dintre valorile
PAR1,.., PAR5 ,n funcie de valoarea lui Q$Frizer.

102

Dac se folosete litera M n locul lui L valoarea returnat de funcia definit se obine prin
evaluarea celei de-a doua componente a perechii selectate.

Exemplu.
Mlist
FUNCTION
X$Name1,M5
1,Q$Nnam1/2,Q$NamX/3,Q$Nam4/4,Q$Nam6/5,F$Tan1
Utilizarea expresiilor GPSS. Exist dou tipuri de expresii aritmetice, cele de tipul ntreg,
declarate cu cuvntul cheie VARIABLE i cele reale, declarate cu cuvntul cheie
FVARIABLE. Pentru expresiile ntregi exist operanzii +, - ,*, / cu semnificaia obinuit i
@ (modulo). Pentru expresiile reale avem operanzi: +, -, *, /. Expresiile logice sunt declarate
cu blocul BVARIABLE.
Exemplu.
MedAritm
FVARIABLE (FN$A + FN$B) /2
Se declar o expresie real, a crei valoare este calculat ca fiind media aritmetic a
valorii funciilor A i B i care este atribuit variabilei MedAritm. Numele de
variabil se gsete n cmpul de etichet, cuvntul cheie FVARIBLE n cmpul
operator, iar expresia n cmpul operand.

Exemplu.
LINIE BVARIABLE (BV$A AND BV$B)
Acest exemplu defineste o entitate Bvariabible care urmeaz a fi evaluat cnd
se face referin la BV$LINIE. Dup ce este evaluat, rezultatul este 1(TRUE)
dac entitile de tip Bvariabilele A i B sunt TRUE cnd sunt evaluate, altfel
0(FALSE).
S ne reamintim...
Atributele numerice standard cuantific caracteristici ale entitilor GPSS.
Funciile GPSS sunt utililizate pentru a exprima anumite construcii specifice, cum
ar fi de exemplu diverse repartiii de probabilitate, care pot fi argumente ale unor
blocuri.
1. Scriei o funcie GPSS care s genereze o valoare a variabilei aleatoare
1
0

0,2 0,8
2. Scriei o funcie GPSS care s genereze o valoare aleatoare uniform cuprins
ntre 10 i 12.
3. Scriei o funcie GPSS care s asocieze numerelor 1, 2, 3, 4, 5 culorile alb, negru,
albastru, rou, galben.

M3.U2.4. Funcii predefinite GPSS pentru generarea unor variabile aleatoare


Generarea variabilei exponeniale negative. Vom folosi varianta care utilizeaz densitatea
de repartiie de forma:

103

1 ( x )
, daca x 0
e
f ( x) =
0, altfel

n care i reprezint parametrii de translatare, respectiv de contracie. Dac lum =0 i


=1/, obinem definiia n varianta clasic.
Sintaxa apelului este de forma
Valoare=EXPONENTIAL(NrGen,ValTrans,ValContr)
Argumentele sunt:
NrGen Numrul generatorului de numere aleatoare, poate fi un ntreg mai mare sau egal cu
1.
ValTrans Valoarea de translatare, folosit pentru a poziiona distribuia.
ValContr - Valoarea de contractare a distribuiei.

Exemplu.
Prin apelul Exponential(1,0,0.33)se genereaz o valoare a variabilei
exponeniale de parametru =30, utiliznd generatorul de numere aleatoare
numrul 1.
Generarea variabilei normale. Densitatea de repartiie a variabilei normale este

f ( x) =

( x )2
2 2

2 2

n care este media iar este deviaia standard. Sintaxa apelului este de forma
Valoare= NORMAL(NrGen,Medie,DevStd)
Argumentele sunt:
NrGenNumrul generatorului de numere aleatoare, poate fi un ntreg mai mare sau egal cu
1.
MedieValoarea medie a distribuiei.
DevStd-Deviaia standard de la medie.

Exemplu.
Prin apelul NORMAL(2,50,10)se genereaz o valoare a variabilei normale de
medie 50 i deviaie standard 10, utiliznd generatorul de numere aleatoare
numrul 2.

Exemplu.
Simularea sistemului de ateptare exp()/exp()/1:(,FIFO). Pentru
generarea timpului ntre dou sosiri consecutive (tranzacii) vom lua
ValTrans=0, ValContr=1, iar pentru timpul de servire ValTrans=0,
ValContr=0.5, deci n forma clasic a densitii de repartiie a variabilei
exponeniale negative, =1 i =2. Programul de simulare GPSS este:
SIMULATE
GENERATE (EXPONENTIAL(1,0,1))
QUEUE COADA
SEIZE STATIE
DEPART COADA
ADVANCE (EXPONENTIAL(1,0,0.5))
RELEASE STATIE
TERMINATE 1

104

Din raportul standard obinut n urma execuiei programului pentru 10000 de


tranzacii, extragem urmtoarele informaii:
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
STATIE
10001
0.504
1.017 1
10001
0
0
0
0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME
COADA 12
1 10001
4974
0.480
0.968

AVE.(-0) RETRY
1.926
0

n modulul 2 este prezentat un algoritm de simulare, implementat n limbajul C.


Valorile factorilor de eficien obtinui prin cele dou metode sunt aproximativ
egale.

Exemplu.
Simularea sistemului de ateptare exp()/exp()/1:(,HOL) cu dou
clase de prioriti. Vom utiliza aceleai valori pentru intervalele dintre tranzacii i
timpul de servire. Programul de simulare GPSS este:
SIMULATE
GENERATE (EXPONENTIAL(1,0,2)),,,,1
QUEUE COADA1
SEIZE STATIE
DEPART COADA1
ADVANCE (EXPONENTIAL(1,0,1))
RELEASE STATIE
TERMINATE 1
GENERATE (EXPONENTIAL(1,0,2)),,,,2
QUEUE COADA2
SEIZE STATIE
DEPART COADA2
ADVANCE (EXPONENTIAL(1,0,1))
RELEASE STATIE
TERMINATE 1

Observm c programul este format din dou segmente, corespunztoare celor dou
clase de prioriti. Din raportul standard obinut n urma execuiei programului
pentru 10000 de tranzacii, extragem urmtoarele informaii:
FACILITY ENTRIES
STATIE
10001
QUEUE
COADA1
COADA2

UTIL. AVE. TIME AVAIL.OWNER PEND INTER RETRY DELAY


0.979
1.003 1
9975
0
0
0
24

MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME


117 25
5023
97
36.715
74.940
9
0
5002
112
0.895
1.835

AVE.(-0) RETRY
76.416
0
1.877
0

n modulul 2 este prezentat un algoritm de simulare, implementat n limbajul C.


Valorile factorilor de eficien obtinui prin cele dou metode sunt aproximativ
egale. Din rezultatele prezentate relative la infomaiile relative la cozile
corespunztoare celor dou clase de prioriti, observm c valorile mediilor
timpilor de ateptare (AVE.TIME) sunt 74.940, pentru clasa 1(mai slab)
respectiv 1.835, pentru clasa 2. De asemenea, n ceea ce privete lungimea
medie a cozilor (AVE.CONT.), pentru clasa 1 obinem valoarea 36.715,
respectiv 0.895 pentru clasa 2.

Exemplu.
Simularea sistemului de ateptare exp()/exp()/5:(,FIFO). Pentru
generarea timpului ntre dou sosiri consecutive (tranzacii) vom lua
ValTrans=0, ValContr=2, iar pentru timpul de servire ValTrans=0,

105

ValContr=5, deci n forma clasic a densitii de repartiie a variabilei


exponeniale negative, =0.5 i =0.2. Programul de simulare GPSS este:
STATIE

SIMULATE
STORAGE
5
GENERATE (EXPONENTIAL(1,0,2))
QUEUE COADA
ENTER STATIE,1
DEPART COADA
ADVANCE (EXPONENTIAL(1,0,5))
LEAVE STATIE
TERMINATE 1

Din raportul standard obinut n urma execuiei programului pentru 10000 de


tranzacii, extragem urmtoarele informaii:
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME
COADA
8
2 10006
8690
0.124
0.251
STORAGE CAP. REM. MIN. MAX.
STATIE
5
0
0
5

ENTRIES AVL.
10005
1

AVE.(-0) RETRY
1.908
0

AVE.C. UTIL. RETRY DELAY


2.487 0.497
0
1

n modulul2 este prezentat un algoritm de simulare, implementat n limbajul C.


Valorile factorilor de eficien obtinui prin cele dou metode sunt aproximativ
egale.

S ne reamintim...
GPSS conine funcii predefinite pentru generarea unor valori de selecie ale unor
distribuii clasice. Sunt prezentate funciile utilizate pentru generarea variabilelor
exponeniale negativ i normal. n documentaia de sistem, sunt prezentate i alte
funcii pentru generarea altor distribuii.
1. Scriei un apel care s genereze o valoare de selecie a variabilei exponeniale
negative de parametru 0.5, folosind RN4.
2. Scriei un apel care s genereze o valoare de selecie a variabilei normale de
medie 10 i deviaie standard 5, folosind RN3.
M3.U2.5. Parametrii tranzaciilor, blocul ASSIGN.
Parametrii tranzaciilor pot fi privii ca un vector. Referenierea parametrilor: k sau Pk va
referenia al k-lea parametru al tranzaciei, n funcie de contextul n care e folosit.

Exemplu.
Advance P5,5
Pentru toate tranzaciile care ating acest bloc, pentru determinarea timpului de
ntrziere se va utiliza al 5-lea parametru al tranzaciei respective. Parametrul poate
diferi de la o clas la alta.
Blocul ASSIGN este utilizat pentru a modifica valorile parametrilor unei tranzacii.
Operandul A specific numrul parametrului care urmeaz s fie modificat. Operandul B
specific valoarea care va fi atribuit parametrului indicat de ctre operandul A.

106

Exemplu.
ASSIGN 4, 72
n toate toate tranzaciile care ating acest bloc, celui de-al 4-lea parametru i se va
atribui valoarea 72
ASSIGN 11,FN$EXPON
n toate toate tranzaciile care ajung n acest loc se va evalua funcia EXPON i
rezultatul evalurii va fi atribuit celui de-al 11-lea parametru al tranzaciei
Modurile incremental / decremental
Exemplu. Exemplul 18.
ASSIGN 4+,72
La valoarea celui de-al 4-lea parametru al tranzaciilor se adaug valoarea 72.
ASSIGN 11-,FN$EXPON
Din cel de-al 11-lea parametru se va scdea valoarea funciei EXPON.
Adresarea direct/ indirect. Se folosete referenierea cu Pk . Operandul A va conine un
parametru aflat ntr-un alt parametru.
Exemplu.
ASSIGN P2 ,10
Parametrului coninut n parametrul al doilea i se va atribui valoarea 10.
Combinarea mediilor incremental / decremental cu adresarea indirect
Exemplu.
ASSIGN P4+,FN$EXPON
La coninutul parametrului al crui numr se gsete n al 4-lea parametru se va
aduga rezultatul evalurii funciei.
1.Scriei o instruciune care s atribuie parametrului al doilea al tranzaciei o
valoare de selecie a variabilei normale de medie 10 i deviaie 5.
2.Scriei o instruciune care s adauge parametrului al treilea al tranzaciei o valoare
de selecie a variabilei exponeniale negative de parametru 2.

M3.U2.6. Variabile globale (savevalue).


Fiecare tranzacie are parametrii care pot fi gndii ca nite variabile locale. Problema care se
pune este s existe nite locaii de memorie la care s aib acces toate tranzaciile din sistem.

Iniializare (blocul INITIAL). Variabilele globale sunt implicit iniializate cu 0. Pentru a se


iniializa cu valori diferite de 0, se folosete INITIAL. Acest bloc conine n cmpul
operanzi perechi de forma (nume variabil, valoare) separate prin slash, iar n cadrul
perechii separate prin virgul.
Exemplu.
INITIAL

X$RATA,5/X$COST,1000

Observaie. Aceste variabile globale formeaz o clas de atribute numerice standard,


identificat cu X.
Modificarea variabilelor globale. (Blocul SAVEVALUE). Variabilele globale se pot
modifica dinamic (n timpul execuiei). Blocul SAVEVALUE are ca operanzi: A este
identificatorul variabilei globale; B este expresia atribuit acelei variabile globale.
107

Moduri de lucru.
Atribuire direct. Se evalueaz expresia coninut n operandul B i se atribuie
identificatorului din operandul A
Atribuire prin adresare indirect. X$*Pj Se va modifica un atribut (o variabil global)
coninut n parametrul j al al tranzaciei respective.
Atribuire prin decrementare/ incrmentare. Se aplic aceleai reguli ca la ASSIGN.
Blocurile CLEAR i RESET. Exist posibilitatea lansrii unui program de mai multe ori.
Fiecare execuie corespunde utilizrii unei instruciuni start. n acest context, se pune
problema cum coninutul unei variabile globale, setat cu o instruciune SAVEVALUE, va fi
pstrat de la o execuie la alta. Prin utilizarea blocului RESET, plasat naintea blocului
START nu se modific coninutul nici unei variabile globale, de la o execuie la alta. n
schimb, blocul CLEAR reiniializeaz o parte sau toate varibilele globale la zero. Dac o list
de identificatori este specificat n cmpul de argumente al blocului CLEAR, acestea sunt
excluse de la operaia de reiniializare.
Exemplu.
CLEAR A1-A5,X$RATA
Nu va reseta coninutul valorilor variabilelor ai cror identificatori sunt ntre A1 i
A5 i variabilei globale X$RATA.
Deoarece procesorul GPSS planific fiecare sosire prin blocul GENERATE nainte
de nceputul execuiei, este important ca iniializarea variabilelor globale care sunt
folosite ca operanzi ai acestui bloc, s-l preced. n caz contrar, GPSS va considera
valorile implicite egale cu zero.
Exemplu.
.........
INITIAL A1,20
.........
GENERATE 50,A1
.........
START
INITIAL A1,30
CLEAR A1
START
n acest exemplu, A1 este reiniializat cu valoarea 30, sunt terse toate valorile
variabilelor globale cu excepia lui A1 i este declanat o nou execuie.
S ne reamintim...
Parametrii tranzaciilor pot fi privii ca un vector. Referenierea parametrilor: k
sau Pk va referenia al k-lea parametru al tranzaciei, n funcie de contextul n
care e folosit.
Blocul ASSIGN este utilizat pentru a modifica valorile parametrilor unei tranzacii.
Variabile globale sunt locaii de memorie la care s aib acces toate tranzaciile
din sistem. Modificarea variabilelor globale se face cu blocul SAVEVALUE.

1. Scriei o secven care: s iniializeze dou variabile globale, s adauge la prima


primul parametru al tranzaciei, s adauge la a doua al doilea parametru al
tranzaciei.

108

M3.U2.7. Instruciunea TABLE i blocul TABULATE


Aceste blocuri se utilizeaz atunci cnd se dorete obinerea unor statistici relative la anumite
entiti (atribute numerice standard, expresii, medii, deviaii standard etc.). Funcia principal
a combinaiei format dintre cele dou blocuri, este de a construi o tabel de frecvene(sau o
histogram) pentru o anumit entitate.
Blocul TABLE iniializeaz un tabel cu frecvene de distributie. Sintaxa este:
NUME TABLE A,B,C,D
Eticheta NUME este obligatorie i reprezint numele .
A argumentul lui Table, entitatea a crei frecven de distribuie urmeaz s fie tabulat.
B limita superioar a primei frecvene din clas.
C lungimea intervalelor de lungime egal.
D numarul total de intervale.
Operanzii B, C i D definesc intervalul de tabulare(figura 3.2.1)

Interval 1

Interval 2
B

Interval 3
B+C

..........
B+2C

Interval D

. B+(D-2)C

Figura 3.2.1. Intervalele specificate de operanzii B, C i D ai blocului TABLE


Blocul Tabulate are un singur argument, numele entitii TABLE. Cnd o tranzacie intr n
blocul TABULATE, argumentul lui TABLE este clasificat ntr-una dintre clasele definite de
operanzii B, C, D i contorul de frecven al acelei clase este incrementat.
Exemplu. Prin utilizarea atributului numeric standard M1 ca argument al blocului
TABLE, se nregistreaz frecvenele timpilor de tranzit ale tranzaciilor.
SIMULATE
ARRIV
TABLE
M1,600,1000,8
GENERATE 100,50
TABULATE ARRIV
SEIZE
FAC
ADVANCE 90,50
RELEASE FAC
TERMINATE 1
GENERATE 10000
TERMINATE
1
Alternativ a instruciunii TABLE. n locul cuvntului TABLE se folosete QTABLE
(Queue Table) i operandul A este identificatorul unei cozi. Operanzii B, C, D au semnificaia
prezentat anterior. n acest caz, atributul numeric considerat este timpul de staionare n
coad; nu mai este necesar utilizarea blocului TABULATE.

109

Exemplu.
WAIT

SIMULATE
QTABLE LINE,10,15,7
GENERATE 100,50
QUEUE
LINE
SEIZE
FAC
DEPART LINE
ADVANCE 90,50
RELEASE FAC
TERMINATE 1
GENERATE 10000
TERMINATE 1

S ne reamintim...
Instruciunea TABLE i blocul TABULATE se utilizeaz atunci cnd se dorete
obinerea unor statistici relative la anumite entiti (atribute numerice standard,
expresii, medii, deviaii standard etc.).
Blocul QTABLE se folosete pentru obinerea de statistice relativ la cozi.

Specificai numrul de intervale i lungimile lor n exemplele prezentate anterior.

M3.U2.8. Test de evaluare a cunotinelor


Marcai varianta corect.
1. Numele unei funcii este un identificator definit de utilizator n cmpul:
a) etichet.
b) instruciune.
c) operandul A.

d) operandul B.

2. Specificarea variabilei unei funcii se gsete n cmpul operand A:


a) etichet.
b) instruciune.
c) operandul A.
d) operandul B.
3. Numrul de puncte utilizate n definiia unei funcii se gsete n poziia
operandului:
a) etichet.
b) instruciune.
c) operandul A.
d) operandul B.
4. Tipul unei funcii se specific n poziia operandului:
a) etichet.
b) instruciune.
c) operandul A.
d) operandul B.
5. O expresie aritmetic de tip real se declar cu cuvntul cheie:
a) FREAL
c) REAL
b) FVARIABLE
d) VARIABLE.
6. Pentru a modifica valorile parametrilor unei tranzacii este utilizat:
c) Blocul ATTRIB
a) Blocul ASSIGN
b) O operaie de atribuire
d) O operaie de citire
7. Variabilele globale sunt iniializate cu valori diferite de 0, cu blocul:
110

a) ASSIGN

c) INITIAL

b) ATTRIB
d) SET
8. Entitatea a crei frecven de distribuie urmeaz s fie tabulat, este declarat
n blocul TABLE n operandul:
a) D
c) C
b) A

d) B

M3.U2.8 Rezumat
n prima parte a unitii de nvare este prezint cteva noiuni legate de utilizarea
expresiilor aritmetice n limbajului GPSS. Ca orice expresie a unui limbaj de
programare, aceasta presupune nite operanzi. Astfel, sunt prezentai operanzi
specifici GPSS. Un atribut numeric standard al unei entiti GPSS este o
caracteristic a acesteia care poate fi utilizat n programe.
Funciile GPSS sunt utililizate pentru a exprima anumite construcii specifice, cum
ar fi de exemplu diverse repartiii de probabilitate, care pot fi argumente ale unor
blocuri. GPSS conine funcii predefinite pentru generarea unor valori de selecie
ale unor distribuii clasice. Sunt prezentate funciile utilizate pentru generarea
variabilelor exponenial negativ i normal.
Parametrii tranzaciilor pot fi privii ca un vector, ca o colecie de variabile locale,
specifice unei anumite reanzacii. GPSS permite iniializarea i modificarea
valorile parametrilor unei tranzacii.
Variabile globale sunt locaii de memorie la care s aib acces toate tranzaciile din
sistem. Modificarea variabilelor globale se face cu blocul SAVEVALUE.

Instruciunea TABLE i blocul TABULATE se utilizeaz atunci cnd se dorete


obinerea unor statistici relative la anumite entiti (atribute numerice standard,
expresii, medii, deviaii standard etc.).
Blocul QTABLE se folosete pentru obinerea de statistice relativ la cozi.

111

Unitatea de nvare M3.U3. Controlul micrii tranzaciilor


Cuprins
M3.U3.1. Introducere ............................................................................................................. 112
M3.U3.2. Obiectivele unitii de nvare .............................................................................. 112
M3.U3.3. Blocul Transfer................................................................................................. 112
M3.U3.4. Blocul TEST .......................................................................................................... 113
M3.U3.5. Blocurile PRIORITY, PREEMPT i RETURN....................................................... 114
M3.U3.6. Comutatori logici. Blocurile LOGIC i GATE ....................................................... 116
M3.U3.7. Blocul SELECT .................................................................................................... 119
M3.U3.8. Test de evaluare a cunotinelor ............................................................................. 123
M3.U3.9. Rezumat ................................................................................................................ 124
M3.U3.1. Introducere
Controlul micrii tranzaciilor prin sistem reprezint un set de faciliti oferite de
limbajul GPSS. O astfel de modalitate este saltul la o anumita locaie, n funcie
de anumite condiii care pot depinde i de elemente aleatoare.
De asemenea, condiia de intrare a unei tranzacii ntr-un anumit bloc poate fi
testat, fiind permis sau nu naintarea temporar a tranzaciei prin sistem.
Micarea tranzaciilor prin sistem se poate realiza i pe baza valorilor unor
comutatori logici, pentru care exist posibiliti de actualizare.
Se poate gestiona situaia cnd o tranzacie de prioritate mai nalt, dect a uneia
care este servit de ctre o facilitate, s cear forarea acesteia.
De asemenea, exist posibilitatea selectrii pe baza unor criterii, a unei anumite
componente a unei entiti GPSS.
M3.U3.2. Obiectivele unitii de nvare
La sfritul acestei uniti de nvare studenii vor fi capabili s:
 neleag i s explice transferul unei tranzacii la o anumit locaie a
programului;
 neleag i s explice modalitile de condiionare a naintrii unei tranzacii
prin sistem;
 neleag i s explice forarea unei faciliti;
 neleag i s explice exemplele prezentate.

Durata medie de parcurgere a primei uniti de nvare este de 3 ore.

M3.U3.3. Blocul Transfer


Cu ajutorul blocului TRANSFER se ramific micarea tranzaciilor, adic se cere ca
tranzaciile s fie direcionate ctre un alt bloc dect cel care urmeaz n seven. Exist trei
moduri de transfer:
 Modul necondiional mutarea la un anumit bloc se face indiferent de condiiile interne
ale sistemului simulat(un fel de goto).

112

 Modul statistic o tranzacie este direcionat ctre unul dintr-o mulime de dou blocuri,
cu o anumit probabilitate.
 Modul condiional o tranzacie este direcionat ctre un bloc preferat. Dac intrarea n
acest bloc nu este permis atunci intrarea este direcionat ctre un bloc alternativ.
Observaii.
1. Odat intrat ntr-un anumit bloc, datorit unei instruciuni de transfer, tranzacia va
nainta n sistem sevenial, ncepnd cu acel bloc.
2. Dac tranzacia nu va fi transferat n nici unul din blocurile cerute, atunci rmne n
blocul TRANSFER.
3. Blocul TRANSFER acioneaz, n funcie de operandul A astfel: Dac operandul A este
implicit, atunci modul de transfer este necondiionat. Operandul B ne va indica blocul unde
urmeaz s se duc tranzacia.
4. Dac operandul A este un numr p, cuprins ntre 0 i 1, atunci modul de transfer este
statistic i tranzacia va ncerca s se duc la unul dintre blocuile desemnate de ctre
operanzii B, respectiv C cu probabilitile 1-p i respectiv p.
5. Dac operandul A este BOTH (literal), modelul de transfer este condiionat i mai nti va
ncerca s transfere la blocul desemnat de operandul B. Dac nu se poate, va ncerca s se
mute la blocul desemnat de C. Dac i blocul desemnat de operandul C este ocupat, va
ncerca s transfere din nou la blocul desemnat de operandul B .a.m.d.
Observaie. B i C reprezint nite etichete (identificatori) ai blocului unde trebuie s se duc
tranzacia.
Exemplu. Transfer necondiionat
TRANSFER
,HOP

HOP ADVANCE 25,2


Exemplu. Transfer statistic:
TRANSFER 0,25, HOP,REP

REP
SEIZE SCULE

HOP ADVANCE 252,12


Exemplu. Transfer condiionat:
TRANSFER BOTH,REP,REP1

REP
SEIZE SCULE

REP1 SEIZE SCULE1


Explicai n detaliu exemplele prezentate anterior.

M3.U3.4. Blocul TEST


Acest bloc compar valorile a dou atribute numerice standard i, n funcie de rezultatul
comparaiei ntreprinde o anumit aciune.
Operanzii utilizai sunt:
- A i B, care conin cele dou atribute numerice standard care se compar.

113

- C poate fi implicit sau explicit. Dac este explicit, atunci el va reprezenta o etichet a
blocului la care se va muta tranzacia respectiv, dac rezultatul testului este fals. Dac
rezultatul testului este adevrat, tranzacia se va muta la blocul care urmeaz dup
instruciunea TEST. n plus, mai exist operandul auxiliar care indic natura operaiei care
va fi efectuat. Poate fi: E (egal), L (<), G (>), LE (<=), GE(>=), NE (). Dac operandul C
lipsete, atunci: Dac rezultatul testului este true, tranzacia nainteaz prin model, altfel,
tranzacia este blocat n propriul bloc(i este refuzat intrarea n blocul TEST) i se va
ncerca micarea altei tranzacii din CEC.
Exemplu.
TEST G 5,Q$WAIT
Q indic faptul c avem un atribut asociat unei cozii i Q$WAIT conine numrul
de clieni din coada WAIT. Testeaz dac 5 este mai mare dect numrul de
clieni din coad. Dac da, tranzacia i continu micarea prin model, altfel(dac
n coad exist mai mult de 5 clieni), tranzacia va rmne n blocul ei current,
pn cnd n coad vor fi mai puin de 5 clieni.

Exemplu.
TEST E Q1,K4,COADA
Se testeaz lungimea cozii 1. Dac aceasta este egal cu 4, tranzacia va trece
imediat la blocul urmtor, altfel este trimis la blocul cu etcheta COADA.

Exemplu.
TEST GE Q2,S3
Se testeaz dac lungimea cozii 2 este mai mare sau egal cu numrul de locuri
ocupate din STORAGE 3,; dac rezultatul testului este true, tranzacia va trece
imediat la blocul urmtor, altfel este blocat pn se ndeplinirea condiiei.

Descriei efectul urmtoarelor blocuri.


TEST LE 5,Q$Coada
TEST GE Q1,K4,COADA
TEST G Q2,K3,S4
M3.U3.5. Blocurile PRIORITY, PREEMPT i RETURN
n multe aplicaii, anumite tranzacii trebuie s primeasc un tratament preferenial cnd
concureaz cu alte tranzacii n utilizarea unei faciliti. De exemplu, n cazul unui sistem de
calcul cu partajarea timpului, putem privi procesele care concureaz n obinerea unor resurse
ale sistemului de calcul ca fiind tranzacii; n funcie de importana lor i mecanismul de
planificare utilizat, anumite procese(tranzacii) pot primi o prioritate mai nalt, atunci cnd
intr n competiie pentru obinerea unor resurse ale sistemului de calcul.
Deoarece GPSS ordoneaz CEC mai nti pe baza prioritii tranzaciilor i n cadrul aceleeai
clase de prioriti pe baza timpului de staionare n blocul respectiv, ordinea n care
tranzaciile sunt activate poate fi influenat de setarea unei prioriti corespunztoare
acestora. Deocamdat, singura modalitate de setare a prioritii tranzaciilor, a fost utilizarea
operandului E n cadrul blocului GENERATE. Dac nu este setat acest operand, toate
tranzaciile au acelai nivel de prioritate. Cu ajutorul blocului PRIORITY se poate modifica
114

prioritatea tranzaciilor care ating acest bloc. Cu ajutorul blocului PREEMPT, o tranzacie
poate obine serviciile unei faciliti chiar dac aceasta servete alt tranzacie, cu o prioritate
mai slab. Cnd o tranzacie obine o facilitate prin forare (utilizarea blocului PREEMPT),
eliberarea facilitii se va face prin blocul RETURN i nu prin blocul RELEASE.
Blocul PRIORITY are doi operanzi:
- operandul A conine nivelul de prioritate i nu poate lipsi; n momentul cnd o tranzacie
atinge blocul PRIORITY este evaluat, eventual trunchiat i atribuit ca nivel de prioritate
pentru tranzacia curent.
- operandul B poate fi opional; dac este prezent el poate fi unul din literalele BU or Null;
dac este BU tranzacia respectiv va fi plasat n CEC, ultima n cadrul clasei sale de
prioritate.
Blocul PREEMPT are cinci operanzi:
- operandul A care nu poate lipsi, conine numele facilitii care va fi forat.
- operandul B: dac acest operand lipsete, forarea va avea loc dac tranzacia care utilizeaz
facilitatea nu a obinut-o tot prin forare. n caz contrar, el va fi literalul PR; n acest caz
forarea facilitii va avea loc dac tranzacia care cere facilitatea respectiv are un nivel de
prioritate mai nalt dect cea servit.
- operandul C este o eticheta, care specific blocul la care va fi transmis tranzacia creia i sa luat facilitatea respectiv.
- operandul D: dac apare forarea, acesta va conine parametrul tranzaciei nlocuite n care
va fi stocat timpul rmas pn la terminarea servirii acesteia.
- operandul E: dac acest operand lipsete, continu s ncerce s obin facilitatea respectiv;
dac acest operand conine literalul RE, tranzacia nlocuit abandoneaz facilitatea
respectiv.
Blocul RETURN are un singur operand A care specific numele facilitii redate.
Forarea tranzaciilor. Cnd este ncercat forarea unei faciliti de ctre o tranzacie, se
poate ntmpla una dintre urmtoarele situaii:
1.
Facilitatea este liber.
2.
Facilitatea este ocupat cu servirea unei tranzacii care se gsete n CEC; acest
fenomen se poate ntmpla numai dac forarea facilitii de ctre o tranzacie i eliberarea
facilitii de ctre o alt tranzacie pe care tocmai a servit-o, sunt dou evenimente care se
ntmpl la aceeai valoare a timpului.
3.
Facilitatea este ocupat cu o tranzacie care se afl n FEC (blocul ADVANCE).
n primul caz, forarea are ca efect obinerea serviciilor facilitii. n cazul al doilea, tranzacia
care a terminat de utilizat facilitatea o elibereaz implicit i permite obinerea serviciilor
facilitii de ctre tranzacia care a cerut forarea. n cazul al treilea, pentru a face posibil
revenirea tranzaciei forate la facilitatea care tocmai a servit-o, tranzacia este mutat din
FEC ntr-un lan special, lanul tranzaciilor ntrerupte IC(Interrupt Chain). Pentru fiecare
facilitate exist un IC, organizat pe principiul stivei.

115

Exemplu. Simularea sistemului de ateptare


exp()/exp()/1:(,Forare) cu dou clase de prioriti.
SIMULATE
GENERATE (EXPONENTIAL(1,0,1)),,,,1
QUEUE COADA1
SEIZE STATIE
DEPART COADA1
ADVANCE (EXPONENTIAL(1,0,0.5))
RELEASE STATIE
TERMINATE 1
GENERATE (EXPONENTIAL(1,0,1)),,,,2
QUEUE COADA2
PREEMPT STATIE,PR; forteaza facilitatea
DEPART COADA2
ADVANCE (EXPONENTIAL(1,0,0.5))
RETURN STATIE
TERMINATE 1

Programul de simulare a fost executat pentru 5000 de tranzacii. Din raportul


standard am extras urmtoarele informaii:
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
STATIE
5001
0.971
0.501
1
4965
0
0
0
59
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME
AVE.(-0) RETRY
COADA1 101
60
2539
70
32.182
32.736
33.665
0
COADA2
8
0
2521
1326
0.702
0.720
1.518
0

Din categoria de informaii referitoare la cozi, se observ c pentru clienii din clasa
2, de prioritate mai nalt, media timpilor de ateptare n coad (AVE.TIME ) este de
0.720, n timp ce pentru clienii din clasa 1, de prioritate mai slab este de
32.736. n ceaa ce privete lungimea medie a cozii, se observ c lungimea medie
a cozii (AVE.CONT.) este de 32.182, pentru clienii de prioritate mai slab,
respectiv de 0.702, pentru clienii de prioritate mai mare.
Din coloana
ENTRY(0), observm c numrul clienilor care au ateptat n cozi pentru a fi
servii, un timp egal cu 0 este de 1326 pentru clienii din clasa 2, respectiv numai
de 70 pentru clienii din clasa 1.
Toate aceste informaii sunt n concordan cu conceptul de model de ateptare cu
prioriti, cu forarea staiei de servire.
n modulul 2 este prezentat un algoritm de simulare, implementat n limbajul C.
Valorile factorilor de eficien obtinui prin cele dou metode sunt aproximativ
egale.

S ne reamintim...
Cu ajutorul blocului TRANSFER se ramific micarea tranzaciilor, adic se cere ca
tranzaciile s fie direcionate ctre un alt bloc dect cel care urmeaz n seven.
Blocul PRIORITY modific prioritatea tranzaciilor.
Blocul RETURN specific numele facilitii redate.
Test de evaluare a cunotinelor
Scriei un program de simulare a sistemului de ateptare
exp()/exp()/1:(,Forare) cu trei clase de prioriti.

116

M3.U3.6. Comutatori logici. Blocurile LOGIC i GATE


Blocurile logice sunt utilizate pentru a semnala apariia unor evenimente n cadrul modelului.
De obicei, sunt utilizate pentru a sincroniza micarea tranzaciilor, amnnd naintarea
anumitor tranzacii prin poriuni ale modelului, pn cnd sunt satisfcute anumite condiii.
Comutatoarele logice marcheaz prin starea lor (setat sau resetat), ndeplinirea sau
nedeplinirea unor condiii impuse de utilizator. Un comutator poate fi setat, resetat sau
inversat. Starea iniial a unui bloc logic este resetat. GPSS iniializeaz valoarea
comutatoarelor logice cu ajutorul blocului INITIAL, le modific valoarea cu blocul LOGIC
i blocheaz naintarea tranzaciilor prin blocul GATE.
Iniializarea comutatoarelor logice se face cu blocul INITIAL. n cmpul de operanzi, blocul
va conine o list de comutatoare, separate prin caracterul / care vor fi iniializate.
Exemplu.
INITIAL

LS2/LS$INTR/LS$FANION

Va seta valoarea celui de-al doilea comutator precum i comutatoarele cu


identificatorii INTR i FANION.
Blocul LOGIC modific valorile comutatoarelor logice n timpul execuiei programului.
Sintaxa blocului este:
LOGIC O A.
Semnificaia operanzilor este: O este este operatorul logic i poate fi S, R, I; A este
obligatoriu i reprezint identificatorul entitii logice.
Un bloc LOGIC este folosit pentru a stabili, a reseta sau a inversa o stare a unei entiti. O
entitate are dou stri: on (set sau 1) sau off (reset sau 0). Dac operandul logic este S,
respectiv R entitatea specificat de operandul A este setat n starea on, respectiv off; dac
operandul logic este I starea entitii specificate de operandul A este inversat.
Exemplu.
LOGIC S PowerSwitch
n acest exemplu entitatea logic cu numele PowerSwitch va fi setat n starea on.
Atributul numeric standard legat de acest bloc este LSEntnum, n care Entnum
este identificatorul comutatoarului.
Blocul GATE. Vom considera utilizarea blocului GATE n conexiune cu comutatoarele logice.
n acest context, blocul controleaz fluxul tranzaciilor prin secvene ale modelului GPSS ,
ntr-un alt mod dect o face blocul TEST. n cazul blocului TEST, se face o comparaie ntre
dou atribute numerice standard i va returna o valoare logic. i n cazul blocului GATE se
face o testare, dar n aceast situaie testul verific condiia unui comutator logic i genereaz
o valoare logic true sau false, n funcie de valoarea comutatorului logic i a
operatorului condiional al blocului GATE.
Sintaxa blocului este de forma:
GATE O
A,B
A este numele comutatorului i nu poate lipsi.
O este operatorul condiional; este obligatoriu i poate fi LS sau LR.
B este o etichet i poate lipsi.
Dac operandul B lipsete, blocul GATE funcioneaz n modul de respingere. n acest mod,
dac rezultatul testului este false, atunci tranzacia rmne n coada blocului GATE, altfel
trece mai departe.

117

Dac operandul B este prezent, tranzacia va trece de blocul GATE, dac rezultatul testului
este true, altfel trabzacia respectiv va sri la eticheta specificat.
O situaie n care sunt utilizate comutatoarele logice i blocul GATE este aceea n care se
permite tranzaciilor s intre n sistem i s fie prelucrate pn la o valoare specificat a
timpului. Tranzaciilor generate dup valoarea fixat a timpului nu le va mai fi permis s intre
n sistem, n timp ce tranzaciile care sunt deja n sistem vor fi prelucrate n continuare.
Exemple de sisteme a cror simulare utilizeaz aceast schem sunt cele de tip supermarchet
sau bancar.
Blocul GATE poate fi utilizat pentru a controla accesul la entiti facilitate sau storage. n
acest caz operandul A este numele unei entiti de tipul facilitate sau storage. Pentru faciliti,
testul fcut este definit astfel:
U- facilitatea este utilizat.
NU-facilitatea nu este utilizat.
FV - Facilitatea este disponibil.
FNV -Facilitatea nu este disponibil.
I - Facilitatea este forat.
NI - Facilitatea nu este forat.
Pentru entiti storage, testul fcut este definit astfel:
SE - Entitatea storage este vid (toate elementele de servire sunt neocupate).
SF - Entitatea storage este complet(toate elementele de servire sunt ocupate).
SNE - Entitatea storage nu este vid (exist elemente de servire ocupate).
SNF - Entitatea storage nu este complet(exist elemente de servire neocupate).
SV - Entitatea storage este disponibil.
SNV - Entitatea storage nu este disponibil.
Exemplu.
Presupunem c avem o frizerie cu n care ofer servicii 3 frizeri. De asemenea,
presupunem c atunci cnd sosete un client, dac toi frizerii sunt ocupai ei renun
s mai atepte (prsesc imediat sistemul).
Programul de simulare este prezentat n continuare.
SIMULATE
FRIZER STORAGE 3
GENERATE 10,5
GATE SNF FRIZER,RENUNTA
ENTER
FRIZER
ADVANCE 25,10
LEAVE
FRIZER
RENUNTA TERMINATE 1
Rezultatele simulrii sunt:
START TIME
0.000

END TIME
532.633

STORAGE CAP. REM. MIN. MAX.


FRIZER
3
2
0
3

BLOCKS
6

FACILITIES
0

ENTRIES AVL.
45
1

118

STORAGES
1

AVE.C. UTIL. RETRY DELAY


2.036 0.679
0
0

S ne reamintim...
Iniializarea comutatoarelor logice se face cu blocul INITIAL.
Blocul LOGIC modific valorile comutatoarelor logice n timpul execuiei
programului.
Blocul GATE poate fi utilizat n conexiune cu comutatoarele logice.
Blocul GATE poate fi utilizat pentru a controla accesul la entiti facilitate sau
storage
ntrebri.
Explicai efectul urmtoarelor blocuri GATE
GATE SF 3
GATE SF 3,ALFA
GATE SNE 3,17
GATE LS 2
GATE LR 2,ALFA
M3.U3.7. Blocul SELECT
Pn acum am considerat c atunci cnd o tranzacie cere serviciile unei entiti de tip storage
aceasta este plasat ntr-o coad unic. Sunt situaii n care este util ca tranzaciile s poat
alege o anumit entitate de servire, pe baza unor criterii(lungimea cozii etc). Prin intermediul
blocului SELECT, GPSS permite tranzaciilor s aleag dintre mai multe alternative. De
exemplu, dintr-o mulime de entiti care ofer servicii, identificate numeric, se poate alege
una dintre ele, care satisface anumite cerine formulate i numrul entitii este atribuit unui
parametru al tranzaciei.
Sintaxa blocului SELECT este de forma:
SELECT O

A,B,C,D,E,F

O este obligatoriu i este un operator conditional sau logic, n funcie de modul de utilizare al
blocului.
A este obligatoriu i este un idetificator al unui parametru al tranzaciei n care este copiat
numrul entitii selectate.
B este obligatoriu i este marginea din stnga a spaiului de selecie.
C este obligatoriu i este marginea din dreapta a spaiului de selecie.
D este valoarea cu care atributul numeric standard coninut n operandul E trebuie s fie
comparat. Este obligatoriu n cadrul modului condiional, despre care vom discuta imediat.
E este numele clasei atributului numeric standard, n cazul modului condiional.
F este o etichet a unui bloc la care va fi transferat tranzacia care a intrat n blocul SELECT
dac procesul de selecie eueaz. Dac este implicit, tranzacia va merge la urmtorul bloc de
dup SELECT.
Blocul SELECT lucreaz n trei moduri: condiional sau relaional, minimum-maximum i
logic.
Modul condiional. Cnd tranzacia intr n blocul SELECT, se realizeaz un proces de
cutare n domeniul specificat de operanzii B i C, de unde se determin o valoare numeric
obinut testnd o relaie specificat n operandul O. Coninutul operandului O poate fi una
dintre valorile G, GE, E, NE, LE, L.

119

Exemplu.
SELECT E

4,2,6,0,F

Are ca efect parcurgerea facilitilor cu numerele 2,..,6 pentru a o gsi pe cea


liber; prima valoare din domeniu gsit este atribuit parametrului 4 al tranzaciei,
care a intrat n blocul SELECT. Dac nu este gsit o astfel de facilitate, se atribuie
valoarea 0 parametrului 4 al tranzaciei.
Exemplu.
SELECT LE

5,4,9,2,Q

Are ca efect parcurgerea cozilor cu numerele 4,..,9 pentru a o gsi pe cea a crei
lungime este mai mic sau egal cu 2. Dac o astfel de coad este gsit, numrul ei
va fi stocat n parametrul 5 al tranzaciei care a intrat n blocul SELECT. Dac nu
este gsit o astfel de coad, se atribuie valoarea 0 parametrului 5 al tranzaciei.
Modul MIN-MAX. n acest mod, coninutul operandului O poate fi una dintre valorile MIN
sau MAX. Operanzii A, B, C i E au aceeai semnificaie ca i n cazul modului condiional.
Operanzii D i E sunt obligatoriu implicii. Cnd o tranzacie intr n blocul SELECT n acest
mod, se determin valoarea minim sau maxim a mulimii definit de atributul numeric
standard coninut n operandul E i valorile definite de coninutul operanzilor B i C. Valoarea
astfel determinat, este atribuit parametrului tranzacieI coninut n operandul A. Deoarece,
totdeauna o mulime finit are un minim i un maxim, cutarea se va ncheia totdeauna cu
gsirea unei valori.
Exemplu.
SELECT MIN
5,1,P3,,Q
Are ca efect parcurgerea cozilor cu numerele de la 1 pn la numrul coninut n
parametrul 3 al tranzaciei i alegerea cozii cu lungimea minim. Dac exist mai
multe cozi cu acceai lungime, se selecteaz cea cu numrul cel mai mic.
Modul logic. n acest mod, coninutul operandului O(logic) exprim explicit condiia care va
fi verificat; deci, operandul E nu mai este necesar. Operanzii A, B i C au aceeai
semnificaie ca mai sus. Cnd valoarea operandului logic este true va fi selectat entitatea
definit de ceilali operanzi. Condiiile care trebuie satisfcute n vederea selectrii sunt
definite astfel:
FNV - Entitatea Facilitate trebuie s fie indisponibil.
FV
Entitatea Facilitate trebuie s fie disponibil n vederea selectrii.
I
- Entitatea Facilitate trebuie s fie forat.
NI
- Entitatea Facilitate trebuie s nu fie forat.
LS
- Entitatea comutator logic trebuie s fie setat(on).
LR
- Entitatea comutator logic trebuie s fie resetat(off).
NU
- Entitatea Facilitate trebuie s nu fie folosit
U
- Entitatea Facilitate trebuie s fie folosit
SE
- Entitatea Storage trebuie s fie vid (toate elementele de servire sunt libere).
SF
- Entitatea Storage trebuie s fie plin (toate elementele de servire sunt ocupate).
SNE - Entitatea Storage trebuie s nu fie vid.
SNF - Entitatea Storage trebuie s nu fie plin.
SNV - Entitatea Storage trebuie s nu fie disponibil.
SV
- Entitatea Storage trebuie s fie disponibil.
120

Exemplu.
SELECT NU

1,2,5,0,,,ASTEAPTA

Va realiza o verificare facilitilor (operandul NU) cu numerele cuprinse ntre 2 i


5, n vederea selectrii primeia dintre ele care nu este utilizat. Dac o astfel de
facilitate este gsit, numrul ei este atribuit parametrului 1 al tranzaciei; n caz
contrar, tranzacia va fi transferat la blocul cu eticheta ASTEAPTA.
Exemplu.
Simularea unui sistem de ateptare cu dou staii de servire cu coad proprie
la fiecare staie. Cnd un client (tranzacie) intr n sistem, se va lega la staia a
crei coad are lungimea minim (blocul SELECT). Numrul facilitii (staiei de
servire) selectate va fi memorat n parametrul 5 al tranzaciilor. Programul GPSS
de simulare este prezentat n continuare.
SIMULATE
GENERATE (EXPONENTIAL(1,0,1))
SELECT MIN 5,1,2,,Q
QUEUE P5
SEIZE P5
DEPART P5
ADVANCE (EXPONENTIAL(1,0,0.5))
RELEASE P5
TERMINATE 1
Din raportul standard obinut n urma execuiei programului, extragem urmtoarele
rezultate:
FACILITY ENTRIES UTIL.AVE.TIME AVAIL. OWNER PEND INTER RETRY DELAY
1
854
0.470
0.535 1
0
0
0
0
0
2
146
0.066
0.440 1
0
0
0
0
0
QUEUE
1
2

MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME


2
0
854
553
0.168
0.191
1
0
146
116
0.012
0.081

AVE.(-0) RETRY
0.541
0
0.393
0

Modurile incremental / decremental


Exemplu. Simularea unui sistem de ateptare cu dou categorii de staii de
servire cu coad proprie la fiecare staie. Presupunem c avem 6 staii de servire
(faciliti), mprite n dou clase: prima va conine staiile cu numerele 1,2,3,
iar a doua staiile cu numerele 4,5,6. Determinarea categoriei de staie la care se
va lega un client, se face pe baza valorilor generate ale unei variabile aleatoare
Bernoulli (CATST).
SIMULATE
CATST FUNCTION RN4,D2;gen.al.tip.STATIE
0.4,1/1,2
;categ. 1-prob. 0.4, categ. 2-prob. 0.6
INITIAL X$NRSTCAT1,3
INITIAL X$NRTOTALST,6
GENERATE (EXPONENTIAL(1,0,1))
SAVEVALUE PRIMASTCAT2,(X$NRSTCAT1+1)
TEST E FN$CATST,1,CAT2;se test.cat.de st.gen.
SELECT MIN 5,1,(X$NRSTCAT1+1),,Q;prima categ.

121

CAT2

IESIRE

QUEUE P5
SEIZE P5
DEPART P5
ADVANCE (EXPONENTIAL(1,0,0.5))
RELEASE P5
TRANSFER ,IESIRE
SELECT MIN 5,X$PRIMASTCAT2,X$NRTOTALST,,Q
;a doua categ.
QUEUE P5
SEIZE P5
DEPART P5
ADVANCE (EXPONENTIAL(1,0,0.5))
RELEASE P5
TERMINATE 1

Din raportul standard obinut n urma execuiei programului, extragem urmtoarele


informaii:
FACILITY ENTRIES
1
3884
2
107
3
2
4
5637
5
367
6
3
QUEUE MAX CONT.
1
1
0
2
1
0
3
1
0
4
1
0
5
1
0
6
1
0

UTIL. AVE.TIME
0.191 0.498
0.006 0.564
0.000 0.099
0.284 0.511
0.018 0.492
0.000 1.119
ENTRY ENTRY(0)
3884
3260
107
94
2
2
5637
4307
367
322
3
3

AVAIL. OWNER PEND INTER RETRY DELAY


1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
AVE.CONT. AVE.TIME
AVE.(-0) RETRY
0.030
0.079
0.492
0
0.001
0.097
0.800
0
0.000
0.000
0.000
0
0.067
0.121
0.511
0
0.002
0.064
0.519
0
0.000
0.000
0.000
0

S ne reamintim...
Prin intermediul blocului SELECT, GPSS permite tranzaciilor s aleag dintre mai
multe alternative. De exemplu, dintr-o mulime de entiti care ofer servicii,
identificate numeric, se poate alege una dintre ele, care satisface anumite cerine
formulate i numrul entitii este atribuit unui parametru al tranzaciei.
Blocul SELECT lucreaz n trei moduri: condiional sau relaional, minimummaximum i logic.
Specificai efectul urmtoarelor blocuri
SELECT E
1,1,5,0,F
SELECT LE
2,1,5,2,Q
SELECT NU
3,1,6,0,,,ASTEAPTA

122

M3.U3.9. Test de evaluare a cunotinelor


Marcai varianta corect.
1.n cazul unei secvene
TRANSFER 0,25,A,B
C
ENTER ST

A
SEIZE ST1
ADVANCE 25,12

B
SEIZE ST2
ADVANCE 25,12
Transferul se va face:
a) Cu probabiliti egale la blocurile
etichetate de A i B

c) Cu probabilitatea 0,75 la blocul


etichetat de A i cu probabilitatea
0,25 la blocul etichetat de B;

b) Cu probabiliti egale la blocurile


etichetate de A i C

d) Cu probabilitatea 0,75 la blocul


etichetat de A i cu probabilitatea
0,25 la blocul etichetat de C;
2. Pentru a trece de blocul TEST LE Q$WAIT,2 lungimea cozii trebuie s fie:
a) Egal cu 2.
c) Mai mic sau egal cu 2.
b) Mai mare dect 2
d) Mai mare sau egal dect 2
3. Care dintre urmtoarele blocuri are funcia asemntoare blocului PREEMPT.
a) LEAVE
c) SEIZE
b) ENTER

d) ADVANCE

4. Care dintre urmatoarele blocuri are funcia asemanatoare blocului RETURN.


a) LEAVE
c) RELEASE;
b) TERMINATE

d) ADVANCE

5.Care tip de entitate GPSS poate fi forat


a) Storage
c) Staie de servire
b) Comutator
6.Comutatorul logic:
a)
Modific
tranzaciei.

d) Facilitate

parametrii

c) Modific logica programului.

b)
Comutatoarele
logice
d)
Comutatoarele
logice
marcheaz prin starea lor,
marcheaz prin starea lor,
ndeplinirea sau nedeplinirea
ndeplinirea sau nedeplinirea unor
unor
condiii
impuse
de
condiii impuse de tranzacii.
utilizator.
7. Starea iniial a comutatorului logic este:
a) Setat
c) Resetat
b) True

d) False

123

8. Starea unui comutator logic:


a) Poate fi inversat.

c) Nu poate fi inversat.

b) Poate fi negat.
d) Nu poate fi negat .
9. Dac un blocul GATE este utilizat pentru a controla accesul la entiti facilitate sau
storage, pentru a se testa dac facilitatea nu este disponibil, testul fcut este definit
astfel:
a) FNV
c) FVN
b) FVI
d) FVL
10. n cadrul modului condiional, cnd tranzacia intr n blocul SELECT, se
realizeaz un proces de cutare n domeniul specificat de:
a) operanzii A i C, de unde se
c) operanzii A i B, de unde se
determin o valoare numeric
determin o valoare numeric
obinut testnd o relaie
obinut testnd o relaie specificat
specificat n operandul O.
n operandul O Nu poate fi
inversat.
b) operanzii B i C, de unde se
determin o valoare numeric
obinut testnd o relaie
specificat n operandul O

d) operanzii B i C, de unde se
determin o valoare numeric
obinut testnd o relaie specificat
n operandul A.

M3.U3.10. Rezumat
Cu ajutorul blocului TRANSFER se ramific micarea tranzaciilor, adic se cere ca
tranzaciile s fie direcionate ctre un alt bloc dect cel care urmeaz n seven. Sunt
prezentate modurile de efectuare a transferului tranzaciei.
Blocul TEST compar valorile a dou atribute numerice standard i, n funcie de
rezultatul comparaiei ntreprinde o anumit aciune.
n multe aplicaii, anumite tranzacii trebuie s primeasc un tratament preferenial cnd
concureaz cu alte tranzacii n utilizarea unei faciliti. Blocul PRIORITY modific
prioritatea tranzaciilor. Blocul RETURN specific numele facilitii redate.
Iniializarea comutatoarelor logice se face cu blocul INITIAL. Blocul LOGIC modific
valorile comutatoarelor logice n timpul execuiei programului. Blocul GATE poate fi
utilizat n conexiune cu comutatoarele logice. Blocul GATE poate fi utilizat pentru a
controla accesul la entiti facilitate sau storage.
Prin intermediul blocului SELECT, GPSS permite tranzaciilor s aleag dintre mai
multe alternative. De exemplu, dintr-o mulime de entiti care ofer servicii,
identificate numeric, se poate alege una dintre ele, care satisface anumite cerine
formulate i numrul entitii este atribuit unui parametru al tranzaciei.

124

Modulul 4. Construcia modelelor de simulare


Cuprins
Introducere .........................................................................................................................125
Obiectivele modului............................................................................................................125
U1. Modele formale de simulare. ........................................................................................126
U2. Simulatoare abstracte pentru modele DEVS .................................................................146

Introducere.
Teoria matematic a sistemelor constituie cadrul de reprezentare i studiu al
sistemelor dinamice, adic sisteme care evolueaz n timp. Sarcina simulrii este
de a determina comportarea dinamic a sistemelor, folosind o abordare orientat
ctre modele.
Construcia unui model matemetic de simulare reprezint una dintre etapele
fundamentale ale studiului unui sistem cu ajutorul calculatorului electronic. Acest
modul prezint una dintre aceste modaliti, care are marele avantaj c, pe baza
modelului matematic construit, se poate realiza un simulator abstract, adic o
descriere algoritmic a sistemului modelat.
De asemenea, prin introducerea conceptului de cuplare a modelelor i demonstaia
faptului c modelul obinut prin cuplare aparine aceleiai clase de modele, aceast
teorie ofer o posibilitate de construie ierarhic a modelelor i simulatoarelor
asociate lui.
Prin definirea clar a conceptelor de interfa a modelului, a modului de
comunicare dintre simulatoarele abstracte asociate i posibilitatea costruciei
ierarhice a modelelor i simulatoarelor, aceast teorie ofer posibilitatea orientrii
spre obiecte a simulrii sistemelor.
Competene
La sfritul acestui modul studenii vor fi capabili:
 s identifice modalitatea de reprezentare formal a sistemelor;
 s explice conceptul de simulator abstract;
 s explice mecanismul abstract al simulrii;
 s explice un model formal pentru o clas de sisteme de ateptare i simulatorul
abstract asociat.


125

Unitatea de nvare M4.U1. Modele formale de simulare


Cuprins
M4.U1.1. Introducere..........................................................................................................126
M4.U1.2. Obiectivele unitii de nvare............................................................................126
M4.U1.3. Formalismul DEVS ............................................................................................127
M4.U1.4. Construcia modular a modelelor cu structur fix.............................................128
M4.U1.5. Conceptul de cadru experimental ........................................................................130
M4.U1.6. Construcia modular a reelelor cu structur variabil ........................................131
M4.U1.7. Studii de caz .....................................................................................................134
M4.U1.8. Test de evaluare a cunotinelor ..........................................................................144
M4.U1.9. Rezumat .............................................................................................................145
Introducere
Conceptul de model DEVS (Discrete Events System) descrie matematic modelul
de simulare, specificnd modul cum sistemul trece dintr-o stare n alta, ct i
evoluia lui temporal.
Modelul cu mai multe componente sau modelul reea cu structur fix permite
cuplarea modelelor DEVS i construcia modular i ierarhizat a modelelor.
nchiderea la cuplare a modelelor DEVS, probeaz corectitudinea construciei
ierarhice a modelelor de simulare.
Conceptul de cadru experimental constituie mediul adecvat pentru proiectarea
experimentelor de simulare. Prin componentele sale, el genereaz intrrile n
sistemi colecteaz valorile unor variabile n funcie de care se determin factorii
de eficien ai sistemului, adic acele mrimi care descriu comportarea acestuia.
n modulul 2 am prezentat simularea sistemelor de ateptare cu numr variabil de
staii i am prezentat cteva sisteme din lumea real care se ncadreaz n aceast
clas. n mod firesc, se impune o abordare formal a acestei clase de sisteme
Suportul modelrii sistemelor cu structur variabil l constituie formalismul
DSDEVS. n contextul acestei teorii modelele sunt de dou tipuri: modele de baz
si modele n reea. Un model de baza DSDEVS coincide cu un model de baz
DEVS. Modelul n reea este o combinaie de modele de baz DSDEVS.

Competene
La sfritul acestei uniti de nvare studenii vor fi capabili:
 s neleag un model DEVS.
 s neleag conceptul de reea de modele DEVS cu structur fix;
 s neleag conceptul de reea de modele DEVS cu structur variabil;
 s neleag cum se construiete o reea de modele de simulare.

Durata medie de parcurgere a primei uniti de nvare este de 3 ore.

126

M4.U1.3. Formalismul DEVS


Formalismul DEVS (Discrete Events System) a fost introdus cu scopul de a modela sistemele
cu evenimente discrete i pe baza acestor modele s se poat construi simulatoare pentru
sistemele respective.
Definiia 4.1.1 O specificare a sistemelor cu evenimente dicrete (DEVS) este o structur
M = (X, S, Y , int, ta, ext, )
(4.1.1)
X este mulimea evenimentelor externe;
Y este mulimea valorilor de ieire;
S este mulimea strilor;
int:SS este funcia de tranziie intern care specific secvena de stri prin care trece
sistemul, n absena unui eveniment extern;
ta:SR+{0,}, este funcia de avans a timpului; ta(s) va reprezenta intervalul de timp
dup care sistemul trece din starea s n starea urmtoare int(s).
ext:QxIQ; Q se numete mulimea strilor totale, fiind definit astfel:
Q ={(s,e)/ sS , eR, 0eta(s)}, e este intervalul de timp dintre ultima tranziie intern i
apariia unui eveniment extern; ext(s,e,x) specific starea n care va trece sistemul dac se afl
n starea s i dup un interval de timp e de la ultima tranziie apare un eveniment extern x;
:SY este funcia de ieire, (s) va fi informaia transmis atunci cnd sistemul
efectueaz o tranziie intern.
Observaia 4.1.1
(i) O stare sS pentru care ta(s)= se numete pasiv. Sistemul va sta n aceast stare pentru
un interval de timp nedefinit, pn cnd va apare un eveniment extern, care va schimba starea
sistemului, eveniment care l activeaz. O stare care nu este pasiv se numete activ.
(ii) O stare sS pentru care ta(s)=0 se numete tranzitorie; strile tranzitorii apar atunci
cnd se efectueaz anumite calcule n interiorul modelului care nu necesit un interval de
timp.
=ta(s) e
(ii) Dac e reprezint intervalul de timp trecut de la ultima tranziie, atunci
reprezint timpul rmas pn la urmtoarea tranziie. ntr-un sistem DEVS n form explicit,
o stare a sistemului este de forma (s, ), iar ta(s,)=.
(iii) n cele ce urmeaz vom folosi pentru structura (4.1.1) denumirea de model DEVS sau pur
i simplu model, concept ce va fi scos n eviden mai pe larg atunci cnd vom introduce
noiunea de simulator. De asemenea, structura (1.10) o vom denumi pe scurt sistem.
Definiia 4.1.2 Introducem noiunea de eveniment vid (neeveniment) pe care l vom nota cu
; de asemenea, fie X=X{} i Y=Y{}.
Observaia 4.1.2 Din construcia anterioar, rezut c comportarea dinamic a sistemului nu
este n mod unic definit dac e=0 sau e=ta(s) . Este necesar s se defineasc o regul
(funcie) de selecie a unuia dintre evenimentele simultane, intern sau extern. Acest fapt va fi
scos n eviden cnd vom introduce modelele cuplate.
Exemplu.
Modelul pasiv. n concordan cu definiia (4.1.1):
X=R; Y=R; S={pasiv}; ext(pasiv,e,x)= pasiv; int(pasiv)= pasiv;
(pasiv)= ; ta(pasiv)=
Exemplu.
Modelul cu acumulare. Spre deosebire de modelul pasiv modelul cu acumulare
rspunde la intrri i le socheaz definitiv. n concordan cu definiia (4.1.1):
X=R; Y=R; S = {" pasiv" , " raspuns"} R0+ R {0}
127

(" pasiv" , e, x ), dacax 0


(raspuns , timp _ raspuns, stocat ), daca x = 0

ext (" pasiv" , , stocat , e, x ) =

ext (" raspuns" , , stocat , e, x ) = (" raspuns" , e, stocat )


int (" raspuns" , , stocat ) = (" pasiv" , , stocat )
(" raspuns" , , stocat ) = stocat ; ta( faza, , stocat ) =

Spre deosebire de modelul pasiv, urmtorul model rspunde la intrri i le


stocheaz pentru totdeauna, sau pn la urmtoarea intrare. De asemenea, exist
un al doilea tip de intrare, prin care se ntreab ce este stocat la momentul
respectiv. Exist trei variabile de stare: faza cu valorile {" pasiv" , " raspuns"} ,
cu valori reale i pozitive i stocat care are valori reale diferite de 0. Este necesar
faza activ raspuns, pentru a specifica cnd un rspuns este cerut. este
timpul ct sistemul rmne n starea curent. Observm c atunci cnd apare un
eveniment , dup timpul trecut de la ultima tranziie intern, notat e, din valoarea
lui se scade valoarea e, pentru a reflecta cel mai mic timp ct sistemul a rmas
n starea curent. Cnd primete o intrare nul (x=0), este setat la
timp_raspuns i faza raspuns este introdus. Cnd intervalul de timp
timp_raspuns a trecut, funcia de ieire produce valoarea stocat i prin aplicarea
funciei de tranziie intern duce la ntoarcerea n faza pasiv.

M4.U1.4. Construcia modular a modelelor cu structur fix


n cele ce urmeaz vom considera modelul de baz ca fiind orice model cu evenimente
discrete exprimat cu ajutorul formalismului DEVS. De asemenea, definim modelul atomic ca
fiind modelul DEVS care nu poate fi descompus n alte modele DEVS.

Definiia 4.2.1 n contextul formalismului DEVS, cuplarea modelelor se realizeaz folosind


conceptul de model cuplat sau model reea cu structur fix, definit prin 5-uplul :
DN = ( D, {M i }iD ,{I i }iD ,{Z i , j }i , jD , select )
(4.1.2)
unde:
D este mulimea identificatorilor sistemelor componente;
pentru fiecare iD:
 Mi este modelul de baz asociat lui i;
 Ii este multimea sistemelor influenate de i;
 pentru fiecare j Ii , Zi.j este funcia de translatare a mesajelor de la modelul i la
modelul j;
select este funcia de selectare prin care, dintre mai multe componente care si schimb
starea la acelai timp eveniment, se alege una dintre ele care efectueaz prima tranziia i
influeneaz starea modelului cuplat.
Modelul cuplat presupune transmiterea de mesaje de la o component model la o alt
component model. Porturile sunt folosite pentru a transmite i a primi mesaje de ctre
fiecare model care face parte din reea. Pentru orice model DEVS, fie NX mulimea porturilor
de intrare i NY mulimea porturilor de ieire. Pentru fiecare n, nNX sau nNY, notm cu Un
mulimea tipurilor de mesaje corespunztoare portului n; atunci mulimea de intrare X este
X={(n,u,v)/nNX, uUn, vdom(u)}, iar mulimea de ieire Y este Y={(n,u,v)/nNY, uUn,
vdom(u)}.Dac notm cu DN identificatorul reelei, atunci funcia de translatare a mesajelor
de la un model i la un model j, poate fi specificat sub forma

Z i , j {((i, ni ), ( j , n j )) / i D {DN }, j I i , ni N iY , j N Yj }
128

Astfel, un model cuplat trebuie s conin urmtoarele informaii:


mulimea componentelor;
pentru fiecare component: influenaii ei; mulimea porturilor de intrare prin care sunt
primite mesajele externe; mulimea porturilor de ieire prin care sunt transmise mesajele ctre
exterior; cuplarea unor componente interne la intrarea modului cuplat; cuplarea unor
componente la ieirea reelei; cuplarea intern a componentelor modelului; regulile de
transmitere a mesajelor ntre componente; modul de selectare dintre componentele iminente
(care sunt primele care i schimb starea la acelai timp eveniment), pe aceea care
influeneaz starea reelei.
n contextul formalismului DEVS definim modelul atomic ca fiind modelul de baz
nedecompozabil, adic nu este obinut prin cuplarea altor modele. nchiderea la cuplare a
modelelor exprim coerena construciei modulare i ierarhizate a modelelor i este dat de
urmtoarea teorem.

Teorema 4.1.1. Orice model cu mai multe componente definit folosind structura (4.1.2), este
un model de baz DEVS.
Demonstratie. Fie M i = (X i ,S i ,Yi , int i , exti , i , ta i ) , i D , mulimea modelelor de baz
cuplate i M DEV N = (X,S,Y, int , ext , , ta ) , unde:

X = X i ; S = Qi , cu Q i = { (si ,e i ) / si Si , e i R+ U{0, }} ; ei reprezint timpul


i D

i D

de cnd modelul Mi se afl n starea si , iD. Fie s = {((s1 , e1 ),..., (s i , e i ),...)/i D} i


i = tai ( si ) ei , i D ;
definim
ta : S R + {0, } ,
prin ta(s) = min { i / i D} .
Fie IMMINENT (s) = {i / i = ta ( s)} adic mulimea componentelor planificate s-i
realizeze tranziia intern dup un timp egal cu ta(s). Fie i*=select(IMMINENT(s)) , adic i*
este componenta selectat care va genera tranziia ntregului sistem i fie

xi* , j = Z i* , j (i* ( s i* )) , mesajul transmis de componenta selectat i*,

componentelor

influenate j, j I i* ;

int:SS este definit prin:


int (s) = s' = ((s1' ,e 1' ),..., (s'j ,e j' ),...) , unde:
( int ( s j ),0), daca j = i *
j

'
'
( s j , e j ) = (s j , e j + ta ( s)), daca j I i*

*
( ext j ( s j , e j + ta ( s), xi , j ),0), daca j I i*
Fie
x o intrare a reelei; atunci

(4.1.3)
(4.1.4)
(4.1.5)

ext ( s, e, x ) = s ' = (..,( s 'j , e 'j ),..),

cu

( s , e ) = ( ext j ( s j , e j + e, x j ),0) si x = (.., x j ,..) , n care xj este proiecia canonic a lui x,


'
j

'
j

relativ la componenta j.

Observaia 4.1.3. i) Relaia (4.1.3) specific faptul c noua stare a componentei selectate i*
este dat de propria ei tranziie intern; relatia (4.1.5) arat c noua stare a componentelor j
influenate de ctre componenta i*, este realizat pe baza tranziiei externe, intrarea fiind
mesajul xi*, j , obinut prin translatarea ieirii componentei selectate i*; relaia (4.1.4) arat
faptul c componentele neinfluenate de i* nu si schimb starea, ele numai i actualizeaz
intervalul de timp de cnd se afl n starea respectiv.
ii)Teoremele 4.1.1, precum i conceptele de model de baz si model cuplat, ne permit s
definim construcia ierarhic a modelelor. Un model ierarhic este definit inductiv astfel:
129

un model de baz atomic este un model ierarhic;


un model reea cu structur fix ale crui componente sunt modele ierarhice, este un model
ierarhic.

M4.U1.5. Conceptul de cadru experimental


Atunci cnd ne propunem s construim un model de simulare, avem n vedere anumite
obiective, adic formulm anumite probleme sau ne punem anumite ntrebri, relativ la
sistemul considerat. Pe baza acestora, se stabilesc variabilele modelului. Variabilele de
intrare formalizeaz acea parte a sistemului care nu este sub controlul su. Ele sunt sub
controlul celui care construiete modelul de simulare sau al mediului exterior al modelului,
constituind interfaa la intrare a modelului. De asemenea orice model i propune s determine
anumii factori de eficien ai sistemului, cum ar fi:
indici de performan, care exprim ct de bine este executat o anumit sarcin;
msuri ale utilizrii resurselor, care exprim ct de bine o anumit resurs este folosit;
indici de comparare, pentru a compara comportarea unui model cu sistemul pe care ncearc
s-l descrie sau cu alt model.
Toi aceti factori sunt determinai pe baza unor variabile numite variabile de mediere.
Variabilele de ieire sunt variabile ale cror valori sunt determinate de ctre model.
Variabilele de mediere pot fi variabile de ieire sau variabile de intrare. Algoritmul dup care
sunt determinai factorii de eficien se numete msurtor. Variabilele de control exprim
dinamica evoluiei n timp a modelului.

Cadrul experimental formalizeaz modul n care sunt alese entitile descrise mai sus,
alegere care este un procedeu euristic i care se bazeaz pe experiena i modul de gndire al
celui care construiete modelul.
Orice model de simulare este construit cu scopul de a rspunde la anumite ntrebri despre un
anumit sistem. Deci putem modifica datele de intrare precum i pe cele de ieire n funcie de
aceste chestiuni, dar dinamica sistemului rmne n general aceeai. Deci, este natural s
considerm c oricare structur ce exprim dinamica sistemului s o plasm n interiorul
modelului, iar datele care exprim factori de eficien sau datele ce exprim condiii iniiale
sau de terminare s fie plasate n afara modelului. Aceste observaii exprim diferena dintre
cadrul experimental i model.
Un cadru experimental este un model reea care, atunci cnd este cuplat la un model
genereaz intrri ale modelului, urmrete evoluia lui n timp i i prelucreaz ieirile (figura
4.1.1). Astfel, acelai model poate fi cuplat la diferite cadre experimentale, n funcie de
condiiile n care dorim s-l observm. Invers, acelai cadru experimental poate fi aplicat la
diferite modele.
M/EF
M

EF
Msurtor

Acceptor
Generator

130

Figura 4.1.1 Structura reelei formate din model i cadru experimental


Generatorul este un model DEVS autonom, deci care execut numai tranziii interne, de
forma G=(S,Y,int,ta,) , n care mulimea strilor este format din dou elemente active i
passive. Modelul st n starea passive pentru un timp egal cu ta(s), dup care trece n starea
active; cnd ajunge n starea active, se genereaz ieirea (s) moment n care trece instantaneu
n starea passive. Ieirile generatorului sunt transmise modelului ca intrri. Aa cum o s
vedem mai trziu, modelul generator este utilizat n studiul sistemelor de ateptare pentru a
implementa mecanismul sosirilor n sistem.
Msurtorul este un model DEVS, T=(X,S,Y,int,ext,ta,,q0) care colecteaz datele necesare
determinrii factorilor de eficien ai modelului. El pornete dintr-o stare iniial,
corespunztoare strii iniiale a modelului i i modific starea atunci cnd primete ieiri ale
modelului, deci efectueaz tranziii externe.
Acceptorul este un model DEVS care are mulimea strilor mparit n dou submulimi,
mulimea strilor acceptate i mulimea strilor neacceptate. n plus, acceptorul consider ca
acceptat o stare corespunztoare strii iniiale modelului la care se aplic cadrul
experimental. Orice segment de intrare generat de ctre generator pentru a fi transmis
modelului, este mai nti transmis acceptorului; dac n urma aplicrii lui acceptorul atinge o
stare acceptat, atunci segmentul este bun i este transmis mai departe modelului. De
exemplu, n cazul unui sistem de ateptare, punem condiia ca intervalul ntre sosiri s nu
depeasc o anumit lungime. Acceptorul va avea dou stri, una corespunztoare
segmentelor care nu depesc aceast margine (acceptat) i una care corespunde segmentelor
care depesc aceast margine (neacceptat). Deci, putem scrie acceptorul ca un model DEVS
A=(X,S,Y,int ,ext,ta,,q0,F) , n care F este mulimea strilor acceptate i q0 este starea
iniial, q0F. Funcia int este funcia identitate, ea se aplic numai pentru a se genera ieiri,
care indic dac segmentul respectiv a fost acceptat sau nu
S ne reamintim...
Formalismul DEVS (Discrete Events System) a fost introdus cu scopul de a modela
sistemele cu evenimente discrete i pe baza acestor modele s se poat construi
simulatoare pentru sistemele respective.
n contextul formalismului DEVS, cuplarea modelelor se realizeaz folosind
conceptul de model cuplat sau model reea cu structur fix

I.ntrebri.
1. Care este diferena dintre tranziia intern i cea extern a unui model DEVS.
2. Care este condiia de activare a unui model.
3. n cazul unui model cuplat cu structur fix, cum se stabilete care submodel va genera tranziia intern.
4. Care dintre componentele cadrului experimental asociat unui model
genereaz intrrile.
5. Care dintre componentele cadrului experimental asociat unui model preia
ieirile modelului pentru a determina factorii de eficien ai acestuia.
M4.U1.6. Construcia modular a reelelor cu structur variabil
Suportul modelrii sistemelor cu structur variabil l constituie formalismul DSDEVS. n
contextul acestei teorii modelele sunt de dou tipuri: modele de baz si modele n reea. Un
model de baza DSDEVS coincide cu un model de baz DEVS, adic un model definit
131

conform (4.1.1). Modelul n reea este o combinaie de modele de baz DSDEVS. Modelul
reea DSDEVS cu structur dinamic este definit prin :
DSDEVN=(, M)
(4.1.6)
unde: este identificatorul reelei DSDEVS; este numele directorului reelei DSDEVS;
M este modelul lui ; M este un model de baz DSDEVS definit prin structura :
M = ( X , S , Y , int , ext , , ta )
(4.1.7)
Informaia despre structura dinamic a reelei este localizat n starea directorului. Tranziiile
directorului reprezint schimbri n structura dinamic a reelei. O stare sS a directorului
este definit prin:
(4.1.8)
s = ( X , Y , D ,{ M i },{I i },{Z i, j }, select , )
unde:

este mulimea evenimentelor intrri n reeaua DSDEVS ; Y este mulimea

evenimentelor ieiri n reeaua DSDEVS; D este mulimea

componentelor; I i este

mulimea componentelor influenate de i, i D ; Zi, j este funcia de translatare a mesajelor de


la componenta i la componenta j, j I i ; select este functia de selectare, definit ca n
(4.1.2); alte variabile, nedefinite dinainte.

Observaia 4.1.4. Variabilele de stare satisfac urmtoarele restricii:


(i)
D ;
(ii)

M i = ( X i , S i , Yi , int i , exti , i , ta i ) este un model de baz DSDEVS,

pentru orice i, i D ;

(i)

select: 2 D

(ii)

Z , j : X X j ; Z i, :Yi Y ;

{ }

{} D { } ,select(A)A;

Z k , ( y ) Z k , j ( y ) = , k D { } {}, j I k { }
(iii)
evenimentul vid (absenta evenimentului).
( X , Y , D ,{ M i },{ I i },{Z i, j }, select ) se numete structura reelei. Orice
7-uplul
schimbare n una din aceste variabile este numit schimbare n structur, adic adaugri sau
eliminri de componente, modificri de legturi ale componentelor. Urmtoarea teorem
demonstreaz nchiderea la cuplare a modelelor n reea cu structur variabil. Acest rezultat
ne garanteaz c prin construcia ierarhic a modelelor n reea cu structur variabil se
obine tot un model de baz.
Teorema 4.1.2 Reeaua DSDEVN=(,M) este echivalent cu un model de baz
M=(X,S,Y,int, ext,,ta).
Demostraie. n cele ce urmeaz vom arta cum se definete M, modelul de baz DSDEVS
care corespunde reelei DSDEVS. X = X , unde X este mulimea evenimentelor intrri ale
reelei DSDEVS, definit n starea lui ;

iD{}; Y = Y ;
ta(s)=min{i/iD{},sS,i=tai(si)-ei};
S=Qi,
( s ) = Z i * , ( i * ( s i * )), s I i* , s S , cu i * = select ({i / i D { }, i = ta ( s )})
Pentru a descrie funciile int, ext vom mpri componentele reelei n trei mulimi; prima
{}, este format chiar din director, a doua mulime R={r1,,rn} conine componentele ce
vor fi scoase din sistem de ctre director dup o tranziie intern sau extern; a treia mulime,
de forma {, i ,} este format din componentele rmase. Starea sS este definit prin:
s = (( s , e ),..., ( si , e i ),.., ( sr1 , e r1 ),.., ( srn , e rn ))

132

unde s este definit conform (4.1.8). Starea s se va modifica odat cu adugarea/scoaterea de


componente sau modificarea legturilor. Conform restriciilor din observaia 4.1.4, dac
primete un eveniment extern, nici un alt model nu va fi influenat din exteriorul reelei;
astfel, dac presupunem c nu este influenat de , adic nu apar modificri n structura
reelei i dac e este intervalul de timp dup care va apare un eveniment extern, atunci :
ext ( x, s, e) = (( s , e' ),..., ( si' , ei') ),...)
(4.1.9)
pentru oricare i I , unde s'i = exti ( Z ,i ( x ), si , ei + e), cu Z ,i ( x) .
Dac este influenat de , adic I , adic apare o schimbare n structura reelei, atunci:

ext ( x, s, e) = ( s' ,0),...,( si , ei + e),...,( s 0 a ,0 ),..,( s 0 a ,0))


1

(4.1.10)

unde: s ' = ext ( Z , ( ), ( X , Y , D ,{ M i },{I i },{Z i, j }, select , ) , e + e ) =


= ( X , Y , D ,{ M i },{ I i },{Z i, j }, select , ) cu: Z , ( x ) , A = {a1 ,.., a k } = D D
'

'

'

'

'

'

'

'

componentele adugate; R = {r1,..., rl } = D D componentele scoase. Variabilele X i


Y sunt acum noile mulimi ale evenimentelor de intrare, respectiv de ieire;
'

'

'

{ M i },{I i },{Z i, j }, select sunt definite peste D n loc de D ; {Z i, j } reprezint acum noile
'

'

'

'

'

legturi ntre modele.


int ( s ) = e*x t ( i * , y * , in* t ( i * , s ))
(4.1.11)
*
*
unde i este componenta selectat , y = i ( si ) este ieirea ce corespunde lui i*.
*

Funcia int* : D* S S , D* = D U{} se utilizeaz pentru a calcula efectul tranziiei interne a


componentei i*; aceast funcie este exprimat prin :
(4.1.12)
int* ( i * , s) = (( s , e + ta( s)),..,(int * ( si* ),0),..)
i

dac i = i , i , R= sau prin:


int* ( i* , s ) = (( s ,0 ),..,( si , ei + ta ( s )),..,( sa01 ,0 ),..,( sa0k ,0 ) )
*

(4.1.13)

'
dac = i* , unde: s = int t ( ( X , Y , D ,{ M i },{I i },{Zi, j }, select , )) =

= ( X , Y , D ,{ M i },{I i },{Z i, j }, select , ) , cu:


'

'

'

'

'

A = {a1 ,.., a k } = D D
'

'

'

componentele adugate i

R = {r1 ,.., rk } = D D

'

componentele scoase.
*
Funcia, ext
: D* Y * S S , Y * =

UY

este folosit pentru a calcula efectul ieirii

iD*

componentei selectate i*. Aceast funcie este exprimat prin:


*
ext
( i * , y * , s) = (( s , e + ta( s),.., ( si ,0),... )

(4.1.14)

unde: si = ext i ( Z i* , i ( y ), s i , e i + ta( s)) , cu Z i* , i ( y ) , R = , sau prin:


*

*
ext
( i * , y * , s ) = (( s ' ,0 ),..,( si , ei + ta ( s )),..,( sa ,0 ),..,( sa ,0 ))
1

(4.1.15)

dac I i* , unde: s ' = ext ( x, ( X , Y , D ,{ M i },{I i },{Z i, j }, select , ) , e + e ) =

( X , Y , D ,{ M i },{I i },{Z i, j }, select , ) , cu :


'

'

'

'

'

'

'

x = Z i* , ( y * ) ,

, A = {a1 ,.., a k } = D D componentele adugate ,


'

133

R = {r1 ,.., rk } = D D componentele scoase .


'

Observaia 4.1.5. Structura reelei se poate schimba atunci cnd directorul execut o tranziie
intern sau extern. Astfel, toat informaia de structur este pstrat n starea directorului
reelei, orice astfel de schimbare va fi nsoit de tranziii ale directorului.
S ne reamintim...
Suportul modelrii sistemelor cu structur variabil l constituie formalismul
DSDEVS. n contextul acestei teorii modelele sunt de dou tipuri: modele de
baz si modele n reea. Un model de baza DSDEVS coincide cu un model de
baz DEVS. Modelul n reea este o combinaie de modele de baz DSDEVS.
Structura reelei este coninut n directorul reelei.
ntrebri .
1. Care este este deosebirea ntre modelul cu structur fix i cel cu
structur variabil.
2. Tranziia crui model poate provoca schimbarea structurii reelei.
3. Care funcie calculeaz efectul tranziiei interne asupra unei
componente.
M4.U1.7. Studii de caz.
I. Modelare unui sistem de ateptare cu o singur staie de servire cu disciplina head-ofline
n figura 4.1.7, este prezentat structura static a modelului.

QS/EF
EF
QP

out
in

in
job out G

in
T

out out

rez

Figura 4.1.2. Structura modelului cuplat QS/EF


Descrierea modelelor DEVS asociate componentelor sistemului
(i) Modelul DEVS coad-procesor
Mulimea intrrilor n model este

X QP = {(i , gtime , ) / i = 1,.., m; gtime , R + }}


O intrare (i,gtime,) nseamn sosirea unui client din clasa i la momentul gtime, care necesit
un timp pentru a fi servit, m fiind numrul de clase de priritate.
O stare sQP este o list de forma: s QP = ( qtime , q1 ,.., q m )
qtime reprezint timpul eveniment al ultimei modificri a strii modelului; iniial qtime =0.
qi = , dac n coada de ateptare nu sunt clieni din clasa de prioriti i sau o list de
forma:

q i = (( 1i , 1i ),.., ( ni i , ni i )
adic n coad sunt ni clieni, ni 1, ij , respectiv ij fiind timpul de ateptare n coad de la
intrarea n sistem pn n momentul curent, respectiv timpul de servire al celui de-al j-lea
client din clasa i, i = 1,...,m; j = 1,...,ni.
134

Fie k dat de relaia


0 , daca q j = ,(j), j = 1,..m
(4.1.15.a)
k =
min {j/q j ,j = 1,..m}
Observaia 4.1.5. Dac k=0 atunci n coad nu exist clieni, altfel k reprezint indicele
clasei de unde se va selecta clientul care urmeaz a fi servit. Dac la momentul t nu exist
clieni n coad (k=0) i nici un client nu este servit, atunci modelul se afl ntr-o stare pasiv
i el va fi activat de o eventual sosire. Aceasta reprezint i starea iniial a modelului.

, daca k = 0
Funcia de avans a timpului se exprim prin taQp ( sQP ) = k
1 , daca k 0
Fie s QP = intQP (sQP ) = (qtime,q 1,..,q n ) , starea obinut n urma tranziiei interne a
'

'

'

'

modelului. Vom avea: qtime =qtime+ taQP(sQP)


Cozile q 'j , j=1,..,m sunt date de urmtoarea relaie

((1j +1k ,1j ),,..,(njj +1k ,njj ), daca j k, qj


(4.1.16)

((2j +1k ,2j ),..,(njj +1k ,njj ), daca j = k si nj >1


(4.1.17)
'
qj =
(4.1.18)
, daca j = k si nj =1

(4.1.19)
, daca qj =
Observaia 4.1.6 (4.1.16) afirm c n cozile nevide din care nu se selecteaz clientul, se
actualizeaz componenta timp de ateptare n coad a clienilor, care se incrementeaz cu
valoarea funciei de avans a timpului; (4.1.17) afirm c se extrage din coada de indice
minim primul client n vederea servirii i se actualizeaz timpul de ateptare al clienilor
rmai n coad, ca i n cazul anterior; (4.1.18) ne spune c dac sub-coada de indice k a
clienilor are un singur element atunci ea devine vid dup selectarea clientului care urmeaz
a fi servit; (4.1.19) specific faptul c sub-cozile vide rmn vide n continuare.
Tranziia extern a modelului se obine atunci cnd se primete o intrare de forma
(i,gtime,) . Fie s'QP = extQP (sQP , (i, gtime, ), e) = (qtime' ,q'1 ,..,q' n )
Atunci: qtime=gtime

i cozile q 'j , j=1,..,m sunt date de urmtoarea relaie :

((1j ,1j )..,( njj ,njj )), daca j k, q j

(( j , j ),..,( nj ,njj ),(0, )), daca j = i si q j


q'j = 1 1
, daca j i si q j =

(0, ), daca qi =
Intervalul de timp e, trecut de la ultima tranziie, este dat de:
gtime qtime + ta PQ ( s PQ ), daca qtime gtime
e=
gtime qtime, daca qtime < gtime

Observaia 4.1.7 Condiia qtimegtime este echivalent cu taQP(sQP)<, adic exist clieni
n sistem, iar condiia complementar exprim faptul c modelul este pasiv i urmtorul
eveniment nu poate fi dect sosirea unui client dup un interval de timp egal cu gtime-qtime,
de la ultima tranziie.

135

Ieirea modelului este 4-uplul ( k , 1k , qtime, 1k ) care se transmite modelului EF, ce are
semnificaia c a fost servit un client din clasa k, dup ce a ateptat n coad un timp

1k ,

timpul de servire a fost 1 .


(ii)
Modelul
cuplat
EF(cadru
experimental)
este,
de
forma
DN EF = ( D EF ,{M i }iDEF , {I i }iD EF , {Z i , j }i , jDEF , select EF )
n
care
DEF
={G,T,EF},
k

Mi={Xi,Si,Yi, int i , exti , i , ta i ) },i DEF, IG={EF}, IT={EF}, IEF={T},ZG,EF=(i,gtime,), ZEF,T


=(k,qtime,,),ZT,EF=(MTw,MTs, Clen); selectEF nu are nici un efect deoarece numai
generatorul efectueaz tranziii interne.
n continuare vom descrie modelele DEVS asociate celor trei componente. n studiul
modelului reea EF, vom folosi teorema 4.1.2 de nchidere la cuplare a modelelor DEVS.
(ii.1) Modelul generator de job-uri (clieni n sistem). Este un model autonom, adic
mulimea intrrilor este vid. Generatorul se poate afla ntr-o stare de forma sG =(i,gtime,),
unde: i reprezint clasa de prioriti a job-ului generat, gtime este valoarea ceasului
generatorului, adic momentul cnd va avea loc urmtoarea sosire iar este valoarea
intervalului de timp de servire a clientului sosit. Ieirea modelului este de forma (i,gtime,),
care este transmis modelului QP. Fie AT variabila aleatoare ce are ca valori intervalul de
timp ntre dou sosiri consecutive, T variabila aleatoare cu valori n mulimea {1,...,m} ce
indic clasa de prioriti a unei noi sosiri i ST variabila aleatoare care are ca valori mrimea
timpului de serviciu. Evident c parametrii de generare ai acestor variabile aleatoare sunt
parametri ai modelului. Modelul fiind autonom, va avea loc un singur tip de tranziie, cea
,

intern. Dac sG =(i,gtime,) si s G =G (sG ) atunci


s' G =(i ',gtime,) , unde i' =T, gtime' := gtime +AT, i =ST; iniial gtime=0.
(ii.2) Modelul msurtor. Multimea intrarilor
este XT ={(i,,,qtime)/i=1,..,m;,
,qtimeR+ {0} } 4-uplul de forma (i,,,qtime) este primit de la modelul QP, fiind ieire a
acestui model. Semnificaia celor trei mrimi a fost prezentat cnd am studiat modelul QP. O
stare a msurtorului este de forma sT = (Tt,Tst,Twt,Ns,Nevs), unde: Tt este timpul global al
simulrii; Tst este un vector, Tst(i), i=1,...,m, reprezint timpul total ct procesorul a lucrat
pentru a servi clienii din clasa i ; Twt este un vector, Twt(i), i=1,...,m , reprezint timpul total
ct clienii din clasa i au ateptat n coad; Ns este un vector Ns(i)(i=1,...,m), reprezint
numrul total de clieni servii din clasa i. Cnd primete ca intrare 4-uplul (i,, , qtime),
modelul efectueaz o tranziie extern astfel:
Tt:=qtime; Tst(i):= Tst(i)+ ; Ns(i):= Ns(i)+1; Twt(i):= Twt(i)+ .
Pe baza acestor date se calculeaz factorii de eficien ai sistemului, ale cror formule au fost
prezentate n modulul 2. Functia de avans a timpului este taT (sT )=o .
(ii.3) Modelul DEVS asociat modelului reea EF Intrrile sunt cele ale msurtorului, fiind
primite de la modelul QP. Ieirile sunt cele ale generatorului care ajung n final la modelul
QP. Deorece, pna la finalul simulrii singura component care execut tranziii interne este
generatorul, tranziia intern a modelului cuplat va consta din tranziia acestui model, ocazie
cu care se va transmite ieirea menionat anterior. Msurtorul este singura component care
are intrarea cuplat la exterior, deci n momentul cnd modelul primete un mesaj extern, l va
trimite acestei componente, care i executa propria tranziie extern.
(iii) Modelul DEVS asociat modelului QS obinut prin cuplarea modelelor QP i EF
Este un model cuplat de forma
DN QS = ( DQS ,{M i }iDQS ,{I i }iD QS ,{Z i , j }i , jDQS , select QS )

136

n care DQS ={QP,EF,QS}, Mi={Xi,Si,Yi, int i , exti , i , ta i ) }, i DQS, IQP={QS,EF},


IEF={QS,QP}, IQS={QP,EF}, ZEF,QP=ZQS,QP=(k,gtime,), ZQP,EF =(k,qtime,,), ZEF,QS=(MTw,
MTs, Clen); funcia selectEF o vom descrie cnd vom prezenta tranziia modelului. QS este
un model autonom, deci schimbarea de stare este dat numai de tranziia intern. O stare a
modelului este de forma:
s QS = ((s EF , e EF ), (s QP ,e QP ))
La orice timp eveniment t, urmtorul eveniment n sistem va avea loc dup intervalul de timp
= min{taEF (s EF ) - e EF , ta QP (s QP ) - e QP } . Conform regulii evenimentul urmtor sau a
timpului minim, modificarea strii modelului cuplat QS va fi generat de componenta
pentru care se atinge minimul. Dac = ta EF (s EF ) - e EF = ta QP (s QP ) - e QP , atunci funcia
select a modelului cuplat ne va furniza componenta ce va fi aleas pentru a-i realiza prima
tranziia. n cazul nostru modelul selectat va fi cadrul experimental. Daca = ta EF (s EF ) - e EF ,
atunci componenta iminent este cadrul experimental care-i va executa tranziia intern n
conformitate cu cele afirmate anterior i va genera ieirea de forma (i,gtime,). Aceast ieire
este translatat prin intermediul funciei ZEF,QP, devenind astfel intrare pentru modelul QP,
care
i
va
executa
propria
tranziie
extern.
Vom
avea
deci:
s' QS = int QS ( sQS ) = (( s ' EF , e' EF ), ( s 'QP , e'QP )) ,
unde s' EF = int EF ( s EF ), e' EF = 0, s 'QP = extQP ( sQP , (i, gtime, ), e), e'QP = 0
Dac componenta iminent este modelul QP, acesta i va executa tranziia intern. Chiar
nainte ca acesta s-i efectueze tranzitia intern, se transmite ieirea care translatat devine
intrare pentru modelul EF, care efectueaz tranziia extern. Vom avea deci
s' QS = int QS ( sQS ) = (( s ' EF , e' EF ), ( s 'QP , e'QP )) ,
unde:

s' EF = ext EF ( s EF , (i, gtime, , ), e), e' EF = 0, s' QP = int tQP ( s QP ), e'QP = 0
Iesirea modelului const din factorii de eficien primii de la modelul msurtor la sfrsitul
simulrii.
S ne reamintim...
Modelele componente sunt: modelul atomic QP(coad-procesor), modelul cuplat EF
(cadru experimental), obinut prin cuplarea modelelor atomice G (generator de joburi) i T(msurtor).
Toate aceste componente sunt exprimate ca modele DEVS.
ntrebri.
1. Care dintre modele implementeaz sosirile n sistem.
2. Cum se formalizeaz selectarea unui client pentru a fi servit.
3. Care dintre modele formalizeaz determinarea factorilor de eficien.
II. Model cu numr variabil de staii de servire cu disciplina de servire head-of-line
n figura 4.1.3 este prezentat structura static a modelului. Spre deosebire de modelul head of
line cu o singur staie de servire, modelul QP (coad-procesor) este un model cuplat, obinut
prin cuplarea modelului atomic Q (coad) cu modelul P (procesor), care, de asemenea se
obine prin cuplarea modelelor asociate staiilor de lucru.

(i) Modelul QP(coad-procesor) conform relaiei (1.19) este de forma


DN QP = ( DQP ,{M i }iDQP ,{I i }iD QP , {Z i , j }i , jDQP , select QP )

137

n care:
DQP ={Q,P,QP}, Mi={Xi,Si,Yi, int i , exti , i , ta i ) }, i DQP, IQ={P,QP}, IP={Q,QP}, IQP={Q,P},
ZQP,Q=(k,gtime,), ZQ,P=ZQP,P=(k,qtime,,), ZP,QP=(i,qtime,,),
ZP,Q= (), selectQP va
selecta modelul P atunci cnd la acelai timp eveniment ambele modele i schimb starea
intern. Semnificaia acestor mesaje va fi descris n cele ce urmeaz. n continuare vom
construi modelele DEVS.

Modelul DEVS asociat cozii. Mulimea intrrilor n coad este aceeai ca i n cazul
modelului cu numr fixat de staii paralele.
(i) Modelul atomic DEVS asociat cozii . Mulimea intrrilor n sistem este:
X Q = {(i, gtime, ) / i = 1,.., m; gtime, R+ } ( ) / R+ {0}}

O intrare (i,gtime,) nseamn sosirea unui client din clasa i la momentul gtime, care necesit
un timp pentru a fi servit; o intrare () este primit de la procesor, indicnd intervalul de
timp dup care care procesorul poate pune la dispoziie o staie pentru a servi clienii din
coad.

QS/EF
QP
P
in

EF

in
in

P1

Out in D
P
in

Pn

out

jb out

out

in

out out

G
rez out

in

T
out

Figura 4.1.3 Structura modelului cuplat QS/EF


O stare sQ este o list de forma: sQ = ( qtime , q1 ,.., q m , , tl )
unde qtime , q1,..,qm, au aceeai semnificaie ca i n cazul modelului prezentat anterior,
reprezint intervalul de timp dup care cel puin o staie de servire devine disponibil iar tl
reprezint valoarea unui eventual timp de lenevire al staiilor de servire, pe care l vom detalia
mai trziu.

Tranziia intern a modelului. Fie k dat de relaia (4.1.15.a). Funcia de tranziie intern
este dat de:
, daca k = 0
taQ ( sQ ) =
, altfel
iar observaia 4.1.5. (k=0 ) este valabil i n acest caz.
Fie s Q = intQ (sQ ) = (qtime , q1 ,..,q n , , tl' ) , unde:
'

'

'

'

'

qtime=qtime+ taQP(sQP), =, tl=0


Cozile q 'j , j=1,..,m sunt date de relaiile (4.1.16)-(4.1.19)
138

De asemenea observaia 4.1.6 rmne valabil.

Tranziia extern a modelului se obine atunci cnd se primete unul din cele dou mesaje
de intrare. Dac mesajul este de forma (i,gtime,), fie

s'Q = extQ (sQ , (i, gtime, ), e) = (qtime' ,q'1 ,..,q'n , ' )


Atunci:
daca qtime gtime
0,
qtime=min{qtime,gtime}; ' =
qtime gtime, daca qtime > gtime
Cozile q 'j , j=1,..,m sunt date de relaiile
((1j ,1j )..,( njj ,njj )), daca j k, q j

(( j , j ),..,( nj ,njj ),(0,)), daca j = i si qj


q'j = 1 1
, daca j i si qj =

(0, ), daca qi =
Intervalul
de timp e,
trecut de
la
ultima tranziie, este
dat
de:
gtime qtime + ta PQ ( s PQ ), daca qtime gtime
e=
gtime qtime, daca qtime < gtime
Mesajul de forma () este primit de la procesor i are semnificaia c peste un timp va fi
liber cel puin o staie de servire. n acest caz singura variabil care se schimb este care
devine .
De asemenea, atunci cnd se primete un mesaj de forma (i,gtime,), modelul va executa o
tranziie intern instantanee care nu-i va modifica starea intern, singurul efect fiind
transmiterea unui mesaj new-arriv , ctre modelul procesor pentru a actualiza lungimea
cozii, dup care execut tranziia extern.
Modelul transmite la ieire mesajele:
- ( k , 1k ) , ( k , qtime, 1k ) ; primul mesaj va ajunge n cele din urm la modelul msurtor iar
cellalt este transmis procesorului;
- (new_arrival) i tl , care au semnificaia prezentat anterior.

(ii) Modelul DEVS asociat procesorului


Fiecare staie de servire activ este ea nsi un model i cum numrul lor este variabil, este
firesc s considerm c modelul obinut prin cuplarea lor are o structur variabil. n
conformitate cu cele prezentate n capitolul I, dac P este identificatorul reelei i DP este
directorul reelei iar DDP={P1,..,Pr} este mulimea identificatorilor staiilor active la un
moment dat, atunci modelul reea asociat lui P este DSDEVSP=(DP,MDP), n care MDP este
modelul de baz DSDEVS asociat directorului reelei. Fie

M DP = ( X DP , YDP , S DP , int DP , extDP , ta DP , DP ) .


(ii.1) Modelul asociat fiecrei staii de servire ocupate j, jDDPeste de forma
DP
DP
DP
M DP
= ( X DP
, intDPj , exDPj , ta DP
j
j , S j ,Y j
j , j ) , n care:

o intrare este de forma (i,qtime,), a crei semnificaie am discutat-o mai devreme.


staia de servire se poate afla n starea (0,0,) cnd i-a terminat de servit clientul sau n
starea (k j,j, ptimej), cnd servete un client din clasa kj, j este timpul de servire iar ptimej
este momentul terminrii serviciului.
ieiriea staiei de servire este (ptimej, j,j,kj), care este transmis reelei.

139

cnd primete un mesaj extern (i,qtime,) staia j execut o tranziie extern i va trece din
starea (0,0, ), n starea (kj,j,ptimej), n care ptimej=qtime+,j=, kj=k; modelul fiind
activat, va executa imediat o tranziie intern i va trece n starea (0,0,),
ta DBP
(( ptime j , j , k j )) = j i se transmite ieiriea menionat anterior.
j

(ii.2) Modelul DEVS asociat directorului


O stare sDP a acestui model este de forma
DP
s DP = ( X PDP , Y PDP , D DP ,{M iDBP }iDP , {Z iDP
, qlength, ptime, pf )
, j }iDP , jI i , select

n care:
X PDP este mulimea intrrilor n reea
X PDP = {(i, qtime, , tl ) / i = 1,.., m; , qtime, tl R+ } {' new _ arrival '}
(i,qtime,,tl) nseamn c un client din clasa i va sosi la momentul qtime, timpul de servire
fiind ; tl este un interval de timp ct coada a fost vid; new_arrival nseamn c un nou
client a fost introdus n coad.
Y PDP este mulimea ieirilor din reea
YPDP = { / R+ {0}} {(tlen) / tlen R+ {0}}
{( ptime, j , k , ) / j = 1,.., n; k = 1,.., m; , ptime R+ }
nseamn intervalul de timp dup care prima staie ocupat i va termina serviciul, adic se
poate primi un nou client pentru a fi servit; (j,k,ptime,) nseamn c staia de lucru j a servit
un client din clasa k, ptime va fi valoarea timpului global cnd se termin serviciul, iar
durata serviciului; tlen nseamn un interval de timp de lenevire.
DDP ={P1,..,Pr}, reprezint identificatorii staiilor de lucru ocupate, {P1,..,Pr}{1,..,n}.
DP
M DP
reprezint modelul DEVS asociat fiecrei staii de lucru ocupate.
j , j D

= {P, DP}, () j D DP , I DP = {P, j / j D DP }, I P = {DP} , adic orice staie de lucru


I DP
j
activ influeneaz reeaua i pe directorul reelei, directorul reelei poate influena oricare
staie de lucru activ i reeaua iar reeaua poate influena directorul.
DP
DP
DP
Z DP
, j = (i , qtime, ) ; Z j , P = ( j , k j , ptime j , j ) ; Z j , P = ( j , ) , n care reprezint timpul
DP
dup care staia j va fi liber; Z DP
, P = ( , tl ) .

qlength reprezint numrul total de clieni aflai n coad.


pf=0, dac toate staiile active servesc clieni sau pf{1,..,n}, indicnd fapul c staia pf i-a
terminat serviciul i poate servi un eventual client.
ptime reprezint momentul terminrii ultimului serviciu.
Mulimea intrrilor directorului este format din mulimea intrrilor n reea, la care se
adug intrarea primit de la staiile de servire.
Mulimea ieirilor directorului este
Y DP = { / R + {0}} {(tlen ) / tlen R + {0}}

(ii.3) Modelul asociat reelei este de forma M P = ( X P , Y P , S P , int p , ext p , ta P , P )


n care: X P = X PDP , Y P = Y PDP
O stare a modelului este de forma s P = (( s DP , e DP ), ( s P1 , e P1 ),.., ( s Pr , e Pr ))
n care sDP, respectiv eDP reprezint starea modelului director, respectiv intervalul de timp de
cnd modelul director se afl n aceast stare iar sj, respectiv ej, j{P1,..,Pr} reprezint starea,
respectiv intervalul de timp de cnd se afl n aceast stare, ale modelului j.

140

Tranziia extern.Cnd primete o intrare de forma (i, qtime, , tl ) , aceasta este transmis
directorului i are ca efect qlength:=qlength-1, se transmite staiei pf mesajul (i, qtime, )
care i execut propria tranziie extern i pf devine 0, iar Tlen:=tl, dac i numai dac
DDP={}, pf=j i sj=(0,0,).
Cnd primete o intrare de forma new_arrival, mesajul este transmis directorului care
incrementeaz variabila qlength; dac qlength/nbpL i nbp<n atunci o nou staie este
introdus n lucru, de indice Pr+1, deci DDP ={P1,..,Pr, Pr+1 } , pf= Pr+1 i se transmite un
mesaj , cu =0 modelului reea, care mai departe este transmis cozii, n sensul c un nou
client poate fi servit imediat;
Tranziia intern este datorat tranziiei interne a staiei de servire care i termin prima
serviciul, determinat astfel: fie = min{tai ( si ) ei / i D DP } ,
Im = {r / r D DP , ta r ( s r ) er = } , i * = Select DP (Im) = min{r / r Im} , componenta
selectat dup regula evenimentului urmtor care s genereze tranziia intern a ntregii reele.
Tranziia intern se desfoar n dou etape: mai nti se determin efectul tranziiei asupra
componentei i* , apoi efectul asupra componentelor influenate. Astfel dup prima etap
starea modelului devine
s P = (( s DP , e DP + ta i * ( s i * )), ( s P1 , e P1 + ta i * ( s i * )),.., ( int * ( s i * ),0),.., ( s Pr , e Pr + ta i * ( s i * ))) =
i

= (( s DP , e DP + ta i * ( s i * )), ( s P1 , e P1 + ta i * ( s i * ),.., ( s pred ( i * ) , e pred ( i * ) + ta pred ( i * ) ( s pred ( i * ) )),


( s succ ( i * ) , e succ ( i * ) + ta succ ( i * ) ( s succ ( i * ) )),..., ( s Pr , e Pr + ta i * ( s i * )))
Dup etapa doua se va modific numai starea directorului, adic:
- dac qlength/nbpl i nbp>1 , atunci pf=i* i =;
- dac qlength/nbp<l i nbp>1 atunci DDP:= DDP-{i*}, i = ;
- dac qlength/nbp<l i nbp=1, atunci pf= i* , DDP:={}, i* rmne singura staie care ateapt
clieni, cu =0.
Se transmit ieirile de forma (ptime,j,k,), care va junge n final la modelul cadru
experimental i () care ajunge la coad.

(iii) Modelul cuplat QP este un model reea cu structur fix obinut prin cuplarea modelului
atomic Q i a modelului cuplat P, deci el se poate exprima prin:
DN QP = ( DQP ,{M i }iDQP ,{I i }iD QP , {Z i , j }i , jDQP , select QP )
n care:
DQP ={Q,P,QP}, Mi=(Xi,Si,Yi, int i , exti , i , ta i ) , i DQP, IQ={P,QP}, IP={Q,QP}, IQP={Q,P},
ZQP,Q=(i,gtime,)=ZQP,P, ZP,QP= (i,k,ptime,);ZP,Q=() ; ZQ,QP=(k, 1k )sau (k,qtime,) sau
(new_arrival); selectQP va selecta modelul P atunci cnd la acelai timp eveniment ambele
modele i schimb starea intern. Semnificaia acestor mesaje va fi descris n cele ce
urmeaz. n continuare vom construi modelul DEVS asociat.

Mulimea intrrilor n model este aceeai cu mulimea intrrilor cozii. Tranziia extern a
modelului se obine atunci cnd se primete un mesaj extern, care se transmite cozii care este
singura component care are intrarea cuplat la exterior. Pe baza acestui mesaj, coada execut
propria tranziie extern. Starea modelului MQP este de forma sQP=((sQ,eQ),(sP,eP)); conform
regulii evenimentul urmtor sau a timpului minimla orice moment t, modificarea strii
modelului cuplat QP va fi generat de componenta pentru care se atinge valoarea minim
'
= (( s Q' , eQ' ), ( s P' , e P' )) noua stare obinut
dat de = min{taQ (s Q ) - e Q , ta P (s P ) - e P } . Fie sQP
n urma efecturii unei tranziii interne. Dac = taQ (s Q ) - e Q = ta P (s P ) - e P atunci funcia

141

select va furniza componenta Q care i va executa prima tranziia intern. Dac


= ta Q (s Q ) - e Q , adic tranziia intern a modelului cuplat este consecina direct a tranziiei
interne a cozii, atunci:
sQ' = int Q ( sQ ), eQ' = 0, s P' = ext P ( s P , (k , qtime, ), e), e P' = 0

Dac urmtoarea component care execut o tranziie intern este procesorul P atunci:
s P' = int P ( s P ), e P' = 0, sQ' = extQ ( sQ , ( ), e), e P' = 0

Ieirile sunt de forma (k,+), (i,k,ptime,,), care au fost descrise anterior, fiind transmise
modelului cadru experimental.
(iv) Modelul DEVS asociat cadrului experimental
Acest model este un model reea cu structur fix obinut prin cuplarea modelor DEVS
asociate generatorului i respectiv msurtorului. Fie:
DN EF = ( D EF ,{M i }iDEF , {I i }iD EF , {Z i , j }i , jDEF , select EF )
n care DEF ={G,T,EF}, Mi=(Xi,Si,Yi, int i , exti , i , ta i ) , i DEF, IG={EF}, IT={EF},
IEF={T},ZG,EF=(k,gtime,), ZEF,T =(k,qtime,,), ZT,EF=(MTw, MTs, Clen); selectEF nu are nici
un efect deoarece numai generatorul efectueaz tranziii interne
Modelul generator are aceeai descriere ca i n cazurile anterioare.

Modelul msurtor este un model pasiv. Multimea intrrilor este:


XT={(k,)/ k=1,..,m; R+ {0} } {(i,k,,ptime)
(Tlen)/i=1,..,n;k=1,..,m;,ptimeR+ {0} }
semnificaia celor dou mesaje fiind prezentat cnd am studiat modelele Q i P. O stare a
msurtorului este de forma sT = (Tt,Ttl,Tst,Twt,Nss,Nsc)
unde: Tt
reprezint valoarea timpului global; Ttl reprezint valoarea timpului total de
lenevire; Tst este un vector, Tst(i,k), i=1,...,n;k=1,..,m reprezint timpul total ct staia de
servire i a lucrat pentru a servi clienii din clasa k ; Twt este un vector, Twt(k), k=1,...,m ,
reprezint timpul total ct clienii din clasa k au ateptat n coad; Nsc este un vector Nsc(k),
k=1,...,m, reprezint numrul total de clieni servii din clasa k; Nss(i) reprezint numrul
total de clieni servii de staia i.
Cnd primete o de intrare de forma (k,), modelul efectueaz o tranziie extern astfel:
Twt(k):= Twt(k)+ .
Cnd primete o de intrare de forma (i,k,,ptime,Tlen), modelul efectueaz o tranziie extern
astfel: Tt:=ptime; Tst(i,k):= Tst(i,k)+ ; Nss(i):= Nss(i)+1;Nsc(k):= Nsc(k)+1.
Cnd primete o de intrare de forma (Tlen), modelul efectueaz o tranziie extern
astfel:TTl:=Ttl+Tlen.
Pe baza acestor date sunt calculai factorii de eficien ai sistemului. Acetia sunt:
Media timpului de ateptare n coad al clienilor din clasa k, MTw(k)=Tw(k)/Nsc(k),
k=1,..,m;
Numrul mediu de clieni n coad din clasa k, MLq(k)= Tw(k)/Tt, k=1,..,m;
Media timpului de servire al clienilor din clasa k, MTs(k)=Tsc(k)/Nsc(k), k=1,..,m
n

n care Tsc (k) = Tst ( j , k ) ;


j =1

Media timpului de lenevire al staiilor MTtl, MTtl=Ttl/Tt i coeficientul mediu de lenevire


al staiilor, MClen=MTtl/n
Media timpului de serviciu al staiei i, MTts(i)=Tts(i)/Nss(i), i=1,..,n, n care
m

Tts(i) = Tst (i, k ) .


k =1

142

Lungimea medie a cozii , dat de MQueue = MLq(k ) .


k =1

Deoarece modelul este pasiv, functia de avans a timpului este taT (sT )= .
Modelul cuplat EF(cadru experimental) se poate exprima i el cu ajutorul formalismului
DEVS. Intrrile sunt cele ale msurtorului, fiind primite de la modelul QP. Ieirile sunt
cele ale generatorului care ajung n final la modelul QP. Deorece singura component care
execut tranziii interne este generatorul, tranziia intern a modelului cuplat va consta din
tranziia acestui model, ocazie cu care se va transmite ieirea menionat anterior. Msurtorul
este singura component care are intrarea cuplat la exterior, deci n momentul cnd modelul
primete un mesaj extern, l va trimite acestei componente, care i executa propria tranziie
extern.

(V) Modelul DEVS asociat modelului cuplat QS/EF


Modelul QS/EF este un model cuplat, de forma
DN QS = ( DQS ,{M i }iDQS ,{I i }iD QS ,{Z i , j }i , jDQS , select QS )
n care DQS ={QP,EF,QS}, Mi={Xi,Si,Yi, int i , exti , i , ta i ) }, i DQS, IQP={QS,EF},
IEF={QS,QP}, IQS={QP,EF}, ZEF,QP=(i,gtime,), ZQS,QP=(k,gtime,), ZQP,EF =(j,k,ptime,) sau
(tl) sau (k,), ZEF,QS=(MTw, MTs,MLq,Mqueue,MTLen, MClen); funcia selectEF o vom
descrie cnd vom prezenta tranziia modelului
QS/EF este un model autonom, deci schimbarea de stare este dat numai de tranziia intern.
O stare a modelului este de forma: s QS = ((s EF , e EF ), (s QP ,e QP ))
Tranziia intern. La orice timp eveniment t, urmtorul eveniment n sistem va avea loc
dup intervalul de timp = min{taEF (s EF ) - e EF , ta QP (s QP ) - e QP } . Conform regulii
evenimentul urmtor sau a timpului minim, modificarea strii modelului cuplat QS/EF
va fi generat de componenta pentru care se atinge minimul. Dac
= min{ta EF (s EF ) - e EF = ta QP (s QP ) - e QP } , funcia select a modelului cuplat ne va furniza
componenta ce va fi aleas pentru a-i realiza prima tranziia. n cazul nostru modelul
selectat va fi cadrul experimental. Daca = ta EF (s EF ) - e EF , atunci componenta iminent este
cadrul experimental care-i va executa tranziia intern n conformitate cu cele afirmate
anterior i va genera ieirea de forma (i,gtime,). Aceast ieire este translatat prin
intermediul funciei ZEF,QP, devenind astfel intrare pentru modelul QP, care i va executa
propria tranziie extern. Vom avea deci:
s' QS = int QS ( sQS ) = (( s ' EF , e' EF ), ( s 'QP , e'QP )) ,
unde:
s' EF = int EF ( s EF ), e' EF = 0, s 'QP = extQP ( sQP , (i, gtime, ), e), e'QP = 0
Dac componenta iminent este modelul QP, acesta i va executa tranziia intern n
conformitate cu cele amintite anterior. Chiar nainte ca acesta sa-si efectueze tranzitia intern,
se transmit cele dou ieiri, care translatate devin intrri pentru modelul EF, care pe baza lor
efectueaz
propria
tranziie
extern.
Vom
avea
deci:
s' QS = int QS ( sQS ) = (( s ' EF , e' EF ), ( s 'QP , e'QP )) , unde:
s ' EF = ext EF ( s EF , (( k , ), (i , kgtime , )), e ), e ' EF = 0, s ' QP = int tQP ( s QP ), e ' QP = 0

s' EF = ext EF ( s EF , (( k , + ), ), e), e' EF = 0, s' QP = int tQP ( s QP ), e' QP = 0


Ieirea modelului const din ieirile msurtorului, pe baza crora se determin factorii de
eficien ai sistemului.

143

S ne reamintim...
Spre deosebire de modelul anterior, coada i procesorul sunt modele. Coada este un
model atomic, pe cnd procesorul este un model reea cu structur variabil; n
cadrul acestuia, fiecare statie de servire activ este un model, iar structura dinamic
a reelei se afl n director(modelul DP). Modelul cuplat EF implementeaz
generarea sosirilor i determinarea factorilor de eficien.

M4.U1.8. Test de evaluare a cunotinelor


Marcai varianta corect.
1.n cadrul modelului DEVS, ta(s) va reprezenta intervalul de timp dup care sistemul
trece din starea s n starea urmtoare int(s).
face:
a) intervalul de timp dup care
c) intervalul de timp dup care
sistemul execut o tranziie extern.
sistemul trece din starea s n starea
urmtoare int(s).
b) intervalul de timp dup care
d) intervalul de timp dup care
sistemul este activat.
sistemul
2. n cadrul modelului DEVS, o stare sS se numete pasiv dac:
c) ta(s)=0.
a) ta(s)=.
b) (s) =
d) (s) =0
3. n cadrul modelului DEVS, o stare sS se numete tranzitorie dac:
c) ta(s)=0.
a) ta(s)=.
b) (s) =
4. n cadrul modelului cuplat cu structur fix,
a) funcia de selectare prin care, dintre
mai multe componente care si
schimb starea la acelai timp
eveniment, se alege una dintre ele care
transmite un mesaj de ieire.
b) funcia de selectare prin care, dintre
mai multe componente care si
schimb starea la acelai timp
eveniment, se alege una dintre ele care
efectueaz
ultima
tranziia
i
influeneaz starea modelului cuplat

d) (s) =0
select este:
c) funcia de selectare prin care,
dintre mai multe componente care
si schimb starea la acelai timp
eveniment, se alege una dintre ele
care primete un mesaj de intrare.
d) funcia de selectare prin care,
dintre mai multe componente care
si schimb starea la acelai timp
eveniment, se alege una dintre ele
care efectueaz prima tranziia i
influeneaz starea modelului cuplat.

5. n cadrul modelului cuplat cu structur fix, componentele neinfluenate de


componenta care i schimb starea:.:
a) nu si schimb starea, ele numai
c) nu si schimb starea, ele numai
transmit
mesaje
componentelor
primesc mesaje de la componentele
influenate.
influenate.
b) nu si schimb starea, ele numai i
actualizeaz intervalul de timp de cnd
se afl n starea respectiv.

144

d) si schimb starea, i i
actualizeaz intervalul de timp de
cnd se afl n starea respectiv.

6. n cadrul reelei formate din model i cadru experimental, care dintre modele este
autonom:
a) Msurtorul

c) Acceptorul

b) Generatorul
d) Acumulatorul
7. Informaia despre structura dinamic a reelei de modele cu structur variabil este
localizat n:
a) starea directorului
c) identificatorul reelei
b) numele directorului

d) starea reelei

8. n cadrul tranziiei interne a modelului reea cu structur variabi, exprimat prin


*
int ( s ) = e*x t ( i * , y * , int
( i * , s )) , int* :
a) se utilizeaz pentru a calcula efectul
c) se utilizeaz pentru a calcula
tranziiei interne a directorului.
efectul
tranziiei
interne
a
componentelor
influenate
de
director.
b) se utilizeaz pentru a calcula efectul
tranziiei interne a componentei
selectate.

d) se utilizeaz pentru a calcula


efectul
tranziiei
interne
a
modelului.

M4.U1.9 Rezumat
Formalismul DEVS (Discrete Events System) a fost introdus cu scopul de a modela
sistemele cu evenimente discrete i pe baza acestor modele s se poat construi
simulatoare pentru sistemele respective. Sunt prezentate elementele care definesc un
astfel de model de simulare.
n contextul formalismului DEVS, cuplarea modelelor se realizeaz att prin
conceptul de model cuplat sau model reea cu structur fix, ct i prin conceptu de
model reea cu structur variabil. Se demonstreaz c aceste structuri constituie la
rndul lor modele DEVS; astfel, se probeaz corectitudinea teoriei prezentate. Prin
aceste structuri, se realizeaz construcia ierarhizat i modular a modelelor de
simulare.
Prin prezentarea studiilor de caz, se face o legtur ntre aceast teorie i conceptele
legate de abordarea algoritmic a sistemelor de ateptare prezentate n modulul 2.

145

Unitatea de nvare M4.U2. Simulatoare abstracte


Cuprins
M4.U2.1. Introducere..........................................................................................................146
M4.U2.2. Obiectivele unitii de nvare............................................................................146
M4.U2.3. Simulatorul abstract ............................................................................................146
M4.U2.4. Mecanismul simulrii pentru modele cuplate cu structur fix.............................151
M4.U2.5. Simularea modelelor n reea cu structur variabil .............................................154
M4.U2.6. Studii de caz .......................................................................................................156
M4.U2.7. Test de evaluare a cunotinelor ..........................................................................161
M4.U2.8. Rezumat..............................................................................................................162
Introducere
Aceast unitatea de nvare prezint conceptul de simulator abstract. Simulatorul
abstract asociat modelelor de simulare cu structur variabil se bazeaz pe
conceptul de simulator asociat unui modele atomic DEVS, prezentat n unitatea de
nvare anterioar, precum i simulatorul reea asociat modelului cu structur
variabil.
Studiul de caz prezentat, face legtura cu algoritmul de simulare pentru sisteme de
ateptare cu numr variabil de staii paralele prezentat n modulul 2.
i simulatoarelor asociate lui. Prin definirea clar a conceptelor de interfa a
modelului, a modului de comunicare dintre simulatoarele abstracte asociate i
posibilitatea costruciei ierarhice a modelelor i simulatoarelor, aceast teorie ofer
posibilitatea orientrii spre obiecte a simulrii sistemelor.

Competene
La sfritul acestei uniti de nvare studenii vor fi capabili:
 s neleag conceptul de simulator abstract.
 s neleag mecanismul simulrii modelelor n reea cu structur fix;.
 s neleag mecanismul simulrii modelelor n reea cu structur variabil;
 s implementeze aceste abloane n cazul unor sisteme reale exprimate ca
modele DEVS;
 s implementeze simulatoarele abstracte ntr+un limbaj de programare.

Durata medie de parcurgere a primei uniti de nvare este de 3 ore.

M4.U2.3. Simulatorul abstract


Pasul urmtor n descrierea comportrii unui sistem cu ajutorul calculatorului este construcia
simulatorului. Simulatorul abstract reprezint o descriere algoritmic a modului cum sunt
generate instruciunile modelului.
Unui model DEVS i corespunde un simulator abstract, care mai departe poate fi codificat
ntr-un limbaj de programare, de preferin ntr-unul orientat pe obiecte, obinnd astfel un
146

simulator orientat pe obiecte. Corespunztor structurii arborescente a unui modelel DEVS, i


simulatorul abstract are o asemenea structur.
Astfel, simulatoarele abstracte se mpart n trei categorii:
simulatoare, care realizeaz simularea la nivelul modelelor atomice;
coordonatoare, respective simulatoare reea, care coordoneaz simularea la nivelul
modelelor reea cu structur fix, respectiv variabil realiznd sincronizarea ntre
simulatoarele subordonate;
cordonatorul-rdcin, care coordonez simularea la nivelul cel mai nalt al reelei de
modele.
Exemplu.
n figura 4.2.1 este prezentat un exemplu care reliefeaz modul de asociere ntre
un model i simulatorul abstract asociat corespunztor lui, precum i construcia
lui ierarhizat. Modelele A, B i C sunt atomice; M2 se obine prin cuplarea lui B
i C; M1 se obine prin cuplarea lui A i M2.

Co o rd o n ato ru lRd cin

Co o rd o n ato r C:M 1
M o d el cu p lat M 1

Simu lato r S :A
M o d el A to mic A

Co o rd o n ato r C:M 2
M o d el cu p lat M 2

Simu lato r S :B
M o d el A to mic B

Simu lato r S :C
M o d el A to mic C

Figura 4.2.1. Structura simulatorului abstract asociat unei reele de modele DEVS
Se observ c exist un singur simulator abstract care este deasupra ntregii construcii
ierarhizate a modelelor i anume coordonatorul rdcin. Un rol esenial n derularea
simulrii, l joac comunicarea ntre simulatorele abstracte responsabile de simularea
modelelor de la diverse nivele. Aceasta se realizeaz prin tehnica transmiterii de mesaje. Att
coordonatoarele, ct i simulatoarele transmit i primesc aceleai tipuri de mesaje; n
consecin, orice coordonator nu face distincie ntre un subordonat coordonator sau
simulator.
Orice simulator abstract ntreprinde o aciune numai atunci cnd primete un mesaj de la
printele su. Astfel, simulatorul abstract poate fi implementat folosind facilitaile limbajelor
147

de programare orientate pe obiecte. Mesajele circul de sus n jos, de la coordonator ctre


simulatoarele abstracte subordonate, indicnd o aciune ce trebuie ntreprins, respectiv de jos
n sus, indicnd comfirmarea execuiei aciunii comandate i un eventual mesaj de ieire.
Orice mesaj este caracterizat de tipul lui:
- astfel un i-mesaj corespunde fixrii unei stri iniiale;
- un *-mesaj corespunde efecturii unei tranziii interne;
- un x-mesaj corespunde efecturii unei tranziii externe.
Aceste mesaje sunt primite de ctre simulatorul abstract de la printele su.
- y-mesajul este ieirea generat datorit efecturii unei tranziii interne;
- done-mesajul este mesajul de comfirmare a execuiei unei anumite aciuni comandate
de ctre simulatorul printe.
De asemenea, orice mesaj conine timpul eveniment la care este transmis i un anumit
coninut.
n cele ce urmeaz, vom descrie cele trei tipuri de simulatoare abstracte, vom demonstra
corectitudinea lor, adic faptul c reprezint acelai sistem dinamic cu cel asociat modelului
DEVS pe care l simuleaz i vom prezenta mecanismul simulrii modelelor DEVS.
Simulatorul DEVS. Aa cum este reliefat n figura 4.2.2, simulatorul are dou variabile de
stare: variabila s reprezint starea secvenial a modelului, iar tl conine timpul ultimului
eveniment.
( d o n e ,t) , ( y,t)

tl

( i,t) ,( x ,t)
s a u (* ,t)

tn

Figura 4.2.2. Structura unui simulator DEVS


Variabila tn reprezint timpul urmtorului eveniment planificat i se determin conform
relaiei:
tn=tl+ta(s)
(4.2.1)
Dac e este intervalul de timp scurs de la ultimul eveniment, atunci:
e=t-tl
(4.2.2)
formul n care t reprezint momentul ultimului eveniment aprut n sistem.
De asemenea, dac notm cu valoarea timpului rmas pn la urmtorul eveniment intern,
=ta(s)-e
(4.2.3)
atunci:
n continuare este prezentat descrierea sub form de pseudocod a simulatorului asociat unui
model atomic.
Simulatorul DEVS
Variabile: Parent-coordonatorul printe
tl-timpul ultimului eveniment
tn-timpul urmtorului eveniment
y-valoarea curent de ieire a modelului asociat
(s,e)- starea iniial total a modelului asociat
When receives (i,t)

148

tl:=t-e; tn:=tl+ta(s);
done:=true;
send (done,t) to parent.
When receives (*,t)
done:=false;
If ttn then Error-Bad synchronisation
else
y:=(s); send (y,t) to parent ;
s:=int(s); tl:=t; tn:=tn+ta(s);done:=true;
send (done,t) to parent .
When receives (x,t)
done:=false;
if not(tlttn) then Error-Bad synchronisation
else
s:=ext(s,t-tl,x);
tl:=t; tn:=tl+ta(s);
done:=true;
send (done,t) to parent.
end

Cnd primete un mesaj de iniializare de forma (i,t), calculeaz timpul ultimului eveniment
folosind (4.2.2). Cnd primete un mesaj (*,t) de la coordonatorul printe, aceasta nseamn
c la timpul eveniment t este planificat o tranziie intern; simulatorul execut tranziia
intern a modelului i actualizeaz valorile variabilelor tl, respectiv tn, cu t, respectiv n
conformitate cu (4.2.1). De asemenea, transmite un y-mesaj i un done-mesaj printelui su.
Cnd primete un x-mesaj, execut tranziia extern a modelului i rspunde cu un donemesaj, valorile tl, tn fiind modificate ca mai sus.
Coordonatorul DEVS. Aa cum este redat n figura 4.2.3, fiecare component a modelului
cuplat este simulat de propriul ei simulator abstract. Coordonatorul este responsabil cu
sincronizarea simulatoarelor abstracte subordonate, din structura arborescent asociat i
manipularea mesajelor primite.

( i, t ) , ( x ,t )
s a u ( * ,t )

tl

tn

C o o rd o n a t o r

s1

t l1
tn

( i,t ) ,
( x, t ) ,
sau
( * ,t )

Figura 4.2.3. Structura unui coordonator

149

Cnd un coordonator primete un i-mesaj, l transmite tuturor subordonailor (fiilor) si. Dup
ce toi fii au comfirmat primirea i executarea mesajului, calculeaz propriul tl ca fiind
maximul tl-urilor fiilor si i propriul tn ca fiind minimul tn-urilor fiilor si.
Cnd un coordonator DEVS primete un *-mesaj, acesta este transmis mai departe unuia
dintre simulatoare abstracte subordonate iminente, adic celor al cror tn este egal cu tn-ul
coordonatorului, acesta fiind cel care are planificat primul o tranziie intern; dac exist mai
multe asemenea simulatoare iminente, este selectat unul cu ajutorul unei funcii de selectare,
analoag celei din definiia modelului cuplat. Dup ce a primit mesajul de comfirmare a
prelucrrii i y-mesajul corespunztor de la componenta selectat, transmite x-mesaje tuturor
componentelor influenate de componenta selectat, prin translatarea x-mesajului primit.
Cnd coordonatorul primete un x-mesaj, translateaz mesajul primit n xi-mesaje,
corespunztoare fiecrui fiu i, cuplat la exterior. Fiecare fiu care a primit un astfel de mesaj,
i execut propria-i tranziie extern, dup care rspunde cu un done-mesaj de confirmare a
execuiei tranziiei externe.
n continuare este descris sub form de pseudocod coordonatorul asociat unui model cuplat
oarecare
Variabile: parent-printele cordonator;tl- timpul ultimului eveniment
tn-timpul urmtorului eveniment;
Im-lista fiilor imineni:
d*- fiul iminent selectat
M = ( X , Y , D,{M d }dD , {I d }dD ,{Z i , j }i , jD , select ) -modelul cuplat DEVS
When receives (i,t)
for-each d in D do
send (i,t) to d
end-for
WaitUntil done from all simulators
tn:=min{tnd/dD}.
tl:=max{tld/dD};
When receives (*,t) at time t
done:=false;
If ttn then Error-Bad synchronisation
else
Im:={d/dD i tnd=min{tnl/lD}; d*:=select(Im);
send (*,t) to d*; WaitUntil (done,t),(
for-each j in

I d * xd

,j

y d * ,t) from d*;

:= Z d * , j ( y d * );

WaitUntil (done,t) from j;


tl:=t; tn:=min{tnd/dD};
done:=true;
send (done,t) to parent .
When receives (x,t)
done:=false;
if not(tlttn) then Error-Bad synchronisation
else
for-each r in IM
send (ZM,r(x),t) to r
end-for;
WaitUntil (done,t) from all r in IM;
tl:=t;tn:=min{tnd/dD};

150

done:=true;
end

Observm c interfaa de intrare/ieire a oricrui simulator abstract, indiferent de tipul su


este aceeai. Acest lucru face posibil construcia ierarhic i recursiv a simulatorului
abstract asociat oricrui model DEVS.
n cele ce urmeaz, ntr-un mod asemntor cu raionamentul din cazul simulatorului vom
demonstra c i coordonatorul simuleaz corect modelul cuplat DEVS cruia i este asociat.
M4.U2.4. Mecanismul simulrii pentru modele cuplate cu structur fix
Coordonatorul rdcin declaneaz simularea prin transmiterea unui i-mesaj
coordonatorului care-i este imediat subordonat, adic coordonatorului de la nivelul cel mai
nalt, care de asemenea transmite i-mesaje simulatoarelor abstracte subordonate, procesul
fiind eventual executat i de ctre coodonatoarele de la nivelurile inferioare, pn cnd fiecare
nod terminal din construcia arborescent (simulator) primete un i-mesaj. Fiecare simulator
abstract transmite un mesaj de confirmare printelui su.
Dup ce coordonatorul de la nivelul cel mai nalt a primit mesajul de confirmare din partea
fiilor si, urmeaz transmiterea unui numr de *-mesaje fiului su care are tn-ul minim (dac
sunt mai muli se selecteaz unul), pn cnd criteriul de terminare a simulrii este ndeplinit.
Acest criteriu poate fi numrul total de evenimente simulate sau valoarea timpului
global(ceasului) simulrii.
Dac acesta este simulator, execut tranziia intern i drumul n jos al *-mesajului se termin,
altfel aciunea se repet pentru coordonatorul respectiv .a.m.d. Fiecare simulator execut
tranziia intern i transmite printelui coordonator un y-mesaj nsoit de un done-mesaj de
confirmare. La rndul lor, coordonatoarele de la nivelul imediat superior, dup ce au primit
mesaje de comfirmare a execuiei tranziiei interne de la simulatorul abstract fiu, execut
propria tranziie intern, aa cum am amintit mai sus.
Pentru fiecare mesaj de ieire primit de la un subordonat, coordonatorul translatez ieirea n
mesaje de intrare pentru modelele influenate de simulatorul de la care a primit y-mesajul
respectiv i fiecare astfel de simulator abstract i va executa propria tranziie extern.
De asemenea, fiecare coordonator va trimite un done-mesaj i eventual un y-mesaj printelui
su. Acest proces se desfoar ascendent, astfel c coordonatorul de la cel mai nalt nivel va
primi un mesaj de confirmare a execuiei tranziiei interne a simulatorului abstract fiu, cruia
i-a trimis *-mesajul. Acest proces, corespunztor transmiterii unui *-mesaj de la
coordonatorul de la nivelul cel mai nalt ctre subordonai se numete ciclu al simulrii.
Cnd un coordonator primete un x-mesaj, realizeaz translatarea mesajului extern primit,
pentru fiecare fiu al su conectat la exterior, n mesaje corespunztoare pe care le trimite ca
mesaje externe simulatoarelor abstracte specificate mai sus, care pe baza acestor intrri i a
valorii timpului eveniment execut propriile tranziii externe.
Dup fiecare done-mesaj primit, coordonatorul actualizeaz propriile tl i tn, aa cum am
prezentat.
Aa cu am amintit mai sus, simulatorul unui model atomic primete trei tipuri de mesaje.
Cnd primete un un i-mesaj, iniializeaz variabilele tl i tn i transmite un mesaj de
confirmare tatlui su.
Cnd primete un *-mesaj verific dac timpul eveniment al primirii mesajului este ntre tl i
tn i n caz afirmativ:
determin valoarea de ieire pe care o transmite printelui su ntr-un y-mesaj;
realizeaz tranziia intern;
151

prelucreaz tl i tn astfel: tl:=tn; tn:=tn+ta(s);


transmite printelui su coordonator sau coordonatorului rdcin un done-mesaj prin care
confirm execuia tranziiei i raporteaz valoarea tn-ului su.
Cnd un simulator primete un x-mesaj verific dac timpul coninut n x-mesaj este cuprins
ntre tl-ul i tn-ul su i n caz afirmativ:
- determin valoarea e=t-tl a timpului trecut de la ultima tranziie intern;
- realizeaz tranziia extern;
- actualizeaz variabilele tl i tn astfel:
tl:=tn; tn:=tn+ta(s);
- transmite printelui su un done -mesaj i raporteaz valoarea tn-ului su.
Exemplu. Vom exemplifica conceptele prezentate anterior pentru un model cuplat
alctuit dintr-un cadru experimental (EF) i un processor (P). Structura modelului i
legturile dintre prile componente sunt prezentate n figura 4.2.4. Modelul P este un
model atomic; EF este un model cuplat alctuit dintr-un model generator de joburi(G) i un model msurtor sau colector (T), care adun informaiile necesare
determinrii factorilor de eficien ai sistemului.
.
EF-P

out

EF
In

in

Out

G
out

in
T
out

out
out

Figura 4.2.4 Structura modelului cuplat format dintr-un cadru experimental si un procesor
n caz de egalitate a timpului evenimentului urmtor, lista de prioritate este: (P EF ), adic se
execut mai nti simulatorul asociat lui P.
n figura 4.2.5 este prezentat structura arborescent a simulatorului abstract asociat
modelului. Dup iniializarea simulrii, adic transmiterea unui i-mesaj de la coordonatorul
rdcin ctre coordonatorul C:EF-P i primirea confirmrii privind execuia acestuia,
mpreun cu tn-ul corespunztor, ncep ciclurile simulrii.
n caz de egalitate a tn-urilor simulatorului S:P, respectiv coordonatorului C:EF-P, funcia
select, exprimat prin lista de prioriti, va preciza care simulator abstract va efectua tranziia
intern. n cazul nostru, fiul iminent este fie C:EF-P, fie S:P. Dac C:EF-P este fiul selectat,
deoarece modelul TRANSD este un model pasiv, modelul care va primi un *- mesaj va fi
GENR. O tranziie intern a lui GENR are semnificaia generrii unui alt job. Atunci cnd
S:GENR primete un *-mesaj, el genereaz un y-mesaj(un nou job) aplicnd funcia sa de
ieire pe care l transmite printelui su C:EF; apoi execut tranziia sa intern i transmite un
done-mesaj mpreun cu tn-ul su lui C:EF. Cnd coordonatorul primete de la fiul su un
y-mesaj, pe de o parte translateaz mesajul ntr-un mesaj pe care l va transmite sub forma
unui x-mesaj ctre S:TRANSD. Pe de alt parte transmite mesajul n sus ctre C:EF-P, care
va transmite lui S:P un mesaj extern, obinut prin translatarea
y-mesaj - ului. Dac
procesorul este liber, el va prelua job-ul primit i va trece n starea ocupat.
152

Dac S:P este fiul iminent, atunci tranziia intern nseamn terminarea servirii unui job;
mai nti transmite un ymesaj care indic timpul de servire al job-ului respectiv, ctre C:EFP, apoi execut tranziia sa intern, adic devine liber i transmite un done-mesaj mpreun cu
tn-ul su, care este infinit. Cnd C:EF-P primete de la procesor mesajul de ieire al acestuia,
l translateaz ntr-un x-mesaj pe care l transmite lui S:TRANSD care execut o tranziie
extern, actualiznd timpul total de lucru efectiv al procesorului i numrul de clieni servii
efectiv de ctre procesor. Cordonatorul C:EF-P iniiaz un nou ciclu al simulrii, genernd un
alt *-mesaj .a.m.d..

Coordonator-rdcin

C:EF-P
Model cuplat EF-P

S:P
Model atomic P

C:EF Model cuplat EF


S:GENR
Model atomic GENR

S:TRANSD
Model atomic TRANSD
Figura 4.2.5. Structura arborescent a simulatorului abstract asociat modelului EF-P
S ne reamintim...
Simulatorul abstract reprezint o descriere algoritmic a modului cum sunt
generate instruciunile modelului. Corespunztor structurii arborescente a unui
modelel DEVS, i simulatorul abstract are o asemenea structur.
Simulatoarele abstracte se mpart n trei categorii: simulatoare, coordonatoare,
cordonatorul-rdcin.
Comunicarea ntre simulatoare abstracte se realizeaz prin transmiterea de
mesaje. Mesajele pot circula n concordan cu structura arborescent de
simulatoare de sus n jos, prin care se indic tipul de aciune pe care trebuie s o
execute simulatorul subordonat, sau de jos n sus, pentru a se transmite un mesaj
de confirmare sau ieirea obinut n urma execuiei unei tranziii interne.

I.ntrebri.
1. Cum se iniiaz simularea.
2. Ce se ntmpl dup ce un simulator abstract a executat o tranziie intern.
3. Cum stabilete un coordonator care dintre fii si va executa tranziia intern.
4. Care mesaj indic efectuarea unei anumite tranziii.
5. Cum se execut o tranziie intern.

153

M4.U2.5. Simularea modelelor n reea cu structur variabil


Un astfel de simulator este construit pe baza modelelor DSDEVS. Simulatorul este ataat
modelelor de baz atomice ca i n cazul modelelor cuplate cu structur fix. Mesajul de
forma (i,t) este primit cnd modelul respectiv este pus n simulare la momentul t, ntr-o stare
iniial dat. n acest caz, secvena de prelucrare este:
when receive (i, t)
tl:=t;s:=s0;tn:=t+ta(s);
send (done,t) to parent;
end.

Cnd simulatorul primete un mesaj de forma (x,t), el execut o tranziie extern. Simularea
unei astfel de situaii este descris de secvena:
When receive (x,t)
if t[tl,tn] ERROR end
if x then
e:=t-tl; s:=ext(x,s,e);tl:=t; tn:= tn + e;
end;
send (done,t) to parent
end.

Cnd primete un mesaj (*,t), un simulator execut o tranziie intern.


When receive (*,t)
if ttn then ERROR end.
y:=(s);s:=int(s);tl:=tn; tn:= tn +ta(s);
send(done,y) to parent
end.

Simulatorul-reea este ataat modelelor n reea cu structur variabil. Cnd primete un


mesaj de forma (i,t), el execut urmtoarea secven:
When receive (i,t)
send (i,t) to {i/iD{}};{ este numele directorului reelei; D reprezint
componentele reelei}
wait Until (done) from {i/i D{}};
tl:=t;tn:=min{ tn,i/ iD{}};
send (done) to parent;
end .

Mesajul (i,t) este transmis nainte ca simularea s nceap i are ca scop iniializarea
directorului i a componententelor subordonate lui. Dac componentele subordonate
directorului sunt la rndul lor simulatoare-reea, acestea transmit mai departe n jos mesajul, i
n momentul cnd au primit confirmarea de execuie din partea decendenilor, transmit n sus
simulatorului- reea printe confirmarea iniializrii simulatoarelor abstracte subordonate.
Simulatorul realizeaz o tranziie extern cnd primete un mesaj de forma (x,t). Prin
transmiterea acestui mesaj directorului reelei, structura reelei se poate schimba. Dac se
adaug o nou component, acesteia i este transmis un mesaj de forma (i,t), adic
componenta respectiv este pus ntr-o stare iniial. Scoaterea componentelor este ignorat
deoarece ele nu mai aparin strii directorului.
When reveive (x,t)
if t[tl,tn] then EROR end
if x
D:=D;
send( Z , i ( x ) , t) to {i/i I };{Se modific D}

154

wait until (done) from {i/i I };


send (i,t) to D-D;
wait until (done) from D-D;
tl:=t;tn:=min{ tn,i/ iD{}};
end;
send (done) to parent
end.

Funcia de tranziie intern este realizat cnd se primete un mesaj (*,t). Dac componenta
care genereaz tranziia intern influeneaz directorul, deci acesta va execut o tranziie
extern, exist posibilitatea adugrii sau scoaterii de noi componente; componentelor care se
introduc n simulare li se transmite un mesaj (i,t).
When reveive (*,t)
if ttn then EROR end.
i*:=select({i/tn,i=tn , iD { }});D:=D;
send (*,t) to i*;
wait until (done,y*) from i*;
send ( Z i* ,i ( y * ), t n ) to {i / i I i* {}} ;
wait until (done) from {i / i I i* {}} ;
send(i,t) to D - D;
tl:=t;tn:=min{tn,i/{i/iD{}};
if I i*
send ( Z ,i ( y * )) to parent
else
send() to parent
end
end.

Simulatorul-radacin este identic celui prezentat n cazul modelelor cuplate cu structur


fix. El are rolul de a iniia simularea prin transmiterea unui mesaj (i,t) simulatorului reea de
la nivelul cel mai nalt.

S ne reamintim...
Simulatorul este ataat modelelor de baz atomice ca i n cazul modelelor
cuplate cu structur fix.
Simulatorul-reea este ataat modelelor n reea cu structur variabil.
Comunicarea ntre simulatoare abstracte se realizeaz prin transmiterea de
mesaje, n acelai mod ca i n cazul reelei cu structur fix.

I.ntrebri.
1. Care dintre simulatoarele abstracte sunt comune celor dou tipuri de reele.
2. Care dintre simulatoarele abstracte modific structura reelei.
3. Pe ce tipuri de mesaje se schimb coninutului directorului reelei.

155

M4.U2.6. Studii de caz


i) Simulator abstract pentru modelul cu o singur staie de servire cu disciplina headof-line .
Simulatorul abstract asociat modelului QS. n figura 4.2.6 este prezentat structura
ierarhic a simulatorului asociat modelului QS.

Rdcin Coordonator
R:QS

Coordonator C:QS
Model Cuplat QS

Coordonator C:EF
Model Cuplat EF

Simulator S:QP
Model Atomic QP
Simulator S:G
Model Atomic G

Simulator S:T
Model Atomic T

Figura 4.2.6. Structura simulatorului abstract asociat modelului QS


Simulatoarele abstracte asociate modelelor prezentate, se scriu n concordan cu
specificaiile prezentate n M4.U1.6. n cele ce urmeaz, sunt prezentate cteva simulatoare
abstracte asociate unor modele prezentate anterior.
Simulatorul asociat modelului QP poate primi toate cele trei tipuri de mesaje.
When receive(i,t)
tlQP:=t; tnQP:=;done:=true;
send (done,t) to C:QS.
When receive (*,t)
done:=false;
If ttnQP then Error-Bad synchronisation
else
i:=1;
While im and qi
i:=i+1;
if im then k:=i; tnQP:=tnQP+1k;
send(k, tnQP,1k,1k) to C:QS;
sQP:=int(sQP);{se extrage din coada qk perechea (1k,1k), }
tlQP:=t; done:=true;
else Eroare:Coad vid;
send (done,t) to C:QS .
When receive ((i,gtime,),t)
done:=false;
if not(tlQPttnQP) then Error-Bad synchronisation
else
sQP:=ext(sQP,t-tlQP, (i,gtime,)); tlQP:=t; done:=true;
send (done,t) to C:QS.
end .

156

Simulatorul asociat generatorului


When receive (i,t)
Citete parametrii de generare ai variabilelor aleatoare T,AT, ST.
tlG:=t; tnG:=t;done:=true;
send (done,t) to C:EF.
when receive (*,t)
if ttnG then Eroare
else
Gen(k);Gen(IntAriv); Gen();
tl G := t ; tn G := tn G + IntAriv

s G := int ( s G );
send (k,tnG, ) to C:EF;
end.
Simulatorul abstract asociat modelului msurtor
when receives(i,t)
read(Nevs,m){ numarul evenimentelor simulate si numarul de clase}
tnT:=; Tst:=0m ; Twt:=0m; Ns:=0m;evs:=0;
when receives((k,, ,qtime ),t)
done:=false;
stopsim:=false;
if ttlT then
done:=true; Tt:=qtime; Tst(k):= Tst(k)+; Ns(k):= Ns(k)+1;
evs:=evs+1; Twt(k):= Twt(k)+ ; Tl:=Tl+Tlen;
if evs=Nevs then stopsim:=true
send (done,stopsim) to EF
When receive(*,t)
MLq:=0; Tserv:=0; NRs:=0;
for i=1 to m
Mqueue(i):=Twt(i)/Tt; Mlq:=MLq+Mqueue(i);
MTw(i):=Twt(i)/Ns(i); Mtserv=Tst(i)/Ns(i); Tserv := Tserv + Tst (i ) ; Nrs:=Nrs+Ns(i);
endfor
Tl:=Tt-Tserv;Clen=Tl/(Tt); MTserv:=Tserv/Nrs;
Send(done,MTw,MLq,Mtserv,Clen) to C:EF
End.
Simulatorul abstract asociat modelului cuplat EF .
When receive (i,t)
send (i,t) to {S:G,S:T};
WaitUntil done from {S:G,S:T};
tlEF:=max{tld/d{S:G,S:T}}; tnEF:=min{tnd/d{S:G,S:T}}; Done:=true;
Send(done,t) to C:QS;
When receive (*,t)
done:=false;
If ttnEF then Error-Bad synchronisation
else
send (*,t) to S:G;
WaitUntil (done,t),((i,gtime,),t) from S:G;
tlEF:=t; tnEF:=tnG; done:=true;
send (done,((i,gtime,),t) to C:QS .

157

When receive ((k,,,qtime),t)


done:=false;
if not(tlEFttnEF) then Error-Bad synchronisation
else
send ((k,,,qtime),t) to S:T;
WaitUntil (done,stopsim,t) from S:T;
tlEF:=t;tnEF:=tnT; done:=true;
if stopsim
then
send(*,t)to S:T
WaitUntil(done,MTw,Mts,Clen ) from S:T;
send(done,MTw,Mtserv,MLq,Mts,Clen) to C:QS
else send(done,stopsim) to C:QS
end.
Simulatorul abstract asociat modelului QS este un coordonator C:QS.
When receive (i,t)
send (i,t) to {C:EF,S:QP};
WaitUntil done from {C:EF,S:QP};
tlQS:=max{tld/d{C:EF,S:QP}};tnQS:=min{tnd/d{C:EF,S:QP}};Done:=true;
Send (done,t) to R:QS;
When receive (*,t)
done:=false;
If ttnQS then Error-Bad synchronisation
else
If tnEFtnQP
then
send (*,t) to C:EF;
WaitUntil (done,(i,gtime,),t) from C:EF;
tlQS:=t; tnQS:=tnEF;done:=true;
send ((i,gtime,),t) to S:QP;.
WaitUntil (done,t) from S:QP;
Else
send (*,t) to S:QP;
WaitUntil (done,(k,,,tn),t) from S:QP;
tlQS:=t; tnQS:=tnQP;
send ((k,,,tn),t) to EF;
WaitUntil (done,,stopsim,t) from C:EF;
Send (done,stopsim,t) toR:QS
End.
Simulatorul abstract rdcin-coordonator R:QS mai nti, transmite un i-mesaj
coordonatorului C:QS pentru a se iniia simularea. Dup ce primete mesajul de confirmare a
execuiei acestuia, urmeaz transmiterea unui *-mesaj simulatorului abstract de la cel mai
nalt nivel (C:QS), care mai departe va derula simularea.

ii) Simulatorul abstract asociat sistemului de ateptare cu numr variabil de staii


paralele cu disciplina de servire head-of-line
n figura 4.2.7 este prezentat structura ierarhic a simulatorului abstract asociat modelului.
Deoarece o parte dintre simulatoarele abstracte sunt asemntoare celor prezentate anterior, n
continuare vom descrie simulatoarele abstracte corespunztoare structurii variabile..

158

Rdcin
Coooordonator R:QS

Coordonator C:QS
Model Cuplat QS
Coordonator C:QP

Coordonator C:EF
Model Cuplat EF

Model Cuplat QP

Simulator S:Q
Model Atomic Q
Simulator S:DP
Director DP

Simulator reea R:P


Model cuplat P
Simulator S:P1
Model AtomicP1

Simulator S:G
Model Atomic G

Simulator S:T
Model Atomic T

Simulator S:Pn
Model atomic Pn

Figura 4.2.7. Structura simulatorului abstract asociat modelului de ateptare cu numr


variabil de staii de servire paralele de tip head-of-line
Simulatorul reea R:P simuleaz structura de simulatoare asociat ansamblului de staii paralele cu
structur variabil.
When receive (i,t)
send (i,t) to DP;
wait Until (done) from DP;
tlP:=t;tnP:= tnDP;
send (done,t) to C:QP;
When reveives (new_arriv,t)
if t[tlP,tnP] then EROR end
send(new_arriv,t) to S:DP;
WaitUntil (done,,t) from S:DP;
tlP:=t;tnP:=min{tni/iDDP{DP}};
Send(done,,t)to C:QS.
When reveives ((i,qtime,,tl),t)
if t[tlP,tnP] then EROR end;
send((i,qtime,,tl),t) to S:DP;
tlP:=t; tnP:=min{tni/iDDP{DP}};
WaitUntil (done,t) from S:DP;
Send(done,t)to S:P.
When receives(*,t)
i*:=min{i/tni=tnP,iDDP};
Send (*,t)to S:i*;
WaitUntil(done,(i*, k i* , i* , tni* ));
tlP:=t; tnP:=tni*; send ((i*)) to S:DP;
WaitUntil (done,) from S:DP;
Send (done, (i*, k i* , i * , ptimei * ),()) to C:QP.

159

Simulatorul S:DP care corespunde directorului reelei, prezint instruciunile prin care se
modific structura reelei.
When receive (i,t)
DDP:={1}; Send(i,t) to S:1;
WaitUntil (done) from S:1;
tlDP:=t;tnDP:=; Qlength:=0;Nbp:=0;pf:=1;
Read(L,l);Tlen:=0; Send(done) to R:P.
When receive(new-arriv,t)
tlDP:=t;tnDP:=;qlength:=qlength+1;
if (qlength/nbp>L) and (nbp<n) then
:=0; DDP:= DDP{Pnbp+1};
pf:= Pnbp+1;
send(i,t)to pf;
wait until (done) from pf;
else :=;
done:=true;
send(done,) to R:P.
When receives ((i,qtime,,tl),t)
Send(i,qtime,)to S:pf;
Waituntil(done)from S:pf;
Pf:=0; tnDP:=;tlDP:=t;
if (DDP={}) and (spf=(0,,0)) then Tlen:=Tlen+tl;
send(done) to R:P.
When receives((i*),t);
tlP:=t;tnDP:=; Qlength:=qlength-1;
If (qlength/nbp<l) then
If (nbp>1)then
DDP:= DDP-{i*};Dbp:=dbp-1;:=;
Else
pf:=i*; :=0;
Else
Pf:=i*; :=0;
Send(done,) to R:T;

Simulatorul S:j ( j{1,..,n}) prezint .


When receive (i,t)
tlj:=t; tnj:=; done:=true;
send (done,t) to C:P.
When receive ((i,qtime,),t)
done:=false;
if not(tljttnj) then Error-Bad synchronisation
else
sj:=ext(sj,t-tlj, (i,qtime,));{ sj=(k,qtime,) }
tlj:=t;tnj:=tlj+;
send(done) to P;
When receive (*,t)
done:=false;
If ttnj then Error-Bad synchronisation
Else
tlj:=t;tnj:=; ptimej:=ptimej+;
sj:=int(sj);{ sj=(0,0,)}; done:=true;
send(done,(j,ptimej,kj,j)) to R:P.

160

S ne reamintim...

M4.U2.7. Test de evaluare a cunotinelor


Marcai varianta corect.
1. Simulatorul abstract reprezint
a) un program scris ntr-un limbaj
de simulare specializat.

c) un program care generez


instruciunile modelului.

b) o descriere algoritmic a modului


d) o descriere algoritmic a
cum sunt generate instruciunile
modului cum sunt generate
modelului.
instruciunile sistemului.
2. Simularea la nivelul cel mai nalt al reelei de modele este realizat de:
a) cordonatorul-rdcin
c) simulatorul-rdcin
b) simulatorul-reea
3. Un *-mesaj:
a) circul de jos n sus i corespunde
efecturii unei tranziii interne

d) cordonatorul-reea
c) circul de sus n jos i
corespunde
efecturii
unei
tranziii interne

b) circul de jos n sus i corespunde


efecturii unei tranziii externe

d) circul de sus n jos i


corespunde
efecturii
unei
tranziii externe
4. Ieirea generat datorit efecturii unei tranziii interne, este coninut ntr-un:
c) x-mesaj
a) y-mesaj
b) i-mesaj
d) done-mesaj
5. Cnd un coordonator DEVS primete un *-mesaj:
a) transmite cte un *-mesaj tuturor
c) transmite cte un *-mesaj
subordonailor si.
tuturor simulatoarelor influenate.
b) acesta este transmis mai departe
unuia dintre simulatoare abstracte
subordonate, care are planificat
primul o tranziie intern.

d) acesta este transmis mai


departe unuia dintre simulatoare
abstracte subordonate, care are
planificat primul o tranziie
extern.

6. Declanarea simulrii:
a) se face de coordonator prin
transmiterea
unui
i-mesaj
simulatorului care-i este imediat
subordonat

c) se face de coordonator prin


transmiterea
unui
i-mesaj
simulatorului rdcincare-i este
imediat subordonat

b) se face de coordonatorul rdcin


prin transmiterea unui i-mesaj
simulatorului care-i este imediat

d) se face de coordonatorul
rdcin prin transmiterea unui imesaj coordonatorului care-i este

161

subordonat
7. Simulatorul-reea este ataat:
a) modelelor n reea cu structur
fix

imediat subordonat
c) unei reele de modele autonome

b) modelelor n reea cu structur


d) unei reele de modele
variabil
independente.
8. Dac se adaug o nou component n reea , acesteia i este transmis un mesaj de
forma
a) (y,t)
c) (x,t)
b) (z,t)

d) (i,t)

M4.U2.8 Rezumat
Simulatorul abstract reprezint o descriere algoritmic a modului cum sunt
generate instruciunile modelului. Unui model DEVS i corespunde un simulator
abstract, care mai departe poate fi codificat ntr-un limbaj de programare, de
preferin ntr-unul orientat pe obiecte, obinnd astfel un simulator orientat pe
obiecte. Corespunztor structurii arborescente a unui modelel DEVS, i
simulatorul abstract are o asemenea structur. Astfel, simulatoarele abstracte se
mpart n trei categorii:
simulatoare, care realizeaz simularea la nivelul modelelor atomice;
coordonatoare, respective simulatoare reea, care coordoneaz simularea la
nivelul modelelor reea cu structur fix, respectiv variabil realiznd
sincronizarea ntre simulatoarele subordonate;
cordonatorul-rdcin, care coordonez simularea la nivelul cel mai nalt al
reelei de modele.
Ca studii de caz, sunt prezentate dou simulatore abstracte, prin care abloanele
prezentate anterior sunt aplicate

162

BIBLIOGRAFIE
[Bar97] Barros F.J. Modeling Formalisms for Dynamic Structure Systems, ACM
Transactions on Modeling and Computer Simulation, vol.7, nr. 4, 1997
[CoFloPo08]Cocan M., Florea I., Pop B. Modele i metode de optimizare combinatorial
i metaeuristic n cercetri operaionale, Editura Universitii Transilvania din Braov,
2008, ISBN 978-973-598-188-4
[Dev86] Devroye L., Non-Uniform Random Variate Generation, Springer-Verlag, New
York, 1986
[Flo00] Ion Florea, One Algorithmic Approach of Multi-Servers First-Come-First-Served
Queuing Systems. Analele Universitii Bucureti, Informatic, Anul XLIX 2000,
pag. 41-58
[Flo02] Ion Florea, One Algorithmic Approach of the Parallel Multi-Server Queuing
System of Head-of Line Type, Bulletin of the Transilvania University of Brasov, vol.
9(44), 2002, pag. 63-69
[Flo03a] Ion Florea, Algoritmi de simulare pentru sistemele de ateptare bazate pe
mprirea clienilor n clase de prioriti, Revista romn de informatic i automatic,
vol. 13, nr.2, 2003, pag. 1-8.
[Flo03b] Ion Florea, A Proposal Simulation Algorithm for Multi-Server Preemptive
Queuing Systems, Bulletin of the Transilvania University of Brasov, vol. 10(45), 2003,
pag. 37-46
[Flo04a] Ion Florea, A Simulation Algorithm for a Variable Number of Parallel Stations
Queuing System of Head -of - Line Type, Analele Universitii Bucureti, Informatic,
pag. 13-24, 2004
[Flo04b] Ion Florea, A Simulation Algorithm for Preemptive Multi-Server Queuing
System with a Variable Number of Parallel Working Stations, Studies in Informatics and
control, March 2004, vol. 13, no. 1, pag. 15-24.
[FloSa04] Ion Florea, Lucian Sasu The Super-Market Serving Clients in the Pay Desks
Area Simulation, The Proceedings of the Biennial International Symposium, Braov,
2004, pag. 32-33
[FloCa05] Ion Florea, Alexandru Carstea A Simulation Algorithm for Queuing Systems
with Parallel Working Stations Having ones own Queue for Every Station, Bulletin of
the Transilvania University of Brasov, vol. 12(47), 2005, pag. 115-123
[FloCa06a] Ion Florea, Alexandru Carstea A Simulation Algorithm for Queuing Systems
with Parallel Working Stations Having ones own Queue for Every Station with HOL
Serving Discipline, Bulletin of the Transilvania University of Brasov, vol. 13(48), pag.
47-54, 2006
[FloCa06a] Ion Florea, Alexandru Carstea A Simulation Algorithm for Queuing Systems
with Parallel Working Stations Having ones own Queue for Every Station with HOL
Serving Discipline, Bulletin of the Transilvania University of Brasov, vol. 13(48), pag.
47-54, 2006
[FloCa06b] Ion Florea, Alexandru Carstea An Alghoritmic Approach of the Queuing
Systems with Different Station Classes, Studies in Informatics and control, March 2006,
vol. 15, no. 4, pag. 391-402
[FloCa07] Ion Florea, Alexandru Carstea, A Simulation Algorithm for Preemptive
Queuing Systems with Parallel Working Stations Having ones own Queue for Every
Station,, Bulletin of the Transilvania University of Brasov, vol. 14(49), pag. 65-72, 2007
163

[GrHa98] Gross, D., Harris C. Foundamentals of Queuing Theory, John Wiley & Sons,
NewYork,1998.

[FloCoPo09] Ion Florea, Moise Cocan, Bogdana Pop Produse program n


optimizarea combinatorial i metaeuristica in cercetari operationale, Editura
Universitii Transilvania, Braov, 2009, ISBN 978-973-598-426-7
[Knu00] Donald Knuth, Arta programarii calculatoarelor, volumul 2 - Algoritmi
seminumerici , Editura Teora, Bucuresti, 2000
[KaDu99] Karian Z.A, Dudewicz E.J. Modern Statistical Systems and GPSS Simulation,
Second Edition, Computer Science Press Inc, 1999
[Tan95] Tanner M. Practical Queuing Analysis, McGraw-Hill Book Company, 1995
[Vd77] Vduva I. Modele de simulare cu calculatorul, Editura Tehnic, Bucuresti, 1977
[VStOd83] Vduva I., Stoica M., Odgescu I. Simularea proceselor economice, Editura
Tehnic, Bucuresti, 1983
[ZeiPrKim01] Zeigler B.P., Praehofer H., Kim T.G. Theory of Modelling and Simulation
Integrating Discrete Event and Continous Complex Dynamic Systems, Academic Press,,
New York, 2001
http://www.minutemansoftware.com/tutorial/tutorial_manual.htm
http://www.minutemansoftware.com/reference/reference_manual.htm

164

Rspunsuri/Indicaii de rezolvare a testelor de evaluare


Modulul 1
1. Funcia de repartiie a variabilei este:
0, daca x 0

F ( x) =
1
, daca x > 0, > 0, > 0
+ 1

a crei invers este: F-1(u)= (1 u )

2. Funcia de repartiie a variabilei este:


0, daca x (1,1)

1
F ( x) =
arcsin x + , daca x (1,1)

a crei invers este: F-1(u)=sin u

3. Funcia de repartiie a variabilei este:

F ( x) =

1
arctgx + ;

a crei invers este: F 1 (u ) = tg u


2

4. Se folosete metoda respingerii, considernd densitatea variabilei exponeniale (ca n


exemplul prezentat)

Unitatea de nvare M2.U1


1.b; 2.c; 3.a; 4.c; 5.d; 6.b; 7.d; 8.b; 9.c; 10.a; 11a.

Unitatea de nvare M2.U2


1.c; 2.c; 3.d; 4.b; 5.a; 6.d; 7.b; 8.b; 9.d; 10.d.

Unitatea de nvare M2.U3


1.c; 2.a; 3.c; 4.a; 5.d.

Unitatea de nvare M2.U4


1.a; 2.c; 3.b; 4.d; 5.b.

Unitatea de nvare M3.U1


1.d; 2.b; 3.d; 4.b; 5.a; 6.a; 7.c.

Unitatea de nvare M3.U2


1.a; 2.c; 3.d; 4.d; 5.b; 6.a; 7.c; 8.b.

Unitatea de nvare M3.U3


1.c; 2.c; 3.c; 4.c; 5.d; 6.b; 7.c; 8.a; 9.a; 10.b.

Unitatea de nvare M4.U1


1.c; 2.a; 3.c; 4.d; 5.b; 6.b; 7.a; 8.b.

Unitatea de nvare M4.U2


1.b; 2.a; 3.c; 4.a; 5.b; 6.d; 7.b; 8.d.

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