Sunteți pe pagina 1din 10

Academia de Studii Economice Facultatea de Cibernetic, Statistic i Informatic Economic Secia Cibernetic

Proiect
Tema proiecti:Simularea fuctionarii unei case de plati.

Bucureti 2005

FIR DE ASTEPTARE MONOCANAL

Aplicatie Cercetand din punct de vedere statistic , intervalul de timp dintre doua sosiri succesive ale clientilor la o casa de plati , s-a stabilit ca acestea sunt de natura poissoniana , cu media de 0.5 minute. Pe de alta parte , studiind timpul de servire a unei persoane de catre casierul de la casa de plati , s-a dedus ca acesta este o variabila aleatoare discreta ce urmeaza o lege de repartitie uniforma, iar durata de servire apartine intervalului (2,10) minute. La respectiva casa de plati , se lucreaza intr-un singur schimb. Ziua de lucru este de 8 ore . Sa se determine : 1. Timpul mediu de asteptarea unei persoane pentru a fi servita; 2. Timpul mediu cat sta casierul in asteptarea unei persoane pe care sa o serveasca; 3. Numarul mediu de persoane ce sosesc in cursul unei zile de lucru (8 ore) la casa respectiva. 4. Numarul mediu de unitati ce asteapta in sistem in cursul unei zile de lucru; Ipoteze de lucru: Functionar + coada de asteptare = sistem de asteptare; Ciclul de simulare = o zi de lucru de 8 ore (60*8=480); Se efectueaza 10 cicluri de simulare .Pentru fiecare iteratie determinandu-se: Timpul mediu de asteptare a unei persoane in sistem (coada de asteptare)in ciclul respectiv (in minute); Timpul mediu cat casierul asteapta o persoana pentru a o servi (in minute); Unitati existente in sistem; Modelul general in acest caz este: Se considera ca cererile sosesc independent una de alta si ca probabilitatea ca o cerere sa soseasca intr-un interval de timp constant t este proportional cu marimea acestui interval.

Sistemul de asteptare are urmatoarele caracteristici : Sosirile sunt: - intamplatoare; independente ; dintr-o populatie infinita; intervalul dintre doua sosiri succesive urmeaza o lege de repartitie cunoscuta; Servirile sunt : -intamplatoare ; independente; durata servirii urmeaza o lege de repartitie cunoscuta . Disciplina de servire este primul venit , primul servit(FIFO). Incrementul de timp este constant si egal cu 1. Algoritmul de simulare Ideea de baz a algoritmului const n efectuarea n fiecare perioad a urmtoarelor operaii: generarea intervalului de timp dintre dou sosiri succesive programarea unitilor din firul de ateptare programarea unitilor sosite construirea firului de ateptare calcularea timpilor de ateptare a unitilor calcularea timpilor de neutilizare a staiilor de lucru Semnificaiile variabilelor folosite n algoritm sunt urmtoarele: ts reprezinta intervalul dintre doua sosiri succesive (variabila aleatoare) nuanumarul de unitati (clienti)ce asteapta la un moment dat in sistem(la coada) tactimpul de asteptare cumulat tsc timpul cumulat de sosire a unui client ds durata de servire a unui client tnc timpul cumulat de nefolosire a casei; mnumarul de unitati intrate in sistem sssvariabila booleana care desemneaza starea casei: sss = 1 casa ocupata; sss= 0 casa libera; itimptimp curent imaxtimpul maxim pentru care se face simularea (orizontul de simulare) nc numarul de cicluri de simulare k indexul ciclului de simulare tma = tac/mtimpul mediu de asteptare a unei unitati in sistem intr-un ciclu de simulare tmn=tncm timpul mediu de nefolosire a ghiseului

