simulação_notas de aula
TRANSCRIPT
-
7/25/2019 Simulao_Notas de Aula
1/8
DET 362 PESQUISA OPERACIONALProf. Heleno do Nascimento SantosSimulao de Monte CarloNOTAS DE AULA.
Simulao de Monte Carlo
Trata-se de uma tcnica usada na simulao de valores para uma varivel aleatria,
conhecida a sua fdp, ou seja, a sua funo de distribuio de probabilidade ( )f x . A idia
bsica usar a integral da fdp, ( )F x , conhecida como funo de distribuio acumulativa,
e sua inversa 1( )F x , para gerar um valor para a varivel aleatria por meio de um mtodo
conhecido como Transformao Inversa, com o uso de um nmero gerado aleatoriamente.Repete-se o procedimento n vezes, a fim de gerar n valores para a varivel aleatria.
O algoritmo bsico consta de dois passos:
P1) Gere um NAU(0, 1);
P2) Retorne1( )x F NA=
Observe que o Passo 1 pede a gerao de um Nmero Aleatrio entre 0 e 1. Em
seguida, aborda-se o conceito de Nmero Aleatrio e sua gerao. As linguagens de
programao e as planilhas eletrnicas dispem de funcionalidades que permitem a
execuo do Passo 1.
1)Nmeros Aleatrios
Um Nmero Aleatrio uma varivel aleatria uniformemente distribuda entre 0 e
1, significando que qualquer valor entre 0 e 1 tem a mesma probabilidade de ocorrer.Dentre os mtodos usados na gerao nmeros aleatrios, existe o Gerador
Congruencial Linear (GCL), definido por
-
7/25/2019 Simulao_Notas de Aula
2/8
1
0
( )(mod )
onde
mod
k kNA aNA c m
NA semente
a multiplicador
c incremento
m ulo
+ = +
=
=
=
=
Como o a expresso geradora define o nmero aleatrio 1kNA + como sendo o resto
da diviso de kaNA c+ por m , segue que o nmero mximo de nmeros aleatrios
gerados, sem repetio, dado por m-1. Para serem gerados exatamente 1m nmeros
aleatrios, sem repetio, a escolha dos parmetros , ea c m deve atender as seguintes
condies:
i) o nico inteiro positivo que divide exatamente em c 1;ii) se q um nmero primo que divide m , ento q divide 1a ;
iii) se 4 divide m , ento 4 divide 1a .
Ex: Considere a escolha: 13, 5 e 32a c m= = = . Observe que as 3 condies so atendidas.A Tabela 1 mostra a sequncia de nmeros aleatrios associada a esta escolha.
Tabela 1: Gerao de uma sequncia de nmeros aleatrios pelo GCL.
K a c m Nak (a*NA(k)+c) Nak+1 NA
0 13 5 32 46 603 27 0,84375
1 27 356 4 0,125
2 4 57 25 0,78125
3 25 330 10 0,3125
4 10 135 7 0,21875
5 7 96 0 0
6 0 5 5 0,15625
7 5 70 6 0,1875
8 6 83 19 0,593759 19 252 28 0,875
10 28 369 17 0,53125
11 17 226 2 0,0625
12 2 31 31 0,96875
13 31 408 24 0,75
14 24 317 29 0,90625
-
7/25/2019 Simulao_Notas de Aula
3/8
15 29 382 30 0,9375
16 30 395 11 0,34375
17 11 148 20 0,625
18 20 265 9 0,28125
19 9 122 26 0,8125
20 26 343 23 0,71875
21 23 304 16 0,5
22 16 213 21 0,65625
23 21 278 22 0,6875
24 22 291 3 0,09375
25 3 44 12 0,375
26 12 161 1 0,03125
27 1 18 18 0,5625
28 18 239 15 0,46875
29 15 200 8 0,25
30 8 109 13 0,40625
31 13 174 14 0,4375
32 14 187 27 0,84375
33 27 356 4 0,125
34 4 57 25 0,78125
2)
Gerao de Valores para Variveis Aleatrias
Como foi dito, usa-se o Mtodo da Transformao Inversa para gerar valores para
uma varivel aleatria, conhecida a sua fdp. Se esta funo for integrvel, utiliza-se a suaintegral como parte do algoritmo; caso contrrio, lana-se mo de mtodos numricos de
integrao ou de mtodos disponveis na literatura, como o caso da gerao de valores
para variveis aleatrias que seguem a Distribuio Normal, exposta no item 5.
Por definio, a Funo Acumulativa de Probabilidade quando a fdp integrvel
dada por
( ) ( )x
F x f x dx
=
Seja NA um nmero aleatrio uniformemente distribudo entre 0 e 1. Fazendo
( )F x NA= na equao acima e resolvendo-a para x tem-se:
-
7/25/2019 Simulao_Notas de Aula
4/8
1( )x F NA=
3) Aplicaes
2.1) GERAO DE VALOR PARA XEXP() Distribuio Exponencial.
a) fdp
( )1 se 0( )
0 caso contrario.
xe x
f x
=
b) Funo Acumulativa de Probabilidade ( )F x
Por definio: ( ) ( )x
F x f x dx
= , o que leva a
( )1 se 0( )
0 caso contrario.
xe x
F x
=
Fazendo ( )F x NA= na equao acima e resolvendo para x, tem-se ln(1 )x NA= .
c) Algoritmo
Considerando que (1-NA) e NA so nmeros igualmente aleatrios, tem-se:
P1) Gere um NAU(0, 1);
P2) Retorne X = - *ln (NA).
d) Exemplos: em aula.
2.2) GERAO DE VALORES PARA XU(A, B) Distribuio Uniforme.
a) Funo de Distribuio de Probabilidades (fdp) ( )f x
1 se( )
0 caso contrario.
a x bf x b a
=
b) Funo Acumulativa de Probabilidade ( )F x
Por definio: ( ) ( )x
F x f x dx
= , o que leva a
-
7/25/2019 Simulao_Notas de Aula
5/8
0 se
( ) se
1 se .
x a
x aF x a x b
b a
x b
Fazendo ( )F x NA= na equao acima e resolvendo para x, tem-se ( )x a b a NA= + .
c) Algoritmo
P1) Gere um NAU(0, 1);
P2) Retorne ( )x a b a NA= + .
d) Exemplos: em aula.
2.3) GERAO DE VALORES PARA XDU(A, B) - Distribuio Discreta Uniforme.a) Funo de Distribuio de Probabilidades (fdp) ( )p x
1 se { , 1,..., }
( ) 1
0 caso contrario.
x a a bp x b a
+
= +
b) Funo Acumulativa de Probabilidade ( )F x
Por definio: ( ) ( )
x
F x P x
= , o que leva a
1 se
( ) 11 se .
x aa x b
F x b a
x b
+ = +
>
Fazendo ( )F x NA= na equao acima e resolvendo para x, tem-se o passo P2 do algoritmoabaixo.
c) Algoritmo
P1) Gere um NAU(0, 1);
P2) Retorne ( 1)x a b a NA= + + .
d) Exemplos: em aula.
-
7/25/2019 Simulao_Notas de Aula
6/8
2.4) GERAO DE VALORES PARA XTRIANG(A, B, C)
a) Funo de Distribuio de Probabilidades (fdp) ( )f x
( )2 se
( )( )2( )
se( )( )( )
0 caso contrario.
x aa x c
b a c ab x
c x bf xb a b c
< =
b) Funo Acumulativa de Probabilidade ( )F x
Por definio: ( ) ( )x
F x f x dx
= , o que leva a
2
2
0 se
( ) se a
( )( )( )
( )1 se
( )( )
1 se .
x a
x ax c
b a c aF x
b xc x b
b a b c
x b
Fazendo ( )F x NA= na equao acima e resolvendo para x, tem-se ( )x a b a NA= + .
c)
Algoritmo
P1) Gere NA~U(0, 1);
P2) Calcule k = (c-a)/(b-a);
P3) Se NA < k, retorne
;**)( NAkabaX +=
Seno, retorne
))1)(1(1(*)( NAkabaX +=
d) Exemplos: em aula.
2.5) GERAO DE VALORES PARA XN( ( , ) , a partir de Y N(0, 1).
2.5.1) Mtodo de Box e Miller (1958)
-
7/25/2019 Simulao_Notas de Aula
7/8
Algoritmo:
P1) Gere NA1U(0, 1) e NA2U(0, 1);
P2) Obtenha
1 1 2
2 1 2
2ln( ) *cos(2 )
2ln( ) * (2 )
Y NA NA
Y NA sen NA
=
=
P3) Retorne
1 1
2 2
X Y
X Y
= +
= +
Exemplo: (a ser feito em aula)
a)
Gere 500 valores para a varivel aleatria RECEITAN(2000; 300).
b) Construa um histograma com os valores gerados.
2.5.2) Mtodo Polar - Marsaglia e Bray (1964)
Algoritmo:
P1) Gere NA1U(0, 1) e NA2U(0, 1);
P2) Obtenha2 2
1 2(2 1) (2 1) ;W NA NA= +
P3) Se W > 1, v para o passo 1; caso contrrio,Faa
1 1
2 2
( 2ln( ) /
* (2 1)
*(2 1)
Y W W
Y Y NA
Y Y NA
=
=
=
Obs: as variveis Y1e Y2assim geradas so N(0, 1).
P4) Retorne
1 1
2 2
X Y
X Y
= +
= +
Exemplo: (a ser feito em aula)
-
7/25/2019 Simulao_Notas de Aula
8/8
a) Gere 500 valores para a varivel aleatria RECEITAN(2000; 300);
b) Construa um histograma com os valores gerados.