Prof. Natalia Castro Fernandes
Mestrado em Telecomunicações – UFF
2º semestre/2012
Introdução
 Análise de um problema
 Resolução analítica

Equações e modelos
 Simulação

Modelo simplificado
•Dificuldade de resolução de grande escala
•Simplificações podem distorcer o resultado,
mas sem usar as simplificações o modelo
pode ficar muito complexo
•Quais partes do modelo podemos abstrair?
Qual a distância entre a realidade e o
resultado da simulação?
 Teste

Implementação real
•Implementar pode ser muito complexo
•Como fazer testes em escala?
A melhor análise tem os três tipos: resolução analítica, simulação e teste
Em geral, basta fazer duas análises, desde que uma valide a outra.
Simulação
 Vantagens
 Pode lidar com modelos mais complexos do que a análise
matemática
 Melhor representação do sistema real que a análise matemática
 Mais simples de implementar do que a solução completa

Abstração de detalhes
 Pode analisar cenários com grande escala, o que pode ser proibitivo
em implementações reais
 Desvantagens
 Dificuldade de interpretar os resultados


O que eu fiz está certo???
O que representa o resultado obtido???
 Longo tempo de execução
Caracterização de um simulador
 Determinístico ou estocástico
 Modelo contém eventos aleatórios?
 Estático ou dinâmico
 Evolução do tempo influi no sistema?
 Contínuo ou discreto
 Estado do sistema evolui continuamente ou em pontos
discretos no tempo?
Simulação discreta de eventos
--Estocástica, dinâmica e discreta --
Simulador estocástico
 Modelo contém eventos aleatórios
 Depende de gerador de números aleatórios
Mas como podemos gerar números aleatórios???
 Gerar números pseudo-aleatórios
 Parecem aleatórios, mas são essencialmente
determinísticos

Uso de função pseudo-aleatória
Gerador de números aleatórios
 Deve gerar números que pareçam uma variável
aleatória uniforme
 Uniformemente distribuídos entre 0 e N-1, onde N é um
número qualquer
 Estatisticamente independentes um do outro
Já vimos que a função random() do módulo
random faz exatamente isso.
E se eu quisesse criar o my_random(), que tivesse
as mesmas características de v.a. uniforme?
Método Congruente
 Método para gerar v.a. uniformes
 Utiliza três parâmetros inteiros
 a e M = parâmetros internos do algoritmo

M determina quantos números poderão ser gerados
 x(0) = 1º valor da sequência pseudo-aleatória, também
chamado de semente
x(i+1) = a*x(i) % M
U(i+1) = x(i+1)/M
V.a. uniforme gerada
Método Congruente
 Exemplos
 a=3, M=11, x(0)=4


x(i+1) = 3*x(i) % 11
Sequência = 4, 1,3,9,5, 4, 1,3,9,5,4,...
Má escolha de parâmetros pode gerar uma baixa
variabilidade de valores e repetição da sequência com
poucos sorteios.
Propriedade de um gerador
pseudo-aleatório
 Todos os números da sequência são gerados?
 Qual o tamanho da sequência?
 Sugestão de valores para método congruente:
 M=(2^31) -1
 A=7^5
Método Congruente Linear
 Mai s usado, pois costuma garantir maior variabilidade
nos valores
 Um parâmetro a mais que o método congruente: c
x(i+1) = (a*x(i)+c) % M
U(i+1) = x(i+1)/M
Exercício
 Gere mil números aleatórios entre 0 e 1 com o método
congruente e faça um histograma com intervalos de 0.1
de largura
 Repita utilizando o método congruente linear
 Repita utilizando a função random()
 Compare os resultados
 O gráfico pode ser feito com qualquer ferramenta
Lei dos Grandes Números
 Frequência relativa do resultado de um experimento
aleatório converge para sua probabilidade
 Resultado fundamental em probabilidade e estatística
Prova de que a probabilidade existe!!!!
Números, quando em grande quantidade, convergem!!!
 Portanto, um bom gerador deveria apresentar uma
