Sunteți pe pagina 1din 6

Simularea …relor de aşteptare

Studiul comport¼ arii în timp a unor sisteme în evoluţia c¼ arora intervin şi
elemente aleatoare se poate face cu ajutorul calculatoarelor. Pentru aceasta,
sistemului real i se asociaz¼a un model de simulare care este folosit apoi pentru
a produce, prin intermediul calculatorului, succesiunea cronologic¼ a de st¼
ari prin
care va trece sistemul, considerându-se dat¼a starea sa iniţial¼
a.
Modelele de aşteptare mai complicate nu au soluţii analitice. De exemplu,
sistemele de servire cu un num¼ ar mare de staţii cu o topologie complex¼ a, cu
repartiţiile timpilor de sosire şi/sau de servire de un tip complicat (gamma,
Weibull, 2 ; amestecuri de repartiţii) sau sisteme cu priorit¼ aţi. Pentru astfel
de situaţii se recomand¼ a simularea digital¼a. În informatic¼ a, termenul a fost
introdus de John von Neumann.
Simularea digital¼a se poate folosi cu succes la proiectarea sistemelor de
aşteptare, f¼acând experienţe pe model cu diferiţi parametri de intrare. La con-
struirea unui model de simulare, partea cea mai di…cil¼ a este procedeul de ”a
mişca”sistemul în timp astfel încât s¼ a nu se ajung¼a la situaţia în care diferitele
elemente ale sistemului s¼ a parcurg¼ a intervale diferite de timp. De aceea este
necesar¼ a introducerea în modelul de simulare a unei variabile numit¼ a ceasul
simul¼arii care s¼a m¼asoare scurgerea timpului real în care se simuleaz¼ a sistemul,
cu scopul de a menţine ordinea corect¼ a în timp a evenimentelor. Aceast¼ a vari-
abil¼a ia la început valoarea zero, apoi este incrementat¼ a la …ecare pas al proce-
sului de simulare.
În mediul Matlab, în Statistics Toolbox exist¼a generatori pentru 20 de tipuri
de variabile aleatoare: exponenţiale negative (exprnd), Poisson (poissrnd) ,de
tip gamma (gamrnd) şi beta (betarnd), normale (normrnd), binomial¼a (binornd)
, 2 (chi2rnd), etc.
Toţi aceşti generatori folosesc generatorul de numere pseudoaleatoare (de dis-
tribuţie uniform¼a) random. Codul acestor funcţii Matlab se poate tip¼ ari cu
comanda
type_ function_ name.
Codul se poate redenumi şi modi…ca pentru o aplicaţie proprie.

Simularea unui sistem de aşteptare cu priorit¼


aţi

Modelele în care disciplina de servire se stabileşte dup¼ a criterii care nu iau în


considerare ordinea intr¼ arii clienţilor în sistem, se numesc modele cu prioritate.
Clienţii sunt împ¼arţiţi în clase de priorit¼ aţi. În cadrul aceleiaşi clase clienţii sunt
serviţi în ordinea FIFO ("primul sosit-primul servit"). Clienţii pot sosi în sistem
dup¼a aceeaşi repartiţie sau dup¼ a repartiţii ale timpului între sosiri diferite.
Presupunem c¼ a avem dou¼ a clase: prioritatea 1 este mai puternic¼ a decât
prioritatea 2. Se cunosc probabilit¼ aţile p1 şi p2 cu care sosesc cele dou¼ a tipuri
de clienţi. Presupunem c¼ a timpul de intersosire i al clienţilor de prioritate i are

1
repartiţia Fi (x); i = 1; 2:Atunci timpul de intersosire al clienţilor (amestecaţi)
este o compunere discret¼ a a celor dou¼ a variabile 1 şi 2 adic¼a funcţia sa de
repartiţie este de forma:
F (x) = p1 F1 (x)+p2 F2 (x); unde p1 + p2 = 1:
Amestecarea discret¼ a poate … interpretat¼a astfel:
= i cu probabilitatea pi ; i = 1; 2:
Simularea timpului de intersosire se face astfel:
Generaz¼a un indice i cu repartiţia discret¼a:

1 2
I: ; p1 + p2 = 1:
p1 p2
Genereaz¼a i având funcţia de repartiţie Fi (x);
:= i .
Presupunem c¼ a dispunem de metode de generare a variabilelor i .
Schema logic¼ a din …gur¼ a se modi…c¼
a astfel: la generarea lui în blocul 2
clientul se aşeaz¼
a în coada Q1 sau Q2 corespunz¼ atoare priorit¼
aţii. În blocul 4
se simuleaz¼ a timpul de servire conform priorit¼aţii celei mai mari dac¼ a Q1 este
nevid¼a sau priorit¼ aţii mai mici dac¼
a Q1 este vid¼ a. Se pot calcula timpii de
aşteptare în funcţie de priorit¼
aţi.

