avaliação de desempenho de sistemas discretosreinaldo/adsd_files/simulacao.pdf · tempo negativo)...
TRANSCRIPT
Avaliação de Desempenho de Sistemas Discretos
Parte IV: Simulação
Professor: Reinaldo [email protected]
Sistemas Discretos
PAR
� Etapas básicas em um estudo de simulação
� Geração de números e valores aleatórios
Parte 4 – Simulação
RTE
4
� Simulação acionada por eventos
� Análise de resultados
Desenvolvimento de um simulador
� Principais Questões� Quais são os principais erros que podem levar as
minhas simulações ao fracasso?
� Que tipos de simulação eu posso utilizar?
� Como os eventos no meu simulador devem ser escalonados?
� Como eu posso verificar e validar o modelo simulado?
� Quando posso parar as minhas simulações? Quantas rodadas são necessárias?
Desenvolvimento de um simulador
� Principais Questões� Preciso considerar o estado estacionário do meu
sistema?� Como devo fazer a geração de variáveis aleatórias?� Como verificar se a geração de variáveis aleatórias está � Como verificar se a geração de variáveis aleatórias está
correta?� Como selecionar as sementes dos experimentos?� Como gerar variáveis aleatórias seguindo uma
distribuição?� Que distribuições devem ser usadas e quando?
Desenvolvimento de um simulador
� Principais Questões � Como posso implementar meu simulador? Tenho que
começar tudo do zero??!!!!� Uso de linguagem de simulação
� GPSS, SIMSCRIPT, ARENA
� Uso de pacotes de sub-rotinas escritas em linguagens usuais� GASP (FORTRAN), SimJava
� Implementação desde o início na sua linguagem de programação preferida
� Excessivamente trabalhoso!
� Tempo necessário para a execução dos experimentos
� Examinar precisão dos resultados (uma vez que simulador manipula VAs)
� Modelo elaborado pode ser inútil se simulador for
Uso de simuladores - Cuidados
� Modelo elaborado pode ser inútil se simulador for muito extenso� Esforço com testes pode ser inviável
� Aleatoriedade dos eventos dificulta depuração
� Facilidade em “simular” pode levar a um modelo muito “realista” (complexo)
Uso de simuladores - Cuidados
� Nunca esquecer das simplificações feitas e evitar generalizações
� Tratar regimes transitórios inicial e final adequadamente (se regime permanente é de interesse, desprezar)interesse, desprezar)
� Possível auto-correlação de amostras (estudar efeitos)
� Custo de uso para otimização� Esconde relações de causas-efeitos
Erros comuns em Simulação
� Nível de detalhamento errado� Mais detalhes → mais tempo → mais bugs→ mais recursos → mais parâmetros: não necessariamente mais preciso
� Linguagem inapropriada� Falta de verificação do modelo� Falta de verificação do modelo� Modelos fantasiosos� Condições iniciais imprecisas� Simulações muito curtas� Gerador de números aleatórios não confiável� Seleção errada das sementes dos experimentos
� As etapas podem ser agrupadas em 4 fases:� Descoberta e definições
� Criação e refinamento do modelo
Etapas básicas de um estudo de simulação
� Execução do modelo
� Análise e documentação
� Descoberta e Definições� Etapa 1: Estudo do sistema e definição dos objetivos
� Formulação do problema� Projeto do modelo� Definição dos objetivos
Etapas básicas de um estudo de simulação
� Definição dos objetivos
� Idéia ainda vaga e confusa do sistema
� Refinamento e modificações do sistema já podem ser realizadas� Novas iterações podem acontecer de outras fases
� Criação e refinamento do modelo� Etapa 2: Modelo
� Criação do modelo que será usado pelo simulador� Coleta de dados de entrada do modelo (configurar)
� Etapa 3: Simulador
Etapas básicas de um estudo de simulação
� Etapa 3: Simulador� Tradução do modelo� Implementação do software responsável por representar o
funcionamento do modelo
� Etapa 4: Depuração e testes do simulador (verificação)� Testes / depuração para evitar situações “absurdas” (ex:
tempo negativo) e assegurar integração de módulos
� Criação e refinamento do modelo� Etapa 5: Refinamento do simulador
� Ajustes necessários para melhor representação do modelo� Correção de bugs da implementação
� Etapa 6: Validação do modeloVerificar consistência entre o simulador e o sistema real (naquilo
Etapas básicas de um estudo de simulação
� Verificar consistência entre o simulador e o sistema real (naquilo de interesse)
� Se o sistema real não estiver disponível/não existir, podemos considerar as aproximações definidas para o modelo
� Como pode ser feito? Que parâmetros de comparação?� Etapa 7: Refinamento do modelo
� A obtenção de todas as características de um sistema para a criação do seu modelo é extremamente difícil
� Validação e implementação de modelos muito complexos é extremamente complexa
� Execução do Modelo� Etapa 8: Estratégia de execução
� Definir o plano de experimentos a ser executado� Existem muitos experimentos possíveis (variações nos
parâmetros, entradas, características de projeto ou de
Etapas básicas de um estudo de simulação
parâmetros, entradas, características de projeto ou de configuração do sistema, etc.)
� Selecionar casos a serem estudados, número de rodadas
� Etapa 9: Execução� Execução dos experimentos planejados para obter medidas
do desempenho do modelo simulado
� Diversas execuções são necessárias para obtermos os resultados desejados (variabilidade das amostras)
� Análise e documentação� Etapa 10: Análise e interpretação dos resultados
� Uma vez terminados os experimentos os resultados devem ser estudados e apresentados adequadamente
Etapas básicas de um estudo de simulação
� Análise vai além de apenas descrever os resultados obtidos� Correlações, perspectivas de modificações, padrões de
funcionamento, avaliação de opções, ...
� Esse processo deve ser documentado para finalizar o estudo proposto
Geração de números e valores aleatórios
� Números Aleatórios (NAs) são elementos de Variáveis Aletórias (VAs), independentes com distribuição uniforme
� Variáveis Aleatórias são geradas através de outras � Variáveis Aleatórias são geradas através de outras distribuições
� Números Pseudo-aleatórios (NPAs) são números gerados a partir de uma regra pré-fixada de formação (números parecem aleatórios).� Porém, a formação de um número a partir do anterior
não pode ser pré-estabelecida (Cadeia de Markov)
Geração de números aleatórios
� Terminologia� Semente (Seed)
� Número Pseudo-aleatório: valores podem ser repetidos dependendo dos parâmetros (funções determinísticas)
� Totalmente aleatório: Não existe repetição de valores
� Cycle length, Tail, Period
Características de um Gerador de NPAs
� Distribuição Uniforme [0,1)
� Aleatoriedade
� Reprodutibilidade
� Não repetir a série no intervalo de interesse� Não repetir a série no intervalo de interesse� OBS: números são repetidos a partir de certo ponto
� Ciclo = total de pontos antes da repetição� Quanto maior o ciclo, melhor
� Velocidade de Geração
Tipos de geradores de NPAs
� Geradores lineares de congruência
� Geradores lineares de congruência combinados
� Sequênciasde números aleatórios� Sequênciasde números aleatórios
� Geradores de Tausworthe
� Geradores de Fibonacci estendido
� . . .
Métodos de Congruência
� Geralmente usados na geração de NPAs usando computadores digitais
� Características:� Determinístico
� “Aleatoriedade satisfatória”� Testes de freqüência e serial: análise do nível de confiança
entre a distribuição gerada e aquela teórica, equivalente
� Seqüência de NPAs uniformemente distribuída
Xn+1 = K * X n (mod m)
onde, Xn , K e m são inteiros não negativos
Métodos de Congruência
mod = móduloC(mod m) = resto da divisão C por mm = múltiplo de 2 (geralmente, # bits da palavra do computador)
X0 é a “semente” (escolha afeta qualidade do gerador (número primo)
Se X0 = 3, b=5 e m=8 temos a seqüência {3,7,3,7, ...}Se X0 = 3, b=5 e m=7 temos a seqüência {3,1,5,4,6,2,3,1, ... } ciclo é 3 vezes o anterior
AditivaXn+1 = (Xn + Xn-k ) (mod m), onde, k = 1, 2, 3,.....
Métodos de Congruência
MultiplicativaXn+1 = K Xn (mod m), onde, K, X e m são inteiros positivos
MistaXn+1 = K (Xn + Xn-k )+ C (mod m), onde, k = 1, 2, 3,.....
Métodos de Geração de Valores Aleatórios� Gerador de números aleatórios segue uma distribuição
uniforme
� Precisamos de outras distribuições para representar os eventos que desejamos� Transformada Inversa� Transformada Inversa� Rejeição/Aceitação� Composição� Convolução
� Esses métodos usam um gerador de NAs com distribuição uniforme para gerar valores aleatórios (“randomvariates”) com uma dada distribuição
Métodos de Geração de Valores Aleatórios
� Conhecida a FDP de uma VA x’ - f(x) -, pode-se obter valores aleatórios desta VA
� Necessita-se da FDP [F(x)] associada a esta VA:
F(x) = ∫ (-∞, x ) f(t) dt ∆ Prob [ x’ ≤ x]
� Como F(x) é definida em [0,1], pode-se gerar NAsuniformemente distribuídos e fazer
r = F(x), onde r é uma VA entre 0 e 1
Método Transformada Inversa
� Se F(x) é contínua e cresce monotonicamente, existe uma função inversa F-1(r) tal que se 0 ≤ r ≤1, então
r = F(x), => x = F-1(r) r = F(x), => x = F-1(r)
� Logo, para calcular amostras de x’ conhecendo F(x), usar:
x’= F-1 (r)
Exemplo - Exponencial
� Gerar VAs conforme a distribuição exponencial com valor médio E[x] = 1/λ
� λ: freqüência usada para denotar a taxa de chegada.
F(x) = 1 – e-λx = rF(x) = 1 – e-λx = r
1-r =e-λx
ln(1-r) = -λx ln(e)
x = -(1/λ) ln(1-r)
Geração de VAs exponenciais
� A distribuição exponencial é freqüentemente usada para gerar valores para o tempo de interchegada e tempo de atendimento de fregueses em modelos de Redes de Filas (i.e., computador, banco, supermercado, etc)
Algoritmo
1. Gerar um NA r
2. Usar a Transformação: x = -(1/λ) ln(1-r)
Paradigmas de Simulação
� Métodos de Monte Carlo
� Simulações Trace-Driven
� Simulação Contínua
� Simulação Discreta Orientada a Eventos
� Simulação Combinada
Paradigmas de Simulação
� Métodos de Monte Carlo� Tradicionalmente, usados para estimar probabilidades
dos estados de um modelo através de experimentações conduzidas por amostras� Estudos de fenômenos sociais e econômicos
� Simulação estática (não considera tempo)
� Modela fenômenos probabilísticos
� Usado para avaliar expressões não probabilísticas usando métodos probabilísticos
Paradigmas de Simulação
� Simulações Trace-Driven� Trace – Registro ordenado por tempo dos eventos de
um sistema
� Simulações trace-driven utilizam traces como entrada� Usado para avaliar condições já existente de um sistema
que desejamos estudar
Paradigmas de Simulação
� Simulações Trace-Driven� Vantagens
� Credibilidade – representação da carga de trabalho� Fácil validação� Maior precisão – Entrada real de dados pode reduzir a � Maior precisão – Entrada real de dados pode reduzir a
necessidade de repetições
� Desvantagens� Complexidade – mais detalhes podem ser passados� Representatividade pode ser limitada (horário, equipamento, etc.)� Restrição na quantidade de informação para estudo
� Tempo de dados armazenados e quantidade de traces
� Dificuldade de variar condições da avaliação
Paradigmas de Simulação
� Simulação Contínua� A troca de estados do modelo ocorre continuamente no
tempo - soluções, usualmente, usam equações diferenciais
� Simulação Discreta� Simulação Discreta� Permite trocas instantâneas nos estados do modelo que
ocorrem em pontos discretos do tempo.
� Simulação Discreta Orientada a Eventos� O processamento da simulação ocorre conforme a
ocorrência de eventos
Paradigmas de Simulação
� Simulação Combinada� Técnica que simula sistemas com características de
sistemas discretos e contínuos.
� Ex.: Sistema de uma Rodovia� Se variáveis são carros → Sistema Discreto
� Se variáveis são distâncias → Sistema Contínuo
Paradigmas de Simulação
� A Simulação Discreta caracteriza-se por: � Modelagem do sistema em uma rede de fluxo
� O sistema possuir componentes (recursos) e cada um executar funções bem definidas
� Os componentes apresentarem capacidade finita no processamento dos itens e, uma vez esgotadas, os itens esperam em fila pelo atendimento, e
� O início e o fim das operações realizadas pelos componentes são disparados por eventos
Paradigmas de Simulação
� Elementos necessários para Simulação Discreta� Clientes
� Servidores
� Filas� Filas
� Relógio
� Geradores de Variáveis Aleatórias
� Calendário de Eventos
� Acumuladores de Estatísticas
� Saída de resultados
Paradigmas de Simulação
� Componentes necessários para Simulação Discreta� Escalonador
� Controla a geração, execução e remoção dos eventos no simulador
� Relógio de simulação e mecanismo de avanço de tempo� Relógio de simulação e mecanismo de avanço de tempo� O tempo pode ser controlado continuamente ou baseado nos
eventos
� Variáveis de estado do sistema� Informações globais e locais do sistema� Podem ser usadas para armazenar informações durante e ao final
da simulação
� Rotinas de eventos
Paradigmas de Simulação
� Componentes necessários para Simulação Discreta� Rotinas de entrada
� Obtém parâmetros que devem ser passados para o modelo
� Rotinas de inicializaçãoRotinas de inicialização� Configura o estado inicial do modelo e a semente da
simulação
� Rotinas de armazenamento� Podem ser criadas para armazenar as informações a medida
que os eventos são gerados ou ao final da simulação
� Gerador de relatórios
Organização de um Simulador
� Módulo de Inicialização� Rotinas de Entrada� Rotinas de Inicialização (parâmetros de entrada)
� Módulos para manuseio de eventos� Escalonador� Rotinas de Eventos� Rotinas de armazenamento (opcional)
� Módulos para saída de resultados� Rotinas de armazenamento� Gerador de relatórios
Eventos e atividades
� Diversos módulos devem ser executados em resposta (direta ou indireta) a eventos
� Eventos representam ocorrências que modificam o estado do sistemaestado do sistema� Executados instantaneamente assim que gerados ou
que seu momento de execução chega
� Atividade é iniciada e terminada por eventos relacionados
Eventos e atividades da barbearia
� Exemplos de eventos� E1 – chegada de freguês� E2 – início do serviço pelo cabeleireiro� E3 – término do serviço (partida)
Exemplos de atividades� Exemplos de atividades� A1 - espera em fila (inicia c/E1 e termina c/E2)
� Se “servidor” desocupado, A1 inicia de imediato (E1 e E2 ocorrem simultaneamente)
� Se ocupado, E2 do próximo freguês ocorre com E3 do atual, em serviço
� A2 - recebe serviço do cabeleireiro
Eventos primários e secundários
� Simulador deve:� Identificar eventos que podem ocorrer no sistema� Avaliar os efeitos de cada evento no estado e
atividades do sistema� Permitir a ocorrência dos eventos e atualizar o estado e � Permitir a ocorrência dos eventos e atualizar o estado e
atividades do sistema à medida que eventos ocorram
� Evento primário é escalonado para ocorrer no simulador antes de sua ocorrência real
� Evento secundário ocorre em resposta a um primário
Escalonamento de Eventos
� Estado permanece inalterado entre eventos (ou durante atividades)� Adiantar relógio para o instante do próximo evento
(“iminente”)
� Atualizar estado (de acordo com evento)
� Escalonar próximo evento
Escalonamento de Eventos
Evento primário ConsequênciasChegada de freguês 1. Escalona próxima chegada
2. Testa estado do servidorLivre: Mude estado para ocupado
Escalone término de serviçoEscalone término de serviçoOcupado: Escalone evento “colocar
freguês na fila”
Término de serviço 1. Teste estado da fila de esperaVazia: Mude estado servidor para “livre”Não vazia: Remova freguês da fila
Escalone evento “Término deserviço”
Análise de resultados
� O que eu quero avaliar?� De nada adianta executar experimentos se eu não sei quais são
meus objetivos com eles
� Devemos identificar que informações são necessárias e como coletá-lascoletá-las� Dados coletados != métricas que serão avaliadas
� Obter o máximo possível de informações� Quase nunca temos uma visão inicial clara do que queremos avaliar
� Evita refazer todo o trabalho em muitas situações
� A avaliação dos resultados não é uma mera descrição de gráficos e resultados de tabelas� Devemos tentar identificar o que esta por traz dos números e linhas
� Entender ou algumas vezes até mesmo especular o que isso significa é o ponto chave da avaliação
Resumo
� Problemas que podem causar o fracasso das simulações� Tempo de simulação inadequado (regime transitório e ciclo
do gerador de NA)� Definição clara e precisa dos objetivos
� Objetivo pode ser alcançado?� Objetivo pode ser alcançado?
� Escolha de métricas adequadas� Falta de conhecimento necessário
� Modelagem (ferramentas, validação, etc.)� Programação (linguagem, framework de desenvolvimento, …)� Conhecimento do sistema
� Nível inadequado de detalhes no modelo/simulador� Mau planejamento dos experimentos� Resultados “misteriosos”
Resumo
� Cuidados com os experimentos� A duração da simulação é apropriada? Existe parada?� Os estados transientes do sistema foram removidos?� O modelo foi verificado para evitar inconsistências?� O simulador foi validado com os resultados teóricos do � O simulador foi validado com os resultados teóricos do
modelo?� Resultados surpreendentes foram analisados para verificar a
sua causa? Eles são possíveis ou ocorreram por problema na modelagem/implementação?
� Foram utilizadas sementes diferentes nos experimentos para avaliar a aleatoriedade dos eventos?