Sunteți pe pagina 1din 123

Gheorghe BARBU

Maria MIROIU

TEHNICI
DE
SIMULARE

2012

CUPRINS
Prefa
Capitolul I. SISTEME, MODELE, SIMULARE

2
4

1.1Generaliti despre sisteme, modele, simulare


1.1.1 Sisteme
1.1.2 Modele
1.1.3 Simulare
1.1.4 Tipuri de modele de simulare
1.2Descrierea modelelor de simulare
1.2.1 Etapele realizrii uni model de simulare
1.2.2 Ceasul simulrii
Capitolul II. SIMULAREA NUMERELOR ALEATOARE

4
4
5
6
9
12
13
16
18

2.1Numere aleatoare uniforme. Procedee de generare


2.2Simularea numerelor aleatoare uniforme
2.2.1 Metoda ptratului din mijloc
2.2.2 Metode congrueniale
Capitolul III. SIMULAREA VARIABILELOR ALEATOARE

18
20
23
23
25

3.1Metoda invers
3.2Metoda respingerii
3.3Metoda compunerii
3.4Alte metode de simulare
3.5Metode particulare
Capitolul IV. SIMULAREA VECTORILOR ALEATORI

25
29
31
34
38
47

4.1Generarea vectorilor aleatori prin metoda invers


4.2Generarea vectorilor aleatori avnd repartiie uniform
4.3Generarea vectorilor aleatori avnd repartiie Dirichlet
4.4Generarea vectorilor aleatori avnd repartiie multinomial
4.5Generarea vectorilor aleatori avnd repartiie normal
Capitolul V. APLICAII ALE SIMULRII

47
48
53
56
57
59

5.1Calculul integralelor multiple prin Metoda Monte Carlo


5.2Estimarea numrului prin Metoda Monte Carlo
5.3Simularea unor procese de stocare
5.4Simularea unor procese de ateptare
5.5Simularea fiabilitii
Anex IMPLEMENTRI C/C++

59
66
67
73
77
88

Bibliografie

100

PREFA

Lucrarea
de
fa
a
fost
elaborat
n
cadrul
Proiectului
POSDRU/56/1.2/S/32768, coordonat de Ministerul Educaiei, Cercetrii, Tineretului
i Sportului, intitulat: Formarea cadrelor didactice universitare i a studenilor n
domeniul utilizrii unor instrumente moderne de predare-nvare-evaluare pentru
disciplinele matematice, n vederea crerii de competene performante i practice
pentru piaa muncii.
Finanat din Fondul Social European i implementat de ctre Ministerul
Educaiei, Cercetrii, Tineretului i Sportului, n colaborare cu The Red Point, Oameni
i Companii, Universitatea din Bucureti, Universitatea Tehnic de Construcii din
Bucureti, Universitatea Politehnica din Bucureti, Universitatea din Piteti,
Universitatea Tehnic Gheorghe Asachi din Iai, Universitatea de Vest din
Timioara, Universitatea Dunrea de Jos din Galai, Universitatea Tehnic din ClujNapoca, Universitatea 1 Decembrie 1918 din Alba-Iulia, proiectul contribuie n mod
direct la realizarea obiectivului general al Programului Operaional Sectorial de
Dezvoltare a Resurselor Umane POSDRU i se nscrie n domeniul major de
intervenie 1.2 Calitate n nvmntul superior.
Proiectul are ca obiectiv adaptarea programelor de studii ale disciplinelor
matematice la cerinele pieei muncii i crearea de mecanisme i instrumente de
extindere a oportunitilor de nvare.
Evaluarea nevoilor educaionale obiective ale cadrelor didactice i studenilor
legate de utilizarea matematicii n nvmntul superior, masterate i doctorate
precum i analizarea eficacitii i relevanei curriculelor actuale la nivel de
performan i eficien, n vederea dezvoltrii de cunotine i competene pentru
studenii care nva discipline matematice n universiti, reprezint obiective
specifice de interes n cadrul proiectului. Dezvoltarea i armonizarea curriculelor
universitare ale disciplinelor matematice, conform exigenelor de pe piaa muncii,
elaborarea i implementarea unui program de formare a cadrelor didactice i a
studenilor interesai din universitile partenere, bazat pe dezvoltarea i armonizarea
de curriculum, crearea unei baze de resurse inovative, moderne i funcionale pentru
predarea-nvarea-evaluarea n disciplinele matematice pentru nvmntul
universitar sunt obiectivele specifice care au ca raspuns materialul de fa.
Formarea de competene cheie de matematic i informatic presupune crearea
de abiliti de care fiecare individ are nevoie pentru dezvoltarea personal, incluziune
social i inserie pe piaa muncii. Se poate constata ns c programele disciplinelor
de matematic nu au ntotdeauna n vedere identificarea i sprijinirea elevilor i
studenilor potenial talentai la matematic. Totui, studiul matematicii a evoluat n
exigene pn a ajunge s accepte provocarea de a folosi noile tehnologii n procesul
de predare-nvare-evaluare pentru a face matematica mai atractiv.
2

n acest context, analiza flexibilitii curriculei, nsoit de analiza metodelor i


instrumentelor folosite pentru identificarea i motivarea studenilor talentai la
matematic ar putea rspunde deopotriv cerinelor de mas, ct i celor de elit.
Viziunea pe termen lung a acestui proiect preconizeaz determinarea unor
schimbri n abordarea fenomenului matematic pe mai multe planuri: informarea unui
numr ct mai mare de membri ai societii n legtur cu rolul i locul matematicii n
educaia de baz n instrucie i n descoperirile tiinifice menite s mbunteasc
calitatea vieii, inclusiv popularizarea unor mari descoperiri tehnice, i nu numai, n
care matematica cea mai avansat a jucat un rol hotrtor. De asemenea, se urmrete
evidenierea a noi motivaii solide pentru nvarea i studiul matematicii la nivelele de
baz i la nivel de performan; stimularea creativitii i formarea la viitorii
cercettori matematicieni a unei atitudini deschise fa de nsuirea aspectelor
specifice din alte tiine, n scopul participrii cu succes n echipe mixte de cercetare
sau a abordrii unei cercetri inter i multi disciplinare; identificarea unor forme de
pregtire adecvat de matematic pentru viitorii studeni ai disciplinelor matematice,
n scopul utilizrii la nivel de performan a aparatului matematic n construirea unei
cariere profesionale.
Aceast lucrare reflect eforturile autorilor n cadrul acestui proiect i
experiena lor n predarea matematicilor aplicate i informaticii, n general i a
tehnicilor de simulare n special, la facultatea de matematic-informatic a
Universitii din Piteti.
Lucrarea mbin n mod armonios prezentrile teoretice cu exemple
semnificative, facilitnd studenilor, cadrelor didactice, matematicienilor, inginerilor,
cercettorilor etc. cunoaterea, aprofundarea i utilizarea tehnicilor de simulare n
diferite domenii de activitate.
Dispunnd de o vast experien n procesul de predare-nvare-evaluare,
autorii s-au strduit s realizeze un material de studiu unitar n domeniul simulrii,
ntr-o form accesibil, i sper c aceast lucrare elaborat n cadrul proiectului mai
sus menionat va contribui la o mai bun nelegere i asimilare a cunotinelor de
modelare i simulare, care pot fi de un real folos pentru aplicarea lor n practic.
Autorii

CAPITOLUL I
SISTEME, MODELE, SIMULARE

1.1 Generaliti despre sisteme, modele, simulare


Cuvntul simulare deriv din latinescul simulatio, care nseamn
capacitatea de a reproduce, reprezenta sau imita ceva.
n matematic, termenul simulare a fost folosit pentru prima dat de ctre
John von Neumann i S. Ulam n anii 1940-1944, cu ocazia cercetrilor de fizic
nuclear efectuate n S.U.A. Ei, mpreun cu N. Metropolis, Fermi i ali
matematicieni i fizicieni ai colii Los Alamos au introdus n aceeai perioad un
nume pitoresc n matematic i anume Metoda Monte Carlo.
Denumirea, desigur improprie, provine din faptul c primele metode de
generare / simulare a numerelor aleatoare au fost cele oferite de rezultatele obinute la
ruletele vestitelor cazinouri din Monte Carlo.
De asemenea, se spune c simularea este mai mult o art dect o tiin.
1.1.1 Sisteme
Dezvoltarea n ritm accelerat a tiinei i tehnicii contemporane creeaz
complexitate, care devine din ce n ce mai greu de controlat, de stpnit, de condus. n
sprijinul eforturilor sale de a stpni complexitatea, de a-i cunoate componentele, de
a descoperi diferite legi care o guverneaz, omul a creat noiunea de sistem.
Sistemul reprezint un ansamblu de elemente (componente fizice sau logice,
legi, reguli etc.) interconectate, care funcioneaz n comun pentru realizarea unuia
sau mai multor scopuri.
Elementul reprezint o parte din sistem (un subansamblu sau o component)
capabil s ndeplineasc o anumit funciune n cadrul sistemului.

Exemple:
Oamenii triesc n sisteme sociale.
Activitatea tehnologic a produs sisteme fizico-tehnice complexe.
Un automobil este un sistem format din componente care acioneaz mpreun
pentru a asigura transportul.
Familia este un sistem de convieuire i de cretere a copiilor.
O clasificare a sistemelor poate fi fcut astfel:
sisteme deschise
sisteme nchise
4

Un sistem deschis este caracterizat prin:


- ieiri care corespund intrrilor n sistem;
- ieirile sunt izolate de intrri;
- ieirile nu au nici o influen asupra intrrilor.
ntr-un sistem deschis, rezultatele aciunii trecute nu comand aciunea viitoare.
Sistemul nu observ i nu reacioneaz la propria-i performan.
De exemplu, un automobil este un sistem deschis care singur nu se poate conduce
dup drumul pe care l-a parcurs n trecut i nici nu are o anumit int, direcie, spre
care s mearg n viitor.
Ieiri

Intrri
Sistem

Figura 1.1. Sistem deschis


Un ceas este, de asemenea, un sistem deschis; el nu-i observ propria imprecizie
pentru a i-o corecta singur.
Sistemul nchis (cu conexiune invers, cu reacie sau feed-back) este
caracterizat prin:
- ieiri care corespund intrrilor n sistem;
- ieirile depind de intrri;
- ieirile influeneaz intrrile.
Un sistem nchis este influenat de propria-i comportare trecut. La aceste
sisteme ieirile pot regla intrrile. Un sistem cu conexiune invers funcioneaz ca o
bucl nchis care folosete rezultatele aciunii trecute ale sistemului pentru a
comanda aciunea viitoare.
De exemplu, un ceas i posesorul lui formeaz un sistem cu conexiune invers, cnd
ora indicat de ceas este comparat cu ora exact, care este luat ca reper, ceasul este
potrivit pentru a elimina erorile.
Decizie

Aciune

Starea sistemului

Informaia

Figura 1.2. Sistem cu conexiune invers

Bucla conexiunii inverse este o cale nchis care leag n aceeai secven o
decizie ce comand aciunea, starea sistemului i informaia despre starea sistemului,
n final ntorcndu-se la punctul de luare a deciziilor.

1.1.2 Modele
Modelarea este o metod de studiu a unor procese i fenomene care se
realizeaz prin substituirea obiectului real al cercetrii. Ca metod de cercetare este
destul de veche, modelele fizice prin similitudine, apoi cele construite prin analogie
nlocuind de multe ori obiectul real supus cercetrii.
Un model presupune, n general, reprezentarea sistemului ca o mulime de
pri n interaciune una cu alta.
Modelul poate fi:
un duplicat al sistemului;
o reprezentare simbolic (de exemplu matematic) a sistemului;
sistemul.
Modelele constituie reprezentri ale realitii. Dac ele ar fi tot att de greu de
manevrat ca realitatea, prin utilizarea lor nu s-ar obine niciun avantaj. De obicei, se
pot construi modele mult mai simple dect realitatea, pe baza crora putem s
prevedem i s explicm cu un nalt grad de acuratee, fenomene complexe. Explicaia
const n faptul c, dei pentru a descrie un fenomen este necesar un numr mare de
variabile, de obicei puine dintre acestea au rol esenial. Important este s descoperim
care sunt acele variabile i relaiile dintre ele.
Modelarea matematic ocup un loc important n ansamblul metodelor de
modelare, n special prin facilitile oferite de calculatoarele cu capacitate mare de
memorare i vitez mare de lucru.
Modelele matematice au aprut din necesitatea de a descrie i studia formal
comportarea unei categorii de sisteme reale, cu scopul de a controla i dirija
activitatea lor viitoare.
Elaborarea unei structuri matematice mpreun cu o list de corespondene
ntre simbolurile matematice i obiectele situaiei concrete considerate a condus la
ceea ce numim model matematic.
n general, un model M al unui sistem S este un alt sistem S care din anumite
puncte de vedere este echivalent cu S, dar care este mai uor de studiat dect S. Printrun sistem S nelegem urmtoarea structur de mulimi:
S = {T, X, U, V, Y, , }
unde
- T este timpul de baz utilizat pentru cronometrarea i ordonarea evenimentelor;
acesta este un numr real dac sistemul este cu timp continuu sau ntreg dac
sistemul este cu timp discret;
- X reprezint mulimea intrrilor n sistem;
- U este mulimea segmentelor de intrare n sistem, prin segment de intrare n sistem
asociat funciei u : T X nelegndu-se graficul funciei u pe un interval [t0, t1],
adic:
u([t0, t1]) = {(t, u(t)) | t0 t t1};
- V este mulimea strilor sistemului. Starea este un concept de modelare a structurii
interne a sistemului, ce conine istoria acestuia i care-i afecteaz prezentul i
viitorul i mpreun cu forma intrrilor determin n mod unic ieirile din sistem;
6

Y este mulimea ieirilor sistemului;

este funcia de rspuns a sistemului : XV Y; dac la o intrare u([t0, t1])


sistemul se afl n starea t0V
atunci ieirea sistemului este

Y ut0 ,t1 ,t0 ;


este funcia de tranziie a strilor ceea ce nseamn c dac intrarea u([t0, t1])
gsete sistemul n starea t0 V atunci l transform pe acesta n starea t1
ut0 , t1, t0 .

Cunoaterea intrrilor uU i a rspunsurilor corespunztoarea acestora yY


reprezint comportarea sistemului.
Un model al unui sistem trebuie s ndeplineasc urmtoarele trei condiii:
1. modelul trebuie s reflecte ct se poate de fidel realitatea reprezentat;
2. modelul trebuie s constituie o simplificare a realitii reprezentate;
3. modelul este prin esena sa o idealizare a realitii reprezentate.
1.1.3 Simulare
n procesul de modelare matematic, componentelor sistemului li se asociaz
anumite variabile / parametri, unele cunoscute (controlabile), numite variabile /
parametri de intrare, altele necunoscute (necontrolabile), numite variabile / parametri
de ieire. Legturile i interaciunile dintre componentele sistemului sau legturile
sistemului cu exteriorul se transpun n modelul matematic prin relaii funcionale
(ecuaii i / sau identiti). Scopul modelului este de a exprima variabilele
necontrolabile n funcie de variabilele controlabile, astfel nct s fie satisfcute
criteriile de performan. Uneori nu este posibil s se exprime sub form de ecuaii
toate legturile, condiionrile i interdependenele necesare, motiv pentru care unele
dintre acestea se descriu prin condiii logice sau proceduri ce pot fi manipulate numai
prin intermediul calculatorului. Modelul matematic completat cu astfel de proceduri
este un model de simulare, care pornind de la valori ale variabilelor controlabile
(generate cu algoritmi speciali), va produce valori ale variabilelor necontrolabile,
oferind variante din care se poate alege cea mai bun. De aici rezult c modelul de
simulare produce experimente asupra sistemului pe care-l simuleaz, ceea ce permite
alegerea acelor valori ale variabilelor i parametrilor de intrare care conduc la
performanele dorite.
Necesitatea obinerii unor informaii despre un anumit sistem nainte ca el s
fie realizat a condus la apariia simulrii.
n proiectarea sistemelor, deosebit de important este obinerea unor informaii
despre sistem nainte ca el s fie realizat concret; acest lucru este posibil aplicnd
tehnica simulrii.
Prin simulare numeric se nelege totalitatea procedeelor matematice i de
calcul destinate studiului comportrii n timp a sistemelor reale cu ajutorul
calculatoarelor electronice numerice, presupunndu-se c n evoluia acestor sisteme
intervin i elemente aleatoare.

Simularea numeric este o tehnic potrivit creia se asociaz sistemului real un


model adecvat numit model de simulare, care reprezint mulimea interaciunilor
logice ale componentelor sistemului, precum i mecanismul schimbrii lor n timp.
Modelul este folosit apoi pentru a produce, prin intermediul calculatorului,
succesiunea cronologic de stri prin care trece sistemul, considerndu-se dat starea
sa iniial.
Deoarece n evoluia lor sistemele reale sunt influenate de cauze aleatoare al
cror efect trebuie pus n eviden n cadrul modelelor de simulare, una din problemele
matematice importate ale simulrii numerice const n generarea / simularea cu
calculatorul a unor selecii statistice asupra diferitelor tipuri de variabile aleatoare i
procese stochastice.
O alt problem important legat de construirea modelelor de simulare este
aceea a cronometrrii exacte a evenimentelor strilor sistemului simulat folosind o
variabil numit ceasul simulrii, care este supus unui numr finit de creteri pe
parcursul simulrii.
Dei nu ofer soluii exacte, simularea este o tehnic eficient de cercetare att
pentru fenomenele fizice care nu pot fi percepute de om ct i pentru acelea percepute,
dar imposibil de studiat analitic. Necesitatea simulrii rezid n faptul c adeseori
sistemele reale nu pot fi studiate n mod direct, fie datorit dificultilor de evaluare
calitativ sau cantitativ a fenomenelor, fie din cauza complexitii (numrul mare de
variabile de intrare i de ieire, numrul mare de stri posibile, complexitatea
funciilor i , etc.).
Studiul variantelor de decizie pe modele prezint urmtoarele avantaje:
- de natur economic;
- scurteaz durata de obinere a soluiilor;
- permite analiza unui numr mare de variante prin modificarea condiiilor
iniiale, avnd avantajul revenirii la varianta de rspuns conform cu
cerinele utilizatorului.
Folosirea unui sistem real pentru experimentare poate conduce la perturbarea
activitilor unui domeniu n care este studiat sistemul, anumite variante mai puin
inspirate putnd avea implicai imprevizibile.
n cazul unor sisteme care nu exist nc se poate obine un plan de construire
a sistemului n funcie de anumite criterii de optimizare a intrrilor i/sau ieirilor
sistemului reprezentat.
De exemplu, dac utilizm simularea pentru proiectarea unui baraj,
dimensiunile i rezistena acestuia se pot determina prin experimente cu calculatorul
pe un model care prevede cerina medie de curent electric i factori aleatori precum
volumul precipitaiilor n intervalele de timp stabilite. Experimentele reale nu sunt
practice, deoarece barajul odat construit nu poate fi modificat.
Simularea presupune i unele dezavantaje:
- construirea modelelor de simulare cere o pregtire special; se spune c
simularea este mai degrab o art dect o tiin, care se nva n timp i
prin experien;
- rezultatele simulrii sunt aproximative i nu exacte, iar uneori sunt greu de
interpretat;
- cele mai multe ieiri ale sistemului sunt variabile aleatoare (bazate pe
intrri aleatoare) ale cror repartiii trebuie cunoscute sau determinate.
8

1.1.4 Tipuri de modele de simulare


n multe domenii tiinifice se folosesc trei tipuri de modele de simulare:
modele imitative
modele analogice
modele simbolice
Modelele imitative au urmtoarele caracteristici:
- transpun realitatea la o alt scar, mai mare sau mai mic, cu scopul
observrii comportrii realitii respective;
- imit realitatea, ceea ce nseamn c un model imitativ seamn cu
fenomenul pe care-l reprezint, dar difer ca mrime;
- reprezint o imagine a realitii.
Exemple: proiectele unor cldiri, hrile geografice, machetele de automobile,
nave avioane etc. Modelele imitative ale soarelui i planetelor sunt micorate, n timp
ce modelele atomice (modelul lui Bohr, de exemplu) sunt mrite.
Modelele imitative sunt specifice, concrete (fizice) i greu de manipulat n
scopuri experimentale.
Modelele analogice sunt specifice unui proces sau fenomen al crui
comportament nu este cunoscut. Pentru a fi studiat se utilizeaz un model realist al
unui fenomen sau proces care prezint analogii.
Modelele analogice au urmtoarele caracteristici:
- folosesc anumite proprieti pentru a reprezenta alte proprieti;
- sunt mai puin specifice, mai puin concrete, dar mai uor de mnuit dect
modele imitative.
De exemplu, se pot utiliza:
- modelele unor sisteme hidraulice pentru studierea unor sisteme electrice
sau de transport;
- analogiile istorice pentru prognoza dezvoltrii societii ntr-o anumit
ar;
- curbele de nivel pe o hart topografic pentru a reprezenta nlimea
formelor de relief.
Modelele simbolice au urmtoarele caracteristici:
- folosesc litere, cifre sau alte simboluri pentru a reprezenta caracteristicile
unei realiti;
- corelaiile ntre caracteristicile realitii au condus la scrierea unor relaii
matematice adecvate i prin aceasta la crearea unui model abstract
(matematic).
Un model de simulare este un tip particular de model matematic al unui sistem.

