Simulação de Sistemas Parte 1 Introdução à Simulação Parte 2 INPUT/OUTPUT : Entrada e Saída de Simulação Material preparado por Miguel Antonio Bueno da Costa (Mian), para dar suporte à disciplina de graduação “Simulação Aplicada à Engenharia de Produção”, do Departamento de Engenharia de Produção, da Universidade Federal de São Carlos. São Carlos,início da primavera de 2002 Grupo SimuCAD ! www.simucad.dep.ufscar.br 1. Introdução à Simulação " Simulação [ETIM lat. Simulatio,onis] S.f. ação ou efeito de simular... 3 imitação do funcionamento de um processo por meio do funcionamento de outro 4 teste, experiência ou ensaio em que se empregam modelos para simular o ser humano, em especial em casos de grande perigo de vida... " s.analógica teste ou experiência em que os modelos empregados têm comportamento análogo ao da realidade " s. digital experiência ou ensaio constituído por uma série de cálculos numéricos e decisões de escolha limitada, executados de acordo com um conjunto de normas preestabelecidas e apropriadas à utilização de computadores ... [Dicionário HOUAISS da língua portuguesa, 1a. Edição, pág. 2575, Editora Objetiva, 2001] Simulação de Sistemas é uma técnica tradicional da Pesquisa Operacional. É uma das ferramentas mais importantes e úteis para analisar o projeto e a operação de sistemas complexos. Normalmente, a simulação de sistemas é utilizada quando não é possível fazer experimentações no sistema real (devido, por exemplo, ao longo tempo necessário para realizar o experimento, ou ao alto custo do experimento ou, ainda, à dificuldade de tratar fisicamente o experimento). A simulação é utilizada, também, quando não é possível desenvolver um modelo que solucione o problema através de técnicas da Pesquisa Operacional que otimizam a solução, como a Programação Linear e a Programação Dinâmica, dentre outras. Neste sentido existe uma forte afirmação de M.Fox [1990] que diz : "Se existe um algoritmo que otimiza a solução, utilize-o". Por outro lado, segundo G.Gordon [1978], a quantidade de problemas que podem ser resolvidos matematicamente é limitada. As técnicas matemáticas requerem que o problema possa ser expresso num modelo matemático, de formato particular. Ao se estudar um problema é essencial considerar os métodos analíticos primeiro, e verificar se o grau de abstração, necessário para obter uma solução analítica , não é muito severo. Quando não for possível gerar soluções para um sistema por meios analíticos, é necessário utilizar métodos de computação numérica, por exemplo a simulação. R.Shannon [1975] comenta que, ao contrário de muitas tecnologias que são classificadas de acordo com a disciplina na qual ela se origina (física ou química por exemplo), a simulação pode ser aplicada a todas as disciplinas. Incontáveis trabalhos, relatórios, teses de mestrado e doutorado, revistas e livros mostram vários campos de aplicação para a Simulação, como negócios, economia, marketing, educação, política, ciências sociais, ciência comportamental, relações internacionais, transportes, estudos urbanos, e muitos sistemas produtivos dos mais diferentes setores da economia. Segundo T.Naylor [1971] o uso moderno do verbo “simular” tem origem no trabalho de Von Newman & Ulam que, em 1940, associaram a expressão Análise de Monte Carlo a uma técnica matemática que foi utilizada para solucionar certos problemas de blindagem em reatores nucleares. O tratamento experimental desses problemas seria muito caro e uma abordagem analítica seria muito complicada. A análise ou método de Monte Carlo consiste na amostragem experimental com números randômicos. A simulação e o método de Monte Carlo se confundem. Ambos são técnicas de computação numérica. Porém, segundo G.Gordon [1978], a simulação é aplicada em modelos dinâmicos, enquanto a análise de Monte Carlo é aplicada a modelos estáticos. Em síntese, os modelos de simulação são valiosos e necessários, uma vez que fórmulas fechadas e equações analíticas raramente conseguem descrever, de forma adequada, sistemas reais complexos [Widman,1990]. Uma grande vantagem da Simulação é permitir estudos de sistemas reais sem modificá-los, com velocidade e baixo custo. Alternativas de mudanças para o sistema podem ser tentadas e estudadas de forma sistemática sem interferir no sistema real [Baker,1982]. A rápida evolução do software e do hardware nos últimos tempos tem facilitado muito o desenvolvimento de simuladores. Esses simuladores podem ser de grande valia quando decisões precisam ser tomadas num sistema que não é completamente conhecido devido às diversas interações existentes no mesmo. 1.1 Definições para Simulação de Sistemas Existe um grande número de definições para simulação. A seguir são apresentadas algumas delas, provenientes de livros clássicos sobre o assunto, e uma definição particular nossa. São feitas, também, algumas colocações relevantes na busca de elucidar o que vem a ser simulação de sistemas. R.Shannon : "Simulação é o processo de desenvolvimento de um modelo de um sistema real, e a condução de experimentos nesse modelo, com o propósito de entender o comportamento do sistema e/ou avaliar várias estratégias (com os limites impostos por um critério ou conjunto de critérios) para a operação do sistema". [Shannon,1975] T.Naylor : "Simulação é uma técnica numérica para realizar experiências em um computador digital, envolvendo certos tipos de modelos lógicos que descrevem o comportamento de um sistema econômico ou de negócios (ou um aspecto parcial de um deles) sobre extensos intervalos de tempo". [Naylor,1971] G.Gordon : "Simulação de sistemas é a técnica de solucionar problemas observando o desempenho no tempo de um modelo dinâmico do sistema". [Gordon,1978] A definição de T.Naylor especifica experimentações em computadores, enquanto que, tanto a definição dada por R.Shannon quanto a fornecida por G.Gordon são amplas o suficiente para englobarem os modelos físicos dinâmicos. Nesses modelos os resultados são derivados de medidas físicas, em vez de computações numéricas. Porém, segundo G.Gordon [1978], normalmente as pessoas referem-se à simulação em termos de modelos matemáticos e computações numéricas. Na nossa opinião simulação de sistemas "é o processo de construção de um modelo representativo de um sistema real, e a experimentação no mesmo. Os resultados das experimentações, após análises, apresentam uma visão futura do sistema. As informações geradas auxiliam nas tomadas de decisão, necessárias no momento presente, e contribuem para uma melhor compreensão do sistema estudado". Além de auxiliar na tomada de decisão, é importante enfatizar a contribuição da simulação para a compreensão do sistema estudado pois, como afirma D.Knuth [1969], "...freqüentemente nos enganamos, pensando saber mais do que realmente sabemos sobre uma coisa, até que tentamos simulá-la num computador". Através da simulação o usuário pode comparar seus resultados com os do sistema e validar seus próprios processos de raciocínio. A simulação de sistemas é, portanto, uma metodologia experimental que busca descrever o comportamento de um sistema. Esta metodologia constrói formas de quantificar o comportamento observado, prevendo o comportamento futuro. A proposta da simulação é produzir dados (e ela é uma grande geradora de números) que, quando analisados, identificarão importantes aspectos do sistema estudado, auxiliando na explicação, compreensão e melhoria do mesmo. Segundo G.Doukidis [1987] a função primária de um modelo de simulação é examinar como o sistema se comporta durante um período de tempo. Para atingir este objetivo, o modelo deve providenciar facilidades, para representar o estado atual do sistema, e várias pré-condições que, se satisfeitas, irão resultar num estado futuro. Outra colocação bastante construtiva para se compreender melhor o que é simulação de sistemas é dada por M.Shubik [1960] que diz : "Simulação de um sistema ou de um organismo é a operação de um modelo (ou simulador) que representa esse sistema ou organismo. O modelo é passível de manipulações que seriam difíceis de levar a cabo na entidade que ele representa, quer pelo custo, quer pela impossibilidade de fazê-las. As propriedades concernentes ao comportamento de um sistema podem ser inferidas estudando-se a operação do modelo". 1.2 O Processo de Simulação Entende-se por processo de simulação o desenvolvimento de um modelo de simulação, a experimentação do mesmo e a implementação dos resultados. R.Shannon [1975] coloca que o desenvolvimento de um processo de simulação é mais uma extensão das artes do que das ciências. Esta característica talvez explique a dificuldade de se apresentar um mecanismo sistemático para que um usuário interessado possa desenvolver simulações. Apesar das dificuldades, pode-se estabelecer os elementos que participam de um modelo de simulação e alguns passos que, se seguidos, podem ajudar um “modelista”, mesmo novato, a ter um bom desempenho no desenvolvimento de simulações. Todo modelo de Simulação possui, de forma combinada ou isolada, os seguintes elementos [Shannon,1975] : • Componentes : são as partes (ou subsistemas) integrantes do sistema. Entende-se por sistema, um conjunto de objetos, que interagem entre si, para atingir um objetivo comum. • Parâmetros e Variáveis : são elementos do sistema que recebem valores. Os parâmetros podem receber valores arbitrários, enquanto que as variáveis recebem valores associados à função a qual elas estão atreladas. Existem dois tipos de variáveis : Endógenas (Dependentes) e Exógenas (Independentes). Variáveis endógenas são aquelas produzidas dentro do sistema ou resultantes de causas internas. São também chamadas variáveis de estado (pois mostram o estado do sistema) ou variáveis de saída (pois são responsáveis por gerar e apresentar os resultados oriundos do sistema). Variáveis exógenas, também chamadas variáveis de entrada, são originárias de (ou produzidas por) causas externas. • Relações Funcionais : são normalmente apresentadas na forma de equações matemáticas , que relacionam as variáveis endógenas com as exógenas. Essas relações podem ser de ordem determinística (onde para uma dada entrada existe uma única saída) ou estocástica (onde para uma dada entrada existe(m) incerteza(s) associada(s) à saída). • Restrições : são limitações, impostas pelo “modelista” ou pela natureza do problema, que restringem os valores das variáveis. • Objetivos : é o estabelecimento das metas do sistema e como elas podem ser avaliadas. A manipulação do modelo é orientada de forma a satisfazer esses objetivos. 1.2.1 Terminologia da Simulação A terminologia utilizada na simulação não é única, mas há uma certa tendência geral em aceitar a que é apresentada a seguir. a) Modelo : é a representação de um sistema. Existem várias formas de se classificar modelos. M.A.B.Costa [2001] apresenta uma explanação sintética sobre modelos, reproduzida a seguir. Os modelos são tipificados como icônicos (representação fiel do sistema, geralmente em escala diferente da real), analógicos (as propriedades do sistema são representadas por outras equivalentes) e simbólicos (as propriedades do sistema são representadas por símbolos). Outro tipo de classificação separa os modelos em estáticos e dinâmicos. Os modelos estáticos não consideram explicitamente a variável tempo, possuem relações determinísticas e são, normalmente, tratados por técnicas analíticas. Os modelos dinâmicos tratam com interações variáveis no tempo (o estudo do sistema em um certo instante interfere no estado do sistema no instante seguinte). Também existe uma caracterização importante para os modelos, que diz respeito às situações discreta e contínua. Um modelo discreto sofre alterações repentinas no tempo. As mudanças no estado do sistema são expressas em termos do estado do sistema no início do período. As mudanças durante um intervalo de tempo são calculadas e é deduzido um novo estado do sistema para o final deste período e início do seguinte. Um modelo contínuo sofre constantes e suaves alterações no tempo. Uma situação bastante comum é tratar um sistema contínuo como sendo uma seqüência de pequenas alterações discretas no tempo. Por fim, também são diferenciados os modelos determinísticos dos estocásticos. Os modelos determinísticos não tratam variáveis randômicas e as características operacionais envolvem relações exatas. Quando pelo menos uma variável do sistema se comporta de forma probabilística, diz-se tratar de um modelo estocástico. b) Entidade : também chamada de transação, é um elemento essencial para o modelo. Cada tipo de entidade (pessoa ou objeto) possui um ciclo de vida, onde estados ativos e passivos se alternam. Uma entidade pode ser classificada como temporária ou permanente. As entidades temporárias entram no sistema, percorrem o seu ciclo de vida e abandonam o sistema. As entidades permanentes executam a sua função sem abandonar o sistema. A chegada de entidades ao sistema é gerada por um procedimento externo, ou de acordo com a necessidade imposta pelo estado do sistema. Na visão da simulação discreta convencional, as entidades temporárias são criadas primeiro. Elas engajam atividades e requisitam recursos. Uma vez terminada a atividade, a entidade é removida. Trata-se de uma transação passiva, onde nenhum mecanismo considerado “inteligente” é assumido ou modelado. c) Atributo : são as propriedades características de cada entidade. d) Atividade: é uma seqüência de procedimentos que causa mudança no sistema. A atividade corresponde a um estado ativo, comum a uma ou mais entidades (ou classe de entidades). A duração de uma atividade pode ser determinística ou estocástica. Assume-se que uma atividade é indivisível. Uma vez iniciada, ela não é mais interrompida. Segundo R.Reddy [1986] , as atividades podem ser físicas ou cognitivas. As atividades físicas são as formas convencionais de atividades, em torno das quais a simulação tem sido desenvolvida. As atividades cognitivas são formas de tomada de decisão racional e inteligente. Da mesma forma que as atividades físicas, as atividades cognitivas possuem tempo finito de duração, que pode ser randômico ou dependente das informações e/ou decisões do sistema. e) Evento : as atividades são iniciadas e terminadas por eventos. Eventos são instantes no tempo, enquanto atividades possuem durações no tempo. Evento é o ponto no tempo no qual acontece alguma mudança no sistema modelado. O processamento de um evento é realizado por uma rotina. Normalmente a ocorrência de um evento dispara a ocorrência de outro(s) evento(s). Da mesma forma que as atividades, os eventos podem ser físicos ou cognitivos. As rotinas associadas aos eventos físicos são análogas às rotinas dos eventos tradicionais da simulação discreta. Os eventos cognitivos envolvem processamento de conhecimento, análogo ao procedimento cognitivo desempenhado pelo tomador de decisão. Rotinas de eventos cognitivos irão conter conhecimentos, representados por regras de produção e heurísticas, que serão processados quando uma decisão precisar ser tomada [Reddy,1986]. f) Acumuladores: são variáveis que permitem medir o desempenho do sistema. Possuem esse nome porque vão acumulando valores no tempo, para depois receberem tratamento de análise e gerar as estatísticas da simulação. g) Relógio : variável que marca o tempo da Simulação. h) Lista de Eventos Futuros: estrutura de dados que armazena os eventos previstos para ocorrer no futuro. Esses eventos são armazenados por ordem cronológica de ocorrência. i) Cenário: uma experimentação estruturada, com um conjunto de configurações de dados e de entidades do sistema. Pode-se construir vários cenários para testar várias hipóteses (Torres, 2002). j) Replicação: é a execução do modelo no computador. k) Rodada: é o período compreendido entre o início e o fim da replicação. l) Variáveis de Estado: é o conjunto de variáveis que identificam o estado do sistema em um determinado instante de tempo. m) Recurso: é uma entidade estática do modelo que serve entidades dinâmicas. Esse atendimento pode ser feito simultaneamente a várias entidades. Uma entidade pode solicitar parte da capacidade ou a capacidade total do recurso (Torres, 2002). n) Filas: constituem locais de espera onde as entidades dinâmicas esperam sua vez de seguir através do sistema. As filas podem ser chamadas de áreas de espera ou pulmões (buffers). Depois de dar entrada na fila a entidade é retirada seguindo algum tipo de critério, por exemplo, FIFO (First In First Out), LIFO (Last In Last Out), HVF (High Value First), LVF (Lower Value First) ou um critério aleatório (Torres,2002). 1.2.2 Uma Metodologia para Desenvolver Simulações Em linhas gerais a metodologia de trabalho adotada pela simulação de sistemas não difere da metodologia apresentada pela pesquisa operacional. Mesmo porque a simulação é uma técnica da pesquisa operacional que, junto com a programação linear, ocupa um lugar de destaque em termos de utilização prática, se comparada às demais técnicas. A figura 1 apresenta uma forma de visualizar as diversas etapas de um processo de simulação e suas interações. Figura 1: Etapas do Processo de Simulação (figura adaptada da referência Law & Kelton, 1991) A seguir são comentadas as etapas do processo tradicional da simulação de sistemas. 1.2.2.1 Definição do Problema e Plano de Estudo Não é possível solucionar um problema sem conhecê-lo a fundo. Como primeiro passo é preciso definir claramente os objetivos relacionados ao problema a ser resolvido. Não é raro acontecer do pesquisador resolver "corretamente o problema errado". R.Shannon [1975] faz uma afirmação que, sem dúvida, se encaixa perfeitamente nos dias de hoje. Ele diz: "...milhões de dólares são gastos anualmente trazendo respostas sofisticadas e elegantes para questões erradas". A formulação de um problema é um processo contínuo através do estudo do mesmo. Novas informações surgem e trazem novas restrições, alteram objetivos e fornecem novas alternativas de investigação. Essas informações devem ser utilizadas para atualizar continuamente a formulação e definição do problema. A formulação do problema é uma etapa vital para todo o processo de simulação. Deve ser feita com muito cuidado e competência. Nessa fase cada informação relevante deve ser analisada a fim de definir o problema no nível de objetivos, restrições e complexidade. É importante lembrar que o mundo é muito complexo. As situações-problema contêm, normalmente, um grande número de variáveis, parâmetros, relacionamentos, restrições e metas. Entretanto, se somente alguns aspectos são de interesse do estudo, muitas características do sistema real podem ser ignoradas. Trata-se, portanto, de abstrair da situação real os aspectos relevantes, formando uma versão idealizada do evento real. Deve-se pensar o projeto de simulação como o desenvolvimento de um grande modelo simples. Conforme as metas estabelecidas vão sendo atingidas, novos problemas vão sendo identificados, obtendo-se um maior realismo. Isso levará à revisões do modelo e, conseqüentemente, obtenção de melhores soluções. Trata-se portanto de um enriquecimento contínuo do modelo. O problema formulado dependerá da técnica e experiência do “modelista” em obter informações e do seu relacionamento junto ao usuário. Este relacionamento ditará a velocidade com que o modelo atingirá o ponto desejado de realismo. O “modelista” deve conhecer formas de extrair, do usuário, informações suficientes e consistentes a respeito do problema tratado. Existem metodologias específicas para auxiliar nesta etapa, que podem ser encontradas em publicações ligadas às áreas de análise de sistemas , de gerenciamento de projetos, e de aquisição de conhecimento (Inteligência Artificial). Em termos práticos, W.D.Kelton e outros (1998) colocam algumas questões que deveriam ser feitas e respondidas para facilitar a identificação dos objetivos da simulação, descrever o sistema de estudo, estabelecer o grau e necessidade de animação, definir as entradas e saídas do modelo e estabelecer os elementos de gestão do projeto de simulação. As questões são as seguintes: • O que deve conter o modelo de simulação? • Qual o nível de detalhes necessário? • Quais os recursos primários do sistema? • Quais as atividades e processos associados ao sistema? • Existem diagramas de fluxo e de processo disponíveis? • Eles estão atualizados? • Esses diagramas são seguidos ou são somente prescrições? • Sob quais condições eles não são seguidos? • Existem restrições físicas, tecnológicas ou legais na operação do sistema? • Essas restrições podem ser alteradas? • Os procedimentos do sistema estão bem definidos? • Como são tomadas as decisões? • Existem dados disponíveis? • Quem vai cuidar da coleta de dados? • Quem vai cuidar do projeto de levantamento de dados, caso não existam dados disponíveis? • Qual tipo de animação é necessário? • Quem vai verificar e validar o modelo, e como o fará? • Quais as saídas necessárias? • Quão geral ou específico deve ser o modelo? • Quem vai fazer as análises de resultados? • Quantos e quais cenários devem ser considerados? • Quais os pontos de controle do projeto (milestones)? W.D.Kelton e outros (1998) comentam que esta lista não é exaustiva mas pode oferecer uma idéia geral do nível de detalhes necessários. 1.2.2.2 Coleta de Dados e Representação do Problema Após estabelecer a situação a ser tratada, deve-se passar para a fase de representação da mesma. Trata-se, no caso da simulação, de transladar o sistema real para um diagrama de fluxo lógico. O diagrama representará o problema através de associações feitas entre as entidades e as atividades. Um diagrama bastante conhecido é o Diagrama Ciclo Atividade (Ativity Cycle Diagram - ACD). Esses diagramas são constituídos por Filas e Atividades, cujos relacionamentos estabelecem o Ciclo de Vida de cada entidade participante do sistema. Detalhes da estrutura ACD podem ser obtidos na obra de Clementson (1982) e na de Pidd (1996). A utilização de um ACD é indicada para sistemas que possuem forte estrutura de filas. Todas as entidades envolvidas, a cada instante da simulação, estarão sempre em uma das situações : ativada (participando da execução de uma atividade) ou esperando numa fila. O Estado de um sistema modelado é definido pela situação de cada entidade componente. Um ciclo de vida é utilizado para descrever uma seqüência de situações nas quais uma entidade deverá atuar. Em linhas gerais a representação dos diagramas ACD é feita através de "círculos" e "retângulos", simbolizando respectivamente filas e atividades. Os retângulos representam atividades (estados ativos) que envolvem, normalmente, a coparticipação de diferentes entidades. As durações dessas atividades são definidas baseadas em funções, probabilísticas ou não. Os círculos representam filas (estados passivos), compostas de entidades que aguardam alguma mudança no sistema. Essas mudanças acontecem com a ocorrência de um evento, que liberará outras entidades que poderão ser utilizadas na realização de uma atividade comum. No clássico exemplo do PUB apresentado nas figuras seguintes, pode-se ter uma visão desses diagramas e uma idéia do processo de construção dos mesmos. Exemplo aproveitado da referência Paul & Balmer (apud Costa, 2001). O “PUB” consiste num bar inglês que envolve as seguintes entidades: clientes, garçom, copo e porta. O leitor pode reparar que uma entidade pode ser tanto um ser humano como um objeto. Pode ser também uma entidade concreta ou abstrata. Por exemplo, uma informação que circula num sistema pode ser entendida como uma entidade abstrata. Também pode ser temporária no sistema (o cliente por exemplo) ou permanente (o copo). Cada entidade possui o que se chama de “ciclo de vida da entidade”. Esse ciclo de vida mostra toda a sequência de atividades da qual a entidade participará. Uma atividade envolve, na maioria das vezes, mais de uma entidade. Por exemplo, como será visto a seguir, a atividade “Servir” envolverá um cliente, um garçom e um copo. Na falta de qualquer uma dessas entidades a atividade “Servir” não se realizará. No estudo de qualquer sistema é muito importante definir o grau de abstração no qual se deseja trabalhar. Esse grau de abstração definirá a complexidade do modelo. Recomenda-se que se inicie o desenvolvimento do modelo da forma mais simples possível, envolvendo somente as variáveis que realmente são necessárias para representar o problema a ser estudado. Na medida que os resultados da simulação não forem respondendo às questões colocadas, diminui-se o grau de abstração do modelo, acrescentando-se novas variáveis ao mesmo. Nesse exemplo a complexidade tratada será pequena mas suficiente para atender à situação que se deseja analisar, que é o tamanho da fila de espera dos clientes aguardando atendimento. É comum num problema de fila o interesse pelas medidas de tempo de espera e quantidade média de clientes na fila. No “PUB” o cliente chega, a partir de uma fila de clientes que estão fora do bar (“Outside”), entra no sistema e nesse momento são gerados dois valores: um que especifica o quanto ele vai beber (quantidade de “drinks”) e outro que estabelece o intervalo entre a sua chegada e a do próximo cliente. Participam da atividade “Chegada” duas entidades, o cliente e a porta. O cliente entra no bar e fica numa fila de espera, aguardando ser servido. Após ser servido, ele está pronto para beber. Encerrada a atividade “Beber”, e de acordo com a quantidade de “drinks” gerada, ele volta para a fila de espera ou sai do sistema, indo para a fila “Outside”. A fila “Outside” funciona como fonte e sumidouro de entidades. A entidade garçom pode participar da atividade “Servir” ou da atividade “Lavar”, caso contrário ele entra na fila de garçons ociosos. O copo participa da atividade “Servir”, “Beber” e “Lavar”. Quando está parado ele está em uma das filas de copos “Sujos” ou “Limpos”. Para todas as atividades são gerados tempos de processamento, que podem seguir qualquer tipo de distribuição, por exemplo, uma Normal, Triangular, Erlang, Weibull, Uniforme, etc. Uma restrição importante a ser respeitada na construção de um ACD diz que as atividades e as filas devem aparecer intercaladas no diagrama. Não podem ocorrer atividades em seqüência. Entre elas deve haver uma fila. E vice-versa. No exemplo, para contornar essa questão, serão criadas duas filas “fantasmas” chamadas “OK” e “ OK’ “. Nas filas “fantasmas” o tempo de espera é nulo. Dado esse contexto, criam-se os ciclos de vida individuais de cada entidade. *Obs.: O diagrama ACD é composto de apenas dois tipos de símbolos: ATIVIDADE FILA Ciclo de Vida do Cliente Ciclo de Vida do Copo SERVIR CHEGADA BEBER OK’ Espera Outside OK Limpos SERVIR Sujos LAVAR BEBER Ciclo de Vida do Garçom Ciclo de Vida da Porta SERVIR Fechada Ocioso CHEGADA LAVAR Após desenhar os diagramas individuais, para ter uma visão do sistema todo basta agrupar os ciclos de vidas através das atividades comuns. No exemplo obtém-se o seguinte diagrama: PUB Fechada CHEGADA Espera Outside OK SERVIR BEBER OK’ Ocioso Limpos LAVAR Sujos Um diagrama apresentado na forma de um ACD é o primeiro passo para se utilizar uma ferramenta computacional de geração de códigos automática. No caso o “software” eLSE (‘extended Lancastar Simulation Environment”) gera todos os códigos na linguagem PASCAL, criando automaticamente o programa que simulará o PUB. O passo seguinte é levantar os dados que serão responsáveis pelo estabelecimento das distribuições que representam a chegada de clientes, tempos das atividades e quantidade de “drinks” de cada cliente. É preciso estabelecer também o cenário que se deseja simular, especificando os parâmetros de entrada, como a quantidade de garçons e quantidade de copos. Feito isso, roda-se o programa, obtémse os resultados e através de uma análise dos mesmos, levanta-se o tempo médio na fila de espera e a quantidade média de clientes nessa fila. Caso os resultados não contemplem a política desejada de tempo máximo de espera na fila, cria-se um novo cenário modificando, por exemplo, a quantidade de garçons ou a de copos. Roda-se novamente, analisa-se os resultados e faz-se a opção por um novo cenário ou não. Essa é a síntese da simulação de sistemas. Criar um modelo representativo de um sistema real e fazer experimentações nesse modelo, obtendo informações que orientem nas tomadas de decisão para futuras alterações nesse sistema real. É importante que o leitor sinta a grande vantagem que se tem quando se faz experimentações num modelo computacional. No computador é possível analisar muitas situações (cenários) diferentes, num tempo extremamente pequeno. 1.2.2.3 Escolha da Ferramenta Computacional Existem basicamente quatro tipos de ferramentas computacionais que podem ser utilizadas no desenvolvimento de simuladores : • Linguagens de Aplicação Geral; • Linguagens Específicas de Simulação; • Geradores Automáticos de Códigos de Simulação; e • Ambientes de Simulação. Existe uma contraposição entre flexibilidade e facilidade de desenvolvimento, de acordo com a ferramenta escolhida. Por exemplo, uma linguagem de aplicação geral permite alta flexibilidade no desenvolvimento de um programa de simulação, porém exige grande conhecimento da linguagem e demanda um grande esforço de programação. Por outro lado um ambiente de simulação é muito amigável e permite fácil utilização por parte do usuário, mas não oferece muita flexibilidade no desenvolvimento. As linguagens de aplicação geral são mais poderosas ou menos poderosas de acordo com suas características individuais. Linguagens fortes como PASCAL e C são muito utilizadas no desenvolvimento de simulações. Linguagens específicas de simulação (ou simplesmente linguagens de simulação) já tiveram seus bons tempos, embora algumas delas (por exemplo, GPSS (Gordon,1978, Bulgren,1982, Banks et al,1989, Schriber, 1991)) ainda sejam muito utilizadas graças às facilidades que proporcionam no desenvolvimento de modelos de Simulação. Algumas linguagens de simulação bastante conhecidas são : GPSS, SIMAN, SIMSCRIPT, DINAMO, GASP, SIMPAC, CLS e SIMULA. Em relação à linguagem SIMULA é interessante comentar que, apesar de ser uma das primeiras linguagens específicas de simulação, hoje ela é reconhecida como a primeira linguagem orientada a objeto que surgiu. As principais características das linguagens específicas de simulação são [Ogata,1992] : • Produz uma estrutura genérica para criar modelos de simulação; • Fornece uma maneira rápida de se converter um modelo de simulação em um programa computacional; • Fornece facilidades para alterações no programa computacional; • Fornece saídas flexíveis, úteis para análises. Além das vantagens associadas à redução do tempo e à facilidade de programação, as linguagens específicas de simulação também fornecem bons mecanismos para localização de erros. Os geradores automáticos de códigos de simulação surgiram para facilitar a tarefa do “modelista” no processo de programação computacional. A partir de uma representação formal do problema estudado, esse tipo de ferramenta produz um programa fonte, que é uma versão executável do modelo especificado. Alguns desses geradores chegam a desenvolver a quase totalidade dos códigos computacionais exigidos. São exemplos desses geradores: PASSIM [Shearn,1990], LANGEN [Crookes,1986], GERSIMUL [Saliby,1991], AUTOSIM [Paul,1987], CAPS [Clementson,1982]. Segundo R.Paul [1987] o CAPS foi o primeiro e é o mais famoso gerador de códigos de simulação. Os ambientes de simulação são sistemas que tem por objetivo auxiliar o usuário no desenvolvimento de modelos de simulação, atuando em várias etapas do processo, e não somente na geração de códigos. Uma outra etapa na qual um ambiente de simulação normalmente atua é na análise dos resultados da simulação. São exemplos desses ambientes: KBMC (Knowledge-Based Model Construction) [Murray,1988], ROSS [McArthur et al,1986], KBS (Knowledge-Based Simulation) [Reddy et al,1986], SIMKIT [Harmon & King,1985]. 1.2.2.4 Desenvolvimento do Modelo Computacional O desenvolvimento do modelo vai depender da ferramenta computacional escolhida. O resultado poderá ser um simulador tradicional ou um complexo sistema de simulação (por exemplo um sistema inteligente ou baseado em conhecimento). Nessa fase são criados os códigos de simulação, por geração automática ou não. A dificuldade, e conseqüente velocidade no desenvolvimento do simulador, estará associada tanto à ferramenta computacional utilizada, como à complexidade do modelo e experiência do “modelista”. 1.2.2.5 Verificação e Validação do Modelo Duas fases muito delicadas no processo de desenvolvimento de modelos de simulação correspondem à verificação e à validação desses modelos. Verificação do modelo é a etapa onde o “modelista” checa se o modelo desenvolvido corresponde ao idealizado. Neste ponto é verificado se o modelo foi construído corretamente. Nesta fase busca-se fazer testes exaustivos no simulador. O “modelista” precisa se convencer de que o simulador está correto e rodando bem. Na verificação de um modelo deve-se variar os valores dos parâmetros de entrada (inclusive utilizando as fronteiras do intervalo de valores) e analisar se os resultados são coerentes. Nesse momento é possível sentir a força da simulação, que agiliza a etapa de testes, tornando-os viáveis em termos de tempo e dinheiro. A validação é a etapa onde será checado se o modelo desenvolvido representa bem o sistema real. É a busca da resposta para a pergunta: foi desenvolvido o modelo correto?. A idéia é passar confiança ao usuário, mostrando que qualquer experimento com o modelo irá gerar resultados que coadunam com a realidade do sistema estudado. A validação é normalmente conseguida executando o modelo e comparando seus resultados com os oriundos do sistema real. Se os resultados da simulação se aproximarem dos valores reais, dentro de um nível de confiança desejado, o simulador será validado. Segundo Annino [1981] a técnica de validação mais efetiva é apresentar o programa para alguém familiar ao sistema em estudo. Num esquema interativo entre o especialista no funcionamento do sistema real e o “modelista”, será mais fácil corrigir desvios do modelo em relação ao sistema real. A validação do modelo é extremamente importante pois os simuladores normalmente tendem a parecerem reais e, tanto o “modelista” como o usuário, passam a acreditar nele. 1.2.2.6 Planejamento dos Experimentos O planejamento de experimentos tem dois objetivos: (1) rodar muitas vezes o modelo, a baixo custo e de forma rápida, e (2) providenciar uma estrutura para o processo de aprendizado dos investigadores, para que os mesmos possam aprender mais a respeito do sistema. O planejamento de experimentos pode ser dividido em duas fases : estratégica e tática. No nível estratégico é importante projetar os experimentos visando alcançar as metas estabelecidas. Portanto deve-se combinar os valores dos parâmetros que “otimizarão” as variáveis de respostas, e explicar as relações entre as variáveis de respostas e os fatores controláveis do sistema. É a fase que consiste em executar o modelo computacional sob os diversos cenários de simulação estabelecidos. Os cenários são tratados individualmente, com a preocupação de se estabelecer exatamente os pontos de início e fim da simulação, para efeito de análises estatísticas. Esses pontos correspondem à fase transiente (warm-up) e ao tempo total de simulação (length of simulation) da rodada (running). É bom lembrar que a simulação, a partir de situações iniciais diferentes, oferece linhas de ação alternativas para o tomador de decisão. E como a fase de execução do modelo é, via de regra, extremamente rápida, pode-se abusar do número de cenários a serem rodados. 1.2.2.7 Execução do Modelo A execução do modelo é a fase tática do planejamento de experimentos. Nenhum projeto de simulação pode ser considerado completo se não for aceito, entendido e utilizado. Estabelecido o projeto dos experimentos, a fase tática determinará como cada um dos testes especificados nos experimentos serão executados. Para isso devem ser definidas as condições iniciais, e como elas afetam o equilíbrio do sistema. O pano de fundo dessa fase é a necessidade de diminuir a variância das respostas e, ao mesmo tempo, buscar minimizar o tamanho das amostras necessárias. Os problemas associados ao início da Simulação podem ser amenizados excluindo-se dados gerados durante um certo período inicial, para efeito de contabilidade, ou escolhendo-se condições iniciais que diminuam o tempo necessário para alcançar o equilíbrio. O resultado dessa fase é o estabelecimento de diversos cenários que serão rodados. 1.2.2.8 Análise das Alternativas de Ação Esta fase consiste em fazer inferências a partir dos dados gerados na execução do modelo. É uma fase crítica, demorada, difícil e muito importante. Uma saída de simulação é uma avalanche de números, que precisam ser tratados e analisados. A análise dos resultados da simulação é comumente realizada por especialistas caros e pouco disponíveis. Para suavizar os problemas enfrentados nessa fase surgiram ferramentas computacionais, já disponíveis em boa parte das linguagens, geradores e ambientes de simulação visuais (gráficos e imagens). Tão somente a disponibilidade de ferramentas visuais não soluciona o problema de análise de resultados. É necessário possuir profissionais com condições de realizar análises concretas ao final do processo de Simulação. Nos últimos anos tem ocorrido a utilização de sistemas especialistas para desempenhar o trabalho dos analistas de resultados de Simulação. Esses sistemas especialistas, contendo o conhecimento de expertos na área em estudo, analisam os resultados fornecidos pelo simulador, orientando o tomador de decisão. 1.2.2.9 Documentação e Implementação Uma das grandes falhas nos projetos, em geral, é a apresentação ruim dos resultados para o usuário. Isso é uma falha de implementação. O pouco tempo gasto na implementação normalmente não é suficiente para as tarefas existentes nessa fase. Fazem parte dessas tarefas: lapidação e ajuste do modelo, treinamento do usuário e a garantia da validade dos resultados. Essa última tarefa, que só é possível com a implementação, tende a ser, segundo R.Shannon [1975] o problema mais difícil a ser enfrentado pelo analista. A documentação está intimamente ligada à implementação. Além de facilitar a implementação e a possível necessidade de alterações no modelo, auxilia o “modelista” em futuros projetos, além de forçá-lo a questionar seus próprios procedimentos. 1.3 “Simulando o Simulador” Exercício para entender os procedimentos de Controle da Simulação O tipo de simulação aqui tratado é “Simulação Discreta de Eventos Futuros”. Vamos entender o que significa este tipo de simulação e qual a sua aplicação. Evento é qualquer fato que altere o sistema em estudo. A chegada de um cliente a um posto de atendimento é um evento. O término de atendimento de um cliente é, também, um evento. A simulação é discreta pois o relógio que registra o tempo simulado trabalha aos saltos, avançando o relógio sempre para o instante no qual irá acontecer o próximo evento. Para entender melhor os procedimentos que controlam a simulação, considere o seguinte exemplo: O sistema é composto de uma fila única (como tudo em simulação é analogia, pode ser uma fila de caixa numa agência bancária, pode ser uma fila no balcão de atendimento de uma agência de correio, pode ser uma fila de navios que aguardam para serem descarregados num porto, pode ser uma fila de carros num pedágio, ...). O objetivo do estudo desse sistema é verificar o tempo gasto pelo cliente na fila. Pretende-se estabelecer como “minimizar” o tempo de espera na fila, sem que a ociosidade dos atendentes supere, por exemplo, 30% do tempo trabalhado. Diante da idéia de “faça o mais simples”, considere dois eventos somente: Chegada de Cliente e Término de Atendimento. Caso o problema seja solucionado nesse grau de complexidade, ótimo, caso contrário considera-se outros tipos de eventos, novos componentes do sistema e assim por diante. Controle da Simulação T= 0; Gerar CH ; Inserir na Lista (Chegada, CH); ENQUANTO T <= Período de Simulação Desejado Retire da Lista (Info, tempo); T = tempo; SE Info = Chegada ENTÃO Chegada de Cliente CASO CONTRÁRIO Término de Atendimento Chegada de Cliente Gerar CH; Inserir na Lista (Chegada, SE C(1) <= T ENTÃO Q= Q + T Gerar AT; Inserir na C(1) = T + T+CH); C(1); Lista (Término, T + AT); AT CASO CONTRÁRIO Inserir na Fila (Tempo de Entrada na Fila); Quantidade_Fila = Quantidade_Fila + 1 Término de Atendimento SE Quantidade_Fila >= 1 ENTÃO Retire da Fila (Tempo de Entrada na Fila); Wait = Wait + T – Tempo de Entrada na Filq; Atendimentos = Atendimentos + 1; Gerar AT; Inserir na Lista (Término, T+AT) C(1) = T+AT Quantidade_Fila=Quantidade_Fila - 1 Considere os seguintes conjuntos de números aleatórios para serem utilizados na simulação. Façam uma abstração e imaginem que toda vez que a simulação precisar de um número aleatório, o computador irá gerar um valor entre 0 e 1, e irá “corrigílo” de acordo com a distribuição que melhor represente (maior aderência) os dados colhidos da operação simulada. CH = { 2 , 4 , 3 , 4 , 5 , 3 , 1, 6 } AT = { 5 , 4 , 6 , 3 , 4 , 2 , 5 , 4 } Vamos simular (na mão, imitando o computador) o modelo da página anterior e verificar como a simulação trata os eventos futuros da Lista, como são gerados os números da simulação, como são atualizados os acumuladores (que irão fornecer as respostas estatísticas), enfim, como funciona uma rodada de simulação no computador. T CH AT C(1) FILA (T) Q_FILA WAIT Q N LISTA (Evento, Instante de Ocorr) 1.4 Conclusão do Capítulo A Simulação de Sistemas faz análises de problemas. Ela serve como ferramenta para a análise do comportamento do sistema sob condições especificadas pelo usuário. A simulação pode evitar problemas que ocorrem quando se faz experimentações com o sistema real. Por exemplo, na simulação : • Não é necessário interromper as operações do sistema real; • É fácil manter as mesmas condições de operação para cada réplica do experimento; • É possível explorar muitos tipos de alternativas na experimentação; • O consumo de tempo e dinheiro é extremamente menor para se obter o mesmo tamanho de amostra. R.Shannon [1975] coloca que o analista deve considerar o uso de simulação sempre que : • Uma formulação matemática completa do problema não exista, ou métodos analíticos para resolver o modelo matemático não foram ainda desenvolvidos; • Métodos analíticos estejam disponíveis, mas os procedimentos necessários para a utilização dos mesmos são tão complexos e árduos que a simulação acaba fornecendo um método mais simples de solução; • Soluções analíticas existam e sejam viáveis em termos de complexidade, mas estão além da habilidade matemática do pessoal disponível. O custo de desenvolvimento, teste, e execução da simulação deve ser avaliado, comparativamente ao custo de obtenção de ajuda externa; • A Simulação pode ser a única opção possível dadas as dificuldades de observação de fenômenos no ambiente real. Uma vantagem adicional da Simulação é a sua contribuição para se compreender melhor e aprender a respeito do sistema. O desenvolvimento e utilização de um modelo de Simulação permitem ao projetista enxergar e manipular o sistema. Isso leva a um crescente entendimento do mesmo, permitindo que modelos simples de simulação sofram alterações até se tornarem complexos o suficiente para representar bem a situação estudada. 2 INPUT/OUTPUT :ENTRADA e SAÍDA DE SIMULAÇÃO Breve tutorial aproveitado (e adaptado) das referências: (1)Kelton,W.D., Sadowski,R.P., Sadowski,D.A., Simulation with Arena, McGrawHill (2)Freitas,P., Paragon, Análise de Dados e Tomada de Decisão com Simulação (3)Harrel,C., Tumay,K., Simulation made easy, EMP Books) 2.1 Conceitos Básicos de Probabilidade Experimento é qualquer atividade que pode ser realizada, cujo resultado exato é incerto. • Ex.: No arremesso de um dado, sairá o número 4? Ocorrerá um número ímpar? O número estará no intervalo entre 2 e 5? • Ex.: Quanto tempo você levará para ir da sua casa até a universidade amanhã? Você atrasará porque será atingido por um meteoro? • Ex.: Analisando a atividade de um Call Center, durante uma semana, quantas chamadas ocorrerão? Quanto tempo os clientes ficarão esperando para serem atendidos? Quantos clientes desistirão de esperar devido à demora? Espaço Amostral de um experimento é a lista completa de todos os resultados individuais que podem ocorrer quando for realizada a atividade. Para a atividade de arremesso de um dado (ou de uma moeda) é fácil estabelecer o espaço amostral do experimento, porém em alguns casos (como o tempo que você gastará para ir da sua casa até a universidade amanhã) o número de possibilidades é infinito. Felizmente, é possível entender um experimento e sua estrutura probabilística sem descrever, explicitamente, todo o espaço amostral. Evento é um subconjunto do espaço amostral. Probabilidade de um evento é a possibilidade relativa de ocorrência do mesmo, quando o experimento for realizado. Por convenção, probabilidades são valores que se encontram no intervalo de 0 a 1. P(E) denota a probabilidade do evento E ocorrer. Existe uma quantidade grande de diferentes tipos de eventos e probabilidades que podem acontecer na simulação. Por exemplo, você pode estar interessado em saber qual a probabilidade de: • uma peça passar pela inspeção; • uma peça que chega ter prioridade 1; • um tempo de atendimento estar entre 2 e 6 minutos; • nenhum cliente chegar durante um intervalo de x minutos; • o máximo comprimento de uma fila não exceder 10 elementos; • o tempo médio de sistema das peças não ultrapassar 4 horas; • muitas outras situações. Eventos podem ser definidos de muitas maneiras diferentes e podem ser muito complexos. Uma forma de quantificar e simplificar eventos é estabelecer variáveis randômicas associadas a eles. Uma variável randômica é um número cujo valor é determinado pelo resultado de um experimento, que pode ser pensado como uma quantificação do experimento. Tecnicamente uma variável randômica é uma função definida a partir do espaço amostral dos números reais. Assim, ela é uma regra ou um mapeamento que atribui um número para cada resultado possível de um experimento. É um valor que você não sabe ao certo qual é, antes de realizar o experimento, mas, normalmente, você conhece algo a respeito dele, como o conjunto de valores possíveis ou a probabilidade dele estar em um certo intervalo de valores. Existem dois tipos básicos de variáveis randômicas: discreta e contínua. Uma variável discreta assume valores pontuais, dentro de um intervalo finito ou infinito de valores. Por exemplo: o número de itens expedidos, dentre uma coleção de 50 itens, só pode estar no intervalo entre 0 e 50; o número de vezes que uma peça passa pela inspeção, até ser liberada, é um número inteiro sem limite superior. Uma variável contínua pode assumir qualquer valor real, possivelmente limitada à direita e à esquerda. Variáveis contínuas representam, geralmente, medidas físicas como tempo e distância. O comportamento probabilístico de uma variável randômica é descrita pela sua distribuição de probabilidade. Existem algumas propriedades básicas dessas variáveis, como valor esperado e variância. 2.2 Variáveis Randômicas 2.2.1 Variável Discreta Para uma variável randômica discreta X existirá uma lista x1, x2,... (finita ou infinita) de valores possíveis que ela pode assumir. Note que os valores x1, x2, ... são fixos, não-randômicos, mas a variável X é randômica. Função Massa de Probabilidade é a função que fornece a probabilidade de X assumir cada um dos valores possíveis: p(xi) = P(X=xi), para todo i. A função massa de probabilidade é estimada a partir de dados, ou simplesmente assumida. Supondo que xi represente todos os valores possíveis para o evento X, então: ∑ p(xi) = 1 i Função Distribuição Acumulada de uma variável randômica discreta X é a função que fornece a probalidade de X ser menor ou igual ao seu argumento: F(x) = ∑p(xi) , para todo i, tal que xi ≤ x F(x) é uma função não-decrescente, variando de 0 a 1. Portanto, P(a ≤ X ≤ b) = ∑p(xi) , todo i, tal que a ≤ xi < b Valor Esperado (também chamado de média µ) de X é definido como E(X) = ∑ xi . p(xi), para todo i Trata-se, portanto, de uma média ponderada. A Variância (medida de variabilidade da variável randômica discreta X) é definida como: Var(X) = ∑(xi - µ)2. p(xi), para todo i Desvio Padrão é a raiz quadrada (positiva) da variância. 2.2.2 Variável Contínua Uma variável randômica contínua pode assumir qualquer valor real em um intervalo (limitado ou não limitado). Mesmo em um intervalo pequeno, esta variável pode assumir infinitos valores reais. Portanto não faz sentido falar sobre a probabilidade de uma variável contínua ser igual a um número x. Tecnicamente, esta probabilidade será zero. A Função Densidade de Probabilidade de uma variável randômica contínua X é definida como a função f(x), tal que: • f(x) ≥ 0, para todo valor real x. • A área total sob f(x) é 1, ou seja ∫-∞ f(x) dx = 1 • P(a ≤ x ≤ b) = ∫a f(x) dx +∞ b A função de distribuição acumulada de uma variável randômica contínua X tem interpretação análoga a da variável randômica discreta. No caso, x F(x) = ∫-∞ f(t) dt Dependendo da forma da função densidade de probabilidade, a função de distribuição acumulada F(x) pode ou não ser expressa como uma fórmula envolvendo x. Por exemplo, as distribuições Weibull e Exponencial têm fórmulas simples para a função densidade acumulada, enquanto que a Gamma e a Normal não possuem. Nestes casos são utilizados métodos numéricos ou tabelas para expressá-las. O valor esperado de uma variável randômica contínua é uma medida do “centro” da distribuição e é a média das muitas (infinitas) observações em X. É difinida como: +∞ E(X) = ∫-∞ f(x) dx A Variância de X mede sua dispersão e é denotada por: +∞ VAR(X) = ∫-∞ (x- E(X))2 . f(x) dx O desvio padrão é a raiz quadrada da variância. 2.3 Amostragem e Coleta de Dados POPULAÇÃO # AMOSTRA (quantidade representativa da população) Na amostra são feitas inferências estatísticas para estimar os parâmetros populacionais. A partir destes parâmetros são feitos estudos sobre toda a população. 2.3.1 Tamanho mínimo da Amostra Considere: N : tamanho (número de elementos) da população n : tamanho (número de elementos) da amostra no : primeira aproximação para o tamanho da amostra Eo : erro amostral tolerável Um primeiro cálculo do tamanho da amostra pode ser feito, mesmo sem conhecer o tamanho da população, através da seguinte expressão: 1 no = Eo2 Conhecendo o tamanho N da população, podemos corrigir o cálculo anterior, por: (N * no) n= (N + no) Exemplo: Dada uma população de 200 peças, pretende-se estabelecer um tamanho de amostra para avaliar diversas características dessa população. Qual deve ser o tamanho mínimo de uma amostra aleatória simples, que garanta que os erros amostrais não ultrapassem 4% (Eo = 0.04). (Aplique as fórmulas e você verá que a resposta é: 152 peças) 2.3.2 Distribuição de Frequências Tabelas que apresentam um conjunto de dados subdivididos em categorias ou classes, mostrando o número de elementos (frequências) contidos em cada uma delas. Exemplo.: Durante dois meses foram levantados os dados de produção de uma seção. Os dados tabulados são: 65 55 76 74 36 62 74 34 49 22 70 84 82 51 79 88 40 56 50 75 28 60 56 43 56 45 67 57 35 36 46 62 43 39 52 78 57 63 37 73 32 40 65 80 68 59 64 72 48 57 Trabalhando com classes (20-29; 30-39; ...; 80-89, por exemplo), traça-se o histograma, onde se tem um visual da curva representativa dos dados, apresentando a frequência com que cada classe aparece no conjunto de dados (frequências relativas). A partir desses dados são calculados os parâmetros associados aos dados, no caso a média, a variância, o desvio padrão e o coeficiente de variação = DP/Média. Essa última medida é a medida de dispersão utilizada no Arena. 2.3.3 Escolha de uma Distribuição Teórica de Probabilidade Uma das mais importantes tarefas na análise de dados para a simulação consiste em encontrar uma distribuição teórica de probabilidades, que seja compatível com a freqüência de dados observada. A seleção da distribuição é feita utilizando critérios visuais, experiência do estatístico e considerações teóricas. Exemplo: EXPONENCIAL(Média) ou EXPO(Média) Função Densidade de Probabilidade f(x) = 1/B * e –x/B Onde : * B é a média especificada como um valor real * Intervalo de validade é [0, + ∞) * Variância B2 Esta distribuição é frequentemente utilizada para modelar tempos entre eventos, como chegadas randômicas de clientes em postos de atendimento (ou peças na linha de produção) e processos de quebra de equipamentos. 2.3.4 Testes de Aderência O objetivo dos testes de aderência á a verificação da qualidade na escolha da distribuição que acreditamos ser a melhor representação dos dados da população. Normalmente, são utilizados métodos gráficos e/ou teóricos. Graficamente, a qualidade é medida visualmente, de acordo com a proximidade ou “aderência” entre os dois desenhos. Teoricamente, procura-se provar a hipótese de que o conjunto de dados amostrais não diferem significativamente, daqueles esperados de uma distribuição teórica especificada. Dois métodos teóricos bastante utilizados são: Chii-Quadrado e KolmogorovSmirnov (KS). Estes testes procuram medir e avaliar os desvios entre a distribuição amostral e a teórica. Exemplo: Chi-Quadrado (fo – fe)2 Valor Crítico X2 = ∑ k fe onde: k = número de classes ou intervalos fo = freqüência observada nas classes fe = freqüência esperada nas classes Se X2 = 0, então as duas distribuições estão casando perfeitamente. Quanto maior o valor de X2, maior a discrepância entre as duas distribuições. Jogando-se um dado 120 vezes, obtém-se os valores vistos na tabela abaixo. Na mesma tabela observa-se também os valores esperados para as seis faces. FACE Freq. Obs. Freq. Esp. 1 25 20 2 17 20 3 15 20 4 23 20 5 24 20 6 16 20 Testando a hipótese do dado ser correto, sob um nível de significância de 5%, utilizando Chi-Quadrado, temos: (25-20)2 X2 = (16-20)2 + ...+ 20 = 5,0 20 O número de graus de liberdade no caso na distribuição uniforme é = No. de Classes –1 =5 Neste caso, da tabela de Chi-Quadrado, o valor = 11,1. Portanto 5,0 < 11,1, e não se pode rejeitar a hipótese de que o dado é justo, ou seja, pode-se afirmar, com 95% de certeza que, estatisticamente, os resultados da amostra estão coerentes com o que se esperava. Observação: O teste KS é utilizado com a mesma intenção que o Chi-Quadrado, ou seja, testar se a distribuição amostral segue uma determinada distribuição teórica contínua. Este teste baseia-se na comparação das probabilidades acumuladas das duas distribuições (observada e a teórica). Para a consulta em uma tabela de valores críticos, toma-se o maior valor/desvio entre as duas distribuições (valores calculados dentro de cada classe). 2.4 Input Analyzer Esta ferramenta, presente no ARENA, determina a distribuição de probabilidades que melhor adere (representa) um certo conjunto de dados. Esses dados devem ser listados em um arquivo TXT gerado em Word, Lotus, Excel, etc... Faz aderência de distribuições específicas (pertencentes ao software). Permite a comparação de várias distribuições. Mostra os efeitos da troca dos parâmetros das distribuições e permite a manipulação dos dados de entrada. 2.4.1 Iniciando o Input Analyzer Vamos utilizar os dados do exemplo de produção para rodar o Input Analyser no ARENA. No Menu Tools do ARENA , escolha Input Analyzer Aberto o Input Analyser, no menu File, escolha New. No mesmo menu File, escolha Data File e Using Existing ... Na janela Abrir selecione o arquivo de dados desejado. Surgirá na tela (próxima figura) um histograma dos dados estudados com as seguintes informações: • number of data points: número de pontos da amostra • number of intervals: número de intervalos do histograma. Este número é dadopela raiz quadrada do no. de pontos (reais), ou da diferença entre o maior e o menor valor +1 (inteiros). • histogram range: intervalo onde estão todos os valores da amostra • sample mean: média dos pontos da amostra • sample Std Dev: desvio padrão dos pontos da amostra • min e max data value: menor e maior valor da amostra Pode-se selecionar uma distribuição em particular ou usar o Fit All (melhor aderência). Por exemplo, para os dados apresentados no histograma acima, o comando Fit All irá gerar o resultado apresentado na figura seguinte: Observação (1): A qualidade da curva escolhida é baseada primeiramente no critério do quadrado dos erros, ou seja, são verificadas as distâncias de cada ponto dos dados de entrada, em relação aos pontos ideais da distribuição desejada. A distribuição cujo somatório dos quadrados das distâncias for menor, é considerada a melhor curva. Observação (2): Os testes de aderência Chi-Quadrado e KS também são mostrados. Valores de p (p value) menores que 0.1 são geralmente considerados valores de aderência fracos. Mais precisamente, o p value é a probabilidade de obtenção de um conjunto de dados mais inconsistente com a distribuição escolhida do que o conjunto de dados que você realmente obteve. Observação (3): Diferentes testes estatísticos podem rankear as distribuições de forma diferente. Também mudanças na preparação dos dados podem influir no ranking (por exemplo, a quantidade de classes). Na opção Input data do menu Window do Input Analyzer você pode enxergar todos os seus dados da amostra. Na mesma janela Window, na opção Curve Fit Summary são apresentadas as informações sobre a curva escolhida, relacionadas com os dados da amostra. Na mesma janela Window, na opção Fit All Summary é apresentado o ranking das curvas (figura abaixo), ordenado de acordo com o erro quadrático de cada curva empírica e sua respectiva curva teórica. 2.5. Output Analyzer A simulação, em si, além de não otimizar os resultados, nem sequer apresenta soluções. Este trabalho fica sob responsabilidade do modelista e do usuário do modelo. Para se obter conclusões corretas dos resultados da simulação é preciso que os dados, gerados pelo modelo, sejam confiáveis e que sejam corretamente analisados. Harrell & Tumay comentam que existem vários tipos de relatórios de simulação. São eles: • Relatórios de uma única replicação (Mostram o desempenho da rodada de simulação utilizando média e variância.) • Históricos detalhados (Mostram conjuntos de dados e plotagens de observações ocorridas no tempo, por exemplo: medidas do tempo de espera das entidades em uma fila; utilização de um recurso no tempo. Esses outputs são chamados de estatísticas dependente do tempo ou estatística temporal.) • Relatórios relâmpagos (Resumos estatísticos mostrando o estado do sistema em algum instante de tempo) • Relatórios de múltiplas replicações (Apresenta resultados combinados de múltiplas rodadas de simulação. Providencia tratamentos estatísticos para os resultados, como estimativas de erros baseadas em intervalo de segurança, estabelecimento do tempo de warm-up através de média móvel,...) • Comparação de múltiplos cenários (Compara as saídas de diferentes conjuntos de variáveis representativas de cenários da simulação) 2.5.1 Tipos de Output Existem dois tipos de dados de saída: dados observacionais e dados de tempo ponderado. Os relatórios que apresentam dados de observações possuem as seguintes características: • As observações são contadores de ocorrências • As observações possuem, todas, mesmo peso (mesma ponderação) • O resumo estatístico apresenta as observações durante um certo período de tempo Exemplo: Número médio de entidades processadas por hora no sistema. Simplesmente são contadas todas as entidades que deixaram o sistema e divide-se esse número pela quantidade de horas transcorridas. Exemplo: Tempo médio que a entidade permaneceu no sistema. Quando uma entidade adentra o sistema, a mesma é identificada com uma marca de tempo (instante de chegada). Quando esta entidade deixa o sistema subtrai-se do tempo de simulação atual o instante de chegada da mesma. Este resultado é adicionado a um acumulador de tempo. Para se chegar ao tempo médio de sistema basta dividir o valor desse acumulador pelo número de entidades que deixaram o sistema. Os dados de tempo ponderado possuem as seguintes características: • Os valores persistem no tempo (consideram a dinâmica do tempo) • Durante a simulação são registrados e mantidos: o valor atual de cada variável, o instante da última mudança neste valor e o produto valor-tempo acumulado • O resumo estatístico apresenta o valor da variável do tempo ponderado Exemplo: Um exemplo de estatística de tempo ponderado é o número médio de entidades no sistema (em cada instante). Neste caso, toda vez que uma entidade entra ou sai do sistema, o contador é multiplicado pelo tempo transcorrido desde a última mudança. Este produto é adicionado a um acumulador de tempo-entidade. Ao final da simulação a quantidade média de entidades no sistema pode ser calculada pela divisão do acumulador de tempo-entidade pelo tempo de simulação. 2.5.2 Medidas Desejadas (Estatísticas) As medidas de desempenho estão sempre associadas a um dos seguintes elementos da simulação: • Entidade (Entity) • Localização (Location) • Estação (Station) • Fila (Queue) • Recurso (Resource) • Variável (Variable) • Atributo (Atribute) Uma lista de estatísticas, normalmente desejadas, é a seguinte: (1) Estatística Geral da Entidade • Número de entidades, por tipo, que entra em uma estação • Número total de entidades que sai do sistema • Número total de entidades que permanece no sistema • Número médio de entidades no sistema • Tempo médio gasto em fila, processando ou em trânsito (2) Estatística Particular da Entidade • Tempo gasto em cada estação por cada entidade • Tempo de sistema para cada entidade • Tempo gasto na fila, no processamento,..., por cada entidade (3) Estatística Geral de Fila • Número total de entidades que entrou na fila • Tempo médio de fila • Tempo máximo de fila • Tempo mínimo de fila • Quantidade média de entidades na fila • Porcentagem do tempo médio na fila, em relação ao tempo de simulação (4) Estatística Particular da Fila • Conteúdo da fila no tempo • Histograma dos tempos de espera (5) Estatística Geral da Estação • Número total de entidades que entrou em cada estação • Tempo médio gasto por entidade (tempo ocupado/número de entradas) • Utilização (tempo ocupado/tempo disponível) • Percentual de tempo que ficou em operação, disponível, bloqueada, esperando, quebrada, em preparação, ... • Número de setups • Tempo médio de setups (6) Estatística Particular da Estação • Conteúdo no tempo • Tempo que cada entidade gastou na estação • Gráfico de Gantt mostrando as entidades nas estações, no tempo, por tipo (7) Estatística Geral do Recurso • Número de vezes que foi utilizado • Tempo médio de utilização • Porcentagem de utilização, ociosidade, quebra, disponibilidade • Porcentagem de tempo em trânsito (8) Estatística Particular do Recurso • Quantidade utilizada no tempo • Utilização de cada unidade de recurso (9) Estatística de Atributo e Variável • Valor médio • Valor mínimo e máximo • Valor final • Mudanças de valores no tempo • Histograma dos valores É sempre possível customizar os próprios relatórios, utilizando as informações geradas pela simulação. 2.6 Análises Estatísticas dos Resultados da Simulação A simulação, como modelo estocástico, segue a regra RIRO (random input, random output). Se o sistema possui um conjunto de valores aleatórios associados aos seus processos de manufatura, transporte, manutenção, setups, etc, a simulação apresentará um conjunto de resultados randômicos do que poderá acontecer no futuro, caso o sistema opere sob tais condições. Diante disto, é fácil observar que uma única rodada de simulação é inadequada para se obter qualquer estimativa precisa do comportamento esperado do sistema. Para realizar inferências corretas a partir dos resultados da simulação é essencial ter um conhecimento básico da estatística descritiva. Na estatística descritiva, nós trabalhamos com espaço amostral, amostra e quantidade de amostras. É importante que a quantidade de amostras seja suficiente para garantir as inferências. Em outras palavras, é importante estabelecer a quantidade certa de replicações do modelo de simulação (número de rodadas). Por exemplo, se estivermos interessados em determinar o tempo médio gasto pelas entidades na fila, é preciso fazer n replicações da simulação, em condições idênticas de operação, alterando apenas a semente (seed) do gerador de números randômicos. A partir daí é possível estimar a média, a variância, o desvio padrão, etc. Fica claro, também, que o n ideal seria igual a infinito. 2.6.1 Intervalo de Confiança Tendo calculado a média e o desvio padrão, baseado em uma quantidade de amostras de n rodadas, nós poderemos estar interessados em saber quão perto, da média verdadeira, está a média das rodadas. O método utilizado para isso é a estimativa do intervalo de confiança. Um intervalo de confiança é um range (intervalo) no qual nós podemos ter um certo nível de confiança de que a média lá se encontra. Este método é trabalhado mais a frente, neste texto. 2.6.2 Problemas Estatísticos com as Saídas da Simulação Utilizar os métodos padrões para analisar a simulação significa seguir três importantes premissas sobre as observações amostradas. São elas: • As observações são consideradas independentes, de tal forma que não existe correlação entre observações consecutivas; • As observações consideram distribuições idênticas durante toda a duração do processo (são invariantes no tempo); • As observações são normalmente distribuídas. As duas primeiras observações raramente coadunam com as saídas da simulação. As observações são dependentes. Por exemplo, os tempos de espera em uma fila. A primeira entidade que entra no processo encontra a fila vazia (tempo de espera zero). Durante a simulação, caso o processo vá se congestionando, os tempos de espera tendem a crescer. Se o tempo de espera de uma entidade é grande, o tempo da sua sucessora também tende a ser grande. Essas observações são autocorrelacionadas. As saídas da simulação também são não-estacionárias. Não ocorre uma mesma distribuição durante toda a simulação. Por exemplo, em um sistema de serviço (call center, agência de correio, pedágio,...) o comportamento do sistema varia no tempo. Ocorrem períodos de pico, períodos normais e períodos de baixo movimento. A terceira premissa também é violada, uma vez que os tempos de espera em uma fila, por exemplo, tendem a uma distribuição crescente. Para garantir que a saída é normalmente distribuída, é necessário trabalhar com uma grande amostra, onde cada observação, em si, é uma média de um grande número de observações. De acordo com o teorema do limite central, a distribuição das médias de múltiplas amostragens é normalmente distribuída. 2.6.3 Comportamento transiente e comportamento em regime O comportamento do sistema é transiente se não existe constância ou regularidade na flutuação estatística do desempenho das variáveis do sistema. O sistema está em um estado de transição entre um conjunto de condições e outro. Por exemplo, quando o sistema se inicia, ele passa por um estado de ausência de entidades no sistema para outro, com um certa taxa positiva de chegadas no sistema. Uma vez que o sistema absorveu o impacto dessa taxa de chegada, o sistema é dito ter entrado em regime. Durante o período no qual o sistema encontra-se em regime, o comportamento médio estatístico do sistema não se altera no tempo. Uma vez, estando em regime, caso alguma regra de operação, ou a taxa de chegada varie, o sistema volta ao estado transiente. O sistema pode estar no estado transiente por uma das seguintes razões: • O sistema inicia-se vazio e leva um tempo para atingir o estado de regime; • O sistema encontra-se em regime, sofre alteração e atinge um novo estado de regime; • Uma interferência anormal acontece no sistema (uma quebra ou um tempo de setup fora do previsto) e leva o sistema a entrar em regime transiente. Um exemplo de um sistema em estado transiente é um restaurante no qual os tempos de espera tendem a crescer ou diminuir, de acordo com o período do dia (e/ou da semana). A condição do sistema estar em regime não é aquela onde as observações são sempre as mesmas, ou onde as variações nas observações são menores que na condição transiente. Simplesmente significa que todas as observações, no sistema em regime, terão a mesma distribuição. 2.6.4 Sistemas Terminais e Sistemas Não-Terminais A simulação pode ser identificada como sendo Terminal ou Não-Terminal. A diferença entre as duas está na possibilidade de ser definido um comprimento para a simulação. Se um sistema tem claramente definido um instante de início e um instante de término, o sistema é considerado terminal. Caso contrário, é chamado de sistema não-terminal. Exemplos de sistemas terminais podem ser: a produção de uma fábrica que tem um horário de início de turno e um horário de término de turno, onde todas as tarefas do dia são encerradas; um sistema de prestação de serviços que tem um horário de expediente. Simulação terminal possui, normalmente, um estado transiente. Este tipo de simulação freqüentemente repete um ciclo: o sistema inicia vazio, fica ocupado por um período de tempo e termina vazio novamente. Para a simulação terminal é importante estabelecer quantas corridas (replicações) devem acontecer para que os resultados estatísticos tenham consistência. A simulação não-terminal (ou simulação em regime) é aquela na qual não existe um evento ou instante de tempo onde a simulação termina. Isto não significa que a simulação nunca termina, mas que, teoricamente, a simulação pode transcorrer infinitamente sem afetar as saídas (resultados). Para a Simulação não-terminal, o modelista precisa determinar o comprimento da corrida de simulação, que garanta a consistência dos resultados. Exemplos de sistemas não terminais: (1) uma empresa que trabalha em dois turnos, com uma hora de intervalo entre eles. Cada turno inicia seu trabalho a partir do ponto em que parou o turno anterior; (2) sistema de atendimento de emergência em um hospital. 2.7 Output Analyzer para Sistemas Terminais 2.7.1 Construção do Intervalor de Confiança Considere o seguinte quadro, de 10 replicações, onde são apresentados os resultados, medidos nas simulações, da variável de controle “Peças Produzidas”. Número da Replicação 1 2 3 4 5 6 7 8 9 10 Peças Produzidas 93 113 107 103 112 103 112 100 98 105 Deseja-se construir um Intervalo de Confiança para a média diária de Peças Produzidas, de forma que se possa afirmar, com uma confiança estabelecida 1-α, que a verdadeira média da população (µ) encontra-se nesse intervalo. µ = [ x-h, x+h ] Onde: µ: média da população x: estimativa da média populacional h: semi-intervalo (meio comprimento do intervalo de confiança; half-width) Observação: h é a medida de precisão, obtida a partir da amostra (replicações); quanto menor o h, melhor a estimativa da média; h pode ser reduzido aumentando-se a quantidade de observações da amostra; Obtenção de h x= ∑ i xi n Onde n= número de elementos da amostra (no ex. n=10) O semi-intervalo é dado por: h = tn-1, 1- ( α/2) * S(x) O fator tn-1, 1- ( α/2) é obtido da tabela de distribuição t-student. S(x) é uma medida de dispersão dos dados da amostra (replicações) em relação à média x . Ela é calculada da seguinte forma: ____ S(x) = √ S2(x) S2(x’) S (x) = -------n 2 (xi – x)2 S (x’) = ∑ ----------n-1 2 Com os dados do exemplo, temos: A média da amostra x= 104.6 Então S2(x’) = 43.38. Portanto S2(x) = 4.338 e S(x) = 2.08 Considerando um grau de confiança de 95%, significa que o risco (erro) α = 0.05 (5%). Da tabela t-student temos t10-1, 1-( 0.05/2) # t9, 0.975 = 2.262 Finalmente, h = 2.262 * 2.08 # h = 4.7 Portanto o intervalo de confiança que garante, com 95% de certeza, que a média populacional encontra-se nele é: 104.6 ---------------[----------|---------]---------------99.9 109.3 2.7.2 Reduzir o intervalo de confiança Caso deseje-se reduzir o tamanho de h, sabemos que, mantido o grau de confiança, devemos aumentar a amostra. Mas aumentar para quanto? Considere: n1 = tamanho da amostra anterior (no ex. = 10) n2 = novo tamanho da amostra (a ser calculado) h1 = semi-intervalo anterior (no ex. = 4.7) h2 = semi-intervalo desejado (por ex., vamos considerar = 3) A fórmula a ser utilizada é : n2 = [n1 * (h1/ h2)2] No exemplo teremos n2 = 24.6, que podemos aproximar para n2 = 25. Portanto devese rodar o modelo 25 vezes, e repetir o tratamento aqui realizado, checando o novo intervalo de confiança que será gerado. 2.7.3 No Arena/Output Analyzer Módulo Statistics (no Painel Common): a variável de controle deve ser armazenada em um arquivo gerado pelo ARENA, durante as replicações executadas. Este arquivo deve ser criado pelo módulo Statistics (não confundir com Statics). Neste módulo, ao dar ADD na área OUTPUTS abrirá uma caixa secundária de diálogo, onde o usuário deverá escolher o tipo de estatística (Type of Statistics), o nome da variável desejada, o tipo de informação (média, por exemplo) e solicitar que os valores sejam salvos em um arquivo ( Save Observations to a File). O usuário escolhe o nome do arquivo ( por exemplo “SAIDA.DAT”) e o digita entre aspas. Este arquivo conterá todos os valores, da variável de controle, gerados pelas diversas rodadas de simulação. Este arquivo será tratado pelo Output Analyzer. Software Output Analyzer: abrindo o Output Analyzer, escolha NEW e ADD para o arquivo a ser trabalhado (por ex. o SAIDA.DAT). O comando Classical Confidence Interval on Mean solicitará o nome do arquivo e uma informação sobre as Replicações: 1, All, Lumped (uma, todas ou todas misturadas). Escolha Lumped. O usuário estabelecerá o grau de confiança com qual deseja trabalhar (default = 95%) no campo Confidence Level. Feito isso o Output Analyzer mostrará uma tela com o intervalo de confiança desenhado e várias informações textuais (lembre-se que o semi-intervalo de confiança é o valor que aparece na coluna half-width). 2.7.4 Output Analyzer para Sistemas Não-Terminais O objetivo é o mesmo do tratamento anterior: encontrar uma estimativa pontual e um intervalo de confiança para a medida de desempenho escolhida (variável sob controle, variável em estudo, variável a ser tratada estatisticamente). A idéia, nesse caso onde a simulação “não termina”, é realizar uma longa simulação, cuja amostra de dados gerada será subdividida em sub-amostras, consideradas independentes. Essas sub-amostras serão tratadas como se fossem inúmeras replicações, de forma análoga ao caso dos sistemas terminais. Então é preciso saber qual o tamanho dessa “Longa Simulação”. Receita de Bolo: • Executar uma simulação piloto (de preferência, já longa, ou seja com o Length of Replication, do módulo Simulate, grande). • Identificar e excluir a fase transiente inicial (Média Móvel; Moving Average e Batch/Truncate) • Determinar o tamanho do lote mínimo para a independência entre os eventos (Correlograma; Correlogram) • Determinar o tamanho apropriado do lote e o número de lotes necessários à análise final. • Executar novamente a simulação por um tempo que contemple o número de lotes estabelecido; • Analisar o sistema de forma análoga a do sistema terminal (Classical Confidence Interval on Mean). 2.7.5 Output Analyzer $ Moving Average: Neste módulo, o usuário escolhe o nome do arquivo de dados (Data File) a ser tratado (o nome do arquivo foi dado no módulo Statistics, no modelo de simulação, lembra?), e estabelece a quantidade de observações (intervalo da média móvel) desejadas para a média móvel trabalhar. O resultado será um conjunto de dados bem menos disperso, onde será possível visualizar a fase transiente da simulação. Caso ainda continue bastante disperso o gráfico plotado (Plot), basta aumentar o campo Value no Moving Average. $ Batch/Truncate: Determinada a fase transiente, utiliza-se o módulo Batch/Truncate para remover essa fase (quando se deseja trabalhar com o sistema em regime). Basta fornecer o nome do Data File, na área Truncation da caixa de diálogo optar por Time e colocar o instante de término da fase transiente. No último campo da caixa (Save Batch Means in File) escrever o nome do arquivo onde ficará esse novo conjunto de dados truncados ou filtrados (Arquivo.flt). Se o usuário plotar o Arquivo.flt, verificará que a fase transiente foi removida. $ Correlogram: Utilizado para determinar o tamanho do lote mínimo para a independência entre os eventos. Procura-se, portanto, determinar o mínimo lote de observações onde a correlação entre os primeiros e últimos elementos do lote seja próxima de zero. Na opção Correlogram, escolher o Data File (arquivo.flt) a ser tratado, e o Maximum Lags (número de observações que se deseja visualizar no correlograma). A tela mostrará o correlograma e os valores das correlações. Quanto atingir o valor zero (valores trocando de sinal, positivo para negativo, ou vice-versa), anotar a quantidade de observações tratadas até este ponto. É o lote mínimo de observações. Adota-se um fator de segurança: por exemplo, 10. Teremos então: Número de Observações * 10 * tempo associado a uma observação (por exemplo, se estivermos estudando o tempo de sistema de uma entidade, o tempo individual da entidade será igual à média esperada da curva utilizada no Time Between/módulo Arrive). Teremos como resultado o tamanho da simulação de um lote. Estabelece-se a quantidade de lote (por exemplo, 20), multiplica-se pelo tamanho da simulação de um lote e obtém-se o comprimento total da simulação. Executa-se a simulação durante esse tempo total encontrado + tempo transiente calculado anteriormente (colocar o valor no campo length of replication/módulo Simulate). Voltando para o software Output Analyzer, abrir o Batch/Truncate, definir o Data File (arquivo.dat), na área Truncation colocar os parâmetros para eliminar a fase transiente, na área Batches optar por Observations e no campo Size colocar o número de observações do lote mínimo. OK? No Save Batch Means in File, escolher um nome para o arquivo de dados aqui tratado (arquivo.flt). $ Classical Confidence Interval on Means: repetir os mesmos procedimentos adotados no caso dos sistemas terminais. A analogia é que os diversos lotes independentes, originários da única replicação longa (no caso do sistema ser nãoterminal), são tratados como se fossem várias replicações de um modelo de sistema terminal.