0% menganggap dokumen ini bermanfaat (0 suara)
122 tayangan

Random Number Generator + Random Variate Generator

Materi perkuliahan Pemodelan dan Simulasi mencakup pengenalan simulasi dan contoh-contohnya, simulasi peristiwa diskrit, model statistik dalam simulasi, generator bilangan acak dan variabel acak, ujian tengah semester dan akhir semester, serta presentasi tugas simulasi menggunakan bahasa C++. Metode pembangkitan bilangan acak dan variabel acak meliputi generator bilangan linier kongruensial, transformasi invers, komposisi, konvolusi, p

Diunggah oleh

kamuflaselama
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
122 tayangan

Random Number Generator + Random Variate Generator

Materi perkuliahan Pemodelan dan Simulasi mencakup pengenalan simulasi dan contoh-contohnya, simulasi peristiwa diskrit, model statistik dalam simulasi, generator bilangan acak dan variabel acak, ujian tengah semester dan akhir semester, serta presentasi tugas simulasi menggunakan bahasa C++. Metode pembangkitan bilangan acak dan variabel acak meliputi generator bilangan linier kongruensial, transformasi invers, komposisi, konvolusi, p

Diunggah oleh

kamuflaselama
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 54

64A712

Pemodelan dan Simulasi

Jurusan Teknik Informatika Universitas


Surabaya
MATERI PERKULIAHAN (Baru)
(1) Introduction to simulation + simulation examples
(2-3) Discrete event simulation
(4) Statistical models in simulation

(5-6) Random Number Generator + Random


Variate Generator
(7) Quiz + Review + Penjelasan tugas
(8) UTS
(9-10) Input Modelling
(11) Presentasi awal mengenai tugas yang akan dibuat(tiap-tiap
kelompok 3 orang dg C++)
(12) Presentasi tugas (harus selesai sampai input modelling)
(13) Presentasi tugas (penggabungan tugas sehingga menjadi suatu
program simulasi yang utuh tapi tampilan masih diabaikan)
(14) Output analysis
(15) Presentasi tugas hasil Minggu ke-13 tetapi sudah dengan
tampilan yang user friendly
(16) UAS
Random Number Generator
(RNG)
Overview :

• Untuk membangkitkan suatu variabel dengan


distribusi tertentu diperlukkan suatu
mekanisme untuk menirukan sifat acak yang
dimilikinya.
• Caranya adalah dengan memasukkan bilangan
acak dalam proses pembangkitannya.
• Oleh karena itu diperlukan pembangkit
(generator) bilangan acak
• Kita dapat membangkitkan bilangan acak secara mekanis dengan :
– Melempar sebuah dadu yang “fair”, namun hanya terbatas akan keluar
maksimum 6 bilangan yang berbeda, yaitu bilangan 1 s/d 6 saja.
– Membuat tulisan nomor-nomor pada beberapa kertas, menggulungnya,
memasukkannya kedalam toples, dan mengambil gulungan tersebut
satu-per-satu secara acak
– Memutar roda pada permainan roulette

• Membangkitkan bilangan random secara numerik yang betul-betul ACAK,


bagaimanapun adalah “impossible”

• Yang dapat kita lakukan hanyalah membangkitkan sederetan angka-angka


yang nampak random dan memiliki beberapa karakteristik yang baik
Properties of Random Number
• Random Number yang digunakan dalam simulasi
adalah Random number yang berbasis pada bilangan
kontinyu antara 0 sampai 1, dimana peluang untuk
terpilihnya suatu bilangan adalah sama

• Dalam teori distribusi probabilitas, hal tersebut dapat


ditemukan pada distribusi uniform dengan a=0 dan
b=1

• Sehingga Uniform(0,1) ini akan digunakan sebagai


GENERATOR UTAMA dalam membangkitkan
bilangan random yang berdistribusi selain U(0,1).
Properties of Random Number
f(x
)
1 , 0 x 1
f ( x)  
0 , lainnya

0 1 x
Karena kita tidak bisa membangkitkan Random
Number yang “sesungguhnya” secara numerik,
maka agar generator kita dapat menghasilkan tiruan
yang semirip mungkin dengan Random Number
sesungguhnya, beberapa syarat harus dipenuhi :

• Algoritma yang digunakan harus cepat


• Generator mudah dipindahkan antar
software dan hardware yang berbeda-beda
• Randomness,mempunyai sifat kerandoman
tinggi ( lag 1  0 )
• Long Cycle, artinya deretan bilangan yang
dibangkitkan tidak segera berulang
• Repeatability, yaitu bahwa generator
dapat digunakan berulang-ulang dan setiap
pembangkitannya dijamin menghasilkan
bilangan yang berbeda
• Memenuhi uji kecocokan (goodness of fit)
dengan distribusi uniform
• Middle Square