Modelele de simulare mai pot fi clasificate astfel:


statistice sau dinamice
deterministe sau stochastice,
discrete sau continue.
Modelele statice sunt acelea care ndeplinesc urmtoarele condiii:
- nu iau n mod explicit n considerare variabila timp;
- reflect situaii i stri invariante i atemporale;
- soluiile pot fi obinute i analitic.
Modelele dinamice sunt acelea care:
- in seam de variaia i interaciunea n timp a variabilelor considerate;
- ncorporeaz timpul ca mrime fundamental, fiind o variabil de stare;
- se rezolv utiliznd tehnica simulrii.
Modelele deterministe sunt acelea n care:
- toate variabilele sunt nealeatoare;
- caracteristicile operative sunt ecuaii de o anumit form;
- soluiile acestor modele se obin pe cale analitic.
Modelele stochastice sunt acelea care:
- conin una sau mai multe variabile de intrare aleatoare i deci una din
caracteristicile operative este dat printr-o funcie de densitate;
- intrrile aleatoare conduc la ieiri aleatoare;
- evenimentele nu se produc cu certitudine, ci cu o anumit probabilitate.
n cazul modelelor deterministe evenimentele se produc sau nu se produc, iar
n cazul producerii exist o certitudine bazat pe reguli clare. n cazul modelelor
aleatoare evenimentele se produc sau nu se produc, regulile de inferen ale modelului
nu confer ns certitudine producerii lor. Aceste modele, de obicei, se rezolv
folosind tehnica simulrii, metodele analitice fiind ineficiente.
Modelele discrete sunt acele modele n care schimbrile strilor variabilelor
se fac la momente discrete de timp.
Modelele continue sunt acelea n care schimbrile strilor variabilelor se
produc continuu.
Exemple:
1. O fabric poate s produc ntr-o lun trei tipuri de aparate electronice: 4
aparate/or din primul tip, 2 aparate/or din al doilea tip i 3 aparate/or din al treilea
tip. Beneficiul obinut din producerea i vnzarea acestor aparate se prezint astfel: 50
lei pentru primul tip, 100 lei pentru al doilea tip i 75 lei pentru al treilea tip.
Desfacerea (vnzrile) sunt limitate la 250 apartate din primul tip, 120 din al doilea tip
i 80 din al treilea tip. tiind c fabrica lucreaz 160 de ore pe lun, s se ntocmeasc
programul de lucru lunar, care s conin numrul de aparate din fiecare tip ce vor fi
produse, astfel nct beneficiul obinut s fie maxim.

10

Construcia modelului poate fi fcut astfel:


Se noteaz cu x1, x2, x3 numrul de aparate din fiecare tip i obine:
4x1 2x2 3x3 160
x

250

x2 120

x
3

80

x , x 2, 3 0
x

max(50x 100x 2 75x 3 )


1

Acesta este un model static i determinist.


2. Problema vnztorului de ziare.
Un vnztor de ziare trebuie s comande zilnic un numr de ziare astfel nct
ctigul din vnzarea lor s fie maxim. n fiecare zi el comand un anumit numr de
ziare, vnznd o parte dintre ele sau pe toate. Fiecare ziar vndut i aduce un anumit
ctig. Ziarele nevndute se pot napoia, dar i provoac o anumit pierdere. Numrul
ziarelor vndute este variabil de la o zi la alta, probabilitatea vnzrii unui anumit
numr de ziare ntr-o zi putnd fi estimat pe baza vnzrilor din perioada anterioar.
Construcia modelului poate fi realizat considernd urmtoarele variabile:
n = numrul ziarelor comandate n fiecare zi;
c = ctigul obinut din vnzarea unui ziar;
l = pierderea datorat unui ziar nevndut;
r = cererea/numrul ziarelor vndute ntr-o zi;
p(r) = probabilitatea ca ntr-o zi oarecare s vnd r
ziare; P = ctigul obinut ntr-o zi.
Dac ntr-o zi numrul ziarelor vndute (cererea) este mai mare sau egal cu
numrul ziarelor comandate (r n), ctigul va fi
P(r n) = nc.
Dac ntr-o zi numrul ziarelor vndute (cererea) este mai mic dect numrul
ziarelor comandate (r < n), ctigul va fi
P(r < n) = rc (n-r)l.
Ctigul mediu zilniv va fi
n

P p(r)[rc (n r)l]
r 0

p(r)nc

rn1

Acesta este un model stochastic, deoarece


n = variabil controlabil;
r = variabil necontrolabil;
c, l = constante.
Prin rezolvarea acestui model trebuie gsit n pentru care P este maxim.

11

1.2 Descrierea modelelor de simulare


n procesul de modelare matematic, modelul este reprezentativ pentru
sistemul fizic dac se respect condiia de cauzalitate, ceea ce conduce la clasificarea
elementelor n:
- elemente de intrare (cauz) care formeaz vectorul de intrare x = (x1, x2,xm),
- elemente de ieire (efect) care formeaz vectorul de ieire y = (y1, y2,
yn), ambii vectori fiind n general aleatori.
n absena oricror informaii asupra structurii sistemului, acesta este descris
matematic de ctre dependena funcional dintre vectorul de ieire i vectorul de
intrare: y = f(x).

Variabilele de intrare pot fi:


variabilele deterministe, care se obin dup reguli bine precizate sau se gsesc
nregistrate pe supori de informaie;
variabilele stochastice, care sunt generate cu calculatorul dup algoritmi de
generare performani, generarea depinznd de parametrii de intrare care
caracterizeaz aceste variabile.

Pasul simulrii este prin definiie o etap n care toate variabilele de intrare iau
valori constante n timpul executrii programului.
-

Observaii:
variabilele de ieire depind de variabilele de intrare; dependena este determinat
de structura logic a modelului de simulare considerat;
o valoare a unei variabile de ieire este rezultatul executrii unui pas al
programului de calcul asociat modelului;
dac cel puin una din variabilele de intrare este stochastic, atunci cel puin una
din variabilele de ieire este stochastic.

De mare importan n construirea modelului de simulare este procedeul de


micare a sistemului n timp; pentru aceasta este necesar introducerea unei
variabile speciale numit ceasul simulrii, care s msoare scurgerea timpului real n
care se simuleaz sistemul, cu scopul de a menine ordinea corect n timp a
evenimentelor.
Modelele de simulare mai conin:
- relaii funcionale: identiti i/sau ecuaii;
- caracteristici operative, fiind utilizate pentru a exprima prin relaii matematice
interaciunile variabilelor i comportarea sistemului.
O caracteristic operativ este de obicei o ipotez (statistic sau nu) sau o
ecuaie matematic precizat care leag variabilele de intrare ale sistemului de stri
sau de variabilele de ieire.
Dac aceste variabile sunt stochastice, caracteristicile operative iau forma unor
funcii de densitate de probabilitate, iar printre parametrii de intrare ai modelului vor
12

fi i parametrii statistici ai caracteristicilor operative. Aceti parametri au rol de


mrimi de intrare n modelul de simulare i trebuie estimai n prealabil din observaii
statistice efectuate asupra procesului sau sistemului ce urmeaz a fi simulat.
Dup construirea modelului de simulare, simularea n sine, ca experiment,
const n a varia valorile variabilelor i parametrilor de intrare ai sistemului i a
deduce pe baza modelului, ca rezultat al calculelor, efectele lor asupra variabilelor de
ieire.
Deosebim dou tipuri de simulare:
- discret, dac variabilele modelului pot avea numai anumite valori
discrete;
- continu, dac variabilele modelului pot avea orice valoare pe anumite
intervale reale.
n cazul simulrii cu timp discret, ceasul simulrii nainteaz de la un
eveniment la altul i nu n mod continuu.
n cazul simulrii cu timp continuu, variabilele care descriu starea sistemului
i schimb valorile n mod continuu n raport cu timpul.
1.2.1 Etapele realizrii unui model de simulare
Construirea modelelor de simulare constituie un proces amplu care n general
presupune parcurgerea urmtoarelor etape:
1. Definirea problemei, etap n care se stabilesc obiectivele simulrii:
- ntrebrile la care trebuie s rspund, care trebuie s fie clare;
- ipotezele ce trebuiesc testate, care trebuie s fie nsoite de criterii de
acceptare;
- efectele ce urmeaz a fi estimate.
2. Colecionarea, analiza, interpretarea i prelucrarea primar a datelor
n aceast etap se stabilesc:
- datele de observaie necesare pentru studierea sistemului considerat;
- modalitile de strngere a datelor de observaie.
Aceast etap este esenial deoarece colecionarea unor date eronate are mari
consecine n obinerea rezultatelor finale, motiv pentru care este necesar o analiz
preliminar i o interpretare a lor pentru a depista eventualele neconcordane cu
realitatea. Se efectueaz o prelucrare primar, apoi se face conversia i transmiterea
lor, n vederea organizrii n fiiere pentru a putea fi utilizate de calculator. Datele de
observaie sunt necesare pentru estimarea parametrilor caracteristicilor operative ale
modelului ce va fi construit, iniializarea variabilelor de intrare ale modelului i
validarea lui.

13

3. Formularea modelului de simulare


Pentru a construi un model matematic de simulare a unui sistem, componentelor sale
li se asociaz anumite variabile i parametri, unele dintre acestea fiind:
- cunoscute (controlabile) numite variabile sau parametri de intrare;
- necunoscute (necontrolabile) numite variabile sau parametri de ieire.
Interaciunile dintre componentele sistemului sau legturile sistemului cu exteriorul se
regsesc n modelul matematic sub forma unor relaii funcionale. Printre relaiile
modelului exist una sau mai multe funcii care leag diferite variabile i care msoar
performana sistemului. Deoarece n evoluia lor sistemele reale sunt influenate de
factori aleatori al cror efect este pus n eviden n cadrul modelului de simulare, o
parte din variabilele de intrare ale modelului sunt variabile aleatoare avnd funcii de
repartiie cunoscute. De aici apare necesitatea ca modelul de simulare s conin rutine
care s genereze aceste variabile de intrare.
Modelul de simulare trebuie s conin:
- variabile care s descrie strile componentelor sistemului (variabile de stare);
- o agend care s memoreze evenimentele care se produc n sistem;
- rutine pentru producerea (generarea) diferitelor tipuri de evenimente.
Construirea unui model de simulare difer de la o problem la alta, motiv
pentru care nu pot fi stabilite nite reguli general valabile. Cu toate acestea se pot
indica cteva reguli de care trebuie s se in seama n construirea modelului de
simulare. Una dintre acestea se refer la numrul de variabile pe care le folosete
modelul; un numr prea mare ar crea dificulti n ceea ce privete stabilirea relaiilor
funcionale, ar face ca modelul s fie mai puin flexibil, iar timpul de calcul ar fi mai
mare. Nu trebuie s se ajung nici la cealalt extrem a simplificrii exagerate a
modelului prin folosirea unui numr mic de variabile, deoarece n acest caz ar putea
pierde o parte din aspectele eseniale ale problemei. Relaiile funcionale ale
modelului trebuie s aib o form ct mai simpl, fiind uor de calculat i evaluat n
aa fel nct erorile de calcul induse s fie ct mai mici, asigurnd n acest fel o ct
mai bun precizie a modelului.
De mare importan n realizarea modelelor de simulare este obinerea unui
timp de calcul redus, fapt ce permite simularea diferitelor variante de sistem cu costuri
(eforturi) rezonabile.
O alt cerin de care trebuie s se in seama la construirea modelelor de
simulare se refer la mijloacele prin care poate fi verificat corectitudinea modelului
i variantele ce urmeaz a fi simulate cu ajutorul calculatorului electronic.
4. Estimarea parametrilor de intrare ai modelului
Parametrii de intrare ai modelului matematic de simulare se estimeaz prin metode
statistice, folosind datele colecionate (n prima etap) despre sistemul real.
Caracteristicile operative pot avea forma unor ecuaii sau sisteme de ecuaii depinznd
de anumii parametri care pot fi estimai cu ajutorul tehnicilor specifice analizei
regresiei.

14

5. Evaluarea performanelor modelului i testarea parametrilor

Aceast etap are ca scop verificarea modelului nainte ca el s fie programat:


se verific dac parametrii de intrare ai modelului au fost bine estimai, folosind
teste statistice;
se verific dac modelul conine toate variabilele i parametrii eseniali precum i
relaiile funcionale necesare reprezentrii interdependenelor eseniale ale
sistemului real.

n cazul cnd caracteristicile operative iau forma unor ipoteze statistice


referitoare la repartiiile variabilelor de intrare, atunci se aplic testele de concordan
2
(testul , Kolmogorov-Smirnov) pentru verificarea acestor ipoteze.
Dac n urma acestor verificri se constat c o ntrebare sau o ipotez nu este
corect formulat, nseamn c fie variabilele i parametrii nu au fost bine alei, fie
parametrii de intrare nu au fost bine estimai. Dac pe lng acestea se constat i alte
neconcordane n cadrul modelului, atunci toate etapele precedente vor fi reluate n
vederea corectrii lor.
6. Descrierea algoritmului de simulare i scrierea programului de calcul
Pe baza rezultatelor etapelor precedente se construiete algoritmul de calcul care
reprezint succesiunea logic a evenimentelor ce urmeaz a fi reproduse cu
calculatorul electronic. Pentru a fi mai uor de programat, algoritmul este reprezentat
printr-o schem logic; urmeaz scrierea programului care se poate face fie folosind
un limbaj de programare de nivel nalt: C / C++, fie un limbaj special de simulare, de
exemplu GPSS.
Alegerea limbajului de programare depinde de mai muli factori, dintre care
amintim: timpul de calcul necesar simulrii, forma sub care trebuie imprimate
rezultatele simulrii, experiena ca programator etc.
Limbajele de simulare (specializate) fac mult mai uoar descrierea unui
sistem i a comportrii lui n timp. Ele pot uura mult modelarea, ceea ce face s fie
net superioare din acest punct de vedere limbajelor generale de programare.
7. Validarea modelului
Validarea modelului, adic stabilirea adecvrii lui la realitate, este de obicei o sarcin
complex i dificil. Valoarea unui model n raport cu contribuia sa la studiul situaiei
concrete modelate este determinat de gradul su de adecvare, adic de modul n care
prediciile concord cu observaiile.
Metodele de validare a modelelor matematice de simulare nu sunt unice.
Validarea modelului se poate face prin:
- testarea modelului ntr-un caz particular, n care soluia se cunoate sau poate fi
dedus cu uurina pe cale analitic;
- compararea rezultatelor simulrii cu datele obinute prin observarea unor sisteme
similare sau prin comparaie cu evoluia trecut a sistemului real care a fost
simulat.

15

Variantele modelului care se dovedesc neadecvate sunt modificate pn se


ajunge la soluii care concord cu realitatea.
8. Planificarea experienelor de simulare
n aceast etap se face atribuirea variabilelor i parametrilor de intrare a valorilor
care s acopere situaiile reale n care s-ar putea afla sistemul n vederea selectrii
variantei care satisface cerinele utilizatorului.
9. Analiza datelor simulate
Rezultatele simulrii ne prezint care este reacia sistemului la modificarea valorilor
variabilelor de intrare i mai mult, n ele vom cuta rspunsurile la ntrebrile
formulate la nceput. Acest lucru este posibil colecionnd datele simulate,
prelucrndu-le calculnd statisticile pentru testele de semnificaie i apoi interpretnd
doar rezultatele.

1.2.2 Ceasul simulrii


Prin intermediul modelului de simulare calculatorul electronic produce
succesiv diferite evenimente care reprezint schimbrile ce au loc n timp n cadrul
sistemului. Pentru a putea menine ordinea corect a acestor evenimente i pentru
putea preciza, dup fiecare pas al simulrii care este intervalul de timp n care s-a
simulat evoluia sistemului la pasul respectiv, este necesar s se introduc n modelul
de simulare o variabil special numit ceas. La fiecare pas al simulrii trebuie s se
genereze o cretere a ceasului care s se adauge mrimii ceasului la pasul anterior.
Exist dou tipuri de ceas:
ceas cu cretere fix (constant)
ceas cu cretere variabil.
Simularea bazat pe metoda ceasului constant, const n a genera de fiecare
dat o cretere constant c a ceasului i a analiza apoi starea diferitelor elemente ale
sistemului genernd toate evenimentele posibile a se produce n intervalul de timp de
lungime c. Dup aceea se va genera o nou cretere care se va aduga ceasului i se va
repeta analiza menionat.
Schema logic a modelului de simulare trebuie n acest caz s descrie n mod
complet evoluia sistemului pe un interval de timp de lungime c; simularea sistemului
pe un interval mare (oarecare) de timp se va obine repetnd de un numr de ori
suficient de mare algoritmul referitor la intervalul de timp de lungime c. Deci pentru
modelele de simulare cu ceas constant mrimea ceasului T este de forma:
T = cj (j=0,1,2,)
unde j este un ntreg care reprezint numrul de iteraii ale algoritmului de simulare.

16

n cazul ceasului variabil, valoarea (variabil) a creterii ceasului este egal cu


lungimea intervalului de timp dintre apariiile a dou evenimente consecutive. Cu alte
cuvinte, mrimea creterii ceasului este egal cu intervalul de timp de la starea actual
la momentul apariiei celui mai apropiat eveniment viitor.
n cazul modelului cu ceas constant, avem:
O

e1
T1

e2
T2

e3

e4

T3

n cazul modelului cu ceas variabil, avem:


O

e1
T1

T2

e2e3e4
T3

T
T4

Metoda ceasului variabil presupune n mod riguros considerarea ordinii tuturor


apariiilor de evenimente succesive, astfel nct la fiecare nou apariie corespunde o
cretere a ceasului.
n cazul modelelor cu ceas constant, dac de exemplu valoarea ceasului la un
moment dat este T = ck, atunci n aceast faz algoritmul de simulare va genera
evenimentele care urmeaz s se produc n intervalul de timp [c(k-1), ck) i dup
aceea va avansa ceasul la valoarea T = c(k+1).
Un model de simulare bazat pe metoda ceasului constant consider grupul de
evenimente produse n intervalul [c(k-1), ck) ca i cum s-ar fi produs la momentul ck.
n consecin, procedeul bazat pe metoda ceasului constant, spre deosebire de
cel bazat pe ceas variabil, face ca grupul de evenimente care apar pe un interval de
timp de lungime c s fie sincronizate la momentul terminrii acelui interval. Din acest
motiv este recomandabil s se aleag constanta c ct mai mic. Aceasta va conduce la
creterea timpului de calcul. Pe de alt parte, mrirea constantei c datorit sincronizrii
unor evenimente ce se petrec la momente de timp ndeprtate, va mri gradul de
aproximaie al modelului i va reduce timpul de calcul.
Metoda bazat pe ceasul constant este de preferat celei bazat pe ceasul cu
cretere variabil, mai ales din punctul de vedere al uurinei cu care se poate construi
algoritmul simulrii.

17

CAPITOLUL II
SIMULAREA NUMERELOR ALEATOARE

2.1 Numere aleatoare uniforme. Procedee de generare.


Numerele care sunt alese la ntmplare numite numere aleatoare se
utilizeaz:
- n aplicaii n care realizeaz nlocuirea valorilor variabilei aleatoare cu o mulime
de valori care au proprietile statistice ale acesteia;
- n simularea numeric pentru a reproduce n mod realist anumite elemente ale
sistemului simulat, precum i pentru rezolvarea unor probleme numerice cu
ajutorul metodelor Monte Carlo;
- n cercetarea statistic pentru a produce selecii ntmpltoare n cadrul unei
populaii statistice, selecii crora li se pot aplica, apoi procedee de prelucrare i
interpretare specifice statisticii matematice;
- n testarea programelor pe calculator.
Se numete ir de numere aleatoare independente cu o repartiie de
probabilitate specificat, irul care ndeplinete condiiile:
- numerele irului au fost obinute la ntmplare;
- fiecare numr nu este n nici un fel legat de celelalte numere ale irului;
- are o anumit proprietate de a se afla ntr-un anumit interval.
Un ir de numere aleatoare independente cu o repartiie specificat este o
selecie ntmpltoare efectuat asupra unei variabile aleatoare a crei repartiie este
cea specificat.
Dac ntr-un ir de numere putem prevedea unul din termenii irului n funcie
de termenii precedeni atunci irul nu este aleator. n cadrul irurilor de numere
aleatoare de lungime foarte mare este posibil ca unele numere s se repete, dar ele
ndeplinesc anumite cerine care le apropie de cele ntmpltoare; ele se numesc
numere pseudo-aleatoare.
Exist mai multe procedee de a produce numere ntmpltoare i anume:
1. Tabele cu numere ntmpltoare, care conin numere ntregi uniform
repartizate pe un interval.
2. Procedee fizice, fiind construite maini sau dispozitive fizice pentru
producerea de numere ntmpltoare. Ele se bazeaz pe principii fizice,
folosind de exemplu zgomotul electronic sau radioactiv. Procedeul radioactiv
const dintr-un detector de particule radioactive care nregistreaz ntr-o
perioad de timp t un numr par sau impar de particule emise de surs.