stma suma timpilor medii de asteptare stmn suma timpilor medii de nefolosire a statiei (casei) smsuma numarului de unitati intrate in sistem mstma =stma/nc media timpilor medii de asteptare a unei unitati I sistem mstmn = stmn/nc media timpilor medii de nefolosire a statiei msm= numarul mediu de unitati intrate in sistem (numarul persoanelor ce sosesc in cursul unei zile de lucru la casa respectiva) nma = nma/(nc*imax) numrul mediu de uniti ce ateapt n sistem ntr-un interval curent; PROGRAM SURSA DELPHI Programul asociat problemei descrise este realizat cu ajutorul limbajului DELPHI .Pe discheta aferenta proiectului , programul sursa se numeste Monocanal.pas , iar fisierul text care insoteste rezultatele simularii poarta numele fir.dat . Programul foloseste o functie de generare a sirurilor de numere aleatoare cu o lege de repartitie poisson si uniforma , si , de asemenea , proceduri de editare a rezultatelor intrun tabel si de introducere a parametrilor modelului. Programul permite introducerea de la tastatura a parametrilor de sosire si de servire , a numarului de cicluri de simulare dorit , precum si orizontul de simulare. unit Monocanal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Spin, OleCtrls, SHDocVw; type TForm2 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Button2: TButton; se1: TSpinEdit; se2: TSpinEdit; Edit1: TEdit; Memo1: TMemo; Edit3: TEdit; Edit4: TEdit;

Edit5: TEdit; Label5: TLabel; Label6: TLabel; Label7: TLabel; GroupBox2: TGroupBox; Button3: TButton; WebBrowser1: TWebBrowser; se3: TSpinEdit; se4: TSpinEdit; Label4: TLabel; Label8: TLabel; Label9: TLabel; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; nc,k,itimp,imax,m,sm:integer; nua:integer; med1,l1,l2:real; tsc,tac,tnc,tma,tmn,ts,ds,sosiri,expon:real; nma,mstma,mstmn,msm,stma,stmn:real; sss:0..1; fis:textfile; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); function sosiri(c:real):real; var u:real; begin u:=random(1000)/1000; sosiri:=-1/c*ln(1-u); end;