Simularea unui sistem de aşteptare cu o staţie


Se vor folosi urm¼
atoarele notaţii:
- intervalul de timp (aleator) dintre dou¼a sosiri consecutive;
- durata (aleatoare) a unui serviciu;
tf - durata de aşteptare la coad¼a a clientului care urmeaz¼a s¼a …e servit;
tl - timpul de neocupare (lenevire) a staţiei de servire de la terminarea ul-
timului serviciu la începerea urm¼atorului serviciu;
ttf - durata total¼a de aşteptare a tuturor clienţilor;
ttl - durata total¼a de neocupare (lenevire) a staţiei de serviciu;
N - num¼arul total de servicii simulate;
I - contor care num¼ar¼a serviciile.
Repartiţiile variabilelor aleatoare şi se presupun cunoscute iar para-
metrii lor sunt date de intrare, împreun¼a cu num¼ arul total de servicii simulate
N . Celelalte sunt variabile aleatoare de ieşire şi cu ajutorul lor se pot calcula
urm¼atoarele valori medii:
-durata medie de aşteptare a unui client:
ttf
tf = ;
N
-durata medie de lenevire a staţiei de servire de la terminarea unui serviciu la
începerea urm¼atorului serviciu:
ttl
tl = :
N

2
Presupunem c¼ a pentru variabilele aleatoare şi dispunem de subrutine de
generare care pot … apelate de programul de simulare.
În schema logic¼ a, în primul bloc se fac iniţializ¼ arile şi se citesc valorile para-
metrilor repartiţiilor variabilelor aleatoare şi : Blocul (2) simuleaz¼ a venirea
unui client. Blocul (3) calculeaz¼ a timpul de sosire ajustat. Apoi în blocul (4) se
genereaz¼a un serviciu (m¼ arindu-se contorul I cu o unitate). Aceast¼ a durat¼a
de serviciu se compar¼ a cu timpul de sosire ajustat, în blocul (5). Dac¼ a >
atunci staţia de serviciu este ocupat¼ a, astfel încât în blocul (6), se ia timpul
de lenevire al staţiei nul, se calculeaz¼ a timpul de aşteptare al clientului care
urmeaz¼ a s¼
a …e servit primul şi se adun¼ a acest timp, la timpul total de aşteptare.
Dac¼ a dimpotriv¼a ; staţia este neocupat¼ a şi atunci în blocul (7) se ia timpul
de aşteptare al clientului ce va … servit primul egal cu zero, se determin¼ a timpul
de lenevire al staţiei şi se adun¼ a acest timp la timpul total de lenevire. În blocul
(8) se decide dac¼ a simularea se termin¼ a sau nu, iar în blocul (9) se calculeaz¼ a
parametrii de ieşire.

Programul în MATLAB
n=input(’Introduceti numarul de serviri simulate–> N=’)
lambda=input(’Introduceti nr. mediu de sosiri in unitatea de timp, lambda=’)
miu=input(’Introduceti nr. mediu de serviri in unitatea de timp, miu=’)
ttf=0;
ttl=0;
tf=0;
i=0;
while(i<=n)
teta=exprnd(1/lambda); %generare teta
teta=teta-tf;
tau=exprnd(1/miu);%generare tau
i=i+1;
if (tau<teta)
tl=teta-tau;
ttl=ttl+tl;
tf=0;
elseif (tau>teta)
tf=tau-teta;
tl=0;
ttf=ttf+tf;
else
tl=0;
tf=0;
end
end
disp(’****************************************’)
disp(’Durata medie de lenevire a staţiei este ’)

3
4

Figure 1:
tbarl=ttl/n
disp(’****************************************’)
disp(’Durata medie de aşteptare a unui client este ’)
tbarf=ttf/n
disp(’****************************************’)
disp(’Durata medie de asteptare calculata este’)
tbarfcalc=1/(miu-lambda)-1/miu
disp(’****************************************’)
Programul a fost salvat sub numele Statie.m
Validarea modelului

1. Date de intrare:
lambda =5 sosiri / or¼a
miu =10 serviri / or¼a
N = 100000
Date de iesire:
tbarf ~tbarfcalc=6 minute
2. Date de intrare:
lambda =30 sosiri / or¼a
miu =40 serviri / or¼a
N = 100000
Date de iesire:
tbarf ~tbarfcalc= 4.5 minute
Apelarea programului
Introduceţi num¼arul de serviri simulate–> N=100000
n=
100000
Introduceţi lambda=30
lambda =
30
Introduceţi miu=40
miu =
40
****************************************
Durata medie de lenevire a staţiei este
tbarl =
0.0082
****************************************
Durata medie de aşteptare a unui client este
tbarf =
0.0761
****************************************

5
Durata medie de aşteptare calculat¼a
tbarfcalc =
0.0750
****************************************

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