18

Un alt procedeu fizic este cel al intensitii unui curent msurat la momente
distincte astfel nct valorile voltajelor U(t1), U(t2),, U(tn), s poat fi
considerate ca independente. n cazul n care un astfel de dispozitiv se
folosete pentru generarea de numere aleatoare cu o anumit repartiie,
dispozitivul este conectat la calculator astfel nct el s poat produce numere
aleatoare la nevoie.
3. Procedee aritmetice
Pentru generarea numerelor aleatoare cu ajutorul calculatoarelor electronice
numerice se folosesc relaii de recuren de forma:
Xn+1 = f(Xn, Xn-1,, Xn-m),
n>m, m0, unde ( X n )nN , sunt numere naturale, presupunndu-se c
vectorul valorilor iniiale X0, X1,, Xm este dinainte fixat.
Un procedeu aritmetic de obinere a numerelor aleatoare bazat pe o relaie de
recuren de forma de mai sus se numete generator. innd seama de faptul c
numerele generate n acest mod ele nu sunt ntmpltoare, dar pentru anumite alegeri
ale lui f se pot obine numere cu proprieti statistice apropiate de cele ntmpltoare,
un asemenea generator va produce numere pseudo-aleatoare sau cvasi-aleatoare.
Pentru ca un procedeu aritmetic s poat fi numit generator de numere
pseudo-aleatoare, trebuie s ndeplineasc urmtoarele condiii:
1. Generatorul trebuie s fie simplu i rapid, ceea ce nseamn c el trebuie s fie
uor de programat, s ocupe memorie puin i s solicite timp de calcul redus.
2. Generatorul trebuie s produc iruri de numere de lungime orict de mare,
fr ca numerele irului s se repete. Aceasta ar nsemna s nu produc iruri
cu perioad finit. innd seama c mrimea cuvntului unui calculator este
limitat, ceea ce nseamn c orice calculator poate lucra numai cu numere
ntregi mai mici dect un numr dat, rezult c nu putem construi generatori cu
perioad infinit. De aceea, cerina ca un generator s produc iruri orict de
lungi de numere se reduce la faptul c generatorul trebuie s aib perioad ct
mai mare posibil.
3. Generatorul trebuie s produc numere independente stochastic unul fa de
altul. Practic acest lucru nu este realizabil cu calculatorul, dar un generator este
acceptat dac produce numere care sunt foarte puin dependente stochastic sau
foarte puin corelate. Gradul de independen stochastic se verific cu ajutorul
testelor statistice.
4. Generatorul trebuie s produc numere a cror repartiie s fie uniform, ceea
2
ce se poate verifica cu ajutorul testelor de concordan (testul , testul
Kolmogorov etc.).
Datorit simplitii lor, generatorii cel mai frecvent utilizai sunt aceia care
produc numere pseudo-aleatoare ntregi.

19

Ideea folosirii procedeelor aritmetice pentru generarea algoritmic de numere


care au caliti apropiate de cele ntmpltoare aparine lui John von Neumann. El a
propus o metod particular cunoscut sub numele de metoda prii de la mijlocul
ptratului.
2.2 Simularea numerelor aleatoare uniforme
Fie {, , P} un cmp de probabilitate i X : R o variabil aleatoare.
Fie F : R [0,1], F(x) = P(X<x) = {P{; X()<x}}. A genera cu calculatorul
o variabil aleatoare nseamn a alege un numr de evenimente elementare 1, 2, ,
n i a determina valorile Xi = X(i) ale variabilei aleatoare.
Valorile X1, ..., Xn reprezint o selecie asupra variabilei aleatoare X.
O generare este un algoritm care este capabil s produc un Xi, i iternd acel
algoritm el s fie n stare s produc X0, X1, ..., Xn astfel ca ele s fie independente
stochastic i identic repartizate.
Variabilele X1, X2, ..., Xn sunt independente stochastic dac
n

F(x1, x2,, xn) = Fi xi ,


i1

unde
F(x1, x2,, xn) = P(X1<x1, X2<x2,, Xn<xn).
Variabilele X1, X2, ..., Xn sunt identic repartizate dac toate au aceeai
repartiie Fi(x) = Fj(x), pentru i j.
A genera / simula o variabil aleatoare nseamn a produce o selecie.
De obicei, numerele aleatoare sunt valorile unei selecii referitoare la o
variabil aleatoare U care are repartiie uniform.
Dac U este o variabil aleatoare discret uniform, atunci toate valorile ei
sunt egal probabile. De exemplu:
0,
x0
0
1

x1
X:
, F x 1 2, 0
12

12
1,
x1

0
1 2 K
n

X:

1 n 1 n 1 n 1 n 1 n

Dac U este o variabil aleatoare continu uniform, atunci ea admite o


densitate de repartiie de forma:
f x

k, x a,b
0, x a,b

k se determin din condiia 1 f xdx kdx kb a k 1 (b a)


a

i o funcie de repartiie uniform:

2
0

xa
F x x ab a, a x b

1,
xb

n acest caz, se spune c variabila aleatoare U are repartiie uniform pe (a, b).

0,

Numerele aleatoare uniforme pe (0,1) sunt cele mai importante pentru


simularea numeric.
Dac printr-un anumit procedeu reuim s generm / simulm numere
aleatoare ntregi X, uniform repartizate pe intervalul (0, M), M fiind suficient de mare,
atunci se pot obine numerele aleatoare U, uniforme pe (0,1) prin:
U = X / M, 0 < X < M.
Propoziie: Dac variabila aleatoare U este uniform pe intervalul (0,1)
atunci variabila V = a + (b-a)U este variabil uniform pe (a, b).
Demonstraie:

0,
xa

xb
PV x Pa b aU x PU x ab a x ab a,

1,
xb

Pentru variabila aleatoare U uniform pe (0,1) avem:


1,
- funcia de densitate:
x 0, 1 ;
x
0,

- funcia de repartiie: x

0,

x,

x 0, 1

x0
0 x 1
x 1

1,

Cele prezentate mai sus pot fi generalizate n cazul vectorilor aleatori.


2

Se consider vectorul X R uniform pe [a, b] [c, d].


Densitatea sa de repartiie este:

x I , x = (x1, x2)
f x 1 b a b a,
0,
n rest

Dac X = (X1, X2) este vector aleator cu dou componente, f(x1, x2) este
densitatea de repartiie a vectorului X, F(x1, x2) este funcia de repartiie a vectorului
X, iar fi(xi), Fi(Xi) sunt densitile i respectiv funciile de repartiie marginale,
f1(x1), F1(x1) = F(x1,),
f2(x2), F2(x2) = F(x2,),
atunci independena stochastic revine la:
F(x1, x2) = F1(x1) F2(x2)
sau
f(x1, x2) = f1(x1) f2(x2)

21

Propoziie: Dac XR este vector uniform pe un interval I = [a, b] [c, d], X


= (X1, X2), atunci X1 este uniform pe [a, b] i X2 este uniform pe [c, d], iar X1 este
independent de X2.
Demonstraie:
Funcia de repartiie a lui X este:
0

x1 a, x2 c

2
2
F x , x x ax
cb ad c x , x 2 I
1

x1 b, x2 d

iar

Atunci:

F1x1 F x1, este funcie de repartiie uniform pe [a, b], F2


x2 F x2 , este funcie de repartiie uniform pe [c, d].
f1x1 1 ba,x1a,b
f2 x2 1 dc,x2c, d
f x1, x2 1 badc

Aceast proprietate arat c dac vrem s obinem puncte uniforme n


domeniu, putem genera puncte uniforme pe componente.
d
I
c
a

Observaie: Propoziia este adevrat numai pe intervale i nu pe domenii


oarecare.
Construirea unui generator de numere aleatoare este destul de dificil, pe de o
parte datorit periodicitii mari, iar pe de alt parte datorit cerinelor statistice de
independen stochastic i uniformitate.
Knuth, bazndu-se pe procedeul lui John von Neumann i pe alte operaii
numerice care n mod intuitiv aveau caracter aleatoriu, a construit un generator de
numere super-aleatoare, pe care cnd l-a utilizat a constatat n mod surprinztor c
reproduce un anumit numr.
Concluzia lui Knuth a fost c generatoarele de numere aleatoare nu trebuie
construite prin metode intuitive, ele trebuie s aib la baz teorii matematice
riguroase.
n general, producerea de numere aleatoare se bazeaz pe metode recurente, iar
cele care au fost riguros studiate i au produs rezultate bune sunt metodele
congrueniale. Ele au fost iniiate de Lehmer.

22

2.2.1 Metoda ptratului din mijloc


S presupunem c folosim o reprezentare n baza b a numerelor ntregi cu care
lucrm, care de obicei este 2 sau 10.
Presupunem c toate aceste numere au 2a cifre, a = 1, 2, .... n caz contrar, se
completeaz n faa numrului cu zerouri.
2a
Xn:
n baza b, cu 2a cifre ( 0 X n b )
a a
X n2 :

n1

Fiind dat numrul aleator ntreg Xn, urmtorul numr pseudo-aleator Xn+1 se
definete dup von Neumann ca fiind format din cifrele prii din mijloc a ptratului
lui Xn. Astfel, ridicnd pe Xn la ptrat se obine un numr cu 4a cifre; lund cele 2a
2
cifre de la mijlocul irului de 4a cifre ale lui X n se obine numrul Xn+1. Acest
procedeu poate fi exprimat prin relaia de recuren:

n 1

2
Xn

X n2 2a

b3a

Aceast metod s-a dovedit a fi o surs slab de numere pseudo-aleatoare


deoarece anumite numere se repet.
2

De exemplu pentru a=2 i b=10, numrul 3792 se repet deoarece 3792 =


14379264.

2.2.2 Metode congrueniale


Aceste metode constau n a determina numrul Xn+1 din Xn pe baza relaiei
congrueniale de recuren:
X n1 aX n cmod M , n 0, 1, 2.K

unde a, c, M sunt ntregi nenegativi.


Pentru obinerea unui ir de numere ntregi pseudo-aleatoare este necesar s
se aleag de la nceput n mod convenabil numerele X0, a, c, M. Numrul ntreg
pozitiv X0 este termenul iniial al irului de numere pseudo-aleatoare. Acest generator
se mai numete generator mixt-congruenial, deoarece paranteza din membrul drept
conine o nmulire i o adunare.

23

Se pune problema alegerii constantelor a i c care dau o perioad maxim,


urmnd ca din clasa generatorilor respectivi s alegem pe aceia care produc numere
pseudo-aleatoare de bun calitate din punct de vedere statistic.
Teorem: irul de numere definit de relaia congruenial liniar are o perioad
maxim de mrime M dac i numai dac:
1. c este prim cu M;
2. b = a-1 este multiplu de p, pentru orice divizor prim al lui M;
3. b este un multiplu de 4 dac M este un multiplu de 4.
35

23

14

De exemplu, se pot alege: M = 2 , a = 2 + 2 + 2 + 1, c = 1, X0 = 0, a =


3141592621.
Generatorul multiplicativ - congruenial de perioad maxim
Acest generator se obine din cel mixt congruenial, lund c =
0: X n1 aX n (mod M )
Acest generator nu poate avea perioada de lungime maxim, ceea ce-l face mai puin
utilizat dect precedentul.
31
Pentru calculatoare cu lungimea cuvntului de 32 bii, se poate lua M = 2 1 cel
5

mai mare numr ntreg reprezentabil pe un cuvnt de memorie, iar a = 7 = 16807.

24

CAPITOLUL III
SIMULAREA VARIABILELOR ALEATOARE
Fie C o familie de variabile aleatoare pentru care se cunosc algoritmi de
generare. Se pune problema s determinm un algoritm T care s transforme o
mulime de variabile aleatoare CC ntr-o mulime de variabile aleatoare X, X = T
(C1, C2, ..., Cn).
Cu alte cuvinte, pornind de la o familie de variabile aleatoare pentru care
cunoatem algoritmi eficieni de generare din punct de vedere al calculabilitii, s
determinm algoritmul care genereaz variabile aleatoare mai dificil de generat.
Pentru generarea variabilelor aleatoare se utilizeaz urmtoarele metode:
1.
Metoda invers
2.
Metoda respingerii
3.
Metoda compunerii (amestecrii)
4.
Alte metode de generare a variabilelor aleatoare
5.
Metode particulare de generare a variabilelor aleatoare
3.1 Metoda invers
Lema lui Hincin-Smirnov: Dac X este o variabil aleatoare oarecare avnd
funcia de repartiie F(x), iar U este un numr aleator uniform pe (0,1), atunci
1
variabila aleatoare Y F U are funcia de repartiie F(x).
Demonstraie. Fie X o variabil aleatoare avnd funcia de repartiie F(x). Atunci:

1
F (x) PY x P F U x PU F x
1
F x, unde F
este inversa funciei de repartiie.

De aici se desprinde concluzia c dac avem o variabil aleatoare a crei


funcii de repartiie F(X) este cunoscut i un numr aleator U uniform pe (0,1), o
valoare de selecie asupra variabilei X se obine calculnd inversa funciei de repartiie
avnd ca argument numrul aleator U.
Generaliznd, rezult c fiind dat irul

X n nN de variabile

aleatoare cu

funcia de repartiie F(X) i U n nN un ir de numere aleatoare uniforme pe (0,1)


i independente stocastic se poate obine un ir de valori de selecie Yn avnd aceeai
1
funcie de repartiie F(X), Yn F U n .
Metoda invers este cea mai simpl metod de simulare a variabilelor
aleatoare. Ea prezint cteva inconveniente:
1. n simularea unor numere aleatoare uniforme pe (0,1), unele dintre acestea
se apropie foarte mult de 0 sau de 1, ceea ce prin rotunjire pot fi asimilate cu 0 sau 1.
Metoda fiind bazat pe calculul inversei funciei de repartiie F n calcule apare
adeseori funcia ln care datorit rotunjirilor la 1 sau 0 poate conduce la 0 sau la .

25

2. Metoda invers poate induce multe erori de calcul datorit prezenei unor
funcii ca ln, exp etc. care se calculeaz dup valori aproximative.
3. n multe cazuri funcia de repartiie nu poate fi inversat i atunci se
apeleaz la metode numerice care de asemenea pot induce erori de calcul.
Metoda invers poate fi aplicat pentru simularea variabilelor aleatoare de tip
continu, discret i a vectorilor aleatori.
Presupunem c dispunem de un generator de numere aleatoare Random
Numbers Generation (RNG) pentru generarea de numere aleatoare uniforme pe (0,1)
i independente stocastic. n aceste condiii, algoritmul de simulare a unei valori de
selecie a unei variabile aleatoare pentru care se cunoate funcia de repartiie F(X), se
obine aplicnd lema Hincin-Smirnov pentru cazul discret i continuu.
Simularea variabilelor aleatoare de tip discret
x 2 K x
x

Fie X :

p 2 K p

, 0 pi

1 ()i 1,2,...,n,

pi 1
i 1

Se va rezolva ecuaia F(X) = U.


Consider intervalul (0,1) pe care l acoperim cu probabiliti:
p1

p2

Generm un numr aleator U care va cdea ntr-un interval acoperit cu probabiliti pi,
ceea ce nseamn c valoarea de selecie va fi X = Xi. Putem s generm un indice
aleator.
Se genereaz U, apoi se determin i = [LU] + 1 (se determin n al ctelea
interval se afl U).
0
1
L
0
1
2

Algoritm de simulare a unei variabile aleatoare discrete:


0. Iniializare RNG.
Intrare X i , 1 i n
i

1.
2.
3.
4.

Fi X p , 0 p
1 1
j0
Se genereaz cu RNG un numr aleator U uniform pe (0, 1).
jj+1
Dac U > Fj transfer la Pas 2.
Ieire X = X j.

26

Simularea variabilelor aleatoare de tip continuu


Algoritm de simulare a unei variabile aleatoare continue:
0. Iniializare RNG.
Intrare parametri.
Iniializarea inversrii funciei F(X).
1. Se genereaz cu RNG un numr aleator U uniform pe (0, 1).
1
2. Ieire X F U .
Pentru obinerea valorilor de selecie ale unei variabile aleatoare se reitereaz
acest algoritm.
Pentru verificarea algoritmului se poate aplica cel mai simplu test care const
n calculul mediei i dispersiei de selecie. Verificarea se face pentru un volum de
generri n>1000, ceea ce nseamn reiterarea acestui algoritm se face de cel puin de
1000 de ori. Se calculeaz:
1 n X
- media de selecie m i
n i1
- dispersia de selecie
1 n X 2
i m
s2 n
1 i 1

unde X1, X2, ..., Xn sunt n valori obinute prin reiterarea algoritmului.
Se compar aceste valori cu media i dispersia teortetice i cu ct erorile sunt
mai mici, rezult c algoritmul este mai bun.
2
Algoritmul mai poate fi verificat aplicnd testul sau testul Kolmogorov.
Metoda invers pentru soluii numerice
Metoda invers poate fi aplicat i n cazul cnd nu putem calcula explicit
inversa funciei F. n aceste cazuri, trebuie rezolvat ecuaia F(X) = U numeric, ceea
ce cere un volum mult mai mare de timp cnd F este continu. Desigur c aceasta
conduce la un algoritm care are o precizie sczut.
n cele ce urmeaz X este necunoscut, fiind soluia exact a ecuaiei F(X) =
*

U, iar X este valoarea obinut prin algoritmul de calcul al inversei.


*

Condiia de oprire a algoritmului | X - X | < pentru un > 0 mic, n anumite


situaii este este posibil s nu ne satisfac deoarece pentru valori mai mari ale lui X
aceasta ar putea s implice ca numrul de cifre semnificative cerut s depeasc
cuvntul calculatorului.
O a doua condiie de oprire poate fi dat prin | F ( X ) F ( X * ) |< , unde
>0 este un numr mic.

27

Cei mai cunoscui algoritmi numerici pentru calculul inversei F(X) = U sunt:
Metoda biseciei:
Intrare: un interval (a, b) care s conin soluia:
repet
X (a + b) / 2
dac F(X) U
atunci a X
altfel b X
pn cnd b a < 2.
Ieire: X.

Metoda secantei:
Intrare: un interval (a, b) care s conin soluia:
repet
X a (b a) U F (a)
dac F(X) U
atunci a X
altfel b X
pn cnd b a < .
Ieire: X.

F (b) F (a)

Metoda lui Newton-Raphson:


Intrare: o valoare iniial pentru X.
repet

F ( X ) U

f(X)
pn cnd condiia de oprire este
satisfacut. Ieire: X.

Observaie. Pentru primele dou metode avem nevoie de un interval (a, b) care
s conin soluia. Metoda lui Newton Raphson converge dac F este convex sau
concav.

28

3.2

Metoda respingerii

Fie X o variabil aleatoare a crei generare dorim s o simulm, cu condiia si putem asocia urmtoarele elemente:

S = {S1, S2, , Sn, } o familie de variabile aleatoare pe care tim s le


generm.
N o variabil aleatoare discret, N N+, P(N ) 1, pe care tim, de
asemenea s o generm.
P o proprietate (variabil logic ce poate lua dou valori ) ce se poate verifica
prin calcul.
o funcie msurabil, : R n R.

Definiie. Dac unei variabile aleatoare X i se poate asocia un sistem de patru


elemente
{S, N, P, },
astfel nct pentru orice nN , fiind date S1, S2, , Sn, S, care satisfac
proprietatea P, variabila aleatoare (S1, S2, , Sn) are aceeai funcie de repartiie cu
X, atunci am definit un procedeu de respingere pentru generarea lui X.

Algoritm de generare (metoda respingerii):


