Sunteți pe pagina 1din 6

Simularea …relor de aşteptare

cu S staţii paralele
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.

Model de simulare pentru un sistem de aşteptare cu S staţii paralele


Consider¼ am c¼a duratele serviciilor în cele S staţii sunt variabile aleatoare cu
funcţii de repartiţie diferite.Presupunem c¼ a ‡uxul sosirilor este aleator:
Ordinea servirii este ordinea intr¼ arii în sistem. Dac¼ a la intrarea în sistem un
client g¼ aseşte staţii libere, atunci ocup¼ a instantaneu una dintre acestea. Dac¼ a
toate staţiile sunt ocupate, atunci se aşeaz¼ a la coad¼a. Când se elibereaz¼ a o
staţie, clientul de la coad¼ a care urmeaz¼ a, o ocup¼ a instantaneu.
Lista variabilelor modelului este urm¼
atoarea:
- intervalul de timp dintre dou¼
a sosiri consecutive;
(j) - durata unui serviciu la staţia j, 1 j S;
tf - timpul de aşteptare al unui client în …rul de aşteptare;
tl - timpul curent de lenevire al staţiei care începe un serviciu;
ms - momentul sosirii ultimului client (suma intervalelor de timp de sosire);
mp(j) - momentul plec¼
arii din staţia j a ultimului client;
mpmin - cel mai mic dintre mp (j), 1 j S;
l - staţia cu cel mai mic mp(j), adic¼
a mpmin = mp(l);
N - num¼
arul de sosiri simulate care trebuie s¼
a …e mult mai mare decât S;
I - contor care num¼
ar¼
a sosirile;
sds(j) - suma duratelor de serviciu ale staţiei j;
ttf (j) - suma aştept¼
arilor clienţilor serviţi de staţia j;
ttl(j) - timpul total de lenevire al staţiei j;
dif = ms mpmin:
În …g. 1 se d¼ a schema logic¼
a a modelului de simulare . În blocul (1) se citesc
datele: N , parametrii variabilelor aleatoare de intrare şi (j); j = 1; S şi se
fac iniţializ¼
arile. Se presupune c¼a la momentul iniţial exist¼
a S clienţi în sistem.
Deci condiţiile iniţiale sunt:

1
ms = 0;
sds(j) = ttf (j) = ttl(j) = 0; 1 j S:

În blocul (2) se d¼ a lui I valoarea S. În bucla (3) - (4) se simuleaz¼ a servirea


primilor S clienţi, atribuind valori vectorilor mp(j) - momentul plec¼ arii din
staţia j a primului client servit de ea şi se reactualizeaz¼a timpul total de funcţionare
al staţiei j. Blocul (5) stabileşte staţia l care va efectua serviciul urm¼ ator,
iar blocul (6) num¼ ar¼
a clientul care urmeaz¼ a s¼a soseasc¼a. Dac¼a I N atunci
înseamn¼ a c¼a nu au fost înc¼ a simulate N sosiri şi se execut¼ a blocul (8) care
genereaz¼ a o nou¼ a sosire, reactualizeaz¼ a momentul ultimei sosiri şi calculeaz¼ a
diferenţa dif. Cu ajutorul semnului variabilei dif (blocul 9) se stabileşte dac¼ a
clientul sosit aşteapt¼a, caz în care se execut¼ a blocul (10) sau este servit imediat,
caz în care se execut¼ a blocul (11) (staţia l a lenevit în intervalul de timp de
lungime dif ). În urm¼ atorul bloc se genereaz¼ a un nou serviciu şi se actualizeaz¼a
timpul total de funcţionare al staţiei l. Apoi se actualizeaz¼ a momentul plec¼ arii
din staţia l a ultimului client şi se trece din nou la blocul (5).
.

