Academia de Studii Economice Facultatea de Cibernetică, Statistică şi Informatică Economică Secţia Cibernetică

Proiect
Tema proiecti:Simularea fuctionarii unei case de plati.

Bucureşti 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 următoarelor operaţii: • generarea intervalului de timp dintre două sosiri succesive • programarea unităţilor din firul de aşteptare • programarea unităţilor sosite • construirea firului de aşteptare • calcularea timpilor de aşteptare a unităţilor • calcularea timpilor de neutilizare a staţiilor de lucru Semnificaţiile variabilelor folosite în algoritm sunt următoarele: ts ⇒ reprezinta intervalul dintre doua sosiri succesive (variabila aleatoare) nua⇒numarul de unitati (clienti)ce asteapta la un moment dat in sistem(la coada) tac⇒timpul 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; m⇒numarul de unitati intrate in sistem sss⇒variabila booleana care desemneaza starea casei: sss = 1 ⇒ casa ocupata; sss= 0 ⇒ casa libera; itimp⇒timp curent imax⇒timpul maxim pentru care se face simularea (orizontul de simulare) nc ⇒numarul de cicluri de simulare k ⇒ indexul ciclului de simulare tma = tac/m⇒timpul 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) sm⇒suma 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)⇒ numărul mediu de unităţi ce aşteaptă î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ă numărul mediu de unităţi servite este de 194.300 ceea ce dovedeşte că sistemul este bine solicitat.

Numărul mediu de unităţi care aşteaptă în sistem este mare, pentru 9 din cele 10 cicluri de simulare obţinându-se valoarea 2.248 ceea ce arată că sistemul nu funcţionează la parametri optimi si este necesară instalarea unei alte case de lucru. Media timpilor medii de aşteptare a unei unităţi este de asemenea mare, de 2.007 minute ceea ce ne arată ineficienţa ridicată a sistemului. Media timpilor de nefolosire a staţiilor 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 modificări 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.

Sign up to vote on this title
UsefulNot useful