Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Επίδοση Υπολογιστικών Συστημάτων Α.-Γ. Σταφυλοπάτης Προσομοίωση Δημιουργία τυχαίων αριθμών
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.
ÓÐÓÙ Ý Ù ÓØÙÕ ÛÒ Ö ÑôÒ ÓÑ Ò ÓÙ Trace-driven simulation Self-driven simulation ØÙÕ ÛÒ Ö ÑôÒ ÒÒ ØÖ Random number generators D.E. Knuth The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, Addison-Wesley, 1981. 3
Ñ ÓÙÖ ÓÐÓÙ ôò ØÙÕ ÛÒ ÔÖ Ñ Ø ôò Ö ÑôÒ {U n } ÓÑÓ ÑÓÖ Ø Ò Ñ Ñ ÒÛÒ ØÓ Ø Ñ (0,1) U n = X n /m ÔÓÙ {X n } ÓÐÓÙ Ö ÛÒ Ö ÑôÒ ÓÑÓ ÑÓÖ Ø Ò Ñ Ñ ÒÛÒ ÔÓ Ó Ø Ñ [0, m 1] Ñ ÐÓ X 0 seedµ Ø ÓÐÓÙ º Ô ÖÓ Å Ø Õ Ñ Ø Ñ X 0, X 1 = f(x 0 ),..., X n = f(x n 1 ) 4
Περίοδος = ουρά + κύκλος 5
Ö ÑÑ Ó Ð Ö ÑÓ Ó ÙÒ Ñ Ø Ñ ØÖÓ Ñ Ø µ ÒÒ ØÖ Ó ÙÒ Ñ Ø Ñ ØÖÓ Ö ÑÑ (Mixed) Linear Congruential Generator (LCG) X n = ax n 1 + c mod m ÔÓÙ a c Ò Ñ ÖÒ Ø Ø Ö X n = a n X 0 + c(an 1) a 1 mod m 6
 ôö Ñ ÓÐÓÙ ÔÓÙ Ñ ÓÙÖ Ø Ô ØÓÒ Ñ Ø Õ Ñ Ø Ñ LCG Õ Ô ÖÓ¹ Å m full-periodµ Ò Ñ ÒÓÒ Ò Ó Ø c m Ò ÕÓÙÒ Ó ÒÓ Ô Ö ÓÒØ Ñ Ð Ø ÖÓÙ Ô ØÓ ½ ½º ÔÖôØÓ Ô Ö ÓÒØ ØÓÙ m Ò Ô Ö ÓÒØ ØÓÙ a 1 ¾º Ò ØÓ Ò Ô Ö ÓÒØ ØÓÙ m Ò Ô Ö ÓÒØ ØÓÙ a 1º º Ç Ô Ø ØÓÙ ÛÖ Ñ ØÓ ÔÐ ÖÓ ÒØ Ò m = 2 b a = 4k + 1 c Ô Ö ØØ ÔºÕº a = 2 34 + 1 c = 1 m = 2 35 º 7