frequência de ocorrências para todos os valores do
histograma, no exercício anterior, igual a 1/10
 Outro exemplo é o dado não viciado
 Se jogado muitas vezes, a frequência de cada face vale 1/6
Lei dos Grandes Números
 Uma grande quantidade de medidas leva a média real
do experimento
 Ex: gere um número entre 0 e 1 com o random() várias
vezes
Lei dos Grandes Números
Resposta = [0.8490961500569881, 0.6456630621108963, 0.7011384939674841,
0.7093239739503144, 0.008255047174339558, 0.5118803420415918,
0.9067574331321653, 0.04266981994782948, 0.19040859063960625,
0.30762765616240917, 0.2759092882464159, 0.03340334367397668]
 Média com 1 medida: 0.849096150056988
 Média com 2 medidas: 0.7473796060839422
 Média com 3 medidas: 0.7319659020451228
 Média com 12 medidas: 0.3727341022628085
 Média com 100 medidas: 0.48730569712969135
 Média com 1000 medidas: 0.5049299613079365
 Média com 10000 medidas: 0.49950420528919764
Simulação
 Evolução de um sistema estocástico no tempo
 Evolução do estado do sistema
 Estado depende das medidas de interesse
 Medidas de interesse = dados que você deseja medir com
a sua simulação
Variáveis da simulação
 Tempo
 representa o instante de tempo que o simulador se
encontra
 Variáveis de estado
 Representam o estado do sistema no tempo t
 Variáveis de interesse
 Representam valores que permitem o cálculo de
medidas de interesse
Eventos
 São ações que modificam o estado do sistema
 Quando um evento ocorre, as variáveis são atualizadas

Tempo, estado do sistema e medidas de interesse
 Permitem seguir o modelo no tempo
 Utilização de lista de eventos
Lista de eventos
 Lista contendo todos os eventos que irão ocorrer no
futuro
 Cada evento é identificado por tipo e instante que
deverão acontecer
 A lista deve estar ordenada pelos instantes de ocorrência
dos eventos
 Exemplo
Evento 1
T=1
Evento 2
T=7
Evento 3
T=10
Lista de eventos
 Após executar o evento atual, o simulador consulta a
lista
 Simulador processa próximo evento e o remove da lista
 Quando novos eventos serão adicionados à lista?
 Ao processar um evento!
Exemplo
 Simulador processa Evento 1
 Evento 1 gera 2 novos eventos
 Simulador reordena a lista
 Simulador descarta evento 1
 Simulador processa próximo
Simulador
evento
Evento x
T=12
Evento y
T=8
Evento 1
T=1
Evento 2
T=7
Evento 3
T=10
Simulador genérico
 Inicializar variáveis
 Inserir um ou mais eventos na lista de eventos
 Enquanto não chegar ao fim da simulação
 Remover próximo evento da lista de eventos
 Processar evento
Estimando medidas de interesse
 Exemplo de medida de interesse:
 Tempo até que o sistema falhe

Suponha que essa v.a. tenha distribuição desconhecida
 Como estimar algo sobre essa medida de interesse?
 Tirar média amostral

Simular vários valores de X e tirar a média
Intervalo de Confiança
 Média amostral não é igual ao valor esperado
 Média amostral tende ao valor esperado
 Exemplo:

Média amostral da random() é quase 0.5, mas não é
exatamente o valor esperado 0.5
 Ideia
 Utilizar a média para calcular um intervalo onde o valor
esperado pode estar
Teorema do Limite Central
 Seja uma sequência de variáveis aleatórias
identicamente independentes com valor esperado e
variância (σ2) menores que ∞
 A distribuição dessa sequência de variáveis converge
para distribuição Normal se o tamanho da sequência (n)
tende ao infinito (ou seja, se tivermos infinitas amostras,
n-> ∞)
 É possível fazer essa aproximação para a normal, se
usarmos um n suficientemente grande (ou seja, se
tivermos muitas amostras)
Intervalo de confiança
 Definição
 Com probabilidade
o intervalo gerado contém o valor
esperado μ
 Calcula uma barra de erro que, com