0. Iniializri
Algoritmul pentru generarea lui N.
Algoritmul pentru generarea lui S1, S2, ,
Sn. Algoritmul pentru verificarea proprietii
P. Algoritmul pentru calculul lui .
1. Genereaz o valoare de selecie n N+.
2. Genereaz S1, S2, , Sn .
3. Dac S1, S2, , Sn nu satisfac proprietatea P (respingere)
transfer la 1.
4. Calculeaz X = (S1, S2, , Sn) (valoarea generat).
Observaii.
1. Algoritmul se numete de respingere deoarece n Pasul 3 se decide dac
are loc o respingere sau o acceptare.
2. Notm cu pa probabilitatea de acceptare i cu pr probabilitatea de
respingere; algoritmul este performant dac pa este mare, iar pr este mic.
3. N poate fi o variabil aleatoare sau o constant.
4. Familia S trebuie s tim s o generm simplu i rapid.
5. Proprietatea P trebuie s fie uor de verificat.
6. Funcia s fie simpl i uor de evaluat.

29

Lema 1 (Prima lem de respingere).


k
Fie X un vector aleator a crui densitate de repartiie este f(x), xR i pe care
vrem s-l generm.
k
Fie Y un vector aleator a crui densitate de repartiie este h(y), y R pe care
tim s-l generm.
Presupunem c exist o constant 0 < < astfel
k
nct f(x) / h(y) , xR
Fie U o variabil aleatoare uniform pe (0, 1), independent de Y.
Atunci, densitatea de repartiie a vectorului aleatoriu Y condiionat de
0 U f (y) / ( h(y))
este f(x).
Demonstraie. Funcia de repartiie a lui Y condiionat de 0 U f (y) / ( h(y))
este
k

H * ( y) = P (Y y | 0 U f (y) / ( h(y))) , y R
Notm
A = {Y y}, B = { 0 U f (y) / ( h(y)) }
Atunci
f ( y)
h( y)

P (B) = P (f (y) / ( h(y))) =

......

H * ( y ) .... (
y

...... ( d u )h( y )d y
0

f ( y ) / (h( y )) h( y )d y

y1

yk

f (v )
h(v)

d u )h( v )d v
0

...... f ( y )d y

y1

yk

..... h( v ) f ( v ) / (h( v ))d v

yk

..... f ( v )d v F ( y ) i lema este demonstrat.

Algoritm de generare (prima lem de respingere):


0. Iniializare RNG
Iniializare algoritmi pentru calculul lui f (x) i
h(y). Iniializare algoritm pentru generarea lui Y.
1. Se genereaz U cu RNG i un vector aleator Y independent de U.
2. Dac U > f ( y ) / ( h(y)) transfer la 1.
3. Ieire X = Y.
Observaii:

1. Probabilitatea de acceptare pa P(B) .


2. Procedeul este performant dac pa se apropie de 1.

30

3.3

Metoda compunerii

Fie X o variabil aleatoare a crei funcie de repartiie este F(x) de forma:


m

unde

F (x) piGi
(x) , i 1
0 < pi < 1, ( ) 1 i m, cu m>1 m

i 1

pi 1

unde Gi(x) sunt funcii de repartiie. Se spune n acest caz c F(x) este amestecarea
familiei {G1 ,G2 ,.....,Gm } de funcii de repartiie dup variabila aleatoare discret N
pentru care P(N i) pi ,1 i m sunt cunoscute.
Se observ c funciile de repartiie {GN (x)},1 N m , depind de indicele
aleator N, iar F(x) este media n raport cu N a variabilelor aleatoare {GN (x)}.
Dac notm cu Z N variabila aleatoare care are funcia de repartiie {GN (x)} ,
atunci X Zi cu probabilitatea pi P(N i).
Observaie: Dac F(x) i Gi(x) au densitile de repartiie f(x) i respectiv gi(x),
atunci
m

f (x) pi gi (x)
i 1

Procedeul de amestecare discret


Dac exist un algoritm pentru generarea variabilelor ZN, 1 N m, , atunci
algoritmul de generarea variabilei aleatoare X se prezint astfel:
Algoritm 1 de generare prin amestecare discret:
0. Iniializare RNG.
Iniializarea algoritmului pentru generarea unei variabile din familia {ZN }.
i

Intrare Gi p ,1 i m
1

j0
1. Se genereaz un numr U uniform pe (0,1).
2. j j + 1
3. Dac U < Gj transfer la 2.
4. Ieire X = Zj.
sau

31

Algoritm 2 de generare prin amestecare discret:


0. Iniializri.
1. Se genereaz un indice aleator (o variabil aleatoare discret).
1
2 ... m

p
... p
iI:
p
2

2. Ieire X = Zi.

Exemplu:
La un service sosesc pentru verificare periodic automobile de k tipuri:
1
K:

2 ...
i ... k
p
... p
... p
2
i
1
k
reprezint procentul de
maini de tipul i. Durata Zi , 1 i k

unde pi , 1 i k
dintre dou sosiri de acelai tip este o variabil aleatoare exponenial negativ de

parametru i , 1 i k . Intervalul de timp X dintre dou sosiri oarecare are ca funcie


i x
de repartiie amestecarea funciilor de de repartiie Gi (x) 1 e
, x 0,1 i k ,
ceea ce nseamn c funcia de repartiie a lui X este dat de
k

F (x) pi (1 ei x )
i1

Algoritm de generare prin amestecare:


0. Iniializeaz RNG.
Intrare i , 1 i k
i

Intrare Gi p ,1 i k
1

j0
1. Se genereaz U cu RNG.
2. j j + 1
3. Dac U < Gj transfer la pasul 2.
4. Se genereaz un nou U cu RNG.
3. Ieire X

lnU. j

32

Procedeul de amestecare continu


Funcia de repartiie F(x) constituie compunerea unei familii de funcii de
repartiie {G(x, y), y R}dup funcia de repartiie H(y), de forma:

F (x) G(x, y)dH ( y)

Se observ c F(x) este valoarea medie a funciei de repartiie G(x,Y), unde Y este un
parametru aleator care are funcia de repartiie H(y).
n acest caz, algoritmul de generare a variabilei aleatoare X cnd se cunosc
algoritmi de generare pentru Y (avnd funcia de repartiie H(y)) i pentru Zy (cu
funcia de repartiie G(x,Y)) se prezint astfel:
Algoritm de generare prin amestecare continu:
0. Iniializare RNG.
Iniializarea algoritmului pentru generarea lui Y.
Iniializarea algoritmului pentru generarea lui Zy.
1. Se genereaz Y.
2. Se genereaz Zy.
3. Ieire X = Zy.
Exemplu: Fie G(x, ) 1 e

, x 0, 0 unde este un parametru aleator

care are repartiie exponenial H () 1 e


, 0 . Aplicnd procedeul de
amestecare continu, funcia de repartiie F(x) se obine astfel:

F (x)

(1 e

)e

d 1 x

i reprezint funcia de repartiie Pearson de tipul XI.


Soluie: Algoritmul de generare a variabilei aleatoare X ce corespunde amestecrii
familiei de repartiii exponeniale {G(x, ), 0} dup repartiia exponenial H()
este urmtorul:
Algoritm de generare (variabila Pearson XI):
0. Iniializeaz RNG.
1. Se genereaz U cu RNG.

2. Se calculeaz lnU .
3. Se genereaz un alt U cu RNG.

4. Ieire X lnU.
Acest algoritm poate fi utilizat pentru generarea unor valori de selecie urmnd
repartiia Pearson de tipul XI.
33

Observaie: Dac n expresia F (x) piGi (x) , unele probabiliti pi sunt i


1

mari, iar variabilele aleatoare corespunztoare Zi se genereaz uor, atunci algoritmul


de generare este performant.
3.4

Alte metode de simulare

Simularea variabilelor aleatoare normale N(m,) bazat pe teorema limit


central
Variabila aleatoare X cu repartiie normal N(m,) are densitatea de repartiie
de forma:

xm2
2

, xR
f x 2 e
2
2
cu m = M(X), = D (X), > 0.
Pentru m = 0 i = 1 se obine repartiia normal redus N(0,1) cu
densitatea
de repartiie
2
g x 1 e x
2 , xR
2
Legtura dintre variabila aleatoare Z avnd repartiie normal redus
Z ~ N(0,1) i variabila aleatoare X care are repartiie normal X ~ N(m, ) este dat de
transformarea X = m + Z .
Generarea variabilei aleatoare N(0,1) se poate face folosind teorema limit
central:
Teorem: Dac X 1 , X 2 ,...., X n este o selecie efectuat asupra unei variabile
2

aleatoare X, astfel nct media M(X) = m i dispersia D (X) = , atunci


Z X1 X 2 ..... X n nm

n
are asimptotic (cnd n ) repartiia N(0,1).
Dac U1, U2, ..., Un este o selecie de numere aleatoare uniforme pe (0,1),
independente, atunci variabila Y = U1 + U2 + ...+ Un are asimptotic repartiie normal
cu media n / 2 i dispersia n / 12.
Teorema limit central poate fi folosit pentru generarea unei variabile
normale N(0,1).

34

S-a constatat c dac volumul de selecie n satisface condiia n > 10, atunci
variabila
Yn
2 poate aproxima o variabil N(0,1).
Z
n
12
Pentru n = 12 se obine Z = U1 + U2 + ...+ U12 - 6, care este o metod rapid de
generare, dar aproximativ.
Algoritm de generare a unei variabile aleatoare N(0,1) folosind teorema
limit central:
0. Iniializare RNG.
1. Se genereaz cu RNG 12 numere aleatoare U1, U2, ..., U12 uniforme i
independente pe (0,1).
2. Ieire Z = U1 + U2 + ...+ U12 - 6.
Metoda polar
Metoda polar se bazeaz pe teorema lui Box i Muler.
Teorem. Dac U1, U2 sunt dou variabile independente, uniforme pe (0,1),
atunci variabilele aleatoare
Z 1 V 2ln S i Z 2
V
1
S
cu V1 = 2U1 1, V2 = 2U2 1 i S V

2ln S

S
V , S < 1, sunt variabile aleatoare normale
2
2

N(0,1), independente.
Algoritm de generare a unei variabile aleatoare N(0,1) folosind metoda
polar:
0. Iniializare RNG.
1. Se genereaz cu RNG dou numere aleatoare U1, U2 independente,
uniforme pe (0, 1).
2
2
2. Se calculeaz V1 = 2U1 1, V2 = 2U2 1, S V1 V2 .
3. Dac S > 1 transfer la pasul 1.
4. Ieire X V 2ln S sau X V 2 2ln S
1

35

Simularea repartiiei gama


O variabil aleatoare X cu repartiie gama G(, , ) are densitatea de repartiie
de forma:

1 (x )

(x )
e
,x

f (x) ( )

0, x
unde R este parametru de locaie, > 0 este parametru de scal, > 0 este
parametru de form, iar

( ) y
0

1 y

dy

O variabil aleatoare Y are repartiia G(0, 1, ) dac are densitatea de repartiie


de forma:

1 1 x
x e ,x 0

f ( y) ( )

0, x 0

ntre cele dou variabile aleatoare exist relaia


X Y ,

ceea ce nseamn c generarea lui X se reduce la generarea lui Y.


Fie X o variabil aleatoare avnd repartiie gama cu densitatea de repartiie de
forma:

1 1 x
x e ,x 0
f (x) ( )
, 0

0, x 0

i Y o variabil aleatoare avnd o repartiie Weibull:

1 x , x 0
x
e
, 0

h(x)

0, x 0

Vom genera variabila X tiind c Y este o variabil Weibull i se genereaz mai uor.
Pentru aceasta vom utiliza prima lem de respingere i vom determina pe astfel nct
f (x)
1

x x
h(x) ( ) e
Considerm cazul cnd 0 < < 1 i se obine:
1
1 1.

x
( 1)
( ) e

36

Algoritm de generare a unei variabile aleatoare gama G(, , ), 0 < < 1:


0. Iniializare RNG.
Intrare , .
1. Se genereaz Y ~ h().
2. Se genereaz U ~ U(0,1).

f (Y )

3. Dac U

h(Y )
4. Ieire X = Y.

transfer 2.

n cazul > 1 se poate alege k = [] + {} i se genereaz prin metoda


compunerii pentru [] cu Erlang, ca sum de exponeniale. Repartiia Erlang are
funcia de densitate de forma:
1 k1 x

x e , x 0, k

f (x) (k)

0, x 0

iar generarea se face dup formula X ln Ui .


i 1

Mai departe se aplic metoda compunerii:


f(x) = p1 f1(x) + p2 f2(x),
unde

f
1

1 f (x), x 0
(x) p
pentru Z+,

0, x 0

iar
k

p1 f (x)dx i p2 = 1 p1.
0

Simularea repartiiei beta


Dac variabila aleatoare X are repartiie beta de parametri p i q, atunci
densitatea sa de repartiie este de forma:
1
(1 q 1 x 1

x)
,0
p1
x
f(x, y) = B( p, q)

unde

0, x (0,1)
1

B( p, q) x
0

p1

(1 x)

q1

dx

37

Simularea repartiiei beta se bazeaz pe urmtorul rezultat:


Teorem. Dac X1, X2 sunt dou variabile aleatoare avnd repartiie gama de
parametri p i respectiv q, atunci variabila X
este o variabil beta de
X1
X1 X 2

parametri p i q.

Algoritm de generare a unei variabile aleatoare beta:


0. Iniializare RNG.
Iniializare algoritm pentru generarea variabilei aleatoare
gama. Intrare p, q.
1. Se genereaz X1 ~ gama (p).
Se genereaz X2 ~ gama (q).
.
2. Ieire X
X1
X1 X 2

3.5

Metode particulare

Unul din principiile generale de generare a variabilelor aleatoare const n a


reduce problema la generarea variabilelor aleatoare mai simplu de generat i dac este
posibil la variabile aleatoare uniforme.
Vom prezenta o metod particular de generare a variabilelor aleatoare bazat
pe principiul respingerii, folosind vectorii aleatori uniformi pe un domeniu
D u, v; u, v 0,
unde este frontiera domeniului D.
Algoritm de generare (metod particular):
0: Iniializare RNG.
Intrare parametrii.
Se determin I = [u1, u2][v1, v2] astfel nct D I, u1 0.
1: Se genereaz U ,V dou numere aleatoare independente,
uniforme pe (0,1).
u u u U

2: Se calculeaz
2
1
1

v1 v2 v1 V

D transfer la 1.

4: Ieire X hU ,V .

3: Dac U ,V

38

Observaii:
1. Procedeul prezentat este un procedeu de respingere, deoarece la pasul 3
sunt respinse punctele care nu aparin domeniului D.
2. Performana algoritmului este
dat de probabilitatea de acceptare
aria D .
pa
aria I
3. Algoritmul este considerat performant dac pa este mare, adic 1
pa 1.
3
4. Probabilitatea de respingere este
pr 1 pa .
O problem dificil n aplicarea acestui algoritm const n determinarea
intervalului bidimensional I, cu 0 u1 < u2 < i - v1 < v2 < . Pentru determinea
intervalului I exist cel puin dou metode, pe care le vom prezenta n continuare.
1. Metoda multiplicatorilor lui Lagrange
Domeniul D se poate scrie sub
forma D = {(u,v) / (u,v) 0}
Aplicnd metoda multiplicatorilor lui Lagrange rezult c u1 i u2 se
determin din condiiile:
F1(u,v) = min
F1(u,v) = max
unde
F1(u,v) = u + (u,v)
cu condiia (u,v) = 0 ( este multiplicatorul lui
Lagrange). Determinm soluiile sistemului:
F
1 0
u

1 0

=> u ui , v vi , i 1, ui , vi 0 .

=> u1 min ui , u2 max ui

Pentru determinarea lui v1 i v2 se consider funcia


F2(u,v) = v + (u,v)
Acum determinm soluiile sistemului:
F

2 0
u

2 0

=> u ui , v vi , i 1, ui , vi 0 .

=> v1 min vi , v2 max vi

39

2. Metoda tangentelor
Se consider tangentele la domeniul D de forma u = const., respectiv v =
const. Se determin punctele

P u1, v , Q u2 , v
, R u , v1 , S u , v2

Cum D = {(u,v) / (u,v) 0} i d u du v dv


rezult c panta tangentei este
dv


mu, v
u
du

v
Valorile u1 i u2 se determin din condiiile

u1 : lim mu, v , u1, v 0

u u1

vv

u2 : lim

mu, v , u2 , v

u u2

vv

iar valorile v1 i v2 se determin din condiiile

v : lim mu, v 0, u , v
1

u u

vv1

v2 : lim

u u

1 0

mu, v 0, u , v2 0

vv2

Lem. Fie X o variabil aleatoare a crui densitate de repartiie este este de


forma
f x 1 g x, xR
K
unde K gxdx .
R

Fie (U, V) un vector aleator uniform pe domeniul mrginit

v
D u, v;0 u g

12

40

Atunci, X V are funcia de repartiie F(x), unde F(x) este funcia de repartiie
U
corespunztoare densitii de repartiie f(x).
Demonstraie.
Vectorul (U, V) este uniform pe D atunci:
1 , u, v

gu, v

aria D

0, n rest

aria D dudv
D

dudv

0u g1 2

Dac se face transformarea


v x u t ,
u

ut
v tx

al crui Jacobian este


Du, v

1 0
u u
t x
t
x t
Dt , x v v
t x

Atunci

dudv D u , v dtdx => du dv = t dt dx


D t , x

aria D

0t g

tdtdx

1/ 2 (x)

1/ 2

(x)

tdt

t 2 g1/ 2 (x)

dx

1
dx

K
g(x)dx

i se poate calcula funcia de repartiie a variabilei aleatoare X = V / U:


x 1 2
2 g1/ 2 ()
1
1 x

g
x t
2

V
P X x P

aria D

tdt d

f ()d F (x) .

41

2 0

g()d

Exemplu (generarea variabilei aleatoare Weibull)


Fie X variabil aleatoare Weibull de parametru >0. Atunci funcia de densitate
are forma

1 x

f (x) = x
e
, x 0, 0

0, x 0

Aici K = , g(x) =

1e

i D

u,v;0 u

1 v

2 u

1
2

1 .

se obine:

u, v ln u 1 v 1 v 0

ln

2 u
2 u

D u, v; u, v 0

n plus,
v

d du udv vdu

2
u 2
u u

1 udv vdu
1

de unde

u
Notnd cu

u
2

u2

v
u

dv v du v 1 1 dv v du

du

u u

vu
q , avem
u du
dv qdu

2 u

Notnd cu u, v ln ue

v
u

Domeniul D se mai poate scrie:

1 v


D u, v; 0 ue 2

v 2

1 v

1 dv qdu

q
2 u
2
0 /u
q
du dv qduq 1 1 dv qdu 0 / : du
2
q

4
2


dv

1 dv q
d
1
u
1

qq

0
2
q

1 1
d
dv
v

2
2

du
q

2 du

1 1

du

2
q

dv q

dv

2q

du

q q 1

q 1

q 1 du

dv
a) Valorile u1 i u2 se determin din condiiile du q sau q
q u => u 0 . Cum u 0 u 0 .

1 0

v1

1 1 . Cum u, v 0 =>
q 1 0 => q

u
ln u 1 1 1 1 1
1 1

ln

0 => ln

1 1

=> u2

1 2

b) Valorile

1 0

1 1

ln


1/

q v
v2 uq
u

1
1/

=> v2

1 2 2

1 2 2

u
0 ln

1/

Cum u, v 0 rezult c

ln u

u1 i u2 se determin din condiia => q q 1 0 =>

q 0 sau q 1 0
q 0 v 0 v 0
u 1
q

e 2

1 1
2

1
u

43

Algoritm de generare a unei variabile aleatoare Weibull:


0: Iniializri RNG

Intrare >1, u1 = 0, u2

v1 = 0, v2

1 1

2 e 2


1 1

e 1
2

1: Se genereaz U ,V uniforme pe (0, 1) i independente.

2: Se calculeaz U u2U ,V v2V .

3: Dac ln U 1
ln V 0 transfer la pasul 1
1

2U

4: Ieire X V .

U
Lem.

Fie X o variabil aleatoare a crei densitate de repartiie este


f x 1 gx, g x 0, x R . Fie (U, V) un vector aleator pe domeniul D,
K
2 v

D u, v: 0 u g

cu aria D < . Atunci densitatea de repartiie a lui X V

este f(x).

Generarea variabilelor aleatoare N(0,1)


Reamintim c X ~ N(m, ) dac funcia de densitate este
1 x m2
2

, xR.

f(x) = 2 e

n cazul particular X ~ N(0,1) se obine f(x) =

1 x2
e

2.

2
Pentru aplicarea lemei avem
K

2
, g x e x

4
4

D u, v: 0 u e

v2

Notnd

u, v ln u 1 v

1v

u, v: 0

ue 3 u 1

2 .

3u

se obine D u, v: u, v 0.
n continuare,
F u, v u u, v u ln u 1 v2 .
1
3 u
2
2
2
F
1 v
3u 3u v

=>

Apoi,

3u

