Documente Academic
Documente Profesional
Documente Cultură
Software
Engineering
Systems
Numerical and Engineering
Symbolic Graphics &
Computation Visualization
Zone de cunoștințe conexe
Fundamente necesare
Programarea calculatoarelor
Tehnici de programare
Metode numerice
Algoritmi şi structuri de date
Teoria generală a sistemelor dinamice
Teoria probabilităţilor şi statistica matematică
Programarea orientată pe obiecte
Medii de programare vizuală
…
Obiective
Introducerea conceptelor de bază de modelare şi
simulare discretă
Însuşirea metodelor analitice de modelare pentru
sisteme cu cozi de aşteptare şi reţele de cozi
Introducerea tehnicilor de modelare, simulare şi analiza
performantelor pentru sisteme cu evenimente discrete
complexe
Identificarea posibilităţilor şi limitărilor modelelor
matematice, extinderea lor prin simulare
Utilizarea unor pachete şi biblioteci de programe
specializate pentru modelare şi simulare
Dezvoltarea abilităţilor de modelare/ simulare a unui
sistem nu doar prin studiu, ci prin exerciţii şi probleme,
ca şi prin realizarea unor proiecte
Structura cursului
Modelarea analitică a sistemelor cu even.discrete
Probabilităţi şi procese aleatoare (review)
Generarea numerelor și variabilelor aleatoare
Teoria elementară a cozilor de aşteptare
Reţele de cozi de aşteptare
Reţele Petri/ Modele de simulare pentru SED
Tehnici de estimare și aproximare
Limbaje și medii de simulare
Topici avansate
Simularea paralelă si distribuită
Analiza perturbaţiilor
Conţinutul cursului
Sisteme dinamice
Sisteme cu evenimente discrete (SED, SDED)
Modelarea analitică a SED
Categorii de modele şi nivele de studiu
Modele algebrice şi logice
Modele dinamice: reţele Petri
Modele temporale: reţele Petri temporizate
Modelarea operaţională a SED
Statistica in modelare
Lanţuri şi procese Markov şi semi-Markov generalizate
Formalismul GSMP ca bază a modelelor de simulare
Sisteme cu cozi de aşteptare şi reţele de cozi
Conţinutul cursului (cont.)
Modele de simulare pentru SED
Generarea numerelor şi variabilelor aleatoare
Construcţia şi verificarea modelului de simulare
Execuţia secvenţiala şi analiza simulărilor (ieşirilor)
Validarea simulărilor. Estimatori şi inferenţa statistica
Limbaje şi medii de simulare
Limbaje de simulare
Construcţia unui simulator. Biblioteci de componente
Metode de accelerare a execuţiei simulărilor: simularea paralela
(distribuita), tehnici de gradient
Aplicaţii ale modelarii şi simulării pentru:
Sisteme cu cozi de aşteptare şi reţele de cozi
Sisteme de calcul şi reţele de calculatoare
Sisteme şi reţele de comunicaţii
Referințe bibliografice
Banks J., Carson J.S., Nelson A., Nicol D., Discrete-Event
System Simulation, 3rd Ed., Prentice-Hall, 2000
Cassandras C.G., Discrete Event Systems: Modeling and
Performance Analysis, Irwin & Aksen, Boston, 1993
Lazowska E.D., Zahorjan J., Scott-Graham G., Sevcik K.
C.: Quantitative System Performance - Computer System
Analysis Using Queueing Network Models, 1984
Sadiku M., Ilyas M.: Simulation of Local Area Networks,
CRC Press, 1995
Mocanu M., Principii, concepte şi instrumente de
modelare şi simulare in studiul sistemelor dinamice
discrete, Ed. Sitech, 2004
Notarea
Se face in PV (pct. virtuale, max.100) repartizate astfel:
• 20% teme periodice de evaluare continuă – Q&A (T)
• 20% portofoliu practic - proiect (P)
• 20% test grilă de evaluare finală (G)
• 40% examen scris final – întrebări cu răspuns scurt (E)
Evaluarea continuă a activității de laborator (L) conduce
la acordarea calificativului Admis/ Respins, care
condiționează primirea în examen.
Trebuie să obţineţi minim 50% din punctaj la fiecare
dintre formele de evaluare, pe parcursul semestrului și
finale, pentru a putea lua examenul.
Nota reflectă curba lui Gauss aplicată punctajului final.
Capitolul I
Sisteme dinamice cu evenimente
discrete
Sisteme dinamice: Aspecte calitative
Se are în vedere dezvoltarea de tehnici de
proiectare, analiză, control, măsurare de
performanţe, bazate pe unele metode şi criterii
Definiţii:
un sistem constă din “componente” in interacţiune
un sistem este complet descris de “funcţia” asociată,
pe care o îndeplineşte prezumptiv [Cas93]
modelul - o reprezentare abstractă (o schemă, un
set de ecuaţii etc.) replicând, cu un anumit grad de
acurateţe, comportarea sistemului însuşi
Un model matematic general
< X, T, U, f, Y, g, R >, unde:
X este mulţimea stărilor;
T este timpul (continuu sau discret);
U este domeniul intrărilor admise;
f : XxTxUxTX, funcţia de tranziţie a stărilor;
Y este domeniul de ieşire;
g : XxTY este funcţia de ieşire;
R : UxTU este funcţia de admisibilitate a
intrării (datorata sau nu unei reacţii a
sistemului).
Variabile măsurabile
variabile de intrare – variabile in timp: {u1(t), u2(t), ...}
variabile de ieşire – modificate de sistem ca răspuns:
{y1(t), y2(t), ...}.
Dacă:
u(t) = [u1(t), u2(t), ..., um(t)]T
y(t) = [y1(t), y2(t), ..., yn(t)]T
Modelul matematic general al sistemului, din punct de
vedere intrare-ieşire, este:
y(t) = g(u(t)) = [g1(u1(t), u2(t), ..., um(t)), g2(u1(t), u2(t),
..., um(t)),..., gn(u1(t), u2(t), ..., um(t))]T
Clasificarea sistemelor (1)
sisteme statice – in care toate relaţiile
funcţionale intrare-ieşire pe care le putem
construi sunt descrise simplu prin ecuaţii
algebrice, in care ieşirea y(t) este, pentru orice t,
independenta de valorile trecute ale intrării u(),
<t;
sisteme dinamice – in care relaţiile funcţionale
intrare-ieşire construite sunt descrise prin ecuaţii
diferenţiale, deci in care ieşirea y(t) depinde de
valorile trecute ale intrării u(), <t, deci de
momentul iniţierii studierii relaţiilor i/e
Clasificarea sistemelor (2)
sisteme invariante in timp: răspunsul
intrare-ieşire nu depinde de momentul
aplicării intrării (daca u(t) y(t), atunci
u(t+) y(t+), T);
sisteme variabile in timp: răspunsul
intrare-ieşire depinde de momentul aplicării
intrării (daca u(t) y1(t), atunci u(t+)
y2(t+), cu y1(t) y2(t+) pentru t,T)
“Stare” sistem
Ieşirea unui sistem nu este întotdeauna
aceeaşi atunci când se aplică aceeaşi
intrare
Simpla observare a ieşirilor posibile y(t)
atunci când intrarea u(t) este complet
specificată nu conduce la predicţia unei
ieşiri viitoare
Deci există dependență nu doar de intrare
ci și de “starea” sistemului, care diferă!
Clasificarea sistemelor (3)
Introducerea noţiunii de stare este
importantă pentru înţelegerea corectă a
echilibrului intre influenta factorilor externi
şi interni in răspunsul unui sistem.
Numărul stărilor poate fi finit, numărabil
sau infinit :
- sisteme cu stări discrete;
- sisteme cu stări continue.
Clasificarea sistemelor (4)
Nu doar numărul stărilor influenţează
capacitatea de predicţie a comportării
viitoare a sistemului pentru o intrare data.
- sisteme deterministe: ieşirile sunt complet
determinate de stare, intrări şi momentul
aplicării; altfel spus, orice intrare produce un
răspuns predictibil al sistemului
- sisteme stochastice: cel puţin una dintre
ieşiri e variabila aleatoare; o intrare produce
trecerea aleatoare a sistemului într-una din
stările următoare adiacente celei curente
Clasificarea sistemelor (rev.)
SISTEME
STATICE DINAMICE
VARIANTE IN INVARIANTE
TIMP IN TIMP
LINIARE NELINIARE
CU STARI CU STARI
CONTINUE DISCRETE
CONDUSE DE CONDUSE DE
TIMP EVENIMENTE
DETERMINISTE STOCHASTICE
Fig.1 Fig.2
Justificare (cont.)
Acul intersectează linia dacă y < L·sinθ
Perechea (θ, y) determină in mod unic poziţia
acului (fără a ţine cont de translaţii)
Justificare (cont.)
Spaţiul de eşantionare:
P(X=x)
doar doua valori: 0.3
Succes/Esec (1/0) 0.2
0.1
P ( X 1) p
0
0 1
P ( X 0) 1 p X
E[ X ] p Var ( X ) p (1 p )
Distribuţia binomiala
0.3
Definita de numărul
de încercări reuşite
dintr-un total de n 0.2
P(X=x)
experimente Bernoulli
0.1
Sau ca suma a n
variabile aleatoare de
tip Bernoulli 0
0 1 2 3 4 5 6 7 8 9 10
X
f ( x) P( X x) Cnx p x (1 p) n x E[ X ] np
Var( X ) np(1 p)
Distribuţia binomiala negativa
Definita de numărul necesar de repetări ale unui
experiment Bernoulli pana la obţinerea de m ori
a unui eveniment legat de el (m reuşite)
Sau ca o suma infinita de variabile aleatoare de
tip Bernoulli, cu valori ce încep cu m, m+1, ...
f ( x ) P ( X x ) C mm1x 1 p m (1 p ) x
E[ X ] m(1 p) / p
Var( X ) m(1 p) / p 2
Distribuţia geometrica
0.7
Definita de numărul
0.6
de experimente 0.5
P(X=x)
pentru a obţine 0.3
0.1
0
x1 0 1 2 3 4 5 6 7 8 9 10
f (x) p (1 p) X
x 1 (1 p)
F(x) 1(1 p) E[ X ] Var( X )
p p2
Distribuţia Poisson
Definită de probabilitatea 0.3
P(X=x)
aleatoare independente 0.1
28
Distribuţia exponenţială
Modelează: 0.5
f(x)
complet aleatoare 0.2
Timpii de servire ce
0.1
prezintă o mare
variabilitate 0
0 2 4 6 8 10
Este o distribuţie X
“fără memorie”: 1 x /
f (x) e
f ( x y | X y ) f ( x)
2
E[ X ] , Var ( X )
Distribuţia normala
Descrisă de următoarele 0.45
proprietăţi:
0.3
Limitele pdf la -∞ şi +∞
f(x)
sunt 0
Valoarea maxima a pdf 0.15
după μ X
Se utilizează in
f(x)
0.2
modelarea mărimilor
ce reprezintă 0.1
număr mare de 0 1 2
X
3 4 5
mărimi aleatoare
1 (ln( x ) ) 2 / 2 2
f ( x) e
x 2
2 / 2 2 2 2
E[ X ] e Var ( X ) e (e 1)
Distribuţia uniformă
Utilizată in situaţii cu
date echiprobabile pe
un interval
1
axb
f ( x) b a
0 0 a b
altfel
E [ X ] ( a b) / 2 Var ( X ) (b a )2 / 12
Distribuţia triangulară
Utilizata in situaţii cu 0.3
distribuţii uniforme
f(x)
Sunt necesare doar 0.1
minimul, maximul şi
c.m.probabilă valoare
0
0 1 2 3 4 5 6 7 8 9 10
2( x a ) X
f ( x) , axm
( m a )(b a )
2 (b x ) E [ X ] ( a b) / 2
, m xb
(b m )(b a )
Var ( X ) (b a )2 / 12
0, altfel
Cititi suplimentar!
Alte distribuții. Relații între distribuții
Lognormal Normal Chi-Squared
Distribution Distribution Distribution
Extreme-Value Erlang
Distribution Distribution
Aplicație (verif. practică)
Instalati pe calculatorul personal sau in laborator
pachetul utilitar Analysis ToolPak din Excel
Dupa instalare, comanda Data Analysis trebuie sa fie
disponibila in Excel in grupul Analysis sub tab-ul Data
Folositi aceasta comanda si/ sau alte functii Excel
pentru a genera multiple esantioane de numere
aleatoare cu diferite distributii
Reprezentati grafic distributiile obtinute
Calculati momentele (statisticile) semnificative
pentru esantioanele generate; comparati-le cu
cele teoretice
Modelare și simulare
Curs, anul III Calculatoare
Ex.
Critica modelelor ASF
Maşina Moore necesită un nr. mai mare de stări
decât maşina Mealy
Justificare: fiecare valoare de ieşire necesită propria
stare (pot exista arce multiple ce indica aceeasi stare)
Modelele ASF sunt teoretice si idealizate
Spaţiul si timpul sunt modelate si referite absolut
Procesele lucrează sincron* - se pot utiliza pentru
sisteme la care predomină partea de control
Nu permit descrierea sistemelor complexe
apare fenomenul de “explozie a stărilor”
ASF sunt modele “slabe” dpdv computational**
Reţele Petri “clasice” (C/E)
Model orientat pe stare, ce extinde modelele de tipul AF
pentru a permite modelarea dinamicii asincrone a unui
sistem (inclusiv concurenta, comunicaţie etc.)
Elemente: locaţii, conţin simboluri ce s.n. jetoane (0/ 1),
si tranziţii, plus arce ce leagă elemente de tip diferit
in RP C/E poate exista cel mult un arc intre 2 noduri
Terminologie
Sistem C/E: reţea C/E + marcaj
Configuraţii: marcajele posibile ale unei reţele C/E
Cazuri: configuraţiile accesibile din marcajul iniţial (case graph)
In anii ’60 -’70, accentul principal s-a pus pe dezvoltări
teoretice; din anii ’80 se insista pe instrumente şi aplicaţii
Descrieri
Grafice (grafuri bipartite) şi matematice, cu semantică
formală şi posibilităţi de analiză
Caracteristici importante: stări distribuite şi tranziţii
locale
Exemplu: RP = <P, T, Pre, Post, M>
P = {l0, l1, …, lm} setul poziţiilor (locaţiilor)
T = {t0, t1, …, tn} setul tranziţiilor
Pre : T → L+, funcţia de intrare, ce defineşte locaţiile care
furnizează intrări unei tranziţii
Post : T → L+, funcţia de ieşire, defineşte locaţiile de ieşire
pentru fiecare tranziţie
M : L → {0,1}, funcţia de marcaj, defineşte numărul de simboluri
din fiecare locaţie
Condiţii şi resurse
Reţelele de tip C/E modelează fluxurile de informaţii, la
nivel fundamental (true/false)
Aplicaţii: cele in care fluxul de resurse si/sau numarul de
resurse disponibile este important (document workflow,
data flow, linii de fabricaţie, reţele de comunicaţie, www)
Reţelele de tip P/T reprezintă o
generalizare (extensie) imediata:
Elementele de stare sunt echivalente locaţiilor 2
unde sunt stocate resurse (jetoanele)
Elementele de acţiune sunt reprezentate de 3
tranziţiile locale sau transportul resurselor
Poate fi aplicata o descriere matematica
similara cu cea a RP C/E
Exemplu RP: O reţea PT (1)
p1
p2 t2 t3 p4
p3
t1
t6
p8
p5
p5 t4 p6 t5 p7
Exemplu RP (2)
p1
1 0 0 0 0 0 p1
p2 t2 p4 0 1 0 0 0 0 p2
p3 t3
0 0 1 0 0 0 p3
0 0 0 0 0 1 p4
t1 Pre
t6 0 0 0 1 0 0 p5
0 0 0 0 1 0 p6
p8
0 0 0 0 0 1 p7
0 1 0 1 0 0 p8
p5 t1 t2 t3 t4 t5 t6
p5 t4 p6 t5 p7
0 0 0 0 0 1 p1
- 1 0 0 0 0 1 1 0 0 0 0 0 p2
-
1 1 0 0 0 0 0 1 0 0 0 0 p3
Matricea de incidenţă 0 1 - 1 0 0 0 0 0 1 0 0 0 p4
Post
I Post - Pre 0 0 1 0 0 - 1 1 0 0 0 0 0 p5
1 0 0 - 1 0 0 0 0 0 1 0 0 p6
0 0 0 1 - 1 0 0 0 0 0 1 0 p7
0 0 0 0 1 - 1 0 0 1 0 1 0 p8
0 - 1 1 - 1 1 0
t1 t2 t3 t4 t5 t6
Exemplu RP (3)
p1
p2 t2 p4 M (p )
p3 t3 1 4 4
M ( p )
2 1 0
t6 M ( p )
t1 p8 3 0 1
p5 p7 M ( p ) 0 0
M 4
M
p5 M (p ) 0 0
5
t4 p6 t5 M (p ) 0 0
6
1 1
t2 este validata si se declanseaza M (p )
7
1 0
M ( p )
8
p2 p1 p4
t2 p3 t3 M ' M - Pre ( , t ) Post ( , t )
t6 M C ( , t )
t1 p8
p5 p7
p5
t4 p6 t5
O alta definiţie formală (pt. reţele PT)
O reţea PT poate fi mai întâi definită structural, de ex.
prin 5-tuplul: (P, T, A, C, w), unde
P este o mulţime finită de poziţii (locaţii)
T este un set finit de tranziţii
A este o mulţime de arce, o submulţime a mulţimii
(PT)(TP)
C: P (N {}) \{0} este o funcţie de capacitate a
poziţiilor (capacitatea unei poziţii e implicit nelimitată)
w e funcţia de ponderare aplicată arcelor, w:A{1,2,3 ...}
(ponderea unui arc se consideră implicit unitară)
Prin M0: P N notăm funcţia numită marcaj iniţial
Definiţia dinamică a reţelei PT constă în evidenţierea
modalităţilor (legilor) de evoluţie a marcajului iniţial
Modelarea conceptelor dinamice in RP (2)
10
5 15
5
5 5
0 5
10
10 20
10
10
5
5 5
10
10
A
A1 z A1 z
x y w x y
B w B
z A2
A2
C D
C1 D1
x y u v
C2 D2
UnitControl
down
open
Două blocuri:
floor RezCereri
rezolvă diferitele
req
...
b1
b2
butoane în
interiorul
cereri de etaje într-un
bN
up1
ascensorului
singur etaj cerut
UnitControl
RezCereri dn1
butoane
up2
up/down la
deplasează ascensorul
dn2
up3 fiecare etaj
la etajul cerut
dn3
...
dnN
Descrierea unităţii de control
Inputs: int floor; bit b1..bN; up1..upN-1; dn2..dnN;
Outputs: bit up, down, open;
Global variables: int req;
void UnitControl() {
up = down = 0; open = 1;
while (1) {
while (req == floor);
open = 0;
if (req > floor) { up = 1;}
else {down = 1;}
while (req != floor);
up = down = 0;
open = 1;
delay(10);
}
}
Modelul ASF pentru UnitControl
req > floor
req == floor
req < floor
!(req < floor)
GoingDn
u,d,o,t = 0,1,0,0
req>floor UnitControl
floor>1 FireDrOpen
req<floor
!fire fire
Modelul ASFIC (2)
Cu ierarhie
UnitControl
req>floor
ModNormal
req<floor
fire ModIncendiu
FireGoingDn u,d,o = 0,1,0
!fire
floor==1 u,d,o = 0,0,1
floor>1 FireDrOpen
fire
Modelul ASFIC (3)
Controlerul pentru ascensor reprezentat prin modelul
ASFIC cu două stări concurente
Cu starea concurentă RezCereri
ControlerAscensor
UnitControl RezCereri
ModNormal
...
!fire fire
ModIncendiu
Modele bazate pe urme
Comportarea SDED este in mod natural
descrisa de înregistrarea sau urma “lăsată” de
apariţia unor schimbări discrete, calitative, in
sistem
Micro-schimbările continue, cantitative pot fi pur
si simplu ignorate
In afara modelelor bazate pe stare, modelele
bazate pe urme, studiate la diferite nivele,
sunt foarte utile
Nivele de studiu/ modelare (1)
Nivelul logic – “urma” este secvenţa de
evenimente, in ordinea aparitiei lor
s = e1 e2 e3 ...;
Exemple:
reţelele Petri (“cazuri” = urme)
maşinile cu stări finite (Wonham)
procesele recursive finite (Inan-Varaiya)
procesele secvenţiale comunicante (Hoare)
Nivele de studiu/ modelare (2)
Nivelul temporal - urma este secventa de
perechi
s = (e1,t1) (e2,t2) (e3,t3) ...
Exemple:
reţele Petri temporale
modele algebrice min-max
grafuri data-flow
Nivele de studiu/ modelare (3)
Nivelul statistic - comportarea sistemului e
descrisa de secvenţa perechilor de v.a.
s = (e1,t1) (e2,t2) (e3,t3) ...
(unde ei si ti sunt v.a. si pentru orice realizare ω, s(ω)
= (e1(ω),t1(ω)) (e2(ω),t2(ω)) (e3(ω),t3(ω)) ... este o
urma descrisa la nivel temporal)
Exemple:
Lanţurile Markov
Sistemele cu cozi de aşteptare si reţelele de cozi
Modelele de simulare - având la baza procesele semi-
Markov generalizate (GSMP)
Alte tipuri de modele (1)
Modele orientate pe activitate
Descriu sistemul ca un set de activităţi
Activităţile sunt asociate prin dependenţe de
date sau de execuţie
Exemplu: graf al fluxului de date
Se utilizeaza pentru sisteme dominate de date
Transformă şiruri de date de intrare în şiruri de
date de ieşire → sisteme DSP
Alte tipuri de modele (2)
Modele orientate pe date
Reprezintă sistemul ca o colecţie de date
asociate prin atribute, apartenenţă la clase
etc.
Utilizate mai ales pentru sisteme de programe
Exemplu: diagramele E/R (entitate – relaţie)
<fig>
Alte tipuri de modele (3)
Modele orientate pe structură
Descriu modulele fizice ale sistemului şi
interconexiunile dintre acestea
Nu reprezintă funcţionarea sistemului
Exemplu: schemă-bloc
Modele eterogene
Integrează caracteristici ale mai multor
modele
Exemplu: graf al fluxului de control/date
Alte clasificări
Modele analitice (teoretice)
sistemice, in general deterministe , descrierea se
face la nivel logic sau temporal
operaţionale, in general probabilistice (statistice)
Modele de simulare
derivate din modelele operaţionale
adecvate pentru analiza asistata de calculator
Pentru modelarea SDED la nivel statistic (cea mai
completa) se pot folosi in tandem:
modele operaţionale + modele de simulare
Utilizarea modelelor statistice
Modelele operaţionale - se pot folosi in cazurile când
putem obţine prin calcul formule/ rezultate exacte (având
modalităţi de a simplifica problemele computaţionale)
Exemple: sisteme cu cozi de aşteptare, reţele de cozi
Limitare: cozi simple
reţele de cozi factorizabile
Modelele de simulare - oferă un instrument complet ce
aproximează dinamica sistemului prin oferirea de ipostaze
non-continue incrementale
Pro:
Dinamica originala a SDED este de acest tip!
Contra:
Dificultăţi computaţionale (există soluţii!)
Modelare și simulare
Curs, anul III Calculatoare
Fac = f EXac
Gac = (Xac, E, Fac, x0, Xacm)
SUPERVIZOR
Feedback Controler
(compensator dina- Copie SED
mic de stare) Stare
(estimată
sau exactă)
Controlul supervizor: Implementarea
Se partiţionează E prin identificarea a 2 submulţimi:
mulţimea evenimentelor controlabile Ec – acelea ce pot fi validate
sau invalidate din exteriorul sistemului dat
mulţimea evenimentelor necontrolabile Enc (EcEnc=) – sunt cele
a căror apariţie nu poate fi prevenită şi deci pot fi considerate
permanent validate
Un supervizor poate controla SED prin:
observarea secvenţelor de evenimente generate
dezactivarea, activarea sau forţarea evenimentelor controlabile,
pentru a îndeplini un obiectiv de control, în funcţie de secvenţele
observate
Prin aceasta, supervizorul asigură generarea de către
sistem a unui sublimbaj a lui L(G)
Supervizorul
Formal, supervizorul poate fi introdus ca tuplu S=(S,):
S=(Y, E, g, y0, Ym) e automat generator, numit şi recunoscător –
recunoaşte un limbaj asupra aceleiaşi mulţimi de evenimente E
: EY{0,1} (sau, echivalent, : Y2E) – este o funcţie de
control feed-back cu valori în şablonul de control sau mulţimea de
validare a evenimentelor (1-validare, 0-invalidare)
Supervizorul urmăreşte/controlează comportarea SED-G:
Îşi schimbă starea conform cu evenimentele generate de G
Aplică , pentru validarea/invalidarea evenimentelor controlabile
din subsetul ce generează tranziţii în starea corespunzătoare din G
Prin această legare, funcţiile de tranziţie atât pentru G, cât
şi pentru S, sunt modificate
Comportarea în buclă deschisă a SED-generator G (dar
închisă prin prefix), aşa cum a fost descrisă ea anterior,
este dată de limbajul închis (prin prefix):
L(G)={s sE* & f(s,x0) definită}
Comportarea în buclă închisă
Pentru automatul generator notat S/G, se generează un limbaj
L(S/G), caracterizat de faptul că generarea unui şir s din acest limbaj
este permisă d.d. sL(G) şi sL(S), iar fiecare eveniment eS este
validat de funcţia
Comportarea marcată a automatului generator e dată prin Lm(S/G)
– limbaj ce conţine acele şiruri din L(S/G) marcate atât în G cât şi în S
Supervizorul este văzut în acest caz ca o funcţie S : L 2E ce
specifică pentru fiecare şir de evenimente sL intrarea de control ce
poate fi aplicată ( e notaţia pentru mulţimea intrărilor de control)
Limbajul (închis prin prefix) generat de sistemul în buclă închisă, notat
L(S/G), este definit de următoarele condiţii:
a) L(S/G);
b) şirul st L(S/G) d.d. s L(S/G), t S (s) şi st L(G).
SED generator G şi supervizorul S se execută în paralel astfel:
un eveniment eE poate apărea atunci când GS este în starea (x,y)
d.d. el este posibil atât în G în starea x, cât şi în S în starea y
Studiu de caz
Controlul supervizor al unei reţele
de calculatoare conectate liniar
Probleme de control globale în
sistemele de calcul
Specificaţia globală a unei probleme de control pentru
sisteme de calcul, reţele de calculatoare sau sisteme
distribuite poate fi foarte generală
Exemplu: “controlul tranziţiilor de stare ce pot asigura o
funcţionare eficientă, non-blocantă şi rapidă a unei reţele”
Rezolvarea problemei pentru această categorie de sisteme
se poate face şi global, dar în general, din motive de
reducere a complexităţii, ea se face local
În sistemele distribuite, se implementează supervizorul ca
sistem descentralizat şi local
el este compus dintr-o mulţime de subsisteme supervizor
fiecare dintre acestea observă şi controlează o parte a sistemului
global, prin accesul doar la o parte a evenimentelor controlabile
Acţiuni specifice locale
Se impun:
rafinarea specificaţiei în sub-specificaţii locale, după
descompunerea în subsisteme a sistemului distribuit dat
(etapă care în general nu ridică probleme şi admite mai
multe soluţii)
identificarea subspecificaţiei unei probleme de control
este echivalentă de multe ori cu impunerea unor noi
reguli locale de operare
trasarea unei scheme de prioritate în cazul suprapunerii
acţiunilor de control, datorată suprapunerii parţiale a
subsistemelor controlate
acest lucru este necesar deoarece o soluţia descentralizată
indică doar acţiunile de control ce trebuie luate de fiecare
supervizor local
Descrierea problemei
Formularea unui protocol de control al unei
reţele de cozi compusă din N servere aranjate
liniar, fiecare având o coadă de intrare de
capacitate limitată
Sistem global
(reţea de servere interconectate liniar)
S1 B1 S2
Bn Sn+1
...
Rafinarea specificaţiei
Un mesaj ce intră în sistem este procesat de primul
server, transmis apoi pentru a fi procesat în coada
următorului server ş.a.m.d., până ce este procesat de
toate serverele şi părăseşte sistemul
Serverele se pot defecta (căderi de curent), nu înainte
însă de a salva starea curentă, pentru a relua procesarea
după reparare din exact acelaşi punct
La intrarea şi ieşirea din reţea, înainte de S1 şi după Sn+1,
se află buffere de capacitate pp. nelimitată (nu au
influenţă asupra sistemului, de aceea nu au fost figurate)
Fiecare server Si se poate afla în una dintre următoarele
3 stări: liber (Idle); ocupat (Working); defect (Defective)
Bufferul Bi plasat înaintea serverului Si are tot trei stări
posibile: buffer gol (0); buffer ocupat (1); buffer plin (2)
Diagramele de stare pentru Si şi Bi
Stările iniţiale sunt marcate în figura următoare
printr-o săgeată incidentă; fiind considerate
totodată stări marcate, săgeata e cu dublu sens
Serverul Si Bufferul Bi
I 0
si ei
ei si+1
ri si+1
W D 2
di 1
ei
Descrierea formală a sistemului
Considerând separat fiecare server şi fiecare buffer ca
SED generatoare de evenimente, comportarea (închisă)
în buclă deschisă a fiecărui automat de acest fel poate fi
descrisă folosind formalismul expresiilor regulate astfel:
L(Si) = (si(diri)*ei)*(+si(di+(diri)*))
L(Bi) = (ei(eisi+1)*si+1)*(+ei(ei+(eisi+1)*))
D
di
Reguli locale de operare
1. Serverul S1 nu poate începe servirea dacă B1 plin – pt. a
evita ca evenimentul sfârşit prelucrare la serverul S1 să
încerce scrierea într-un buffer plin (e1 necontrolabil)
2. Serverul S2 nu poate începe servirea dacă bufferul B1 gol
3. Serverul S1 nu poate începe servirea dacă serverul S2
este defect (pericol de blocaj prin umplerea bufferului)
4. Dacă S1 şi S2 defecte simultan, S1 trebuie reparat primul
(pentru a preveni blocajul)
5. Serverele S1 şi S2 nu pot începe servirea dacă deja
lucrează
6. Un server defect nu poate valida începutul servirii (se pp.
că serverele se pot defecta doar în timp ce lucrează),
ci doar terminarea reparaţiei
Codificarea stărilor
Pentru sistemul local controlat (S1-B1-S2) există 3x3x3
(27) stări posibile
Regulile 1-6 permit înlăturarea a 6 stări, cele în care S1
este ocupat sau defect şi B1 plin
Diagrama stărilor sistemului local controlat (S1-B1-S2)
e1
e2
16
1 3
d2
d1 r1 s1 e2
r2
e1 4 s2 2
d1
10
12
d2 r1 18
e2 e2 r2
d2
r2 d1
6 5 e1
d2 s2 11 r1 17
7 s1
s1 s2 s2
e1
d1
8 e1 14 e2
19
13 r1
d1
r2 d2 r2 d2 e2
r1
20
e1 15
9
d1 d2
21 r2
r1
Proiectarea controlerului
Trebuie făcută astfel încât doar tranziţiile de stare
permise să aibă loc
Acţiunea se poate exercita doar asupra evenimentelor
controlabile “început prelucrare la serverul Si (si)” şi
“repararea serverului Si (ri)”, prin variabilele de control
validare start (vsi), respectiv validare reparaţie (vri)
Următoarea tabelă, a stărilor reduse ale controlerului ,
indică valorile variabilelor de control necesare în fiecare
stare a sistemului controlat: 0 – invalidare, 1 – validare,
X – valoare indiferentă
Reducerea stărilor controlerului
Putem considera pentru controler acelaşi număr de stări
ca pentru sistemul controlat (0, 1, X), sau putem reduce
numărul de stări- deci complexitatea controlerului, luând
doar combinaţiile distincte pentru variabilele de control
Diagrama stărilor controlerului 8
e1
d2
r2
s1, d2
e2
r2 s2 s1, r2
e2
2
1 3
d2 e1
r1 d1
r1 d1
r1
5 7
d1 s2
4
e2 e2
d2
d2
r2
6
Modelare și simulare
Curs, anul III Calculatoare
T1
Locaţie
Tranziţie
P2
Exemplul 1
Automat de distribuţie (vânzare):
Distribuie două tipuri de batoane, de 20 de
bani si de 15 bani
Doar două tipuri de monede pot fi folosite, de
10 bani si de 5b
Nu returnează rest
Reprezentare prin diagrama tranzitiilor
de stare, ca automat cu stări finite
Ia baton de 15b
Depunere 10b
5 bani 15 bani
0 bani
Depunere 10b
10 bani 20 bani
Ia baton de 20b
Reprezentare prin RP
Ia baton de 15b
Depunere 10b
15b
5b
Depunere 5b
Depunere Depunere
0b 5b Depunere 5b
5b
Depunere 10b
10b 20b
Depunere 10b
Ia baton de 20b
Scenarii de evolutie
Scenariul 1:
Depunere 5b, depunere 5b, depunere 5b, depunere
5b, ia baton de 20b.
Scenariul 2:
Depunere 10b, depunere 5b, ia baton de 15b.
Scenariul 3:
Depunere 5b, depunere 10b, depunere 5b, ia baton
de 20b.
Dinamica sistemului
Ia baton de 15b
Depunere 10b
15b
5b
Depunere 5b
Depunere Depunere
0b 5b Depunere 5b
5b
Depunere 10b
10b 20b
Depunere 10b
Ia baton de 20b
Tipuri de reţele Petri (crit. structural)
RP ordinare, în care fiecare arc nu poate avea decât
capacitatea (funcţia de ponderare) egala cu 1
Maşinile de stare (MS) – RP unde orice tranziţie are exact
o locaţie de intrare şi o locaţie de ieşire: | t || t |1,t T
Grafurile marcate (GM) - orice locaţie are 1! tranziţie de
intrare şi 1! tranziţie de ieşire: | p || p |1,p P
Reţelele cu alegere liberă (AL) – dacă 2 tranziţii au o
locaţie de intrare comuna, atunci au toate locaţiile de
intrare comune: t , t ' T , t t ' t t ' (sau
echiv. dacă 2 locaţii au o tranziţie comuna de ieşire,
vor avea toate tranziţiile de ieşire comune)
Reţelele cu alegere liberă extinse (ALE) –
acele RP ce pot fi transformate in RP AL
Tipuri simple de reţele Petri (cont.)
Reţelele cu alegere asimetrică (AA) – RP în care, dacă două
locaţii au o tranziţie comuna de ieşire, atunci una din ele are
toate tranziţiile de ieşire ale celeilalte (posibil altele in plus)
RP
AA ALE AL MS GM
PN
p1 t1 p2
2 2
p1 t1 p2 p1 t1 p2
p4
p1 t2
p3
t1
t3
p4
p1 t2
p3
t1
t3
p4
p1 t2
p3
t1
t3
p4
p1 t2
p3
t1
t3
p4
p1 t2
p3
t1
t3
p2 t2 t3 p4
p3
t1
t6
p8
p5
p5 t4 p6 t5 p7
Exemplul 4 (2)
p1
1 0 0 0 0 0 p1
p2 t2 p4 0 1 0 0 0 0 p2
p3 t 3 0 p3
0 0 1 0 0
Pre 0 0 0 0 0 1 p4
t1 t6 0 0 0 1 0 0 p5
p8 0 0 0 0 1 0 p6
0 0 0 0 0 1 p7
0 1 0 1 0 0 p8
t1 t 2 t3 t 4 t5 t6
p5 t4 p6 t5 p7
0 0 0 0 0 1 p1
1 0 0 0 0 1 1 0 0 0 0 0 p2
1 1 0 0 0 0 0 1 0 0 0 0 p3
Matricea de incidenţă 0 1 1 0 0 0 p4
Post 0 0 1 0 0 0
I Post - Pre 0 0 1 0 0 1 1 0 0 0 0 0 p5
1 0 0 1 0 0 0 0 0 1 0 0 p6
0 0 0 1 1 0 0 0 0 0 1 0 p7
0 0 0 0 1 1 0 0 1 0 1 0 p8
0 1 1 1 1 0
t1 t 2 t3 t 4 t5 t6
Exemplul 4 (3)
p1
p2 t2 p4 M ( p1 ) 4
p3 t 3 4
M ( p 2 ) 1 0
t6 M ( p3 ) 0
t1 p 1
p5 8 p7 M ( p ) 0
M M ( p4 ) M 0
p5 5 0 0
p6
M ( p ) 0 0
t4 t5 6
1 1
M ( p )
7
t2 este validata si se declanseaza 0
M ( p8 ) 1
p2 p1 p4
t2 p3 t 3 M ' M Pre (, t ) Post (, t )
t6 M I (, t )
t1 p8
p5 p7
p5
t4 p6 t5
Determinarea (P-)invarianţilor
Un invariant este un vector pozitiv definit* ce
anulează matricea de incidenţă prin înmulțire
la dreapta
X 0: XI = 0
Mi= M0 + XI Mi = M0
A1 A2 A3 A4 A5
Client.creare Client.coada Servire Client.terminare Client.iesire
A6
Server.gol
Construcția rețelei Petri (2)
Se figurează tranzițiile (evenimentele)
A1 A2 A3 A4 A5
Client.creare Client.coada servire Client.terminare Client.iesire
A6
Server.gol
Construcția rețelei Petri (3)
Arcele indică relațiile logice în RP
A1 A2 A3 A4 A5
Client.creare Client.coada servire Client.terminare Client.iesire
A6
Server.gol
Constructia rețelei Petri (4)
Token-urile marchează starea initiala a RP
A1 A2 A3 A4 A5
Client.creare Client.coada servire Client.terminare Client.iesire
A6
Server.gol
Dinamica sistemului (1)
Creare client
Client Sosire Inceput Plecare
Server : gol
1 19,25
Coada : 0
0 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
0 0
A6
Dinamica sistemului (2)
Sosire client
Client Sosire Inceput Plecare
1 19,25 Server : gol
2 26,50 Coada : 1
1 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
1 0
A6
Dinamica sistemului (3)
Servire
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : ocupat
2 26,50 Coada: 0
0 1
A1 T1 A2 T2 A3 T3 A4 T4 A5
1 0
A6
Dinamica sistemului (4)
Terminare client (in sistem)
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : gol
2 26,50 Coada: 0
0 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
1 0
A6
Dinamica sistemului (5)
Iesire client (din sistem)
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : gol
2 26,50 Coada: 0
0 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
1 1
A6
Dinamica sistemului (6)
Sosire client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : gol
2 26,50 Coada: 1
3 31,40
1 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
2 1
A6
Dinamica sistemului (7)
Servire client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : ocupat
3 31,40
0 1
A1 T1 A2 T2 A3 T3 A4 T4 A5
2 1
A6
Dinamica sistemului (8)
Sosire client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : ocupat
3 31,40
4 31,75
1 1
A1 T1 A2 T2 A3 T3 A4 T4 A5
3 1
A6
Dinamica sistemului (9)
Sosire client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : ocupat
3 31,40
4 31,75
5 42,40
2 1
A1 T1 A2 T2 A3 T3 A4 T4 A5
4 1
A6
Dinamica sistemului (10)
Terminare client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : gol
3 31,40 31,80
4 31,75
5 42,40
2 0
A1 T1 A2 T2 A3 T3 A4 T4 A5
4 1
A6
Dinamica sistemului (11)
Servire – Iesire client
Client Sosire Inceput Plecare
1 19,25 19,25 23,45 Server : ocupat
A1 T1 A2 T2 A3 T3 A4 T4 A5
4 2
A6
Exersaţi singuri…
Modelarea conceptelor dinamice cu RP
Modelarea conceptelor dinamice in RP (1)
(C/E si PT)
A B A B A B
A B A B A B
green
red gy
yellow
yr
Doua semafoare rg
rg rg
green
green green
yellow yellow
yellow
yr yr
yr
Tratarea nedeterminismului
Mai multe tranziţii sunt validate, dar numai una
se poate declanşa
Soluţie
rg1 rg2
g1 g2
r1 gy1 x gy2 r2
y1 y2
yr1 yr2
Trenuri: varianta 1
Consideram un sistem feroviar circular cu 4 linii
(unidirecţionale), numerotate (1,2,3,4) si doua
trenuri (A,B)
Restricţie: nu putem avea doua trenuri pe aceeaşi linie
simultan; identitatea trenurilor nu este importanta
Soluţie (partiala)
Daca se adauga noi linii, desi nr. de stari creste rapid, marimea RP creste liniar
cu nr. de stari, dat de formula:
Varianta 2
Consideram un sistem feroviar circular cu 4 linii
(unidirecţionale), numerotate (1,2,3,4) si doua
trenuri (A,B)
Restricţii: nu putem avea doua trenuri pe aceeaşi linie
simultan; dorim sa distingem insa identitatea trenurilor
Varianta 3
Consideram un sistem feroviar circular cu 4 linii
(unidirecţionale), numerotate (1,2,3,4) si doua
trenuri (A,B)
Nu putem avea doua trenuri pe aceeaşi linie in acelaşi
timp, dar nici pe linii vecine (condiţie de siguranţa);
identitatea trenurilor nu este importanta
Varianta 4
Consideram un sistem feroviar circular cu 4 linii
(unidirecţionale), numerotate (1,2,3,4) si doua
trenuri (A,B)
Liniile sunt marcate ca libere, ocupate sau cerute
Un tren va cere linia următoare înainte de a o ocupa
RP generalizate
RP cu arce multiple (sau capacitate a arcelor > 2)
Numărul de arce intre o locaţie de intrare si o tranziţie
determina numărul de jetoane necesare in prima,
pentru a o valida pe cea de-a doua
Numărul de arce determina si numărul de jetoane ce se
consuma/ se produc
free
Alte exerciţii:
Transformaţi reţelele Petri obţinute anterior in
alte modele formale
Efectuaţi analiza accesibilităţii și analiza dinamică
pe aceste modele
Extensii ale modelului de baza:
RP temporizate
Timpul nu este prins in modelul RP de baza
Modalităţile de extensie temporizata a lor au in vedere
introducerea întârzierilor deterministe atât pentru locaţii,
cat si pentru tranziţii
Pot fi derivate concepte noi, de ex. timpul de ciclare ():
pp. reţeaua consistenta, este timpul completării unei
secvenţe de declanşări ce reface marcajul initial:
Întârzieri pentru locatii
min=max{ykT(A-) TDx/ykTM0}
Rezulta pentru o RP temporizata simpla (GM)
a,a a 2 <a,c>
d,d 2x <x,z>
d <d,b>
2
<a,b>
<b,c>
<x,y> e
+<y,z> <a,b> e
<d,a>
<b,c>
<d,a>
Aplicabilitatea RPNI
Programare logica
Modelarea seturilor de clauze (Horn)
B A1, A2, ..., An
unde Ai si B sunt formule “atomice”
Predicat(argumente)
Instructiunea scop (goal statement) se modeleaza ca
tranzitie fara iesiri (sink transition)
Asertiunile de fapte – ca tranzitii sursa
Reprezentarea ca RPNI
Fiecare simbol predicat distinct este o locatie
Fiecare clauza este o tranzitie
Ponderile sunt argumente
La final, trebuie sa existe conditii suficiente pentru a
declansa tranzitia scop
Invarianți numerici
A n
“#A < n”
A n “|A| - #A < n”
In toate
cazurile
A n B m “(|A| - #A < n)
and (|B| - #B < n)”
A
n
B “(#A < n)
m or (|B| - #B < n)”
it m it m ' it (m m ' ) 0 it C 0
Propoziţii si predicate
Pa Pb P
Scheme cu conditii
a b
1 1
7
7 x+y=z
1
3 x
P 2 P z
2 7 R
R y
9
Q 2
Q 2 Scheme cu evenimente
Retele predicate/tranzitii:
• jetoanele individuale sunt extensii de predicate si inlocuiesc conditii propozitionale
• cuantificatori si specificatori intr-o logica a predicatelor permit grupari de
evenimente la nivel propozitional in scheme cu evenimente la nivel de predicate
Concluzii
Modelarea cu reţele Petri ordinare și de nivel
înalt se poate utiliza pentru a testa şi valida
anumite proprietăţi utile ale sistemelor
Siguranţa: este garantată prin faptul că numărul de
simboluri nu creşte nedefinit
Funcţionalitatea: este garantată prin lipsa blocajelor
→ va exista întotdeauna cel puţin o tranziţie care
poate fi declanşată
Avantaj: modelarea sistemelor concurente
Dezavantaj: nu este utilă pentru sisteme
complexe
Modelarea sistemelor de calcul
Curs, anul III Calculatoare
Cazul 1-dim:
la fiecare pas, putem schimba poziția echiprobabil cu +1 sau −1
probabilitățile de tranziție depind doar de poziția curenta
de ex., prob. de tranziție de la 1 la 0 și de la 1 la 2 sunt 0.5, și
toate celelalte prob. de tranziție de la 1 sunt 0, independent de
faptul că sistemul s-a aflat anterior in starea 4 sau 6
Putem estima starea cea mai probabilă in care se află
sistemul după 100 de pași, sau stările posibile și proba-
bilităţile asociate
Procese Markov
Extind modelul discret în continuu și reprezintă o
clasă de modele destul de generale (se aplică cu
succes şi în modelarea altor tipuri de sisteme)
Procesele Markov se caracterizează prin aceea că:
starea la un moment dat t este suficientă pentru
calculul stării la momentele următoare
nu este necesară cunoaşterea stărilor unui sistem
(continuu) la momentele anterioare
Evident, această proprietate este comună cu
lanţurile Markov, sistemul modelat fiind însă
studiat doar la momente discrete de timp
Lanţuri Markov - formalizare
Definiţie. Dacă procesul stochastic X descris de secvenţa
X={Xn}n=0,1,2,... are proprietatea P(Xn+1=j| X0,X1, X2,..., Xn)
= P(Xn+1=j| Xn), atunci el se numeşte lanţ Markov
Interpretare: Probabilitatea apariţiei unui eveniment la
“momentul” n+1 depinde doar de starea curentă (n), NU
şi de stările sistemului la momentele anterioare
Lanţurile Markov multiple de ordinul p se definesc prin
dependenţa probabilităţii apariţiei unui eveniment la
momentul n+1 de cele p stări ale sistemului la momentele
anterioare, generate prin apariţiile altor evenimente la
cele p momente anterioare
Modelul Markov simplu
Notaţii:
(Ω, E, P) – câmp de evenimente elementare
X={Xn}n=0,1,2,... – secvenţă stochastică (şir de v.a. independente)
Ψ – spaţiul stărilor posibile ale procesului, de cardinal numărabil
(simplificat, Ψ e asimilat cu , adică Xn=j arată că procesul
descris de variabila aleatoare Xn este în starea j la momentul n)
P(i,j)=P(Xn+1=j| Xn=i) – probabil. de tranziţie din starea i în j
P=[P(i,j)]i,jΨ - matricea de tranziţie;
(i) - probabilitatea stării iΨ
Modelul este caracterizat de 2 tipuri de ecuaţii:
(j) = (i) P(i, j), j - ecuatiile de balans
i
Rezultate importante:
1. Dacă limita probabilităţilor de trecere (sau a matricelor
de trecere) există, acest lucru este independent de starea
iniţială din care se pleacă
Intuitiv, se poate porni aşa la definirea ergodicităţii
A/B/k/m
A - tipul distribuţiei de intrare
(distribuţia timpilor intre sosiri)
B - tipul distribuţiei de servire
(distribuţia timpilor de serviciu)
k - numărul de staţii (servere) in sistem
m - dimensiunea maxima a cozii
Codificarea tipului distribuţiei
(de intrare sau de servire)
M - distribuţia exponenţiala (notaţia M provine
de la faptul că succesiunea stărilor sistemului
formează un proces Markov, sau Memoryless)
U - distribuţia uniforma
Ek - o distribuţie Erlang cu k nivele
Hh - o distribuţie hiperexponenţială cu h nivele
G sau GI - o distribuţie generală
D - o distribuţie deterministă
…
Disciplina de servire
FIFO (FCFS): unităţile sunt servite in ordinea sosirii in
sistem
LIFO (LCFS): unităţile sunt servite in ordinea inversa
sosirii in sistem
SIRO: unităţile sunt servite in ordine aleatoare
SPT: prima unitate servita este cea cu timpul minim de
servire
PS (partajarea procesorului): pentru intervalul de timp in
care k unităţi solicita servirea, serverul va asigura
servirea fiecăreia pentru un timp proporţional cu 1/k
Disciplina de servire (cont.)
PR (scheme pe baza de priorităţi): clienţilor le
sunt date priorităţi la intrarea in coada, clientul
prioritar este primul servit
Non-preemptive: o unitate aflata in curs de servire
nu poate fi întrerupta
Preemptive: o unitate aflata in servire poate fi scoasa
de o alta intrata in sistem cu o prioritate mai mare;
reintrarea unităţii întrerupte in servire se poate face
din punctul in care a fost întrerupta sau de la început
Sisteme de aşteptare cu server unic
s(t) - numărul de sosiri în sistem în intervalul [0,t]
p(t) - numărul de plecări din sistem în intervalul [0,t]
N(t)=s(t)-p(t), numărul de clienţi în sistem la mom. t
Ti - timpul petrecut de clientul i în sistem
Dreptunghiurile ce compun aria haşurata au baza egala cu
Ti, iar înălţimea egala cu 1 (sosirile au loc pe rând)
t s(t)
N( )d = ( T i ) -
0 i=1
t t
N( )d
0
N( )d s(t)
lim = lim 0 lim - lim ; dar lim = 0.
t t t s(t ) t t t t t t
t s(t)
N( τ ) dτ s(t) T i
N = lim 0
; λ= lim ; T = lim i= 1
max{N P,G + P} T G + N P
Variaţia ratei de prelucrare
Variaţia timpului sistem mediu
pentru un utilizator
Discuţie
Când N creste:
rata de ieşire tinde spre valoarea maxima 1/P
timpul mediu de aşteptare pentru un utilizator
creste proporţional
Rata de ieşire maximala depinde de parametrii-
sistem ca:
proporţia între timpii de pregătire si de execuţie
disciplina de servire
Limitele obţinute nu depind de parametrii-
sistem
Interpretări
Cât timp N<1+G/P, N reprezintă un factor de
blocaj în sistem, deoarece procesorul rămâne
nefolosit o fracţiune importanta din timp
(corespunzătoare momentelor de angajare simultana a
tuturor utilizatorilor în pregătirea task-urilor lor)
Când N>1+G/P, puterea de procesare a
serverului este cea care determina blocajul
Reţele de cozi de aşteptare
O reţea de cozi este un sistem ce constă din mai
multe servere, fiecare având asociat un buffer
Unităţile (clienţii) pot aparţine mai multor clase
Clienţi aparţinând unor clase diferite pot necesita
servicii diferite, chiar de la acelaşi server
După un serviciu, un client poate fi dirijat într-un
anumit mod
De ex., pentru a cere efectuarea unui alt serviciu la
un server diferit de primul sau a părăsi sistemul
Clasificarea reţelelor de cozi după
modalitatea de dirijare
Reţele deschise - au loc:
sosiri în sistem ale unităţilor din exterior (de obicei
modelate ca procese Poisson)
parasiri ale sistemului de către clienţi după efectuarea
unor servicii
Reţele închise
fiecare client circula între servere, pentru serviri, fara a
părăsi sistemul;
din exterior nu pot intra noi clienţi în sistem, deci
numărul total de clienţi este o constanta sistem
Reţele mixte
deschise pentru anumite clase de clienţi si închise
pentru altele
Reţele de cozi factorizabile
Distribuţia staţionara a reţelei poate fi descompusa într-un
produs de distribuţii ale fiecăruia dintre subsistemele de
aşteptare (cozile) componente, analizabile separat
Pentru reţelele deschise independenta distribuţiilor
staţionare ale cozilor individuale (distribuţia staţionara e
produs de distribuţii individuale obţinute considerând o rata
de sosire adecvată, modificată, ce reflectă modalitatea de
rutare în reţea, prin analiza separată a fiecărei cozi)
Pentru reţelele închise dependenta dintre cozi poate fi
capturata prin normalizarea soluţiei independente peste un
spaţiu de stare normalizat; în acest caz, pot apare dificultati
computaţionale în calculul constantei de normalizare
Reţele Jackson deschise
Caracteristici:
M staţii de servire (cu server unic), fiecare având un
buffer de capacitate infinita
Sosirile din exterior ale clienţilor la fiecare staţie i dintre
cele M sunt procese Poisson cu media λ0,i
După efectuarea unui serviciu de către serverul i, un
client poate cere servirea din partea unui alt server j -
cu probabilitatea qi,j, sau poate parasi sistemul - cu
probabilitatea qi,0 :
M
q i,0 = 1 - q i, j
j=1
Ecuaţii de flux
Daca:
timpul de [de]servire al serverului i este exponenţial
distribuit cu media si=1/μi
λi este rata de sosire medie a clienţilor la serverul i
(includem atât clienţii ce sosesc din exteriorul
sistemului la serverul i, cât si pe cei care sosesc din
sistem, după servirea lor de către alt server)
Atunci:
M
i = 0,i + j qi, j , i = 1,2,..., M
j=1
Reţele Gordon-Newell închise
Caracteristici:
Se bazează pe aceleaşi premise ca si o reţea Jackson,
exceptând faptul ca λ0,i=0 si qi,0=0, pentru orice i
(aceasta exprima faptul ca reţeaua este închisa -
numărul total N de clienţi în sistem este fix)
Daca notam starea sistem cu n=(n1,n2,...nM), unde ni e
numărul de clienţi în bufferul serverului i:
M
n= N
i=1
i
Modelarea sistemelor de calcul
Curs, anul III Calculatoare
și ecuații matematice
Modelele de simulare (MS) – tipuri particulare de MM:
Activitate Servire
Se urmăreşte estimarea:
Capacitaţii de procesare
Timpului de aşteptare in coada
Lungimii utile a cozii
Proporţiei de timp in care serverul este ocupat
etc.
Modelarea analitica
Este aici posibila si utila, ca prima aproximaţie,
folosind un model M/M/1
Necesita insa presupuneri suplimentare:
Timpii intre sosiri ~ distribuiţi exponenţial
Timpii de servire ~ exponenţial, independent
Trebuie ca E(t_servire) < E(t_inter-sosiri)
Analiza se face doar in starea stabila
Se pot obţine rezultate exacte; de ex., timpul mediu
de aşteptare in coada:
S2 A E(interarrival time)
,
A S S E(service time)
Specificare și iniţializare model
de simulare
La momentul iniţial (t=0) sistemul este gol
Date de intrare (observate sau generate, nu interesează
deocamdată cum), de ex. in minute:
Client (unit) Timp de sosire Timp intre sosiri Timp de servire
1 0.00 1.73 2.90
2 1.73 1.35 1.76
3 3.08 0.71 3.39
4 3.79 0.62 4.52
5 4.41 14.28 4.46
6 18.69 0.70 4.36
7 19.39 15.52 2.07
8 34.91 3.15 3.36
9 38.06 1.76 2.37
10 39.82 1.00 5.38
11 40.82 . .
. . . .
. . . .
Condiţie de oprire: t>20
Obiective & Măsuri de performanţă
Capacitatea de procesare totală pe durata
simulării (P)
Timpul de aşteptare mediu al unităţilor in coada
N N = nr. unităţilor ce aşteaptă in coada
WQi WQi = timpul de aşteptare in coada al unităţii i
i 1 Ştim ca: WQ1 = 0 (?)
N N > 1 (de ce?)
Timpul de aşteptare maxim al unităţilor in coada
max WQi
i 1,...,N
Măsuri de performanţă (2)
Media (in timp) a numărului de unităţi in coada
20
0 Q (t ) dt Q(t) = numărul de unităţi in coada
20 la momentul t
Numarul maxim de unităţi in coada
max Q(t )
0t 20
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Iniţializări la t = 0.00
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [1, 0.00, Arr]
0.00 0 0 <empty> [–, 20.00, End]
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Validarea consistenței datelor de intrare
Timpul mediu intre sosiri = 4.08 min.
Timpul mediu de servire = 3.46 min.
Deci unităţile sunt procesate mai repede decât
sosesc (in medie), ceea ce înseamnă ca:
Sistemul va opera in regim stabil după un timp
Daca toţi timpii intre sosiri si cei de servire ar fi exact
pe medie, unităţile nu ar intra in coada
Acest lucru este improbabil, datele aleatoare au in
general o anumita variabilitate → coada se va forma
Daca timpul mediu intre sosiri < timpul mediu de
servire, coada va creste “exploziv”
Statistici cumulative și contori
Numărul curent de unităţi servite
Totalul timpilor de aşteptare in coada
Numărul curent de unităţi ce au stat in coada
Timpul maxim de aşteptare in coada (curent)
Totalul timpilor in sistem
Timpul maxim in sistem (curent)
Aria de sub curba Q(t) (ce dă media lungimii cozii)
Maximul curent pentru Q(t)
Aria de sub curba B(t) (ce dă gradul de ocupare a
serverului)
Dinamica simulării in abordarea
prin planificarea de evenimente
Se identifica evenimentele caracteristice
Se iniţializează si se menţine un ceas de timp global
Se creează si se menţine LEV
Se decide logica fiecărui tip de eveniment pentru
Tranziţiile de stare
Actualizarea statisticilor
Actualizarea LEV
Se procesează logic evenimentele pe rând, in ordinea
stricta a LEV (numita si calendar de evenimente)
Trebuie specificata si o regula de oprire (timp maxim
de simulare, număr maxim de unităţi procesate)
Tratarea evenimentelor (1)
La sosirea unei noi unităţi in sistem
Actualizează variabilele statistice (acumulatori persistenţi)
Valoarea ariei de subQ(t)
Max {Q(t)}
Valoarea ariei de sub B(t)
Se aplica unităţii sosite “stampila de timp” curenta (se va
utiliza ulterior)
Daca serverul este liber:
Start procesare (planifica plecarea), pune serverul pe ocupat,
pune timpul de aşteptare in coada pe 0
Altfel, daca serverul este ocupat:
Pune unitatea “la coada”, incrementează lungimea cozii
Planifica următorul eveniment de sosire
Tratarea evenimentelor (2)
La plecarea unei unităţi din sistem, după servire
Incrementează acumulatorul corespunzător
Calculează timpul in sistem al unităţii (momentul curent –
momentul sosirii)
Actualizează variabilele statistice (ca la sosire)
Daca coada este nevidă:
Scoate prima unitate din coada, calculează timpul sau de
aşteptare in coada, începe servirea (planifica evenimentul de
plecare)
Altfel (daca coada este vida):
Trece serverul in starea liber (nu se mai planifica vreun
eveniment de plecare in LEV)
Tratarea evenimentelor (3)
La sfârşitul simulării:
Se actualizează statisticile
Se calculează masurile de performanta folosind valorile
curente, care sunt si finale, ale acumulatorilor
Observaţii:
La începutul simulării, trebuie făcute iniţializări (de ex. in
LEV se pune primul eveniment de sosire si evenimentul
de sfârşit)
După tratarea fiecărui eveniment, se continua cu primul
eveniment din LEV (eveniment iminent)
t = 0.00, sosirea unităţii 1
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [2, 1.73, Arr]
1 0.00 1 0 <empty> [1, 2.90, Dep]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
1 0.00 0.00 0.00
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 1.73, sosirea unităţii 2
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [1, 2.90, Dep]
2 1 1.73 1 1 (1.73) [3, 3.08, Arr]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
1 0.00 0.00 1.73
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 2.90, plecarea unităţii 1
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [3, 3.08, Arr]
2 2.90 1 0 <empty> [2, 4.66, Dep]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
2 1.17 1.17 2.90
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 3.08, sosirea unităţii 3
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [4, 3.79, Arr]
3 2 3.08 1 1 (3.08) [2, 4.66, Dep]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
2 1.17 1.17 3.08
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 3.79, sosirea unităţii 4
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [5, 4.41, Arr]
4 3 2 3.79 1 2 (3.79, 3.08) [2, 4.66, Dep]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
2 1.17 1.88 3.79
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 4.41, sosirea unităţii 5
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [2, 4.66, Dep]
5 4 3 2 4.41 1 3 (4.41, 3.79, 3.08) [6, 18.69, Arr]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
2 1.17 3.12 4.41
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 4.66, plecarea unităţii 2
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [3, 8.05, Dep]
5 4 3 4.66 1 2 (4.41, 3.79) [6, 18.69, Arr]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
3 2.75 3.87 4.66
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 8.05, plecarea unităţii 3
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [4, 12.57, Dep]
5 4 8.05 1 1 (4.41) [6, 18.69, Arr]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
4 7.01 10.65 8.05
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 12.57, plecarea unităţii 4
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [5, 17.03, Dep]
5 12.57 1 0 () [6, 18.69, Arr]
[–, 20.00, End]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
5 15.17 15.17 12.57
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 17.03, plecarea unităţii 5
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [6, 18.69, Arr]
17.03 0 0 () [–, 20.00, End]
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 18.69, sosirea unităţii 6
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [7, 19.39, Arr]
6 18.69 1 0 () [–, 20.00, End]
[6, 23.05, Dep]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
6 15.17 15.17 17.03
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 19.39, sosirea unităţii 7
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [–, 20.00, End]
7 6 19.39 1 1 (19.39) [6, 23.05, Dep]
[8, 34.91, Arr]
Number of Total of Area under Area under
completed waiting waiting times in queue Q(t) B(t)
times in queue
6 15.17 15.17 17.73
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
t = 20.00, sfârşitul simulării
System Clock B(t) Q(t) Arrival times of Event calendar
custs. in queue [6, 23.05, Dep]
7 6 20.00 1 1 (19.39) [8, 34.91, Arr]
4
3
Q(t) graph 2
1
0
0 5 10 15 20
2
B(t) graph 1
0
0 5 10 15 20
Time (Minutes)
Interarrival times 1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times 2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Operaţii la sfârşitul simulării
Timpul mediu de aşteptare in coada:
Timpul total in coada 15 .17
2.53 min./unit.
Nr.de unitati 6
Media in timp a numărului de unităţi in coada:
Aria de sub curba Q(t ) 15.78
0.79 unitati
Valoarea finala de ceas 20
Utilizarea serverului:
Aria de sub curba B(t ) 18.34
0.92
Valoarea finala de ceas 20
Replicarea simulării
Valoarea unei singure simulări (“replicări”) nu este foarte
semnificativa dpdv statistic
Tabelul următor permite compararea a 5 replicări:
Executii pilot
Interpretare si documentare program
Faza de planificare
a) Specificarea problemei
• intrebari esentiale: “Ce se cere? La ce va folosi?”
• uneori se poate formula doar obiectivul atasat unei
descrieri vagi a procesului studiat
b) Estimarea resurselor
• implica alegerea modalitatii de abordare, studii de
fezabilitate, evaluarea costurilor de timp si personal,
ca si stabilirea graficului de derulare a activitatilor
c) Analiza sistemului si a datelor
• se identifica diversele nivele de detaliere necesare
Faza de modelare
Consta in:
a) Construcţia modelului: pot exista mai multe
modele candidate, trebuie ales unul
b) Colectarea datelor: datele reale permit
identificarea modelului adecvat
c) Translaţia modelului: codificarea intr-un
program ("model programat")
Faza de verificare/validare (1)
Verificarea consta in depanare si testare program
Validarea este mai ampla – la întrebarea “reflecta
programul in mod fidel sistemul?” răspunsul e DA
numai daca se respecta câteva principii de lucru
In dezvoltarea unui model valid asociat datelor de
intrare distingem următorii paşi:
a. colectarea datelor brute din sistemul studiat
b. identificarea distribuţiei statistice a datelor, prin:
- construirea distribuţiei frecvenţiale a datelor de intrare
(histograma);
- asumarea unei presupuneri distribuţionale (in practica apar mai
frecvent doar câteva distribuţii standard)
Faza de verificare/validare (2)
Paşi in validare (cont.):
c. estimarea parametrilor distribuţiei asumate
d. testarea concordantei intre distribuţia asumata (cu
parametri estimaţi) si datele de intrare, folosind:
testul χ2
testul Kolmogorov-Smirnov
Daca testul de concordanta eşuează, ipoteza că datele
urmează legea distribuţionala propusa trebuie respinsa
si se încearcă o noua ipoteza distribuţionala (se reia cu
pasul b)
Daca mai multe iteraţii ale acestei proceduri eşuează
in găsirea unei concordante intre distribuţia asumata si
datele colectate, trebuie folosita distribuţia empirica
Faza de execuţie
Consta in:
a) Proiectarea experimentelor: se aleg execuţii
generice
b) Experimentare: se executa programul cu date
reale!
c) Analiza: se interpretează rezultatele
d) Implementarea/Documentarea:
• cum se implementează deciziile rezultate din simulare?
• cum se documentează modelul in vederea reutilizării?
Măsurători de performanţă
Fundamentale sunt răspunsurile la câteva întrebări:
Ce alternative se simulează (se executa)?
Cat de lunga este o execuţie?
Ce se măsoară?
Maximul, minimul, totalul, media, varianta, momente de
ordin superior, distribuţii specifice de frecventa, timpii
intre sosiri, timpii de servire, lungimi ale cozilor, rate de
pierdere sau eroare etc.
Care sunt proprietăţile (statistice) ale "masurilor"
de care suntem interesaţi?
Sunt necesare si alte execuţii? Trebuie schimbat
modelul? Trebuie schimbaţi parametrii?
Planificarea de evenimente
Rămâne cea mai adecvată programării standard,
si cea mai eficienta in cazul execuţiei secvenţiale
Se utilizează de obicei funcţii de biblioteca pentru
Prelucrarea listelor
Generarea numerelor aleatoare
Generarea variabilelor aleatoare
Colectarea statisticilor
Managementul (ordonarea) LEV si ceasului de timp
“Nod de sincronizare" - ansamblul procedurilor ce
implica întreţinerea LEV (adăugarea, suprimarea
sau modificarea de evenimente)
Ipostaza sistem tipica
Exemplu de programare
Pentru același sistem simplu de aşteptare compus
din coada de dimensiune maxima n=500 si server
COADA SERVER
Sosirea clienţilor
Clienţi in Client in Plecarea clienţilor
aşteptare servire
1 - 0 1 2 1 0 0 2 2
2 2 2 2 1 2 2 2 1 3
3 4 6 3 3 3 6 6 3 9
4 1 7 4 2 4 7 9 2 11
5 2 9 5 1 5 9 11 1 12
6 6 15 6 4 6 15 15 4 19
Algoritmul de planificare evenimente/
avans al timpului simulării
1) Scoaterea evenimentului iminent din LEV
2) Avansul ceasului sistem (CLOCK) la momentul
apariţiei evenimentului
3) Execuţia evenimentului iminent
actualizarea stării sistemului, a atributelor entităţilor
sistemului, a seturilor
4) Generarea evenimentelor viitoare si plasarea lor
in LEV in poziţia corecta
5) Actualizarea rezultatelor cumulative si statistice
Tratare eveniment “sosire client”
Planifica următoarea sosire
Server ocupat?
Nu Da
Return
Tratare eveniment “plecare client”
Coada vida?
Nu Da
Return
Programarea modelului
Poate fi făcuta intr-un limbaj procedural (C)
Proiectul C (anexat in fisierul SimProg.pdf) e
compus din fişierele sursa:
"sp.c“: simulatorul principal, ce conţine rutinele de
iniţializare, avans timp, tratare a evenimentelor si
generare a rapoartelor
"rndevg.c“: conţine rutine pentru generarea
distribuţiilor statistice
"rndevg.h“: fişierul header ce conţine definiţiile de
prototipuri si constante
Un număr de 10 execuţii fără modificarea
parametrilor modelului permite o analiza simpla
Execuţia modelului programat
Valoarea de Utilizarea Lungimea Timpul total % clientilor ramasi Timpul de Numarul
start (seed) serverului maxima a al simularii > 4 min.în sistem raspuns plecarilor din
(%) cozii (min.) mediu (min.) sistem
frecvente
similaritate a distributiilor
Oi reprezinta numarul valorilor
de date observate in cel de-al
i-lea interval (sunt k intervale)
valori ale datelor
pi este prob. ca o valoare sa
intre in cel de-al i-lea interval Ei npi
sub distributia ipotetica
Ar fi de asteptat sa observam
pdf
in intervalul I, Ei = npi, dintr-un
total de n observatii
Se calculeaza χ02, care, daca
pp. distributionala este corecta, valori ale datelor
va urma o distr.χ2 cu k-s-1 gr. k
Oi Ei
2
2
de libertate (k e nr. intervale, s
0
este nr.parametrilor distributiei i 1 Ei
ipotetice)
Generarea numerelor aleatoare
Apare ca instrument de lucru in cazul sistemelor si
proceselor stochastice (nedeterministe) – ce necesita
modele cu elemente stochastice
Implica utilizarea distributiilor de probabilitate ca
elemente de baza de modelare
Larg utilizata si in alte domenii:
Simularea statica (Monte-Carlo) – de ex. calculul lui
Analiza probabilistica a algoritmilor – cu conditia sa putem
caracteriza in mod rezonabil distributia datelor de intrare
Criptografia – la baza constructiei cheilor de criptare si a
altor parametri ai algoritmilor si protocoalelor criptografice
...
Ce este un numar “aleator”?
Când putem spune că un anumit număr e aleator?
“Aleatorizarea” (randomness) este un proces
nedeterminist ce produce astfel de numere (fara
insa a putea fi siguri niciodata asupra urmatoarei
valori produse)
Surse bune de numere pur
aleatoare: ruleta, dar si alte
dispozitive fizice (electronice,
radioactive) mult mai rapide
Totusi, acestea sunt foarte greu
de utilizat in simulare
Numere pseudo-aleatoare
Cel mai important in simulari, care de obicei se
fac pentru a compara diverse evolutii ale unui
sistem, este pastrarea conditiilor de operare
Aceste conditii sunt influentate de esantioanele
datelor de intrare, la randul lor determinate de
numerele aleatoare folosite
trebuie pastrata sursa de numere aleatoare in
toate simularile
chiar daca sunt pseudo-aleatoare (generate de
algoritmi - deterministi) acestea trebuie sa
satisfaca anumite proprietati statistice
Proprietati ale unui “bun” generator
si numerelor aleatoare generate
Generatorul trebuie sa fie rapid
Memoria necesara algoritmului de generare nu trebuie
sa fie excesiva
Numerele generate trebuie sa fie independente statistic
(fara autocorelare)
Perioada de repetitie a numerelor generate trebuie sa fie
suficient de mare
Pericolul degenerarii sirului de numere trebuie eliminat
(nu trebuie ca de la un anumit rang, numerele sa nu mai
respecte conditiile impuse)
Sirul de numere aleatoare trebuie sa fie reproductibil
Metode analitice de generare a n.a.(1)
Mijlocul patratului (Von Neumann)
Un numar initial (seed) este ridicat la patrat, si cifrele
din mijloc formeaza primul n.a. (prin repozitionarea
punctului zecimal se poate obtine un numar intre 0 si
1); acesta se ridica din nou la patrat si se obtine prin
aceeasi tehnica al doilea n.a., iar procedeul continua
Sursă slaba de n.a. – prin faptul ca anumite secvente
r 2
4 a
P(x,y) r*r 10000
12
4 a
y 1 *1 10000
r a
2500
x
Functii de generare a n.a. in C/C++.
Functiile rand() si srand()
Returneaza valori intregi generate (pseudo) aleator
rand() – returneaza acelasi sir de numere
Aplica metoda congruentiala multiplicativa (factor 232) si
returneaza secvente de n.a. intre 0..RAND_MAX (constanta
simbolica e definita in stdlib.h, valoarea uzuala este 32767)
Sirul de numere returnat poate fi schimbat daca se modifica
valoarea implicita a variabilei seed (reinitializare generator)
srand() – face (re)initializarea generatorului de n.a.
Utilizare: srand(int iSeed)
iSeed poate fi data explicit, ca o constanta (1=val.implicita),
sau setata diferit la fiecare rulare, in functie de timp
Functia time() si operatorul %
Trebuie inclus header-ul <time.h> ce contine definitia:
“time_t time(time_t *tloc);”, echivalenta cu:
“int time(int *tloc);”
tloc este locatia de memorie a unei variabile intregi unde poate fi
stocata valoarea generata (optional)
Descriere: time() returneaza valoarea intreaga (in sec.) de
la 1/1/1970, pentru a obtine o valoare diferita a sămânţei
la fiecare rulare a unui program
Daca tloc ≠ 0, valoarea returnata este si stocata in locatia spre
care pointeaza tloc
Operatorul % (modulo) permite scalarea valorilor:
rand( ) % 10 un n.a. intre 0 si 9 inclusiv
rand( ) % b + a un n.a. intre a si b-1 inclusiv
Exemplu: generarea a 10 numere intre 0..20
// printing 10 random numbers // printing 10 random numbers
// between 0 and 20: // between 0 and 20
// Same numbers each run // Different numbers each run
#include <iostream.h>
#include <iostream.h> #include <time.h>
using namespace std; using namespace std;
main() main()
{ {
int i, iNum; int i = 1;
i=1 // print the time
while ( i<=10 ) cout << time(NULL) << endl;
{ // seed the random number
// generator with the time
iNum = rand() % 21; srand( time(NULL) );
cout << iNum << " "; while( i<=10 )
i++; {
} cout << rand() % 21 << " ";
} i++;
}
}
Tema1: Proiect + Referat
Construiti pachetul propriu de rutine de generare
de numere aleatoare; implementati cel putin trei
metode (functii) de generare de n.a.
Implementati functii-criteriu de verificare privind
calitatea numerelor generate
Implementati pe baza generatorului de n.a. 2-3
generatoare de distributii simple (de ex.uniforma,
binomiala, Bernoulli)
Studiati proprietatile esantioanelor generate, prin
comparatie si cu date generate folosind Excel
Notiuni avansate
Generarea distribuţiilor
Generarea distribuţiilor
Fiind data o v.a. X si o variabila x, se defineste funcţia de
repartitie (cdf):
Cazuri:
FX(x): functie continua in x, daca X este v.a. continua
Proprietăţi :
0 ≤ FX(x) ≤ 1, -∞ < x <∞
Avem lim
FX ( x) 0, lim FX ( x) 1
x x
Functia densitatii de probabilitate (pdf)
Daca X este v.a. continua, atunci
2.
Functia de repartitie (pmf)
Daca X este v.a. discreta, cu valorile posibile:
x1, x2, ..., xn (altfel scris xi unde i=1, 2,...,n)
cu probabilităţile de aparitie p(xi) = P(X=xi), vom numi:
p(xi) – functia masei de probabilitate pentru v.a. X
(xi, p(xi)) – distributia de probabilitate (repartitia) lui X
Proprietati ale pmf (probabilităţii elementare):
1. p ( xi ) 0, pentru orice i
n
2.
i 1
p( xi ) 1
Distribuţia eșantionată (de sondaj)
Este data de o functie de tipul pdf sau pmf (sau
echivalent de cdf) ce caracterizeaza valorile ce
trebuie obtinute (si pe care statistica si le poate
asuma) din esantioane aleatoare repetate
O modalitate simpla de aproximare a distributiei
eșantionate: selecţia repetată a unui mare numar
de esantioane aleatoare din multimea de intrare
Calculul valorilor statistice pentru fiecare esantion
si construirea unei histograme dă o imagine
aproximata a distributiei esantionate
Histograma
Se consideră un număr mare de secvenţe de aruncare a
unei monede netrucate, și proporţia medie de apariţie a
a banului (cap)
Histograma apariţiilor,
la 10000 aruncări:
(cf. Wikipedia)
Alte ex. de statistici:
Suma v.a.
Media v.a.
Dispersia v.a.
Media aritmetică de sondaj
(sample average, sample mean-value)
Raportul dintre suma tuturor valorilor x
observate în eşantionul considerat şi numărul
total n al acestora: n
1
x x *i
n i 1
Observaţii
În cazul valorilor observate, aranjate în ordine
crescătoare sau descrescătoare:
1 n n
x
n i 1
n ix i fix i
i 1
unde:
n - numărul total al valorilor observate;
ni - frecvenţa absolută corespunzătoare valorii xi;
fi - frecvenţa relativă corespunzătoare valorii xi.
Dispersia de sondaj (σ2)
(sample variance)
S.n. și moment centrat de ordinul doi:
n
1
2 ni ( xi x ) 2
n i 1
Valoarea numerică a sa caracterizează în modul cel mai
adecvat împrăştierea repartiţiei statistice
Dispersia de sondaj poate fi folosită ca estimare
aproximativă a dispersiei din populaţia originară,
considerându-se formula corectă:
n
1
2 (xi x)2
n1 i1
Metode de esantionare (sampling)
Generarea unor esantioane aleatoare de date
dupa identificarea unei distributii de probabilitate
trebuie sa respecte doua proprietati importante:
Uniformitate: Distributia esantionului aleator si cea
identificata pentru datele colectate sunt identice in
termeni statistici, media si varianta esantionului sunt
identice cu media si varianta populatiei de intrare
Independenţă: Atunci cand setul de esantioane e plasat
in secventa in care a fost produs, nu exista un sablon
neintentionat in aceasta secventa
Teoreme importante:
Inegalitatea lui Cebîşev
Putem avea o imagine asupra repartiţiei prin
cunoaşterea mediei şi dispersiei
Inegalitatea lui Cebîşev arata cat de mari sunt
probabilităţile abaterilor de la medie:
2
P (| x | ) 2
Se poate aplica atât v.a. discrete cat şi continue
Teoreme importante:
Legea numerelor mari
Bernoulli: Probabilitatea ca modulul diferenţei intre frecventa
relativa de aparitie a unui eveniment E şi probabilitatea p a
lui E sa fie mai mic decât un ε pozitiv, arbitrar de mic, este
≈1 pentru un nr. de experimente n suficient de mare
n1 1
P (| p | ) 1 2
n 4 n
Cebîşev: Probabilitatea ca modulul diferenţei intre media
aritmetica A a valorilor medii a n v.a. independente şi media
aritmetica a v.a. sa fie mai mica decât un ε pozitiv, arbitrar
de mic, este ≈1 pentru n suficient de mare
1 n b2
P (| X i A | ) 1 2
n i 1 n
Proprietăți generale ale distribuțiilor
eșantionate
1. Distributia esantionata a unei statistici tinde sa
se centreze pe valoarea estimata a parametrului
statistic corespunzator
2. “Imprastierea” valorilor distributiei esantionate
a multor statistici tinde sa fie tot mai mica pe
masura ce marimea esantionului creste
3. Tot pe masura ce marimea esantionului creste,
distributia esantionata a multor statistici devine
tot mai similara unei distributii normale (forma
de “clopot”)
Proprietăți generale ale distribuțiilor
eșantionate (cont.)
Cand distributia esantionata a unei statistici este
coincidenta cu parametrul corespunzator al
populatiei din care este extrasa, statistica s.n.
nebalansata (unbiased) și constituie un estimator
nebalansat al parametrului populatiei
Ex. x este un estimator nebalansat al mediei
Deviatiile standard ale distributiilor generate sunt
in general mai mici decat deviatia standard a
populatiei de intrare ().
Variatia in distributia generata scade pe masura
ce marimea esantionului creste
Distribuţia normală (Gauss-Laplace)
Este definită de
funcţia de repartiţie:
x x 2
1
2
F x; ; e 2 2
dx
2
unde:
μ R, σ 0, xR
funcţia de densitate a repartiţiei v.a. X:
x 2
1
f x e 2 2
2
Distributia esantionata a mediei
Distributia esantionata a mediei, x, este acea
distributie de probabilitate descriind esantioane
aleatoare repetate dintr-o populatie (proces)
Daca se considera valori
dintr-o populatie de intrare
cu media si deviatia
standard , formand mai
multe esantioane (n),
valorile medii formeaza
distributia esantionata a
mediilor (simple)
Media si deviatia standard a distributiei
esantionate a mediilor ( x )
Daca x este media esantioanelor aleatoare x1, x2,
…,xn, dintr-o populatie sau proces cu media si
deviatia standard , atunci media distributiei
esantionate a mediilor coincide cu , indiferent
de numarul de esantioane (n)
Abaterea distributiei esantionate descrise de x,
este egala cu abaterea standard a populatiei, x
raportata la radicalul marimii esantionului
x si x
n
Teorema de limita centrala (TLC)
TLC (eng. Central Limit Theorem) afirmă că: pentru n
variabile aleatoare continue, identic repartizate cu
aceeaşi medie (m) şi aceeaşi dispersie (σ2), atunci v.a.
medie a eșantioanelor este aprox. normal repartizată, cu
aceeaşi medie (m) și dispersia mai mică (σ2/n)
Acest fapt are loc chiar pentru valori mici ale lui n
De fapt, TLC este un rezultat important și pentru că
stabilește o “cheie de verificare”: x , distribuţia
esantionata a mediilor, este aproximativ normala,
independent de tipul distributiei populatiei de intrare
Teorema de limita
centrala (cont.)
Pe masura
ce marimea Distributia de
esantionului esantionare
creste destul devine aproape
de mult normala.
( 30) ...
X
(cf. Kendall – Introduction to Statistics)
Metode de generare a v.a. de
repartitie data (non-uniforma)
Metoda transformarii inverse
Metoda transformarii directe – se
aplica pentru distributia normala
Metoda convolutiei
Metoda acceptarii-rejectarii
Metoda transformarii inverse (1)
Este aplicabila daca functia de distributie
este inversabila
Metoda se aplica unor distributii continue:
Exponentiala
Uniforma ( U[0,1])
Geometrica
cat si tuturor distributiilor discrete
Desi cea mai directa, nu este si cea mai
eficienta dpdv computational
Metoda transformării inverse (2)
Fie o distributie oarecare descrisa prin cdf FX(x),
pentru care exista inversa F-1X(y) pe 0 ≤ y ≤ 1:
F-1(y) = min { x | F(x) y }
Daca U[0,1] e distributia uniforma, atunci v.a. X
= F-1(U) are cdf F(x)
Justificare. Se poate da ca o consecinta directa a
relatiei:
[U<F(x)] [Xx] [UF(x)] pentru orice x
sau:
Justificare: v.a. X = F-1(U) are cdf F(x)
Daca v.a. X are cdf FX(x) si exista inversa F-1X(y)
pe 0 ≤ y ≤ 1, putem defini o noua v.a. Z=FX(X)
pentru care FZ(z) = P(Z ≤ z) = P(FX(X) ≤ z) daca
0 ≤ z ≤ 1.
Deoarece exista F-1X(y) si din cauza proprietatii
de monotonie:
P(FX(X) ≤ z) = P(X ≤ F-1X(y)) = FX(F-1X(z)) = z
care defineste v.a. Z ca U[0,1] (distrib.uniforma)
atunci v.a. X = F-1(U) are cdf F(x)
Transformarea inversa
Transformarea inversa aplicata
unei distributii continue oarecare
•Fie o v.a. avand pdf f(x) = x/2, pentru 0<x<2
•Prin integrare directa rezulta F(x) = x2/4, pentru
0<x<2
-1
•Inversa este F (U) 2 U
•Prin urmare, pe baza generatorului de n.a. cu
distributie uniforma U[0,1], se obtine v.a. X cu
cdf F(x) = x2/4, data de:
X2 U
Transformarea inversa aplicata
unei distributii discrete oarecare
•Fie o v.a. avand pmf f(x) data de:
P[ X x] x / 10, pentru x 1,2,3,4.
•Transformarea inversa conduce la obtinerea v.a.
X pe baza generatorului de n.a. cu distributie
uniforma U[0,1]:
1 U 0.1
2 0.1 U 0.3
1
X F (U )
3 0.3 U 0.6
4 0.6 U
Transformarea inversa aplicata la
generarea distributiei exponentiale
Interpretand parametrul ca medie a nr.de aparitii
pe unitatea de timp, stiind ca daca U este distributie
uniforma pe [0,1] si 1-U este U[0,1], avem:
Transformarea inversa aplicata la
generarea distributiei geometrice
Functiile distributionale sunt:
pmf : f ( x) (1 p ) x 1 p, pentru x 1,2,...