ÒÒ ØÖ Ó ÙÒ Ñ Ø Ñ ØÖÓ ÈÓÐÐ ÔÐ Ø Multiplicative LCG X n = ax n 1 mod m Lehmer ½ ½ X n = a n X 0 mod m 8
Ò m 2 Ñ Ø ÙÒ Ø Ô ÖÓ Ó Ø ÓÐÓÙ Ò m 1 k Ò m ÔÖôØÓ Ö Ñ a ÔÖÛØÓ Ò ÖÞ primitive rootµ Ô ØÙ Õ Ò Ø Â ôö Ñ Ò m = 2 Ñ Ø ÙÒ Ø Ô ÖÓ Ó Ø ÓÐÓÙ Ò 2 k 2 k Ô ØÙ Õ Ò Ø Ò a = 8i ± 3 Ó Ô ÖÓ Ò Ô Ö ØØ º X n = 5X n 1 mod 2 5 X 0 = 1 Ô ÖÓ Ó µº ØÓÙ m a n mod m 1 n = 1,..., m 2µº X n = 7 5 X n 1 mod (2 31 1) Ô ÖÓ Ó 2 31 2µº Minimal Standard, Park & Miller, 1988. 9
Ö ÑÑ ôò ÒÒ ØÖ ôò ÍÐÓÔÓ ÈÖÓ Ð Ñ Ø Ö Ö ÙÔ ÖÕ Ð ÔÓÐÐ ÔÐ Ñ ax n 1 µ Ö Ñ Ø ÔÖ Ñ Ø ôò Ö ÑôÒ Ø ÕÒ Ñ Ø Ö Ñ Ø Ö ÛÒ 10
ØÓÙ Schrage ½ µ Ì ÕÒ ax mod m = g(x) + mh(x) ÔÓÙ g(x) = a(x mod q) r(x q) h(x) = (x q) (ax m) q = m a, r = m mod a x {1,2,..., m Ó Ô ØÓ Ñ Ò Ö ØÓÒ ÙÔÓÐÓ Ñ 1} g(x) Ò Ñ Ö Ø Ö Ô m 1º ØÓÙ Ò r q ØÓ < Ü ÖØ Ø Ñ ÒÓ Ô ØÓ h(x) Ò Ó Ñ ½ Ò g(x) g(x) < 0 ÓÖ Ø Ò Ó Ñ ¼º 11
Minimal Standard (Park & Miller, 1988) function Random : real; const a = 16807; m = 2147483647; q = 127773; r = 2836; var l, h, t : integer; begin h := x div q; l := x mod q; t := a*l - r*h; if t>0 then x := t else x := t + m; Random := x / m end; Υλοποίηση με ακέραιους x: καθολική μεταβλητή με αρχικοποίηση στο διάστημα [1, 2147483646] 12
Minimal Standard (Park & Miller, 1988) function Random : real; const a = 16807.0; m = 2147483647.0; q = 127773.0; r = 2836.0; var l, h, t : real; begin h := trunc(x/q); l := x - q*h; t := a*l - r*h; if t>0 then x := t else x := t + m; Random := x / m end; Υλοποίηση με πραγματικούς x: καθολική μεταβλητή με αρχικοποίηση στο διάστημα [1.0, 2147483646.0] 13
³ ÐÐÓ Ñ Ø Õ Ñ Ø ÑÓ ÒÒ ØÖ Ó ÙÒ Ñ Ø Ñ ØÖÓ ÈÖÓ Ø Additive LCG X n = X n 1 + X n 2 mod m Fibonacci Ô Ø ÒÒ ØÖ Å ØÖ Ô ËÙÒ Ù Ñ ÒÒ ØÖ ôò Ò Ø Ñ shufflingµ Ñ ÓÐÓÙ ØÙÕ ÛÒ Ö ÑôÒ Ñ ÕÖ Ñ Ó ÒÒ ØÖ ôò ÈÖ Ö µ ØÙÕ ÛÒ Ö ÑôÒ ÔÓÙ ÔÖÓ ÖÕÓÒØ Ô ÓÖ ¹ ÒÒ ØÖ L Ecuyer ½ µ Ø ÍÝ Ð Ô 14
L Ecuyer, 1988 x n = 40014 x n-1 mod 2147483563 y n = 40692 y n-1 mod 2147483399 z n = (x n y n ) mod 2147483562 function Uniform : real; var z, k : integer; begin k := s1 div 53668; s1 := 40014 * (s1 - k * 53668) - k * 12211; if s1 < 0 then s1 := s1 + 2147483563; k := s2 div 52774; s2 := 40692 * (s2 - k * 52774) - k * 3791; if s2 < 0 then s2 := s2 + 2147483399; z := s1 - s2; Υλοποίηση με ακέραιους if z < 1 then z := z + 2147483562; Uniform := z * 4.656613E-10 end; s1, s2: καθολικές μεταβλητές με αρχικοποίηση στα διαστήματα [1, 2147483562] και [1, 2147483398] αντίστοιχα 15
Ð ÕÓ Ð ÔÖÓ ÖÑÓ Á ÒÓÔÓ Ø ÒÓÑ Ô Ò Ø Ø Ò Ü ÖØ Õ Ñ Ð Ù Õ Ø ÓÕ ôò Ö ÑôÒ χ 2 test Kolmogorov-Smirnov test Serial-correlation test 16
Ñ ÓÙÖ ØÙÕ ÛÒ Ñ Ø Ð ØôÒ ÇÑÓ ÑÓÖ Ø ÒÓÑ ØÓ Ø Ñ ¼ ½µ Pr[U x] = 0 x < 0 x 0 x < 1 1 x 1 17
ÒØ ØÖÓ ÙÒ ÕôÒ Ø ÒÓÑôÒ ËÙÒ Õ Ø ÒÓÑ F(x) = Pr[X x] Ø Ò ÓÔÓ ÙÔ ÖÕ ÒØ ØÖÓ F 1 (y) ÙÒ Õ ÑÓÒ ØÓÒ F 1 (F(x)) = xµº 18
F 1 F(x) U x X x À Ñ Ø Ð Ø X = F 1 (U) ÓÐÓÙ Ø Ò Ø ÒÓÑ F(x) Pr[X x] = Pr[F 1 (U) x] = Pr[U F(x)] = F(x) 19
È Ö Ñ Ø ÇÑÓ ÑÓÖ Ø ÒÓÑ ØÓ Ø Ñ (a, b) F(x) = (x a)/(b a) X = F 1 (U) = (b a)u + a Ø Ø ÒÓÑ F(x) = 1 e λx x 0 X = F 1 (U) = 1 λ ln(1 U) = 1 λ ln(u) U Ø ØÓÙ 1 U ÓÒ ÓÐÓÙ Ó Ò Ø Ò Ø ÒÓÑ µ 20
ÒØ ØÖÓ Ö ØôÒ Ø ÒÓÑôÒ Ö Ø Ø ÒÓÑ Ñ Ø Ñ a 1, a 2,..., a n ÒØ ØÓ Õ Ô Ò Ø Ø p 1, p 2,..., p n ( n i=1 p i = 1) ÖÓ Ø Ô Ò Ø Ø F i = p 1 + p 2 + + p i (i = 1,2,..., n) 21
1 U F F i i-1 F 1 a 1 a 2 a i a n Ô Ð ÓÙÑ Ø Ñ Ö Ø Ö Ø Ñ a i U < F Ñ i ØÓÙ U Þ Ø Ñ ØÓ i ØÓ ÓÔÓÓ Õ ÓÑ ÒÓÙ F i 1 U < F i 22
È Ö Ñ Ø Ó ÙÒ Ø Ø Ñ a 1 a 2 Ñ Ô Ò Ø Ø p 1 pº Ô Ð ÓÙÑ Ø Ò a 1 Ò U < p ÐÐÓ ô Ø Ò a 2 º ÛÑ ØÖ Ø ÒÓÑ p i = (1 a)a i 1 i = 1,2,... (0 < a < 1) Ñ ÖÓ Ø Ô Ò Ø Ø F Ø ÒÓÑ i = 1 a i = 1,2,...º i 1 ln(1 U)/ln a < 1 i Ô Ð ÓÙÑ Ø Ò Ø Ñ i = 1 + ln(u)/ln a 23
À Ñ Ó Ó Ø Ô ÖÖ Ý À ÙÒ ÖØ ÔÙ Ò Ø Ø Ô Ò Ø Ø f(x) Ô Ö Ð Ñ Ò Ø ÓÐ Ð Ö ÓÖ Ó ôò Ó Ñ (a, b) ÝÓ cº Ò f(x) c Y Y x a X X b 24
Ñ ÓÙÖ Ó Ñ Ó ØÙÕ ÓÙ Ö ÑÓ U 1 U 2 º  ØÓÙÑ X = a + (b a)u 1 Y = cu 2 º Õ Ñ Ø ØÓ X Ò Y < f(x) ÐÐÓ ô ØÓ ÔÓÖÖÔØÓÙÑ Ô Ò Ð Ñ¹ ÒÓÙÑ Ø º À ÓÐÓÙ ÙÒØ Ø Ñ Ò Ø Ò Ø ÒÓÑ f(x) X Pr[x X < x + dx/ Y < f(x)] = Pr[x X < x + dx, Y < f(x)] Pr[Y < f(x)] = [dx/(b a)][f(x)/c] 1/[(b a)c] = f(x)dx, a < x < b 25
Η μέθοδος της απόρριψης (Rejection sampling) Γενική περίπτωση: Συνεχής κατανομή f(x) Έστω ότι μπορούμε να δημιουργήσουμε (εύκολα) τυχαίες μεταβλητές της κατανομής q(x) (προτείνουσα κατανομή). Υπάρχει σταθερά M > 1: M q x > f x, x f(x): Κατανομή στόχος Κριτήριο M q(x): Περιβάλλουσα κατανομή αποδοχής/απόρριψης 26
Αλγόριθμος Δημιουργούμε τυχαία μεταβλητή X που ακολουθεί την κατανομή q(x). Δημιουργούμε τυχαίο U ομοιόμορφα κατανεμημένο στο (0, 1). Δεχόμαστε το X αν U f(x), αλλοιώς το M q(x) απορρίπτουμε και επαναλαμβάνουμε τη διαδικασία. 27
Πιθανότητα αποδοχής Pr accept = x Pr[accept x X < x + dx]pr[x X < x + dx] = x Pr[U f X M q X x X < x + dx]q x dx = f x f x dx = 1 M x M q x q x dx = 1 M x Κατά μέσο όρο, απαιτούνται M βήματα (με δημιουργία 2 τυχαίων μεταβλητών ανά βήμα) για τη δημιουργία μιας μεταβλητής της κατανομής στόχου. 28
Η μεταβλητή X ακολουθεί την κατανομή f(x) Pr[x X < x + dx, accept] Pr[x X < x + dx accept] = Pr[accept] = Pr[accept x X < x + dx]pr[x X < x + dx] Pr[accept] = f x q x dx M q x 1 M = f(x) dx 29
Η μέθοδος της απόρριψης Διακριτή κατανομή στόχος f(x) Διακριτή περιβάλλουσα κατανομή M q(x), π.χ. ομοιόμορφη Συναρτήσεις μάζας πιθανότητας 30
ËÙÒ Ø Ñ Ó Ó ËÙÒ Ù Ñ Ñ ÛÒ ÍÔ Ö Ø Ø ÒÓÑ Ø Ü k f(x) = k i=1 α i µ i e µ ix x 0 ( k i=1 α i = 1)º ¹ Ô ÐÓ ØÙÕ Ø Ñ i Ñ ÛÒ Ñ Ø Ö Ø Ø ÒÓÑ α i ¹ Ñ ÓÙÖ ØÙÕ Ñ Ø Ð Ø Ñ Ø Ø ÒÓÑ Ô Ö Ñ ØÖÓÙ µ i Ã Ø ÒÓÑ Erlang¹kº ÈÖ Ø Ø Ò Ñ Ñ ÒÛÒ ØÙÕ ÛÒ Ñ Ø Ð ØôÒ ¹ k k X = ( 1 λ )ln(u i) = 1 k λ ln U i i=1 i=1 31
Å Ó Ó Ø ÙÒ Ð Ü convolutionµ Ã Ø ÒÓÑ Cox Ñ Ó Ó ØÛÒ Ø ôò Ø ÛÒµº ¹ ËÙÒ Ù Ñ Ö ØôÒ Ø ÒÓÑôÒ Ø ôò Ø ÒÓÑôÒ 32
ÌÓ ÖÓ Ñ n Ò Ü ÖØ ØÛÒ ØÙÕ ÛÒ Ñ Ø Ð ØôÒ ÔÓÙ ÓÐÓÙ Ó Ò Ø Ò ¹ Ø ÒÓÑ Ñ Ñ Ø Ñ m ÔÓÖ s 2 Ù ÐÒ Ñ ÐÓ n Ø Ò ÒÓÒ Ø ÒÓÑ Ñ Ñ Ø Ñ nm ÔÓÖ ns 2 Ã ÒØÖ ÔÖÓ Â ôö Ñ µº ÇÖ Ã ÒÓÒ Ø ÒÓÑ ÖÑÓ Ø Ñ ÓÙ Ø ÙÒ Ð Ü º Ø Ò ÓÑÓ ÑÓÖ Ø ÒÓÑ ØÓ Ø Ñ (0,1) Õ m = 1/2 ¹ s 2 1/12º = X = ni=1 U i n/2 σ + µ n/12 À X ÔÓØ Ð ÔÖÓ ÒÓÒ Ñ Ø Ð Ø Ñ Ñ Ø Ñ µ ¹ ÔÓÖ σ 2 Õ Ø Ñ ÐÓ nº 33
Τεχνικές χαρακτηρισμού (characterization) Ειδικοί (ad hoc) αλγόριθμοι βασισμένοι σε: ιδιαίτερα χαρακτηριστικά ορισμένων κατανομών, σχέσεις μεταξύ κατανομών, π.χ. σχέση εκθετικής κατανομής και διαδικασίας Poisson, μετασχηματισμούς. 34
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.