3u

2
2
F1 0 3u 3u v 0 1.
u
2 v 0 v 0 2
F1

3u
v
Din relaiile (1) i (2) se formeaz sistemul:
2 3u
2 0

v
3u

v0

v0

Completnd sistemul anterior:


F 0

1
u
u

v0

1 0
v

1 2
u, v 0 ln u v
0

3u

Deci ln(-) = 0 => = 1. Rezult i c u1 = 0 i u1 = 1.


2
F u, v v u, v v ln u v
2

3u

v .
2
u
3u
u

=> F

Din

2 0

u
n continuare,

3u v

3u

2v .

3u

2 1

00

3
2

4
5

0 1 2 v 0 1 2 3
0v

3
u
3
2
v
v
Completnd sistemul derivatelor pariale:
2
2
2
v
v
v
F2 0

3
u
u
u
u

F2 0 v
v
v
v

2
1
3

2
v 0
u
u, v 0
ln u 1
v
e
e

3u

Din

F2

de unde se obin valorile v1 i v2:

v 3
1

v
2

3
e

Algoritm de generare a unei variabile aleatoare N(0,1):


0: Iniializare RNG
Intrare: v1 3 / e, v2 3 / e
1: Se genereaz U ~ U (0,1) .

*
*
Se calculeaz U U U u1 u2 u1 U ~ U 0,1
2: Se genereaz V '~ U (0,1)
*
Se genereaz *
V v1 v2 v1 V => V ~ U v1, v2
*
*2
*
3: Dac ln U 1/ 3V /U 0 transfer la 1.

(perechea U * ,V * generat nu este n domeniu)


.
*
4: Ieire X
V
*
U
Probabilitatea de acceptare este:
aria D
pa

=
aria I

v x

dudv
D

u2 u1 v2

v1

u
ut

... Pa 0,75

46

CAPITOLUL IV

i lim D
n

I n 0 , adic In este o estimaie

SIMULAREA VECTORILOR ALEATORI


Problema generrii vectorilor aleatori este de mare importan n construirea
modelelor de simulare, generarea unor procese stochastice, n aplicarea metodei
Monte Carlo la integrale multiple.
Pentru a gsi metode de generare a vectorilor aleatori s-a ncercat
generalizarea unor metode folosite la generarea variabilelor aleatoare; datorit
dificultii de calcul puine dintre acestea au condus la rezultate scontate.

Pentru calculul integralelor multiple I f (V )dV , D R , se poate folosi


urmtorul procedeu Monte Carlo:
- se genereaz o selecie V1, V2, ..., Vn de vectori aleatori independeni identic
repartizai cu repartiie uniform pe D;
1 n

- se estimeaz I prin I n
f Vi .
n i 1
2

Dac f L (D) atunci M(In)=I


absolut corect pentru I.

Calculul integralei In cnd n este suficient de mare cu ajutorul calculatorului


prin metoda Monte Carlo este uneori mai eficient dect prin mijloacele analizei
numerice.
4.1 Generarea vectorilor aleatori prin metoda invers
Lem.
k
Fie X = (X1,..., Xk) R vector aleator cu funcia de repartiie F(x1, x2, ..., xk).
Fie urmtoarele notaii:
F1x1 PX1 x1

F2 x1, x2 P X 2 x2 | X1 x1
LLLLLLLLLLLLLL
Fk x1, x2 ,K, xk P X k xk | X1 x1,K, X k1 xk1
unde F1(x1) este funcia de repartiie marginal a variabilei aleatoare X1, F2(x1, x2)
este funcia de repartiie a variabilei aleatoare X2 condiionat de X1 < x1, etc.
Dac U1,..., Uk sunt numere aleatoare uniforme pe (0,1) i independente
k
stocastic, atunci vectorul aleator Y = (Y1,..., Yk) R cu:

47

Y1 F 1

U1

1
Y2 F2 Y1,U 2
LLLLLLLL
1
Yk Fk Y1,Y2 ,K,Yk1,U k

are funcia de repartiie F(x1, x2, ..., xk), unde Fi

x1,K, xi1, y este inversa lui

Fi(x1, x2, ..., xi).


Demonstraie:
Pentru simplificarea scrierii se va da demonstraia n cazul k = 2. Pentru k > 2
demonstraia se poate realiza prin inducie.
F(x1, x2) = P(X1 < x1, X2 < x2) = P(X1 < x1) P (X2 < x2 / X1 < x1)
= = F1(x1) F2(x1, x2)
Repartiia comun a vectorului (Y1, Y2) este:

PY1 y1,Y2 y2 P F1 U1 y1, F2 Y1,U 2 y2


PU1 F1 y1 , U 2 F2 Y1, y2 | Y1 y1 PU1 F1 y1 .

PU 2 F2 y1, y2 | Y1 y1 F1y1 F2 y1, y2 F y1, y2

4.2 Generarea vectorilor aleatori avnd repartiie uniform


Se presupune c I este un interval k-dimensional, Ii = (ai, bi), 1 i k i V este
un vector aleator care are repartiie uniform pe I.
Se noteaz cu
1

, dac x I
k

(x) bi ai
i 1

0, n rest

densitatea de repartiie a lui V, atunci


k

x i xi ,
i1

unde i este densitatea de repartiiei Vi, uniform pe Ii = (ai, bi).


Vectorul V are componente variabile aleatoare uniforme pe (ai, bi) i independente.

48

Algoritm de simulare a unui vector aleator uniform pe (a,b) :


0. Iniializare RNG.
Intrare k0, i0.
1. Se genereaz variabila aleatoare U uniform pe
(0,1) i i+1
2. Vi ai + (bi - ai)U
3. Dac i k transfer la pasul 1.
4. Ieire V = (V1,..., Vk).
Pentru a genera un vector aleator V care are repartiie uniform pe un domeniu
k
oarecare D R , notm cu I intervalul care conine domeniul D. Dac D domeniu
simplu conex i f(X) = 0 este ecuaia frontierei care delimiteaz acest domeniu, f fiind
o funcie de k variabile, atunci algoritmul de generare bazat pe metoda respingerii se
prezint astfel:
Algoritm de simulare a unui vector aleator uniform pe D:
0. Iniiaizare RNG.
Intrare I (ai, bi, 1 i k).
1. Se genereaz un vector U uniform pe I.
2. Dac f(U)>0 transfer la pasul 1.
(se presupune c UD dac f(U)<0)
3. Ieire V = U.
Cele mai simple i rapide metode de generare a vectorilor aleatori constau n a
reduce problema generarea vectorilor aleatori uniformi, care sunt cei mai uor de
generat.
Lem.
k

Fie X = (X1,..., Xk) un vector aleator cu valori n R a crui densitate de


repartiie este
1
,
fX
H g X

cu

k
g X 0, X R

i
H gX dX .
k
R

k+1

Fie (V0, V1,..., Vk) un vector aleator uniform pe domeniul D R

v
v
D v

, v ,...,v k

' Rk 1, 0 v

49

g1

k 1

,...,

v 0

presupus mrginit (adic aria D < ).


Atunci densitatea de repartiie a lui X = (X1,..., Xk), unde
X i Vi V0 , i 1,2,...,k
este f(X).
Demonstraie. Dac vectorul aleator (V0, V1,..., Vk) are repartiie uniform pe D,
atunci densitatea sa de repartiie este dat de
1
, dac v0,v1,...,vk ' D ,
gv0,v1,...,vk

aria D

0,

n rest

unde
aria D

0 g

k1

Kdv0dv1...dvk
vk

,...,

Facem transformarea de coordonate:


x v v 0
v tx

x v v
2

......

x
k

v tx
2

=>

......

vk v0
tv 0

tx0
v0 t
v
k

al crui Jacobian este


1
Dv 0,v1,...,vk
Dt,x1,....,xk

0
t

x1
x2

0
0

... 0
... 0

0
t ... 0
... ... ... ... ...
0 ... t
xk 0

Atunci
1

aria D

g k 1

...t k

0t g k 1 x ,...,x k

Acum se obine:

P X1 x1,..., X k

xk P

x1,...,

t dtdx1...dxk

H
k 1

vk

dtdx1...dxk K
123
R

1
K g x1,..., xk dx1...dxk
k 1 123

x ,...,x

v0

aria D v

Kdv0dv1 Kdvk

vk

x1

,...,

xk I D

v0

5
0

k 1 H

x k g k 1

tk

1 x1 xk gx Kx
K
H

x ,...,x k

dtdx ...dx k
1

dx ...dx
k

F X ,
k
k

unde F(X) este funcia de repartiie a lui f(X), XR i lema este demonstrat.

Algoritm de simulare a unui vector aleator:


0. Iniializeaz algoritmul RNG pentru generarea unor numere
aleatoare uniforme pe (0,1);
Intrare parametri.
Se determin un interval I, D I, de forma:
1
2
1 2
1
2
I [v 0 , v0 ][v1 , v1 ]K[v k , vk ]
*
*
*
1. Se genereaz vectorul aleator (V0 ,V1 ,...,Vk ) uniform pe I, astfel:
*
1
2
1 i
V v (v v )U , i 1,2,...,k unde Ui sunt numere
i

aleatoare independente, uniforme pe (0,1).

V0*,V1*,...,Vk* ' D transfer la pasul 1, altfel la pasul 3.


* *
*
Ieire X i hV0 ,V1 ,...,Vk , i 1,2,..., n .

2. Dac
3.

Observaii:
*
*
*
1. Punctele (V0 , V1 , ..., Vk ) sunt uniform repartizate pe domeniul mrginit
D, algoritmul descris mai sus fiind un algoritm de respingere.
2. Performana algoritmului este caracterizat de probabilitatea de acceptare
(probabilitatea de trecere de la pasul 2 la pasul 3) dat de
aria D .
pa

vi2 vi1

i1

3. Algoritmul este performant dac pa este mare.


Dificultatea aplicrii acestui algoritm const n determinarea intervalului
minimal I care-l conine pe D. Pentru aceasta l putem scrie pe D sub forma:
D

v0 ,...,vk ' ; v0 ,...,vk 0

i procedeul de determinare a lui I revine la a rezolva problemele de optim


1
2
v i min vi , vi max vi , 0 i k .
D
D

51

Aplicnd metoda multiplicatorilor lui Lagrange pentru rezolvarea problemelor de


optim, vom gsi pe v0, v1,,vk astfel ca:
Fi v0 , v1,..., vk min

Fi v0 , v1,..., vk max , i 1,2,...,n

unde

Fi v0 , v1,...,vk vi v0 , v1,...,vk

cu restricia

v0 , v1,..., vk 0.
n continuare aplicm lema i algoritmul pentru generarea vectorilor
aleatori avnd repartiie Dirichlet i multinomial.
4.3 Generarea vectorilor aleatori avnd repartiie Dirichlet
Vectorul aleator X = (X1,..., Xk) este repartizat Dirichlet de parametri 1,...,
k1 dac densitatea sa de repartiie este:
1 ...xk 1 1 x ... x k k 11
x1

1 ... k

f x ,...,
x

1 ... k

sau

(4.1)

f x1,..., xk H h x1,..., xk
unde
H

...

1 ... k1

1 1

hx1,..., xk x1
Notm

k1

k 1
k1 1
...x k
1 x1 ... xk

