Departamento de Informática Geração de Números Aleatórios e imulação Métodos Quantitativos LEI 26/27 usana Nascimento (snt@di.fct.unl.pt) Advertência Autores João Moura Pires (jmp@di.fct.unl.pt) usana Nascimento (snt@di.fct.unl.pt) Este material pode ser livremente usado para uso pessoal ou académico e sem qualquer autorização prévia do autor desde que acompanhado desta declaração do autor. Para uso comercial (por exemplo em cursos pagos) o uso deste material requer a expressa autorização do autor. 2
imulação Técnica de amostragem estatística controlada, para estimar o desempenho de sistemas estocásticos complexos quando os modelos analíticos são inadequados. Ummodelo de simulação descreve o funcionamento do sistema em termos de eventos individuais de componentes do sistema. Podemos observar o comportamento global do sistema simulado para diferentes configurações e escolher aquela que apresenta um melhor desempenho. imulações de eventos discretos 3 Preparar uma simulação. Definição de um estado de sistema Por exemplo o número de clientes na fila de espera 2. Identificar os possíveis estados que o sistema pode ter 3. Identificar os possíveis eventos que podem ocorrer Por exemplo chegadas de clientes, conclusão de serviços 4. Um relógio do simulador Para simular a passagem do tempo 5. Um ou vários geradores de eventos aleatórios 6. Uma fórmula/método para identificar as transições de estado geradas pelos vários tipos de eventos 4 2
Um exemplo muito simples Lançase repetidamente uma moeda ao ar até que a diferença entre o número vezes que saiu caras e o número de vezes que saiu coroa seja 3. Por cada vez que se atira a moeda é preciso pagar. De cada vez que o jogo pára recebemos 8. Não é possível desistir a meio do jogo Questão de fundo: Valerá a pena jogar? Ganharemos uma partida de cada vez que que ela parar ao fim de 7 lançamentos. Não ganharemos se parar ao fim de 8 lançamentos Perdemos se parar depois de 8 lançamentos. 5 Números aleatórios para simular o lançamento Gerar sequência de números aleatórios inteiros entre e 9 e o número for inferior a 5 saiu cara (c) e o número for superior ou igual a 5 saiu coroa () Exemplo de sequência de números Aleatórios 8 3 7 2 7 6 5 5 9 Faces c c c c Diferença 2 3 6 3
Repetir a experiência: simular Vale a pena Jogar? Jogo 2 3 4 5 6 7 8 9 2 3 4 Lançamentos 5 5 9 7 7 5 3 7 5 5 3 9 7 Número médio de lançamentos 8. 7. 7.5 7.4 7.3 7. 6.5 7.7 7.4 7.2 6.8 7. 7. 3 4 Estima a verdadeira média da distribuição de probabilidades Assim o lucro esperado é de 8 7 =! 7 Repetindo a experiência (5 ensaios) 8 7 6 5 4 3 2 9 8 7 6 5 Número médio de lançamentos 7.6 2 3 4 5 Jogo Assim o lucro esperado é de 8 7.6 =.4! 8 4
Repetindo a experiência (25 ensaios) Número médio de de lançamentos 8 7 6 5 4 3 2 9 8 7 6 5 8.4 5 5 2 25 Jogo Assim o lucro esperado é de 8 8.4 =.4! 9 Não fazer estimativas com base em pequenas amostras N = 4; E(Lanc) = 7 N = 5; E(Lanc) = 7.6 N = 25; E(Lanc) = 8.4 Valor real da média da distribuição (do nº de lançamentos por jogo) é 9! Determinar um intervalo de confiança da média amostral como estimadora da média da distribuição O desvio padrão estimado da média amostral é TDVA(X)/QRT(N) 5
Intervalo de confiança (95%) 2.8.6.4.2.8.6.4.2 5 5 2 25 68.3% 95.4% 25 observações aleatórias de acordo com a distribuição normal com média de e.96 o desvio padrão (σ). Dá o intervalo com 95% de confiança onde a média real da distribuição se encontra imulação: Geração de Números Aleatórios Um gerador de números aleatórios é um gerador que produz sequências de números de acordo com uma distribuição de probabilidadade dada, e que apresenta aleatoriedade. Número aleatório é uma observação aleatória de uma distribuição uniforme (i.e. todos os nºs são igualmente prováveis). Número inteiro aleatório é uma observação aleatória de uma distribuição uniforme discreta sobre um intervalo inteiro n, n +,..., N. As probabilidades para esta distribuição são: P(n) =... = P(N) = /(N n + ). Um caso particular é o intervalo inteiro de a N. 2 6
Geração de Números Aleatórios (cont) Número aleatório uniforme é uma observação aleatória de uma distribuição contínua uniforme sobre um intervalo real [a, b]. A função densidade de probabilidade é: f(x) = /(b a) se a x b e f(x) = para qualquer outro valor de x. Quando a e b não são especificados, assumese: a= e b= Observação aleatória quando for relativa a qualquer outra distribuição de probabilidades 3 Geração de Números Aleatórios (cont) Em geral, os geradores produzem sequências de números inteiros mas podem ser facilmente convertidos para números aleatórios uniformes. Exemplo para um número aleatório uniforme em [, ] Dado um número inteiro aleatório r {,, N}, dividindoo por N obtemos uma boa aproximação se N for grande x = (r + /2) / (N + ) Mínimo = /(2N + 2); Máximo = (N + /2) / (N + ) (r= ) (r= N) 4 7
Geração aleatória de números inteiros Existem vários tipos de geradores de números aleatórios: Método congruencial misto Método congruencial aditivo Método congruencial múltiplicativo. 5 Geração aleatória de números inteiros Método congruencial (misto) gera uma sequência de números inteiros (pseudo) aleatórios no intervalo a m, cada nº é calculado a partir do anterior: X n+ = (a X n + c) (modulo m) e X semente onde a, c e m são números inteiros (a < m, c < m), e em que m representa o nº de valores diferentes a gerar. 6 8
Exemplo de Método congruencial (misto) Por exemplo para a = 5, c = 7 e m = 8 e X = 4. X n+ = (a X n + c) (modulo m) X n X n+ (5X n +7)/8 X 3 (3 + 3/8) X 4 X 2 3 X 7 6 X 4 5 X 5 X 6 7 2 X 7 6 5 7 2 4 (2 + 6/8) (4 + 5/8) (4 + /8) ( + 7/8) (5 + 2/8) (2 + /8) ( + 4/8) X = 4 X 8 X 9 X X X 2 X 3 X 4 X 5 4 3 6 5 7 2 7 Método congruencial (misto) A quantidade de números consecutivos numa sequência antes de se voltar a repetir é designada por período da sequência. O período da sequência do exemplo é 8. Aliás o máximo valor do período é m. e b for o número de bits da representação de inteiros no computador então a escolha usual para m é 2 b. Para este valor de m existem valores de a e c para os quais se assegura que cada número inteiro irá ocorrer uma vez antes de qualquer outro se repetir. Valores de a:, 5, 9, 3,... Valores para c:, 3, 5, 7. 8 9
Método congruencial Multiplicativo e Aditivo Multiplicativo É um caso particular do método misto em que c = ou seja: X n+ = a X n (modulo m) e X semente Embora haja várias combinações de a e m aceitáveis, a combinação mais conhecida é devida a LearmouthLewis: X n+ = 75 X n (módulo 23 ) Aditivo É um caso particular do método misto em que a = e c é um dos números aleatórios que precedem X n na sequência. 9 Geração de observações aleatórias A partir de distribuições de probabilidade Métodos / distribuições Distribuições discretas (método trivial) Para a distribuição Erlang (gama) Distribuição Normal (soma de n uniformes) hiquadrado a partir da normal Método de aceitaçãorejeição 2
Distribuições discretas (método trivial) onsiste simplesmente em atribuir os possíveis valores de um número aleatório a vários números na distribuição de probabilidades na proporção directa das respectivas probabilidades desses números. Exemplo: X = {,, 2}; P(X) = {.25,.25,.5} eja r um número aleatório inteiro entre e 99. e r =,..., 24 > X = ; e r = 25,..., 49 > X = ; e r = 5,..., 99 > X =2 2 Método da transformação inversa É aplicável tanto ao caso das variáveis discretas como contínuas. ejax a variável aleatória e a sua função de distribuição acumulada F(X) = P{X x}. Gerar um número uniforme r no intervalo [, ] 2. Resolver a equação F(x) = r em ordem a x F (r) = x A solução desta equação é a observação aleatória que se pretende. A resolução da equação pode ser analítica, ou numérica. 22
Método da transformação inversa exemplo eja a distribuição exponencial f(x) = e αx A acumulada é F(x) = e αx (para x ) onde /α é a média da distribuição Resolvendo a equação F(x) = r temos x = ln ( r) / α. 23 Distribuição Erlang (gama) A distribuição Erlang com um parâmetro de forma k e média /α, é a soma de k variáveis independentes com distribuição exponencial, cada uma com média = /(kα). ejam r, r 2,..., r k k números aleatórios do intervalo [, ]. Uma observação aleatória da distribuição Erlang é obtida por: k x = ln ( r i ) kα 24 2
Distribuição Normal (soma de n uniformes) De acordo com o teorema do limite central a soma de n números uniformemente distribuidos no intervalo [, ] tem aproximadamente uma distribuição normal com média = n/2 e desvio padrão n. 2 ejam r, r 2,..., r n n números aleatórios do intervalo [, ] então σ n x = r i +µ n σ 2 n/2 n/2 é uma observação aleatória de uma distribuição aproximadamente normal com média µ e desvio padrão σ 25 Método de aceitaçãorejeição É muitas vezes usado para distribuições para as quais não é possível ou não é fácil o uso do método da transformação inversa (i.e. contínuas). O método de aceitaçãorejeição consiste em dois passos (possivelmente repetidos até aceitação). 26 3
Método de aceitaçãorejeição Exemplo f(x) = x se x ; f(x) = (x ) se x 2 f(x) = c.c.8.6.4.2 2 Aceita r 2 =.4.8.6.4.2 2 Rejeita 27 Método de aceitaçãorejeição Exemplo (cont.) O método de aceitaçãorejeição usa os 2 passos para gerar observação aleatória:. Gerar um número aleatório uniforme r no intervalo [, ]; calcular x= 2r (o intervalo de valores possíveis de x é de [, 2]. Aceitar x com probabilidade: p = x se x ; p = (x ) se x 2 em que p corresponde à observação aleatória desejada (já que esta probabilidade é igual a f(x)). aso contrário, rejeitar x e repetir os passos 2. Gerar um número aleatório uniforme r 2 no intervalo [, ]. Aceitar x se r 2 f(x); Rejeitar x se r 2 > f(x); (se x é rejeitado repetir os dois passos). 28 4
Método de aceitaçãorejeição O método de aceitaçãorejeição consiste em dois passos (possivelmente repetidos até aceitação):. Gerar um número aleatório uniforme r no intervalo [, ]. alcular x a partir de r tendo em consideração o domínio de r. 2. Gerar um número aleatório uniforme r 2 no intervalo [, ]. e necessário calcular y a partir de r 2 tendo em consideração o maior valor de f(x). (e o maior valor de f(x) fosse L, menor do que, então seria necessário considerar y = L. r 2. e y f(x) aceita x e a observação aleatória é r 2 ; e y > f(x) rejeita x e repete os dois passos. 29 imulação IO Técnica de amostragem estatística controlada, para estimar o desempenho de sistemas estocásticos complexos quando os modelos analíticos são inadequados. Ummodelo de simulação descreve o funcionamento do sistema em termos de eventos individuais de componentes do sistema. Podemos observar o comportamento global do sistema simulado para diferentes configurações e escolher aquela que apresenta um melhor desempenho. imulações de eventos discretos 3 5
imular o exemplo do Lançamento de moeda O sistema a ser simulado é o lançamento sucessivo de uma moeda. Relógio de simulação regista o número de lançamentos efectuados: t Estado de sistema N(t) = número de caras menos o número de coroas depois de t lançamentos Possíveis eventos que podem ocorrer: sair cara (c) ou sair coroa () Método de geração aleatória dos eventos a partir de um número aleatório uniforme no intervalo [, ]:, até.5 > cara;.5 até. > oroa 3 Formalizar este exemplo simples (cont) Transições de estado geradas pelos vários tipos de eventos: N(t) = N(t) + se o lançamento t foi cara (c); N(t) = N(t) se o lançamento t foi oroa (); Identificar os possíveis estados que o sistema pode ter: cara cara cara cara cara cara 3 2 O 2 3 coroa coroa coroa coroa coroa coroa O jogo pára quando N(t) = ± 3 (diferença entre nº de lançamentos c e é 3) O resultado de um jogo é sempre 8 t (8 é o que se ganha e t é o que se paga) 32 6
Um exemplo de filas de espera M/M/ com λ = 3 por hora; µ = 5 por hora omeçando em o relógio da simulação indica a quantidade de tempo (simulado) que já passou. Estado do sistema, N(t) é o número de clientes no sistema. Os eventos são: chegada de um cliente e a conclusão de um serviço a um cliente. Transição de estado em cada instante t: N(t) = N(t) + se ocorre a chegada de um cliente no instante t N(t) = N(t) se ocorre a saída de um cliente no instante t 33 Avançar o relógio da simulação Incrementos de tempo fixo Incrementar o valor de t de um valor fixo e pequeno Actualizar o sistema: determinar que eventos ocorreram nesse intervalo de tempo e consequentemente qual o estado do sistema. Por exemplo, os eventos que podem ocorrer podem ser uma ou mais chegadas de clientes, uma ou mais conclusão de serviços Incrementos de tempo até ao próximo evento Avançar o tempo (simulado) até ao próximo evento de qualquer tipo: chegada ou saída de cliente Actualizar o sistema: determinar o novo estado resultante do evento; gerar aleatoriamente o tempo até ao próximo evento de qualquer tipo (se não estiver já gerado), segundo a distribuição de probabilidade (i.e. exponencial) 34 7
Avançar o relógio por incrementos de tempo fixo Para um intervalo de tempo arbitrário podem ocorrer vários eventos: hegada de vários clientes onclusão de vários serviços Vamos escolher um intervalo de tempo pequeno para incremento fixo do relógio: eja t =. hora = 6 minutos Probabilidade de que para t =. hora, ocorra uma chegada: P[T t] = e λt = e 3/ =.259 Probabilidade de que para t =. hora, ocorra um serviço: P[T t] = e λt = e 5/ =.393 35 Escolha do incremento de tempo Um valor de t suficientemente pequeno permite tornar desprezível a probabilidade de ocorrência de chegdas múltiplas ou serviços múltiplos. Aproximar como um evento discreto: Distribuição de Poisson P[X(t) > ] = (P[X(t) = ] + P[X(t) = ]) P[X(t) = n] = (αt)n e αt para n =,,... n! P[X(t) > ] t =. (6 min) t =.5 (3 min) t =. (36 seg) λ = 3 3.69%.2%.4% µ = 5 9.2% 2.65%.2% 36 8
imular por incrementos fixos de tempo =.h hegadas de clientes. Gerar um número aleatório (método transformação inversa), r A entre [, ]: r A.259 ocorreu uma chegada r A >.259 não ocorreu uma chegada erviços concluídos, se existir algum cliente a ser servido pelo servidor. Gerar outro número aleatório, r D entre [, ]: r D.393 o serviço do cliente foi concluído r D >.393 o serviço do cliente não foi concluído Estamos a assumir que se não houver clientes no sistema no início do intervalo então nenhum cliente pode ver o seu serviço concluído, mesmo que chegue um cliente. 37 imular por incrementos fixos de tempo =.h t (min) N(t) r A hegada? r D Partida? r A.259 r D.393 6.96 sim 2.569.665 8.764.842 24.492.224 sim 3.95 36.6 42.45 sim 48.484.552 54.35.59 6.43.4 sim 38 9
Actualizar o estado do sistema Além de actualizar o estado do sistema é necessário guardar a informação necessária para os indicadores que se pretendam analisar Transição de estado é: N(t) = N(t) + se ocorre a chegada de um cliente N(t) = N(t) se ocorre a saída de um cliente Estimar o tempo médio de espera imulados apenas 2 clientes ada um deles esteve 3 períodos no sistema Est(W) = [(3+3)/2](.h) 39 Problemas da simulação por Tempo Fixo e o intervalo de tempo for grande pode introduzir erros e o intervalo de tempo for muito pequeno pode requerer grande número de iterações Iterações sem eventos Ao iniciar a simulação com n = o sistema não se inicia em regime estacionário 4 2
Incremento de tempo até ao Próximo Evento Avançar o relógio do simulador até ao instante do próximo evento (qualquer tipo de evento) Actualizar o estado sistema que resulta desse evento. Gerar aleatoriamente o tempo do próximo evento que pode ocorrer a partir deste estado t É necessário o sistema guardar o registo dos eventos futuros (lista de eventos futuros LEF) 4 Geração de números aleatórios com distribuição exponencial: método da transformação inversa É aplicável tanto ao caso das variáveis discretas como contínuas. eja X a variável aleatória e a sua função de distribuição acumulada F(X) = P{X x}. Gerar um número uniforme r no intervalo [, ] 2. Resolver a equação F(x) = r em ordem a x: F (r) = x A solução desta equação é a observação aleatória que se pretende. A resolução da equação pode ser analítica, ou numérica. 42 2
Método da transformação inversa exemplo eja a distribuição exponencial f(x) = e αx A acumulada é F(x) = e αx (para x ) onde /α é a média da distribuição Resolvendo a equação F(x) = r temse e αx = r x = ln ( r) / α. 43 Incremento de tempo até ao próximo evento t (min) N(t) r A.96 Próximo tempo entrechegadas 2.9 r D Próximo tempo de serviço Próxima chegada 2.9 Próxima saída Próximo evento upondo que em N(t = ) = x = ln ( r) / α. geração uniforme em [, ]: r A =.96 α=,5 corresponde ao tempo até à próxima chegada de: 2.9 próxima chegada deve ocorrer para t = + 2.9 = 2.9 44 22
Incremento de tempo até ao próximo evento t (min) 2.9 N(t) r A.96.569 Próximo tempo entrechegadas 2.9 6.833 r D.665 Próximo tempo de serviço 3.23 Próxima chegada 2.9 8.852 Próxima saída 5.42 Próximo evento t = 2.9 (chegada de um cliente) N(2.9) = N() + = ; Geração aleatória dos próximos eventos x = ln ( r) / α. α D =,8 Próx. chegada: r A =.569 t = 6.833 t A = 8.852 (6.833 + 2.9) Próx. saída: r D =.665 t = 3.23 t D = 5.42 (3.23 + 2.9) 45 Incremento de tempo até ao próximo evento t (min) 2.9 5.42 N(t) r A.96.569 Próximo tempo entrechegadas 2.9 6.833 t = 5.42 (saída de um cliente).665 N(5.42) = N(2.9) = ; r D Próximo tempo de serviço 3.23 Próxima chegada 2.9 8.852 8.852 Próxima saída 5.42 Próximo evento Geração aleatória dos próximos eventos não é necessária pois: não existe mais ninguém no sistema para ser servido e a chegada do próximo cliente já está fixada que irá ocorrer t A = 8.852 46 23
Incremento de tempo até ao próximo evento t (min) 2.9 5.42 8.852 N(t) r A.96.569.764 Próximo tempo entrechegadas 2.9 6.833 28.878 r D.665.842 Próximo tempo de serviço 3.23 22.42 Próxima chegada 2.9 8.852 8.852 47.73 Próxima saída 5.42 4.994 Próximo evento t = 8.852 (chegada de um cliente) N(8.852) = N(5.42) + = ; Geração aleatória dos próximos eventos: (próxima chegada e tempo de serviço deste) Próx. chegada: r A =.764 t = 28.878 t A = 47.73 (28.878 + 8.852) Próx.saída:r D =.842 t = 22.42 t D = 4.994 (22.42 + 8.852) 47 Incremento de tempo até ao próximo evento t (min) 2.9 5.42 8.852 4.994 N(t) r A.96.569 47.73 t = 4. 994 (saída de um cliente) N(4. 994) = N(8.852) = ;.764 Próximo tempo entrechegadas 2.9 6.833 28.878 r D.665.842 Próximo tempo de serviço 3.23 22.42 Próxima chegada 2.9 8.852 8.852 47.73 47.73 Próxima saída 5.42 4.994 Geração aleatória dos próximos eventos não é necessária pois não existe mais ninguém no sistema para ser servido e a chegada do próximo cliente já está fixada que irá ocorrer t A = 47.73 Próximo evento 48 24
Um exemplo para simular () Pretendese abrir uma agência bancária com duas caixas. Estudos de mercado indicam que o ritmo de entrada de clientes no banco é de por minuto, ou seja o tempo médio entre clientes consecutivos é de minuto. Devido a problemas de estacionamento na zona o banco coloca uma zona de estacionamento reservada aos seus clientes. Um guarda verifica se de facto são clientes do banco, demorando esta operação.5 minutos. Assim o tempo mínimo entre clientes consecutivos é de.5 minutos. O tempo médio para atendimento dos clientes é.5 minutos 49 Um exemplo para simular (2) Distribuição de probabilidades dos tempos entre chegadas Mínimo de.5 minutos Médio de minuto O tempo que excede os.5 minutos é uma exponencial com média de.5 minutos Distribuição dos tempos de serviço é uma Erlang com média de.5 minutos e parâmetro de forma, k = 4 tdev(t ) = k µ =.5 =.75 minutos 4 5 25
Um exemplo para simular (3) Vamos iniciar a simulação supondo que acabou de chegar um cliente (A) no instante t =. Geração aleatória de um tempo entre chegadas (c):.92653 Geração aleatória de um tempo de serviço (s):.76284 5 Um exemplo para simular (4) Antes de avançar para o instante do próximo evento (T=.92653), vamos registar para este cliente: Tempo de espera excluíndo serviço: Tempo de espera incluíndo o serviço:.76284 52 26
Um exemplo para simular (5) :.9265 Uma nova chegada. O cliente é imediatamente atendido (s= 2): Geração aleatória de um tempo entre chegadas:.2654 Geração aleatória de um tempo de serviço: 3.625 Tempos Próxima chegada (c2) =.92653 +.2654 = 2.887 Próximo serviço concluído (s2) =.92653 + 3.625 = 4.4278 Registos deste cliente: Tempo de espera excluíndo serviço: Tempo de espera incluíndo o serviço: 3.625 53 Um exemplo para simular (6) :.763 O próximo evento é uma conclusão de um serviço. omo não existem clientes à espera não é necessário gerar quer a chegada de novo cliente quer o novo tempo de serviço. Não é necessário registar mais informação dos clientes. A única coisa que se altera é o número de clientes no sistema que passa a. 54 27
Um exemplo para simular (7) 2: 2.88 Uma nova chegada (c2). O cliente é imediatamente atendido: Geração aleatória de um tempo entre chegadas:.7252 Geração aleatória de um tempo de serviço: 2.6244 Tempos Próxima chegada (c3) = 2.887 +.7252 = 2.9327 Próximo serviço concluído (s3) = 2.887 + 2.6244 = 4.8247 Registos deste cliente: Tempo de espera excluíndo serviço: Tempo de espera incluíndo o serviço: 2.6244 55 Um exemplo para simular (8) 3: 2.93 Uma nova chegada (c3). O cliente fica em fila de espera: Geração aleatória de um tempo entre chegadas:.9956 Tempos Próxima chegada (c4) = 2.9327 +.9956 = 4.283 Registos deste cliente: 56 28
Um exemplo para simular (9) 4: 4.3 Uma nova chegada (c4). O cliente fica em fila de espera: Geração aleatória de um tempo entre chegadas:.35445 Tempos Próxima chegada (c5) = 4.283 +.35445 = 5.36728 Registos deste cliente: 57 Um exemplo para simular () 2: 4.43 Um serviço concluído (2). O primeiro cliente da fila começa a ser servido: Geração aleatória de um tempo de serviço:.86829 Tempos Próxima conlusão de serviço = 4.4278 +.86829 = 5.97 Registos deste cliente: Tempo de espera excluíndo serviço: 4.4278 2.9327 =.295 Tempo de espera incluíndo o serviço:.295 +.86829 = 2.9978 58 29
Um exemplo para simular () 59 Um exemplo para simular (2) 6 3
Um exemplo para simular (3) 6 Um exemplo para simular (4) 62 3
Aplicações típicas da simulação oncepção e operação de sistemas de fila de espera Gestão de inventário Estimar a probabilidade de não atraso num projecto oncepção e operação de sistemas de produção oncepção e operação de sistemas distribuidos Análise de risco financeiro istema de saúde 63 32