=95% de
chance, contém o valor correto da medida
 Boa chance do intervalo gerado conter o valor esperado,
mas não é garantido!
Intervalo de confiança
 Aproximação pela normal
 A confiança do intervalo
Entendendo a conta
 A confiança do intervalo

é a média amostral, ou seja, a média das suas
medidas

é o desvio padrão amostral, ou seja, o desvio padrão
das suas medidas

é o valor do eixo x em uma normal com média 0, de
tal forma que, se considerarmos o intervalo entre +
e, teremos marcado da área da Normal
 n é o seu número de amostras
Z0.9=1.65 e Z0.95=1.96
Entendo a conta
 Lembrando que o desvio padrão amostral
é calculado
como:
Média amostral
 Onde:
Intervalo de confiança
 Como apresentar seus gráficos?
 SEMPRE coloque a média amostral e o intervalo de
confiança de cada um de seus pontos no gráfico
Resultado da simulação
 Estado estacionário x estado transiente
 Existe um tempo, chamado de transiente, no qual o
resultado da simulação ainda não convergiu

Efeito do estado inicial
 Na maioria das simulações, deseja-se conhecer o estado
estacionário e não o estado transiente


Considerar medidas a partir da estabilização do sistema
Outra possibilidade é partir de um estado inicial mais próximo
do estado estacionário
Número de rodadas
 É preciso realizar uma simulação diversas vezes para
obter diversas medidas e tirar a média e o desvio
padrão amostral
 Como saber qual é um bom número de rodadas?
 Lembrando que o ideal seriam infinitas rodadas
Número de rodadas
 Escolher um valor para a confiança do intervalo a ser
gerado, ou seja,
 Escolher um valor máximo para o tamanho do intervalo,
que chamaremos de L
 O valor de L deve ser escolhido de acordo com o seu intervalo
de medidas, de tal forma que a barra de erros não fique
grande demais
 Escolher um número de amostras mínimo, nmin
 O desvio padrão amostral, S, depende de n

Por isso, existe um valor mínimo para n
 nmin=20 é um bom valor mínimo
 Gerar amostras até que intervalo gerado seja menor do que
L
Algoritmo
 Escolha
e L
 Gerar pelo menos nmin amostras
 Gerar mais amostras,
para cada um dos seus
pontos, até que:
2
<L
 Calcular média amostral
 Montar o gráfico
Exercícios
 Faça um script que calcule a média amostral de um conjunto de
medidas. As medidas devem estar em um arquivo, sendo colocada uma
medida por linha com a seguinte configuração:
Valor_eixo_x Medida
O script deve escrever em um arquivo de saída a média amostral para
cada um dos valores de x com o seguinte formato:
Valor_eixo_x Média
Exemplo:
Arquivo de entrada
1
1
1
2
2
2
10
9
8
3
6
9
Arquivo de saída
1 9
2 6
Exercícios
 Faça um script que calcule o desvio padrão amostral,
supondo que as medidas estão dispostas como
explicado no exercício anterior. O script deve retornar
o desvio padrão amostral de cada ponto da mesma
forma que foi feito no exercício anterior.
 Faça um script que mescle os dois exercícios
anteriores, criando um arquivo de saída do tipo:
eixo_x média desvio
Exercícios
 Crie um script que leia a saída do exercício anterior e
calcule o intervalo de confiança de 95% (Sua saída
deve ser referente a
. ). O arquivo de saída
deve ser do tipo:
eixo_x média intervalo
Referências
 Aulas do Prof. Daniel Figueiredo
 http://www.land.ufrj.br/~classes/model-analise2009/slides/aula_simul_1.pdf
 http://www.land.ufrj.br/~classes/model-analise2009/slides/aula_simul_2.pdf
 http://www.land.ufrj.br/~classes/model-analise2009/slides/aula_simul_3.pdf
 http://www.land.ufrj.br/~classes/model-analise2009/slides/aula_simul_4.pdf
Download

Programação Avançada Simulação – Conceitos básicos