50
Avaliação de Desempenho de Sistemas Discretos Parte IV: Simulação Professor: Reinaldo Gomes [email protected] Sistemas Discretos

Avaliação de Desempenho de Sistemas Discretosreinaldo/adsd_files/SIMULACAO.pdf · tempo negativo) e assegurar ... Geradores lineares de congruência ... Métodos de Congruência

Embed Size (px)

Citation preview

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

Etapas básicas de uma simulação

� 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)

Método Transformada Inversa

r = r 0

Xo = F-1(r 0)

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

Simulação acionada por eventos

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”

Relógio Simulado

47

Prof. Reinaldo GomesParte I: Introduçã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?