Programul în MATLAB
S=input(’Introduceţi num¼arul de staţii S:’);
tetam=input(’Introduceţi durata medie dintre dou¼a sosiri consecutive =’);
for j=1:S
t=input(’Introduceţi durata medie de servire a staţiei j =’);
taum(j)=t
sds(j)=0;
ttf(j)=0;
ttl(j)=0;
end
ms=0;
I=S;
for j=1:S
tau(j)=exprnd(taum(j));
mp(j)=tau(j);
sds(j)=sds(j)+tau(j);
ncs(j)=1;
end
while (I<N)
[mpmin,l]=min(mp);
I=I+1;
teta=exprnd(tetam);
ms=ms+teta;
dif=ms-mpmin;

2
Start

(1)
Citşte parametrii de intrare:
ms=0, mp(j)=0, 1 ≤ j ≤ S
sds(j)=ttf(j)=ttl(j)=0

(2)
I=S
(3)
Do j=1, S

(4)
Generează τ(j)
mp(j) = τ(j)
sds(j) = sds(j)+τ(j)

A
(5)
mpmin=min{mp(j)}
1≤ j ≤ S
mpmin=mp(l)
(6)
I=I+1
(7)
Calculează
I>N Da şi listează
rezultatele
Nu (8)
Generează θ
ms=ms+ θ Stop
dif=ms-mpmin

(9)
<0 >0
dif
(10) (11)
tf=-dif tl=dif
ttf(l)=ttf(l)+tf ttl(l)=ttl(l)+tl

Generează τ(l)
sds(l) = sds(l)+τ(l)

3
mp(l)=mpmin+ τ(l)

Figura 1
if (dif>0)
tl=dif;
ttl(l)=ttl(l)+tl;
tf=0;
else
tf=-dif;
tl=0;
ttf(l)=ttf(l)+tf;
end
tau(l)=exprnd(taum(l));
sds(l)=sds(l)+tau(l);
mp(l)=mpmin+tau(l)+tl;
ncs(j)=ncs(j)+1;
end
disp(’*****************************************************’)
disp(’Num¼arul clienţilor serviţi de …ecare staţie este’)
ncs
disp(’*****************************************************’)
disp(’Suma duratelor de servire pentru …ecare staţie este’)
sds
disp(’****************************************************’)
disp(’Timpul total de aşteptare la …ecare staţie este’)
ttf
disp(’***************************************************’)
disp(’Timpul total de lenevire a …ec¼arei staţii este’)
ttl
disp(’****************************************’)
disp(’Durata medie de aşteptare a unui client este’)
tbarf=sum(ttf )/N

Programul a fost salvat sub numele Sstatii.m


Validarea modelului

Consider¼am c¼a durata dintre dou¼a sosiri consecutive şi duratele serviciilor
în cele S staţii sunt variabile aleatoare exponenţiale negative.
1. Date de intrare:
S= 2 staţii
tetam =10 min
taum(j)= 15 min, j=1:S
N = 100000
Date de ieşire:
tbarf ~tbarfcalc=19min 17sec
2. Date de intrare:

4
S= 3 staţii
tetam =10 min
taum(j)= 15 min, j=1:S
N = 100000
Date de iesire:
tbarf ~tbarfcalc= 2 min 22sec

Apelarea programului
>> clear
>> Sstatii
Introduceţi num¼arul de sosiri simulate N:100000
Introduceţi num¼arul de staţii S:2
Introduceţi durata medie dintre dou¼a sosiri consecutive =10
tetam =
10
Introduceţi durata medie de servire a staţiei =15
taum =
15
taum =
15 15
*****************************************************
Suma duratelor de servire pentru …ecare staţie este
sds =
1.0e+005 *
7.5339 7.5203
****************************************************
Timpul total de aşteptare pentru …ecare staţie este
ttf =
1.0e+005 *
9.7736 9.6691
***************************************************
Timpul total de lenevire pentru …ecare staţie este
ttl =
1.0e+005 *
2.4229 2.4365
****************************************
Durata medie de aşteptare a unui client este
tbarf =
19.4427

Simularea unui sistem de aşteptare cu priorit¼


aţi

5
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 priori-
tate.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
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 .
La generarea lui clientul se aşeaz¼ a în coada Q1 sau Q2 corespunz¼ atoare
priorit¼
aţii. 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.

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