Documente Academic
Documente Profesional
Documente Cultură
Modela de Simulare CoModela - de - Simulare - Computationalamputationala Florea I
Modela de Simulare CoModela - de - Simulare - Computationalamputationala Florea I
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
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.
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.
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.
0, daca x a
x a
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
(i )
+ bn ( p q ) mod 2
(i )
Pentru ca generatorul s aib proprieti statistice bune, parametrii p i q se aleg astfel nct
polinomul
+ 1 s fie prim n
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
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]
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.
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
y = 1 e x e x = 1 y x = ln (1 y ) x = 1 ln( 1 y )
deci F
(u ) =
P1. Repeat
U:=RND;
If U > 0.00001 {Altfel nu se poate calcula logaritmul}
then
X:=
( 1 )(ln U )
x1 ...xm
;
p1 ... pm
X:
p
i =1
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
F0 = 0
x
F
.......
1
1
........
x
F
i 1
x x
F F
i +1
i 1
i +1
........
........
x
F
Fie Fi= p ; 1 i m.
=1
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
1-y= e
F-1(u)= [ ln(1 u )] .
1
13
ln(1-y)=-x
then
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
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
14
x + k 1 k x
p q ; x=0,1,2
x
n
x
f(x)= p q
x
n x
; x=0,1,,n.
B .
i
i =1
A
B
, q = . Presupunem ca n este fixat. Numarul X al bilelor albe
N
N
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
Justificare: pi 1 =
pi=
N A i-1
, unde NA
N i-1
i-1
N i 1 p i 1 S
N i 1 1
n
n
P( X = k ) p k (1 p ) n k = 1
k n n
k
nk
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,...
(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 <
=1
Dar =
j +1
=1
Deci
ln U 1 <
=1
U
=1
j +1
j +1
=1
=1
=1
j +1
>
=1
17
; 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.
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
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
f (x)
=
cg ( x )
2e
( x 1) 2
2
U e
2e
deci
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
p F ( x).
i
i =1
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.
F ( x) =
1
, daca x > 0, > 0, > 0
+ 1
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
3. Repartiia Cauchy
Indicaie: Funcia de repartiie a variabilei este:
F ( x) =
arctgx + ;
2
21
22
24
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
(t ) n e t
. Deci:
n!
probabilitatea s nu aib loc nici o sosire pe un interval t, va fi e t ;
1 (e t
=
probabilitatea
de
avea
va
fi
( .t ) 2
+ ... = O ((t ) 2 ) .
2
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
P0 (t + t ) P0 (t )
O( t )
= P1 (t ) P0 (t ) +
t
t
= 1 , adic soluiile
n=0
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 ,
p n +1 =
p n , ()n 0
(2.1.5)
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)
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)
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)
( )
(2.1.12)
E[WT ]
1
Ie =
=
=
=
1
E[ ST ]
1
(2.1.13)
(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
31
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
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
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
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)
d) t + 2O( t ) .
39
.
2
d)
.
c)
2
.
b)
6. Lungimea medie a cozii este dat de:
n
.
1
2
b)
.
1
2n
.
1
.
d)
1
a)
c)
c)
2
1
.
d)
.
8. Timpul mediu de ateptare n coad este dat de:
b)
a)
b)
.
( )
9. Dac AtimeCtime are loc :
c)
d)
.
( )
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
42
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)
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
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)
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
p c + r +1 =
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
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
Dac notm cu * =
n=c c
(2.2.7)
c 1
c
n
formula precedent se mai poate scrie p 0 =
+
*
n = 0 n!
c! 1
(2.2.8)
n!
pn = c
* n c p , daca n c
0
c!
(2.2.9)
( )
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 *
45
(2.2.10)
LQ = p 0
(c 1)!c (c )2
(2.2.11)
(2.2.12)
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
, 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
+
+
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
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
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
51
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
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
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.
.
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},
b).
d).
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
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
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
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.
72
73
74
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
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
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
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.
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.
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
atunci
p k < pl ,
atunci
qk < ql ,
pi = 1 .
i =1
ii)
Daca
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
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).
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
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
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 } ).
d ij
Si
d ij
Si
< 1 , ceea ce
ik
De asemenea, avem
p
j = i1
ik
j = i1
d ij
Si k 1
=
= 1.
k 1 k 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
82
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 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
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;
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
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
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.
88
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
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
91
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
93
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
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
FACILITY ENTRIES UTIL. AVE.TIME AVAIL. OWNER PEND INTER RETRY DELAY
XRMACH
50
0.432
9.849
1
0
0
0
0
0
94
ENTRIES AVL.
100
1
AVE.(-0) RETRY
0.000
0
0.000
0
0.000
0
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
97
STO P
DA
NU
TC? 0
generare de
d) Seize.
98
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
100
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
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.
103
1 ( x )
, daca x 0
e
f ( x) =
0, altfel
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
AVE.(-0) RETRY
1.926
0
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
AVE.(-0) RETRY
76.416
0
1.877
0
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
SIMULATE
STORAGE
5
GENERATE (EXPONENTIAL(1,0,2))
QUEUE COADA
ENTER STATIE,1
DEPART COADA
ADVANCE (EXPONENTIAL(1,0,5))
LEAVE STATIE
TERMINATE 1
ENTRIES AVL.
10005
1
AVE.(-0) RETRY
1.908
0
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.
X$RATA,5/X$COST,1000
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.
108
Interval 1
Interval 2
B
Interval 3
B+C
..........
B+2C
Interval D
. B+(D-2)C
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.
d) operandul B.
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.
111
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
REP
SEIZE SCULE
REP
SEIZE SCULE
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.
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
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
LS2/LS$INTR/LS$FANION
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
BLOCKS
6
FACILITIES
0
ENTRIES AVL.
45
1
118
STORAGES
1
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
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
AVE.(-0) RETRY
0.541
0
0.393
0
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
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
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
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
d) ADVANCE
d) ADVANCE
d) Facilitate
parametrii
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
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
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
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.
126
Z i , j {((i, ni ), ( j , n j )) / i D {DN }, j I i , ni N iY , j N Yj }
128
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:
i D
componentelor
influenate j, j I i* ;
'
'
( 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)
cu
'
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
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
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:
componentelor; I i este
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
(4.1.10)
'
'
'
'
'
'
'
'
'
{ M i },{I i },{Z i, j }, select sunt definite peste D n loc de D ; {Z i, j } reprezint acum noile
'
'
'
'
'
(4.1.13)
'
dac = i* , unde: s = int t ( ( X , Y , D ,{ M i },{I i },{Zi, j }, select , )) =
'
'
'
'
A = {a1 ,.., a k } = D D
'
'
'
componentele adugate i
R = {r1 ,.., rk } = D D
'
componentele scoase.
*
Funcia, ext
: D* Y * S S , Y * =
UY
iD*
(4.1.14)
*
ext
( i * , y * , s ) = (( s ' ,0 ),..,( si , ei + ta ( s )),..,( sa ,0 ),..,( sa ,0 ))
1
(4.1.15)
'
'
'
'
'
'
x = Z i* , ( y * ) ,
133
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
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
, 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
'
'
'
'
(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
(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 ,
136
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.
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
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:
'
'
'
'
'
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
(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.
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
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
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
(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
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.
142
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.
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.
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.
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
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
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.
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
tl
( i,t) ,( x ,t)
s a u (* ,t)
tn
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 )
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
:= Z d * , j ( y d * );
150
done:=true;
end
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
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
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.
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
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.
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
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
156
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
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 S:G
Model Atomic G
Simulator S:T
Model Atomic T
Simulator S:Pn
Model atomic Pn
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;
160
S ne reamintim...
d) cordonatorul-reea
c) circul de sus n jos i
corespunde
efecturii
unei
tranziii interne
6. Declanarea simulrii:
a) se face de coordonator prin
transmiterea
unui
i-mesaj
simulatorului care-i este imediat
subordonat
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
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.
164
F ( x) =
1
, daca x > 0, > 0, > 0
+ 1
1
F ( x) =
arcsin x + , daca x (1,1)
F ( x) =
1
arctgx + ;