function serv(a,b:real):real; var u:real; begin u:=random(1000)/1000; serv:=a+(b-a)*u end; begin assignfile(fis,'c:\fir.dat'); rewrite(fis); nc:=se1.value; imax:=se2.value; med1:=strtofloat(edit1.text); l1:=se3.value; l2:=se4.value; k:=1; while (k<=nc) do begin itimp:=0;nua:=0;sss:=0;m:=0;tsc:=0;tnc:=0;tac:=0;nma:=0; writeln(fis,'Ciclul de simulare:',k:2); writeln(fis,' ITIMP NUA TS DS M TSC TAC TNC ts:=int(sosiri(med1))+1; ds:=int(serv(l1,l2)); tsc:=tsc+ts; while (itimp<=imax) do begin if(itimp=tsc+1)then begin m:=m+1;nua:=nua+1;ts:=int(sosiri(med1))+1;nma:=nma+nua; tsc:=tsc+ts; end; if sss=0 then begin if nua=0 then tnc:=tnc+1 else begin sss:=1;nua:=nua-1;ds:=int(serv(l1,l2)); end end else begin if nua<>0 then tac:=tac+1; end; if ds>1 then

SSS ' );

ds:=ds-1 else begin ds:=0;sss:=0; end; writeln(fis,itimp:3,' ',nua:8,' ':8,ts:8:2,' ',ds:8:3,' ':2,m:3,' ,tsc:8:3,' ', tac:8:3,' ',tnc:8:3,'':4,sss); itimp:=itimp+1; end; '

tma:=tac/m; tmn:=tnc/m; writeln(fis,'----------------------------------------------------------------------------'); writeln(fis,'Unitati existent in sistem:',m:3); writeln(fis,'Timpul mediu de asteptare a unei persoane pentru a fi servita:',tma:5:2); writeln(fis,'Timpul mediu cat sta casierul in asteptarea unei persoane',tmn:5:2); writeln(fis,'-----------------------------------------------------------------------------'); stma:=stma+tma; stmn:=stmn+tmn; sm:=sm+m; k:=k+1; end; mstma:=stma/nc; mstmn:=stmn/nc; msm:=sm/nc; nma:=nma/(nc*imax); writeln(fis,'REZULTATELE FINALE'); writeln(fis,'Media timpilor medii de asteptare a unei persoane:',mstma:8:3,' minute' ); edit3.text:=floattostrf(mstma,ffFixed,8,3); writeln(fis,'Media timpilor medii cat sta casierul :',mstmn:8:3,'minute'); edit4.text:=floattostrf(mstmn,ffFixed,8,3); writeln(fis,'Numarul mediu de persoane intrate in sistem:',msm:8:3); edit5.text:=floattostrf(msm,ffFixed,8,3); writeln(fis,'Numarul mediu de unitati ce asteapta in sistem:',nma:8:3); edit2.text:=floattostrf(nma,ffFixed,8,3); closefile(fis); memo1.Lines.LoadFromFile('c:\fir.dat'); PageControl1.ActivePageIndex:=1; end; procedure TForm2.Button2Click(Sender: TObject); begin

close(); end; procedure TForm2.FormCreate(Sender: TObject); var Flags: OLEVariant; begin flags:=0; WebBrowser1.Navigate(WideString(GetCurrentDir+'\monocanal.htm'), Flags, Flags); end; procedure TForm2.Button3Click(Sender: TObject); begin PageControl1.ActivePageIndex:=2; end; end. Rezultate: Media timpilor de sosire: 0.5; Limita inferioara a duratei de servire: 2 ; Limita inferioara a duratei de servire: 10 ; Orizontul de simulare (in ore):8 Numarul ciclurilor de simulare:10 SIMULAREA UNUI FIR DE ASTEPTARE MONOCANAL Ciclul de simulare: 1 Unitati existente in sistem:201 Timpul mediu de asteptare a unei persoane pentru a fi servita: 1.92 Timpul mediu cat sta casierul in asteptarea unei persoane 0.01 Ciclul de simulare: 2 Unitati existente in sistem:180 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.18 Timpul mediu cat sta casierul in asteptarea unei persoane 0.01 Ciclul de simulare: 3 Unitati existente in sistem:196 Timpul mediu de asteptare a unei persoane pentru a fi servita: 1.90 Timpul mediu cat sta casierul in asteptarea unei persoane 0.05 Ciclul de simulare: 4

Flags,

Flags,

Unitati existent in sistem:188 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.07 Timpul mediu cat sta casierul in asteptarea unei persoane 0.03 Ciclul de simulare: 5 Unitati existent in sistem:187 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.07 Timpul mediu cat sta casierul in asteptarea unei persoane 0.02 Ciclul de simulare: 6 Unitati existent in sistem:186 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.10 Timpul mediu cat sta casierul in asteptarea unei persoane 0.02 Ciclul de simulare: 7 Unitati existent in sistem:192 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.05 Timpul mediu cat sta casierul in asteptarea unei persoane 0.03 Ciclul de simulare: 8 Unitati existent in sistem:221 Timpul mediu de asteptare a unei persoane pentru a fi servita: 1.79 Timpul mediu cat sta casierul in asteptarea unei persoane 0.01 Ciclul de simulare: 9 Unitati existent in sistem:199 Timpul mediu de asteptare a unei persoane pentru a fi servita: 1.96 Timpul mediu cat sta casierul in asteptarea unei persoane 0.02 Ciclul de simulare: 10 Unitati existent in sistem:193 Timpul mediu de asteptare a unei persoane pentru a fi servita: 2.02 Timpul mediu cat sta casierul in asteptarea unei persoane 0.02 REZULTATELE FINALE Media timpilor medii de asteptare a unei persoane: 2.007 minute Media timpilor medii cat sta casierul : 0.022 minute Numarul mediu de persoane intrate in sistem: 194.300 Numarul mediu de unitati ce asteapta in sistem: 2.248 INTERPRETAREA REZULTATELOR Din datele rezultate n urma procesului de simulare se constat c numrul mediu de uniti servite este de 194.300 ceea ce dovedete c sistemul este bine solicitat.

Numrul mediu de uniti care ateapt n sistem este mare, pentru 9 din cele 10 cicluri de simulare obinndu-se valoarea 2.248 ceea ce arat c sistemul nu funcioneaz la parametri optimi si este necesar instalarea unei alte case de lucru. Media timpilor medii de ateptare a unei uniti este de asemenea mare, de 2.007 minute ceea ce ne arat ineficiena ridicat a sistemului. Media timpilor de nefolosire a staiilor este de 0.022 minute ceea ce ne indica faptul ca aceasta casa este foarte ocupa. Din toate cele de mai sus rezult c sistemul este ineficient i sunt necesare modificri in sistem prin instalarea unei noi case de plati..

Pentru exemplificarea programului , am realizat 10 cicluri de simulare , cu un orizont de simulare de 8 ore (o zi de lucru). Dupa incheierea celor zece cicluri de simulare , se observa ca o persoana sta la coada 2.007 minute , iar casierul astepta in medie o persoana pe care sa o serveasca 0.022 minute. Numarul mediu de persoane intrate in sistem (coada de asteptre ) a fost de 194.3 .Pentru o precizie mai mare a programului este de dorit sa se faca un numar mai mare de cicluri de simulari.