• Linear Congruential
Generator (LCG)
• Start with a four-digit positive integer Z0 and square it to
obtain an integer with up to eight digits : if necessary, append
zeros to the left to make it exactly eight digits
• Take the middle four digits of this eight digit number as the
next four digit number, Z1.
• Place a decimal point at the left of Z 1 to obtain first U(0,1)
random number U1
• Square Z1, take the middle four digits as Z 2 and place a
decimal point at the left Z2 to obtain U2
• And so on ……
i Zi Ui (Zi)2

0 4 4 16

1 6 6 36

2 6 6 36

3 6 6 ?
 i zi  zi2  ui 
0     13
1 13 169 16
2 16 256 25
3 25 625 62
4 62 3844 84
5 84 7056 5
6 5 25 25
7 25 625 62
8 62 3844 84
9 84 7056 5
10 5 25 25
11 25 625 62
12 62 3844 84
13 84 7056 5
14 5 25 25
15 25 625 62
16 62 3844 84
17 84 7056 5
18 5 25 25
19 25 625 62
20 62 3844 84
i Zi Ui (Zi)2

0 7182 - 51581124

1 5811 0.5811 33767721

2 7677 0.7677 58936329

3 9363 0.9363 87665767


Bagaimana membuat hasil Middle
Square antara 0 dan 1?
• Setiap bilangan hasil pembangkitannya harus dibagi
dengan bilangan sebesar deretan angka 9 sebanyak
digit random yang digunakan

Ui
• Kalau dua digit Ui, maka ui 
99
Ui
• Kalau tiga digit Ui, maka ui 
999
• Demikian seterusnya….
Linear Congruential Generator
(LCG)
Formula pembangkit metode LCG adalah sbb:
xn  (axn 1  c) mod m
• Panjang kerandoman m, yaitu dari 0 s/d m-1
• xn akan bernilai antara 0 s/d m-1, sehingga untuk
membangkitkan bilangan random antara 0 dan 1,
maka digunakan formulasi un = xn/m
• Jika c = 0 maka dinamakan sebagai Multiplicative
LCG (atau MLCG)
Contoh LCG
• Anggap bahwa
– komputer dengan 32 bit, maka m=231-1.
– digunakan MLCG dan
– diset a=16807
• Maka, dengan menentukan nilai awal x0=12345 dan dua
bilangan random secara terurut adalah sbb:
 x1= 16807 x 12345 mod m
= 207482415
u1= x1/m
= 0.0966165285

 x2= 16807 x 207482415 mod m


= 1790989824
u2= x2/m
= 0.839946274
GUIDENCE TO CHOSE a, c and m

For Multiplicative Generator

a. The only positive integer that (exactly)


divides by both m and c is 1

a. If q is a prime number (divisible by only


itself and 1) that divides m, then q divides
a-1
GUIDENCE TO CHOSE a,c and m

For Mixed Congruential Generator

a. The only positive integer that (exactly)


divides both m and c is 1
b. If q is a prime number (divisible by only
itself and 1) that divides m, then q divides
a-1
c. If 4 divides m, then 4 divides a-1
Demo RNG via MS Excel
Random Variate Generation (RVG)
Macam RVG

• Transformasi Invers
• Composisition
• Convolution
• Acceptance Rejection (AR)
• Adaptive Acceptence Rejection (AAR)
• Slice sampling
Transformasi Invers
• Syarat Transformasi Invers
– Fungsi mempunyai CDF yang close form
• Metodenya adalah sbb:

F(x) F ( x )  1  exp(  x)
1
u  1  exp(  x)
u 1  u  exp( x )
1
x   ln(1  u )

1
  ln(u )
0 x 
Maka x dibangkitkan dengan cara :

x

F ( x)  1  e
x Jika dari LCG

U  1 e diperoleh U = 0.6, maka
x :

1 U  e
x   1.ln (1  0.6)
ln (1  U )   x
  0.916
x    . ln (1  U )
Composition (Mixture form)
• Perhatikan bentuk fungsi berikut

f(x)
Half Normal

I II Exponential

f ( x)  k1 f1 ( x) I (  ,0]  k2 f 2 ( x) I[0, )
Dimana data di daerah I dibangkitkan dengan Normal dan
di daerah II dengan Exponential
Contoh Composition -1-

1 2
f ( x)  exp(1 x) I (  ,0)  exp(2 x) I (0, )
2 2
Contoh Composition -2-
f1 ( x)  1, 0  x  1
f 2 ( x)  exp(( x  1)), x  1

I
II
f ( x )  1, 0  x  1
0
1
f ( x)  0.5 f1 ( x) I (0,1]  0.5 f 2 ( x) I (1, )
Convolution
Misalkan sebuah fungsi
Erlang(m, ), maka cara
pembangkitan datanya
adalah dengan mengkon-
volusikan data bangkitan
Exponential().
Acceptance Rejection (AR)
• Sangat bagus untuk fungsi yang tidak jelas pdf atau bukan
• Dapat mengakomodasikan fungsi yang tidak mempunyai CDF close form
• Caranya adalah sbb:

tx
f(x) Reject
f(x)
Accept
rx

x
Algoritma AR
• Bangkitkan x ~ rx
• Bangkitkan u ~ U(0,1)

f ( x)
• If u 
t ( x) then
Accept x
Else
Reject x
Contoh AR -1-
• Bangkitkan data dari pola berikut ini
y
1
• Bangkitkan x ~
U(0,1)
Y=x • Bangkitkan y ~
U(0,1)

• If y ≤ x then
Accept x
Else Reject x
x
0 1
Adaptive AR
Adaptive AR
Slice Sampling
• Sampling dilakukan dengan dua sisi, yaitu sisi
horisontal dan sisi vertikal.
• Sisi vertikal dilakukan random nilai dari NOL
sampai ketinggian densitasnya
• Sisi horisontal dilakukan dengan acuan
‘densitas setimbang’, yaitu dilakukan random
nilai berdasar pada ketinggian densitas tertentu
diambil batas kiri dan batas kanannya.
Slice Sampling
Suatu contoh pergerakan sampling selama proses Slice Sampling
Slice Sampling
There are also fancier versions that will automatically grow
the bracket if it is too small. Radford Neal’s paper discusses
this and many other ideas.
Radford M. Neal, “Slice Sampling”, Annals of Statistics 31,
705-767, 2003.
Iain Murray has Matlab code on the web. I have Python
code on the web also. The Matlab statistics toolbox
includes a slicesample() function these days.
It is easy and requires almost no tuning. If you’re currently
solving a problem with Metropolis-Hastings, you should
give this a try. Remember, the “best” M-H step size may
vary, even with a single run!
Manfaat RVG dalam
Numerical (Monte Carlo) Integrartion
Numerical Integration
(Low dan Kelton, 2000)

• Anggap kita akan menghitung integral berikut


b
I   g ( x)dx
a
• Jika g(x) cukup kompleks maka nilai I akan
cukup rumit. Dengan cara numerik seperti
beriktu dapat diperoleh nilai I dengan cukup
sederhana.
• Caranya adalah sbb:
• Buat random variabel baruY  (b  a ) g ( x) dengan
x bernilai uniform dalam interval (a,b), atau
U(a,b).
• Hitung ekspektasi Y dengan cara berikut
E[Y ]  E[(b  a ) g ( x)]
 (b  a) E[ g ( x)]
b
 (b  a)  g ( x) f x ( x)dx
a
b

 (b  a)
 a
g ( x)dx
(b  a)
I
• Diketahui bahwa E[Y ]  Y ( n)
• Sehingga nilai integral I dapat didekati secara
numerik oleh n n

Y i  g(x ) i
Y ( n)  i
 (b  a) i

n n
• Berarti, bangkitkan data x1 , x2 ,..., xyang
n mempunyai
distribusi Uniform dan masukkan nilainya ke fungsi
g(x) jumlahkan nilainya dan hitung rata-ratanya
sebagai taksiran nilai integral yang sedang dicari.
• Berapa banyak data yang harus dibangkitkan?
• Data harus dibangkitkan sebanyak mungkin sampai nilai rata-
ratanya mencapai titik konvergen.
16

14

12
R a ta -ra ta

10

0
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99
Ite rasi

Burn-in
Pengujian Kesesuaian Distribusi Data
(Goodness-of-fit Test)

48
Normalitas Data

Kenormalan dan Penormalan Data

49
Kenormalan Data
• Symmetric (mean=median=mode)
• Plot deskriptif data
– Plot pada kertas Normal membentuk diagonal
– Histogram cenderung simetri
– Bersifat mesokurtic
– Kurtosis mendekati nilai 0.
• Uji kenormalan data (Kolmogorov-Smirnov)
– H0 adalah “Data berdistribusi Normal”.
– H0 tidak ditolak atau P_value > α
Demo MINITAB

Generate data normal dan uji


kenormalan data

51
Menormalkan data
• Transformasi Box-Cox  normal
– Contoh: Exponential normal
Uniform  normal?
• Grouping / sub-grouping
– Homogen di setiap sub-group
– gunakan mean sub-group  normal
– Contoh: generate di MINITAB
Kolmogorov-Smirnov
Contoh

Penghitungan CDF Empiris dan


Plot Kesesuaian pola datanya

54
Implementasi Numerik
data frek. frek.kum.
1
data frek
kumulatif Relatif
1 1 2 2 2/11
2
2 2 4 4/11
2
3 3 3 7 7/11
3 4 2 9 9/11
3 5 1 10 10/11
4 9 1 11 1
4 jumlah 11
5
9
12
11
10
11
8
11
6 Series2
11
4
11
2
11
0
1 2 3 4 5 9
Demo MINITAB

Generate non-Normal data,


transformasi normalitas, dan
distribusi sampling

57

Anda mungkin juga menyukai