(4.1')

d k 1, i i 1,1 i d ,

i1

Domeniul D din lem devine:


d

D 0

sau

v1

v0

...vk

v d
0

5
2

i1

k 1

v i

(4.2)

d
d v 1 ...v k
D 0v

k 1

d 1

(4.2')

unde v vi .
i1

Introducnd funcia : v0 , v1,...,vk

ln v0

i 1

ln vi

k1

lnv0 v

domeniul D devine: D v0 , v1,..., vk 0


Pentru a determina intervalul

k1

IR

, aplicm

metoda multiplicatorilor lui

unde este multiplicatorul lui Lagrange.

Lagrange funciilor: Fi vi ,0 i k
Cazul i=0.
n acest caz avem:
F

d 1

v0

d v0

vl

F0

dv

0,

k1
1

k1

d v0 v

Din a doua relaie (4.4) deducem :

k 1

v0 v

i1

l1

l1

Din i l k1 l

(4.4)

d v0 v

v ,...,v k

v v0 k 1

vl adic vl k1 v0 vl ,1 l k .
l

k1 , nsumnd dup l, se obine

(4.5)

Din prima relaie (4.4) deducem :


v0
v0 v
vl

k 1

Introducnd valorile lui v date de (4.6) n a treia relaie (4.4), obinem:


k1

ll

de unde

l1

(4.6)

5
3

d
0

1
v0 0, v 0

l1

(4.6b)

Cazul i 1.
n acest caz avem:
d 1

F
i

v0

vi

vl

d v0

d vi

l 1

k1

v0 v

d v0 v

k1

v0 v

d
v0

k1

(4.7)

0, l i,1 l k

i
1

Din prima relaie (4.7) deducem:

d v0 v

d vl

d
,
v
,...,v
F v
0
0

k1

adic

k1

v0 v

(4.8)

v0

d
A 2-a relaie (4.7) conduce la :
vi

i v0

(4.9)

dv0 d

Din a 3-a relaie (4.7) gsim :

(4.10)

vl l v0 d ,l i,1 l k
Din (4.8) se obine apoi

(4.11)

v v0 d k1
d
Din (4.9), (4.10), (4.11) se deduce c :
d
v0
, vi
d i

,li
vl l
d i

Introducem valorile date de (4.9) i (4.12) n ultima relaie (4.7) i se obine:

(4.12)

5
4

d i

ll d d i

d dd

adic:
0

d i d d i

1
0, vi

vi

l1
li

k1

l1

l l d

Deci intervalul I este: I 0, v1 0, v1 ... 0, v1 unde v1


0

,1 i k

este dat de (4.6b), iar

v i ,1 i k sunt dai de (4.13).

Algoritm de simulare a unui vector aleator Dirichlet:


0: Intrare k, i ,1 i k
1 Se calculeaz
d k 1
k 1

a i
i1

a1 d
a2 d d
bi i d ,1 i k 1
1
1
Se calculeaz v 0 conform cu (4.6b) i v i conform cu (4.13), 1 i k
1: Se genereaz U uniform pe (0,1) i ia v v1 U
0
0
2: Se genereaz U ,1 i k,U ~ 0,1 i independente i calculeaz
i
i
k

1
X i v iUi ,1 i k, v' X i
i'1

3: Dac v0 v 0 transfer la pasul1

k
k1
4: Dac a0 ln v0 bi ln X i
lnv0 v 0 transfer la pasul 1.
d
i'1

5: Ieire X i

i
V0
Probabilitatea de acceptare este:

pa

H
k 1

1
k

v1i

i0

sau

(4.13)

5
5

pa

1 ... k 1

k 11 ... k 1

2 1

d d

n n
Se poate aplic formula n| n e
2n .

i d i

d d

i 1

d
i

Algoritmul este performant pentru valori nu prea mari ale parametrilor.


4.4 Generarea vectorilor aleatori avnd repartiie multinomian
Repartiia multinomial este o extensie a repartiiei binomiale. Un vector
aleator X = (X1,..., Xk) are o repartiie multinomial dac funcia sa de repartiie
este:
xk
x x
2
n
n!
f x , x ,..., x
p 11 p 2 ...p
x !x 2!...x n !
1
2
k
1
unde
k

xi 0, xi Z, xi n
k

i 1

0 pi 1, pi 1
i 1

Repartiia multinomial se bazeaz pe urmtorul model: ca rezultat al unei


experiene sunt posibile evenimentele incompatibile A1,..., Ak , pi PAi , iar Xi
reprezint numrul de apariii ale evenimentului Ai n n experiene.
2
Se tie c M X i npi , D X i npi 1 pi
Algoritm de simulare a unui vector aleator multinomial:
0: Iniializare RNG.
k

Intrare n, p ,1 k, p 1
1

Se calculeaz Fi p ,1 i k
1

Iniializare j 0.
1: Genereaz un U cu RNG.
l 0, j j + 1.
2: l l + 1

3: Dac U Fl transfer la Pas2


4: X l X l1
5: Dac j n transfer la pasul 1.

6: Dac j n, X X 1,...X k'

56

Vectorul X este vectorul multinomial generat. Componentele lui X se obin


prin numrarea evenimentelor Ai care apar n n experiene, astfel nct n fiecare
experien apare numai un astfel de eveniment.
Conform algoritmului, se utilizeaz evenimentul Ai dac numrul aleator U
cade n intervalul I

0,1

de lungime pi ,1 i k . Pentru simularea


evenimentelor Ai se acoper intervalul (0,1) cu k intervale aezate ntr-o anumit
ordine, avnd respectiv lungimile p j ,1 j k .
Repartiia multinomial poate fi utilizat n controlul statistic al calitii;
unul din evenimentele Ai corespunde piesei defecte, iar celelalte corespund la
diferite categorii de calitate.
4.5 Generarea vectorilor aleatori avnd repartiie normal
Fie X un vector aleator k-dimensional normal N,, unde este vectorul
valoare medie i este matricea
de covarian presupus pozitiv definit.
k

Densitatea de repartiie a lui X R , este:


1
f x, ,
t 1
k2
1 2 e1 2x x
2 det
unde forma ptratic
t 1
x x x
este pozitiv definit. Densitatea de repartiie a vectorului aleator Z normal N 0, I
unde 0 este vectorul nul i I este matricea unitate, este:
k
1
1
f x, O, I
t
2
1
2x
x

e
exi 2
k2
2
i1 2
ceea ce nseamn c vectorul Z are k componente independente, avnd fiecare
repartiia normal N(0,1). Generarea vectorului Z se face genernd k variabile
normale N(0,1) independente. Pentru a genera un vector aleator N , se
folosete teorema:
Teorem. Dac Z este un vector aleator k-dim normal N O, I i X este un

vector aleator k-dim normal N , , iar C este o matrice superior triunghiular


t
astfel ca CC , atunci vectorul aleator
Y CZ
are aceeai repartiie ca X.

57

Algoritm de simulare a unui vector aleator normal N , :


0: Iniializare RNG.
Intrare , .
Se calculeaz elementele matricei C.
1: Genereaz un vector aleator Z ~ N 0, I.
2: Se calculeaz X CZ .

Caz particular: k = 2.
Vectorul X X1, X 2 are repartiie normal bidimensional:
2
1
1 2Q x1,x2
f x , x

2 det

unde

Qx , x 2 11 x
1

11

12

2 12x x 2

, ,

21

22

`, M
2
i X

2 221 x2 2

, =
i

ij CovX i , X j ,i, j 1,2


2
2
2
X i , Cov X1, X 2

2
, D

i
1

1 2
2

Reamintim:

CovX ,Y M X M X Y M Y XY M X M Y .
CovX ,Y 0 dac X i Y sunt independente.

X ,Y CovX ,Y este coeficient de corelaie.

X Y
Funcia de densitate se mai poate scrie astfel

f x, y

2
1

2 1 2

xm

21 2

xm1 ym2 ym2

12

58

CAPITOLUL V
APLICAII ALE SIMULRII

5.1 Calculul integralelor multiple prin metoda Monte Carlo

Fie z = f (x1, x2, ..., xk) o funcie continu ntr-un domeniu mrginit D din
spaiul cu k dimensiuni. Problema care se pune este s calculm integrala multipl:
(5.1)
I ... f x1, x2 ,K, xk dx1dx2 Kdxk

123
D

Geometric, numrul I reprezint volumul k+1 - dimensional al unui cilindru


drept n spaiul Ox1x2...xkz avnd ca baz domeniul D i mrginit superior de suprafaa
z = f (x1, x2, ..., xk).

59

Se transform integrala (5.1) astfel nct domeniul de integrare rezultat s fie


coninut n cubul unitate k - dimensional.
Dac domeniul D este cuprins n paralelipipedul k dimensional
(5.2)
ai xi bi , 1 i k
prin transformarea
(5.3)
xi = ai + (bi ai )i
paralelipipedul k - dimensional se transform n cubul unitate k - dimensional:
0 i 1, 1 i k
i domeniu de integrare D va fi cuprins n acest cub unitate.

Jacobianul transformrii este


x1
D x ,
x

2 ,K,

D1,2,K,k

x1

x2

x2

= 1

x1
k

x2
k

L L O L
xk xk
1 2

xk
k

b1 a1

b2 a2

L bk ak

i se obine:

=
j1

b j a j

6
0

(5.4)
I

... h1,2 ,K,k d1d2 Kdk


123

unde
h1,2 ,K,k b1 a1Kbk ak f a1 b1 a1 1,K, bk ak k
Notnd

1,2 ,K,k
d d1d2 Kdk
integrala (5.4) se poate scrie sub forma prescurtat:
(5.5)

I ... Lh d
D

123

Vom prezenta dou metode de calcul al integralei (5.5), folosind numerele


aleatoare.
Prima metod
Se consider un tabel cu numere aleatoare uniform repartizate pe (0,1) i
independente. Se aleg k iruri din aceste numere:
1

,2

,K,n

2 2

,2

(k)

,K,n

,K,n

KKKKKKKK 1

,K

,K

,2

,K

1 2
k
Punctele M i i ,i ,K,i
, i = 1, 2, ... pot fi considerate ca puncte
aleatoare repartizate uniform n cubul unitate k - dimensional.
Se alege un numr N suficient de mare de puncte M1, M2, ..., MN i se
verific punctele care aparin domeniului D.

61

Dac ecuaia frontierei este () = 0, atunci pentru () > 0 orice punct


D, iar pentru () < 0 pentru orice punct D.
Fie n numrul de puncte aleatoare Mi care aparin domeniului D; celelalte Nn
vor cdea n afara acestui domeniu. Atunci pentru N suficient de mare avem
urmtoarea formul aproximativ:
I1

vol D n
h M i
n

i 1

unde vol(D) este volumul domeniului de integrare k - dimensional D. n


cazul n care este dificil s se calculeze vol(D) se poate lua

vol D N

i valoarea aproximativ a integralei devine:


1 n
I1

hi .

i1

Exemplu: S se calculeze prin metoda Monte Carlo integrala:


I

dxdy

unde

D x, y; 1 2 x 1, 0 y 2x 1.
Soluie: Considerm urmtorul tabel de numere aleatoare repartizate uniform pe
intervalul [0, 1] (tabelul 5.1) i lum pentru fiecare dou numere consecutive din acest
tabel ca fiind coordonate ale punctului aleator (x, y).
0,57705
0,71618
0,73710
0,70131
0,16961
0,53324
0,43166
0,26275
0,05926
0,66289

0,35483
0,09393
0,30304
0,55186
0,64003
0,20514
0,00188
0,55709
0,86977
0,31303

0,11578
0,93045
0,93011
0,42844
0,52906
0,09461
0,99602
0,69962
0,31311
0,27004

0,65339
0,93382
0,05758
0,00336
0,88222
0,98585
0,52103
0,91827
0,07069
0,13928

Tabelul 5.1. Tabel cu numere aleatoare uniforme pe [0,1]

Tabelm coordonatele x i y ale punctelor aleatoare n tabelul 5.2 rotunjindu-le


la 3 zecimale i alegndu-le pe acelea ce aparin domeniului de integrare.
Tabelul 5.2 se obine astfel:

62

Dintre toate valorile lui x care variaz ntre x = 1/2 i x = 1. Pentru aceste
valori vom lua 1 = 1, iar pentru celelalte lum 1 = 1.
Dintre toate valorile lui y corespunztoare lui x le alegem pe acelea coninute
ntre y(x) = 0 i yx 2x 1.
Pentru aceste valori punem 2 = 1, iar pentru restul 2 = 0.
Calculm = 12. Numai pentru punctele pentru care = 1 aparin
domeniului de integrare.
n situaia de fa, dintre cele N = 20 de puncte, numai n = 4 aparin
domeniului de integrare.

4 1

vol D N 20 5 .
Atunci

I1 4 4 0,452 0,855 1,048 1,482 0,20


Valoarea exact a integralei este I1 = 0,21875.
Se observ o acuratee sczut, fapt explicat prin aceea c numrul de puncte
N = 20 nu este suficient de mare.
x

0,557
0,737
0,170
0,432
0,059
0,355
0,303
0,640
0,002
0,870
0,116
0,930
0,529
0,996
0,313
0,653
0,058
0,882
0,521
0,071

0,500
0,500
0,500

0,500
0,500

1,000
1,000
1,000

1,000
1,000

yx

0
0
0

0,154
0,474

0
0

0
0

0,280

0,452

0,740

0,855

0
0
0

0,860
0,0580
0,992

1,048

1,1482

0,306

0
0

0,764
0,042

0
0

y x

1
1
0
0
0
0
0
1
0
1
0
1
1
1
0
1
0
1
1
0

0,716
0,701
0,533
0,263
0,663
0,094
0,552
0,205
0,557
0,323
0,930
0,428
0,095
0,700
0,270
0,934
0,003
0,986
0,918
0,139

Tabelul 5.2. Tabel pentru calculul integralei I1.

6
3

f x, y

A doua metod
Fie y h(1, 2 , ..., k ) 0 . Atunci integrala (5.1)

poate fi considerat ca

volumul solidului din spaiul cu (k+1) dimensiuni, adic

... d d Kd dy ,

(V)

(5.6)

unde volumul V determinat de urmtoarele condiii:


(1, ..., k ) D , 0 y h( ) .
Dac n domeniul D
0 h B, 0 i 1, i 1, 2, ...k
atunci schimbarea de variabil

B y
ne duce la

IB

... d d . . . d d

(V )

unde V este cilindrul din spaiul O1 . . .k construit pe domeniul i mrginit inferior de

hiperplanul = 0 i superior de hiperplanul B y , V fiind situat n cubul unitate


k+1 - dimensional:

64

0 i 1,

i 1,K, k

0 1
Lum pe intervalul [0,1], k+1 iruri de variabile aleatoare repartizate
1 1
1
uniform: 1 ,2 ,K,n ,K
2 2
2
1 ,2 ,K,n ,K
KKKKKKKK
k k
k
1

,2

,K,n

,K

1,2 ,K,n ,K

cu ajutorul crora definim punctele aleatoare:

1 2

M i i ,i
,K,i ,i , i
1, 2,K din spaiul k+1 dimensional O1 . . .k .
Dac din numrul total de N puncte aleatoare n aparin domeniului V, atunci
este adevrat urmtoarea formul aproximativ:

I B N .

1 2

fiind cub unitate, atunci este suficient s se verifice pentru fiecare punct i

k
,K,i
condiia
1 2
k
1
i B h i ,i ,K,i
.

,i

Exemplu: S se calculeze volumul mrginit de


suprafeele: z 2 0,5x0,52y0,52

x 0,52 y 0,52

0,52 , z 0

Soluie: Volumul cerut este numeric egal cu valoarea integralei:


(5.7)

I dxdydz

Deoarece n volumul V: 0 z 2,5 , introducem urmtoarea

variabil: 2 ,5
care transform integrala (5.7) n integrala:
I 2,5dxdyd
V

unde V este volumul mrginit de suprafeele:


x 0,52 y 0,52
0,52

0,8 0,4 0,5x0,5 y0,5 ,0


adic V aparine cubului unitate:
0 x 1, 0 y 1, 0 1.
Genernd pe intervalul [0,1] trei iruri de numere aleatoare repartizate
uniform, corespunztor coordonatelor x, y, .

65

Alegem punctele pentru care 0,8 i punem pentru ele 2 = 1.


Alegem din aceste puncte ce aparin domeniului V pe acelea pentru care este
satisfcut inegalitatea
2

x 0,5

y 0,5 0,5 .

Pentru acestea 1 = 1, iar pentru celelalte 1 = 0.

Calculm = 12. Punctele pentru care = 1 aparin domeniului V.

I 2,5 N .

5.2 Estimarea numrului prin metoda Monte Carlo


Fie (X1, X2) un vector aleator bidimensional uniform ntr-un ptrat cu latura
egal cu 2, avnd centrul n origine i laturile paralele cu axele de coordonate.
Fie un cerc cu centrul n origine, de raz 1 nscris n acest ptrat.
Se consider un punct luat la ntmplare n interiorul ptratului.
Probabilitatea ca punctul s cad n interiorul cercului este dat de raportul
ntre aria cercului i aria ptratului.
2
2
P((X1, X2) s fie n cerc} P( X1 X 2 1)

Aria cercului
Aria patratului

Dac variabila aleatoare U este uniform pe (0,1) atunci 2U este uniform pe


(0,2), iar 2U 1 este uniform pe (1, 1)
Generm dou numere aleatoare U1 i U2 uniforme i independente pe (0,1) i
facem substituia X1 = 2U1 1 i X2 = 2U2 1. Dac notm cu N numrul perechilor (X1,
X 2) generate i cu N1 numrul perechilor (X 1, X2) care cad n interiorul cercului,
2
2
adic X1 X 2 1, atunci se poate aproxima prin 4N1 / N.

Algoritm de generare a numrului prin metoda Monte Carlo:


0. Iniializare RNG
N1 0
1. Genereaz U1 uniform pe (0,1) i calculeaz X1 = 2U1 1.
2. Genereaz U2 uniform pe (0,1) i calculeaz X2 = 2U2 1.
2
2
3. Dac X1 X 2 1 atunci N1 N1 + 1
Se itereaz acest algoritm de N ori i se aproximeaz prin 4N1 / N.

66

5.3 Simularea proceselor de stocare


Noiuni de teoria stocurilor
Problema stocurilor este de mare importan n orice proces de productie. De
rezolvarea ei depinde procesul de productie respectiv.
Procesul de producie conine dou tipuri de valori materiale:
- valori materiale care intr n procesul de producie (materii prime,
materiale) ;
- valori materiale care ies din procesul de producie.
Bunul mers al produciei depinde de stocul care o alimenteaz.
Stocul trebuie dimensionat de aa manier nct sa nu fie prea mare i nici
insuficient.
Stocul din care se aprovizioneaz producia trebuie dimensionat optim, avnd
pierderi valorice mici.
Stocul care conine produsele rezultate trebuie s ndeplineasc aceleai
condiii.
Rezolvarea acestor probleme se face cu ajutorul modelelor matematice de
teoria stocurilor.
Stocul este o resurs care are o valoare economic caracterizat prin intrri
(reaprovizionarea stocului) i ieiri care nu sunt ntotdeauna determinate de cerere.
Valoarea stocului S variaz n timp, ceea ce nseamn c S = S(t), t fiind
timpul. Modificarea valorii S la momentul t va fi determinat de cantitile care intr
i care ies la momentul respectiv.
Fie a(t) rata intrrilor n stoc i b(t) rata ieirilor din stoc.
Notm cu r(t) rata cererii la momentul t, care n cele mai multe situaii este r(t)
= b(t).
Notm S0 = S(0), unde t = 0 este momentul initial de la care se urmrete
evoluia stocului.

S(t) S0 [a(t) b(t)]dt


Funciile r(t) i a(t) nu pot fi ntotdeauna controlabile (ele fiind date), dar
funcia a(t) care caracterizeaz intensitstea intrrilor n stoc trebuie aleas astfel nct
s realizeze un obiectiv sau o eficien dorit. Aceast eficen se definte n funcie
de nite costuri:
- costul de stocare (imobilizarea fondurilor bneti n materii prime, cheltuieli
de depozitare i conservare etc);
- costul de lansare (cheltuieli pentru lansareaa comenzilor de reaprovizionare
i introducerea lor n stoc);
- costul lipsei de stoc (determinat de pierderile cauzate de lipsa materiilor
prime, materiale etc).

67

Eficiena unui stoc de-a lungul unei perioade de timp este o funcional de
forma:
E = E[a(t), b(t), r(t)]
Funciile a(t) i b(t) sunt n general cunoscute.
Dac E este o variabil aleatoare, atunci se determin funciile necunoscute din
condiia ca valoarea medie a lui E s fie optim.
n majoritatea modelelor de stocare, intrarea n stoc (reaprovizionarea) se face la
momente discrete de timp t0 < t1 < .... Intervalele de timp ti+1 ti = Ti , i = 0, 1, 2, ...
se numesc cicluri de reaprovizionare. ntr-un interval de timp [0, T] pot avea loc mai
multe reaprovizionri (mai multe cicluri de reaprovizionare).
Variaia stocului S(t) este determinat de intrri, ieiri i de rata cererii.
Ciclurile de reaprovizionare Ti , i = 0, 1, 2, ... pot fi egale sau nu.
n unele modele de reaprovizionare se pune problema determinrii lotului
optim de reaprovizionare i a ciclului optim de reaprovizionare.
Lotul de aprovizionare nu intr n stoc n momentul cnd a fost lansat, ci dup
un interval de timp L, numit timp de avans.
Comanda se lanseaz n momentul cnd stocul a atins un nivel P, numit nivel
de reaprovizionare i este strict legat de timpul de avans.
Momentul lansrii comenzii este momentul cnd nivelul stocului scade la
valoarea nivelului de reaprovizionare.
Totalitatea elementelor care definesc mecanismul de reaprovizionare constituie
ceea ce se numete politic de reaprovizionare. O astfel de politic poate s
urmreasc loturile de reaprovizionare, ciclurile de reaprovizionare, nivelul de
reaprovizionare, timpul de avans etc. Politica este optim dac elementele ce o
caracterizeaz conduc la eficin optim pe intervalul de timp dat.
Modelele de teoria stocurilor se pot clasifica astfel:
1. dup evoluia n timp (timpul intervine explicit sau nu ), modelele pot fi:
- dinamice,
- statice.
.
2. dup natura aleatoare a elementelor (care nu sunt elemente de decizie), modelele
pot fi:
- stochastice,
- deterministe.
3. dup domeniile de valori posibile ale unor variabile care intervin n aceste modele,
pot fi:
- cu cerere continu,
- cu cerere discret.
Cele mai interesante i mai apropiate de realitate sunt cele dinamice i
stochastice.
Modelele de teoria stocurilor sunt asemntoare cu cele de teoria ateptrii;
sosirile n firele de ateptare corespund intrrilor n stoc, iar serviciile corespund
ieirilor din stoc.
Deosebirea ntre cele dou tipuri de modele const n aceea c sosirile i
servirile sunt variabile aleatoare cunoscute, n timp ce n teoria stocurilor se cunoate
68

numai cererea (care poate fi variabil aleatoare sau nu) i se caut s se determine o
politic optim de reaprovizionare a stocului.
Model de simulare pentru stocarea unui produs
Se pune problema obinerii unor variante privind:
- momentul lansrii comenzilor
- momentul intrrii comenzilor
- cheltuielile aferente procesului de reaprovizionare i meninere a stocului
pentru un singur produs.
Se introduc notaiile:
CS - costul stocrii unei uniti de produs pe unitatea de timp;
CL - costul lipsei produsului din stoc;
CLC - costul lansrii unei comenzi de
reaprovizionare; TCS - costul total al stocrii;
TCL - costul total al lipsei de stoc; TCLC costul total al lansrii de comenzi;
TC - cheltuieli totale legate de procesul de reaprovizionare i meninerea
stocului;
T - momentul intrrii comenzii n stoc; R cererea din stoc pe unitatea de timp; NCS nivelul curent al stocului;
Qmrimea optim a comenzii;
P - mrimea nivelului de reaprovizionare, astfel nct stocul s fie suficient pe
perioada timpului de avans;
TA - timpul de avans al lansrii comenzii;
CEAS - ceasul simulrii;
NIS - nivelul initial al stocului;
TS - timpul de simulare.
Date de intrare:
- costul stocrii CS;
- costul lipsei de stoc CL;
- costul lansrii unei comenzi CLC;
- mrimea optim a comenzii Q;
- mrimea nivelului de reaprovizionare P;
- nivelul iniial al stocului NIS;
- durata simulrii DS;
Variabile aleatoare cu repartiii cunoscute (se introduc parametrii):
- cererea R;
- timpul de avans al lansrii comenzii TA.
Rezultatele simulrii:
- costul total al stocrii TCS;
69

costul total al lipsei de stoc TCL;


costul total al lansrii comenzii TCLC;
cheltuieli de reaprovizionare i meninerea stocului TC;
nivelul curent al stocului NCS.

Iniializri:
TCS = TCL = TCLC = TC = 0.
NCS = NIS, CEAS = 0.
Algoritm de simulare pentru un model cu pstrarea cererii neonorate:
0. Intrri. Iniializri.
1. Genereaz o cerere Q.
CEAS CEAS + 1.
2. Dac CEAS > TS transfer la Pas 9.
3. T = CEAS ;
NCS NCS + Q.
4. NCS NCS R.
5. Dac NCS < 0 atunci TCL TCL NCS * CL.
altfel TCS TCS + NCS * CS.
6. Dac P < NCS transfer la pasul 1.
7. Dac T CEAS transfer la pasul 1.
8. TCL TCL + CLC ;
Genereaz TA
T = CEAS + TA.
Transfer la pasul 1.
9. TC = TCS + TCL + TCLC
10. Calculeaz statistici. STOP.
Algoritm de simulare pentru un model care nu pstrez cerererea
neonorat:
0. Intrri. Iniializri.
1. Genereaz o cerere Q.
CEAS CEAS + 1
2. Dac CEAS > TS transfer la pasul 9.
3. T = CEAS ; NCS NCS + Q.
4. NCS NCS R
5. Dac NCS < 0 atunci TCL TCL NCS*CL;
NCS = 0.
6. TCS TCS + NCS*CS ;
7. Dac P < NCS transfer la pasul 1.
8. Dac T CEAS transfer la pasul 1.
9. TCL TCL + CLC;
Genereaz TA;
T = CEAS + TA.
Transfer la pasul 1.
10. TC = TCS + TCL + TCLC
11. Calculeaz statistici. STOP.

70

Exemplu: Model de simulare pentru evitarea lipsei de stoc


Presupunem c o ntreprindere are dificulti n a obine un produs sau un
grup de produse. Din acte reiese c un produs are o frecven distribuit astfel:
Cererea zilnic n
unit. de produs
Frecvena cererii
n procente

10%

20%

30%

20%

10%

Statistic s-a stabilit c o comand la furnizori este satisfcut cu o


ntrziere de la 3 pn la 5 zile. ntrzierea are frecvena distribuit astfel:
ntrzierea zilnic la
livrare
Frecvena ntrzierii n
procente

3 zile

4 zile

27,5%

5 zile

50%

22.5%

ntreprinderea poate are dou posibiliti:


1. Fixarea unui stoc minimal care dac este atins s se declaneze o
comand de aprovizionare. Cantitatea ce urmeaz a fi comandat
este egal cu suma cererilor pe ultimele 4 zile (media de ntrziere).
2. tiind c media zilnic este de 3 uniti i c ntrzierea este de 4 zile.
Cantitatea ce se cere este de 3*4=12 uniti, iar lansarea comenzii se
face cnd nivelul minim al mrfii este de 12 uniti.
Rezolvare punctul 1.
Pentru a simula cererea zilnic n vederea studierii comportrii stocului la
posibilele rupturi de stoc atribuim cererii valori aleatoare.
Considerm urmtorul ir de numere aleatoare: 73, 67, 69, 30, 71, 09, 02, 72,
43, 95, 22, 92, 47, 99, 02, 31, 33, 74.
Cererea

Frecvena

1
2
3
4
5

10%
20%
40%
20%
10%

Val. nr. asociate

Aceste variabile aleatoare determin cererile:


734 cereri
673 cereri
693 cereri
302 cereri
714 cereri
091 cereri
021 cereri
724 cereri
433 cereri
71

01-10
11-30
31-70
71-90
91100
955 cereri
222 cereri
925 cereri
473 cereri
995 cereri
021 cereri
313 cereri
333 cereri
744 cereri

Pentru a simula ntrzierea la livrare vom considera irul de variabile


aleatoare: 432, 167, 100, 241, 058.
ntrzieri n livrare
3 zile
4 zile
5 zile

Frecvena
27,5%
50%
22,5%

Val nr. Asociate


1-275
276-776
777-1000

4324 zile
1673 zile
1003 zile
2413 zile
583 zile
Avnd asociate valorile variabilelor aleatoare cererea i ntrzierea n livrare,
se face studiul rupturii stocului.
Vom considera c stocul minimal este fixat la 10 uniti i c la
nceperea studiului stocul avea 20 uniti.
Ziua
1
2
3
4
5
6
7
8
9
10
11
12

Cererea
5
4
3
3
2
4
1
1
4
3
5
2
5

Nivelul stocului
20
16
13
10
8
4
3
2+15=17
13
10
5
3
-2 (ruptura de
stoc)

Valoarea comenzii

3+3+4+5=15 4 zile

3+4+1+1=9 3 zile

Deci stocul minim de 10 uniti este mic.


Noul stoc minim va fi 10+|-2|=12, iar algoritmul se reia.

72

5.4 Simularea proceselor de ateptare


Teoria ateptrii sau teoria firelor de ateptare se ocup cu studiul evoluiei
sistemelor care prezint aglomerri (sisteme de ateptare).
Ateptarea este intervalul de timp dintre momentul cnd a fost solicitat
servirea i nceputul procesului de servire.
Studiul unui sistem de ateptare se face cu ajutorul unui model, care se noteaz
prescurtat astfel:
A S C: (L; d)
unde:
- A este repartiia timpului de servire dintre dou sosiri consecutive;
- S este repartiia duratei de serviciu;
- C este numrul de staii de serviciu;
- L este lungimea maxim a cozii;
- d este disciplina de serviciu.
Disciplina de serviciu poate fi:
FIFO (primul venit, primul servit);
LIFO (ultimul venit, primul servit);
PS
(servire prioritar);
RA
(servire aleatoare).
De exemplu, modelul de ateptare
Weib() Exp() 1: (, FIFO)
este caracterizat de sosiri cu repartiie Weibull de parametru , serviri cu repartiie
exponenial negativ cu parametru , sistemul are o singur staie care asigur sosirea
clienilor care intr n sistem, firul de ateptare poate crete indefinit (L = ), iar
regula de servire este primul venit, primul servit.

Sistemele de servire pot fi:


Monocanal

U
U
U
Cereri de servire

S
Staie

U
U
U
Uniti servite

(uniti n firul de ateptare)

(flux de ieire)

Serie (staiile sunt dispuse succesiv sau n cascad)


U

Cereri de servire

S1

S2
Staii

S3

SN

Flux de ieire

73

Paralel

S1

S2

SN

Sistemul de ateptare este complet specificat dac se cunosc toate elementele.


Pentru un sistem specificat se poate calcula intensitatea traficului pe care-l asigur
acesta
= M(s) / M()
unde s reprezint durata servirii, iar este intervalul de timp dintre dou sosiri
consecutive.
Pentru sistemele monocanal prezint interes gradul de utilizare al staiei de
servire, timpul mediu de servire, numrul unitilor servite pn la un moment dat i
starea staiei (liber sau ocupat) n orice moment.
Pentru sistemele cu staii n paralel sau serie prezint interes numrul mediu de
staii ocupate, gradul de ocupare al fiecrei staii de servire, timpul mediu de ateptare
n fiecare staie, numrul staiilor ocupate la un moment dat.
Pentru firele de ateptare prezint interes lungimea curent i lungimea
maxim a cozii, timpul mediu de ateptare n fir.
Dac reprezint numrul mediu de sosiri, iar este numrul mediu de
serviri, atunci intensitatea traficului este = / .
O problem dificil de rezolvat const n validarea modelului.
O metod simpl const n a testa modelul ntr-un caz particular n care soluia
este cunoscut.
O alt metod const n a compara datele furnizate de model cu rezultatele
obinute prin observarea situaiilor reale similare. Dac diferenele se ncadreaz n
limite acceptate, atunci modelul poate fi validat.
n cazul n care ieirile modelului sunt stochastice se impune aplicarea unor
teste statistice adecvate.
Aplicarea simulrii pentru studiul sistemelor de ateptare se recomand
datorit elementelor aleatoare care intervin: timpul de sosire, timpul de servire, etc.
n cele ce urmeaz ne propunem s simulm un model de ateptare de
forma: 1: (, FIFO)
Se vor prezenta dou metode: una bazat pe ceas variabil, iar cealalt bazat
pe ceas constant.

74

Modelul cu ceas variabil


Introducem urmtoarele notaii:
ITSC

intervalul de timp (aleator) dintre dou sosiri consecutive;


DS

durata servirii (variabil aleatoare);


TAC

timpul de ateptare al unui client oarecare n fir;


TNS

timpul de neocupare al staiei de serviciu de la terminarea unui


serviciu la nceperea altui serviciu;
TTAC
timpul total de ateptare al clienilor;
TTNS
timpul total de neocupare al staiei de serviciu;
NS

numrul total de servicii ce trebuie simulate;


CONTS
contor care numr serviciile.
Variabilele ITSC i DS sunt variabile de intrare; repartiiile lor se presupun
cunoscute, iar parametrii acestor repartiii sunt parametrii de intrare. NS este de
asemenea parametru de intrare.
Variabilele TAC i TNS sunt variabile aleatoare de ieire, ca i TTAC,
TTNS. De aici se pot calcula:
- timpul mediu de ateptare
MTAC
-

TTAC

NS

timpul mediu de neocupare a staiei


MTTNS

TTNS

NS

La momentul iniial (momentul nceperii simulrii) sunt satisfcute


urmtoarele condiii iniiale:
TAC = 0, TNS = 0, TTAC = 0, TTNS = 0, CONTS = 0.
Presupunem c pentru ITSC i DS dispunem de generatori care pot fi apelai n
programul de simulare.
Algoritm de simularea unui model cu ceas variabil:
0.
1.
2.
3.

Iniializri. Introducerea parametrilor de intrare.


Genereaz ITSC.
ITSC ITSC - TAC.
Dac DS ITSC atunci TAC = 0;
TNS = ITSC DS; TTNS
TTNS + TNS.
Transfer la pasul 6.
4. Dac DS ITSC atunci TNS = 0;
TAC = DS ITSC;
TTAC TTAC + TAC.
5. Dac CONST NS transfer la pasul 1.
6. Calculeaz statisticile.

75

Modelul cu ceas constant


n acest caz, modelul, pe lng parametrii i variabilele utilizate n modelul cu
ceas variabil va folosi i alte variabile i anume:
TTS
timpul total al sosirilor;
MTS
momentul terminrii ultimului serviciu;
CEAS ceasul simulrii;
C
constant cu ajutorul creia se avanseaz ceasul;
L
lungimea curent a cozii (variabil de tip ntreg);
DS
durata simulrii (simularea se termin cnd CEAS DS) - aici
nu se folosete CONST.
n aceste condiii se fac urmtoarele iniializri:
TTAC = 0
TTNS = 0
TTS = 0
MTS = 0
CEAS = 0
L = 0.
Algoritm de simularea unui model cu ceas constant:
0. Iniializri.
Introducerea parametrilor de intrare.
1. Genereaz ITSC.
2. TTS TTS + ITSC.
3. CEAS CEAS + C.
4. Dac TTS MTS atunci L L + 1;
TAC = MTS TTS;
TTAC TTAC + TAC.
altfel Transfer la pasul 7.
5. Dac CEAS TTS atunci CEAS CEAS + C.
6. Genereaz ITSC;
TTS TTS + ITSC
Transfer la pasul 9.
7. Dac L = 0 atunci TNS TNS MFS;
TTNS TTNS + TNS;
MTS = TTS.
altfel L L 1.
8. Dac CEAS MTS atunci CEAS CEAS + C.
altfel Genereaz DS; MTS MTS + DS.
9. Dac CEAS DS atunci transfer la pasul 4.
10. Calculeaz statistici.

76

5.5 Simularea fiabilitii


Noiuni de baz
Fiabilitatea
- este un parametru principal al calitii oricrui produs;
- se calculeaz pe baza comportrii sistemelor studiate n exploatare.
Controlul de calitate apreciaz calitatea produsului finit n momentul livrrii
ctre beneficiar.
Fiabilitatea apreciaz comportarea n timp a utilizrii produsului.
Definiia fiabilitii (conform Comisiei Electronice Internaionale) este
urmtoarea: o caracteristic a unui sistem (dispozitiv, produs etc.) exprimat prin
probabilitatea cu care el ndeplinete o funcie necesar n condiii date, pe o durat de
timp dat.
Definiia defeciunii: pierderea parial sau total sau modificarea acelor
proprieti ale sistemului care diminueaz n mod esenial sau conduc la pierderea
complet a capacitii de funcionare.
Momentul apariiei unei defeciuni, timpul de funcionare pn la apariia unei
defeciuni sau ntre dou defeciuni sunt variabile aleatoare.
Tipuri de fiabilitate:
- fiabilitate previzional (proiectat, precalculat) este fiabilitatea imprimat
unui sistem pe baz de calcule de ctre proiectant n etapa de concepie a
acestuia, pornind de la caracteristicele componentelor, utilizare, solicitri
etc.;
- fiabilitate experimental (tehnic) determinat n urma experimentrii, n
condiii de laborator, a funcionrii sistemului (produsului) n conformitate
cu normele prevzute n documentaia tehnic;
- fiabilitatea operaional (la beneficiar) determinat n condiii reale de
exploatare, cu luarea n considerare a factorilor interni i externi;
- fiabilitatea nominal este prescris n standarde, norme interne etc.

5.5.1 Indicatori de fiabilitate


Pentru studierea fiabilitii unui sistem fr rennoire este suficient s se ia n
considerare durata scurs de la punerea n funciune a sistemului pn la defectarea
acestuia, durat care este o variabil aleatoare.
Caracteristicile numerice ale variabilei aleatoare se numesc indicatori de
fiabilitate ai sistemului.
Fie T durata de funcionare pn la defectare a unui sistem i F(t) funcia de
repartiie a acestei variabile aleatoare.
Probabilitatea ca la momentul prescris s aib loc o defectare a sistemului este

77

F(t) = P(T t)
Probabilitatea funcionrii fr defeciuni a unui sistem fiabilitatea lui este
dat de
R(t) = P(T > t)
Funciile R(t) i F(t) reprezint probabilitile unor evenimente
complementare n sensul teoriei probabilitilor.
Comportarea sistemului n jurul unui moment dat este descris de viteza
instantanee de defectare:
f(t) = dF(t) / dt = dR(t) / dt
care este de fapt densitatea de probabilitate a timpului de funcionare.
Pentru a descrie pericolul de defectare n jurul unui moment dat al unui sistem
aflat n bun stare la acel moment, se definete un alt indicator numit rat de
defectare, definit astfel:
r(t) lim [F (t t) F (t)] /[R(t)t] f (t) / R(t)
t0

sau
r(t) F (t) / R(t) F (t) /[1 F (t)] R(t) /
R(t) Integrnd, cu condiia iniial R(0) = 1, se obine:

R(t) = e

1 r(u)du
0

Fiabilitatea unui sistem poate fi descris i prin caracteristicile numerice ale


variabilei aleatoare timpului de funcionare pn la prima defectare:
- media timpului de funcionare

m = tf (t)dt = R(t)dt
0
0

- dispersia timpului de funcionare

D = (t m)2 f (t)dt
0

- abaterea medie ptratic a timpului de funcionare


m= D
- cuantila timpului de functionare
F (t ) , 0 < < 1
Media i dispersia timpului de funcionare pot fi determinate i experimental.

78

5.5.2 Funcii care descriu uzura sistemelor


Cele mai multe sisteme se uzeaz n timp. n teoria fiabilitii, uzura include
orice alterare n timp a caracteristicilor sistemului.
Pe baz experimental s-a constatat c, n general, orice sistem parcurge n
evoluia sa trei stadii:
defectarea timpurie, cnd caracteristicile sale de fiabilitate se mbuntesc n
timp;
durata util de via, cnd performanele sistemului rmn constante;
uzura, cnd se constat o scdere rapid a caracteristicilor de fiabilitate.
O exprimare matematic a uzurii poate fi dat n termenii ratei de defectare a
unui sistem.
Definiie. Un sistem are uzur pozitiv dac funcia sa de fiabilitate este
descresctoare, ceea ce nseamn c fiabilitatea scade n timp.
Definiie. Un sistem are uzur negativ dac funcia sa de fiabilitate este
cresctoare, ceea ce nseamn c fiabilitatea crete cu vrsta.
Se observ c rata de defectare a unui sistem cu uzur pozitiv este
cresctoare, iar rata de defectare a unui sistem cu uzur negativ este descresctoare n
timp.
Notaii. Sistemele cu uzur pozitiv se noteaz cu IFR (Increasing Failure
Rate), iar cele cu uzur negativ DFR (Decreasing Failure Rate).
Definiie. Se numete sistem cu uzur medie pozitiv, sistemul pentru care
funcia 1 ln 1
este cresctoare n timp i se noteaz IFRA (Increasing Failure Rate
t R
Average).
Definiie. Se numete sistem cu uzur medie negativ, sistemul pentru care
funcia 1 ln 1 este descresctoare n timp i se noteaz cu DFRA (Decreasing Failure
t R
Rate Average).

5.5.3 Simularea fiabilitii


Problema realizrii unor sisteme cu fiabilitate ridicat n general, i a
sistemelor tehnice n special este o condiie de prim importan n procesul de
proiectare i fabricaie.
Utilizarea simulrii ne ajut la detectarea rapid a elementelor cu fiabilitate
sczut, care contribuie la defectarea sistemului, determinnd scderea siguranei n
funcionare.
Simularea permite estimarea cantitativ a fiabilitii sistemului, rezultatele
fiind de mare importan n stabilirea structurii i fiabilitii precalculate a
componentelor sale.

79

Descrierea matematic a fiabilitii unui sistem poate fi fcut la nivel global,


ignornd structura sistemului, sau la nivel structural, lund n considerare elementele
sistemului i relaiile dintre ele.
Studiul fiabilitii la nivel structural are ca scop s stabileasc o relaie ntre
fiabililitatea sistemului i fiabilitatea componentelor sale.
Pentru a fi mai uor de studiat, adeseori sistemul se reprezent sub forma unui
graf.
Nodurile sau vrfurile reprezint elementele sistemului, iar arcele grafului
reprezint legturile ntre elemente.
Elementele sistemului pot fi conectate ntre ele n serie, paralel, punte sau
combinaii ale acestora.
n cele ce urmeaz vom considera c avem un sistem cu n componente i vom
nota cu Ri, (i = 1, 2,..., n) funcia de fiabilitate a componentei i, iar cu RS funcia de
fiabilitate a sistemului.
Pentru simplificarea exprimrii vom asocia fiecrei componente i, (i = 1, 2,...,
n) o variabil binar xi (i = 1, 2,..., n).

xi

1, dac elementul functioneaz

0, dac elementul nu functioneaz

X = (x1, x2, , xn) este vectorul de stare

pi = P(xi = 1), qi = P(xi = 0)


qi = 1 - pi = pi 1 qi , i 1, n
S = starea sistemului

1, daca sistemul functioneaza

0, daca sistemul nu functioneaza

R = P(S=1) = fiabilitatea sistemului (realiability)


F = P(S = 0) = failure
Legtura dintre starea sistemului i starea componentelor este dat de o funcie
boolean numit funcie de structur: S = (x1, x2, ..., xn).
Fiabilitatea sistemului depinde fiabilitatea componentelor.
Legtura dintre fiabilitatea sistemului i fiabilitatea componentelor este dat
de funcia R = h(p1, p2, ..., pn).

80

Deosebim 3 tipuri de sisteme:


1. Sisteme serie: sistemul funcioneaz dac i numai dac toate componentele
funcioneaz.

Funcia de structur este: (x) = x1 x2 K xn = min{x1, x2, ..., xn}.


n

i1

i 1

Funcia de fiabilitate a sistemului: R = P(S = 1) = P xi 1 pi .


2. Sisteme paralele: sistemul funcioneaz dac i numai dac cel puin una din
componentele sale funcioneaz.

Funcia de structur este: (x) = x1 x2 K xn = max{x1, x2, ..., xn} care se


poate reduce ca cazul precedent prin negarea variabilei de stare:
S x1 x2 K xn x1 x2 K xn
ceea ce nseamn c sistemul nu funcioneaz dac nici una din componentele
sale nu funcioneaz.
De aici se poate deduce probabilitatea de defectare a sistemului notat cu F :
n
n
F P S 1 P xi 1 qi , unde qi = 1

- pi. i1 i1
n

R 1 F 1 1 pi
i1

3.

Sisteme complexe (sisteme punte)

81

5.5.4 Proprieti structurale ale sistemelor coerente


Definiie: Un sistem este coerent dac funcia sa de structur este cresctoare i
fiecare component este important.
Definiie: Componenta i a unei funcii de structur este nensemnat dac
este constant n xi , adic:
(1i, X) = (0i, X),
unde
(0i, X) = (x1, x2, , xi-1, 0, xi+1, , xn)
Propoziie: Fie un sistem coerent cu n componente avnd funcia de structur
, atunci:
x1 x2 K xn (X) x1 x2 . . . xn , x i {0,1}
Aceast propoziie subliniaz faptul c performana unui sistem coerent este
mrginit inferior de performana sistemului serie i superior de performana
sistemului paralel.
Propoziie: Fie funcia de structur a unui sistem coerent. Atunci au loc
inegalitile:
( X Y ) ( X ) (Y )
dac structura sistemului este de tip paralel i
( X Y ) ( X ) (Y )
dac structura sistemului este de tip serie.

Propoziie: Fie funcia de structur a unui sistem cu n componente. Atunci


are loc urmtoarea identitate:
(X) = xi (1i, X) + (1 - xi)(0i, X), i = 1, 2, , n
Notm cu C = {1, 2, ..., n} mulimea componentelor sistemului.
Definiie: Se numete drum, un vector X pentru care (X) = 1 i i corespunde
mulimea C1(X).
Un drum minim este o mulime minim de elemente a cror funcionare
asigur funcionarea sistemului.
Definiie: Se numete tietur, un vector X pentru care (X ) 0 i i
corespunde mulimea C0(X).
O tietur minim este o mulime care conine un numr minim de elemente a
cror defectare cauzeaz defectarea sistemului.
82

Notm:
C0 X xi | xi 0 taietura
C1X xi | xi 1 drum
1) La sistemele serie avem tieturi:
C0 X x1,K,xn = n tieturi
2) La sistemele paralele avem tieturi:
C0 X x1,K, xn =1 tietur
3) La sistemele complexe avem tieturi:

C0 X x1, x3,x2 , x4 ,x1, x5 , x4,x3 , x5 , x2


4) La sistemele serie avem drumul: C1

X x1 ,K, xn drum minim


5) La sistemele paralele avem drumurile: C0
X x1,K,xn = n drumuri.
6) La sistemele complexe avem drumurile:
C1X x1, x3,x2 , x4 ,x1, x5 , x4 ,x3 , x4 x3 , x5 , x2

F s x1,K, xn x1 x2 Kxn
F p x1,K, xn x1 x2 K xn
F c x1,K, x5 x1 x2 x3 x4 x1 x5 x4 x3 x5 x2
O evaluare numeric aproximativ a funciei de fiabilitate a sistemului poate fi
realizat n asemenea situaii printr-o metod experimental , care const n generarea
unor stri posibile ale sistemului (cunoscnd funciile de fiabilitate ale componentelor)
i evalund de fiecare dat performana sistemului.
Raportul dintre numrul situaiilor n care sistemul funcioneaz i numrul
total de simulri reprezint o estimaie a funciei de fiabilitate a sistemului.
Precizia estimrii depinde de numrul de simulri realizate.
Pe baza acestor consideraii, a noiunilor introduse mai sus i presupunnd
independena componentelor sistemului din punct de vedere al defectrii, algoritmul
de simulare se prezint astfel:

83

Algoritm de simulare:
0. Iniializare RNG.
Iniializare
algoritm
pentru
generarea
fiabilitii
componentelor. Intrare parametri.
1. Calcularea funciei de structur a sistemului cu algoritmul FIAB1.
2. Generarea fiabilitilor componentelor pi, i = 1, 2, ..., n cu algoritmul
FIAB2.
3. Calcularea fiabilitii sistemului cu algoritmul FIAB3.
Algoritmul pentru calculul funciei de structur a sistemului
Sistemele a cror structur nu poate fi, n general, redus la combinaii de tip
serie sau paralel (structuri elementare) le numim sisteme complexe.
n cazul sistemelor complexe, determinarea funciei de structur devine o
problem dificil. Un asemenea algoritm, pe care l-am numit FIAB1, pentru un sistem
cu n componente reprezentat sub forma unui graf cu k noduri, se prezint astfel :
Algoritm pentru calculul funciei de structur (FIAB1):
0: Intrare matrice asociat sistemului (matricea conexiunilor) [C]kk.
1: Se adun la matricea C matricea identitate de ordinul k.
2: Se nltur prima coloan i ultima linie a matricei obinute.
3: Calculeaz det Dk-1 asociat matricei rmase folosind operaiile de sum
i produs boolean.
= Dk-1
Algoritmul pentru calculul fiabilitii componentelor
Pe baza datelor obinute n urma ncercrilor de durat, pe componente,
privind variaia parametrilor acestora cu solicitarea i timpul, se determin densitile
de probabilitate asociate componentelor sistemului.
Cunoscnd funciile de fiabilitate ale componentelor, algoritmul de generare,
denumit FIAB2, se prezint astfel :
Algoritm pentru calculul fiabilitilor componentelor (FIAB2):
0: Iniializare RNG.
Iniializeaz algoritmii pentru generarea fiabilitii componentelor.
Intrare parametri corespunztori funciilor de fiabilitate ale
componentelor.
1: Genereaz numere aleatoare uniforme pe (0,1).
2: Genereaz o valoare de selecie pi (i = 1, 2, ..., n) corespunztoare
componentei i.

84

Algoritmul pentru calculul fiabilitii sistemului


Calculul fiabilitii unui sistem complex este o problem dificil care conduce
la un volum mare de munc i este greu de algoritmizat. n asemenea cazuri, o
evaluare numeric a funciei de fiabilitate poate fi realizat printr-o metod Monte
Carlo, cu ajutorul calculatorului.
n ipoteza independenei defectrii componentelor sistemului, fiecare
component poate fi n una din cele dou stri: funcioneaz sau este defect, iar
algoritmul, denumit FIAB3, se prezint astfel
Algoritm pentru calculul fiabilitilor sistemului (FIAB3):
0: Iniializeaz RNG.
Iniializeaz algoritmul pentru calculul funciei de structur .
Iniializeaz algoritmii pentru generarea fiabilitilor componentelor
pi (i = 1, 2, ..., n)
Intrri: parametri densitilor de probabilitate
corespunztoare componentelor sistemului.
k1
1: Calculeaz funcia de structur cu algoritmul FIAB1.
2: Genereaz pk cu algoritmul FIAB2 .
3: Genereaz Uk ~ U(0,1)
4: dac Uk < pk atunci xk = 1, altfel xk = 0
5: k k +1 dac k n trece la pasul 2, altfel trece la pasul 6.
6: S = (x1, x2, , xn)
Fiabilitatea sistemului se obine ca fiind:
n

i 1
R N
unde N depinde de precizia cerut i reprezint numrul de simulri efectuate cu
algoritmul de mai sus.

Aplicaii ale teoriei bayesiene n fiabilitate


Funcionarea unui sistem este influenat de o mulime de factori. Influena
acestor factori este diferit. De mare importan pentru funcionarea unui sistem este
cunoaterea factorilor care au o influen semnificativ asupra sistemului.
Obinerea unor informaii privind influena unor factori asupra funcionrii
sistemului nainte de efectuarea unor ncercri de fiabilitate se poate realiza folosind
metode bayesiene.
n contextul teoriei fiabilitii se pune problema estimrii bayesiene a
parametrilor legii de repartiie a timpului de funcionare sau a indicatorilor de
fiabilitate dac nu exist o lege de repartiie a timpului de funcionare.
85

Teorema lui Bayes.


Dac A1, A2, , An formeaz un sistem complet de evenimente, atunci pentru
orice eveniment A, avem:
,
P(A / Ai )P(Ai )
P( Ai / A)
P( A / A1)P( A1) P(A / A2 )P( A2 ) ... P(A / An )P( An )
pentru i = 1, 2, , n.
Demonstraie.
Aplicnd formula de nmulire a probabilitilor, se obine:
P( A Ai ) P( A)P( Ai / A)
P( Ai A) P(Ai )P( A / Ai )

De aici rezult c
P( Ai / A) P(Ai )P( A / Ai )
P( A)
Aplicnd formula probabilitii totale, se obine:
P( A) P( A / A1)P( A1) P( A / A2 )P( A2 ) ..... P( A / An )
P( An ) care nlocuit mai sus conduce la formula lui Bayes.
Observaie. Dac se cunosc probabilitile P(Ai) i P(A / Ai) unde A este un
eveniment oarecare, atunci probabilitatea evenimentului Ai , tiind c A s-a realizat
este dat de formula lui Bayes.
n locul evenimentelor Ai vom considera cauze (ipoteze) notate cu Hi,
constituind un model adecvat pentru o situaie practic.
Evenimentul A este interpretat ca realizarea unei situaii practice, iar
probabilitile P(Hi) sunt cunoscute i se numesc probabiliti apriori ale diferitelor
ipoteze.
Pe de alt parte, cauza Hi realizeaz evenimentul A cu probabilitatea P(A / Hi),
aceste probabiliti fiind i ele cunoscute.
tiind c evenimentul A s-a produs, formula lui Bayes permite calcularea lui
P(Hi / A), care se numesc probabiliti aposteriori.
Cu alte cuvinte, tiind c evenimentul A s-a produs, care este probabilitatea ca
acest fapt s se datoreze cauzei Hi.
Exemplu.
Defeciunile unor arbori de transmisie sunt datorate n 25% din cazuri
cuplurilor aplicate i n 75% aceste defectri se datoreaz montajului. Printre
defectrile datorate cuplurilor foarte puternice, 20% antreneaz ruperea arborilor, n
timp ce doar 5% dintre defectele de montaj au aceeai consecin. Constatnd o
ruptur de arbore, se poate determina probabilitatea ca ea s se datoreze unei
suprasolicitri ?
Soluie:
86

Pentru rezolvare se noteaz cu


A = evenimentul care const n ruperea arborelui
i cu

Cum

i se obine

H1 prima cauz (cuplurilor aplicate suprasolicitrii)


H2 a doua cauz (greelilor de montaj) a ruperii.

P(H1) = 0,25
P(H2) = 0,75
P(A / H1) = 0,20
P(A / H2) = 0,05
P(H1 / A)

P(H1)P( A / H1)

0,571

P(H1)P( A / H1) P(H 2 )P( A / H 2 )


ceea ce nseamn c este mai mare probabilitatea ca ruperea s se produc datorit
primei cauze, care const n suprasolicitare.

87

ANEX
IMPLEMENTRI C/ C++

n acest anex prezentm implementri C/C++ ale algoritmilor prezentai n


capitolele anterioare.
1. Generarea numerelor aleatoare
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <iomanip.h>
# include <stdlib.h>
float x[5000];
int n;
void scrie( float x[],int n){
for (int i=0;i<n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;
}
void testhi2()
{ int
l=13,nr[14];
float hi2=0,hi2t=3.841;
for (int i=1;i<=l;i++)
nr[i]=0;
for (i=0;i<n;i++)
{ int k=1;
while ( x[i]>=k/float(l) )
k++;
nr[k]++; }
for (i=1;i<=l;i++)
hi2 += (nr[i]-n/float(l))*(nr[i]-n/float(l));
hi2 /= n/float(l);
cout<<"Statistica hi2="<<hi2<<endl;
if (hi2<hi2t)
cout<<"TESTUL ESTE CORECT"<<endl;
else
cout<<"TESTUL ESTE GRESIT"<<endl;
getch();
}
float F(float x)
{ if (x<=0) return
0; else
if(x>1) return 1;
else return x;
}
float max(int n,float x[ ]) {
float m=0;
for (int i=1;i<=n;i++)

88

if (m<x[i])
m=x[i];
return m;
}
void gen1()

//metoda patratului din mijloc

{int a=1,b=10;
float media=0,dispersia=0;
x[0]=69;
for (int i=0;i<n-1;i++)
x[i+1]=floor(x[i]*x[i]/pow(b,a))floor(x[i]*x[i]/pow(b,3*a))*pow(b,2*a);
for (i=0;i<n;i++){
x[i]/=pow(b,2*a);
media+=x[i];
}
media/=(float)n;
for (i=0;i<n;i++)
dispersia+=(x[i]-media)*(x[i]-media);
dispersia/=(float)n;
cout<<"Metoda patratului din mijloc:"<<endl;
//scrie(x,n);
cout<<"Media generarilor= "<<media<<endl;
cout<<"Dispersia generarilor= "<<dispersia<<endl;
getch();
testhi2();
}
void gen2() {
//metoda generatorului multiplicativ congruential
float media=0,dispersia=0,a=125,M=2796203;
x[0]=314159;
for (int i=0;i<n-1;i++)
x[i+1]=fabs(a*x[i]-M*floor(a*x[i]/M));
for (i=0;i<n;i++) {
x[i]/=(float)M;
media+=x[i];
}
media/=(float)n;
for (i=0;i<n;i++)
dispersia+=(x[i]-media)*(x[i]-media);
dispersia/=(float)n;
cout<<endl<<"Metoda generatorului multiplicativ
congruential:"<<endl;
//scrie(x,n);
cout<<"Media generarilor= "<<media<<endl;
cout<<"Dispersia generarilor= "<<dispersia<<endl;
getch();
testhi2();
}
void gen0() //generatorul sistemului
{float media=0,dispersia=0;
int m=100;
randomize();
for (int i=0;i<n;i++)
{

89

x[i]=random(m)/float(m);
media+=x[i];
}
media/=(float)n;
for (i=0;i<n;i++)
dispersia+=(x[i]-media)*(x[i]-media);
dispersia/=(float)n;
cout<<endl<<"Folosind generatorul
sistemului:"<<endl; //scrie(x,n);
cout<<"Media generarilor= "<<media<<endl;
cout<<"Dispersia generarilor= "<<dispersia<<endl;
getch();testhi2();
}
void main() {
clrscr();
cout<<"Numarul de generari: ";
cin>>n; cout<<endl;
gen1();
gen2();
gen0();
}

2. Generarea variabilei exponenial negative prin metoda invers


#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
/*algoritm
0.Initializare RNG();
Intrare v=2;
1.Genereaza U uniform pe (0,1);
2.X=-ln(U)/l;*/
float x[5000],media,disp;
int n,i;
float RNG() {
return (random(999)+1)/1000.0;
}
float Exp_neg(float l) {
float U=RNG();
return -log(U)/l;
}
void main(){
clrscr(); randomize();
cout<<"n=";cin>>n;
for(int i=0;i<n;i++)
x[i]=Exp_neg(1);
//calculez media si dispersia
for(i=0;i<n;i++)
media+=x[i];
media/=n;

90

for(i=0;i<n;i++) disp+=(x[i]media)*(x[i]-media);
disp/=n;
cout<<endl<<"Media:"<<media;
cout<<endl<<"Dispersia:"<<disp;
getch();
}

3. Generarea variabilei Weibull prin metoda invers


#include
#include
#include
#include

<iostream.h>
<conio.h>
<math.h>
<stdlib.h>

/*algoritm
0.Initializare RNG();
Intrare v=2;
1. Genereaza U uniform pe (0,1);
2.X=pow(-ln(U),1/v);*/
float x[5000],media,disp;
int n;
float RNG() {
return (random(999)+1)/1000.1;
}
float Weibull(float v) {
float u=RNG();
return pow(-log(u),1/v);
}
void main() {
clrscr(); randomize();
cout<<"n=";cin>>n;
for(int i=0;i<n;i++)
x[i]=Weibull(2);
//calculez media si dispersia
for(i=0;i<n;i++)
media+=x[i];
media/=n;
for(i=0;i<n;i++) disp+=(x[i]media)*(x[i]-media);
disp/=n;
cout<<endl<<"Media:"<<media;
cout<<endl<<"Dispersia:"<<disp;
getch();
}

91

4. Generarea variabilei Binomial prin metoda invers


#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
int x[5]={0,0,1,2,3};
float p[5]={0,0.421875,0.421875,0.140525,0.015725},F[5];
int v[5000],n;
float media,disp;
float Rng(){
float r;
do r=random(100)/100.0; while (r==0);
return r;
}
int Bin_inv() {
int j=0;
//F[0]=0;
for (int k=1;k<=4;k++)
for (int i=1;i<=k;i++)
F[k]+=p[i];
float U=Rng();
do {
j++;
} while (F[j]<U);
return x[j];
}
void main() {
clrscr(); randomize();
cout<<"Nr. generari: "; cin>>n;
for (int i=0;i<n;i++) {
v[i]=Bin_inv();
media+=v[i];
}
media/=n;
for (i=0;i<n;i++) disp+=(v[i]media)*(v[i]-media);
disp/=n;
cout<<"Media de selectie este "<<media;
cout<<"\nDispersia de selectie este "<<disp;
getch();
}

92

5. Generarea variabilei N(0,1) prin metoda respingerii


#include
#include
#include
#include

<iostream.h>
<conio.h>
<math.h>
<stdlib.h>

float x[5000],media,disp;
int n;
float RNG() {
return (random(999)+1)/1000.0;
}
float Norm(){
float U,Y;
do{
Y=-log(RNG());
U=RNG();
}
while (U>exp(-Y*Y/2+Y-0.5));
if (RNG()<0.5)
return Y;
else
return -Y;
}
void main(){
int i;
clrscr(); randomize();
cout<<"n=";cin>>n;
for(i=0;i<n;i++)
x[i]=Norm();
for(i=0;i<n;i++)
media+=x[i];
media/=n;
for(i=0;i<n;i++) disp+=(x[i]media)*(x[i]-media);
disp/=n;
cout<<endl<<"media="<<media;
cout<<endl<<"dispersia="<<disp;
getch();
}

93

6. Generarea variabilei aleatoare N(0,1) prin metoda polar


#include
#include
#include
#include

<iostream.h>
<conio.h>
<math.h>
<stdlib.h>

float x[5000],media,disp;
int n;
float RNG() {
return (random(999)+1)/1000.1;
}
float normala() {
float v1,u1,v2,u2,Us,Vs,R;
u1=0;u2=1; v1=sqrt(3/M_E);v2=sqrt(3/M_E); do
{

Us=u1+(u2-u1)*RNG();
Vs=v1+(v2-v1)*RNG();
R=Vs/sqrt(Us); }
while(log(Us)+(R*R)/3>0);
return R;
}
void main() {
clrscr();
randomize();
cout<<"n=";
cin>>n;
for(int i=0;i<n;i++)
x[i]=normala();
//calculam media si dispersia
for(i=0;i<n;i++)
media+=x[i];
media/=n;
for(i=0;i<n;i++) disp+=(x[i]media)*(x[i]-media);
disp/=n;
cout<<endl<<"Media:"<<media;
cout<<endl<<"Dispersia:"<<disp;
}

94

7. Generarea vectorilor aleatori uniformi prin metoda invers


#
#
#
#

include
include
include
include

<stdlib.h>
<math.h>
<iostream.h>
<conio.h>

float x[5000],y[5000],a,b;
int n;
float Rng();
void Vect(float a, float b, float &X, float &Y);
void main() {
clrscr(); randomize();
a=1; //cout<<"a=";cin>>a;
b=1; //cout<<"b=";cin>>b;
n=5000;
float media_x=0, media_y=0, dispersia_x=0,
dispersia_y=0, X,Y;
for (int i=0;i<n;i++){
Vect(a,b,X,Y);
x[i]=X;
media_x+=x[i];
y[i]=Y;
media_y+=y[i];
}
media_x/=n;
media_y/=n;
for (i=0;i<n;i++) { dispersia_x+=(x[i]media_x)*(x[i]-media_x);
dispersia_y+=(y[i]-media_y)*(y[i]-media_y);
}
dispersia_x/=n;
dispersia_y/=n;
cout<<"Media generarilor:
("<<media_x<<","<<media_y<<")"<<endl;
cout<<"Dispersia generarilor:
("<<dispersia_x<<","<<dispersia_y<<")"<<endl;
getch();
}
float Rng() {
float r;
do { r=random(100)/
(float)100;
} while (r==0);
return r;
}
void Vect(float a, float b, float &X, float &Y) {
float U;
U = Rng();
X = (-b+sqrt(b*b+4*U*a*(a+b)))/2/a;

95

U = Rng();
Y = (-a*X+sqrt(a*a*X*X+U*b*(2*a*X+b)))/b;
}

8. Calculul integralei duble

y 2 dxdy prin metoda Monte Carlo

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int N=5000;
float I;
float F(float x,float y){
return x*x+y*y;
}
float RNG() {
float r;
do
{ r=random(1000)/1000
.;
} while (r==0);
return r;
}
void main() {
clrscr(); randomize();
float x,y;
for (int i=1;i<=N;i++){
x = RNG();
y = RNG();
if ((x>=0.5)&&(x<=1)&&(y>=0)&&(y<=2*x-1))
I += F(x,y);
}
cout<<"Valoarea aproximativa a integralei este "<<I/N;
getch();
}

9. Calculul integralelor definite

#include
#include
#include
#include

<iostream.h>
<stdlib.h>
<conio.h>
<math.h>

int N=5000;
float I,a=1,b=M_E;
float F(float x) {
return log(x);
}

f xdx prin metoda Monte Carlo

96

float RNG() { float r;


do {
r=random(1000)/1000.;
} while (r==0);
return r;
}
void main() {
clrscr(); randomize();
float x;
for (int i=1; i<=N; i++) {
x=a+(b-a)*RNG();
I+=F(x);
}
cout<<"Valoarea aprox. a integralei este "<<I*(b-a)/N;
getch();
}

10. Simularea stocurilor


#
#
#
#

include
include
include
include

<iostream.h>
<conio.h>
<stdlib.h>
<iomanip.h>

int c[101], s[101] ;


int Cerere();
int Intarziere();
void main() {
clrscr();
randomize();
int nz=20,stoc_min=13,i,j,k,com;
s[0]=20;
int cant=0; //ziua in care vine comanda anterioara
cout<<endl<<"Ziua
Cerere
Nivel stoc";
cout<<endl<<"--------------------------";
cout<<endl<<" --"<<s[0];
for (i=1; i<=nz; i++) {
c[i]=Cerere();
s[i]+=s[i-1]-c[i];
if ((s[i-1]<=stoc_min)&&(i>cant)) {
k = Intarziere(); com=0;
if (i>=4) for (j=i; j>=i-3; j--) com+=c[j];
else {
for (j=i; j>=1; j--) com+=c[j];
for (j=1; j<=4-i; j++)
com+=Cerere();
}
cout<<" Intarzie "<<k<<" zile "<<" o comanda de
"<<com<<" produse";
s[i+k]+=com;
cant=i+k;
}

97

cout<<endl<<setw(3)<<i<<" "<<c[i]<<" "<<s[i]; if


(s[i]<0) { cout<<endl<<"Lipsa de stoc -> trebuie
modificat stocul minim";
getch(); exit(1); }
}
getch();
}
int Cerere() {
int i=random(100)+1;
if ((i>=1)&&(i<=10)) return 1;
if ((i>=11)&&(i<=30)) return 2;
if ((i>=31)&&(i<=70)) return 3;
if ((i>=71)&&(i<=90)) return 4;
return 5; }
int Intarziere(){
int i=random(1000)+1;
if ((i>=1)&&(i<=275)) return 3;
if ((i>=276)&&(i<=775)) return 4;
return 5;
}

11. Generarea variabilei aleatoare Pearson XI


#include
#include
#include
#include

<iostream.h>
<conio.h>
<math.h>
<stdlib.h>

int n;
float x[5000],media,disp;
float RNG(){ return (random(999)+1)/1000.0; }
float Pearson(float miu)
{ float Lambda; Lambda=1/miu*log(RNG()); return
-1/Lambda*log(RNG());
}
void main() {
int i;
clrscr(); randomize();
cout<<"n=";
cin>>n;
for(i=0;i<n;i++) x[i]=Pearson(1);
for(i=0;i<n;i++) media+=x[i];
media/=n;
for(i=0;i<n;i++) disp+=(x[i]-media)*(x[i]-media);
disp/=n;
cout<<endl<<"media="<<media;
cout<<endl<<"dispersia="<<disp;
getch(); }

98

12. Generarea variabilei Weibull folosind metode particulare


#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
float media,disp;
float RNG() {
float r;
do { r = random(1000)/1000.0; } while(r==0);
return r;
}
float weibull(float niu)
{ float
u1,u2,v1,v2,R,Us,Vs; u1=0;
u2=pow((niu-1)/niu,(niu-1)/(2+niu))*exp(-(niu1)/(2*niu));
v1=0; v2=pow((niu+1)/niu,(niu+1)/
(2*niu))*exp((niu+1)/(2*niu));
do {
Us = u1+(u2-u1)*RNG();
Vs = v1+(v2-v1)*RNG();
R=Vs/Us;
}
while(log(Us)+0.5*pow(R,niu)-0.5*log(R)>0);
return R;
}
void main() {
int i,n;
float x[10000],abat;
clrscr();
cout<<"Cate numere generam ? "<<endl;
cin>>n;
for(i=0;i<n;i++) x[i]=weibull(2);
//se calculeaza media&dispersia
for(i=0;i<n;i++) media += x[i];
media/=n;
for(i=0;i<n;i++)disp += (x[i]-media)*(x[i]-media);
disp/=n;
abat=sqrt(disp);
cout<<endl<<"Media:"<<media;
cout<<endl<<"Dispersia:"<<disp;
cout<<endl<<"Abaterea:"<<abat;
getch();
}

99

BIBLIOGRAFIE

1. Barbu Gh., Modele de simulare cu aplicaii n fiabilitate, Editura Tehnic,


Bucureti, 1992.
2. L.Devroye, Non-Uniform Random Variate Generation, Springer-Verlag,
New York, 1986.
3. Gorunescu F., Prodan A., Modelare stochastic i simulare, Editura
Albastr, 2001.
4. Raiu Camelia-Suciu, Modelarea i simularea proceselor economice,
Editura Didactic i Pedagogic, Bucureti, 1995.
5. Rdceanu Eduard, Limbaje de simulare, Editura Militar, Bucureti, 1981.
6. Vduva Ion, Modele de simulare cu calculatorul, Editura Tehnic,
Bucureti, 1977.
7. Vduva Ion i alii, Simularea proceselor economice, Editura Tehnic,
Bucureti, 1983.
8. K. Velten, Mathematical Modeling and Simulation, John Wiley and Sons,
New York, 2009.
9. Ziegler P.B., Theory of Modelling and Simulation, John Wiley and Sons,
New York, 2000.

100

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