Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Maria MIROIU
TEHNICI
DE
SIMULARE
2012
CUPRINS
2
Prefa
Capitolul I. SISTEME, MODELE, SIMULARE
1.1 Generaliti 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.2 Descrierea modelelor de simulare
1.2.1 Etapele realizrii uni model de simulare
1.2.2 Ceasul simulrii
4
4
4
5
6
9
12
13
16
18
18
20
23
23
25
25
29
31
34
38
47
47
48
53
56
57
59
59
66
67
73
77
88
100
Bibliografie
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
Autorii
CAPITOLUL I
SISTEME, MODELE, SIMULARE
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.
Decizie
Aciune
Starea sistemului
Informaia
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.
Printr-un 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;
Y = u ([t 0 , t1 ]), t 0 ;
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 = u ([t0 , t1 ]), t0 .
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.
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
x3 80
x1 , x 2 , x3 0
max(50 x1 + 100 x 2 + 75 x3 )
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
P=
p(r )[rc (n r )l ] +
r =0
p(r )nc
r =n+1
11
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.
13
14
15
16
e1
T1
e2
e3
T2
e4
T3
e1
T2
e2
T3
e3
T4
e4
17
CAPITOLUL II
SIMULAREA NUMERELOR ALEATOARE
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
ce se poate verifica cu ajutorul testelor de concordan (testul 2 , testul
Kolmogorov etc.).
Datorit simplitii lor, generatorii cel mai frecvent utilizai sunt aceia care
produc numere pseudo-aleatoare ntregi.
19
Fi (xi ) ,
i =1
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:
x<0
0,
1
0
, F ( x ) = 1 2, 0 x < 1
X :
1 2 1 2
1,
x 1
1
2 K n
0
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:
k , x (a, b )
f (x ) =
0, x (a, b )
k se determin din condiia 1 =
20
0,
xa
F ( x ) = ( x a ) (b a ), a < x < b
1,
xb
n acest caz, se spune c variabila aleatoare U are repartiie uniform pe (a, b).
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
1,
xb
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 XR2 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, x 2 c
F ( x1 , x 2 ) = ( x1 a )( x 2 c ) (b a )(d c ) ( x1 , x2 ) I
1
x1 b, x 2 d
iar
F1 ( x1 ) = F ( x1 , ) este funcie de repartiie uniform pe [a, b],
F2 ( x 2 ) = F ( x 2 , ) este funcie de repartiie uniform pe [c, d].
Atunci:
f1 ( x1 ) = 1 (b a ), x1 [a, b]
f 2 ( x2 ) = 1 (d c ), x2 [c, d ]
f ( x1 , x 2 ) = 1 (b a )(d c )
22
a
a
n baza b, cu 2a cifre ( 0 X n b 2a )
a
X n +1
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
cifre de la mijlocul irului de 4a cifre ale lui X n2 se obine numrul Xn+1. Acest
procedeu poate fi exprimat prin relaia de recuren:
X 2 X 2
X n +1 = n n b 2a
b a b 3a
Aceast metod s-a dovedit a fi o surs slab de numere pseudo-aleatoare
deoarece anumite numere se repet.
De exemplu pentru a=2 i b=10, numrul 37922 se repet deoarece
37922 = 14379264.
23
24
CAPITOLUL III
SIMULAREA VARIABILELOR ALEATOARE
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.
n
x2 K xn
, 0 < pi < 1 () i = 1,2,..., n, pi = 1
p2 K pn
i =1
p2
pn
p
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
0
1
L
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
1 n
Xi
n i =1
1 n
2
- dispersia de selecie s 2 =
Xi m
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.
Algoritmul mai poate fi verificat aplicnd testul 2 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.
*
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
U F ( a)
X a + (b a)
F (b ) F ( a )
dac F(X) U
atunci a X
altfel b X
pn cnd b a < .
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
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
......
......
f ( y ) / (h( y )) h( y )d y =
y1
f (v )
y k h ( v )
H ( y ) = .... (
*
y1
yk
d u )h( v )d v
0
d u )h( y )d y =
......
y1
yk
f ( y )d y =
Observaii:
1
.
1. Probabilitatea de acceptare p a = P( B) =
30
3.3
Metoda compunerii
F ( x ) = pi Gi ( x) ,
i =1
unde
pi = 1
i =1
unde Gi(x) sunt funcii de repartiie. Se spune n acest caz c F(x) este amestecarea
familiei {G1 , G 2 ,.....,G m } de funcii de repartiie dup variabila aleatoare discret N
pentru care P( N = i ) = p i ,1 i m sunt cunoscute.
Se observ c funciile de repartiie {G N ( x )},1 N m , depind de indicele
aleator N, iar F(x) este media n raport cu N a variabilelor aleatoare {G N ( x )}.
Dac notm cu Z N variabila aleatoare care are funcia de repartiie {G N ( x)} ,
atunci X = Z i 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 g i ( x )
i =1
Intrare Gi = p ,1 i m
=1
1.
2.
3.
4.
j0
Se genereaz un numr U uniform pe (0,1).
jj+1
Dac U < Gj transfer la 2.
Ieire X = Zj.
sau
31
i I :
p1 p 2 ... p m
2. Ieire X = Zi.
Exemplu:
La un service sosesc pentru verificare periodic automobile de k tipuri:
1
K :
p1
2
p2
... i
... pi
... k
... p k
F ( x ) = p i (1 e i x )
i =1
p ,1 i k
=1
j0
Se genereaz U cu RNG.
jj+1
Dac U < Gj transfer la pasul 2.
Se genereaz un nou U cu RNG.
1
Ieire X =
ln U .
j
32
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 , 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 x ) e d = 1
0
x+
Acest algoritm poate fi utilizat pentru generarea unor valori de selecie urmnd
repartiia Pearson de tipul XI.
33
3.4
( x m )2
2 2
, xR
2
cu m = M(X), 2 = D2(X), > 0.
Pentru m = 0 i = 1 se obine repartiia normal redus N(0,1) cu densitatea
de repartiie
g (x ) =
x2
e 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
aleatoare X, astfel nct media M(X) = m i dispersia D2(X) = 2, atunci
Z=
X 1 + X 2 + ..... + X n nm
n
34
S-a constatat c dac volumul de selecie n satisface condiia n > 10, atunci
variabila
n
Y
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
Z1 = V1
2 ln S
2 ln S
i Z 2 = V2
S
S
35
f ( x ) = ( )
0,
x
unde R este parametru de locaie, > 0 este parametru de scal, > 0 este
parametru de form, iar
( ) = y 1e y dy
0
f ( y ) = ( )
0, x 0
f ( x ) = ( )
, > 0
0, x 0
f ( x)
1
=
e x x
h( x) ( )
Considerm cazul cnd 0 < < 1 i se obine:
1
1
ex x <
<1.
( )
( + 1)
36
f ( x ) = ( k )
0, x 0
f1 ( x ) = p1
pentru Z+,
0, x 0
iar
k
p1 = f ( x )dx i p2 = 1 p1.
0
f(x, y) = B( p, q )
0, x (0,1)
unde
1
B( p, q) = x p 1 (1 x) q 1dx
0
37
3.5
Metode particulare
3: Dac U ,V D transfer la 1.
4: Ieire X = h 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
1
3. Algoritmul este considerat performant dac pa este mare, adic p a < 1 .
3
4. Probabilitatea de respingere este p r = 1 p a .
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.
F1 = 0
v
=> u = u (i ), v = v(i ) , i 1 , [u ( i ), v (i )] = 0 .
=> u1 = min u (i ) , u 2 = max u (i )
Pentru determinarea lui v1 i v2 se consider funcia
F2(u,v) = v + (u,v)
Acum determinm soluiile sistemului:
F2
u = 0
F2 = 0
v
=> u = u (i ), v = v(i ) , i 1 , [u ( i ), v (i )] = 0 .
=> v1 = min v(i ) , v 2 = max v (i )
39
2. Metoda tangentelor
Se consider tangentele la domeniul D de forma u = const., respectiv
v = const. Se determin punctele
) (
) (
) (
P u1 , v , Q u 2 , v , R u , v1 , S u , v 2
du +
dv
u
v
dv
m(u, v ) =
= u
du
v
Valorile u1 i u2 se determin din condiiile
u1 : lim m(u, v ) = , u1 , v = 0
u u1
v v
u 2 : lim m(u, v ) = , u 2 , v = 0
u u 2
v v
v1 : lim m(u, v ) = 0, u , v1 = 0
u u
v v1
v 2 : lim m(u, v ) = 0, u , v 2 = 0
u u
v v2
1
g ( x ), x R
K
v
D = (u, v );0 u g 1 2
u
40
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 ) D
g (u, v ) = aria D
0, n rest
Atunci, X =
aria D = dudv =
D
dudv
v
0u g1 2
u
,
u
v = tx
u =t
al crui Jacobian este
u
D (u, v ) t
=
D(t , x ) v
t
Atunci
dudv =
u
x = 1 0 = t
v x t
x
D (u , v )
dtdx => du dv = t dt dx
D (t , x )
1/ 2
g ( x)
2 1/ 2
1
t g ( x)
K
aria D =
dx = g ( x )dx =
tdtdx = tdt dx = 2 0
2
2
0
0 t g 1 / 2 ( x)
1
2
t g ( ) 1
V
=
P ( X < x ) = P < x =
g ( )d =
tdt d = K 2 0
K
U
aria D 0
f ( )d = F ( x) .
41
1 1 v
v
Aici K = , g(x) = x 1e x i D = (u , v );0 u 2 e 2 u
u
1
1 v
2
1 .
D = (u, v ); 0 ue 2 u
u
Notnd cu
1 v
(u, v ) = ln ue 2 u
v 2
u
se obine:
1v
1 v
(u, v ) = ln u +
ln 0
2u
2
u
i
D = {(u, v ); (u, v ) 0}
n plus,
d =
du udv vdu v
+
u 2
u
u2
udv vdu
u2
v
u
de unde
du
+
u 2
Notnd cu
v
v
du
dv du
1
1
u v
u
=0
v
u
2
u
u
dv
v
= q , avem
u
du dv qdu 1 1 dv qdu
+
q
= 0 / u
u 2
u
2
q
1 dv qdu
=> du + (dv qdu )q 1
= 0 / : du
2
2
q
42
dv
q
dv
1 1 du
=0
=> 1 +
q q
2 du
2
q
1
1
dv q 1 + 1
dv
q
=>
q
= 1
= 1
2q
2q
du
du
2
2q
dv
dv q q 1
=q
=>
=
du
du
q + 1
q + 1
dv
q sau q + 1 = 0
a) Valorile u1 i u2 se determin din condiiile
du
u
q = => u 0 . Cum u 0 u1 = 0 .
v
=>
1
q + 1 = 0 => q =
1 1 1 1
ln u +
ln
2
2
. Cum (u , v ) = 0 =>
= 0 => ln
u
1
1 1
2
1 1
1 2 2
e
=> u 2 =
q q 1 = 0
=>
1 /
+ 1
q 1 = 0 q =
Cum (u , v ) = 0 rezult c
1 /
1 + 1 1 + 1
ln u +
ln
2
2
q=
+1
+ 1 2
= 0 ln
=
u =
e
1
2
+ 1 2
v
v 2 = uq
u
1 /
+ 1
=> v 2 =
+ 1 2
e
+1
+1
+ 1 2
=
e
43
+1
+1
1 2 2
Intrare >1, u1 = 0, u 2 =
e
+1 +1
+ 1 2 2
v1 = 0, v 2 =
e
1 V
1 V
3: Dac ln U +
ln
> 0 transfer la pasul 1
2 U
2
U
4: Ieire X =
Lem.
Fie X o variabil aleatoare a crei densitate de repartiie
1
f ( x ) = g ( x ), g ( x ) 0, x R . Fie (U, V) un vector aleator pe domeniul D,
K
2
D = (u, v ) : 0 u g 3
,
u
V
cu aria D < . Atunci densitatea de repartiie a lui X =
este f(x).
U
1
2
(x m )2
2 2
, xR.
x2
2 , g ( x ) = e 2
44
1
2
x2
e 2 .
este
1 v2
1 v2
3 u
D = (u, v ) : 0 u e
= (u, v ) : 0 ue 3 u 1
Notnd
1 v2
.
3 u
se obine D = {(u , v ) : (u , v ) 0} .
n continuare,
(u, v ) = ln u +
1 v 2
F1 (u , v ) = u + (u , v ) = u + ln u +
.
3 u
F1
1 v 2 3u 2 + 3u v 2
=>
.
=1+
=
u
u 3 u2
3u 2
Apoi,
F1
= 0 3u 2 + 3u v 2 = 0
u
(1) .
F1 2 v
=
= 0 v = 0 (2)
v 3 u
Din relaiile (1) i (2) se formeaz sistemul:
3u 2 + 3u v 2 = 0
u =
v = 0
v = 0
Completnd sistemul anterior:
F1
u = 0
u =
F1
=0
v=0
1 v2
=0
(u, v ) = 0
ln u +
3 u
v 2
3u
F2 v 2
.
=
u
u 3u 2
F2
3 u v 2
v2 3
=0
=0 0
=
u
u
2
3u 2
n continuare,
F2
2v
=1+
.
v
3u
Din
45
()
F2
2 v
2 3
= 0 1+
= 0 () 1 +
= 0 v =
v
3 u
3 2v
Completnd sistemul derivatelor pariale:
F2
v 2
v2
v 2
u = 0
=
=
3
3
=3
u
u
u
F2
= 0 v =
v = v =
2
1
3
(u, v ) = 0
ln u + 1 v = 0
u =
v 2 =
e
e
3 u
3
v1 =
e
v = 3
2
e
Din
Se calculeaz U * = U U * = u1 + (u 2 u1 )U ~ U (0,1)
2: Se genereaz V ' ~ U (0,1)
Se genereaz V * = v1 + (v 2 v1 )V => V * ~ U (v1 , v2 )
2
V*
U
46
CAPITOLUL IV
SIMULAREA VECTORILOR ALEATORI
f (V )dV ,
1 n
f (Vi ) .
n i =1
Lem.
Fie X = (X1,..., Xk) Rk vector aleator cu funcia de repartiie F(x1, x2, ..., xk).
Fie urmtoarele notaii:
F1 ( x1 ) = P( X 1 < x1 )
F2 ( x1 , x 2 ) = P( X 2 < x 2 | X 1 < x1 )
LLLLLLLLLLLLLL
Fk ( x1 , x 2 , K , x k ) = P( X k < x k | X 1 < x1 , K , X k 1 < x k 1 )
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
stocastic, atunci vectorul aleator Y = (Y1,..., Yk) Rk cu:
47
Y1 = F11 (U 1 )
Y2 = F2 1 (Y1 , U 2 )
LLLLLLLL
Yk = Fk 1 (Y1 , Y2 , K , Yk 1 , U k )
are funcia de repartiie F(x1, x2, ..., xk), unde Fi 1 ( x1 , K , xi 1 , 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:
, dac x I
k
( x ) = (bi ai )
i =1
0, n rest
densitatea de repartiie a lui V, atunci
k
( x ) = i ( xi ) ,
i =1
48
Lem.
Fie X = (X1,..., Xk) un vector aleator cu valori n Rk a crui densitate de
repartiie este
1
f (X ) =
,
H g(X )
cu
g ( X ) 0, X R k
i
H=
g ( X )dX .
Rk
v
v
D = (v0 , v1 ,..., v k )' R k +1 , 0 v0 g 1 k +1 1 ,..., k
v0
v0
49
,
g (v0 ,v1,...,vk ) = aria D
0,
n rest
unde
aria D =
1
K dv0 dv1...dvk
v
v
0 g k +1 1 ,..., k
v0
v0
v = tx
x = v v
k 0
0
k
k
v 0 = t
t = v0
al crui Jacobian este
1
x1
D (v0 ,v1,...,vk )
= x2
D(t,x1,....,xk )
...
xk
0
t
0
0
0 t
... ...
0
...
...
...
...
...
0
0
0 = tk
...
t
Atunci
1
k
g +1
aria D =
0t g
1
k +1
... t dtdx1...dxk = K
123
k
(x1 ,..., x k )
dtdx1...dx k =
Rk
( x1 ,..., x k )
1
H
K g ( x1 ,..., x k ) dx1...dx k =
k + 1 123
k +1
Rk
Acum se obine:
v
v
1
P( X 1 < x1 ,..., X k < x k ) = P 1 < x1 ,..., k < x k =
v0
v0
aria D v
v
1 < x1 ,..., k < x k
v
v0
0
50
I D
= (k + 1) H
1
=
H
x1
x1
xk
1
k
g +1
(x1 ,..., x k )
dtdx1...dx k =
xk
K g (x1 K xk ) dx1...dxk = F ( X ) ,
unde F(X) este funcia de repartiie a lui f(X), XRk i lema este demonstrat.
)'
Ui
sunt
numere
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 v1i )
k
i =1
51
unde
Fi (v 0 , v1 ,..., v k ) = v i + (v 0 , v1 ,..., v k )
cu restricia
(v0 , v1 ,..., v k ) = 0.
( 1 + ... + k ) 1 1
1
x1 ... x k k (1 x1 ... x k ) k +1 1
( 1 ) ... ( k )
(4.1)
sau
f (x1 ,..., x k ) =
unde
H=
1
h( x1 ,..., x k )
H
( 1 ) ... ( k +1 )
( 1 + ... + k +1 )
i
1
(1 x1 ... xk ) k +1 1
(4.1')
Notm
d = k + 1, i = i 1,1 i d , =
i =1
k
k +1
d
d
v1 1 ...v k k v 0 vi
i =1
D = 0 v 0
d
v0
sau
52
(4.2)
+d
1 d
k d
k +1 d
d
D = 0 v 0 v1
... v k
(v0 v )
1
(4.2')
unde v = vi .
i =1
+d
Introducnd funcia : (v0 , v1 ,..., v k ) =
ln v 0 i ln vi k +1 ln (v 0 v )
d
d
i =1 d
domeniul D devine: D = { (v 0 , v1 ,..., v k ) 0}
+ d 1 k +1 1
F0
=1+
= 0
v 0
d v0 v
d v0
1 k +1 1
F0
=1+ l
=
0
vl
d v0 v
d vl
F0
= (v0 , v1 ,..., v k ) = 0
(4.4)
k +1
= l adic vl k +1 = (v 0 v ) l ,1 l k .
v 0 v vl
i =1
l =1
l =1
v0 ( k +1 )
(4.5)
k +1
(4.6)
l l
= l =1
d
de unde
53
d
v 00 = 0, v10 = l
l =1 d
l d
(4.6b)
Cazul i 1 .
n acest caz avem:
i 1 k +1 1
= 1 +
=0
d
v
d
v
v
i
0
l 1 k +1 1
= 1 +
= 0, l i,1 l k
d v0 v
d vl
= (v 0 , v1 ,..., v k ) = 0
+ d 1 k +1 1
Fi
=1+
=0
v 0
d v0 v
d v0
Fi
v i
Fi
vl
Fi
(4.7)
+ d k +1
=
adic
v0
v0 v
k +1
v0
+d
(4.8)
(4.9)
(4.10)
(4.11)
l
vl =
,l i
d + i
Introducem valorile date de (4.9) i (4.12) n ultima relaie (4.7) i se obine:
54
(4.12)
l d
l
=
l =1
l i
(d + i )
( + d )
d + i
d
+d
d
adic:
d + i
vi0 = 0, v1i =
i
i d
d + i
+d
k +1 l
l =1 + d
[ ][ ] [ ]
l d
,1 i k
k +1
i =1
a1 = + d
a 2 = ( + d ) d
bi = i d ,1 i k + 1
Se calculeaz v10 conform cu (4.6b) i v1i conform cu (4.13), 1 i k
1: Se genereaz U uniform pe (0,1) i ia v 0 = v10U
2: Se genereaz U i ,1 i k , U i ~ > (0,1) i independente i calculeaz
k
X i = v1i U i ,1 i k , v ' X i
i '1
Xi
.
V0
sau
55
(4.13)
pa =
( 1 ) ... ( k +1 )
1
(k + 1)( 1 + ... + k +1 ) k2+1 k i (d + i ) i d
d ( + d ) i =1 d ( + d )
xi 0, xi Z , xi = n
i =1
0 pi 1, pi = 1
i =1
Intrare n, p ,1 k , p = 1
=1
Se calculeaz F [i ] =
1:
2:
3:
4:
5:
6:
p ,1 i k
=1
Iniializare j 0.
Genereaz un U cu RNG.
l 0, j j + 1.
ll+1
Dac U F [l ] transfer la Pas2
X [l ] X [l ] + 1
Dac j < n transfer la pasul 1.
Dac j = n, X = ( X [1],...X [k ])'
56
n intervalul
I (0,1)
de
pi ,1 i k .
lungime
Pentru
simularea
(2 )k 2
e 1 2x x =
t
i =1
1
2
2
e xi 2
57
Caz particular: k = 2.
Vectorul X = ( X 1 , X 2 ) are repartiie normal bidimensional:
1
f ( x1 , x 2 ) =
e 1 2Q (x1 , x2 ) ,
(2 )(det )
unde
Q( x1 , x 2 ) = 11 (x1 1 )2 + 2 12 ( x1 1 )(x 2 2 ) + 221 ( x 2 2 )2
12
, = (1 , 2 )`, i = M [X i ], i = 1,2
= 11
21 22
ij = Cov X i , X j , i, j = 1, 2
2
Cov ( X 1 , X 2 )
1 2 2
= 1
, i = D 2 ( X i ), =
2
1
2
1 2
Cov ( X , Y ) = M [( X M [X ])(Y M [Y ])] = [XY ] M [X ]M [Y ].
Reamintim:
Cov ( X , Y )
este coeficient de corelaie.
( X ) (Y )
Funcia de densitate se mai poate scrie astfel
(X ,Y ) =
f ( x, y ) =
(2 )1 2
2
x m 2
(
x m1 )( y m2 ) y m2
1
+
1 2
2 1 2 1
2
e
1 2
58
CAPITOLUL V
APLICAII ALE SIMULRII
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:
I = ... f ( x1 , x 2 , K, x k )dx1dx 2 K dx k
123
(5.1)
59
x1
2
x 2
2
L
x k
2
x1
k
x 2
L
k =
O L
x k
L
k
L
b1 a1
0
0
b2 a 2
=
L
L
0
0
i se obine:
60
L
0
k
L
0
= bj aj
O
L
j =1
L bk a k
(5.4)
unde
= (1 , 2 , K , k )
d = d1d 2 K d k
(5.5)
61
vol (D ) n
h( M i )
n i =1
I = x 2 + y 2 dxdy
D
unde
D = {( x, y ); 1 2 x 1, 0 y 2 x 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
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 y ( x ) = 2 x 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.
n
4 1
vol (D ) =
= .
N 20 5
Atunci
1 1
I1 = (0, 452 + 0,855 + 1,048 + 1,482 ) = 0,20
4 4
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
1,000
1,000
1,000
0,500
0,500
1,000
1,000
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
y (x )
y (x )
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
63
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
I =
(V)
... d1d 2 K d k dy ,
(5.6)
(V )
... d1d 2 . . . d k d
64
0 i 1,
i = 1,K , k
0 1
Lum pe intervalul [0,1], k+1 iruri de variabile aleatoare repartizate uniform:
1(1) , 2(1) , K , n(1) , K
1
h i(1) , i(2 ) ,K , i(k ) .
B
(5.7)
(V )
65
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.
P((X1, X2) s fie n cerc} = P( X 12 + X 2 2 1) =
Aria cercului
=
Aria patratului 4
66
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;
Tmomentul intrrii comenzii n stoc;
Rcererea din stoc pe unitatea de timp;
NCS - nivelul curent al stocului;
Qmrimea optim a comenzii;
Pmrimea 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
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
10%
20%
30%
20%
10%
3 zile
4 zile
5 zile
27,5%
50%
22.5%
Frecvena
10%
20%
40%
20%
10%
955 cereri
222 cereri
925 cereri
473 cereri
995 cereri
021 cereri
313 cereri
333 cereri
744 cereri
Frecvena
27,5%
50%
22,5%
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
Cererea
5
4
3
3
2
4
1
1
4
3
5
2
12
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
72
Cereri de servire
(uniti n firul de ateptare)
Staie
Uniti servite
(flux de ieire)
Cereri de servire
S1
S2
Staii
S3
SN
Flux de ieire
73
Paralel
S1
S2
SN
74
75
76
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 )
t 0
sau
r (u ) du
R(t) = e 0
D = (t m) 2 f (t )dt
0
78
79
80
i =1
i =1
P(xi = 1) = pi .
2.
Sisteme paralele: sistemul funcioneaz dac i numai dac cel puin
una din componentele sale funcioneaz.
F = P S = 1 = P x i = 1 = qi , unde qi = 1 - pi.
i =1
n
i =1
R = 1 F = 1 (1 pi )
i =1
3.
81
Notm:
C 0 ( X ) = {xi | xi = 0} taietura
C1 ( X ) = {xi | xi = 1} drum
1) La sistemele serie avem tieturi:
C 0 ( X ) = {{x1}, K , {x n }} = n tieturi
2) La sistemele paralele avem tieturi:
C 0 ( X ) = {x1 ,K , x n }=1 tietur
3) La sistemele complexe avem tieturi:
C 0 ( X ) = {{x1 , x3 }, {x 2 , x 4 }, {x1 , x5 , x 4 }, {x3 , x5 , x 2 }}
4) La sistemele serie avem drumul:
C1 ( X ) = {x1 , K, x n } drum minim
5) La sistemele paralele avem drumurile:
C 0 ( X ) = {{x1}, K , {x n }} = n drumuri.
6) La sistemele complexe avem drumurile:
C1 ( X ) = {{x1 , x3 }, {x 2 , x 4 }, {x1 , x5 , x 4 }, {x3 , x 4 }{x3 , x5 , x 2 }}
s ( x1 , K , x n ) = x1 x 2 K x n
p ( x1 , K, x n ) = x1 x 2 K xn
c ( x1 ,K , x5 ) = x1 x 2 x3 x 4 x1 x5 x 4 x3 x5 x 2
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.
84
ale
Si
R = i =1
N
unde N depinde de precizia cerut i reprezint numrul de simulri efectuate cu
algoritmul de mai sus.
87
ANEX
IMPLEMENTRI C/ C++
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();
}
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();
}
<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
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
<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
<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
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;
}
(x
#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();
}
b
f (x )dx
a
#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);
}
96
include
include
include
include
<iostream.h>
<conio.h>
<stdlib.h>
<iomanip.h>
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;
}
<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
<iostream.h>
<stdlib.h>
<conio.h>
<math.h>
float media,disp;
float RNG() {
float r;
do { r = random(1000)/1000.0; }
return r;
}
while(r==0);
99
BIBLIOGRAFIE
100