Você está na página 1de 807

© 2015, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.


Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser
reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos,
mecânicos, fotográficos, gravação ou quaisquer outros.

Copidesque: Ana Carolina Lins Brandão


Revisão Gráfica: Roberto Mauro Facce
Editoração Eletrônica: SBNigri Artes e Textos Ltda.
Epub: SBNigri Artes e Textos Ltda.

Elsevier Editora Ltda.


Conhecimento sem Fronteiras
Rua Sete de Setembro, 111 – 16o andar
20050-006 – Centro – Rio de Janeiro – RJ – Brasil

Rua Quintana, 753 – 8o andar


04569-011 – Brooklin – São Paulo – SP – Brasil

Serviço de Atendimento ao Cliente


0800-0265340
atendimento1@elsevier.com

ISBN: 978-85-352-7932-0
ISBN (versão eletrônica): 978-85-352-7933-7

Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem
ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses,
solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos
esclarecer ou encaminhar a questão.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou
perdas a pessoas ou bens, originados do uso desta publicação.

CIP-BRASIL. CATALOGAÇÃO-NA-FONTE
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
Chwif, Leonardo
Modelagem e simulação de eventos discretos : teoria & aplicações / Leonardo Chwif,
Afonso C. Medina. – 4. ed. – Rio de Janeiro: Elsevier, 2015.
C489m
4. ed. ISBN 978-85-352-7932-0

1. Pesquisa operacional. 2. Otimização matemática. 3. Métodos de simulação. I. Medina,


Afonso C. (Afonso Celso), 1966-. II. Título.
14- CDD: 519.4
16043. CDU: 519.6
Dedicatória

Às nossas esposas, Andrea e Patricia,


nossas maiores incentivadoras.
Aos nossos pais, Sônia (in memoriam) e
José, Antônio (in memoriam) e Maria
Eugênia, nossos maiores fãs.
Agradecimentos

Nossa esperança é a de que este livro se torne referência geral para o tema, e de antemão
solicitamos seu apoio, leitor, pois esta obra, no caso específico da tecnologia de simulação,
milita em favor da melhoria da produtividade e da qualidade dos sistemas. Não poucos
contribuíram para que este livro chegasse a você, leitor: nossos alunos em particular, ora
engenheiros, também cientistas da computação e administradores que se valem dos
conhecimentos discutidos em vários cursos que demos de Simulação e Pesquisa
Operacional.
Um agradecimento especial ao pesquisador Luis Gustavo Nardin, do Laboratório de
Técnicas Inteligentes da Escola Politécnica da USP, pela valiosa contribuição na seção
“Tendências em simulação”.
Boa parte do processo de elaboração de um livro é dedicado ao debate de ideias entre os
autores e colegas. Foi por essa etapa que contamos com o trabalho generoso e paciente do
amigo Prof. Wilson Inacio Pereira, da Escola de Engenharia Mauá, que também é o
responsável pela revisão técnica do material.
Alguns docentes também colaboraram com o trabalho de revisão e merecem nossa
especial gratidão: Prof. Dr. Eduardo Saliby, da COPPE/UFRJ; Prof. Dr. Alexandre Kawano
do Depto. de Engenharia Mecatrônica da Escola Politécnica da USP; Prof. Dr. João Alberto
Arantes do Amaral, do Centro para Aprendizagem Organizacional; Prof. Dr. Marco Aurélio
de Mesquita, do Depto. de Engenharia de Produção da Escola Politécnica da USP; Prof. Dr.
Miguel Cezar Santoro, do Depto. de Engenharia de Produção da Escola Politécnica da USP;
Prof. Dr. Marco Antonio Brinati, do Depto. de Engenharia Naval da Escola Politécnica da
USP; Prof. Dr. Rui Carlos Botter, do Depto. de Engenharia Naval da Escola Politécnica da
USP; Prof. Dr. Marcos Ribeiro Pereira Barretto, do Depto. de Engenharia Mecatrônica da
USP; Prof. Ray J. Paul, da Universidade de Brunel/UK; Prof. Ricardo Luiz Camargo, da
FIA; Prof. Dr. Antonio Medina Rodrigues, da FFLCH da USP; Prof. Emilson Roveri; e Prof.
Dr. Antonio Carlos Silva de Carvalho.
Os eventuais erros serão – é claro – de nossa total responsabilidade, e creia, leitor,
apreciaríamos sua opinião sobre esta obra, para fugaz elogio (que sempre agrada ao
coração) ou sobretudo para as críticas: estas é que fazem melhorar todo saber.

Afonso Celso Medina


Leonardo Chwif

livrosimulacao@gmail.com

São Paulo, maio de 2014.


Sobre os autores

Leonardo Chwif possui graduação em Engenharia Mecatrônica pela Escola Politécnica


da Universidade de São Paulo (1992), mestrado em Engenharia Mecânica pela
Universidade de São Paulo (1994) e doutorado pela Universidade de São Paulo (1999).
Durante seu doutorado, foi pesquisador pela Brunel University (Reino Unido). É professor
da Escola de Engenharia Mauá, Anhembi Morumbi e Unifieo. Também atua como consultor
de simulação de processos na Simulate Tecnologia de Simulação, onde já desenvolveu mais
de 100 projetos de simulação para empresas de segmentos variados. Possui grande
experiência nas áreas de Manufatura, Logística e Pesquisa Operacional, tendo a simulação
como seu principal foco.
Afonso Celso Medina possui graduação em Engenharia Naval pela Escola Politécnica da
Universidade de São Paulo (1988) e Mestrado em Engenharia Naval e Oceânica pela
Universidade de São Paulo (1996). Foi professor de Métodos de Otimização na Escola
Politécnica da USP e atualmente é consultor de simulação de processos da Simulate
Tecnologia de Simulação e pesquisador do CILIP – Centro de Inovação em Logística e
Infraestrutura Portuária da USP. Tem vasta experiência profissional nas áreas de Logística e
Pesquisa Operacional, atuando principalmente nos seguintes temas: dimensionamento de
terminais, simulação distribuída, planejamento portuário, teoria da localização e simulação
de sistemas.
Prefácio

Há muito a área de simulação carecia de um texto didático, compatível com a nossa


realidade de público e mercado, que fosse adequado tanto aos interessados nos aspectos
conceituais como aos práticos da Simulação de Eventos Discretos.
Sem caírem numa abordagem superficial e sem se comprometerem com programas
comerciais de simulação, os autores desenvolvem os principais conceitos envolvidos num
texto bem organizado, bem redigido e com pitadas de bom humor. Este livro tem um
saudável equilíbrio entre teoria e prática e nos apresenta desde tópicos de caráter mais
técnico, como modelagem, probabilidade e estatística, validação e experimentação, a casos
práticos, descritos de modo agradável.
O texto se aplica a cursos tanto de graduação quanto de pós-graduação nas áreas de
Engenharia – em particular Engenharia de Produção –, de Administração, de Informática e
Computação, e outras afins. Também é adequado a cursos e treinamentos específicos sobre
o assunto, bem como ao estudioso que queira, por conta própria, atualizar e aprofundar seus
conhecimentos sobre Simulação em Eventos Discretos. Outro importante mérito do texto é a
preocupação dos autores em apresentar uma bibliografia relevante e atualizada sobre o
assunto, até mesmo com a disponibilização de área na internet para uma permanente
complementação e atualização do texto.
É, pois, com grande satisfação que saúdo com boas-vindas este útil e esperado livro,
parabenizando os autores pela valiosa contribuição.

Prof. Eduardo Saliby

Coppead/UFRJ
Apresentação

A Simulação de Eventos Discretos é um tema fascinante, e seu interesse é crescente nos


meios empresarial e acadêmico. Não obstante, o que se nota na literatura nacional é a quase
completa indiferença para com obras que, nessa área, possam ser indicadas aos cursos de
graduação e pós-graduação.
Este livro se propõe, portanto, a ser uma adequada referência para o assunto, em
currículos em que a Simulação de Eventos Discretos seja o foco ou o tópico dos conteúdos
programáticos – ou em consultas pessoais carentes de uma linha metodológica adequada a
outros fins profissionais.

Organização do texto
Procuramos abordar a Simulação de Eventos Discretos por uma perspectiva que,
metodologicamente, satisfaça a cada etapa que um projeto de simulação exija para ser bem-
sucedido. Nesse caminho, demos ênfase à modelagem conceitual, assunto por sinal
esquecido em muitas obras, e por isso incluímos, no Capítulo 3, o ACD, que facilita a
representação de modelos de simulação. Tudo em linguagem direta, ilustrando os conceitos
de maneira bem prática, e, se algum humor nos escapou na exposição, confessamos que foi
tático, sem deixar de ter sido, em cada caso e no possível, espontâneo. Ao final de todos os
capítulos, há exercícios de revisão e uma “Leitura Complementar”, para aprofundamento da
matéria vista.
Além dos tópicos clássicos da simulação (modelagem de dados, modelagem conceitual,
verificação, validação e análise de resultados), incluímos capítulos e apêndices
suplementares. Projetos de experimentos e métodos atuais de simulação e otimização são
discutidos no Capítulo 7. No Capítulo 8 há uma série de estudos de casos fundamentados em
problemas reais e/ou retirados da literatura e que abrangem sistemas diversos de produção:
terminal portuário, supermercado, cadeia de suprimentos, atendimentos de emergência,
centrais de atendimento telefônico etc. Ao final do texto, o Capítulo 9 discute outros tipos
de simulação: a Simulação de Monte Carlo, a Simulação de Sistemas Dinâmicos, a
Simulação de Agentes e a Simulação Distribuída, assuntos de interesse para os
profissionais e pesquisadores da área de simulação.
Comentamos no Epílogo (Cap. 10) alguns aspectos não técnicos, mas relevantes, para um
estudo de simulação bem-sucedido, inclusive com a discussão sobre alguns casos de
fracasso e de sucesso que presenciamos ao longo da nossa atuação profissional.
Ao texto principal referem-se os diversos apêndices. Breve revisão de probabilidade e
estatística está no Apêndice I. O Apêndice II apresenta uma introdução à Teoria das Filas,
útil para quem quer se iniciar no estudo da simulação, pois grande parte do material
introdutório à Simulação de Eventos Discretos referencia a Teoria das Filas. O Apêndice III
discute a geração de números aleatórios. O Apêndice IV, com um exemplo de relatório de
simulação, versa sobre a documentação em projetos de simulação. Um exemplo real de
especificação de um modelo de simulação é apresentado no Apêndice V, para referência e
consulta. O Apêndice VI contém tabelas estatísticas úteis à resolução dos exercícios ou
mesmo para uma consulta rápida. As principais distribuições discretas e contínuas estão no
Apêndice VII. Por fim o Apêndice VIII contém respostas a alguns exercícios selecionados.

Público-alvo
Este é um livro que se pode adotar como livro-texto em graduação ou pós-graduação nas
áreas de Engenharia, Ciências da Computação e Administração – seja em disciplinas
específicas de modelagem e simulação, ou em disciplinas mais abrangentes, como Pesquisa
Operacional ou Administração da Produção.
Em cursos com enfoques mais gerenciais, o docente pode omitir o Capítulo 4,
“Implementação computacional do modelo de simulação”, assunto de maior interesse para
turmas de Ciências de Computação. Adotado na íntegra, para uma disciplina específica de
Modelagem e Simulação de Eventos Discretos, aconselhamos uma carga horária de
72 horas, dividida entre teoria e execução de atividades práticas – esta tem sido a nossa
prática do ensino de simulação nos currículos de Engenharia e Administração de Empresas.
Para a pós-graduação, reduz-se a carga horária em virtude da isenção que aí costuma haver
de atividades práticas em sala de aula.

Internet
Este livro possui uma página na internet com material para download e consulta:

http://www.livrosimulacao.eng.br

Todos os exemplos computacionais apresentados no livro estão à disposição na seção de


downloads do site.
a
Alterações da 4 edição

A primeira grande alteração é que, a partir da 4a edição, contamos com a Elsevier como
nossa editora, o que deve ampliar a base de leitores e permitir que o livro continue seu
amadurecimento a cada edição.
Esta quarta edição é uma edição revisada e ampliada. Em relação à 3a edição, foram
realizadas as seguintes alterações:
• No Capítulo 4, na seção referente à construção de modelos computacionais, a linguagem
de programação Pascal foi substituída por uma linguagem mais popular – o Python;
• Ao Capítulo 5, “Verificação e validação”, foi acrescentado o tópico “Níveis de
validação”;
• Ao Capítulo 9 foi acrescida uma nova seção “Tendências em simulação”, comentando
sobre tópicos mais avançados da simulação ainda não popularizados, tais como:
Simulação de Agentes, Simulação Web, Simulação Baseada em Componentes e
Simulação Distribuída;
• Houve uma renumeração dos apêndices e acréscimo de dois novos: o Apêndice II,
contendo um resumo dos principais conceitos e modelos da Teoria das Filas; e o
Apêndice VIII, onde se encontram as respostas de exercícios selecionados de
praticamente todos os capítulos.
Sumário

Capa

Folha de Rosto

Cadastro

Créditos

Dedicatória

Agradecimentos

Sobre os autores

Prefácio

Apresentação
Alterações da 4ª edição

Capítulo 1 – O que é simulação?

1.1. Introdução

1.2. Modelos simbólicos, icônicos ou diagramáticos

1.3. Modelos matemáticos ou analíticos

1.4. Modelos de simulação

1.5. Aplicações da simulação

1.6. A metodologia da simulação

1.7. Exercícios de revisão

Leitura Complementar

Quando devemos utilizar a simulação?


Referências bibliográficas

Alguns textos clássicos de Simulação

Capítulo 2 – Modelagem dos dados de entrada

2.1. Introdução

2.2. Coleta de dados

2.3. Tratamento dos dados

2.3.1 Outliers

2.3.2. Análise de correlação

2.3.3. Inferência

2.4. Testes de aderência: os dados se ajustam à distribuição escolhida?

2.4.1. Teste do qui-quadrado


2.4.2. Teste de Kolmogorov-Smirnov

2.4.3. Qual a melhor distribuição?

2.5. Utilizando software de ajuste de dados (fitting): o que é p-value?

2.6. Outras formas de modelagem de dados

2.6.1. Modelagem de dados quando não temos dados

2.6.2. Utilização de séries históricas – trace files

2.7. Exercícios de revisão

Leitura Complementar

Sete hábitos de sucesso na modelagem de dados

Referências bibliográficas

Capítulo 3 – Criação do modelo conceitual


3.1. Abstração e modelos abstratos

3.2. Construção de modelos conceituais –

3.3. A simulação manual e o método das três fases

3.4. Outras dinâmicas de simulação

3.5. Um pouco mais sobre o ACD

3.6. Um pouco de visão de processos

3.7. Especificação de modelos de simulação

3.8. Exercícios de revisão

Leitura Complementar

Modelos de simulação: complicar ou descomplicar?

Referências bibliográficas
Capítulo 4 – Implementação computacional do modelo de simulação e
softwares de simulação

4.1. Implementação de modelos de simulação

4.2. Um pouco de história...

4.3. Linguagem de programação vs. linguagem de simulação vs.


simulador?

4.3.1. Linguagem de programação

4.3.2. Linguagem de simulação

4.3.3. Simuladores

4.4. Exercícios de revisão

Leitura Complementar

Softwares de simulação: o que é importante?


Referências bibliográficas

Capítulo 5 – Verificação e validação de modelos de simulação

5.1. Introdução

5.2. Verificação e validação

5.3. Técnicas de verificação

5.4. Técnicas de validação

5.4.1. Níveis de validação

5.5. Validade dos dados

5.6. Exercícios de revisão

Leitura Complementar

Uma técnica de verificação e validação de modelos de simulação quando


não se dispõe de dados reais

Referências bibliográficas

Capítulo 6 – Dimensionamento de corridas e análise dos resultados de um


modelo de simulação

6.1. Introdução

6.2. Regime transitório vs. regime permanente

6.3. Simulação terminal vs. simulação não terminal

6.4. Escolhendo as medidas de desempenho adequadas

6.5. Qual a diferença entre replicação e rodada?

6.6. Você, realmente, confia nos resultados?

6.7. Análise dos dados de saída: sistemas terminais


6.7.1. Estabelecer as medidas de desempenho adequadas

6.7.2. Escolher a confiança estatística e a precisão desejada

6.7.3. Construir a amostra-piloto e estimar o intervalo de confiança

6.7.4. Determinar o número de replicações necessárias

6.7.5. Rodar o modelo novamente

6.7.6. Calcular o novo intervalo de confiança

6.8. Análise dos dados de saída: sistemas não terminais

6.8.1. Estabelecer as condições iniciais do sistema próximas daquelas


encontradas em regime permanente

6.8.2. Rodar o modelo por um tempo de simulação longo

6.8.3. Eliminar dos dados de saída todos os valores gerados durante o período
de aquecimento ou “warm-up”
6.8.4. Estabelecer as medidas de desempenho adequadas

6.8.5. Escolher a confiança estatística e a precisão desejadas

6.8.6. Identificar o período de aquecimento (warm-up)

6.8.7. Determinar o tempo de simulação

6.8.8. O tempo de processamento é muito longo: criar lotes e construir os


intervalos de confiança

6.9. Como comparar os resultados de alternativas simuladas?

6.9.1. Caso 1: alternativas com o mesmo número de replicações

6.9.2. Caso 2: amostras de tamanhos diferentes

6.10. Exercícios de revisão

Leitura Complementar
A técnica da redução da variância

Referências bibliográficas

Capítulo 7 – Projeto de experimentos e otimização

7.1. Introdução

7.2. Noções de Projeto de Experimentos

7.2.1. Conceitos fundamentais: fatores, níveis, respostas e espaço de


combinações

7.2.2. Projeto de experimentos fatoriais 2k completo

7.3. Projeto de Experimentos: um caso prático

7.4. Simulação e Otimização

7.5. Simulação e Otimização: um caso prático


7.6. Simulação e Otimização: softwares comerciais

7.7. Integração entre Projetos de Experimentos e a Simulação e


Otimização

7.8. Exercícios de revisão

Referências bibliográficas

Capítulo 8 – Estudo de casos

Leitura Complementar

Caso real de um projeto de simulação

Referências bibliográficas

Capítulo 9 – Tópicos adicionais em simulação

9.1. Introdução
9.2. Simulação de Monte Carlo

9.3. Introdução à Simulação de Sistemas Dinâmicos

9.4. Sistemas dinâmicos: diagrama de laços causais

9.5. Sistemas dinâmicos: construção do modelo

9.6. Tendências em simulação

9.6.1. Simulação Baseada em Agentes

9.6.2. Simulação Web e Simulação Baseada em Componentes

9.6.3. Simulação Distribuída

9.7. Exercícios de revisão

Referências bibliográficas

Capítulo 10 – Epílogo
10.1. Introdução

10.2. O sucesso e, às vezes, o fracasso

Referências bibliográficas

Apêndice I – Revisão de probabilidade e estatística

I.1. Espaço amostral

I.2. Propriedades básicas da probabilidade

I.3. Probabilidade condicional e independência

I.4. Variáveis aleatórias

I.5. Variáveis aleatórias discretas

I.5.1. Função probabilidade e função de repartição

I.5.2. Média e variância


I.6. Variáveis aleatórias contínuas

I.6.1. Função densidade de probabilidade e função de repartição

I.6.2. Média e variância

I.7. Estimação de parâmetros de funções: o método da máxima


verossimilhança

Referências bibliográficas

Apêndice II – Introdução à Teoria das Filas

II.1. Conceitos fundamentais

II.2. Fórmula de Little: a fórmula geral das filas

II.3. Expressões analíticas para alguns modelos clássicos da Teoria das


Filas

II.4. Análise econômica de filas


Referências bibliográficas

Apêndice III – Geração de números aleatórios

III.1. Métodos para geração de números aleatórios

III.2. Testes de aleatoriedade

III.3. Geração de variáveis aleatórias contínuas

III.4. Geração de variáveis aleatórias discretas

Referências bibliográficas

Apêndice IV – Documentação do projeto e elaboração de um relatório de


simulação

IV.1. A documentação do projeto de simulação

IV.2. O relatório técnico


Referências bibliográficas

Apêndice V – Especificação do modelo de simulação

Apêndice VI – Tabelas

Apêndice VII – Distribuições estatísticas

VII.1. Distribuições discretas

VII.2. Distribuições contínuas

Apêndice VIII – Respostas de exercícios selecionados

Notas
Capítulo 1

O que é simulação?
1.1. Introdução
A palavra “simulação” possui diversos significados; destes, apresentamos alguns,
extraídos do Houaiss:1
1. Falta de correspondência com a verdade, dissimulação, fingimento, disfarce;
2. Imitação do funcionamento de um processo por meio do funcionamento de outro;
3. Teste, experiência, ensaio.

Obviamente, para este livro, “simulação” tem um significado mais técnico e específico
do que estes relacionados. Mesmo considerando que não estamos discutindo o termo em seu
sentido lato (ou seja, amplo), há ainda certo desencontro em torno dessa “palavra mágica”.
Cabe aqui uma primeira classificação. O termo “simulação” pode ser classificado em
duas grandes categorias: a simulação computacional e a simulação não computacional. A
simulação computacional, objeto de estudo deste livro, é aquela que necessita de um
computador para ser realizada. A simulação não computacional, como o próprio nome diz, é
aquela que não necessita de um computador para ser realizada; por exemplo, um projetista
utilizando um protótipo em escala reduzida de uma aeronave em um túnel de vento. O
objetivo do projetista é simular qual seria o comportamento da aeronave real a partir do
comportamento exibido pelo protótipo no túnel de vento. Este livro discutirá, ao longo dos
seus capítulos, a modelagem e a Simulação de Eventos Discretos, que dependem
intrinsecamente de um computador digital. Portanto, quando nos referirmos à palavra
“simulação”, estaremos nos referindo especificamente à simulação computacional.
Usualmente os textos clássicos de simulação fornecem uma série de definições do que é
simulação. Para não tornarmos as coisas muito repetitivas, faremos o inverso: discutiremos
o que a simulação não é, baseados no que o senso comum acha sobre o termo:
• A simulação não é uma bola de cristal. A simulação não pode prever o futuro. Se
pudesse, provavelmente nós não estaríamos escrevendo este livro – estaríamos
simulando, por exemplo, as corridas do Jockey Club para apostarmos no cavalo vencedor
do próximo páreo. O que a simulação pode prever, com certa confiança, é o
comportamento de um sistema baseado em dados de entradas específicos e respeitado um
conjunto de premissas.
• A simulação não é um modelo matemático. Embora possamos utilizar fórmulas
matemáticas em um modelo de simulação, não existe uma “expressão analítica fechada”
ou um conjunto de equações que, fornecidos os valores de entrada, fornecem resultados
sobre o comportamento do sistema a partir de uma forma analítica direta. Enfim, a
simulação não pode ser reduzida a um simples cálculo ou a uma fórmula matemática.
• A simulação não é uma ferramenta estritamente de otimização. A simulação é, na
verdade, uma ferramenta de análise de cenários. Mais adiante, no Capítulo 7,
discutiremos como a simulação pode ser combinada com algoritmos de otimização, mas a
simulação por si só não é uma ferramenta de otimização capaz de identificar uma solução
ótima.
• A simulação não substitui o pensamento inteligente. Segundo o princípio SINSFIT
(Simulation Is No Substitute For Intelligent Thinking), pregado por alguns autores
renomados da área, a simulação não pode substituir o ser humano no processo de tomada
de decisão.
• A simulação não é uma técnica de último recurso.2 No passado, a simulação era
considerada uma técnica de último recurso, que deveria ser utilizada quando “todas as
técnicas possíveis falhassem”. Atualmente, no entanto, a simulação é uma das técnicas
mais utilizadas na Pesquisa Operacional e na Ciência da Administração, como podem
comprovar várias pesquisas realizadas em campo (LAW;KELTON, 1991).
• A simulação não é uma panaceia. Corroborada pelo pensamento de Harrel e Tumay
(1995), a simulação se aplica a uma classe de problemas bem específicos aos quais se
adapta bem. (Para mais detalhes, consultar, ao final deste capítulo, a Leitura
Complementar: “Quando devemos utilizar a simulação?”)

Existem ainda vários termos relacionados à simulação, e, para complicar um pouco mais,
vários tipos de simulação. Quando pensamos na simulação ou em simular algo, queremos
obviamente simular algum sistema. Mas o que é um sistema? Segundo Forrester (1968),
sistema é um agrupamento de partes que operam juntas, visando um objetivo em comum.
Conforme a definição de Forrester, um sistema sempre pressupõe uma interação causa-
efeito entre as partes que o compõem. Para que tais partes e, principalmente, para que as
interações entre essas partes sejam identificadas, o objetivo do sistema deve ser conhecido
com clareza. Na Figura 1.1 vemos um sistema que é composto por uma queijeira (A), um
queijo (B) e uma faca (C). Um rato rodeando esse sistema faz ou não parte dele? A resposta
depende do que pretendemos analisar. Se estivermos preocupados apenas com a mecânica
do sistema, ou seja, o corte do queijo sobre a queijeira, podemos eliminar o rato desse
sistema, pois ele não afetará o corte do queijo; no entanto, se pretendemos estudar o
desenvolvimento de bactérias no queijo, tanto a queijeira quanto a faca quanto o rato podem
ser igualmente importantes e devem ser considerados como parte do sistema. Naturalmente,
alguma pessoa deverá fazer parte desse sistema, já que todo esse processo deve se dar de
forma manual (afinal, alguém deve cortar o queijo...).

Figura 1.1 – Sistema composto por uma queijeira, um queijo, uma faca (e um rato).

Usualmente, quando imaginamos um sistema, quase sempre associamos nosso pensamento


a um sistema real, que existe fisicamente. Ora, poderíamos também simular um sistema
hipotético, que não existe na realidade. Embora o processo de validação3 seja mais difícil
para um sistema não existente, é viável e comum, na prática, a construção de modelos de
simulação de sistemas hipotéticos ou imaginários.
Mas o que é um modelo? E, mais especificamente, o que é um modelo de simulação?
Dado um sistema (ou pelo menos como nós entendemos esse sistema), podemos construir
uma representação simplificada das diversas interações entre as partes desse sistema (Fig.
1.2). Um modelo é, assim, uma abstração da realidade, que se aproxima do verdadeiro
comportamento do sistema, mas sempre mais simples do que o sistema real. Por outro lado,
se o modelo construído apresenta uma complexidade maior do que a do próprio sistema,
não temos um modelo, mas sim um problema. Isso porque a intenção principal da
modelagem é capturar o que realmente é importante no sistema para a finalidade em
questão. Se o modelo for tão ou mais complicado do que a realidade, para que um modelo?
Por exemplo, em um sistema formado por uma linha de montagem de automóveis, com
máquinas e operadores, é irrelevante saber a cor do sapato do operário se estamos
preocupados com a quantidade de automóveis produzida no mês.
No Capítulo 3, discutiremos melhor o processo de modelagem e sua simplificação, mas,
por ora, vamos distinguir as três categorias básicas de modelos: simbólicos, matemáticos e
de simulação.
1.2. Modelos simbólicos, icônicos ou diagramáticos
Um modelo denominado simbólico (ou icônico ou diagramático) é composto por
símbolos gráficos que representam um sistema de maneira estática, por exemplo, uma “foto”
(sem se considerar o seu comportamento no tempo). Um fluxograma de processo pode ser
considerado como um modelo simbólico. As grandes limitações desse tipo de modelo, além
de sua representação estática do sistema, são a falta de elementos quantitativos (medidas de
desempenho do sistema, por exemplo) e a dificuldade de se representarem muitos detalhes
de um mesmo sistema. O modelo simbólico é utilizado principalmente na documentação de
projetos e como ferramenta de comunicação. A Figura 1.3 ilustra o modelo simbólico
representado por um fluxograma do processo de atendimento de chamadas telefônicas
realizado pelas unidades de resgate do Corpo de Bombeiros.
Figura 1.2 – Processo de modelagem de um sistema real ou de um sistema imaginário.
1.3. Modelos matemáticos ou analíticos
Os modelos matemáticos (ou analíticos) podem ser identificados como um conjunto de
fórmulas matemáticas, como os modelos de programação linear ou os modelos analíticos da
Teoria das Filas.4 Na sua maioria, esses modelos são de natureza estática (o que não é o
caso da Teoria das Filas) e não apresentam soluções analíticas para sistemas complexos,
devendo-se utilizar hipóteses simplificadoras. Por outro lado, devido à sua natureza, a
solução é rápida e exata (quando existe solução analítica). Considere, por exemplo, um
sistema de fila única, com disciplina FIFO,5 como o representado na Figura 1.4.
Figura 1.3 – Modelo simbólico: fluxograma do atendimento de unidades de resgate do Corpo de Bombeiros
(baseado em Souza, 1996).

Os tempos entre chegadas sucessivas de pessoas no sistema são exponencialmente


distribuídos, e os tempos de atendimento na mesa (ou servidor) também seguem uma
distribuição exponencial. Sendo ρ a razão entre a taxa média de pessoas que chegam ao
sistema e a taxa média de pessoas atendidas no servidor, sabe-se, pela Teoria das Filas
(Apêndice II), que o número médio de pessoas aguardando em fila, Lf , pode ser estimado
pela seguinte expressão:

(1.1)
Figura 1.4 – Sistema de fila única com apenas um servidor.

Para o sistema da Figura 1.4, portanto, representamos o comportamento de um parâmetro


importante do sistema, o número médio de pessoas em fila, através de um modelo
matemático. O que ocorreria com o número médio de pessoas na fila, por exemplo, se a
disciplina de atendimento não fosse mais FIFO, e sim, ao contrário, uma disciplina que
priorizasse a idade das pessoas (os mais velhos são atendidos primeiro)? Neste caso, a
Teoria de Filas não fornece um modelo matemático pronto, e, muito provavelmente, teremos
que construir um modelo de simulação. Na Leitura Complementar, ao final deste capítulo,
faremos um comparativo mais detalhado entre a simulação e a Teoria das Filas.
1.4. Modelos de simulação
Os sistemas reais geralmente apresentam uma maior complexidade, devido,
principalmente, à sua natureza dinâmica (que muda seu estado ao longo do tempo) e à sua
natureza aleatória (que é regida por variáveis aleatórias). Um modelo de simulação
consegue capturar com mais fidelidade essas características, procurando repetir em um
computador o mesmo comportamento que o sistema apresentaria quando submetido às
mesmas condições de contorno.
O modelo de simulação é utilizado particularmente como uma ferramenta para se obter
respostas a sentenças do tipo: “O que ocorre se...”, por exemplo:
• O que ocorre se adicionarmos um terceiro turno de produção?
• O que ocorre se houver um “pico de demanda de 30%”?
• O que ocorre se reduzirmos nossa equipe de manutenção em duas pessoas?
• O que ocorre se adquirirmos um novo equipamento?

Note que a lista de alternativas para esse tipo de pergunta pode ser infinita, o que leva à
conclusão de que um modelo de simulação pode ser capaz de analisar diversos aspectos do
sistema, ou melhor, todos os aspectos do sistema de interesse. Por outro lado, nem tudo é um
mar de rosas: construir modelos de simulação pode se tornar uma tarefa difícil, pela própria
natureza do processo; consequentemente, leva-se mais tempo para a obtenção do resultado
desejado.
A simulação computacional pode ainda ser classificada em três categorias básicas:
Simulação de Monte Carlo, Simulação Contínua e Simulação de Eventos Discretos. A
Simulação de Monte Carlo utiliza geradores de números aleatórios para simular sistemas
físicos ou matemáticos, nos quais não se considera o tempo explicitamente como uma
variável. Essa simulação é particularmente útil para a solução de problemas matemáticos
complexos que surgem no Cálculo Integral, por exemplo.
Já a Simulação Contínua e a Simulação de Eventos Discretos levam em consideração as
mudanças de estado do sistema ao longo do tempo. A Simulação Contínua é utilizada para
modelar sistemas cujo estado varia continuamente no tempo. Considere, por exemplo, uma
xícara de chá quente colocada à temperatura ambiente (Fig. 1.5). O fenômeno do
resfriamento do chá é contínuo no tempo, e o seu estudo pode ser mais bem conduzido por
uma Simulação Contínua. A Simulação Contínua utiliza-se de equações diferenciais para o
cálculo das mudanças das variáveis de estado ao longo do tempo. Por outro lado, a
Simulação de Eventos Discretos é utilizada para modelar sistemas que mudam o seu estado
em momentos discretos no tempo, a partir da ocorrência de eventos. A preparação da xícara
de chá do exemplo anterior envolve três eventos (Fig. 1.5): (A) colocação da água quente na
xícara, (B) colocação do chá na água quente e (C) disponibilização do chá. Note que cada
evento ocorre em instantes determinados no tempo. A Simulação de Eventos Discretos,
como o próprio nome diz, é orientada por eventos: o relógio de simulação sempre indica um
instante em que um evento acontece (colocação da água, colocação do chá e
disponibilização do chá). Retomaremos este conceito no Capítulo 3, quando apresentarmos
a simulação manual. O Capítulo 9 discute a Simulação de Monte Carlo e a Simulação
Contínua (também conhecida como Simulação de Sistemas Dinâmicos).
Em alguns casos raros, pode ser necessário construir um modelo de simulação que
compreenda simultaneamente aspectos das simulações contínuas e discretas; nesses casos, a
simulação é denominada simulação combinada ou híbrida (PRITSKER, 1995).
A partir deste ponto, a menos que informado o oposto, sempre que utilizarmos a palavra
“simulação”, estaremos nos referindo à Simulação de Eventos Discretos.
1.5. Aplicações da simulação
O campo de aplicação da simulação é muito amplo. Simplificadamente, podemos dividir
as áreas de aplicação em dois grandes setores: manufatura e serviços. Alguns bons
exemplos de aplicações da simulação na área de serviços estão em:
• Aeroportos e portos. É um campo que possibilita alta aplicabilidade da simulação. A
título de ilustração, em um aeroporto é possível fazer uma simulação para dimensionar o
número de postos de check-in necessários ou mesmo para dimensionar um sistema
completo de transporte de bagagens. Em uma operação portuária, por exemplo, é possível
verificar se o número de equipamentos de movimentação de materiais e homens é
suficiente para carregar e descarregar um determinado número de navios em um certo
tempo estipulado;
• Bancos. Nesse caso, a simulação pode ser utilizada para verificar qual é a melhor política
de abertura e fechamento de caixas, o número de caixas automáticos necessários, estudar
problemas de layout, determinar o tempo máximo de espera em fila etc.;
• Cadeias logísticas. Nesse segmento, a simulação pode ser utilizada para determinar qual
deve ser a melhor política de estocagem, transporte e distribuição, desde a origem das
matérias-primas, passando pela fabricação até o consumidor final;
Figura 1.5 – Evolução dos estados na Simulação de Eventos Discretos, da preparação de uma xícara de chá, e na
Simulação Contínua, do estudo da temperatura do chá ao longo do tempo.

• Call centers ou centrais de atendimento. Esse é outro segmento em que a simulação pode
ser plenamente aplicada. A simulação em um call center poderá determinar qual a melhor
configuração de uma ilha de atendimento, qual o número ideal de postos de atendimento
necessários em uma determinada hora do dia para garantir um certo nível de serviço,
quais equipamentos de automação de call centers devem ser utilizados etc.;
• Escritórios ou BPR (Business Process Reengineering). A simulação pode ser aplicada
para determinar qual seria o melhor fluxo de processo em um escritório, uma repartição
pública ou um cartório. Muitas vezes, esse segmento é também denominado Business
Process ou BP, em analogia aos processos de manufatura aplicados aos negócios;
• Hospitais. A área da saúde é um segmento em que a simulação pode e vem sendo
frequentemente aplicada, para estudar o comportamento de UTIs, o dimensionamento de
ambulâncias, testes de políticas de transplantes de órgãos etc.;
• Parques de diversões. Outro segmento de serviços ligado ao entretenimento. Nesse caso,
uma simulação pode ser útil na verificação dos tempos de espera em atrações, na
distribuição física das atrações no parque etc.;
• Restaurantes e cadeias de fast-food. O segmento de bares e restaurantes também pode se
beneficiar da tecnologia de simulação, utilizando-a para verificar seus tempos de espera,
de utilização de mesas, capacidade da cozinha etc.;
• Supermercados. Os supermercados são um segmento interessante para aplicar a
simulação, pois é possível decidir qual a melhor política de abertura de caixas, a relação
entre caixas rápidos e normais, o tamanho ideal do estacionamento etc.;

A área de manufatura, depois da área militar, é o segundo maior campo de aplicação da


simulação. A simulação pode ser aplicada em vários segmentos da manufatura, tais como:
• Sistemas de movimentação e armazenagem de materiais: esteiras transportadoras, AGVS,
AS/RS, power and free conveyors (para um mais detalhes sobre sistemas de
movimentação de materiais, ver Groover, 2000, Capítulos 9, 10 e 11);
• Linhas de montagem;
• Células automatizadas;
• Problemas de programação da produção;
• Análise de estoques e “Kanban”.

A simulação pode ser aplicada, ainda, num subsegmento da manufatura denominado


“logística interna”, como os projetos de sistemas de expedição, cross-docking e
movimentação interna de armazéns.
1.6. A metodologia da simulação
Após definirmos que para a análise de um dado sistema a simulação é mais adequada,
devemos seguir certos passos, a fim de que o estudo de simulação seja bem-sucedido. Esses
passos ou processos são conhecidos na literatura como “metodologias de simulação” ou
“ciclos de vida de um modelo de simulação” (LAW; MCCOMAS, 1991).
A construção de um programa de computador, que, para muitos leigos, é a própria
simulação, é apenas uma dentre as inúmeras atividades de um estudo de simulação.
Basicamente, o desenvolvimento de um modelo de simulação compõe-se de três grandes
etapas (Fig. 1.6):
• Concepção ou formulação do modelo;
• Implementação do modelo;
• Análise dos resultados do modelo.

Na primeira etapa (ou fase), “concepção” (Fig. 1.6), o analista de simulação deve
entender claramente o sistema a ser simulado e os seus objetivos, através da discussão do
problema com especialistas. Deve-se decidir com clareza qual será o escopo do modelo,
suas hipóteses e o seu nível de detalhamento. Os dados de entrada também são coletados
nesta fase (Cap. 2). Não se pode negar a importância de se ter dados adequados para
alimentar o modelo, sendo que a expressão GIGO (garbage-in, garbage-out6), muito
aplicada na Engenharia de Software, também é aplicável aos modelos de simulação. No
entanto, é importante ressaltar que o modelo é que deve dirigir a coleta de dados, e não o
contrário (PIDD, 2000). Finalizada a etapa de concepção, o modelo que está na mente do
analista (modelo abstrato) deve ser representado de acordo com alguma técnica de
representação de modelos de simulação, a fim de torná-lo um modelo conceitual, de modo
que outras pessoas envolvidas no projeto possam entendê-lo (Cap. 3).
Na segunda etapa, “implementação” (Fig. 1.6), o modelo conceitual é convertido em um
modelo computacional através da utilização de alguma linguagem de simulação ou de um
simulador comercial. Pode-se, ainda, codificar o modelo de simulação em uma linguagem
de programação geral, como C ou Pascal, mas isso é altamente desaconselhável, devido ao
tempo que será despendido na programação de diversas rotinas, já existentes em
simuladores comerciais (Cap. 4). Com o avanço tecnológico dos simuladores atuais, a etapa
de implementação (ou codificação) já não consome tanto tempo quanto no passado (alguns
autores sugerem que a implementação é responsável pelo consumo de 20% a 30% do tempo
total de um estudo típico de simulação). O modelo computacional implementado deve ser
comparado com o modelo conceitual, com a finalidade de avaliar se a sua operação atende
ao que foi estabelecido na etapa de concepção. Para a validação computacional, alguns
resultados devem ser gerados, observando se o modelo é uma representação precisa da
realidade (dentro dos objetivos já estipulados). O assunto “verificação e validação” de
modelos de simulação é bastante extenso, por isso, voltaremos a discuti-lo no Capítulo 5.
Figura 1.6 – Metodologia de simulação (CHWIF, 1999).

Na terceira etapa, “análise” (Fig. 1.6), o modelo computacional está pronto para a
realização dos experimentos, dando origem ao modelo experimental ou modelo
operacional. Nesta etapa, são efetuadas várias “rodadas” do modelo, e os resultados da
simulação são analisados e documentados. A partir dos resultados, conclusões e
recomendações sobre o sistema podem ser geradas. Caso necessário (se o resultado da
simulação não for satisfatório), o modelo pode ser modificado, e esse ciclo é reiniciado
(Cap. 6).
As etapas dispostas na Figura 1.6 não devem ser interpretadas em uma sequência linear.
Em um estudo prático, podem ocorrer diversas iterações e realimentações no processo, à
medida que o entendimento do problema muda. De fato, Paul, Eldabi e Kuljis (2003)
comentam que todo esse procedimento sistemático pode ir por água abaixo se o problema
não for bem entendido e identificado, levando a resultados da simulação completamente
errôneos. Robinson (2004) enfatiza a não linearidade de um estudo de simulação,
lembrando que essa não linearidade deve ser considerada, embora a totalidade dos livros
de simulação (e este não é exceção!) apresente, para fins didáticos, etapa por etapa, como
se elas fossem “estanques”. A melhor maneira é imaginar que o projeto de simulação
desenvolve--se em forma de espiral, em que as etapas são repetidas na sequência
apresentada na Figura 1.6 até que, entre uma iteração e outra, não existam mais diferenças
nos resultados de cada etapa. Essa situação é particularmente comum em projetos de
sistemas novos, dos quais não se dispõe de dados reais.
1.7. Exercícios de revisão
1. Procure na internet algumas definições para “simulação” e verifique, com base nas
discussões realizadas aqui, se elas apresentam algumas imperfeições.

2. Para os sistemas relacionados a seguir, qual simulação é mais adequada para a sua
representação: a Simulação de Eventos Discretos, a Simulação Contínua, ou ambas?
Justifique intuitivamente cada resposta.
a) O consumo de um pneu de um carro de Fórmula 1 durante a corrida.
b) O estoque de válvulas do motor de uma equipe de Fórmula 1.
c) O processo de atendimento em um bar, desde a chegada do cliente até o pagamento da
conta.
d) O processo de compra de um produto através da internet, desde a seleção do produto até
a sua entrega ao cliente.
e) O processo de carregamento de um navio porta-contêiner no porto.
f) O crescimento de uma árvore.
g) O processo de carregamento de um caminhão de transporte de gasolina em um terminal
de abastecimento de uma refinaria.
h) Os níveis populacionais de lagostas no litoral brasileiro.

3. A Esquadrilha Abutre está perseguindo o pombo-correio Doodle. O avião projetado por


Klunk (sim, aquele que falava: Ia blu plá rrrrmmm pombo!) está em perseguição ao
pombo utilizando um radar capaz de identificar sua localização a cada cinco segundos.
Assim que o pombo é localizado, o avião muda sua trajetória em direção a ele. O pombo
Doodle é capaz de realizar manobras evasivas a qualquer instante; contudo, só pode olhar
a posição do avião a cada quatro segundos. Na primeira identificação do radar, o pombo
está a 100 m do avião, no mesmo plano e olhando para a frente do avião. Considere que a
velocidade do avião é igual a 90 m/s, e a do pombo é igual a 30 m/s.
a) Qual o tipo de simulação mais adequado para esse sistema?
b) Construa um fluxograma representando a simulação do sistema. (Atribua as condições
iniciais que você identificar como mais adequadas).
c) Construa, a partir do fluxograma obtido no item anterior, um programa de computador
para representar o sistema. Elabore e teste algumas táticas evasivas diferentes para o
pombo. Qual foi a melhor tática?
d) Você conseguiria elaborar táticas mais eficientes para a Esquadrilha Abutre?

4. Leia o histórico da simulação, retirado do livro Simulation with Arena (KELTON;


SADOWSKI, R.; SADOWSKI, D., 1998), e discuta por que a simulação é a técnica mais
aplicada atualmente pela Pesquisa Operacional.7 8
Nas décadas de 1950 e 1960, a simulação era uma ferramenta muito cara e
especializada, e só era utilizada por grandes corporações, pois exigia um grande
investimento de capital. Usuários típicos de simulação eram encontrados nas
indústrias aeroespaciais e de aço. Essas organizações tinham grupos de seis a 12
pessoas, a maioria com doutorado, que iriam desenvolver modelos de simulação
grandes e complexos, utilizando as linguagens de programação disponíveis, como o
FORTRAN. Estes modelos rodariam em grandes mainframes,8 com um custo de
processamento que variava de 600 a 1.000 dólares a hora.
A utilização da simulação tal como conhecemos iniciou-se na década de 1970. Os
computadores tornavam-se mais velozes, mais baratos, e a simulação era
descoberta pela indústria de grande porte. No entanto, a simulação nunca era
considerada até que ocorresse um desastre. Ela se tornou uma possibilidade para
muitas companhias, mais precisamente as indústrias automotiva e de base, para
determinar as razões da ocorrência dos desastres e, algumas vezes, determinar os
culpados. Ainda durante essa época, a simulação também era utilizada para fins
acadêmicos, como parte dos currículos de Engenharia Industrial e Pesquisa
Operacional. Seu crescimento no uso industrial fez com que as universidades
ensinassem mais amplamente a simulação. Na mesma época, a simulação começou a
alcançar programas de Administração que lidavam com técnicas quantitativas,
aumentando o número e tipos de estudantes e pesquisadores expostos ao seu
potencial.
Durante a década de 1980, a simulação começou a estabelecer suas raízes na
Administração. Isso foi auxiliado em grande parte pela introdução do PC
(computador pessoal) e da animação. Embora a simulação ainda fosse muito
utilizada na análise de sistemas que falhavam, muitas pessoas requisitavam a
simulação antes do início de uma produção. Ao final da década de 1990, o valor da
simulação foi reconhecido por inúmeras companhias grandes, e muitas delas
fizeram da simulação um requisito indispensável para a aprovação de quantias
elevadas. No entanto, a simulação não tinha uso geral e raramente era utilizada por
pequenas empresas.
A simulação começou realmente a maturar no início da década de 1990. Várias
empresas pequenas abraçaram essa ferramenta e começaram a utilizá-la nos
primeiros estágios de projetos – nos quais poderia haver maior impacto. Melhor
capacidade de animação, facilidade de uso, computadores mais rápidos, maior
integração com outros pacotes e o surgimento dos simuladores ajudaram a
simulação a se tornar uma ferramenta padrão em muitas companhias. Embora os
executivos admitam que a simulação possa adicionar valor às empresas, ela ainda
não se tornou uma ferramenta padrão que pode ser encontrada no computador de
qualquer um. A maneira como a simulação é utilizada tem mudado: era aplicada,
anteriormente, na fase de projeto, com frequência atualizada quando eram
implantadas mudanças operacionais. Isso possibilitou um modelo vivo de simulação
que pode ser utilizado para análise dos sistemas muito rapidamente. A simulação
tem invadido, também, a área de serviços, na qual é aplicada a muitas áreas não
tradicionais.
Leitura Complementar

Quando devemos utilizar a simulação?


Como discutido anteriormente, a simulação não é uma panaceia; em muitos casos, ela não
deve ser aplicada. Mas, quando devemos utilizar a simulação em detrimento de outras
ferramentas de análise de sistemas? Para respondermos a essa questão, devemos,
primeiramente, enunciar alguns métodos para análise de sistemas:
• Contas de padeiro. São os pequenos cálculos que fazemos, geralmente baseados em média
e valores aproximados;
• Planilhas eletrônicas (Excel, Gnumeric, Lotus etc.). Muito utilizadas para cálculos mais
complexos;
• Métodos da programação matemática e métodos analíticos. Dentre esses se destacam os
métodos de otimização (linear, inteira, mista, não linear etc.) e os métodos analíticos,
como a Teoria das Filas. Muitos desses métodos até podem ser utilizados através de
planilhas eletrônicas com a utilização de solvers ou solucionadores apropriados;
• Simulação. Neste caso, montamos um modelo de simulação o qual implementamos
utilizando um simulador.

Obviamente, um “método” muito utilizado é o famoso “chute”, ou, em um estilo mais


pomposo, “uma estimativa”. Tomar decisões de sistemas complexos a partir apenas da
intuição ou experiência ocorre com mais frequência do que se possa imaginar, levando a
resultados, muitas vezes, desastrosos.
Para ilustrar cada um dos métodos descritos anteriormente, vamos trabalhar com um
exemplo adaptado de Grabau (2001).

Exemplo 1.1: Sistema de processamento de correspondências


Em um sistema de processamento de correspondências, os tempos entre chegadas
sucessivas de correspondências são exponencialmente distribuídos9 com média de
10 minutos. Existem três postos de trabalho em série, como ilustra a Figura 1.7.
Ao chegar ao departamento, a correspondência é transportada para o posto de trabalho 1,
sendo seu tempo de processamento de nove minutos em média, com desvio-padrão de dois
minutos, segundo uma distribuição normal. A seguir, a correspondência é transportada para
o posto de trabalho 2. No posto 2, o tempo de processamento segue uma distribuição
triangular simétrica, com o menor valor igual a oito minutos, o maior valor igual a 10
minutos e a moda igual a nove minutos (como a distribuição é simétrica, a média neste caso
também é igual a nove minutos). Em seguida, a correspondência é transportada para o posto
de trabalho 3, em que os tempos de processamento são uniformemente distribuídos no
intervalo entre oito e 10 minutos. Por fim, a correspondência é transportada até o ponto de
saída do departamento. Pergunta-se: qual o tempo médio que cada correspondência
permanece no sistema?
Figura 1.7 – Sistema de processamento de correspondências com três postos em série.

Método das “contas de padeiro”


Este método é extremamente simples e direto. Como o tempo médio entre chegadas
sucessivas é de 10 minutos, e como a média dos tempos de processamento em cada um dos
três postos é igual a nove minutos, então, o tempo total de processamento é de 27 (= 3 x 9)
minutos. Logo, o tempo total que cada correspondência permanece no sistema, supondo-se
que nenhuma correspondência espera em fila nos postos, é de 27 minutos. Nesse método, em
momento algum nos preocupamos com a natureza das distribuições estatísticas envolvidas
(normal, triangular, uniforme e exponencial), mas a solução está coerente com o que o
“senso comum” acredita ser o tempo médio que uma correspondência permanece no
sistema.

Método da “planilha eletrônica”


Nas contas anteriores, não consideramos a variabilidade do fenômeno. Com o auxílio de
uma planilha eletrônica podemos calcular com mais precisão a média, se considerarmos os
tempos máximos e mínimos das distribuições dos tempos de processamento. Para o posto 1,
que possui tempos de atendimento normalmente distribuídos, não dispomos dos valores
máximo e mínimo. Vamos considerar uma hipótese conservadora de que os tempos mínimo e
máximo são de quatro desvios-padrão (= 9), respectivamente, menores e maiores do que a
média (isto porque, ao considerarmos quatro desvios-padrão a mais e a menos na média de
uma variável aleatória normalmente distribuída, garantimos uma cobertura de 99,9% dos
valores possíveis da distribuição). Assim, podemos construir a Tabela 1.1.

Tabela 1.1 – Valores máximos e mínimos dos tempos de processamento nos postos, aproximados
por quatro desvios-padrão
Posto Tempo mínimo (min.) Tempo máximo (min.)
1 1 17
2 8 10
3 8 10

Com os valores da Tabela 1.1 podemos calcular o pior caso: o máximo tempo de
processamento ocorre quando os três postos demoram o tempo máximo, e o mínimo tempo
de processamento ocorre quando os três postos demoram o tempo mínimo, resultando na
planilha apresentada na Tabela 1.2.

Tabela 1.2 – Tempos mínimos e máximos do tempo de processamento das correspondências


(utilizando planilha eletrônica)
Tempo mínimo Tempo máximo
Posto
(min.) (min.)
1 1 17
2 8 10
3 8 10
Média (min.)
Total (min.) 17 37 27

No pior caso, verificamos que a correspondência deve permanecer 37 minutos no


sistema; no melhor, ela deve permanecer 17 minutos no sistema. Como as três distribuições
dos tempos de processamento (normal, triangular e uniforme) são simétricas, a média do
tempo total de permanência no sistema deve ser de 27 minutos. A planilha eletrônica
permitiu uma conta mais apurada, por considerar os valores máximos e mínimos das
distribuições, e o resultado pode ser considerado por muitos um valor mais “correto” do
que aquele obtido pelas “contas de padeiro”; no entanto, esse valor foi obtido sem
considerarmos a existência de filas de espera nos postos de processamento de
correspondências. Para incorporarmos a existência de filas nos nossos cálculos, devemos
utilizar uma das seguintes ferramentas: a Teoria das Filas (Apêndice II) ou a simulação, que
serão discutidas a seguir.

Métodos “analíticos”: a Teoria das Filas


Até aqui, aparentemente estamos no caminho certo. Contudo, as soluções anteriores
estariam corretas apenas se uma hipótese fosse válida: “não existem filas de espera no
sistema”. Como os tempos de processamento não são constantes, nada impede que, no
momento em que uma correspondência entra no sistema, o posto 1 já esteja ocupado no
processamento de uma correspondência anterior, causando o surgimento de uma fila de
espera. Neste caso, teríamos que adicionar ao tempo de processamento os tempos de espera
em fila. Matematicamente, o tempo total, T, no sistema seria:

(1.2)

Onde:

é o tempo de espera em fila para atendimento no posto i (para i = 1, 2 e 3).

é o tempo de processamento do posto i (para i = 1, 2 e 3).

Infelizmente, os tempos de espera não podem ser calculados diretamente como nos
métodos anteriores: além disso, devemos utilizar a Teoria das Filas. Como estamos com três
postos ou, na nomenclatura comum da Teoria das Filas, três servidores em série, esperamos
que o desempenho da fila em determinado posto seja afetado pelo desempenho do posto
anterior. Neste caso, temos um problema de rede de filas.
Modelos analíticos para redes de filas são complexos e de aplicação limitada.
Particularmente, a Teoria das Filas é vantajosa quando as distribuições; estatísticas são
conhecidas e podem ser aproximadas pela distribuição exponencial. No sistema em estudo,
apenas os tempos entre chegadas sucessivas de correspondências no sistema são
exponencialmente distribuídos; os outros processos aleatórios têm distribuições estatísticas
conhecidas (normal, triangular e uniforme) mas que, no âmbito da Teoria das Filas, são
tratadas como “distribuições genéricas”. Para o nosso exemplo, vamos, inicialmente,
estabelecer uma importante hipótese simplificadora: os tempos de atendimento em cada
estação são exponencialmente distribuídos, com média de nove minutos. Obviamente, a
simplificação adotada altera sobremaneira a característica do sistema, mas, ao adotarmos
tal hipótese, estamos aumentando a variabilidade do sistema, pois a curva exponencial é a
pior curva em termos de variabilidade, já que apresenta o maior coeficiente de variação
dentre as curvas mais utilizadas (razão entre o desvio-padrão e a média).
O sistema pode então ser modelado por uma rede de três filas em série, e, como os
tempos dos processos de chegadas e atendimentos são exponencialmente distribuídos,
dizemos que o sistema é formado por três filas M/M/110 em série.
Considerando isoladamente, o posto 1 processa um certo número de correspondências
por minuto. Em particular, a cada nove minutos, uma nova correspondência é processada.
Dizemos, assim, que a taxa de atendimento µ1 do posto 1 é:
Para este posto, um novo cliente chega, em média, a cada 10 minutos; dizemos, portanto,
que a taxa de chegadas de clientes λ1 no posto 1 é:

Para que o sistema seja estável, ou seja, para que não ocorra um aumento desmedido no
tamanho da fila, a taxa de atendimento no posto deve ser maior do que a taxa de chegadas:
(o que é verdadeiro para o posto 1). Por raciocínio análogo, as taxas de
atendimento nos postos 2 e 3 são de, respectivamente, e
correspondência/minuto. Redes de filas abertas em que os tempos de atendimento e os
tempos entre chegadas sucessivas são exponencialmente distribuídos com taxa média de
chegadas λ exibem a importante propriedade de terem tempos entre chegadas sucessivas
para cada estágio do sistema também exponencialmente distribuídos com taxa λ (Jackson,
1957).
A fila M/M/1 possui uma expressão analítica pronta para o tempo média de espera no
sistema W:
(1.3)

Como as taxas médias de chegadas e atendimentos são iguais nas três filas, para cada fila
da série o tempo médio total de espera no sistema (em fila mais em atendimento) será o
mesmo e igual a:

E o tempo médio total de espera no sistema será igual a:

Como podemos notar, embora considerando uma distribuição exponencial para os tempos
de atendimento nos postos, temos agora uma melhor noção de grandeza do tempo médio em
que uma correspondência permanece no sistema. Quando comparado ao método das “contas
de padeiro”, devemos acender um sinal de alerta, pois o tempo estimado pela Teoria das
Filas é cerca de 10 vezes maior! Isto se deve ao fato de a Teoria das Filas considerar a
variabilidade do sistema, coisa que o nosso padeiro simplesmente esqueceu. Aceita-se a
“variabilidade”, a “aleatoriedade” ou o “só Deus sabe” como um fato da vida. O objetivo
deste livro é construir modelos para lidar com essas situações.

Simulação
Neste caso, construímos um modelo em um simulador conforme a descrição anterior
(Figura 1.8). Esse modelo considera a variabilidade do sistema como: distribuição
exponencial nos tempos entre chegadas sucessivas de correspondências e distribuições
normal, triangular e uniforme, respectivamente, nos postos de atendimento 1, 2 e 3.
Efetuando várias rodadas, chegamos aos resultados apresentados na Tabela 1.3.

Tabela 1.3 – Tempo total que uma correspondência permanece no sistema; resultado obtido
através da simulação do sistema
Tempo total no sistema T
(min.)
Média 77
Máximo 244

Por que tanta diferença entre os métodos, principalmente entre os métodos das “contas de
padeiro” e “planilhas eletrônicas” em relação aos métodos das Teoria das Filas e da
simulação? A explicação é que, nos dois primeiros casos, trabalhamos com valores médios,
o que pode mascarar o desempenho real do sistema quando ele apresenta aleatoriedade.
Figura 1.8 – O modelo de simulação construído no simulador (Software: SIMUL8).

A Figura 1.9 apresenta uma ilustração baseada no trabalho de Savage (2003), que mostra
o perigo das médias: considere-se um bêbado andando, “na média”, exatamente sobre o
meio fio de uma avenida de mão dupla. Ele será atropelado ou...? Lembre-se: na média, ele
caminha sobre o meio fio...
Figura 1.9 – Pela sua posição “média”, o bêbado está vivo... Mas, “na média”, o bêbado está morto! (Baseado em
SAVAGE, 2003)

Um modelo matemático construído pela Teoria das Filas é composto por fórmulas
matemáticas que, via de regra, fornecem soluções mais rápidas do que a abordagem da
simulação. Por outro lado, a Teoria das Filas impõe hipóteses simplificadoras para sistemas
complexos, ou, mesmo, é incapaz de tratá-los de maneira conveniente. Quanto mais
complexo, dinâmico e aleatório for um problema, maior será a aplicabilidade das
ferramentas de simulação (Fig. 1.10).
Concluindo, algumas observações importantes:
• Se o problema for estático, isto é, se os estados do sistema não se alteram com o tempo, a
Simulação de Eventos Discretos não tem qualquer utilidade prática.
• Se o problema for determinístico, isto é, não apresenta nenhum comportamento aleatório,
a simulação pode ser utilizada – obviamente ela será subutilizada. Esse seria um caso
típico de “matar uma mosca com uma bala de canhão”, o que não significa que estamos
proibidos de rodar uma simulação com os valores constantes. Na realidade, esta é uma
das técnicas de verificação e validação de modelos de simulação (como discutiremos no
Capítulo 5). O exercício 14 do Capítulo 8 (programação da produção) é um exemplo de
um modelo de simulação determinístico.
• Se o problema em questão for complexo, dinâmico e apresentar aleatoriedade, a melhor
escolha é a simulação.
Além de uma ferramenta de análise de problemas, a simulação é uma ferramenta que
promove uma melhor compreensão sobre os sistemas, servindo de meio de comunicação
entre analistas, gerentes e pessoas ligadas a sua operação. É interessante notar que, em
diversas situações em que um estudo de simulação é iniciado, este não é completado, pois o
próprio entendimento que o desenvolvimento do projeto de simulação promove entre os
membros da equipe faz com que o problema seja solucionado antes mesmo de terminado o
estudo de simulação.

Figura 1.10 – Quanto maior e mais complexo o sistema, maior a aplicabilidade da simulação.
Referências bibliográficas
CHWIF, Leonardo. Redução de modelos de simulação de eventos discretos na sua
concepção: uma abordagem causal. Tese de Doutorado. Escola Politécnica da USP.
Departamento de Engenharia Mecânica, 1999.
FORRESTER, Jay W. Principles of systems. Cambridge: Wright-Allen Press Inc., 1968.
GRABAU, Mark R. Averages kill (or how to sell business process simulation).
Proceedings of 2001 Winter Simulation Conference, p. 1262-1265, 2001.
GROOVER, Mikell P. Automation, production systems and computer integrated
Manufacturing. 2. ed. Upple Saddle River: Prentice-Hall, 2000.
HARREL, Charles R.; TUMAY, Kerim. Simulation made easy: a manager’s guide.
Norcross: Engineering and Management Press, 1995.
KELTON, David W.; SADOWSKI, Randall P.; SADOWSKI, David. Simulation with
Arena. Boston: McGraw Hill, 1998.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed. Nova
York: McGraw-Hill, 1991.
LAW, Averill; MCCOMAS, Michael. Secrets of successful simulation studies.
Proceedings of 1991 Winter Simulation Conference, p. 21-27, 1991.
PAUL, Ray J.; BALMER, David W. Simulation modelling. Londres: Chartwell-Bratt,
1993.
PAUL, Ray J.; ELDABI, Tillal; KULJIS, Jasna. Simulation education is no substitute for
intelligent thinking. Proceedings of the 2003 Winter Simulation Conference, p. 1989-
1993, 2003.
PIDD, Michael. Tools for thinking: modelling in management science. 4. ed. Chichester:
John Wiley & Sons, 2000.
PRITSKER, A. Alan B. Introduction to simulation and SLAM II. 4. ed. Nova York: Jonh
Wiley & Sons, 1995.
ROBINSON, Stewart. Simulation: the practice of model development and use.
Chichester: John Wiley & Sons, 2004.
SAVAGE, Sam L. INSIGHT.xla: business analysis software for Microsoft Excel. 2. ed.
Pacific Grove: Duxbury Press, 2003.
SOUZA, João C. Dimensionamento, localização e escalonamento de serviços de
atendimento emergencial. Tese de Doutorado. Universidade Federal de Santa
Catarina-UFSC. Departamento de Engenharia de Produção e Sistemas, 1996.
Alguns textos clássicos de Simulação
BANKS, Jerry; CARSON, John S.; NELSON, Barry L.; NICOL, David M. Discrete-event
system simulation. 2. ed. Upper Sandle River: Prentice-Hall International Series in
Industrial and System Engineering, 2001.
GORDON, Geoffrey. System simulation. Englewood Cliffs: Prentice-Hall, 1978.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed. Nova
York: McGraw-Hill, 1991.
PIDD, Michael. Computer simulation in management sciences. 4. ed. Chicthester: John
Wiley and Sons, 1998.
SHANNON, Robert E. Systems simulation: the art and science. Englewood Cliffs:
Prentice-Hall, 1975.
TOCHER, Keith D. The art of simulation. Londres: English Universities Press, 1963.
ZEIGLER, Bernard P. Theory of modelling and simulation. Nova York: John Wiley,
1976.
Capítulo 2

Modelagem dos dados de entrada


2.1. Introdução
A maioria dos sistemas que procuramos modelar através da simulação possui algum
fenômeno aleatório que os governa. Consideremos, por exemplo, um operador que repete
por 100 vezes uma mesma operação de usinagem em um torno mecânico. Obviamente, nunca
saberemos exatamente e de antemão quanto tempo o operador levará no processo de
usinagem da próxima peça. O tempo gasto pelo operador do torno é, assim, uma variável
aleatória. Apesar de não sabermos o tempo exato, podemos prever o seu comportamento
probabilístico, a partir da observação dos tempos que o operador consumiu, no passado,
realizando a mesma operação. É fundamental que o comportamento probabilístico dessa
variável seja corretamente representado, para que possa ser utilizado em um modelo de
simulação. O objetivo deste capítulo é discutir como um fenômeno aleatório observado no
sistema real pode ser representado no modelo de simulação.
Como discutido no capítulo anterior, o modelo de simulação procura capturar o
comportamento de um dado sistema e representá-lo como um modelo computacional. Todo
modelo de simulação deve ser capaz de representar os diversos fenômenos aleatórios
existentes no sistema, construídos a partir da observação e do levantamento de dados do
fenômeno, de modo que esse modelo de simulação seja o mais representativo possível do
sistema real.
Uma das etapas mais importantes na construção de um estudo de simulação diz respeito à
modelagem dos dados de entrada. Mas o que vem a ser “modelar dados”? A ideia aqui é
obter modelos probabilísticos que permitam inferir as propriedades de um dado fenômeno
aleatório. Por exemplo, considere que pretendemos realizar um estudo de simulação
relativo ao comportamento das filas nos caixas de um supermercado. Um fenômeno
aleatório importante neste sistema é relativo ao processo de chegadas de clientes: “De
quanto em quanto tempo um novo cliente entra no supermercado?”. Já vimos, no Capítulo 1,
que, se trabalharmos simplesmente com a média dos tempos entre chegadas sucessivas de
clientes, não estaremos considerando o fenômeno aleatório por completo, o que poderá
ocasionar erros consideráveis na conclusão do nosso estudo. A saída é obter um modelo
capaz de representar não só a média mas também o comportamento da variável que governa
o fenômeno aleatório de interesse.
Chamamos de modelos de entrada os modelos probabilísticos responsáveis por
representar a natureza aleatória de um dado fenômeno, e de modelagem de dados o
processo de escolher a melhor representação deste fenômeno.
A modelagem de dados é um processo facilitado quando as seguintes condições são
válidas (NELSON; YAMNITSKY, 1997):
• O processo de entrada de dados pode ser representado por uma sequência de variáveis
aleatórias independente e identicamente distribuída; 1
• A distribuição das variáveis aleatórias pode ser aproximada por um modelo probabilístico
conhecido e encontrado em pacotes comerciais (Apêndice VII): Normal, Beta, Erlang,
Exponencial, Gama, Lognormal, Poisson, Triangular, Uniforme e Weibull, através dos
testes de aderência;
• Os dados estão disponíveis de modo que seus parâmetros possam ser estimados.

O estudo da modelagem de dados pode ser resumido em três etapas:


• Coleta de dados;
• Tratamento dos dados;
• Inferência.

A primeira etapa, coleta de dados, corresponde ao chamado processo de amostragem.


Na maioria dos casos, é impraticável realizar o levantamento de dados de toda a população.
Uma amostra é um conjunto de valores retirados da população de interesse, utilizada para
representar a população no estudo estatístico. Nesta etapa, o objetivo é garantir que a
amostra obtida seja a mais representativa possível do fenômeno.
No passo seguinte, tratamento de dados, são utilizadas técnicas para descrever os dados
levantados, identificar as possíveis falhas nos valores amostrados e aumentar nosso
conhecimento acerca do fenômeno em estudo.
A terceira etapa, inferência, aplica os conhecimentos do Cálculo de Probabilidades para
inferir qual o comportamento da população a partir da amostra. Como resultado, teremos um
modelo probabilístico (i.e., uma distribuição de probabilidades) que representará o
fenômeno aleatório em estudo e será incorporado ao modelo de simulação.
Não é objetivo deste texto substituir os livros e manuais de estatística. Vamos discutir a
modelagem de dados através de exemplos práticos, e sugerimos ao leitor consultar as
referências bibliográficas ao final deste capítulo, para uma revisão e um aprofundamento
dos conhecimentos utilizados.
2.2. Coleta de dados
A coleta de dados se inicia com a escolha adequada das variáveis de entrada do sistema
a ser simulado. Um cuidado especial deve ser tomado para diferenciar o que são “dados de
entrada” – valores fornecidos ao modelo de simulação – e o que são “dados de saída” –
valores obtidos do modelo de simulação. Retomando o exemplo do supermercado,
considere as filas que se formam nos caixas. Neste sistema, para a modelagem dos dados de
entrada, as variáveis de estudo seriam: o tempo entre chegadas sucessivas dos clientes e os
tempos gastos em atendimento nos caixas de pagamento das compras. Alguém poderia
lembrar-se do tempo de espera nas filas do caixa como mais uma variável de estudo, afinal,
trata-se de um fenômeno aleatório importante que ocorre no supermercado. Contudo, neste
caso, estaríamos cometendo um erro: os tempos de espera são parâmetros de desempenho
do sistema (que serão de valia para o processo de validação do modelo e para a própria
tomada de decisão). Na verdade, os tempos de espera em fila e, de uma maneira mais
ampla, o fenômeno da formação de uma fila são consequência direta dos fenômenos
aleatórios das chegadas dos clientes e do atendimento desses clientes.
No supermercado, a primeira coisa a ser feita é observarmos o fenômeno de chegadas de
clientes. A população de interesse é formada por todos os valores que a variável de estudo
– tempo entre chegadas sucessivas de clientes – pode assumir. Um olhar mais atento
descobrirá que a população ainda não foi corretamente definida. Lembre-se de como
funciona um supermercado: o fenômeno “chegadas de clientes” exibe o mesmo
comportamento em uma segunda-feira pela manhã e em um sábado à tarde? E se
estivéssemos falando de um sábado no início do mês em relação ao sábado no final do mês?
Obviamente, a chegada de clientes ao supermercado exibe um comportamento diferente
para cada horário e dia da semana (em particular, sabe-se que o volume de vendas é,
geralmente, maior no sábado seguinte ao dia de pagamento). Isto significa que, para
construirmos uma amostra representativa, precisamos caracterizar cuidadosamente a nossa
população de interesse.
Considerando que o estudo deve ser realizado para o período mais crítico de
funcionamento do supermercado, o interesse recairia no sábado posterior ao dia de
pagamento. Ficaria ainda em aberto a questão da variação ao longo do dia: como o volume
de clientes é maior à tarde, podemos estabelecer que a nossa população corresponderá aos
valores dos tempos entre chegadas sucessivas de clientes no período das 12 às 18 horas.
Como o volume de clientes é muito grande para esse período, não há como coletarmos
todos os valores possíveis; além disso, precisamos construir uma amostra. É hora, portanto,
do trabalho de campo: vamos ao supermercado coletar uma amostra da população. No
supermercado, marcamos uma linha imaginária na entrada, indicando que, quando um cliente
ultrapassá-la, é o momento de anotar o tempo atual do cronômetro, zerá-lo e dispará-lo
novamente para a próxima coleta (existem equipamentos que podem realizar este
levantamento de forma totalmente automatizada). Suponhamos que, com cerca de 30 minutos
de levantamento, conseguimos construir a Tabela 2.1, que representa um conjunto de 200
valores coletados que agora compõem a amostra. Quando da construção de uma amostra,
deve-se ter atenção aos seguintes cuidados práticos (VINCENT, 1998):
• O tamanho da amostra deve estar entre 100 e 200 observações. Amostras com menos de
100 observações podem comprometer a identificação do melhor modelo probabilístico, e
amostras com mais de 200 observações não trazem ganhos significativos ao estudo;
• Coletar e anotar as observações na mesma ordem em que o fenômeno está ocorrendo, para
permitir a análise de correlação (a ser discutida no próximo item);
• Se existe alguma suspeita de que os dados mudam em função do horário ou do dia da
coleta, esta deve ser refeita em outros horários e dias. Na modelagem de dados, vale a
regra: toda suspeita deve ser comprovada ou descartada estatisticamente.

Tabela 2.1 – Tempos entre chegadas sucessivas de clientes do supermercado (segundos)


11 5 2 0 9 9 1 5
1 3 3 3 7 4 12 8
5 2 6 1 11 1 2 4
2 1 3 9 0 10 3 3
1 5 18 4 22 8 3 0
8 9 2 3 12 1 3 1
7 5 14 7 7 28 1 3
2 11 13 2 0 1 6 12
15 0 6 7 19 1 1 9
1 5 3 17 10 15 43 2
6 1 13 13 19 10 9 20
19 2 27 5 20 5 10 8
2 3 1 1 4 3 6 13
10 9 1 1 3 9 9 4
0 3 6 3 27 3 18 4
6 0 2 2 8 4 5 1
4 18 1 0 16 20 2 2
2 12 28 0 7 3 18 12
3 2 8 3 19 12 5 4
6 0 5 0 3 7 0 8
8 12 3 7 1 3 1 3
2 5 4 9 4 12 4 11
9 2 0 5 8 24 1 5
12 9 17 728 12 6 4 3
5 7 4 4 4 11 3 8
O leitor pode questionar neste ponto: “O número de valores coletados é suficiente para
representar a população?” Essa dúvida será respondida mais adiante, quando falarmos de
“testes de aderência”; por ora, vamos conhecer melhor o fenômeno aleatório em estudo
através do “tratamento dos dados”.
2.3. Tratamento dos dados
Utilizando as ferramentas da Estatística Descritiva (Apêndice I), podemos explorar o
nosso conjunto de dados de modo a compreendermos melhor o fenômeno. Esta é a fase em
que extraímos as medidas de posição (média, mediana, moda etc.) e de dispersão
(variância, amplitude, coeficiente de variação etc.) da variável aleatória em estudo.
Existem diversos pacotes de uso comercial que podem ser utilizados neste estudo
(Minitab, SPSS, Best Fit, entre outros). Alguns pacotes de simulação, inclusive, têm
módulos para modelagem de dados (Stat::Fit – ProModel, SIMUL8, Input Analyzer – Arena,
entre outros). A Tabela 2.2 resume as principais medidas de posição e dispersão obtidas a
partir dos dados coletados no exemplo do supermercado.

Tabela 2.2 – Estatísticas descritivas do exemplo


Média 10,44
Mediana 5
Medidas de posição Moda 3
Mínimo 0
Máximo 728
Amplitude 728
Desvio-padrão 51,42
Medidas de dispersão Variância da amostra 2.643,81
Coeficiente de Variação 493%
Coeficiente de Assimetria 13,80

A média é de 10,44 segundos entre a chegada de um cliente e outro. A moda (valor que
mais ocorre na amostra) é de três segundos. Com um pouco mais de atenção, podemos
descobrir valores, no mínimo, curiosos. O valor mínimo é de zero segundo (dois clientes
chegando juntos) e o valor máximo é de 728 segundos! (mais de 10 minutos de intervalo
entre um cliente e outro). Com certeza, podemos dizer que esse valor é atípico, ou
discrepante, na nossa amostra. Ele deve ser retirado da amostra? Para respondermos a essa
questão devemos conhecer os outliers, ou “pontos fora da curva”.

2.3.1 Outliers
Todo levantamento de dados está sujeito a valores não usuais conhecidos como outliers.
As razões mais comuns para o seu surgimento são algum erro na coleta de dados ou um
evento raro e totalmente inesperado.
• Erro na coleta de dados. Este tipo de outlier é o mais comum, principalmente quando o
levantamento de dados é feito por meio manual. Considere que, durante a coleta de dados
no supermercado, houve uma troca de pesquisadores. Quando o primeiro passou o
cronômetro para o segundo, o cronômetro e a planilha não foram corretamente
atualizados, o que resultou em um valor de 728 segundos entre um cliente e outro. Falhas
em equipamentos de coleta de dados, problemas na conversão de arquivos, máquinas que
suspendem o serviço temporariamente por defeito, dentre outros, são causadores
clássicos de outliers. Quando descobrimos um outlier desse tipo, o mais correto é retirá-
lo da amostra.
• Eventos raros. Este é o tipo de outlier mais difícil de se lidar. Nada impede que situações
totalmente atípicas ocorram na nossa coleta de dados; alguns exemplos:
• Um dia de temperatura negativa no verão da cidade do Rio de Janeiro;
• Um tempo de execução de um operador ser muito curto em relação aos melhores
desempenhos obtidos naquela tarefa;
• Um tempo de viagem de um caminhão de entregas na cidade de São Paulo, durante o
horário de rush, ser muito menor do que fora desse horário.

Tais situações são claramente atípicas, mas continuam pertencentes ao fenômeno em


estudo. O outlier nesses casos é um problema, pois ele afeta os resultados do estudo
distorcendo as estimativas, os níveis de significância dos testes estatísticos e levando a
conclusões equivocadas acerca do fenômeno. A Tabela 2.3 compara o impacto de
retirarmos ou não o outlier identificado, o valor 728, do nosso exemplo. Apesar de se tratar
apenas de um valor em uma amostra de 200 valores no total, as distorções na média e na
variância são significativas.
Tabela 2.3 – Impacto da retirada do outlier da amostra utilizada no exemplo
Dados
com o outlier sem o outlier
Média 10,44 6,83
Mediana 5 5
Variância da amostra2 2.643,81 43,60

Existem2 algumas técnicas que podem ser utilizadas para a identificação de outliers em
uma amostra. Um dos métodos mais utilizados consiste em construir um intervalo de valores
a partir dos quartis da amostra. Considere que Q1 e Q3 são, respectivamente, os valores do
primeiro e terceiro quartis;3 assim, a amplitude interquartil, A, é calculada pela diferença:

(2.1)

Considera-se um valor discrepante ou outlier moderado qualquer valor que estiver


abaixo de Q1 – 1,5A ou acima de Q3 + 1,5A. De modo semelhante, considera-se um valor
discrepante ou outlier extremo qualquer valor que estiver abaixo de Q1 – 3A ou acima de
Q3 + 3A.
O modo gráfico de representar o outlier é através do gráfico box-plot, representado na
Figura 2.1, para três amostras hipotéticas A, B e C. No box-plot, a “caixa” marca o
intervalo entre os primeiro e terceiro quartis, e as linhas retas verticais representam os
extremos para os valores não discrepantes. Um outlier é representado, portanto, por um
ponto fora das linhas verticais (o asterisco, na Figura 2.1).

Figura 2.1 – Diagrama box-plot para identificação de outliers.


Se aplicarmos esse critério de identificação de outlier aos dados do exemplo, teremos:
• Primeiro quartil: Q1= 2
• Terceiro quartil: Q3= 9
• Amplitude interquartil: A= Q3- Q1= 9-2= 7

Serão considerados outliers moderados aqueles valores que estiverem abaixo de Q1 1,5A
= 2 – 1,5(7) = 2 – 10,5 = –8,5 e acima de Q3 + 1,5A = 9 + 1,5(7) = 9 + 10,5 = 19,5. Nesse
grupo, existem 11 valores; seguindo o mesmo raciocínio, os outliers extremos estariam
abaixo de Q1 – 3A = 2 – 3(7) = 2 – 21 = –19 e acima de Q3 + 3A= 9 + 3(7) = 9 + 21= 30.
Neste caso, teríamos apenas dois outliers, o “43” e o “728”.
Normalmente, devemos retirar da amostra todos os outliers encontrados. Contudo, esse
nem sempre é o procedimento mais correto, pois, às vezes, trata-se de um valor que não
podemos desprezar ou de uma característica própria do fenômeno. Bom senso, honestidade
e, principalmente, o objetivo final do estudo de simulação4 são aspectos que devem ser
levados em consideração neste momento. Um cuidado especial deve ser dado à
característica do fenômeno: geralmente, estamos confrontando os dados coletados com
algum modelo probabilístico conhecido e identificando aqueles dados considerados
discrepantes em relação ao modelo escolhido. No caso do exemplo em estudo, estamos
trabalhando com uma amostra com características parecidas com aquelas da distribuição
exponencial,5 e, portanto, é com esse modelo que devemos confrontar os outliers. O valor
“728” é realmente um dado que deve ser retirado da amostra; já o valor “43”, apesar de
alto, não é um outlier que deva ser retirado, pois é típica da distribuição exponencial a
ocorrência de alguns valores mais altos, como pode ser notado pela “cauda” da distribuição
(veja a forma característica da curva no Apêndice VII).
Sempre que pairar alguma dúvida sobre se o dado coletado é característico ou não da
distribuição, devemos procurar aumentar a amostra, coletando mais dados. Essa situação é
comum na Simulação de Eventos Discretos, pois grande parte dos sistemas que envolvem
filas possuem tempos entre chegadas sucessivas com distribuição exponencial ou outras
distribuições semelhantes.
A Tabela 2.4 resume as estatísticas que descrevem a amostra do exemplo, agora sem o
outlier.
De posse da Tabela 2.4, já podemos intuir aspectos interessantes sobre os dados de
entrada:
• Um coeficiente de variação próximo de 100% (no caso, 97%) indica que a distribuição
exponencial é candidata a ser o modelo probabilístico escolhido;6
• Um coeficiente de assimetria distante de zero indica que os dados não apresentam simetria
(distanciando-se da forma de “sino”, comum à distribuição normal);
• Um coeficiente de assimetria positivo indica que os dados distribuem-se como uma cauda
que diminui na direção do “lado esquerdo” para o “lado direito” (como a forma de uma
distribuição exponencial).

Tabela 2.4 – Estatísticas descritivas do exemplo sem o outlier


Média 6,83
Mediana 5
Medidas de posição Moda 3
Mínimo 0
Máximo 43
Amplitude 43
Desvio-padrão 6,60
Medidas de dispersão Variância da amostra 43,60
Coeficiente de Variação 97%
Coeficiente de Assimetria 13,80

2.3.2. Análise de correlação


Retirados os outliers da amostra, ainda cabe um estudo para verificar se a amostra
representa uma sequência de valores independentes e identicamente distribuídos (i.i.d.) ou,
em outras palavras, se não existem correlações entre as observações que compõem a
amostra. A hipótese de independência geralmente não é válida em situações em que existe
uma “curva de aprendizado” regendo o processo ou quando existe correlação entre mais de
um parâmetro de entrada do modelo. Por exemplo, se os dados do tempo de atendimento no
caixa do supermercado são coletados a partir de um operador recém-contratado (ou ainda
em período de treinamento), é natural que esse operador apresente uma “curva de
aprendizado” ao longo do seu turno de trabalho: neste caso, os tempos de atendimento
devem apresentar um decréscimo ao longo do tempo; afinal, o operador está aprendendo o
processo cada vez mais.
Existem alguns testes disponíveis para se verificar a hipótese de independência. O mais
simples deles consiste em desenhar um diagrama de dispersão com as observações
, na ordem em que foram coletadas em campo. Cada ponto do
gráfico é formado, sucessivamente, pelos pares A
Figura 2.2 representa o diagrama de dispersão dos tempos entre chegadas sucessivas de
clientes no supermercado (sem os outliers). Quando os dados não apresentam correlação,
os pontos tendem a se dispersar de modo aleatório pelo gráfico (Fig. 2.2). Quando os dados
apresentam correlação, eles tendem a se distribuir ao longo de linhas com inclinação
positiva ou negativa, dependendo da distribuição envolvida, como mostra o exemplo da
Figura 2.3, que contém dados propositadamente com correlação. Alguns autores sugerem
testes estatísticos para confirmar ou não a presença de correlação nos dados; contudo, como
nesta etapa da modelagem de dados não sabemos com qual distribuição estamos lidando –
se normal, exponencial etc. –, os testes devem ser obrigatoriamente não paramétricos, e,
geralmente, são pouco conclusivos. Law e Kelton (1991) e Vincent (1998) apresentam
outros testes para verificação da hipótese de independência.

Figura 2.2 – Diagrama de dispersão dos tempos de atendimento do exemplo do supermercado, mostrando não
haver correlação entre as observações da amostra.
Figura 2.3 – Diagrama de dispersão de um exemplo hipotético em que existe correlação entre os dados que
compõem a amostra.

Se fosse identificada alguma correlação entre os valores, um estudo mais aprofundado do


supermercado poderia identificar se o processo de chegadas de clientes possui alguma
característica particular ou se a mostra apresenta algum “vício” de coleta (p. ex., se foi
coletada no horário errado) e deveria ser descartada.
Nos casos que temos discutido até aqui, as variáveis em estudo são sempre independentes
de outras variáveis do sistema. Entretanto, existem casos em que a variável pode ser
correlacionada (ou dependente) com outras variáveis, e, portanto, o modelo de dados de
entrada deve considerá-las na distribuição. Considere os seguintes exemplos:
• No supermercado, os atendentes dos caixas apresentam uma queda de produtividade ao
longo do turno de trabalho. Os tempos de atendimento aumentam ao longo do dia, de
modo que, ao final do dia, o tempo médio de atendimento é três vezes superior ao tempo
médio de atendimento no início da jornada de trabalho.
• Uma loja de roupas solicita os produtos a um certo fabricante. Se a loja pede lotes
maiores do produto, os tempos entre os pedidos e as entregas dos lotes (tempo de lead
time) serão maiores; afinal, lotes maiores significam tempos maiores de produção.

No primeiro exemplo, a variável aleatória que representa o tempo de atendimento é


dependente do tempo, formando o que se denomina série temporal. No segundo exemplo,
existem duas variáveis aleatórias correlacionadas entre si: “tempo de entrega” e “tamanho
do lote”. Neste caso, o modelo estatístico utilizado para representar os dados de entrada
deve ser multivariável, visto que é composto por mais de uma variável. O grande problema
aqui é que as distribuições estatísticas comumente encontradas nos softwares de simulação
não lidam com esses casos, limitando-se às distribuições univariadas. Invariavelmente,
nestes casos, é o analista quem deve construir o modelo estatístico “por fora” – utilizando
alguma linguagem de programação – e depois incorporar a sequência de números aleatórios
obtida no modelo de simulação. (Mais detalhes sobre a modelagem de dados multivariável
ou de séries temporais podem ser obtidos numa consulta aos trabalhos de Nelson e
Yamnitsky [1997], que apresentam um tutorial sobre a modelagem de dados de séries
temporais e de distribuições multivariáveis; Johnson [1987], que apresenta uma discussão
mais completa sobre os modelos estatísticos multivariáveis; Biller e Nelson [2005], que
desenvolvem uma metodologia para o ajuste de modelos de séries temporais.)

2.3.3. Inferência
Construída a amostra, devemos identificar, se possível, uma distribuição de
probabilidades que represente o fenômeno. Existem diversas distribuições de
probabilidades que podem ser utilizadas (o Apêndice VII resume as distribuições mais
comumente utilizadas na Simulação de Eventos Discretos).
O primeiro passo para descobrirmos a consistência dos dados é construirmos um
histograma da amostra, com uma divisão de classes adequada. Existem diversos critérios
para se decidir o número de classes utilizadas; por exemplo, a raiz quadrada do número de
observações ou a regra de Sturges, que adota um número de classes igual a:

(2.2)

Onde:
K = número de classes, e
n = número de observações na amostra.

Voltando ao nosso velho exemplo (o supermercado, já se esqueceu?), como temos 199


valores observados, o número de classes, segundo a regra de Sturges, será:

Para que a amostra seja dividida em nove classes, o tamanho de cada classe, h, deve ser:

(2.3)

Com nove classes, podemos construir a tabela de frequências de observações por classe
(Tabela 2.5) e o histograma das observações (Figura 2.4).
Pelo histograma obtido, os dados parecem aderir ao modelo exponencial, algo que já
estávamos suspeitando devido a algumas estatísticas obtidas. Como sabemos (Apêndice
VII), a função densidade de probabilidade da distribuição exponencial tem a forma:
(2.4)

Onde: média da distribuição.

Figura 2.4 – Histograma dos tempos entre chegadas sucessivas de clientes no exemplo do supermercado.

O parâmetro da distribuição exponencial, λ, pode ser estimado diretamente pelo inverso


da média obtida na amostra7:

(2.5)

A partir da equação (2.4), a função densidade de probabilidade da distribuição do


exemplo pode ser ajustada pela seguinte distribuição exponencial:

(2.6)

Tabela 2.5 – Distribuição das classes de frequências do exemplo


k Classes Frequência relativa
1 ≤ 4,8 96
2 4,8-9,6 55
3 9,6-14,3 25
4 14,3-19,1 13
5 19,1-23,9 4
6 23,9-28,7 5
7 28,7-33,4 0
8 33,4-38,2 0
9 > 38,2 1
2.4. Testes de aderência: os dados se ajustam à distribuição
escolhida?
A última etapa do processo de modelagem de dados é qualificarmos a aderência do
modelo, ou seja, verificar se a distribuição exponencial é estatisticamente adequada para
representar os dados coletados. Isso pode ser feito através dos testes de aderência, em que
se testa a validade ou não dessa hipótese de aderência (ou hipótese nula):
H0: o modelo é adequado para representar a distribuição da população.

Em confronto com a hipótese alternativa:


Ha: o modelo não é adequado para representar a distribuição da população.

Se a um dado nível de significância a (100)% rejeitarmos H0, o modelo testado não é


adequado para representar a distribuição da população. O nível de significância a equivale
à probabilidade de rejeitarmos a hipótese nula H0, dado que ela está correta.8
Existem dois testes “clássicos” de aderência:9 o teste do qui-quadrado ( ) e o teste de
Kolmogorov-Smirnov, que serão discutidos a seguir. Os testes de aderência pertencem à
categoria dos “testes não paramétricos”, pois a hipótese testada refere-se à forma da função,
não aos seus parâmetros.
2.4.1. Teste do qui-quadrado
O teste do qui-quadrado ( ) baseia-se no cálculo dos desvios entre as frequências
acumuladas observadas em cada classe e as frequências teóricas (usando o modelo
escolhido) nas mesmas classes.
Em cada classe k (k=1,2,..., K), calcula-se o valor Ek, que é a diferença entre o número
observado de elementos (Ok) e o valor teórico da classe (Tk), dividindo-se o valor obtido
por este valor teórico da classe:

(2.7)

O somatório dos valores de Ek ao quadrado, para todas as K classes envolvidas,


determina a estatística E, cuja distribuição é a qui-quadrado com K-1-n graus de liberdade,
onde n é o número de parâmetros estimados a partir da amostra coletada:

(2.8)
Escolhendo um nível de significância e K-1-n graus de liberdade, obtém-se,
da tabela da distribuição do qui-quadrado, o valor Ecrítico. Se E for maior que Ecrítico,
rejeita-se a hipótese de que a amostra observada provém de uma população com a
distribuição teórica adotada.
Um aspecto importante deve ser considerado: a hipótese de que a estatística E segue a
distribuição do qui- -quadrado é geralmente satisfatória desde que todas as classes tenham
frequência maior ou igual a 5. Caso alguma classe não tenha essa característica, ela deve
ser agrupada de modo que a condição possa ser satisfeita. Esse tipo de condição implica
uma diminuição dos graus de liberdade, K-1-n, afinal, com o agrupamento, o número de
classes K diminui.
Vamos realizar o teste do qui-quadrado no nosso exemplo. Queremos testar a hipótese de
aderência:
H0: a distribuição da população é exponencial, com média igual a 6,83.

Em confronto com a hipótese alternativa:


Ha: a distribuição da população não é exponencial, com média igual a 6,83.

O teste compara valores observados com valores teóricos. Os valores observados são
aqueles relacionados na Tabela 2.5. Vamos determinar qual seria a distribuição teórica das
frequências caso a distribuição fosse uma distribuição exponencial; para isso, precisamos
determinar, inicialmente, qual a probabilidade de ocorrência de cada uma das classes da
Tabela 2.5. A probabilidade de ocorrência de valores na classe k definida pelo intervalo [a,
b] é facilmente obtida pela integral da função densidade de probabilidade (Equação 2.4):

(2.9)

As probabilidades pk associadas às classes da Tabela 2.5 são dadas por:

(2.10)

(2.11)
(2.12)

(2.13)

(2.14)

(2.15)

(2.16)
(2.17)

(2.18)

Obtidas as probabilidades de ocorrência das classes, as frequências teóricas de cada


classe k são calculadas diretamente pela multiplicação das probabilidades de ocorrência de
cada classe pelo total de observações disponíveis:

(2.19)

Como dispomos de 199 observações, . Assim, a Tabela 2.6 apresenta as


frequências teóricas obtidas para o exemplo.
Tabela 2.6 – Frequências teóricas obtidas para o exemplo
k pk Tk

1 0,5022 100
2 0,2500 50
3 0,1244 25
4 0,0620 12
5 0,0308 6
6 0,0154 3
7 0,0076 2
8 0,0038 1
9 0,0038 1

As classes 6, 7, 8 e 9 têm frequências teóricas menores do que 5, e, portanto, devem ser


agrupadas com a quinta classe. A Tabela 2.7 apresenta o cálculo da estatística E para as
cinco classes de frequência resultantes do agrupamento.

Tabela 2.7 – Cálculo da estatística “E” para o exemplo

Frequência observada Frequência


teórica
k Classes Ok Tk

1 £ 4,8 96 100 -4 0,16


2 4,8-9,6 55 50 5 0,55
3 9,6-14,3 25 25 0 0,00
4 14,3-19,1 13 12 1 0,04
5 ≥ 19,1 10 13 -3 0,69
E 1,44

O valor E obtido pela soma da quinta coluna da Tabela 2.7 é igual a 1,15. Como foi
estimada somente a média da distribuição a partir da amostra, o valor de n, número de
parâmetros estimados, é igual a 1. O número de classes, K, é igual a 5. Portanto, o número
de graus de liberdade é igual a: Assumindo um nível de
significância, a (100)% igual a 5%, e 3 graus de liberdade, o valor Ecrítico, retirado da
tabela da distribuição qui--quadrado, é de 7,8147. Como E (=1,44) é menor que Ecrítico,
não se rejeita a hipótese H0, de que a distribuição exponencial adere aos dados observados.
Quando o número de valores observados é pequeno, o teste do qui-quadrado pode ser
não conclusivo, pois o número de graus de liberdade cai muito. Neste aspecto, o teste de
Kolmogorov-Smirnov tem um desempenho melhor.

2.4.2. Teste de Kolmogorov-Smirnov


O teste de Kolmogorov-Smirnov (KS) compara a função acumulada (ou função de
repartição) do modelo teórico com a função acumulada de probabilidade observada (feita a
partir dos valores observados). A ideia é simples: para comparar se o modelo observado
adere ao modelo teórico, o teste calcula a distância absoluta máxima entre as duas
distribuições acumuladas, através da estatística:

(2.20)

Onde:
D é a distância absoluta máxima;
S(x) é a função acumulada observada;
F(x) é a função acumulada teórica.

A Figura 2.5 ilustra o significado da estatística D do teste KS, destacando a maior


distância vertical medida entre a função acumulada teórica e a observada. Esta é a ideia
central do teste KS: se os valores observados aderem ao modelo teórico, é natural supor
que os valores de S(x) e F(x) estejam próximos; isto é, a distância absoluta entre os valores
esteja dentro de limites de erros aleatórios (SIEGEL, 1979). Naturalmente, quanto menor o
valor da estatística D, mais próximas entre si estarão as duas funções acumuladas. O valor
dessa distância é comparado com um valor teórico Dcrítico relacionado na tabela de
valores críticos do teste KS disponível no Apêndice VI, para os níveis de significância de
1%, 5% e 10%. Escolhido um nível de significância a (100)%, determina-se o valor crítico
do teste Dcrítico, através da tabela de valores críticos. Se , então, rejeita-se a
hipótese de aderência H0. Se , não temos razão para rejeitar a hipótese de
aderência H0.
Como no teste do qui-quadrado, a hipótese nula é:
H0: o modelo é adequado para representar a distribuição da população.

Em confronto com a hipótese alternativa:


Ha: o modelo é não adequado para representar a distribuição da população.

Para realizarmos o teste, os dados observados são ordenados do menor para o maior
valor. A Tabela 2.8 sintetiza o procedimento de cálculo da estatística D, para os dados do
exemplo do supermercado.
Tabela 2.8 – Cálculo da estatística D nos dados coletados no exemplo do supermercado

Valor Frequência Frequência


F (x) Fdir(x) Desq=|Fesq(X)-S(X)| Ddir=|Fdir(X)-S(X)| D
obs. observada acumulada S(x) esq
observada

0 13 13 0,07 0,00 0,14 0,07 0,07 0,07


1 23 36 0,18 0,14 0,25 0,04 0,08 0,08
2 18 54 0,27 0,25 0,35 0,02 0,08 0,08
3 26 80 0,40 0,35 0,44 0,05 0,04 0,05
4 16 96 0,48 0,44 0,52 0,04 0,06 0,06
5 15 111 0,56 0,52 0,58 0,04 0,02 0,04
6 9 120 0,60 0,58 0,64 0,02 0,04 0,04
7 9 129 0,65 0,64 0,69 0,01 0,04 0,04
8 10 139 0,70 0,69 0,73 0,01 0,03 0,03
9 12 151 0,76 0,73 0,77 0,03 0,01 0,03
10 5 156 0,78 0,77 0,80 0,01 0,02 0,02
11 5 161 0,81 0,80 0,83 0,01 0,02 0,02
12 10 171 0,86 0,83 0,85 0,03 0,01 0,03
13 4 175 0,88 0,85 0,87 0,03 0,01 0,03
14 1 176 0,88 0,87 0,89 0,01 0,01 0,01
15 2 178 0,89 0,89 0,90 0,00 0,01 0,01

16 1 179 0,90 0,90 0,92 0,00 0,02 0,02


17 2 181 0,91 0,92 0,93 0,01 0,02 0,02
18 4 185 0,93 0,93 0,94 0,00 0,01 0,01
19 4 189 0,95 0,94 0,95 0,01 0,00 0,01
20 3 192 0,96 0,95 0,95 0,01 0,01 0,01
21 0 192 0,96 0,95 0,96 0,01 0,00 0,01
22 1 193 0,97 0,96 0,97 0,01 0,00 0,01
23 0 193 0,97 0,97 0,97 0,00 0,00 0,00
24 1 194 0,97 0,97 0,97 0,00 0,00 0,00
25 0 194 0,97 0,97 0,98 0,00 0,01 0,01
26 0 194 0,97 0,98 0,98 0,01 0,01 0,01
27 2 196 0,98 0,98 0,98 0,00 0,00 0,00
28 2 198 0,99 0,98 0,99 0,01 0,00 0,01
29 0 198 0,99 0,99 0,99 0,00 0,00 0,00
30 0 198 0,99 0,99 0,99 0,00 0,00 0,00
31 0 198 0,99 0,99 0,99 0,00 0,00 0,00
32 0 198 0,99 0,99 0,99 0,00 0,00 0,00

33 0 198 0,99 0,99 0,99 0,00 0,00 0,00

34 0 198 0,99 0,99 0,99 0,00 0,00 0,00


35 0 198 0,99 0,99 0,99 0,00 0,00 0,00
36 0 198 0,99 0,99 1,00 0,00 0,01 0,01
37 0 198 0,99 1,00 1,00 0,01 0,01 0,01
38 0 198 0,99 1,00 1,00 0,01 0,01 0,01
39 0 198 0,99 1,00 1,00 0,01 0,01 0,01
40 0 198 0,99 1,00 1,00 0,01 0,01 0,01
41 0 198 0,99 1,00 1,00 0,01 0,01 0,01
42 0 198 0,99 1,00 1,00 0,01 0,01 0,01
43 1 199 1,00 1,00 1,00 0,00 0,00 0,00

Na tabela, os valores de S(x), função acumulada dos dados observados, são obtidos
diretamente pela equação:
(2.21)

Os valores de F(x), função acumulada do modelo teórico, são obtidos pela função
acumulada da distribuição exponencial:

(2.22)

O cálculo da estatística D (sétima e oitavas colunas da Tabela 2.8) é feito à esquerda e à


direita de cada intervalo de classe de frequência (como representado na Figura 2.5), e a
estatística é estimada pelo maior valor entre os dois:

(2.23)
Figura 2.5 – Ajuste de curvas do teste KS.

Na Tabela 2.8, o valor máximo é D = 0,08. Como a nossa amostra contém n = 199
valores observados, para um nível de significância a = 5%, devemos utilizar a expressão:
(2.24)

Portanto, como Dcrítico, não se pode rejeitar a hipótese de aderência dos dados.

2.4.3. Qual a melhor distribuição?


Realizados os testes de aderência, identificamos, para o nosso exemplo, a aderência dos
dados à distribuição exponencial. Mas será a distribuição exponencial a que melhor adere
ao conjunto de dados?
Para respondermos a essa pergunta, devemos repetir todo o procedimento de inferência
para outros modelos de distribuição de probabilidade conhecidos e comparar os resultados
obtidos para um mesmo nível de confiança. Diversos pacotes comerciais são capazes de
realizar essa comparação automaticamente. A Tabela 2.9 apresenta os resultados do teste
KS, a um nível de significância de 5%, para alguns modelos conhecidos. Note que, a 5%,
apenas o modelo exponencial pode ser utilizado (o Dcrítico continua sendo igual a 0,0964).

Tabela 2.9 – Teste KS para algumas distribuições, ao nível de significância a=0,05


Distribuição KS
Exponencial 0,07
Beta 0,14
Log Normal 0,14
Gamma 0,16
Erlang 0,18
Uniforme 0,58
2.5. Utilizando software de ajuste de dados (fitting): o que é p-
value?
Como vimos, o processo de modelagem de dados termina com algum teste estatístico para
determinar se o modelo probabilístico selecionado tem ou não aderência ao conjunto de
dados observados. Escolhe-se um certo nível de significância e, se o valor obtido da
amostra (para um certo parâmetro) for menor do que um valor crítico tabelado, então a
hipótese não é rejeitada.
Contudo, os trabalhos técnicos e, principalmente, os softwares fornecem um certo valor,
denominado p-value, a partir do qual são tomadas as decisões de rejeição ou não da
hipótese de aderência. O p-value, ou nível descritivo, representa o menor nível de
significância que pode ser assumido para se rejeitar a hipótese de aderência, ou seja:
• Se , então, H0 é rejeitada ao nível de significância a;
• Se , então, H0 não é rejeitada ao nível de significância a.

Portanto, quanto menor o p-value, mais razões temos para rejeitar a hipótese de
aderência.
Usualmente, trabalha-se com as faixas de valores apresentadas na Tabela 2.10.

Tabela 2.10 – Critérios usuais para classificação do p-value


Valor Critério
p-value 0,01 Evidência forte contra a hipótese de aderência
0,01 ≤ p-value 0,05 Evidência moderada contra a hipótese de aderência
0,05 ≤ p-value 0,10 Evidência potencial contra a hipótese de aderência
0,10 ≤ p-value Evidência fraca ou inexistente contra a hipótese de aderência

O p-value do teste KS, realizado na amostra do exemplo anterior e calculado pelo


software Stat::Fit, foi de 0,11 para a distribuição exponencial. Isso significa que não temos
razões para rejeitar a hipótese de aderência (0,11 > 0,05). Para um maior detalhamento
sobre o cálculo do p-value, ver Devore (2000).
2.6. Outras formas de modelagem de dados
Existem duas outras formas de modelagem de dados de entrada muito comuns na
Simulação de Eventos Discretos: modelagem quando não se dispõe de dados reais, e
utilização de arquivos com séries históricas ou trace files.

2.6.1. Modelagem de dados quando não temos dados


A falta de dados reais para iniciarmos o processo de modelagem ocorre mormente em
três situações: projetos de sistemas que ainda não existem; quando o custo de coleta de
dados é alto ou inviável tecnicamente; e quando, por diversas razões (confidencialidade,
insegurança etc.), o cliente ou atores envolvidos no projeto não fornecem os dados por
diversas razões (confidencialidade, insegurança etc.). Nossa experiência indica que a
terceira situação é a mais comum de todas, o que torna as sugestões propostas a seguir mais
utilizadas do que todo o procedimento discutido nas seções anteriores.
As diversas distribuições estatísticas necessitam de parâmetros (como a distribuição
normal, por exemplo, que é definida pela sua média e pelo seu desvio-padrão), e a falta de
dados reais não nos permite estimar tais parâmetros e muito menos a forma da distribuição.
A regra prática nesses casos é procurar, inicialmente, utilizar as distribuições de parâmetros
mais intuitivos, como as distribuições exponencial, triangular, normal, uniforme e discreta.
A Tabela 2.11 resume os parâmetros, as características e a aplicabilidade dessas
distribuições (mais informações sobre as distribuições estatísticas comumente utilizadas na
simulação estão descritas no Apêndice VII). Algumas dicas finais:
• Deve-se evitar a tentação de se utilizar a distribuição uniforme, pois são poucas as
situações reais em que os valores extremos são tão possíveis quanto os valores centrais.
A exceção ocorre quando o intervalo entre os valores máximos e mínimos é pequeno; por
exemplo, um tempo de processo uniformemente distribuído no intervalo entre cinco e seis
minutos.
• Escolhida a distribuição, nunca se esquecer de realizar uma análise de sensibilidade do
modelo frente a essa distribuição (e aos seus parâmetros). Uma grande variabilidade da
resposta do modelo de simulação frente às alterações dos parâmetros de entrada
inviabiliza a sua utilização e reforça a necessidade de uma coleta de dados mais apurada.
• Os softwares de simulação dispõem de distribuições discretas que permitem “discretizar”
ou “repartir” uma distribuição contínua que só é conhecida por faixas de valores. Esse
tipo de distribuição tende a traduzir melhor as situações em que são conhecidos pontos
intermediários ou faixas de valores da distribuição (veja o exercício 11, por exemplo).
Muitas situações reais são descritas por faixas de valores, por exemplo: “existe 20% de
chance de o atendimento durar cinco minutos; 50% de chance de durar 10 minutos; e 30%
de chance de durar 15 minutos”.

2.6.2. Utilização de séries históricas – trace files


Para verificação, considere a simulação de um terminal portuário. Poderíamos, em vez de
modelar os tempos entre chegadas sucessivas de navios no terminal através de alguma
distribuição estatística conhecida, utilizar a própria série histórica de chegadas de navios
ocorrida ao longo de um ano. Se os dados estão disponíveis e se se considera que o sistema
não sofrerá grandes alterações de comportamento de um período para outro, é sempre
preferível utilizar a série histórica – ou seja, os dados reais – em detrimento de modelos
estatísticos, que sempre são uma simplificação da realidade. A utilização de séries
históricas só não é recomendável para sistemas em que se preveem grandes alterações no
futuro ou quando não se dispõe de um conjunto de dados coletados por um período
suficientemente longo no passado.
Os softwares de simulação tratam esses casos através de trace files. Cada software tem o
seu modo de entrada de dados, e, atualmente, a maioria é capaz de ler os dados diretamente
a partir de planilhas eletrônicas.

Tabela 2.11 – Distribuições estatísticas mais usuais quando não se dispõe de dados reais sobre o
comportamento do sistema
Distribuição Parâmetros Características Aplicabilidade
• Grande variabilidade dos valores
• Variância alta • Independência entre um valor e outro
• Cauda para • Muitos valores baixos e poucos valores altos
Exponencial Média • Utilizada para representar o tempo entre
direita
chegadas sucessivas e o tempo entre falhas
sucessivas
Menor valor, • Quando se conhece ou se tem um bom “chute”
• Simétrica ou
Triangular moda e maior sobre a moda (valor que mais ocorre), o menor
não
valor valor e o maior valor que podem ocorrer
• Quando a probabilidade de ocorrência de
• Simétrica
valores acima da média é a mesma que a de
• Forma de sino
Média e desvio- valores abaixo da média
Normal • Variabilidade
padrão • Quando o tempo de um processo pode ser
controlada pelo
considerado a soma de diversos tempos de
desvio-padrão
subprocessos
• Todos os
valores no
Maior valor e • Quando não se tem qualquer informação sobre
Uniforme intervalo são
menor valor o processo ou apenas os valores limites
igualmente
possíveis
• Utilizada para a escolha de parâmetros das
entidades (p. ex., em uma certa loja, 30% dos
Valores e • Apenas assume clientes realizam suas compras no balcão, e
probabilidade os valores 70% nas prateleiras)
Discreta de ocorrência fornecidos pelo • Quando se conhecem apenas “valores
destes valores analista intermediários” da distribuição ou a
porcentagem de ocorrência de alguns valores
discretos
2.7. Exercícios de revisão
1. Considere um supermercado com seis caixas normais e dois expressos (para compras
com, no máximo, 10 volumes). O objetivo da simulação é determinar os tempos de espera
nas filas. Quais dados devem ser coletados e como você faria o levantamento do tempo
de atendimento nos caixas?

2. Considere um posto de gasolina com duas bombas de gasolina, uma de álcool e uma de
diesel. Além de combustíveis, o posto possui uma loja de conveniência com vagas para
seis carros e um caixa de atendimento. O objetivo da simulação é determinar o tempo
médio de espera e o tempo total de atendimento em todos os casos. Quais são os dados
que devem ser levantados neste problema?

3. Considere uma linha de montagem de uma peça composta de três partes. Existem três
operadores na linha, cada um responsável pelo encaixe de uma parte específica. O
objetivo da simulação é determinar a produtividade da linha. Quais são os dados que
devem ser levantados neste problema?

4. Para os histogramas a seguir, identifique qual o tipo de distribuição parece aderir melhor
aos dados coletados (consulte o Apêndice VII). Utilize a seguinte notação:
a) Normal
b) Exponencial
c) Weibull
d) Lognormal
e) Triangular
f) Uniforme
5. Você foi solicitado a analisar os tempos de viagem de um caminhão entre a fábrica e o
centro de distribuição. A Tabela 2.12 relaciona os dados coletados.
Tabela 2.12 – Exercício 5
Intervalos de tempo em minutos
356 408 333 405 389
400 343 393 10 354
390 362 384 399 374
403 2 366 332 360
4.134 353 344 336 334

Utilizando o teste do qui-quadrado, verifique se os dados aderem a um modelo de


distribuição uniforme no intervalo [332; 408] minutos.

6. A Tabela 2.13 representa uma amostra dos tempos de abastecimento em um posto de


gasolina (valores em minutos).
Verifique a aderência dos dados a um modelo normal com média 5,5 minutos e
desvio-padrão 1,3 minuto através do teste de KS.

Tabela 2.13 – Exercício 6


6,1 5,9 5,3 6,8 5,3
5,5 5,1 6,1 5,5 5,3
4,3 6,0 5,0 3,9 4,0
6,6 4,5 4,1 6,0 4,9

7. O teste dos quartis proposto neste capítulo para identificar valores discrepantes tem seu
uso prejudicado quando a distribuição em estudo apresenta valores que, apesar de
discrepantes no teste, são naturais na distribuição. Considere o conjunto de dados
relacionado na Tabela 2.14.
a) Construa um histograma representando o conjunto de dados e identifique, visualmente,
qual a distribuição que mais se assemelha ao conjunto de dados.
b) Utilizando o procedimento de análises de quartis, identifique os outliers presentes nos
dados.
c) Remova os outliers da amostra e refaça o histograma. Visualmente, a distribuição do item
a continua válida?
d) Explique por que o teste falhou neste caso.

Tabela 2.14 – Exercício 7


0,089 1,377 1,028 0,706 0,809
0,487 0,085 0,824 2,346 0,515
0,970 0,671 0,230 0,229 0,246
1,512 0,257 1,822 1,299 0,323
0,534 0,131 0,150 0,053 0,693

8. Em um concurso público para a prefeitura de Saramandaia, os candidatos João Gibão,


Dona Redonda e Dona Bitela foram selecionados em função de cinco provas diferentes:
Inglês, Lógica, Economia, Estatística e Matemática. O desempenho dos candidatos em
cada uma das provas está representado na Tabela 2.15.

Tabela 2.15 – Exercício 8


Provas Inglês Lógica Economia Estatística Matemática
Média 4,1 4,1 3,8 3,7 2,7
Desvio-padrão 1,2 1,7 1,3 2,3 1,6
Mediana 4,0 6,0 4,0 4,0 3,0
Máximo 6 8 6 8 6
Mínimo 1 0 1 0 0

Considerando o desempenho dos alunos nas provas, responda:


a) Em qual prova houve menor dispersão? (Justifique cuidadosamente)
b) Em qual prova o conjunto dos candidatos teve melhor desempenho, e por quê?
c) Um funcionário da organização do concurso coletou manualmente as idades dos
candidatos (Tabela 2.16). Construa um histograma representando os dados coletados.
Tabela 2.16 – Exercício 8
30 43 27 24 22 29 55 28 24 25 38 30
25 49 24 2 25 43 42 44 28 26 26 72

9. Qual distribuição estatística melhor representa os seguintes processos? Apresente uma


justificativa intuitiva para cada escolha:
a) O tempo que você consome no banho.
b) O tempo que você espera na plataforma de embarque do metrô, contado a partir da
passagem do bilhete.
c) O número de gols em uma partida de futebol e o intervalo de tempo entre eles.
d) O tempo de “luz verde” em um semáforo.
e) Os tempos entre chegadas sucessivas de clientes em um shopping center.
f) Os números sorteados no sorteio semanal da loteria.

10. Em um estudo de simulação para um posto bancário, foram coletados os tempos que um
funcionário consumiu no atendimento a 100 clientes. Contudo, o funcionário era recém-
contratado, e os tempos apresentaram uma tendência de diminuição ao longo da coleta.
Qual condição não está sendo atendida para que os dados possam ser utilizados na
construção de um modelo de entrada?

11. As Indústrias Embromar S.A. estão desenvolvendo um projeto de simulação para a sua
nova planta de produção.10 Como a planta ainda não existe, você foi consultado para
determinar quais as melhores formas de se modelarem os dados de entrada do modelo de
simulação em desenvolvimento. Existem cinco parâmetros de entrada que devem ser
determinados. Para cada parâmetro, você consultou um especialista da Embromar, o qual
lhe passou importantes informações. A partir das informações relacionadas a seguir,
proponha e justifique a forma de modelagem que você entende como mais adequada.
a) “Nós, com certeza, venderemos R$ 300.000 devido aos pedidos em carteira. Existe 50%
de chance de vendermos R$ 600.000 e 10% de chance de vendermos R$ 700.000.”
b) “Do centro de distribuição até o terreno da fábrica, eu levo, geralmente, 95 minutos. Às
vezes, consigo fazer em 40 minutos, se o trânsito está muito bom. Em dia de chuva, já
levei duas horas!”
c) “O tempo médio que levo processando um pedido é cerca de 20 minutos, mais ou menos
10%.”
d) “Essa máquina é muito boa, o tempo de conserto dela, na maioria das vezes, é bem
pequeno. Porém, às vezes, alguma peça que eu não tenho em estoque quebra, e o tempo de
manutenção é muito longo. Meu estagiário calculou que a média do tempo de manutenção
de uma máquina parecida é de cinco minutos. Mas, como essa máquina nova tem menos
peças, acho que o tempo médio será 80% do previsto.”
e) “Olha, eu sou novo aqui. Não fala para ninguém, mas eu não tenho a menor ideia deste
tempo. Acabo de casar, minha mulher está grávida e eu menti um bocado na entrevista.
Passei a manhã inteira conversando com o senhor que se aposentou neste cargo antes de
eu assumir a vaga. Ele disse que nunca viu um processo parecido como este da proposta.
Ele disse que, se não existissem aleatoriedades nos processos, o tempo seria de, no
mínimo, 23 minutos. No processo diferente, mas feito nas outras plantas industriais, este
tempo nunca ultrapassa 50 minutos.”

12. A Tabela 2.17 relaciona os 574 gols11 realizados em 232 partidas em Copas do Mundo
de Futebol, contados da Copa de 1930 no Uruguai até a Copa de 2002 no Japão/Coreia,
divididos em classes que representam os intervalos de tempo entre gols sucessivos. Para
a construção da tabela, os jogos foram “alinhados”, um após o outro, e somente foram
considerados os gols realizados durante o tempo regulamentar das partidas, que é de 90
minutos (desconsiderados, portanto, pênaltis e prorrogações).

Tabela 2.17 – Figura fi


Tempo entre gols sucessivos (min.) Número de gols
0 a 10 144
10 a 20 106
20 a 30 86
30 a 40 52
40 a 50 46
50 a 60 27
60 a 70 35
70 a 80 16
80 a 90 22
90 a 100 12
100 a 110 3
110 a 120 3
120 a 130 6
>130 16

a) Construa o histograma dos dados da Tabela 2.17.


b) Utilizando o teste do qui-quadrado, verifique a aderência ao modelo de Poisson.
c) Qual a probabilidade de que um gol ocorra no primeiro tempo de uma partida?

13. Em um estudo de simulação, os dados coletados foram testados em relação à


distribuição lognormal. Para um nível de significância de 95%, o programa de
computador utilizado para o estudo (no caso, o Input Analyzer) forneceu o seguinte
relatório de saída:
Distribution Summary

Distribution: Lognormal
Expression: 10 + LOGN(3.32, 2.56)
Square Error: 0.009168

Chi Square Test


Number of intervals =5
Degrees of freedom =2
Test Statistic = 2.67
Corresponding p-value = 0.269

Kolmogorov-Smirnov Test
Test Statistic = 0.0919
Corresponding p-value > 0.15

Podemos afirmar que os dados coletados aderem ao modelo lognormal? Justifique.

14. Atividade de coleta de dados. Este exercício é uma atividade para trabalho em equipes
de dois participantes, no mínimo. Uma pessoa deve ser escolhida como o cronoanalista e
a outra como um confeccionador de barcos de papel para os Estaleiros Embromar Ltda.
A atividade está dividida em três etapas: fabricação, compilação dos dados e análise dos
dados.

Etapa I: Fabricação
O confeccionador deve construir um lote-piloto com cinco barcos. O cronoanalista
deve cronometrar o ciclo de construção de cada barco e anotar os tempos (em
segundos). Os barcos do lote-piloto devem ser verificados quanto ao padrão de
qualidade. Caso algum barco não atenda aos elevados padrões de qualidade da
Estaleiros Embromar Ltda., deve ser descartado.
A partir daí, deve-se realizar a produção definitiva de um lote com 30 barcos. O
cronoanalista deve medir o ciclo de fabricação de cada barco. Novamente, se o
barco não segue o padrão estabelecido, deve ser descartado e substituído por um
novo. Mesmo o fato de o tempo de confecção do barco ser descartado nesta primeira
fase não deve ser ignorado.

Etapa II: Compilação dos dados


A partir dos dados coletados na construção dos 30 barcos, construa um histograma
de frequência (estime o número de classes necessárias) e calcule as seguintes
medidas de posição e dispersão: média, moda, mediana, menor valor, maior valor,
amplitude, desvio-padrão, coeficiente de variação e os 1o e 3o quartis. Verifique a
existência de outliers nos dados. Se houver, retire-os, refaça o histograma e
recalcule as estatísticas.

Etapa III: Análise dos dados


A partir do histograma de frequência e das estatísticas descritivas obtidas na etapa
anterior, responda:
a) Há uma pequena ou uma grande dispersão nos tempos coletados?
b) A distribuição obtida foi simétrica ou assimétrica?
c) A amostra é independente e identicamente distribuída?
d) Qual modelo teórico parece representar melhor os dados coletados?
Leitura Complementar

Sete hábitos de sucesso na modelagem de dados


Leemis (1997) propõe sete “hábitos” que um analista deve ter para obter sucesso ao
modelar seus dados de entrada:
1. Levantar os dados corretos. Se quisermos estudar um sistema de fila de atendimento,
de nada adianta levantar dados de desempenho, como o tempo de espera em fila. Em
sistemas de filas, as informações de interesse são: os tempos entre chegadas sucessivas
e os tempos de atendimento.
2. Utilizar todas as possibilidades dos modelos probabilísticos. Não devemos nos
limitar apenas às possibilidades de distribuições probabilísticas que um determinado
software nos permite. Procure verificar se outras distribuições não seriam mais
adequadas e, ao selecionar um software, procure aqueles com o maior número de
distribuições possíveis.
3. Realizar uma análise estatística completa. Analise a presença de outliers, estude o
comportamento do histograma, verifique o teste estatístico mais adequado para a
amostra coletada e considere o nível de significância mais adequado. Alguns pacotes
estatísticos de ajuste de dados são afetados pelo número de classes de agrupamento
escolhidas para o estudo, rejeitando ou aceitando a hipótese de aderência, sem que
sequer as condições para uso deste ou daquele teste sejam atendidas. Além da leitura
da documentação do software, gere algumas distribuições conhecidas (exponencial,
uniforme etc.) em uma planilha eletrônica e verifique a qualidade do pacote de ajuste
de dados, analisando a qualidade dos resultados obtidos.
4. Avaliar a dependência no tempo. Os dados levantados são estacionários ou dependem
do tempo? No caso de um supermercado, eles dependem do horário e do dia em
estudo. A lanchonete de uma faculdade tem um pico de atendimento no horário do
almoço. Contudo, nem sempre temos condições de determinar a priori se os dados
serão dependentes do tempo. Para esses casos, devem ser levantadas amostras em dias
e horários diferentes e proceder-se a uma análise cuidadosa das diferenças entre elas.
5. Considerando modelos paramétricos ou não paramétricos. A complexidade de alguns
fenômenos aleatórios impede a sua aproximação pelos modelos probabilísticos
comuns. Nessas situações, outros modelos devem ser utilizados, como a aproximação
por curvas de Bézier.12
6. Considerar a forma da cauda da distribuição. No caso de algumas distribuições, a
atenção deve ser dobrada no que se refere à coleta de dados. A distribuição
exponencial, por exemplo, é caracterizada por muitas ocorrências com valores baixos
e poucas ocorrências com valores altos, levando o analista a retirar da amostra valores
que, aparentemente, seriam outliers. Nessas situações, procure sempre aumentar o
tamanho da amostra, coletando dados por um período maior de tempo, pois você terá
mais condições de identificar se o dado coletado é realmente discrepante.
7. Realizar uma análise de sensibilidade. Modelados os dados e construído o modelo de
simulação, é hora de verificar qual a sensibilidade da resposta do modelo a pequenas
variações nas características da distribuição probabilística escolhida.
Referências bibliográficas
BILLER, Bahar; NELSON, Barry L. Fitting time-series input process for simulation.
Operations Research, v. 53, n. 3, p. 549-559, 2005.
BILLER, Bahar; NELSON, Barry L. Answers to the top ten input modeling questions.
Proceedings of the 2002 Winter Simulation Conference, p.35-40, 2002.
CHU, Singfat. Motivating the poisson process using goals in soccer. INFORMS
Transactions on Education, v. 3, n. 2, 2003. Disponível em:
<http://ite.pubs.informs.org>. Acesso em: 2 de agosto de 2003.
DEVORE, Jay. Probability and statistics for engineering and the sciences. 5. ed.
Pacific Grove: Duxbury Press, 2000. JOHNSON, Mark E. Multivariate statistical
simulation. Nova York: John Wiley and Sons, 1987.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed., Nova
York: McGraw-Hill, 1991.
LAWLESS, Jerald F. Statistical models and methods for lifetime data. Nova York: Jonh
Wiley and Sons, 1982.
LEEMIS, Larry. Seven habits of highly successful input modelers. Proceedings of the
1997 Winter Simulation Conference, p.39-46, 1997.
NELSON, Barry L.; YAMNITSKY, Michael. Input modeling tools for complex problems.
Proceedings of the 1998 Winter Simulation Conference. 1997. p. 105-112.
SIEGEL, Sidney. Estatística não paramétrica para a ciência do comportamento. São
Paulo: McGraw-Hill do Brasil, 1979.
VINCENT, Stephen. Input data analysis. In: BANKS, J. (ed.). Handbook of Simulation .
Nova York: John Wiley and Sons, p.55-91,1998.
Capítulo 3

Criação do modelo conceitual


3.1. Abstração e modelos abstratos
No Capítulo 1 iniciamos nossa discussão sobre a metodologia da simulação. Um dos
primeiros passos (além da definição do sistema, dos objetivos e das hipóteses) é a criação
de um modelo abstrato, que, como já foi dito, é aquele modelo que a pessoa tem em mente.
O que caracteriza a abstração? Abstrair significa identificar o que realmente é importante
no sistema e trazer para o modelo. Essa abstração está fortemente relacionada aos objetivos
da simulação; dessa maneira, se quisermos determinar a produtividade de um sistema de
manufatura, não nos interessa, ao menos a princípio, considerar em nosso modelo abstrato o
solado do sapato dos operadores. Contudo, se o solado está causando acidentes excessivos,
os quais diminuem o contingente de trabalhadores, então isso deverá ser incluído (ou, pelo
menos, seus efeitos devem estar incluídos no modelo).
Um exemplo interessante de abstração é o mapa do metrô de Londres. Um mapa do metrô
não deixa de ser um modelo (icônico, segundo nossa classificação), pois representa
graficamente um sistema (“metrô de Londres”). Antigamente, o mapa contendo as estações
era construído em escala; assim, a distância entre os pontos ou estações do mapa refletia
fisicamente a linha do metrô. Isso, muitas vezes, causava certa confusão visual. Ora, qual a
utilidade principal de um mapa do metrô? A utilidade básica é a de estabelecer um roteiro
entre dois pontos: uma estação de origem e uma estação de destino. A distância entre as
estações não é um fator tão importante. Atualmente, o mapa contém as estações, mas as
linhas que ligam as estações não refletem a disposição física real das linhas. Esse novo
mapa foi construído com maior abstração, e, embora o número de linhas e estações tenha
aumentado, é muito mais fácil se localizar no mapa atual do que no mapa antigo. A Figura
3.1 mostra o mapa do metrô de Londres em 1921, e a Figura 3.2 mostra a versão atual deste
mesmo mapa. Qual dos dois você prefere?
Figura 3.1 – Mapa do Metrô de Londres (1921).

Figura 3.2 – Mapa do Metrô de Londres (atual).

Nesse ponto, convém fazer a seguinte pergunta: se um modelo é uma abstração ou uma
simplificação da realidade, até que ponto se pode simplificar para que este tenha utilidade?
Parafraseando Einstein: “Um modelo deve ser o mais simples possível, mas não muito
simples; deve ser complicado, se necessário, mas não muito.” Qual é o nível de abstração
“ideal” que devemos ter em um modelo? Essa resposta está longe de ser obtida por alguma
regra: devemos sempre utilizar o bom senso. Lembre-se do princípio do SINSFIT
(Simulation Is No Substitute For Intelligent Thinking).1
Após a elaboração do modelo abstrato em nossa mente, devemos colocá-lo no papel
através de alguma técnica adequada de representação de modelos de simulação conceitual.
Segundo Law (1991), a etapa de criação do modelo conceitual é o aspecto mais importante
de um estudo de simulação. Por isso, daremos atenção especial a esse assunto neste
capítulo, embora muitos livros de simulação e muitos analistas “pulem” esta importante
etapa. Shannon (1975) vai mais além e afirma que uma modelagem conceitual efetiva pode
levar à identificação de uma solução adequada, evitando a necessidade de um estudo
completo de simulação.
A seguir, descrevemos uma das técnicas de representação de modelos de simulação mais
fáceis de entendimento e de utilização prática, que é o Activity Cycle Diagram, ou
Diagrama do Ciclo de Vida.
3.2. Construção de modelos conceituais – Activity Cycle
Diagram (ACD)Activity Cycle Diagram (ACD)2
O ACD é uma forma de modelagem das interações entre os objetos pertencentes a um
sistema; particularmente útil em sistemas com fortes características de geração de filas,
baseia-se na ideia das “engrenagens estocásticas”, de Tocher (1963). Os ACDs contemplam
o princípio da parcimônia, ou seja, utilizam somente dois símbolos para descrever o ciclo
de vida das entidades ou de objetos do sistema: uma circunferência, que representa uma
“fila”, e um retângulo, que representa uma “atividade” (Figura 3.3).

Figura 3.3 – Elementos básicos de um ACD.

No ACD, uma entidade é qualquer componente que possa reter sua identidade ao longo
do tempo. As entidades podem estar aguardando em filas ou participando de alguma
atividade, por meio de interações com outras entidades.
Comumente, uma atividade envolve a cooperação de diferentes classes de entidades. A
duração da atividade é sempre determinada a priori: normalmente fazendo uma amostragem
aleatória de uma determinada função de distribuição de probabilidades (se o modelo de
simulação for aleatório). Por exemplo, o descarregamento de um navio numa posição de
atracação é um estado ativo, em que a entidade “navio” e a entidade “posição de atracação”
(e, possivelmente, outras entidades, tais como “guindastes”, “empilhadeiras” etc.) estão
participando da atividade “descarregar”.
Um estado passivo, ou estado de fila, não envolve cooperação entre diferentes classes de
entidade, sendo, geralmente, um estado no qual a entidade está aguardando alguma coisa
acontecer. O período de tempo que uma entidade gastará na fila não pode ser determinado a
priori, pois depende da duração da atividade imediatamente anterior e da atividade
imediatamente posterior à fila. Por exemplo, o tempo que um navio gasta na fila aguardando
para ser descarregado numa posição de atracação depende do tempo de sua chegada e do
tempo em que uma das posições de atracação se torna disponível.
O ciclo de vida das filas e das atividades é definido para cada entidade. Note que as filas
e as atividades devem estar sempre dispostas alternadamente em qualquer ciclo de vida. Um
ACD completo consiste na combinação de todos os ciclos de vida individuais de cada
entidade. A seguir, mostraremos alguns exemplos de modelagem utilizando o ACD.

Exemplo 3.1: Filósofos famintos


“Um certo número de filósofos se sentam numa mesa circular. Entre cada par de filósofos
há um garfo. Um filósofo só pode comer se ambos os garfos adjacentes a ele estiverem
disponíveis; caso contrário, deverá aguardar. Após acabar de comer, o filósofo pensa por
um certo tempo. Quando para de pensar, tentará comer novamente. Para comer, os filósofos
levam um tempo uniformemente distribuído entre cinco e oito minutos, e, para pensar, um
tempo obedecendo a uma distribuição normal com média de seis e desvio-padrão de um
minuto. O objetivo do modelo é determinar a proporção de tempo que cada filósofo espera
para comer, na média.”

Figura 3.4 – Ilustração para o exemplo dos filósofos famintos.

Aqui cabe um comentário. Embora o exemplo retirado de Paul (1993) fale originalmente
em garfos, acreditamos que este exemplo estaria aplicado a filósofos chineses, e, portanto,
os garfos seriam substituídos por palitinhos. Aí faz mais sentido que cada filósofo necessite
de dois palitinhos... Bem, mas vamos ao que interessa, ou seja, modelar esse problema pelo
ACD. O primeiro passo é definir as entidades, que, no caso, são duas: os filósofos e os
garfos. Basicamente cada entidade possui os “estados” relacionados na Tabela 3.1.

Tabela 3.1 – Estados para o exemplo dos filósofos famintos


Entidade Estado Símbolo

É utilizado
Garfo
Esperando

Comendo

Esperando para pensar

Filósofo
Pensando
Esperando para comer

O próximo passo é criar os ciclos de vida individuais. Ora, os garfos ou estão


“aguardando” para serem utilizados pelos filósofos ou estão auxiliando os filósofos a
“comer”. Por sua vez, os filósofos ou estão “comendo” ou estão “esperando para pensar”,
ou estão “pensando” ou estão “esperando para comer”. Desta maneira, os ciclos de vida (ou
“engrenagens”) de cada entidade, filósofos e garfos, podem ser representados como
indicado, respectivamente, na Figura 3.5 e na Figura 3.6.

Figura 3.5 – Ciclo de vida individual dos filósofos.


Figura 3.6 – Ciclo de vida individual dos garfos.

A partir do momento que construímos os ciclos de vida individuais, iremos juntá-los para
formar o ACD completo. Neste caso, basta reconhecermos as atividades em comum, ou
seja, aquelas que são realizadas pela interação entre duas ou mais entidades. Notadamente,
as atividades “Come” e “É utilizado” são, na realidade, a mesma atividade, apenas mudou-
se o nome devido à perspectiva de cada entidade: quando um filósofo está “comendo”, o
garfo “é utilizado” simultaneamente; portanto, a atividade “come” é uma atividade comum
entre a entidade “garfo” e a entidade “filósofo”. Assim, podemos unir os ciclos de vida das
entidades “filósofos” e “garfos”, formando o ACD completo, como mostra a Figura 3.7, na
qual foi adotado o termo “come” para denominar a atividade comum entre as duas
entidades.
Figura 3.7 – ACD completo para o exemplo dos filósofos famintos.

Na prática o filósofo não precisa esperar para pensar. No entanto, e pelas regras de
construção do ACD, temos obrigatoriamente que alternar atividades com filas; por isso, a
fila “Espera” antes de pensar é obrigatória. Este tipo de fila, na qual a entidade espera por 0
unidade de tempo, é denominada de fila dummy, ou fila “fantasma” – muitas vezes, indicada
por um asterisco (*).

Exemplo: 3.2: O bêbado, a garçonete e o copo


Considere uma versão simplificada de um pub, em que existem três entidades: “o
cliente”, “a garçonete” e “o copo”. Quando o cliente entra no pub, ele pede uma cerveja, e a
garçonete enche um copo para servi-lo. A seguir, o cliente bebe o conteúdo do copo. O
cliente participa, portanto, das seguintes atividades: encher e beber. Tanto a garçonete
quanto os copos participam da atividade “encher”. Os estados das entidades são aqueles
relacionados na Tabela 3.2.

Tabela 3.2 – Estados das entidades do exemplo do pub


Entidade Estado Símbolo

Bebendo

Esperando

Cliente
Encher

Pronto (para beber)

Enchendo
Garçonete
Esperando
Sendo esvaziado

Vazio
Copo

Sendo enchido

Cheio

O ciclo de vida de cada tipo de entidade pode ser visto na Figura 3.8. O ciclo de vida
completo do sistema pode ser construído combinando-se as atividades comuns das
entidades, como mostrado na Figura 3.9.
Figura 3.8 – ACD: ciclos de vida de cada entidade.

O ACD ilustra logicamente que a atividade BEBER não pode começar sem que um cliente
esteja na fila PRONTO e um copo esteja na fila CHEIO. Similarmente, a atividade
ENCHER não pode começar sem que uma garçonete esteja na fila ESPERA, um copo esteja
na fila VAZIO e um cliente esteja na fila ESPERA.

Figura 3.9 – ACD completo do pub inglês.

Ao término de cada atividade, o movimento das entidades é fixo. Depois de ENCHER, a


garçonete vai para a fila ESPERA, e o copo vai para a fila CHEIO. Depois de BEBER, o
copo vai para a fila VAZIO, e o cliente vai para a fila ESPERA.
A convenção de que atividades e filas devem estar dispostas alternadamente num ACD
torna a modelagem mais robusta na circunstância de uma mudança inevitável do modelo. É
essencial, ainda, que todo o ciclo de vida de uma entidade seja fechado. Para entidades
externas que “visitam” o sistema, necessita-se de uma “FILA DO MUNDO EXTERNO”
(Seção 3.5).
3.3. A simulação manual e o método das três fases
O próximo passo após a construção de um modelo conceitual de simulação é garantir que
a lógica do sistema esteja bem descrita. Uma das melhores maneiras de se fazer isso é
realizando uma simulação manual. Há uma grande variedade de métodos para simular
manualmente um modelo, e um deles utiliza o próprio ACD.
Para realizar uma simulação manual com um ACD, desenhamos os ciclos de vida numa
folha de papel grande utilizando diferentes cores para distinguirmos os ciclos das diferentes
entidades. O estado corrente do modelo é descrito pela posição de cada entidade numa fila
ou atividade; isso pode ser facilmente visualizado utilizando-se pequenos recortes de papel
dispostos na folha que representa o ACD.
Um evento é uma mudança no estado do modelo que ocorre num determinado instante de
tempo. Quando uma atividade se inicia, sua duração pode ser amostrada por uma
distribuição específica (Cap. 2), e o tempo em que ela terminará pode ser anotado numa
lista de eventos futuros. A atividade terminará exatamente nesse instante de tempo; portanto,
a finalização de atividades é sempre evento limite. Contudo, não sabemos a princípio
quando uma atividade pode começar: isso depende da correta combinação das entidades
disponíveis nas filas antes da atividade (as precondições para o início de uma atividade). O
início de cada atividade é, assim, determinado por eventos condicionais.
Um dos benefícios da simulação manual é o estabelecimento de prioridades onde elas
existem. Por exemplo, no diagrama final do pub (Fig. 3.16), a entidade “garçonete” pode
escolher o que fará primeiro: ou atender ao cliente, ou lavar os copos.
No método das três fases, a simulação se dá com uma repetição das seguintes três fases,
como ilustra a Figura 3.10:
• Fase A. Verifique os tempos de término para todas as atividades em progresso. Determine
a que terminará antes. Avance o relógio de simulação para este instante.
• Fase B. Para a atividade (ou atividades) que terminar, mova as entidades para suas filas
apropriadas.
• Fase C. Procure as atividades em ordem segundo sua numeração (as atividades devem ser
numeradas em sequência antes da simulação manual). Inicie qualquer atividade que possa
começar e mova as entidades apropriadas das filas para as atividades. Amostre um tempo
de duração da atividade segundo uma determinada distribuição, calcule quando essa
atividade terminará e anote esse tempo.
Figura 3.10 – Fluxograma resumido do método das três fases.

As três fases representam uma estrutura comum presente em qualquer Simulação de


Eventos Discretos:
• Avance o relógio de simulação para o próximo evento;
• Execute os eventos-limite (quando terminam as atividades);
• Execute os eventos condicionais (quando as atividades se iniciam).

Podemos registrar o estado da simulação utilizando essas três fases. Para aplicar o
método das três fases no exemplo do pub, vamos considerar que a atividade “beber” dura
quatro minutos; encher dura três minutos; e que, no início da simulação, copos, clientes e
garçonetes estão dispostos como na Figura 3.11 – note que existem três copos, três clientes
e uma garçonete. A partir dessa configuração inicial, podemos montar a Tabela 3.3
(simulação manual do pub).

Tabela 3.3 – Simulação manual para o ACD do exemplo


A B C
T=0
-o- Encher começa e termina em 3

T=3
Beber começa e termina em 7
Encher termina
Encher começa e termina em 6

T=6
Beber começa e termina em 10
Encher termina
Encher começa e termina em 9

T=7
Beber termina -o-
T=9 Beber começa e termina em 13
Encher termina
Encher começa e termina em 12

T=10
Beber termina -o-

T=12
Beber começa e termina em 16
Encher termina
Encher começa e termina em 15

Vamos detalhar a forma como a tabela da simulação manual foi construída. Na


configuração inicial (T = 0, Figura 3.11), os três copos, os três clientes e a garçonete estão
nas suas respectivas filas de espera (configuração inicial). Como não há nenhum evento
planejado para acabar nesse instante, não iremos preencher nada na fase B, daí o traço na
coluna B para o tempo 0. Vamos então para a fase C, ou seja, verificar quais atividades
podem começar. Vamos eleger arbitrariamente a atividade “beber” como prioritária em
relação à atividade “encher”, e, portanto, devemos perguntar: pode a atividade “beber”
começar? A atividade “beber” não pode começar, pois não há copos cheios nem clientes
nas filas antes de “beber”.

Figura 3.11 – ACD do pub modificado com entidades para simulação manual.

A seguir (ainda na fase C do tempo 0), devemos perguntar: pode “encher” começar?
Verificamos que sim; neste instante, “encher” pode começar, pois, para “encher”, são
necessários um copo, um cliente e uma garçonete. Neste caso, “encher” pode começar, e,
como conhecemos o tempo de enchimento (três minutos), sabemos exatamente quando essa
atividade acabará: no instante 3 minutos (0 + 3 minutos). Mas será que ainda pode ocorrer
outra atividade “encher”? No caso desta configuração, não, pois só há uma garçonete. Se
houvesse duas garçonetes disponíveis nesse mesmo instante, outra atividade paralela a
“encher” começaria e terminaria nos mesmos três minutos. Com isso, a configuração do
nosso pub, para o instante 0 e para a fase C, é aquela ilustrada na Figura 3.13.
Como não há mais nenhuma outra atividade que possa começar no instante T = 0, o
relógio de simulação será avançado para o próximo instante de simulação, que no caso é o
instante T = 3 minutos. Deste modo, estamos agora no instante de tempo T = 3 e na fase B,
em que devemos verificar quais atividades acabaram. Percebemos que somente a atividade
“encher” (que começou no instante 0) acabou no instante 3 minutos. Completamos a nossa
tabela de simulação manual, escrevendo para o instante 3, fase B: “Encher termina”, e as
respectivas entidades vão para as respectivas filas de saída, como ilustra a Figura 3.12.
Figura 3.12 – Fase B, instante T = 3.

Nenhuma outra atividade termina no instante T = 3 minutos; portanto, iremos para a fase
C. Como se definiu que a atividade “beber” é prioritária em relação à atividade “encher”,
devemos perguntar: pode “beber” começar? Neste caso a resposta é afirmativa, pois há um
copo cheio e um cliente “seco” aguardando “beber”. Desta maneira, preenchemos na coluna
C: “beber começa e termina em 7”, pois estamos no instante 3 e sabemos que “beber” dura
exatamente 4 minutos (3 + 4 = 7). Verificamos ainda que outra atividade “beber” não pode
começar (pois ainda não há copo “cheio”) e passamos para a próxima atividade (“encher”),
sempre perguntando: “pode ‘encher’ começar?”. Observamos que sim, pois há copos,
clientes e garçonetes nas respectivas filas que antecedem essa atividade. Neste caso,
devemos também preencher a fase C com “encher começa e termina em 6”, pois estamos no
instante T = 3 e sabemos que “encher” dura 3 minutos (3 + 3 = 6).

Figura 3.13 – Fase C, instante T = 0.

Observamos que outra atividade “encher” não pode começar, pois só há uma garçonete. O
“resultado” do pub no final dessa fase está mostrado na Figura 3.14.
Figura 3.14 – Fase C, instante T = 3.

A partir desse instante, a ideia é sempre a mesma, ou seja, avançamos o relógio de


simulação sempre para o próximo evento (que ocorre em T = 6 minutos) e executamos as
fases B e C. A Figura 3.15 ilustra como fica o pub após o término de cada fase e cada
instante do relógio de simulação até o instante T = 12 minutos.
Figura 3.15 – Simulação manual do pub até o instante T = 12 minutos.

A simulação manual pode continuar até um tempo preestabelecido ou até ocorrer algum
acontecimento específico; por exemplo, um determinado cliente beber mais de quatro vezes.
Obviamente, isso deve ser acompanhado durante cada passo da simulação manual.
Apesar de muito dispendioso, podemos coletar dados estatísticos de uma simulação
manual.3 Por exemplo, para a simulação manual anterior, qual seria a taxa de utilização da
garçonete? Se acompanharmos os tempos de 0 até 12 minutos, veremos que ela ficou todo
tempo ocupada, e, portanto, sua utilização é de 100%. Essas e outras estatísticas (tempos
médios de espera em fila, tempos totais gastos no sistema etc.) podem ser retiradas da
simulação manual.

Observações

Na execução do método das três fases para o exemplo (Tabela 3.3) utilizamos
valores constantes de tempo, mas, como discutido anteriormente, nada impede que
os tempos sejam amostrados de distribuições estatísticas específicas (exponencial,
uniforme, normal etc.).
3.4. Outras dinâmicas de simulação
Cabe comentar rapidamente outros métodos de execução da simulação, também
denominados “estratégias de simulação”. Além do método das três fases, ainda há as
seguintes estratégias:
a) Estratégia de evento. O analista especifica quando ocorrem as ações no modelo. Essa
estratégia é baseada na programação das ações em certos instantes no tempo. Assim, é
construída uma lista de eventos futuros (LEF), e o relógio de simulação é sempre
avançado para o evento mais próximo.
b) Estratégia de atividade. O analista especifica as causas para as ações ocorrerem no
modelo, sendo estas baseadas nas precondições para uma determinada atividade
ocorrer. Sua função básica é varrer todas as atividades uma de cada vez, testando o seu
começo ou o seu final.
c) Estratégia de processo. O analista especifica as entidades e descreve todas as
sequências de ações de cada uma delas, individualmente. Seria como se fosse
executada uma simulação para cada entidade em separado e, para integrá-las,
existissem comandos que habilitassem ou desabilitassem a execução de cada ciclo
baseados nas interações entre as entidades.

É interessante notar que o método das três fases é uma abordagem que mescla a estratégia
de evento com a de atividade. Essas estratégias têm vantagens e desvantagens, que não
serão discutidas aqui. O que ocorre, na prática, é que a estratégia de evento é mais popular
nos Estados Unidos, enquanto a estratégia de atividade e o método das três fases são mais
difundidos no Reino Unido.
3.5. Um pouco mais sobre o ACD
Até agora, trabalhamos com sistemas ditos conservativos ou fechados, ou seja, neles, o
número de entidades no sistema é sempre o mesmo. No caso de existirem chegadas externas
de entidades no modelo e saídas de entidades do modelo (sistemas não conservativos),
utilizamos sempre uma entidade fictícia, denominada “porta” (uma unidade), como
mecanismo de controle de fluxo da entidade que chega ao sistema. No caso do pub, se
quisermos considerar chegadas externas de clientes, a “porta” é quem controlará suas
entradas. Como o ciclo de vida para cada entidade deve ser fechado, temos de adicionar
uma fila: “FILA EXTERNA” para as entidades que entram e saem do sistema. Em um ACD
(e na simulação manual) podemos ainda trabalhar com o que chamamos de “atributos” de
entidades. Um atributo de entidade é um valor que a entidade carrega consigo durante toda a
simulação e que pode ser modificado a qualquer instante. Assim, podemos imaginar que os
clientes, antes de entrarem no pub, já desejam beber determinado número de drinks, e
podemos denominar esse atributo de “sede”. Cada vez que um cliente entra pela primeira
vez no pub, seu atributo é inicializado com um valor, por exemplo, segundo uma
distribuição uniforme de 1 a 4. Cada vez que o cliente acabar de beber, esse atributo é
decrementado (sede = sede-1). Se, ao acabar de beber, o cliente não tiver necessidade de
mais um drink (sede = 0), ele sai do pub; caso contrário, ele volta a entrar na fila de espera
para beber. Podemos ainda adicionar outra atividade à garçonete: lavar os copos. Neste
caso ela estaria alternando entre encher e lavar os copos. No caso de estarmos fazendo uma
simulação manual, devemos numerar as atividades, e a priorização do que fazer deve seguir
estritamente essa numeração. (A Figura 3.16 mostra o ACD do pub completo, com essas
considerações.)
Figura 3.16 – Modelo do pub completo.

Concluindo, as principais vantagens de se representar um modelo através da técnica de


ACD são:
• Simplicidade: é possível desenvolver um modelo de simulação conceitual a partir de,
apenas, dois símbolos;
• Habilidade de mostrar, explicitamente, as interações entre os objetos do sistema e seus
fluxos;
• Facilidade de entendimento e utilização;
• Pode ser utilizado para realizar simulação manual e até para servir de estrutura básica
para alguns simuladores, como o VS7 desenvolvido pela Universidade de Brunel
(SYSPACK, 1990).

Por outro lado, o ACD apresenta algumas desvantagens:


• Os diagramas se tornam ininteligíveis à medida que aumenta a complexidade do sistema a
ser modelado;
• É difícil capturar toda a lógica do modelo no formato ACD, especialmente em se tratando
de um modelo com lógica complexa. Por exemplo, o ACD não mostra claramente
disciplinas de fila ou atribuições condicionais de valores para atributos de entidades.
Segundo Paul (1993), o ACD mostra o fluxo lógico, mas não a lógica em profundidade.
Na próxima seção discutiremos outro tipo de paradigma de modelagem, conhecido como
“Rede de Processo”, ou Process Network.
3.6. Um pouco de visão de processos
Agora apresentaremos um pouco sobre a criação de um modelo conceitual baseado numa
visão de processos (como um fluxograma, por exemplo), e não com a visão do ACD, que é
mais voltada à visão de atividades e eventos. Na realidade, as duas visões são equivalentes,
mas a de processos deixa o modelo com mais “cara de fluxo”, embora o ACD também
explicite o fluxo e as interações entre as entidades. Embora seja de fácil entendimento, o
paradigma do ACD pode parecer um pouco “estranho” para alguns; por isso, no intuito de
agradar aos “processistas”, inserimos esta pequena seção.
Os modelos conceituais descritos com a visão de processos, também denominados de
Process Networks (PN), são, sem dúvida, uma das formas mais antigas de representação de
modelos de simulação (SCHRUBEN, 1992). Os PNs formam a base de diversas linguagens
de simulação correntes, tais como: GPSS, SLAM, SIMAN e XCELL (ver Chwif, 1999). O
exercício resolvido 4 do Capítulo 4 ilustra um modelo simples implementado em GPSS.
Como ainda não falamos nada sobre implementação de modelos (o que faremos no
Capítulo 4), não vamos utilizar nenhuma representação baseada em linguagem de simulação
específica; vamos criar alguns “blocos” construtores (lembre-se de que o ACD possui
somente dois símbolos) e apelidaremos nossa simbologia de SPN, ou Simple Process
Network. Esses blocos, bem como suas representações gráficas, estão ilustrados na Tabela
3.4.
Tabela 3.4 – Blocos construtores do SPN
Nome do Bloco Simbologia

Chegada

Fila

Atraso

Processo com recurso

Condicional

Saída

Os blocos “chegada”, “fila” e “saída” são relativamente fáceis de se entender. O


problema são os blocos “atraso”, “processo com recurso” e o “condicional”. Vamos por
partes. O “atraso” e o “processo com recurso” nada mais são do que uma atividade no
ACD. No primeiro caso, “atraso”, só há a entidade principal envolvida e temos um atraso
de t unidades de tempo. No segundo caso, “processo com recurso”, temos uma entidade
secundária que está envolvida diretamente em uma atividade. Um simples tempo de
transporte pode ser modelado como um “atraso”, e um caixa de banco como um “processo
com recurso” – onde o recurso seria “o caixa do banco”. Para garantir mais clareza, vamos
fazer uma analogia com o ACD (Tabela 3.5). A partir do exemplo do mesmo caixa de banco,
no ACD, teríamos duas entidades: o “cliente” e o “caixa”. Segundo a visão do SPN,
teríamos o “cliente” como entidade principal e o “caixa” como um recurso. Por fim, o bloco
condicional simplesmente gera um desvio de fluxo. Tomando o exemplo do ACD (modelo
do pub completo – Figura 3.16), há uma condição antes da saída do cliente (se o número de
drinks bebidos for igual ao que ele gostaria de beber, ele sai; caso contrário, volta a fazer o
pedido). Isso geraria um bloco condicional no SPN.

Tabela 3.5 – Equivalências de simbologia entre o SPN e o ACD


Nome do Bloco SPN ACD
Atraso
Processo com recurso

Exemplo 3.3: O supermercado Chang


O supermercado Chang possui dois caixas. Há uma fila única nesses caixas. Os
consumidores chegam com intervalos entre chegadas sucessivas que seguem uma
distribuição uniforme entre um e quatro minutos e levam um tempo normalmente distribuído
com média 6 e desvio-padrão de 1 minuto para comprar. O tempo uniformemente
distribuído de atendimento no caixa dura entre cinco e oito minutos. Se, ao chegarem ao
supermercado, os clientes encontram uma fila de mais de quatro pessoas, eles optam por
sair do sistema. O objetivo da simulação é determinar a proporção de consumidores que
saem sem comprar nada. A Figura 3.17 ilustra esse modelo representado por um ACD e seu
equivalente SPN. O que desejamos enfatizar aqui é a importância de se fazer um modelo
conceitual antes do modelo computacional, seja este em ACD, SPN, blocos do GPSS,
fluxogramas etc. Cabe ao projetista escolher a técnica que lhe pareça mais adequada.

Figura 3.17 – Modelos conceituais do supermercado Chang utilizando o ACD e o SPN.


3.7. Especificação de modelos de simulação
O tema “modelagem conceitual” é pouco explorado na literatura e o menos compreendido
(ROBINSON, 2006). No entanto, esse tema é de fundamental importância, pois um modelo
conceitual abrangente certamente levará a um modelo computacional completo que,
consequentemente, levará a um modelo operacional válido (é claro que podem existir
exceções). Por outro lado, um modelo conceitual vago, ou mesmo a inexistência de um
modelo conceitual, provavelmente levará a um modelo computacional que pode não ser
válido o suficiente para um estudo de simulação. Assim, a boa prática sugere que um
projeto de simulação que dedica um esforço adequado à elaboração do modelo conceitual
sempre tem mais chance de sucesso, que é, em última análise, a capacidade do modelo de
representar adequadamente a realidade do sistema.
O ACD, discutido neste capítulo, é uma das formas de se representar o modelo
conceitual. Para uma representação mais completa do modelo conceitual, pode-se elaborar
um documento denominado “Especificação da Modelagem Conceitual”.
Pode-se definir a “Especificação do Modelo de Simulação” como um documento
expresso em linguagem natural, no caso, o português, que pode incluir formas de
representação do modelo conceitual como o ACD ou fluxogramas. A Especificação deve
incluir os seguintes itens:
a) Objetivos: geralmente, os objetivos são a identificação de problemas – gargalos, filas
excessivas, baixa produtividade, nível de serviço inadequado etc. – ou a verificação
de atendimento de metas – metas de produtividade, níveis de serviço, capacidades
operacionais etc. A descrição dos objetivos deve ser clara e pontual, por exemplo:
“definir o número de atendentes na central de atendimento em cada horário, de modo a
atender aos clientes com um nível de serviço 90/20 (90% dos clientes sendo atendidos
em menos do que 20 segundos)” ou “verificar se a capacidade de atendimento do
terminal atende a cinco milhões de contêineres por ano”.
b) Conteúdo: neste item, são apresentados o escopo do modelo, o nível de detalhamento
esperado e a caracterização dos fluxos e processos envolvidos. A descrição do escopo
deve ser curta e direta, por exemplo: “O modelo abrange as etapas de fabricação,
esmaltação e montagem do processo produtivo, excluindo os processos de recebimento
e expedição”. O nível de detalhamento é um pouco mais sutil e especifica o grau de
profundidade do modelo, por exemplo: “O modelo considerará todas as máquinas do
processo de fabricação, apreciando seu tempo total de processamento”. A animação
gráfica pode ou não ser um item no detalhamento do modelo, por exemplo: “As
movimentações das pontes rolantes não serão mostradas em detalhe”. No tocante aos
fluxos e processos, o próprio ACD pode servir como ferramenta de representação, ou
outras formas de representação esquemática, como os fluxogramas de processo,
layouts esquemáticos, mapas etc. Mesmo tendo a parte gráfica do processo, o ideal é
ter um texto descrevendo toda a sequência do processo. A definição do processo
reforça as definições do escopo e o nível de detalhamento.
c) Entradas: são os parâmetros que alimentam o simulador. Idealmente, este item deve
ser complementado por um “memorial de dados de entrada”, identificando-se cada
dado de entrada e o seu modelo probabilístico (Cap. 2), por exemplo: “Dado de
entrada 1: tempo entre chegadas sucessivas de clientes, que será de 10 minutos em
média, segundo uma distribuição exponencial”. O leitor pode se perguntar: “Se ainda
não coletei os dados de campo, como vou saber qual a distribuição estatística dos
dados?”.

Nesse caso, informa-se que a distribuição será coletada em campo para a identificação
da curva adequada. De fato, não é preciso coletar um dado para que o modelo conceitual
fique pronto. Em alguns casos, no entanto, a coleta de dados pode modificar o modelo
conceitual. Como exemplo, pode-se citar um processo com um tempo muito pequeno de
duração que poderá, mais à frente, vir a ser desprezado do modelo, por não afetar
significativamente as medidas de desempenho.
d) Saídas: são as medidas de desempenho que representam as respostas do sistema, por
exemplo: peças produzidas por hora, tempo médio de espera em fila, taxa de utilização
dos operadores etc.
e) Hipóteses e simplificações do modelo: deve-se tomar um cuidado especial com as
hipóteses, pois é fácil confundir uma característica do modelo com uma delas. Uma
hipótese é uma premissa, uma suposição, que assumimos ser verdadeira. Por exemplo,
uma premissa para um projeto de terminal portuário pode ser: “O maior navio a atracar
terá 200 metros de comprimento”. Contudo, não se trata de uma premissa a condição
“navios devem atracar para serem descarregados”, pois essa condição é, de fato, uma
característica inerente ao sistema. As hipóteses, geralmente, levam a uma
simplificação do modelo, e, portanto, a lista de hipóteses é suficiente para a definição
deste item. Há também uma forte correlação entre a definição das hipóteses e o nível
de detalhamento do modelo. Por exemplo, a hipótese “não haverá absenteísmo dos
operadores” ou “as falhas das máquinas serão modeladas apenas através das falhas
principais, modeladas pelo MTBF (mean time between failure) e pelo MTTR (mean
time to repair)”.
f) Definições de rodadas: serão definidos os cenários a serem simulados (um cenário é
um conjunto fixo de dados de entrada), e, se existirem, as definições do planejamento
experimental ou da otimização. Exemplos de definição de cenários seriam: “Cenário 1:
cenário-base com layout atual” ou “Cenário 2: cenário-base acrescido de fluxo de
clientes em situação de pico”. Em alguns modelos, no entanto, não se caracterizam
cenários preestabelecidos, pois o modelo será utilizado por terceiros. Em outros
modelos, pode-se adotar procedimentos de Planejamento Experimental (DOE). Neste
caso, deve-se definir, na especificação do modelo, quais são os fatores/respostas e o
tipo de planejamento a ser adotado. Se o modelo necessitar de simulação-otimização,
deverão ser definidas as variáveis de decisão bem como a função objetivo. Esses
últimos itens (DOE e otimização) podem ser vistos com maior detalhamento no
Capítulo 7.
O Apêndice V ilustra um exemplo de especificação de um modelo de um projeto prático
realizado por um dos autores. Ele contém todos os itens explicitados anteriormente.
Tendo este documento em mãos, temos inúmeras vantagens:
• É mais fácil corrigir erros na especificação do modelo do que no modelo computacional.
Como as informações da especificação estão “no papel”, é muito fácil alterá-las. Já
mudar uma lógica ou elementos no modelo é mais difícil;
• Este documento pode permitir a subcontratação de quem desenvolverá o modelo
computacional. Sem este documento, não é possível passar de forma adequada para
terceiros a descrição do modelo;
• É um documento do processo de modelagem e pode ser resgatado depois;
• Este documento resguarda a relação entre os envolvidos na elaboração do modelo, muitas
vezes comprometida por especificações incompletas. Comumente, uma condução da
especificação evita problemas como o da discussão a seguir:
Cliente: Você não incluiu no modelo o nível de estoque da matéria-prima 1. Assim, não
sei se vai acabar ou não.
Analista: Desculpe-me, Sr. Pacácio. Mas, segundo a hipótese H7 da especificação do
modelo, “as matérias-primas serão consideradas sempre disponíveis e, portanto, serão
desconsideradas do modelo”. Além disso, esta medida de desempenho – nível do
estoque de matéria-prima 1 – não está contemplada nos dados de saída. E foi o senhor
quem validou esta especificação.
Cliente: Não, tudo bem... Não tinha muita importância mesmo...
(Aviso: A cena anterior é criação dos autores, e qualquer semelhança com pessoas ou
fatos reais terá sido mera coincidência.)

Concluindo, embora seja possível desenvolver um modelo computacional sem qualquer


especificação do modelo correspondente, sua construção é altamente recomendada pelos
vários fatores elencados. Ademais, a construção da especificação do modelo força a
“pensar antecipadamente sobre o modelo”, facilitando a construção do modelo
computacional. Chwif et al. (2009) apresentam uma discussão detalhada sobre modelagem
conceitual e especificações de modelo.
3.8. Exercícios de revisão
Para os exercícios de 1 a 5, construa o respectivo ACD4 e classifique os sistemas
descritos em sistemas conservativos ou não.

1. Clínica médica: Neste modelo existem três tipos de entidade: os pacientes, os médicos
(3) e as recepcionistas (2). Os pacientes chegam com um tempo médio entre chegadas
sucessivas de três minutos (exponencialmente distribuídos). Eles formam fila única na
recepção para preenchimento da ficha e depois são encaminhados para um dos três
médicos. Caso todos os médicos estejam ocupados, o cliente permanece em fila,
aguardando atendimento. Os tempos para preenchimento da ficha na recepção são
exponencialmente distribuídos com média de 10 minutos. Os médicos levam em média 20
minutos para o atendimento, segundo uma distribuição exponencial. No final da consulta,
os pacientes retornam às recepcionistas para efetuarem o pagamento e agendarem as
próximas consultas, o que demora um tempo uniformemente distribuído entre um e quatro
minutos.

2. Lavanderia. Os consumidores chegam numa lavanderia com intervalo médio entre


chegadas de 10 minutos (distribuídos exponencialmente) para lavar e secar suas roupas.
Depois de chegarem, utilizam as máquinas de lavar (que são sete ao todo). O tempo de
lavagem é constante: demora 25 minutos. No final da lavagem, o consumidor retira as
roupas da máquina, coloca-as num cesto (há 12 cestos ao todo) e leva o cesto para a
secadora. O tempo de descarregamento das roupas da máquina de lavar está
uniformemente distribuído entre um e quatro minutos. O tempo para transportar as roupas
da máquina de lavagem até a secadora está uniformemente distribuído entre três e cinco
minutos. O cliente, então, carrega a secadora, o que demora somente dois minutos, espera
a secagem, descarrega as roupas e sai da lavanderia. O tempo de secagem +
descarregamento é normalmente distribuído com média de 10 minutos e desvio-padrão de
quatro minutos. Há duas secadoras na lavanderia e sete máquinas de lavar.

3. Centro de distribuição. Os pedidos de entrega chegam em um centro de distribuição de


acordo com um processo de Poisson, com taxa média de quatro chegadas/hora. Neste
centro existem três tipos de veículos: vans, caminhões médios e caminhões semipesados.
A distribuição dos pedidos de carga é de: 50% para as vans 25% para os caminhões
médios e 25% para os caminhões semipesados. Há 10 carregadores ao todo no sistema,
para o carregamento dos veículos. Para carregar uma van, são necessários dois
carregadores, ao passo que para carregar um caminhão médio ou um caminhão
semipesado são utilizados quatro carregadores. Os tempos de carregamento, tanto da van
quanto do caminhão médio, seguem uma distribuição normal com média de 100 minutos e
desvio-padrão de 30 minutos. Para carregar um caminhão semipesado, os carregadores
levam um tempo que segue uma distribuição normal com média de 130 minutos e desvio-
padrão de 45 minutos. A frota total é de três vans, dois caminhões médios e dois
caminhões semipesados. Há também cinco docas de carregamentos, ao todo, no sistema,
sendo duas docas pequenas (só para vans) e três docas grandes (para caminhões médios e
semipesados). Para carregar, os veículos devem estar, necessariamente, posicionados em
uma doca. Os tempos de transporte (da distribuidora até o cliente, e de volta para a
distribuidora) estão uniformemente distribuídos entre 180 a 300 minutos para as vans e
caminhões médios, e uniformemente distribuídos entre 240 minutos e 480 minutos para os
caminhões semipesados. O objetivo do modelo de simulação é verificar se esse sistema
provocará atrasos significativos às entregas dos pedidos.

4. Fundição. O ciclo de derramamento de aço de um alto-forno segue uma distribuição


uniforme entre 90 e 140 minutos. Todo o aço é utilizado no enchimento de um conjunto de
moldes de areia. O ciclo total de enchimento dos moldes leva um tempo uniformemente
distribuído entre 12 e 16 minutos. Após o enchimento, o conjunto de moldes é levado
para um transportador, cujo tempo de transporte é constante e igual a oito minutos. Ao
final do transporte, o produto é desembocado do molde, levando um tempo constante de
12 minutos para desembocar todos os produtos. Em seguida, os moldes, sem os produtos,
se dirigem a uma esteira de retorno, que demora 45 minutos para levá-los à estação de
limpeza/pintura. Para limpar os conjuntos de moldes, leva-se um tempo médio de 10
minutos com desvio-padrão de dois minutos, segundo uma distribuição normal. Após a
limpeza, os moldes se dirigem a um forno, para reaquecimento. O tempo de
reaquecimento é uniformemente distribuído entre oito e 12 minutos. Caso não existam
moldes de areia à disposição após o aquecimento, o forno derrama e desperdiça todo o
aço produzido. O objetivo do modelo de simulação é determinar a quantidade de vezes
que o alto-forno derrama e desperdiça o aço produzido.

5. Usina.5 Numa usina (Fig. 3.18), existem dois altos-fornos que derretem certo volume
diário de ferro, despejam e enchem quantos torpedos estiverem disponíveis (“torpedo” é
o nome dado a um carrinho que anda sobre trilhos, especializado no transporte de ferro
fundido). Se nenhum torpedo estiver no momento exato do tombamento de um alto-forno,
o ferro fundido é despejado no chão e ocorre uma perda. Cada torpedo pode armazenar
uma quantidade de ferro fundente, desde que não ultrapasse seu limite de armazenagem.
Todos os torpedos contendo o ferro fundente vão para uma doca (pit), onde recipientes
movimentados por guindastes são enchidos com o ferro fundente contido nos torpedos, um
de cada vez. O recipiente pode conter, no máximo, 100 toneladas de ferro, que é o
volume exato do forno de preparação do aço alimentado por intermédio do guindaste. Há
um certo número de fornos de preparação, que trabalham simultaneamente e que geram o
produto final da usina. Os dados necessários para a construção do modelo estão
dispostos a seguir:
Altos-fornos: são dois ao todo. A massa do ferro produzido (em toneladas) para
cada forno segue uma distribuição normal, com média de 380 toneladas e desvio-
padrão de 50 toneladas. O tempo entre cada descarga (excluindo-se 10 minutos de
tempo de derramamento) segue uma distribuição normal, com média de 110 e
desvio-padrão de 15 minutos;
Fornos de preparação (aço): cada forno contém exatamente 100 toneladas de aço. O
tempo entre cada carga (incluindo o tempo de descarregamento, mas excluindo o
tempo de carregamento) é constante e igual a 50 minutos, mais um tempo
exponencialmente distribuído com média de 10 minutos;
Guindastes: o guindaste se move ao longo de um trilho e carrega um recipiente que
pode armazenar até 100 toneladas de ferro fundido. Esse recipiente é abastecido na
doca por um torpedo de cada vez. De modo a evitar atrasos, a doca possui duas
posições. Se dois torpedos são insuficientes para abastecer o recipiente do
guindaste, o tempo que se leva para descarregar o segundo torpedo pode ser
considerado suficiente para um terceiro torpedo (se existir) entrar, pronto para
descarregar, no lugar do primeiro. Somente um único guindaste pode estar na doca
de cada vez. O guindaste só sai da doca se o recipiente estiver cheio, com 100
toneladas. Como uma hipótese simplificadora, considere que o trilho suspenso do
guindaste foi construído de tal forma a permitir que um guindaste passe sobre o
outro, no caso de haver mais de um. Leva-se cinco minutos para um guindaste
carregar 100 toneladas de ferro fundido para um forno de preparação de aço que
está vazio. O guindaste não pode antecipar qual será o próximo forno a se
descarregar; para tal, deve aguardar na doca até um forno de preparação estar
disponível para ser carregado. Levam-se dois minutos para o reservatório vazio
preso ao guindaste retornar à doca;
Figura 3.18 – Exercício 5.

Torpedos: cada torpedo pode carregar até 300 toneladas de ferro fundido. Quando o
alto-forno esvaziou seu conteúdo no número mínimo de torpedos necessários (se
disponíveis), todos os torpedos se dirigem à doca. Isso inclui torpedos parcialmente
cheios. O torpedo demora 10 minutos, em média, de acordo com uma distribuição
exponencial, para ir do alto-forno até a doca. Estes só partem da doca quando seu
conteúdo é totalmente esvaziado. O trajeto de retorno (doca para alto-forno) leva
quatro minutos (tempo constante).

O objetivo deste modelo de simulação é verificar a quantidade total perdida de ferro


durante o processo (que ocorre quando não há torpedo para carregar o ferro fundido do
alto-forno).

6. Utilize o ACD completo do pub (Figura 3.16) e faça uma simulação manual até o instante
T = 100 minutos, utilizando o método das três fases. Os dados necessários estão
relacionados a seguir:
• Tempo entre chegadas sucessivas: exponencial, com média de cinco minutos (utilize a
Tabela 3.6);
• Tempo para encher: normal, com média de seis minutos e desvio-padrão de um minuto
(utilize a Tabela 3.9);
• Tempo para beber: uniforme entre cinco e oito minutos (utilize a Tabela 3.8);
• Tempo para lavar: cinco minutos;
• Número de drink a beber: uniforme entre 1 e 4 (utilize a Tabela 3.7);
• Número total de copos: 10 (fila “limpo”);
• Número total de garçonetes: 2 (fila “livre”);
• Número infinito de clientes.
7. Suponha que você é um consultor de Simulação de Eventos Discretos e que uma empresa
deseja que você desenvolva o modelo da usina (exercício 5). Elabore uma especificação
do modelo de simulação (como apresentada no Apêndice V). Qual foi a parte mais
demorada do processo de elaboração? Por quê?

Tabela 3.6 – Exercício 6


Distribuição exponencial, média 5
1 10 15 6 2 2 2 1 11 0
5 13 6 0 11 5 1 20 4 12
3 2 8 1 1 3 1 2 10 5
5 11 1 1 20 7 6 10 4 23
1 12 2 7 1 4 4 1 3 0
5 3 2 6

Tabela 3.7 – Exercício 6


Distribuição uniforme, mínimo 1 e máximo 4
4 2 1 2 2 1 2 2 1 2
4 1 3 3 4 4 1 2 4 1
2 1 1 2 2 3 2 1 1 2
1 2 4 4 1 3 2 1 2 1
2 4 2 3 2 4 1 1 4 3
4 2 4 4 3 3 3 3 3 1
4 1 1 1 4 2

Tabela 3.8 – Exercício 6


Distribuição uniforme, mínimo 5 e máximo 8
7 7 6 7 7 8 8 6 8 8
8 7 8 5 8 8 6 6 5 5
7 6 7 8 6 7 5 5 7 6
8 6 5 7 6 8 7 8 7 7
6 8 5 6 8 6 8 6 5 5
8 6 5 5 5 6 8 5 8 6
6 8 8 5 7

Tabela 3.9 – Exercício 6


Distribuição normal, média 6 e desvio-padrão 1
5 5 6 5 5 5 6 6 6 6
3 5 7 5 6 6 7 6 6 7
6 6 5 6 6 6 7 6 7 6
6 5 6 6 6 5 4 4 6 4
6 4 6 7 7 6 6 6 6 6
5 6 6 7 7 7 6 5 6 6
4 6 7 5 6 6 6
Leitura Complementar

Modelos de simulação: complicar ou descomplicar?6


Primeiramente, devemos responder às perguntas: o que é um modelo simples e o que é um
modelo complexo? Frequentemente, a complexidade de um modelo de simulação é
confundida com o seu “nível de detalhamento”. Na realidade, o “nível de detalhamento” é
um componente que faz um modelo tornar-se mais complexo ou não, mas o “escopo do
modelo” é outro. Considere um sistema de manufatura (uma fábrica, por exemplo). Nesse
sistema, podemos modelar a fábrica inteira ou modelar somente uma de suas estações de
trabalho. No segundo caso, o modelo possui um escopo mais reduzido. Por outro lado, essa
mesma estação de trabalho pode ser modelada com o seu tempo de processo macro ou com
os tempos dos seus subprocessos, detalhes de quebras, detalhes de turnos de trabalho
(quando ela pode ou não operar) etc. Neste último caso, o nível de detalhamento do modelo
é maior. O binômio escopo versus nível de detalhamento é o que define a complexidade do
modelo.
Há um consenso na comunidade de simulação de que um modelo simples é sempre
preferível a um modelo complexo. Um modelo, tanto para o projetista que o criou quanto
para o seu usuário final, deve ser simples, pois um modelo simples é mais fácil de
compreender, modificar, implementar e analisar. Alguns autores afirmam, inclusive, que “a
simplificação é a essência da simulação”. Um modelo simples ainda possui outra vantagem:
a facilidade de jogá-lo fora e começar tudo novamente. Uma vez que um modelo
complicado é criado, é difícil se livrar dele (é muito mais difícil admitir uma falha em um
modelo extremamente custoso do que em um modelo simples e barato). Além disso, com um
modelo simples, o tempo total do estudo de simulação tende a ser menor.
Existem diversos casos de sucesso de modelos simples responsáveis por grandes
resultados. Alguns desses casos podem ser encontrados em Robinson (1994). Em um deles,
um engenheiro automotivo economizou 150 mil dólares em uma tarde de sexta-feira. Um
pequeno modelo de simulação foi desenvolvido, e os experimentos realizados comprovaram
ser desnecessária a compra de certos tipos de equipamento. Como outro exemplo de um
projeto real, a fim de provar quantos veículos eram necessários para movimentar os
materiais em uma indústria de manufatura, um modelo extremamente grande e complexo foi
construído. Depois de nove meses, criou-se um monstro totalmente validado e realizaram-se
os experimentos. Constatou-se uma economia de dois a três veículos no sistema, uma
economia desprezível quando comparada ao custo total do projeto de simulação.
Apesar das inúmeras vantagens, um modelo simples também pode ter alguns problemas.
Por exemplo, um modelo de simulação de um sistema de AGV (Automated Guided Vehicle)
foi simplificado para lidar com somente dois AGVs, em vez de cinco. Ao limitar o escopo
do modelo, apesar dos resultados ainda válidos, o modelo reduzido perdeu sua
flexibilidade, pois só pode ser usado no caso específico (para dois veículos de AGV).
Outro problema é que um modelo demasiadamente simples pode ser inválido (Cap. 5).
Infelizmente, não há qualquer método para determinar o melhor nível de complexidade do
modelo que ainda o mantenha válido.
Embora a maioria dos autores concorde com as inúmeras vantagens de um modelo
simples, muitos modelos complexos ainda são criados. Pode-se tentar enumerar diversas
causas, de ordem técnica e não técnica, para que isso ocorra.
No tocante às causas não técnicas, há uma tendência de que o “complicado” e o “mais
difícil” sejam sempre mais valorizados. Alguns analistas tendem a criar modelos de
simulação complicados e custosos para receberem a aprovação da sua gerência, pois um
modelo simples demais poderia colocar em risco seu posto, já que há, neste caso, uma
conotação de que “qualquer um poderia fazê-lo”. Outra tendência é construir um modelo
complicado, pois é possível em termos de capacidade computacional. Esta, aliada às
facilidades dos softwares de simulação, vem crescendo em um ritmo muito veloz. A
tentação de se criar um modelo mais complexo, pois há recursos disponíveis para tal, é
muito grande.
Em relação a alguns fatores técnicos, podemos citar:
• Falta de entendimento do sistema real;
• Deficiência na habilidade de modelar corretamente o problema;
• Prática de programação pobre.

No entanto, para vários autores, a principal causa do crescimento de modelos complexos


é a falta de objetivos de simulação claramente bem-definidos. Um modelo elaborado e
preciso não tem valor algum se não é capaz de responder a questões relevantes. Um modelo
simples, e até não tão preciso, pode ser mais valioso se fornecer um melhor entendimento
sobre o sistema a ser simulado. O modelo não possui valor nenhum se não for utilizado para
auxiliar em algum processo de decisão. Lembre-se: o objetivo de um estudo de simulação
nunca pode ser somente o desenvolvimento do modelo por si!
Descrevemos, a seguir, algumas regras práticas para simplificar a construção de modelos
de simulação. Algumas dessas regras estão baseadas nos cinco princípios de modelagem,
propostos por Pidd (1996):
• Mantenha simples.7 Esta é a regra fundamental. Isso porque se o modelo já nasce simples,
haverá ganhos ao longo de um estudo de simulação;
• Adicione complexidade depois. Se você tem dúvidas entre incluir ou não um elemento ou
fator num modelo, não o inclua, e assuma a hipótese de que isso não afetará os resultados
do modelo. Somente após analisar os resultados, inclua-o, se julgar realmente necessário.
Sempre faça a pergunta: “Isso é realmente necessário?”. (Evite o paradigma do tipo:
“Melhor o excesso do que a falta”);
• Já fiz um modelo complexo demais, há algum meio de simplificá-lo? Infelizmente, uma
vez criado um modelo complexo, os esforços para simplificá-lo podem não ser
vantajosos;
• Reduza o nível de detalhamento por meio da hierarquia. O uso de uma modelagem
hierárquica (em níveis) pode ser muito importante na administração de modelos
complexos. Neste caso, a hierarquia não simplifica o modelo em si (em termos de
quantidade de elementos); no entanto, enxergamos o modelo “em pedaços” (segundo as
camadas hierárquicas), o que realmente facilita a manipulação e administração do
modelo. Certas vezes podemos agrupar alguma camada (p. ex., um conjunto de máquinas
se torna apenas uma máquina), e, neste caso, estamos realmente simplificando o modelo;
• Reduza o escopo do modelo. Esta regra está diretamente relacionada ao componente
“escopo” da complexidade. Logo, no lugar de elaborarmos um modelo de escopo geral
de uma vez só, dividimos o sistema em partes e modelamos cada uma delas
separadamente, criando uma série de modelos mais simples em vez de um único modelo
mais complexo. Só quando essas partes passarem por todas as etapas de um estudo de
simulação, e se for realmente necessário, integramos esses modelos num maior. Outra
possibilidade é reduzir o escopo do modelo para analisar uma questão mais específica.
Mas lembre-se de que, ao limitarmos o escopo, imprimimos menor flexibilidade.
Referências bibliográficas
CHWIF, Leonardo. Redução de modelos de simulação de eventos discretos na sua
concepção: uma abordagem causal. Tese de Doutorado. Escola Politécnica da USP.
Departamento de Engenharia Mecânica, 1999.
CHWIF, Leonardo; BARRETTO, Marcos R. P; PAUL, Ray J. On simulation model
complexity. Proceedings of the 2000 Winter Simulation Conference p.449-455, 2000.
CHWIF, Leonardo; PEREIRA, Wilson I.; BARRETTO, Marcos R. P. Uma proposta de
padronização para a especificação do modelo conceitual em simulação de eventos
discretos. IV Simpósio de Engenharia de Produção do Nordeste – SEPRONe, 2009.
LAW, Averill. Simulation model’s level of detail determines effectiveness. Industrial
Engineering, v. 23, n. 10, p.16-18, 1991.
PAUL, Ray J.; BALMER, David W. Simulation modelling. Londres: Chartwell-Bratt,
1993.
PAUL, Ray J. Activity cycle diagrams and the tree phase method. Proceedings of the
1993 Winter Simulation Conference, p.123-131, 1993.
PIDD, Michael. Five Simple Principles of Modelling. Proceedings of the Winter
Simulation Conference, p.721-728, 1996.
ROBINSON, Stewart. Successful Simulation: a practical approach to simulation
projects. Maidenhead, UK: McGraw-Hill, 1994.
ROBINSON, Stewart. Conceptual Modeling for Simulation: Issues and Research and
Requirements. Proceedings of the 2006 Winter Simulation Conference, p. 792-800,
2006.
SHANNON, Robert E. Systems simulation: the art and science. Englewood Cliffs:
Prentice-Hall, 1975.
SCHRUBEN, Lee W. Graphical model structures for discrete event simulation.
Proceedings of the Winter Simulation Conference, p. 241-245, 1992.
TOCHER, Keith D. The art of simulation. Londres: English Universities Press, 1963.
SYSPACK. VS7 & Syspack user guide. Londres: SysPack Ltd., 1990.
Capítulo 4

Implementação computacional do modelo


de simulação e softwares de simulação
4.1. Implementação de modelos de simulação
No Capítulo 1, fizemos uma breve discussão sobre o método da simulação. Vimos, no
Capítulo 3, como funciona o processo de elaboração do modelo conceitual, que é o modelo
de simulação expresso em alguma técnica de representação de modelos. O próximo passo é
implementarmos o modelo em alguma linguagem de simulação, simulador ou mesmo em
alguma linguagem de programação de alto nível, criando o denominado modelo
computacional.
Esta etapa nem sempre é fácil e direta, pois depende dos conhecimentos do analista em
relação ao software de simulação utilizado, que pode ser uma linguagem de programação,
uma linguagem de simulação ou um simulador. Antes de entrarmos em detalhes sobre a
diferença entre essas três “formas” de implementar um modelo, traremos um pouco de
história. Neste momento cabe uma breve observação: após a próxima seção, o texto focará
aspectos de implementação de modelos de simulação. Isso significa que, para acompanhar
este capítulo como manda o figurino, deve-se ter algumas noções básicas de lógica de
programação e conhecimento de alguma linguagem de programação de alto nível (p. ex.,
Basic, C, Pascal, Python etc.). Caso contrário, aconselhamos a leitura apenas da próxima
seção, que achamos muito interessante, e a “Leitura Complementar” ao final do capítulo,
que discute um método de seleção de softwares de simulação. Agora, se o leitor está
familiarizado com lógica de programação e linguagens, então, bom proveito!
4.2. Um pouco de história...
No início da década de 1950 (“Idade da Pedra da simulação”), a simulação era realizada
por meio da programação em uma linguagem de programação geral, como FORTRAN.
Todas as funções de um software de simulação (geração de números aleatórios, mecanismo
de simulação, tratamento estatístico dos dados) eram programadas pelo analista.
Em 1961, surgiu o GPSS (General Purpose Simulation System), que é uma linguagem de
simulação ou uma linguagem de programação direcionada à simulação (exercício resolvido
4). A partir da década de 1980, surgiram os primeiros simuladores, que são softwares com
interface própria para minimizar as “linhas de programação”. Com a evolução das
interfaces gráficas dos sistemas operacionais dos PCs, os softwares de simulação ficaram
bem mais fáceis de operar, pois a construção dos modelos tornou-se mais gráfica e menos
textual. Atualmente, os simuladores dominam o mercado, e o que vemos é uma tendência de
customização para aplicações específicas, tais como: manufatura, serviços,
telecomunicações, reengenharia, dentre outros (SALIBY, 1997).
É claro que uma linguagem de simulação é mais flexível do que um simulador, no entanto
os simuladores atuais também possuem capacidade de programação em alguma linguagem
específica. A Figura 4.1 sumariza a evolução dos softwares de simulação no tempo.
Figura 4.1 – Evolução dos softwares de simulação (adaptado de Harrel e Tumay, 1995).

Embora os simuladores tendam a minimizar a necessidade de programação, sempre é


necessário introduzir algum tipo de lógica mais específica, e, para tal, realizar alguma
programação (a não ser em modelos extremamente simples). Convém tomar cuidado com os
vendedores de software que dizem “Com meu software você não precisa programar!”, pois,
às vezes, isso significa: “Com o meu software você não consegue programar!”
4.3. Linguagem de programação vs. linguagem de simulação
vs. simulador?
Para ilustrarmos os diferentes aspectos de implementação de um modelo de simulação,
tomaremos como exemplo um clássico modelo de fila M/M/1.1 Neste modelo, clientes
chegam ao sistema com tempo entre chegadas sucessivas com média 10 minutos
(exponencialmente distribuídos); a seguir, se dirigem a um único atendente, cujo tempo de
atendimento dura em média oito minutos (também exponencialmente distribuídos). Caso o
atendente esteja ocupado, o cliente aguarda em uma fila única sua vez de atendimento. O
ACD deste caso simples pode ser visto na Figura 4.2. O objetivo deste modelo é o de
determinar a taxa de utilização do atendente. Será realizada uma simulação de 10.000
minutos do sistema.
Figura 4.2 – ACD para o exemplo do modelo de fila M/M/1.

4.3.1. Linguagem de programação


Tendo entendido o modelo, basta agora utilizarmos uma linguagem geral de programação
para implementá-lo. Esta poderia ser Basic, C, Fortran, mas, pela facilidade de uso, vamos
escolher a linguagem Python.2
A primeira dificuldade é a geração de números aleatórios. No caso do modelo da fila
M/M/1, temos que gerar tempos exponencialmente distribuídos com média de 10 minutos
para as chegadas e de oito minutos para os atendimentos. Dado um número real U,
uniformemente distribuído entre 0 e 1, sabe-se que podemos gerar uma distribuição
exponencial de acordo com a expressão (esta demonstração poder ser vista no Apêndice
III):

(4.1)

Onde “λ” é o parâmetro da distribuição exponencial e “ln” o logaritmo natural. Para a


implementação em Python, definiremos uma função exponencial(), que terá como parâmetro
a média da distribuição exponencial, da seguinte maneira:
import random # importa a biblioteca de números aleatórios do
Python

def exponencial(media):
U = random.random() # gera número aleatório entre 0 e 1
return -media*ln(U);

Em Python, de fato, a biblioteca random já possui um gerador de números


exponencialmente distribuídos, que pode ser chamado diretamente pela função expovariate:
random.expovariate(lambda) # lambda é igual a 1.0/media

A ideia da simulação neste caso é relativamente simples. Se pensarmos em uma estratégia


de eventos, temos, basicamente, dois eventos:
• Evento 1: Chegada das entidades;
• Evento 2: Término do atendimento.

No caso, também teríamos as seguintes variáveis:


• relogio: indica o tempo corrente de simulação;
• tempoProximaChegada: indica o tempo da simulação em que ocorrerá a próxima chegada;
• tempoTerminoAtendimento: indica o tempo da simulação em que terminará o atendimento;
• statusAtendente: indica o estado do atendente (0=livre, 1=ocupado);
• clientesFila: número de clientes na fila;
• duracaoSimulacao: tempo máximo de simulação;
• TC: tempo médio entre chegadas sucessivas;
• TA: tempo médio de atendimento.

Um fluxograma para esse problema pode ser visto na Figura 4.3. A partir desse
fluxograma, podemos construir o seguinte programa em Python: 3
# Modelagem e Simulacao de Sistemas de Eventos Discretos

#importa biblioteca para geração de números aleatórios


import random

# inicialização de variáveis
statusAtendente = 0
clientesFila = 0
atendimentos = 0
tempoAtendente = 0.0
relogio = 0.0
TC = 10.0
TA = 8.0
duracaoSimulacao = 1000.0

tempoProximaChegada = random.expovariate(1/TC)
tempoTerminoAtendimento = duracaoSimulacao {8}
integralFila = 0
tempoAnterior = 0

#simulação
while (relogio <= duracaoSimulacao): {1}
if tempoProximaChegada < tempoTerminoAtendimento:
# relogio avança para a próxima chegada {2}
relogio = tempoProximaChegada
integralFila += clientesFila*(relogio-tempoAnterior)
tempoAnterior = relogio
if statusAtendente == 0: {4}
# atendente livre
statusAtendente = 1
duracaoAtendimento = random.expovariate(1/TA)
tempoTerminoAtendimento = relogio+duracaoAtendimento
tempoAtendente += duracaoAtendimento {9}
else:
# atendente ocupado
clientesFila = clientesFila+1 {5}
duracaoChegada = random.expovariate(1/TC)
tempoProximaChegada = relogio+duracaoChegada
else:
# relógio avança para término de atendimento {3}
relogio = tempoTerminoAtendimento
atendimentos = atendimentos+1
if clientesFila > 0: {6}
# tem cliente ainda em fila
clientesFila = clientesFila-1
duracaoAtendimento = random.expovariate(1/TA)
tempoTerminoAtendimento = relogio+duracaoAtendimento
tempoAtendente=tempoAtendente+duracaoAtendimento
{10}
else:
# fila vazia, libera atendente {7}
statusAtendente = 0
duracaoChegada = random.expovariate(1/TC)
tempoProximaChegada = relogio+duracaoChegada
tempoTerminoAtendimento = duracaoSimulacao

# imprime resultados
print “Estatisticas finais:”
print “Clientes antendidos: “, atendimentos
print “Ocupacao atendente: “, tempoAtendente/duracaoSimulacao
print “Média de clientes em fila: “, integralFila/duracaoSimulacao
Figura 4.3 – Fluxograma para o modelo M/M/1.

A ideia básica deste programa é a seguinte: enquanto o tempo de simulação for menor do
que o tempo máximo de simulação (vide {1}), temos dois tipos de eventos que podem ser
processados: evento de chegada e evento de término de atendimento. Se o tempo da próxima
chegada for menor do que o tempo do próximo término, então devemos processar o evento
de chegada. Caso contrário, devemos processar o evento de atendimento e avançar o relógio
ou para a próxima chegada ou para o próximo término (vide respectivamente, {2} e {3}).
Se processarmos o evento de chegada, podem ocorrer duas situações: ou o atendente está
livre (vide {4}) ou está ocupado (vide {5}). Se o atendente estiver livre, então ele deverá
atender, gerando um evento de término. Caso esteja ocupado, a fila de clientes aumenta em
uma unidade.
Se estivermos processando eventos de atendimento, podem ocorrer duas coisas: ou a fila
de clientes não é nula (vide {6}), ou seja, clientesFila>0, ou não há nenhum cliente na fila
(vide {7}). No primeiro caso, deve-se atender, diminuindo o número de clientes em fila de
1 e estipular o próximo tempo de término de atendimento. No segundo caso, estipula-se
como próximo tempo de término a própria duração da simulação, armazenada na variável
duracaoSimulacao.
É também por este motivo que, na inicialização da simulação, tempoTerminoAtendimento
é definido como duracaoSimulacao (vide {8}), pois o primeiro evento será
obrigatoriamente a chegada de um cliente, e nunca o término de um atendimento, já que o
sistema está vazio.
Para avaliar a medida de desempenho “utilização do atendente”, cada vez que este está
atendendo, o tempo de atendimento é adicionado à variável “soma” (vide {9} e {10}). A
taxa de utilização do atendente, ρ, será, portanto, o quociente desta variável (tempo que o
atendente esteve ocupado) pelo tempo total de simulação (vide geração de relatório):

(4.2)

Como vimos, embora este modelo seja um dos mais simples, não convém implementá-lo
em uma linguagem de programação. Este programa de pouco menos de 100 linhas só é capaz
de processar um sistema com dois eventos (chegadas e atendimentos de clientes). Imagine,
por um momento, como ficaria complexo programar um modelo com 15 eventos diferentes.
Para minimizar as linhas de código, outra forma de implementar um modelo de simulação é
utilizarmos uma linguagem específica de simulação em vez de uma linguagem geral de
programação. É o que veremos a seguir.

4.3.2. Linguagem de simulação


Antes de descrever este modelo em uma linguagem de simulação, é necessário
aprendermos uma. Para simplificar o entendimento, apresentaremos uma linguagem
hipotética de simulação denominada LINSIM-PFD (Linguagem de Simulação Para Fins
Didáticos). Embora muitos modelos possam ter uma implementação “rápida” em
simuladores, achamos que o aprendizado de uma linguagem geral faz com que se melhore a
lógica de programação. Mesmo em um simulador, temos de desenvolver lógicas ou ainda
programá-las (embora isso seja minimizado por meio das interfaces gráficas).
Como veremos adiante, esta linguagem se enquadra perfeitamente no paradigma do ACD,
e transformar um modelo expresso em ACD em um modelo expresso em LINSIM-PFD é
praticamente direto. Existe uma série de outras linguagens de simulação comerciais, tais
como: GPSS, SLAM, SIMAN, dentre outras (vide referências bibliográficas e o exercício
resolvido 4), que podem ser utilizadas para o mesmo fim, isto é, aprender como uma
linguagem de simulação funciona.

LINSIM-PFD – Linguagem de simulação para fins didáticos


Para estabelecermos nossa linguagem, vamos definir inicialmente seus blocos
construtores básicos, as variáveis de sistema, a lista de comandos e, finalmente, sua lista de
funções.

Estrutura básica da linguagem


Nossa “linguagem caseira” será formada por blocos de 4 tipos: Initialization,
Termination, C_event, B_event. Um modelo pode possuir um único bloco Initialization, que
fornece os comandos iniciais antes da simulação, e um único bloco Termination, que fornece
os comandos após o término da simulação. A quantidade de blocos do tipo C_event e
B_event depende das características do modelo. Os blocos C_event determinam a execução
de comandos condicionados a uma ou mais condições; por exemplo, se determinada fila
possui um certo número de entidades. Os blocos do tipo B_event são disparados por
temporizadores; logo, a condição de execução é dada quando o relógio de simulação atinge
certo valor. A sintaxe destes blocos está descrita a seguir:
Initialization()
<lista de comandos>
end;

Termination(<condição de término da simulação>)


<lista de comandos>
end;

C_event(<nome do evento>, <condição>, <prioridade>)


<lista de comandos>
end;

B_event(<nome do evento>)
<lista de instuções>
End.

Observações

<prioridade> é um número inteiro positivo. 0 é a maior prioridade. Este valor é


opcional. Caso esse valor seja omitido, a prioridade de verificação dos eventos C
se dá na ordem em que estes foram escritos no código.

Variáveis do sistema
Basicamente, nossa LINSIM possui duas variáveis do sistema, que podem ser utilizadas
da maneira que for mais conveniente. É importante que elas sejam acessadas, e não
modificadas, a não ser em aplicações muito específicas (quando o analista souber realmente
o que está fazendo):
• Current: Retorna o código da entidade corrente (ID). Assim, em uma simulação, cada
entidade receberia um número de identificação, ou “ID”. Neste caso, utilizar a expressão
current faz retornar este valor. Note que o código do ID é sempre fornecido pela
simulação, e nunca atribuído.
• S_time: Retorna o valor do tempo corrente da simulação (relógio de simulação).

Conectivos básicos
Como toda linguagem, a nossa LINSIM possui três conectivos básicos: AND, OR e NOT,
que podem ser utilizados para a criação de condições mais complexas. Sejam C1 e C2
condições que podem ser falsas (F) ou verdadeiras (V). O resultado da utilização desses
conectivos segue a Tabela 4.1.

Tabela 4.1 – Operações lógicas OR, AND e NOT


C1 C2 C1 OR C2 C1 AND C2 NOT (C1) NOT (C2)
F F F F V V
F V V F V F
V F V F F V
V V V V F F

Lista de comandos
• Create_Index_Var(<Nome da Variável>): cria uma variável a ser indexada a um
determinado identificador (ID) de uma entidade. Este tipo de variável é também
denominada de atributo da entidade, pois o valor dela depende individualmente de cada
entidade. Exemplo: Create_Index_Var(Sede).
• Create_Var(<Nome da Variável>): cria uma variável numérica de nome <Nome da
Variável>. Exemplo: Create_Var(tempo).
• CreateQ(<Nome da Fila>,<Valor Inicial>): cria uma fila com o nome <Nome da Fila> e
valor inicial <Valor Inicial> (quantidade de elementos na fila). O valor inicial também
pode conter o valor Infinite, que irá representar que a fila contém infinitos elementos.
Exemplo: CreateQ(fila_espera, 20).
• Enqueue(<Nome da Fila>, <ID_entidade>, <Fim>): coloca uma entidade na fila segundo
seu ID (valor individual do sistema) <Nome da Fila>. <Fim> é uma variável booleana
(que pode ser verdadeira ou falsa) tal que:
• Se Fim=False: uma entidade é colocada no início da fila <Nome da Fila> (Cabeça da
fila);
• Se Fim=True: uma entidade é colocada no fim da fila <Nome da Fila> (Cauda da Fila).
Exemplo: Enqueue(fila_espera,current,true).
• IF(<condição>, <comando se a condição for verdadeira>, <comando se a condição for
falsa>): executa comandos condicionais (equivalente a IF-THEN-ELSE). Exemplo:
IF(Qfila>=1, message(“fila tem pelo menos uma pessoa”), message(“fila está vazia”)). O
terceiro parâmetro é opcional.
• Message(<mensagem>): exibe uma mensagem na tela com um texto ou o valor de uma
variável. Exemplo: message(“O valor do relógio de simulação é”, S_time).
• Reset_Stat(): Redefine todas as estatísticas do sistema.
• Schedule(<nome do evento>,<ID_entidade>,<tempo>): planeja o evento limite
<nome do evento> da entidade com determinado ID <ID_entidade> para ocorrer daqui a
<tempo> unidades de tempo. Assim, Schedule(E1,current,5) fará com que o evento limite
E1 seja disparado daqui a cinco unidades de tempo (em termos absolutos, o evento E1
será disparado em s_time + 5).
• Set_Var(<valor inicial>, <valor final>): modifica o valor inicial de uma variável para seu
valor final. No caso de uma variável numérica simples, podemos utilizar
Set_Var(Tempo,20), e no caso de uma variável indexada, pode ser utilizado
Set_Var(Sede[current], Sede[current]-1), onde current é o valor do ID atual.

Lista de funções
• Qsize(<Nome da Fila>): retorna o tamanho (número de entidades) da fila <Nome da Fila>.
• Dequeue(<Nome da Fila>): retira uma entidade no início da fila (cabeça) e retorna o
código individual da entidade (ID).
• Ent_Code(): Retorna o código do ID da entidade corrente.
• Uniform(a,b) ou U(a,b): gera um número uniformemente distribuído no intervalo [a, b].
• Normal(a,b) ou N(a,b): gera um número segundo uma distribuição normal de média a e
desvio-padrão b.
• NegExp(a) ou E(a): gera um número segundo uma distribuição exponencial de média a.
• AvgQueue(<Nome da Fila>): retorna o número médio de elementos na fila <Nome da
Fila>).
• Avg_Time_Queue(<Nome da Fila): retorna o tempo médio de espera na fila <Nome da
Fila>.
• Utilization(<queue>): retorna o fator de utilização de uma fila (só para filas com entidades
conservativas).
Comentários
Uma linha de comentário na linguagem LINSIM-PFD é definida por “{” seguido do
comentário e finalizado por “}”. Exemplo:
{Isto é uma linha de comentário}

LINSIM-PFD – Exemplo para o modelo M/M/1


Apresentaremos a seguir o modelo M/M/1 implementado em LINSIM-PFD. Observe que
ele foi escrito a partir da visualização do ACD (Figura 4.2).
Initialization()
CreateQ(Q_sai, infinite)
CreateQ(Q_esp,0)
CreateQ(Q_atend,1)
CreateQ(Q_porta,1)
Create_Var(tempo1)
Create_Var(tempo2)
End

C_event(Chegada, Qsize(Q_sai)>=1 and Qsize(Q_porta)>=1)


{Chegada}
Set_Var(tempo1,E(10))
Schedule(B1, Dequeue(Q_porta),tempo1)
Schedule(B2, Dequeue(Q_sai), tempo1)
End

B_event(B1) {Porta acaba}


Enqueue(Q_porta, Current, true)
End

B_event(B2)
Enqueue(Q_esp, current, true)
End

C_event(atendimento,Qsize(Q_esp>=1) and Qsize(Q_atend)>=1)


Set_Var(tempo2,E(8))
Schedule(B3,Dequeue(Q_esp), tempo2)
Schedule(B4,Dequeue(Q_atend),tempo2)
End
B_event(B3) {clientes saem do sistema}
Enqueue(Q_sai, current, true)
End

B_event(B4) {atendente termina atendimento}


Enqueue(Q_atend,current, true)
End

Termination(S_time>=10000)
Message(“utilização do atendente = “, utilization(Q_atend))

Observações

Pode parecer que esta implementação ainda é complicada (embora seja bem mais
“enxuta” do que o nosso “programinha” em Python). Poderíamos simplificar ainda
mais, se a implementação não fosse feita de acordo com o paradigma do ACD. No
entanto, esta implementação pode facilmente considerar ainda:

• Número finito de clientes: neste caso, ao criarmos a fila Q_sai, podemos


inicializá-la com um número finito de clientes. Exemplo: CreateQ(Q_sai, 50);
• Vários servidores com fila única: neste caso, basta inicializar a fila Q_atend com
um número maior de elementos. Exemplo para três servidores:
CreateQ(Q_atend,3);
• Desistência de fila: suponhamos que o cliente, ao ver mais de 10 elementos na fila
de espera, sai do sistema. Para considerar esta condição, basta substituirmos o
bloco B_event(B2) (Cliente chega na fila de espera) por:
B_event(B2)
IF(Qsize(Q_esp)<10, Enqueue(Q_esp, current, true),
Enqueue(Q_sai, current, true))
End

4.3.3. Simuladores
Com a utilização de um simulador, a confecção deste modelo fica extremamente fácil.
Como a maioria dos simuladores possui interface gráfica interativa, basta construirmos o
modelo através dos construtores básicos e interligarmos esses elementos segundo o fluxo
lógico (em alguns simuladores, essa tarefa demora alguns segundos). Neste caso, temos uma
chegada, uma fila, um processo de atendimento e uma saída. A aparência do modelo
computacional (utilizando, por exemplo, o simulador SIMUL8) neste caso pode ser
visualizada na Figura 4.4.
Figura 4.4 – Modelo M/M/1 no simulador SIMUL8.

Agora, basta definirmos os parâmetros básicos da chegada e do atendimento, que, no


caso, são os tempos: 10 minutos para as chegadas segundo uma distribuição exponencial, e
oito minutos para o atendimento (também segundo uma distribuição exponencial, Figura
4.5).
Figura 4.5 – Parâmetros para o modelo M/M/1 no simulador SIMUL8.

Para a fila, consideraremos uma disciplina FIFO com capacidade infinita (exatamente o
default do software – Figura 4.6).
Figura 4.6 – Parâmetros da fila para o modelo M/M/1.

Basta definirmos agora o tempo de simulação (10.000 minutos) e rodarmos o modelo.


Após isso, a maioria das medidas de desempenho já estariam contabilizadas, e poderíamos
verificar facilmente qual a taxa de utilização do atendente. Neste caso, uma pessoa
experiente no software poderia construir este modelo em menos de um minuto. Embora seja
um modelo extremamente simples, temos uma ideia de como a implementação de um modelo
de simulação fica facilitada através do uso de simuladores. Aliás, hoje em dia, a utilização
de linguagens de simulação é muito restrita, e quase ninguém implementa um modelo
utilizando uma linguagem geral de programação, a não ser com finalidade extremamente
específica.
Para qualquer modo de implementação adotada (linguagem de programação, linguagem
de simulação ou simulador), convém sempre adotar a estratégia “comer o boi em bifes”.
Isso quer dizer que se deve implementar e testar o modelo em pequenas partes, para então
executar o modelo maior. Retornaremos a essa máxima no Capítulo 5, quando discutiremos
o processo de verificação.
4.4. Exercícios de revisão
1. Implementação das filas M/M/1 e M/M/2.
a Partindo do código da fila M/M/1 fornecido no item 4.3.1, implemente, em uma linguagem
de programação de seu conhecimento, o modelo M/M/1;
b Implemente um segundo modelo que represente a fila M/M/2, ou seja, com dois servidores
em paralelo (neste caso, o modelo do item anterior deve ser estendido para lidar com um
segundo servidor);
c Compare o desempenho dos dois sistemas, para o caso em que o tempo de atendimento de
cada servidor da fila M/M/2 é o dobro do tempo de atendimento do único servidor da fila
M/M/1. Na sua opinião, qual dos dois sistemas possui melhor nível de serviço?

2. Exercício resolvido. Implementar o modelo do pub em LINSIM-PFD (a partir da


descrição do ACD do pub – Figura 3.16 – e dos dados apresentados no exercício 2 do
capítulo anterior).
Solução:
Para facilitar a implementação, reconhecemos que as filas Q_prt e Q_chei são
filas dummies, ou “fantasmas”. Logo, tanto para os copos quanto para os clientes,
juntamos as atividades “Encher” e “Beber” em uma única atividade. O objetivo é
determinar o tempo médio de espera de clientes na fila de espera. Consideraremos
50 copos e três garçonetes. A simulação terminará quando 100 clientes saírem
efetivamente do pub. A implementação deste modelo em LINSIM-PFD está
descrita a seguir:

{inicia todas as filas: note que temos 50 copos e 3 garçonetes}


{criam-se todas as variáveis de geração de tempos e o contador do
número de clientes que saem do sistema}

Initialization ()
CreateQ(Q_port,1)
CreateQ(Q_esp,0)
CreateQ(Q_sai, infinite)
CreateQ(Q_sujo,0)
CreateQ(Q_lim,50)
CreateQ(Q_par,3)
Create_Index_Var(sede)
Create_Var(tempo1)
Create_Var(tempo2)
Create_Var(tempo3)
Create_Var(Nclientes_sai)
Set_Var(Nclientes_sai,0)

End

{bloco para gerar as chegadas dos consumidores, com intervalos


sucessivos segundo uma exponencial com média de 10 minutos}

C_event(Chegada, Qsize(Q_sai)>=1 and Qsize(Q_port)>=1)


Setvar(tempo1,E(10))
Schedule(B1,Dequeue(Q_sai), tempo1)
Schedule(B2,Dequeue(Q_port), tempo1)
End

{ao terminar a chegada, a porta pode voltar para sua respectiva


fila}

B_event(B2)
Enqueue(Q_port, current, true)
End

{após terminar a chegada (exatamente no mesmo tempo que o


bloco anterior), o cliente irá para a fila de espera, mas antes recebe
o atributo sede que indicará quantos copos beberá}

B_event(B1) {chegada cliente}


Setvar(sede[current], U(1,4))
Enqueue(Q_esp,current, true)
{a partir da existência de copos, garçonetes e clientes nas
respectivas filas de espera, os eventos B3 e B4 são programados
para ocorrerem após o tempo de encher + beber. Como a garçonete
está liberada após encher, o evenro B5 é planejado após o tempo de
encher}

C_event(Enche, Qsize(Q_esp)>=1 and Qsize(Q_par)>=1 and


Qsize(Q_lim>=1))
Set_Var(tempo1, N(6,1)) {tempo de encher}
Set_Var(tempo2,U(5,8)) {tempo de beber}
Schedule(B3,dequeue(Q_esp),T1+T2)
Schedule(B4,dequeue(Q_lim),T1+T2)
Schedule(B5,dequeue(Q_par),T1)
End

{cliente a de beber}
B_event(B3)
Set_Var(Sede[current], sede[current]-1)
If (Sede[current]=<0, Set_Var(Nclientes_sai, Nclientes_sai+1))
If (Sede[current]>0, enqueue(Q_esp, current, false),
enqueue(Q_sai, current, true)

{copo acaba de ser usado pelo cliente}


B_event(B4)
Enqueue(Q_sujo, current, true)
End
{garçonete termina de encher}
B_event(B5)
Enqueue(Q_par, current, true)
End

{o bloco a seguir programa o término da lavagem, que demora


exatamente 5 minutos}
C_Event(Lava,Qsize(Q_sujo>=1) and Qsize(Q_par)>=1)
Tempo3:=5
Schedule(B6,Dequeue(Q_sujo), tempo3)
Schedule(B7, Dequeue(Q_par), tempo3)
End

{copo acaba de ser lavado}


B_event(B6)
Enqueue(Q_lim,current, true)
End
{garçonete termina de lavar o copo}
B_event(B7)
Enqueue(Q_par, current, true)
End

{O fim da simulação ocorre quando o número de clientes que sai é


>=100}
Termination(N_clientes_sai >=100)
Message(“O tempo médio de espera na fila do pub é”,
avgtimequeue(Q_esp))
End

3. Implemente os modelos dos exercícios de 1 a 5 do Capítulo 3 em LINSIM-PFD.

4. Exercício resolvido.4 Em uma loja, os clientes chegam ao caixa de pagamentos com


intervalos entre chegadas sucessivas exponencialmente distribuídos com média de 4,5
minutos. O tempo de serviço no caixa é normalmente distribuído com uma média de
3,2 minutos e desvio-padrão de 0,6 minuto por atendimento. Se o caixa estiver ocupado,
uma fila se forma e não há desistência dos clientes em fila. Pretende-se determinar qual a
porcentagem dos clientes que permanecem mais de quatro minutos no sistema. Considere
a simulação para quando saem 1.000 clientes do sistema. Implemente este modelo
utilizando a linguagem GPSS.
Solução:
No item 4.3.2, comentamos que há diversas linguagens de simulação (GPSS,
SLAM, SIMAN). Dentre estas, a GPSS (General Purpose Simulation System) pode
ser considerada um marco, pois substituiu as linguagens de programação e
acelerou a implementação de modelos de simulação. O GPSS foi criado pela IBM
em 1961 e possui mais de 40 blocos ou comandos disponíveis. Cada bloco executa
uma ação específica da simulação. Por exemplo, o comando GENERATE cria
entidades de acordo com uma distribuição, e o comando ADVANCE avança o
relógio de simulação.
Embora seja considerada uma linguagem antiga, ainda estão disponíveis diversas
implementações do GPSS no mercado. Algumas implementações são gratuitas
para uso acadêmico. A solução para o exercício proposto está disposta a seguir e
foi implementada no GPSS Word.5
GENERATE (EXPONENTIAL(1,0,4.5)) ; linha 1
QUEUE tempo_sistema ; linha 2
QUEUE fila ; linha 3
SEIZE caixa ; linha 4
DEPART fila ; linha 5
ADVANCE (NORMAL(1,3.2,0.6)) ; linha 6
RELEASE caixa ; linha 7
DEPART tempo_sistema ; linha 8
TEST GE M1,4,TER ; linha 9
SAVEVALUE Contador+,1 ; linha 10
TER terminate 1 ; linha 11
START 1000 ; linha 12

No GPSS, um comentário se inicia pelo caractere “;”. Para facilitar a descrição do


programa, numeramos as linhas, mas isso é opcional. A primeira linha utiliza o comando
GENERATE, cujo parâmetro principal é o tempo entre chegadas. Neste caso, tem-se a
expressão EXPONENTIAL(1,0,4.5), onde o primeiro parâmetro é o conjunto da semente
aleatória (que já é prefixado), o segundo parâmetro é o deslocamento no eixo do tempo, e
o terceiro a média do tempo, que no nosso caso é 4,5 minutos. Ou seja, a linha 1 gerará
entidades segundo a distribuição exponencial com média de 4,5 minutos.
Nas linhas 2 e 3, aparecem dois comandos do tipo QUEUE. A finalidade desse
comando é iniciar a coleta de dados para gerar a estatística de fila (p. ex., tempo médio
de espera, número médio de elementos em fila etc.). O comando complementar ao
QUEUE é o DEPART, que fecha as estatísticas de contagem de fila. Por que há dois
comandos QUEUE? Na realidade, o comando da linha 2 serve para contabilizar o tempo
desde a entrada do cliente até o final do atendimento do caixa (que coincide com sua
saída do sistema), que é a principal medida de interesse (desejamos saber a proporção de
clientes que permanecem mais do que 4 minutos no sistema). Por este motivo é que há um
DEPART na linha 8. Assim, a estatística “tempo_sistema” computará o tempo total desde
a entrada até o final do atendimento (sinalizado pelo comando RELEASE – linha 7). Do
mesmo modo, a estatística “fila” contempla somente a espera do cliente na fila, pois o
comando DEPART respectivo foi colocado imediatamente após a alocação do servidor
(caixa), ou seja, do início do serviço. Outros comandos que funcionam em pares são o
SEIZE (linha 4) e RELEASE (linha 7). O primeiro aloca um “servidor” ou “recurso”, que,
no caso, chama-se “caixa” (mas poderia ser chamado de qualquer nome), e o segundo o
libera após o término do atendimento. Se o servidor está ocupado, imediatamente, forma-
se uma fila antes dele. O tempo de atendimento é dado pelo comando ADVANCE, e, no
caso da linha 6, o tempo segue uma distribuição normal com média de 3,2 e desvio-
padrão de 0,6. Como no caso da distribuição exponencial, o primeiro parâmetro é o
conjunto de referência da semente aleatória.
A linha 9 aplica um comando de teste lógico. GE vem do termo inglês “greater or
equal”, ou seja, este teste verifica se o tempo total no sistema é maior ou igual a quatro
minutos (M1 é uma palavra reservada). Se positivo, ele executa a linha imediatamente
subsequente (linha 10), que incrementa um contador (comando SAVEVALUE). Caso
contrário, ele “pula” para a linha denominada “TER” (linha 11), e o contador, neste
caso, não é incrementado. A linha 11 (comando TERMINATE) faz com que, de cada
elemento que saia, seja decrementado um contador interno (contador que é iniciado com
o valor X de START X). Quando este contador chega a 0, a simulação para. Por fim, a
linha START 1.000 (linha 12) dá início à simulação. Se fosse digitado START 500, a
simulação terminaria quando 500 clientes saíssem do sistema.

5. Implementar em um simulador as seguintes descrições:


a) Um posto de distribuição de brindes atende a pessoas que querem retirá-los por meio da
apresentação de um cupom premiado – média de seis em cada 10 pessoas – ou que
queiram trocar os brindes recebidos de outras pessoas – média de quatro em cada 10
pessoas. Nota-se que, quando a fila de espera atinge 15 clientes, os novos clientes que
chegam ao posto desistem do atendimento. Crie um modelo de simulação que represente o
funcionamento do posto, considerando que, por hora, em média, 20 clientes chegam ao
posto, com intervalo de tempo entre chegadas sucessivas definido por uma distribuição
exponencial. O posto conta com dois atendentes capazes de fazer qualquer tipo de
atendimento. Os tempos de atendimento das retiradas e trocas seguem distribuições
normais, com médias de quatro e 10 minutos, respectivamente e com desvio-padrão de
dois minutos nos dois casos.
b) Em uma célula de montagem, peças fundidas são usinadas e unidas por parafusos. A
usinagem dura três minutos e é feita sempre em pares de peças, que devem ser
previamente encaixadas em um dispositivo de fixação. Um funcionário é responsável pela
fixação das peças e pela operação da máquina de usinagem. Após a usinagem, outro
empregado une os pares de peças com quatro parafusos e despacha os conjuntos para
outro setor. A célula é abastecida a cada 40 minutos por pallets com 60 peças e caixas de
parafusos que contêm de 990 a 1.010 unidades. A fixação das peças antes da usinagem é
feita em um tempo médio de 40 segundos, normalmente distribuído, com desvio-padrão
de cinco segundos, enquanto a união das peças por parafusos gasta entre 3,5 e quatro
minutos, segundo uma distribuição uniforme.
c) Reconsidere o problema da clínica médica proposto no Capítulo 3. Implemente-o e, a
seguir, altere o modelo de simulação criado para representar, de forma independente, as
situações descritas a seguir:
• Os pacientes desistem da consulta e saem da clínica após esperarem 30 minutos pelo
atendimento médico;
• O layout da clínica obriga as recepcionistas a se deslocarem entre a recepção e o posto
de agendamento. O deslocamento de um ponto ao outro leva 30 segundos, e as
recepcionistas permanecem no último local de atendimento até serem requisitadas
novamente;
• Clientes que esperaram por mais de uma hora pelo atendimento médico recebem
“tratamento especial” na saída: seu processo de agendamento e pagamento dura apenas
dois minutos;
• Ao chegar à clínica, metade dos pacientes desiste da consulta caso existam mais de 10
pessoas aguardando pelo atendimento.
Leitura Complementar

Softwares de simulação: o que é importante?


Um ponto importante em um estudo de simulação, porém não fundamental, é a escolha do
software de simulação para a aplicação em questão. Dizemos que não é fundamental porque
o fator mais importante (e crítico) para o sucesso de um estudo de simulação não é o
software nem o hardware, mas sim o “humanware”, ou seja, o “analista” que está
realizando o estudo. De fato, concordamos em gênero e grau com o que dizem Banks e
Gibson (1997): “A simulação é uma disciplina, e não um pacote de software”. Robinson e
Pidd (1998) também sugerem que o software de simulação não é essencial em um estudo
completo de simulação. Infelizmente, nem todos pensam assim, e reduzem a simulação ao
uso de determinado software.
No entanto, também não podemos negar que a seleção adequada do software e do
hardware influencia principalmente o tempo total de um estudo de simulação. Uma excelente
fonte de informação sobre os softwares de simulação disponíveis é a revista eletrônica
OR/MS Today,6 mantida pelo Institute for Operations Research and the Management
Sciences (INFORMS). A cada dois anos, essa revista apresenta uma survey com os
principais softwares de simulação, relacionando vendedores, principais usos, custos,
principais clientes, sistema operacional utilizado etc.
Outra fonte de informação interessante é o site de comparação de softwares da
ARGESIM,7 grupo europeu de pesquisa e divulgação em simulação. O site apresenta 12
modelos de simulação resolvidos por, no mínimo, dois softwares de simulação diferentes, o
que permite comparar o desempenho de alguns deles.
Uma questão importante na escolha do pacote de simulação é quanto à animação gráfica
que este possibilita. Neste caso, temos três categorias:
• Software sem capacidade de animação ou com pós-animador: softwares textuais;
• Simuladores com animação bidimensional (2-D);
• Simuladores com animação tridimensional (3-D).

O primeiro caso está em extinção nos dias de hoje. Poucas pessoas realizam simulação
sem a animação direta. O pós-animador seria uma animação indireta em que o software
(geralmente textual) gera um trace-file, ou arquivo de simulação, e um outro software (o
“animador”) faz a animação do modelo. Hoje em dia, o comum é a execução da simulação e
a animação integradas num só pacote.
Um software de simulação 2-D (ou duas dimensões) utiliza bitmaps (matrizes de pixel)
para realizar as animações gráficas. Muitas vezes, parece que o desenho é 3-D
(tridimensional), mas na realidade é 2-D, com os ícones desenhados de acordo com alguma
técnica de projeção em perspectiva – também conhecido como “2½-D”.
A dica para saber se o software é realmente 2-D ou 3-D real é simples: se for possível
visualizar o modelo em todas as direções (de topo, de frente etc.), ele é 3-D; caso contrário,
é somente 2-D. A Figura 4.7 ilustra um software 2-D, mas que, com técnicas de projeção,
aparenta ser 3-D.
Figura 4.7 – Representação em 2-D, mas com efeitos 3-D.

Qual é o melhor software, 2-D ou 3-D? Isso obviamente depende do objetivo do projeto
de simulação. Se a construção do modelo for importante apenas por seus resultados
estatísticos, então um software 3-D só complicará as coisas. Agora, se a animação gráfica
for importante para o entendimento do sistema, um simulador 3-D pode ser mais indicado.
Porém, é importante ter em mente dois fatores:
• Os softwares 3-D são muito mais caros que os 2-D (de maneira geral, de duas a três vezes
mais), e é muito mais trabalhoso montar um modelo em 3-D do que em 2-D (pois temos
de colocar todas as características geométricas dos objetos);
• Um simulador não é um animador: se o objetivo é gerar uma animação para impressionar o
cliente, o mais indicado é utilizar um software de animação gráfica (como o 3-D Studio),
e não um simulador.

A Figura 4.8 ilustra os softwares de simulação em relação à qualidade de imagem e


animação e seu custo.

Figura 4.8 – Gráfico comparativo da qualidade da imagem ou animação com o custo de aquisição do software de
simulação.

Quais características um software de simulação deveria possuir para ser considerado


“bom”? Enumeramos o que chamamos de características desejáveis de um software de
simulação. É claro que estamos pensando numa aplicação geral, pois, em uma aplicação
específica, uma característica “desejável”, no sentido genérico, pode não ser tão
“desejável” assim. Neste texto, dividimos essas características em quatro categorias
básicas: gerais, módulos incorporados, construção de modelos e documentação/suporte.
Vamos analisar essas categorias separadamente.

Características desejáveis gerais


• Software barato. Esta característica, aliás, é desejável em todos os produtos e serviços. O
que está ocorrendo hoje em dia é um barateamento dos softwares de simulação, que
outrora apresentavam preços proibitivos para pequenas empresas. No início do GPSS
(final da década de 1960), somente algumas grandes corporações podiam obtê-lo.
Atualmente, existem bons softwares na faixa dos 1.000 dólares, mas ainda há softwares
com preços muito abusivos. Vale a pena sempre analisar o preço do software em relação
às funcionalidades que ele pode oferecer.
• Fornece o tipo de animação segundo sua necessidade. Como foi comentado, há softwares
de simulação 2-D ou 3-D. No entanto, há ainda os softwares “híbridos”, que podem ser
2-D, e, com a compra de um “pacote” adicional, tornam-se 3-D.
• Bugs & crashes mínimos. Falar que um software de simulação nunca apresentará um bug
(“erro de programação”) ou um crash (“aplicação que não funciona”) é como falar que
temos vida eterna. Os problemas ocorrem principalmente pelo fato de os softwares de
simulação serem mais complexos que os aplicativos que estamos acostumados a usar
(como Word, Excel etc.) e também devido às instabilidades inerentes ao próprio sistema
operacional, em especial o Windows (que possui a maior base de software de
simulação). O que se verifica é que alguns softwares “quebram” mais do que os outros. A
regra geral é a seguinte: verifique a versão em que o software está. Quanto mais tempo o
software estiver no mercado e quanto maior a versão do software, menor a probabilidade
de se ter bugs e crashes. Isso, no entanto, é uma regra geral, e às vezes o software pode
já estar no mercado há um bom tempo mas apresentar crashes devido, por exemplo, à
mudança do sistema operacional.
• Software de companhia com reputação. Antes de adquirir um software de simulação, é
importante analisar qual a companhia fabricante, se esta é recente ou já possui muitos
anos de operação, qual é o número de usuários no mundo etc. Isso é importante, porque
ninguém quer comprar um software de uma companhia que corre o risco de falir num
futuro próximo.
• Fácil de utilizar. É claro que a facilidade de uso é uma característica desejável do
software, mas o que é um software fácil de utilizar? Observe que sempre os vendedores
falam que seus softwares são “fáceis de utilizar”. A “fácil utilização” é um conceito
muito relativo e subjetivo, e não coletivo. O que é fácil para uma pessoa pode ser difícil
para outra, principalmente se as pessoas já estão acostumadas a uma forma de utilização.
Exemplos interessantes são os editores de texto Word e Latex. Quem usa o Word acha o
Latex difícil de utilizar, e quem usa o Latex acha o Word horrível. Portanto, sempre, antes
de adquirir um software de simulação, pergunte se este possui uma versão de
demonstração disponível e tente sentir na “própria pele” se a utilização é fácil para você.

Características desejáveis: módulos incorporados


Um software de simulação é muito mais do que apenas a “simulation engine”, ou
“máquina de simulação”. Ele pode apresentar módulos incorporados altamente desejáveis.
Em nossa opinião, os módulos incorporados mais relevantes são:
• Módulo de run-time. Muitos usuários gostariam de ver apenas as rodadas de simulação e
seus resultados, ou mesmo gostariam de passar isso a uma terceira pessoa sem a
necessidade de instalação do software completo (aliás, muitas vezes, nem sempre temos
licenças disponíveis para tal). Dessa maneira, alguns softwares possuem capacidade de
gerar uma versão run-time que apenas permite abrir, rodar o modelo e gerar resultados
(algumas versões permitem até mudar parâmetros de entrada). No entanto, as versões
run-time não permitem modificar a estrutura interna dos modelos nem mesmo salvá-los.
• Módulo de análise de dados de entrada. Muitos softwares de simulação vêm com este
módulo embutido. Este é o módulo que irá se encarregar de fazer o ajuste de curvas dos
dados de entrada (“fitting de curvas”) segundo uma melhor curva de probabilidade mais
bem ajustada.
• Módulo de análise estatística dos resultados. Geralmente, um módulo que se encarrega
de tratar os dados de saída do modelo. Para isso, diversas funcionalidades podem estar
incluídas neste módulo, tais como: geração do intervalo de confiança, técnica de análise
DOE. ou Projeto de Experimentos8 embutida, análise de diferentes cenários e dizer qual o
melhor etc.
• Módulo de otimização. Este assunto será explorado no Capítulo 7, mas a ideia básica é a
seguinte: com um software de simulação, você irá simplesmente analisar cada cenário ou
situação. Desse modo, para descobrir qual a melhor situação ou o melhor cenário, você
deverá ajustar manualmente os parâmetros de entrada do modelo e determinar qual o
conjunto desses parâmetros que melhoram o desempenho do modelo (p. ex., maximizem a
produtividade, diminuam o tempo de espera, minimizem os custos totais etc.). Este
processo manual pode ser “automatizado” acoplando-se o software de simulação a um
algoritmo de otimização, que irá executar conjuntamente com o simulador e buscar o
“melhor” conjunto de parâmetros do modelo que minimize ou maximize determinada
função de desempenho pré-especificada.
• Capacidade de geração de arquivos multimídia. Muitas vezes estamos interessados
apenas em mostrar a animação gerada pela simulação a uma pessoa, mas não queremos
que esta pessoa instale o software completo. Neste caso, alguns softwares de simulação
possuem a capacidade de gerar um arquivo de animação (em formato de “filme”) do tipo
“avi” ou “mpeg”. Basta então utilizar o “player” adequado para visualizar somente a
animação do modelo de simulação.
• Debugger. O debugger, ou depurador, é um módulo importante para verificar um modelo
(Cap. 5). Sempre que alguma coisa parece estar incorreta e não conseguimos encontrar a
causa desse possível problema, devemos executar a simulação passo a passo, com o
depurador ligado, para vermos os detalhes das variáveis do modelo. Fique extremamente
preocupado se o software que você está adquirindo não possuir um depurador.
• Integração com outros softwares. É importante que o software de simulação possibilite se
integrar ou “conversar” com outros softwares, como editores de texto, planilhas de
cálculo ou mesmo softwares de CAD. Isso se traduz num ganho excelente de tempo, pois
este não é gasto na conversão de dados para o formato de outros sistemas.
• Funções de distribuições de probabilidades. É importante que o software tenha uma boa
lista de funções de probabilidades (tanto discretas como contínuas), conforme visto no
Capítulo 2. O software deve permitir, ainda, a entrada de uma distribuição pela definição
dos pontos (distribuição empírica), já que nem sempre conseguimos obter um bom ajuste
de curvas segundo uma função matemática preestabelecida.

Características desejáveis: construção de modelos


• Capacidade de construção de templates. Um template pode ser encarado como um bloco
construtor customizado para uma determinada utilização. Geralmente os construtores
básicos de um simulador são: geração de entidades, filas, atividades e recursos. Esses
construtores básicos podem ser combinados formando um outro de maior nível,
denominado template. Assim, uma fila com uma atividade que sempre utiliza dois
atendentes pode ser agregada em um template chamado “atendimento duplo”.
• Capacidade de integração de modelos. A integração de modelos, ou merge, é uma
característica importante, pois permite “juntar” dois modelos diferentes em um único
modelo. É particularmente interessante quando temos duas partes de um modelo rodando
separadamente e queremos juntá-las, formando um modelo maior.
• Capacidade de modelagem hierárquica. Isto é importante para diminuir a complexidade
aparente do modelo. Neste caso, um modelo pode conter vários submodelos, e assim
sucessivamente. Alguns softwares já permitem esse tipo de modelagem, o que facilita
muito sua organização.
• Capacidade de modelagem por objetos. Neste caso, a construção de um modelo deveria
seguir o Paradigma de Orientação por Objetos (POO). Assim, a modelagem seria mais
flexível, pois, ao definirmos os objetos, poderemos utilizar a propriedade da
hereditariedade9 do POO, sendo mais simples construirmos modelos novos a partir de
modelos antigos. Uma inexpressiva parte dos softwares de simulação se utiliza destas
características.

Características desejáveis: suporte e documentação


Além dos fatores descritos, os softwares devem possuir, como serviços auxiliares:
• Boa documentação (manual). Não adianta o software de simulação ser bom se a
documentação (manual) não está bem escrita ou não é didática. Isto também é válido para
a documentação de “ajuda”, ou help.
• Sites úteis e atualizados. Os (bons) vendedores de software sempre estão
disponibilizando as novas versões ou atualizações via web, e, por isso, é importante
verificar se o vendedor está sempre atualizando seu site com avisos e informações úteis.
Alguns sites de fabricantes até possuem grupos de discussão entre os usuários do
software, para um ajudar o outro na solução de problemas.
• Treinamento. Um bom treinamento no software é condição importante para um bom
desempenho. Lembre-se de que o software de simulação não é simplesmente um software
de prateleira, que basta comprar e sair utilizando. Além dos conhecimentos gerais de
modelagem e simulação, o conhecimento de como o software opera é fundamental.
Verifique se os vendedores de software oferecem treinamentos constantes e em vários
níveis (básico, avançado etc.), de acordo com a sua necessidade.
• Conferência de usuários. Alguns fabricantes de software mantêm, geralmente uma vez ao
ano, uma conferência de usuários para que estes possam trocar experiências e aprender
com os erros. Vários cursos de software são realizados durante essas conferências, o que
é excelente para a reciclagem de conhecimentos. Infelizmente, como a maioria dos
fabricantes de softwares está concentrada nos Estados Unidos ou Europa, dificilmente se
gasta menos do que 2.500 dólares nesta empreitada.

A Tabela 4.2 foi construída a partir dessas considerações, mostrando como podemos
atribuir pesos e notas para cada quesito levantado. Dessa maneira, essa tabela poderia ser
de alguma utilidade em um processo de seleção de softwares de simulação.
A metodologia apresentada é uma possível ferramenta para a seleção de software, mas
não é a única. Robinson (2004) propõe alguns outros critérios para seleção, que incluem o
“Pedigree” do vendedor e outros fatores. No entanto, a forma de cálculo do peso final para
cada software de simulação é análoga ao apresentado aqui. Quando o número de critérios
aumenta e quando há um número grande de subcritérios dispostos em vários níveis (p. ex.,
custo no nível 1, custo de aquisição, custo de treinamento, custo de manutenção no nível 2, e
assim por diante), aconselha-se a trabalhar com a metodologia AHP (Analytic Hierarchy
Process), ou método de análise hierárquica, proposta por Saaty (1980). Alguns autores,
como Davis e Williams (1994) e Nikoukaran, Hlupic e Paul (1999), descrevem como a
metodologia AHP pode ser aplicada especificamente na seleção de softwares de simulação.

Tabela 4.2 – Tabela comparativa para seleção de softwares de simulação

Nome do software:
Versão:
Fabricante:

Total
Peso Nota
Classe Características (Nota x
(0 a 3) (1-5)
Peso)
Software barato
Animação
Características
Bugs e crashes
desejáveis gerais
Reputação companhia
Fácil uso
Subtotal 1 (S1):
Total
Peso Nota
Classe Características (Nota x
(0 a 3) (1-5)
Peso)
Módulo run-time
Módulo de análise de dados de entrada
Módulo de análise estatística dos resultados
Módulo de otimização

Módulos incorporados Capacidade de geração de arquivos


multimídia
Debugger
Integração com outros softwares (CAD,
Excel, Visio etc.)
Funções de dist. probabilidades
Subtotal 2 (S2):
Total
Peso Nota
Classe Características (Nota x
(0 a 3) (1-5)
Peso)
Capacidade de construção de templates
Capacidade de merge
Construção de modelos
Capacidade de modelagem hierárquica
Capacidade de modelagem por objetos
Subtotal 3 (S3):
Total
Peso Nota
Classe Características (Nota x
(0 a 3) (1-5)
Peso)
Bom manual (impresso/help online)
Suporte e Sites úteis e atualizados
documentação Treinamento
Conferência de usuários
Subtotal 4 (S4):
Total
Classe Peso Classe Subtotais (Peso x
(0-3) Subt)

1. Características gerais S1=


2. Módulos
S2=
incorporados
3. Construção de
S3=
modelos
4. Documentação e
S4=
suporte
Total Geral:
Referências bibliográficas
BANKS, Jerry; GIBSON, Randall R. Simulation modeling: some programming required.
IIE Solutions, p. 26-31, 1997.
BANKS, Jerry; CARSON, John S.; NELSON, Barry L.; NICOL, David M. Discrete-event
system simulation. 2. ed. Upper Sandle River: Prentice-Hall International Series in
Industrial and System Engineering, 2001.
DAVIS, Lesley; WILLIAMS, Glyn. Evaluating and selecting simulation software using the
analytic hierarchy process. Integrated Manufacturing Systems, v. 5, n. 1, p. 22-32,
1994.
HARREL, Charles R.; TUMAY, Kerim. Simulation made easy: a manager’s guide.
Norcross: Engineering and Management Press, 1995.
NIKOUKARAN, Jalal; HLUPIC, Vlatka; PAUL, Ray J. A hierarchical framework for
evaluating simulation software. Simulation Practice and Theory, v. 7, n. 3, p. 219-231,
1999.
PAUL, Ray J.; BALMER, David W. Simulation modelling. Londres: Chartwell-Bratt,
1993.
ROBINSON, Stewart; PIDD, Michael. Provider and customer expectations of successful
simulation projects. Journal of the Operational Research Society, v. 49, n. 3, 1998. p.
200-209.
ROBINSON, Stewart. Simulation: the practice of model development and use.
Chichester: John Wiley & Sons, 2004.
SAATY, Thomas L. The Analytic Hierarchy Process. Nova York: McGraw-Hill, 1980.
SALIBY, Eduardo. Softwares para simulação. Anais do Workshop de Simulação, Rio de
Janeiro: Coppead, 1997. p. 17-22.
Capítulo 5

Verificação e validação de modelos de


simulação
5.1. Introdução
O processo de validação e verificação de modelos de simulação (muitas vezes
“apelidado” de V&V) é fundamental para que um estudo de simulação seja bem-sucedido.
Embora no nosso “esquema” de metodologia da simulação (Figura 1.6) ele venha após a
construção do modelo computacional (pois aí estão concentradas as atividades de
verificação), na realidade este processo deve acompanhar todo o ciclo de vida do projeto,
sendo, portanto, um processo contínuo.
Infelizmente, ante a urgência dos prazos de conclusão dos projetos, dois tópicos são
praticamente esquecidos: um é a documentação do modelo (Apêndice IV), o outro é a
verificação e validação. Mas o que significa verificar e validar um modelo?
5.2. Verificação e validação
Embora foneticamente as palavras anteriores se pareçam, estes dois conceitos são
completamente distintos entre si. O termo “validação” está relacionado ao modelo
conceitual.1 Neste caso, o objetivo da validação do modelo equivale a responder à seguinte
pergunta:

“Será que estamos desenvolvendo o modelo correto?”

Ou, de outro modo: será que as considerações feitas, o nível de detalhamento, o escopo
do modelo etc., representarão de forma adequada o sistema a ser simulado? Na teoria, o
conceito de validação é extremamente simples. Observe uma definição interessante de
validação (operacional) proposta por Pidd (2000):

Um modelo é uma representação do mundo real, ou pelo menos de parte dele.


Portanto, a validação de um modelo é realmente muito direta – em princípio. Tudo o
que devemos fazer é checar se o modelo comporta-se como o mundo real sob as
mesmas condições. Se ele se comporta, então o modelo é válido, caso contrário, não
é válido.

Já a verificação está sempre relacionada ao modelo computacional (ou modelo


implementado em algum software de simulação). Neste caso, a pergunta que devemos fazer
quando verificamos um modelo é:

“Será que estamos desenvolvendo corretamente o modelo?”

Outra maneira de entender o processo de verificação é fazermos uma analogia entre a


implementação de um modelo de simulação e a implementação de um programa em alguma
linguagem de programação convencional (p. ex., Pascal, C, Delphi, Python etc.).
“Verificar”, em um sentido mais simplista, significa retirar os bugs do modelo (ou
elementos que estão causando o seu mau funcionamento), tal como se tiram os bugs de
programas.
Portanto, a validação está relacionada ao que será modelado, ao passo que a verificação
está relacionada ao modo como o modelo é implementado.
A Figura 5.1 ilustra esses conceitos, inclusive o conceito de validação operacional.
Figura 5.1 – Conceitos fundamentais da verificação e validação.

Vamos entender o que significam as etapas de 1 a 6. Dado o mundo real (ou mesmo até o
mundo imaginário, que é “real” em nossa mente), ao criarmos um modelo conceitual
(expresso, por exemplo, em ACD), efetuamos o que chamamos de modelagem (1). Ao
fazermos o inverso, ou seja, ao confrontarmos o modelo conceitual com o sistema do mundo
real, estamos justamente realizando o processo de validação, ou validação do modelo
conceitual (2). Na sequência, implementamos o modelo conceitual em alguma linguagem de
simulação ou de simulador. Após a implementação (3), devemos verificar se o
comportamento do modelo está de acordo com o modelo conceitual; esta fase é denominada
verificação do modelo (4). Após o modelo computacional ser devidamente verificado, ele é
considerado operacional e pode ser utilizado para a experimentação (5). Realizados os
experimentos e obtidos os resultados a partir do modelo computacional, devemos observar
se esses resultados são condizentes com o mundo real: esse processo é denominado
validação operacional (6).
Durante todo esse processo, é importante ressaltar:
1. Pode existir um modelo que foi verificado (não apresentando problemas), mas que é
completamente inválido, pois não consegue representar adequadamente o mundo real.
Considere, por exemplo, uma fila em um sistema real com um único servidor, em que o
tempo de atendimento depende do tipo de cliente. Além disso, esse sistema apresenta
desistências de clientes quando a fila está muito grande. Embora o sistema funcione
com disciplina FIFO2 (first-in, first-out), há casos de pessoas que têm prioridade no
atendimento porque possuem certas características específicas e podem “furar” a fila.
Ademais, o servidor para de tempos em tempos, aleatoriamente. Ora, se reduzirmos
essa situação a uma fila M/M/1 com uma certa taxa de chegadas e uma certa taxa de
atendimento, podemos ter um modelo totalmente inválido, pois este não considera: os
tipos diferentes de clientes, as desistências da fila, a disciplina da fila com regra de
prioridade, as paradas no atendimento e as distribuições dos tempos não exponenciais.
No entanto, podemos implementar este modelo fazendo com que não apresente erro: ele
fornece os resultados compatíveis com a respectiva fila M/M/1. Isso reforça a
afirmação de que validação e verificação são conceitos distintos.
2. Duas “regras de ouro” da verificação e validação devem estar sempre em nossa mente:
• Não há como validar um modelo em 100%, ou garantir que ele seja 100% válido. O
que conseguimos é aumentar nossa confiança no modelo, ou “acreditar” que ele
representa satisfatoriamente o sistema;
• Não há como garantir que um modelo seja totalmente livre de bugs. Ou seja, embora
o modelo possa ser verificado para determinada circunstância, não há como garantir
que, para quaisquer circunstâncias, funcione conforme pretendido.
3. Alguns autores, como Sargent (2000), ainda se referem à expressão “certificação”3 de
modelos de simulação. A “certificação” poderia ser definida como a confirmação
oficial de que um modelo de simulação é aceitável para a utilização em uma aplicação
específica. Obviamente, a “certificação” de um modelo de simulação também envolve
os processos de validação e verificação e até itens como a documentação da
simulação, dentre outros aspectos. A “certificação”, necessariamente, deve ser
efetuada por uma terceira pessoa, não envolvida diretamente no processo (uma pessoa
externa).
5.3. Técnicas de verificação
Como vimos, a verificação de modelos de simulação pode ser facilmente entendida como
a retirada de bugs do modelo computacional, e há algumas técnicas ou procedimentos que
podemos utilizar para facilitar este processo, são eles:
• Implementação modular/verificação modular. Aliás, esta é uma técnica de programação
que também é aplicada à implementação de modelos de simulação. Sempre que
implementarmos um modelo, devemos utilizar a máxima de “comer o boi em bifes”, ou
seja, implementar partes do modelo e depois rodar somente essa parte. Se essa parte
aparentemente estiver correta, então, passe para a segunda parte, e assim sucessivamente.
Imagine que você tem um modelo com 100 variáveis, e digamos que você dividiu esse
modelo em cinco modelos com 20 variáveis cada um. Assumindo que a probabilidade de
encontrarmos um erro é de 0,2 por variável, ou seja, um erro a cada cinco variáveis, o
que é melhor: implementar em partes e corrigir quatro erros de cada vez em média ou
tentar corrigir de uma única vez 20 erros?
• Valores constantes ou simplificados vs. cálculos manuais. Esta é uma técnica bem
interessante. Numa simulação, podemos utilizar uma ampla gama de distribuição de
probabilidades. O que podemos fazer é tomar os valores médios de cada distribuição e
considerarmos esses valores como constantes e determinísticos (e, desta maneira,
fazermos uma simulação determinística). É claro que os resultados serão incorretos com
esse tipo de simplificação; no entanto, podemos facilmente comparar os resultados do
modelo com os resultados de uma planilha de cálculo e observar se eles “batem” entre si.
Por exemplo, numa fila simples, se a taxa entre chegadas for constante e igual a 10
minutos e o tempo de atendimento for constante e igual a oito minutos, a taxa de utilização
do atendente é de 8/10 = 80%. Na simulação, devemos obter exatamente esse valor.
• Utilização do debugger, trace ou depurador. No Capítulo 4, comentamos sobre a
importância do depurador em um software de simulação: a possibilidade de fazer com
que a simulação “ande passo a passo” e de visualizar os eventos que estão ocorrendo e
eventos futuros, bem como os valores das variáveis do modelo. Realmente, quando não
conseguimos descobrir qual é o erro no nosso modelo computacional, devemos enxergá-
lo com uma “lente de aumento”. Essa “lente de aumento” é propiciada pelo depurador.
• Simulação manual. Embora a simulação manual seja dispendiosa, ela é de grande valia,
por permitir que o analista ganhe uma “sensibilidade” prévia do comportamento do
modelo. Dessa maneira, quando implementar o modelo no computador, terá uma
percepção maior sobre a correspondência entre o modelo computacional e o conceitual.
É claro que essa técnica se torna inviável para modelos muito grandes.
• Animação gráfica. A animação gráfica é uma poderosa ferramenta de verificação.
Considere, por exemplo, um modelo de um supermercado em que clientes simplesmente
“desaparecem do supermercado sem passar no caixa”. Ora, alguma coisa deve estar
incorreta na implementação. O mesmo acontece quando determinados clientes “tomam a
rota errada”. Todos esses tipos de erro podem ser diagnosticados facilmente pela
animação gráfica.
• Revisão em grupo. Geralmente é mais difícil encontrarmos nossos próprios erros do que
uma terceira pessoa encontrá-los. Portanto, uma técnica interessante é fazermos a
implementação do modelo e deixarmos outra pessoa, ou até mesmo um grupo de pessoas,
verificar se o modelo está funcionando adequadamente.
5.4. Técnicas de validação
Antes de comentarmos as técnicas propriamente ditas de validação de modelos de
simulação, é interessante comentarmos sobre os eventuais erros que podemos cometer (em
analogia aos famosos erros de teste de hipóteses em estatística). Na validação podemos
cometer três tipos de erros:
• Erro do tipo I. O modelo é válido, mas rejeitamo-lo, pensando ser inválido.
• Erro do tipo II. O modelo é inválido, mas aceitamo-lo como um modelo válido.
• Erro do tipo III. O modelo se desvia dos objetivos estabelecidos (pode até ser válido,
mas não é capaz de responder às perguntas em questão).

Na prática, os erros do tipo II são os mais comuns.


Além dessas possibilidades, podemos encontrar problemas na validação de modelos de
sistemas novos, que nunca entraram em funcionamento. Neste caso, a validação é mais
difícil, pela ausência dos dados históricos do sistema real.
Dentre as principais técnicas de validação de modelos, podemos citar:
• Teste de Turing, ou validação black-box. Em um de seus consagrados artigos, o famoso
matemático britânico Alan Turing propôs uma questão: “Podem as máquinas pensar?”
(TURING, 1950). Para responder a essa questão, ele propôs um teste, o “teste da
imitação”, ou “imitation game”, que mais tarde ficou conhecido como “Teste de Turing”.
Nele (Fig. 5.2), há três salas com terminais de computadores interligados. Uma sala
contém um Interrogador, noutra sala há uma pessoa ligada a um terminal e, na terceira
sala, há um computador com um software de conversação (chatterbot). Tanto o
computador, em uma das salas, como a pessoa na outra devem responder às perguntas
formuladas pelo interrogador (sempre de forma datilografada). O teste consiste em o
interrogador tentar descobrir quem é o computador e quem é a pessoa. Se o interrogador
falhar em localizar o computador, este poderia ser considerado “inteligente”. Este teste
teria uma analogia com o caso da validação de modelos de simulação. Tomaríamos uma
pessoa que entenda bem do sistema (especialista) que foi simulado e apresentaríamos a
ela dois conjuntos de dados de saída, um vindo do sistema real e outro do modelo de
simulação (obviamente, sem falar qual é qual). Caso o especialista não consiga distinguir
se os resultados são oriundos do sistema real ou do modelo de simulação, então, o
modelo poderia, em certa extensão, ser considerado “válido”. Novamente, este teste só é
possível quando temos os resultados operacionais do sistema real e quando estamos
simulando o sistema real; qualquer mudança no modelo para representar uma melhoria do
sistema real não pode ser contemplada neste teste. Outra maneira de se atingir
praticamente os mesmos objetivos sem a necessidade da presença de um especialista é
comparar estatisticamente (através de técnicas estatísticas adequadas de comparação) o
resultado do sistema real (dados históricos) com os resultados da simulação (exercício
5).
Figura 5.2 – Ilustração do Teste de Turing.

• Duplicação de modelos. Esta técnica, embora seja altamente eficiente, é muito onerosa,
pois supõe a existência de duas equipes independentes desenvolvendo modelos do
mesmo sistema. Dessa forma, se as duas equipes (operando independentemente, isto é,
sem contato uma com a outra) desenvolverem modelos que fornecem resultados similares,
isto seria um bom indicador da validade do modelo. Por ser extremamente onerosa, é
utilizada somente em alguns tipos de simulações críticas, cujo sistema envolva custos
elevados ou em que haja perigo de perda de vidas humanas.
• Comparação com modelos anteriores. Muitas vezes podemos utilizar modelos anteriores
para buscarmos indícios da validade do modelo atual. Em muitos casos, o modelo que
estamos desenvolvendo pode partir de um modelo já validado, o que facilitaria esse
processo. Em alguns casos, o modelo de simulação pode ser comparado a um modelo
mais simples (um modelo de Teoria das Filas, por exemplo).
• Análise de sensibilidade. Fazer uma análise de sensibilidade significa determinar a
influência de alterações dos parâmetros de entrada nos resultados obtidos a partir do
modelo. Em que isso ajudaria na validação do modelo? Ora, se sabemos que os
parâmetros A e B são críticos para o modelo, ou seja, o modelo é sensível a eles e os
parâmetros C e D não o são, concentramos a atenção nestes parâmetros “críticos” e
podemos verificar com quais hipóteses devemos tomar mais cuidado.
• Validação “face a face”. Esse é o tipo de validação em que o analista (a pessoa que
construiu o modelo) discutirá com quem realmente entende do processo que foi simulado
(aquele que fará o papel do “advogado do diabo”). Esse tipo de validação pode ser tanto
conceitual (modelo conceitual) como operacional (resultados do modelo).

5.4.1. Níveis de validação


De uma maneira geral, pode-se classificar os procedimentos de validação em três níveis
ou categorias, a saber: qualitativo, quantitativo informal e quantitativo formal.
O primeiro nível de validação: qualitativo
Este é o “nível” mais simples de validação. A questão é saber se, em linhas gerais, o
modelo está se comportando com a realidade. Neste nível, não é necessário levantar os
indicadores de desempenho do sistema real em termos quantitativos, somente qualitativos.
Por exemplo, neste nível, responder-se-ia às seguintes questões:
• O equipamento gargalo obtido no modelo corresponde ao equipamento gargalo real?
• O recurso mais utilizado no modelo corresponde ao recurso mais utilizado real?
• O recurso menos utilizado no modelo corresponde ao recurso menos utilizado real?
• Onde não há filas no modelo, não há filas na realidade?
• Onde há muita fila no modelo, há muita fila na realidade?

Se a resposta for afirmativa para todas as perguntas, isto é um sinal de que o modelo tem
alguma validade qualitativa, e o processo de validação pode continuar nos níveis seguintes.
Caso o modelo não tenha validação qualitativa, ele já pode ser considerado inválido sem
necessidade de estudos mais aprofundados.

O segundo nível de validação: quantitativo informal


Este nível utiliza-se da comparação dos resultados da simulação com dados reais, mas
esses dados ou são pontuais (resultados de pequenas amostra) ou são gerados por meio de
entrevistas com operadores ou gestores do sistema real. Sua precisão não é necessariamente
elevada; contudo, o objetivo é validar os parâmetros por sua ordem de grandeza. Por
exemplo:
• A taxa de ocupação do operador A durante um turno de trabalho é cerca de 70%. Se o
modelo fornece uma ocupação fora da faixa entre 60 e 80%, ele já poderia ser
considerado invalidado ao nível quantitativo informal;
• A fila deve ter pico de no máximo cinco pessoas. Se a fila média no modelo é 0 ou algo
acima de 20 pessoas, então o modelo pode ser considerado inválido;
• A produção diária da fábrica foi de cerca de 150 peças. Se o modelo produz 400 peças
por dia, então ele pode ser considerado inválido.

Note que o objetivo é, como no primeiro nível de validação, descartar o modelo inválido
e dar sustentabilidade para uma validação mais aprofundada no nível seguinte.

O terceiro nível de validação: quantitativo formal


Este nível se utiliza de técnicas estatísticas consagradas para a validação das diversas
medidas de desempenho, sendo que a mais utilizada é o teste de inferência sobre a diferença
entre duas médias de amostras independentes. Este teste é mostrado em detalhes no
exercício resolvido 5, mas sua ideia geral é comparar n replicações de uma simulação com
n replicações de resultados reais para uma determinada medida de desempenho (há também
o teste quando o número de replicações dos dados reais é diferente do número de
replicações do modelo). O teste irá mostrar se, estatisticamente com uma certa confiança, os
resultados da simulação equivalem ao comportamento real do sistema.
Note que esses níveis só podem ser utilizados se o sistema real existir. Ademais, em um
único modelo, todos os níveis podem ser utilizados simultaneamente. Cada um pode, por
exemplo, ser utilizado para uma medida de desempenho diferente. Não se deve também
esquecer de testar diferentes medidas de desempenho, já que a correspondência de uma
medida de desempenho com a realidade não garante a correspondência de todas as medidas
de desempenho. Finalmente vale lembrar que, quanto mais se utilizam desses métodos,
melhor, pois segundo o artigo “Warnings on Simulation” (BANKS; CHWIF, 2010), “É
possível invalidar um modelo de simulação, mas é impossível validá-lo”.
5.5. Validade dos dados
Outro tópico extremamente importante e pertinente para a validação e verificação é a
validade dos dados. Os dados para simulação podem ser utilizados para três finalidades
básicas: construção do modelo conceitual, validação de dados e experimentação. É
importante não utilizarmos o mesmo conjunto de dados para construir e testar o modelo
(PIDD, 2000).
Podemos ainda utilizar dados “históricos” para calibrar o modelo. Por exemplo, os
pedidos de entregas de produtos do último ano em uma distribuidora podem ser utilizados
como os dados de entrada do modelo; desse modo, não estaríamos utilizando um modelo
probabilístico (como discutimos no Capítulo 2), mas dados históricos que representam o
ocorrido durante o ano. Consequentemente, as saídas do modelo devem ser compatíveis
com o desempenho verificado no sistema.
Uma fonte de problemas é a existência de “valores discrepantes”, ou outliers, nos dados
colhidos do sistema real (seção 2.3.1). Temos, portanto, que tomar muito cuidado com a
análise dos dados de entrada, seguindo sempre a máxima: “Os dados nunca são dados”.
Concluindo, não se deve esquecer do princípio GIGO (garbage-in, garbage-out), ou,
“abrasileirando” o termo, LELIS (se “lixo entra, então lixo sai”). Dessa forma, se os dados
de entrada do modelo estão incorretos, não há como o melhor dos modelos gerar resultados
corretos.
5.6. Exercícios de revisão
1. Um modelo acabou de ser implementado no computador. Você já pode executar a
simulação e colher resultados confiáveis? Explique.

2. O que é mais fácil: verificar ou validar um modelo de simulação? Por quê?

3. O princípio “LELIS” diz que se “lixo entra, então lixo sai”. Se meus dados de entrada
forem corretos (não forem “lixo”), podemos garantir que não sairá lixo do modelo de
simulação? Explique.

4. Voltando ao caso do pub inglês (Figura 3.16), quais hipóteses no modelo são mais
“restritivas” e poderiam não validar o modelo se pensarmos na operação de um pub real?

5. Exercício resolvido. Vamos tomar o exemplo de um caso real para ilustrarmos como, na
prática, se faz a validação operacional de um modelo de simulação. Neste exercício, o
modelo é de uma central de atendimento (ou call center) com sete PAs (Posições de
Atendimento); os tempos entre chegadas sucessivas de chamadas seguem uma
distribuição exponencial com média de 36 segundos; os tempos de atendimento seguem
uma distribuição Erlang com média de 154 segundos e fator k = 6,41. Os tempos de
desistências foram modelados segundo uma distribuição uniforme entre 0 e 60 segundos.
Deseja-se determinar se o modelo tem o mesmo desempenho do nível de atendimento
real, definido como o coeficiente das chamadas efetivamente atendidas sobre as
chamadas totais. A Tabela 5.1 ilustra 12 dados reais do nível de atendimento e 12
replicações do modelo de simulação, para uma taxa de chegada de chamadas de 100
clientes por hora.

Tabela 5.1 – Exercício 5


Diferença
Replicação Dados reais Modelo de simulação
(real-simulado)
1 93% 94% –1%
2 94% 97% –3%
3 96% 97% –1%
4 98% 96% 2%
5 96% 96% 0%
6 100% 96% 4%
7 96% 97% –1%
8 89% 97% –8%
9 96% 97% –1%
10 99% 95% 4%
11 98% 96% 2%
12 94% 96% –2%
Média 95,7% 96,2% –0,4%
Desvio-padrão 2,9% 0,9% 3,3%

A partir das informações anteriores, pode-se dizer que o modelo é válido para essa
medida de desempenho?
Solução:
Para respondermos a essa pergunta, diretamente relacionada à validade
operacional do modelo, podemos aplicar o teste estatístico de inferência sobre a
diferença entre duas médias de amostras independentes. A ideia é tomarmos o
intervalo de confiança para a diferença entre os dois sistemas (a noção de
intervalo de confiança será revisada no Capítulo 6). Se o intervalo contiver o
valor zero, então podemos afirmar com nível de confiança 100(1-a)% que as
respostas são equivalentes (do sistema real e do modelo de simulação). Neste
caso, o intervalo de confiança pode ser construído da seguinte maneira:

Onde:
é a média do resultado obtido a partir da simulação do sistema;
é a média do resultado obtido a partir do sistema real;
é o desvio-padrão do resultado obtido a partir da simulação do sistema;
é o desvio-padrão do resultado obtido a partir do sistema real;
n é o número de observações obtidas (deve ser igual, tanto na simulação quanto
nos resultados reais);
é a distribuição t de Student para 2n-2 graus de liberdade e um nível de
significância de .

Dessa maneira, para o caso em questão temos os seguintes intervalos de


confiança:
a) Para 95% de confiança, [–2,3%; 1,5%];
b) Para 99% de confiança, [–3,0%; 2,1%].
Como os dois intervalos contêm o valor zero, podemos afirmar com 99% e 95% de
confiança que o modelo é equivalente ao sistema real para esta medida de
desempenho (média do nível de atendimento).
Observe ainda que o desvio-padrão dos dados reais é maior do que o do modelo
de simulação, provavelmente devido a um fator que não foi considerado na
simulação ou à presença de valores espúrios (como o valor de 89%, ligeiramente
diferente dos valores obtidos).
Dessa maneira, podemos concluir que, até o momento, não podemos aceitar a
hipótese de um modelo inválido mas também não podemos aceitar que o modelo
seja totalmente válido: é necessário verificar a validade operacional de outras
medidas de desempenho, bem como verificar se este somente é válido se a carga
do sistema for muito diferente de 100 chamadas por hora. Neste caso, o processo
de validação operacional está apenas começando...

6. Foram obtidas oito amostras a partir de um modelo de simulação e de um sistema real,


para saber se existem diferenças significativas na produtividade do sistema. Os
resultados estão dispostos a seguir (peças/hora):
a) Sistema 1 (simulado) {13, 12, 16, 14, 15, 10, 13, 11};
b) Sistema 2 (real) {14, 17, 14, 16, 15, 17, 12, 19}.
Pode-se dizer, com 95% de confiança, que o modelo utilizado é válido?
Leitura Complementar

Uma técnica de verificação e validação de modelos de


simulação quando não se dispõe de dados reais4
A literatura sobre verificação e validação (V&V) em simulação descreve várias técnicas
além das discutidas neste capítulo, dividindo-as em dois grandes grupos: técnicas
descritivas e técnicas prescritivas. O primeiro grupo se concentra em “o que fazer”, e o
segundo em “como fazer”. Um exemplo de técnica descritiva é o “Teste de Turing” (Seção
5.4), que propõe a comparação dos resultados de um sistema real com os da sua simulação,
sem especificar como isso deve ser feito. Do grupo de técnicas prescritivas, pode-se citar a
técnica proposta por Kleijnen (1995), apresentada no exercício 5, da Seção 5.6, que indica
claramente uma sequência de passos para sua realização.
Sargent (2000) afirma que os custos da V&V podem ser significativamente altos,
especialmente se estamos lidando com modelos de altíssima confiabilidade. Portanto, é
imprescindível utilizar técnicas de V&V de fácil aplicação e alta eficiência; caso contrário,
sob a pressão do tempo para se completar um estudo de simulação, as atividades de V&V
serão as primeiras a serem sacrificadas. As técnicas de V&V podem ser utilizadas em uma
destas três situações (KLEIJNEN; BETTONVIL; VAN GROENENDAAL, 1996):
1. Quando não há dados reais de entrada e/ou saída;
2. Quando há somente dados de saída reais;
3. Quando há dados de entrada e saída reais.

O exemplo a seguir ilustra o uso de uma técnica simplificada para V&V de modelos
enquadrados no primeiro caso (o pior deles).

Implementação da técnica
A ideia básica da técnica de V&V proposta parte de uma matriz chamada “matriz de
influência causal”, que mapeia as relações de entrada e saída de um modelo de simulação.
Os valores possíveis para os elementos da matriz são: –1, +1 ou 0. O valor “–1”
representa uma correlação negativa, ou seja, indica que um aumento na entrada causará uma
diminuição na saída (e uma diminuição na entrada causará um aumento na saída). O valor
“+1” representa uma correlação positiva (um aumento na entrada causará um aumento na
saída, e uma diminuição na entrada causará uma diminuição na saída). O valor “0” indica
uma correlação neutra, ou seja, a entrada não afeta a saída ou a afeta de forma pouco
significativa. A Tabela 5.2 mostra um exemplo de matriz de influência causal para um
sistema em que serão estudadas três entradas e duas saídas.

Tabela 5.2 – Exemplo de matriz de influência causal


S1 S2
E1 +1 –1
E2 +1 0
E3 0 –1

É interessante destacar que essas correlações podem ser estabelecidas a partir da


experiência do analista e de seu conhecimento sobre o sistema em questão. Assim, é
possível criar a matriz de influência durante o desenvolvimento do modelo conceitual antes
mesmo de sua implementação computacional. De fato, a ideia principal deste método é que
as correlações definidas pelo analista sejam comparadas com as que serão obtidas a partir
do modelo de simulação. Se a matriz de influência “reproduzir” os resultados do modelo,
podemos aumentar nossa confiança sobre o modelo. Se as correlações não forem coerentes,
algo está errado: a matriz inicial, o modelo de simulação ou ambos.5
Por fim, como pregamos que os procedimentos de V&V devem ser simples e pouco
dispendiosos em termos de tempo; recomendamos selecionar no máximo nove entradas e no
máximo nove saídas relevantes. Essa recomendação segue o princípio estabelecido por
Miller (1956), que limita em 9 o total de informações que o ser humano consegue processar
em paralelo com sucesso.

Exemplo 5.1: Central telefônica6


Na central de atendimento do TicketFone (Figura 5.3), as chamadas são atendidas por um
sistema de direcionamento automático e são encaminhadas para o serviço apropriado:
informação, atendimento ao consumidor ou venda de ingressos. Cada serviço é formado por
um ou mais postos de atendimentos, sendo que cada posto de atendimento possui um
operador de telemarketing. Após o atendimento, o cliente sai do sistema.
Figura 5.3 – Representação esquemática do sistema de atendimento da TicketFone.

Para este caso, consideram-se duas entradas e três saídas, assim configuradas:
Entradas:
• E1: número de postos de atendimento para informações;
• E2: número de postos de atendimento para venda de ingressos.

Saídas:
• S1: número de chamadas perdidas;
• S2: porcentagem de chamadas atendidas e completadas dentro de dois minutos;
• S3: tempo médio de espera total.

A matriz de influência causal definida para o sistema é mostrada na Tabela 5.3.

Tabela 5.3 – Matriz de influência causal do exemplo


S1 S2 S3
E1 -1 +1 -1
E2 -1 +1 -1

A matriz da Tabela 5.3 indica que, quando se aumenta o número de postos de atendimento
para informações (E1) ou de venda de ingressos (E2), diminui o número de chamadas
perdidas (S1), aumenta o número de chamadas completadas em até dois minutos (S2) e
diminui o tempo médio de espera total (S3).
Considerando que são possíveis apenas dois valores para as entradas (quatro ou oito
postos de atendimento), teremos quatro cenários ou possibilidades de composição entre os
postos de informações e venda de ingressos (E1, E2): (4, 4), (4, 8), (8, 4) e (8, 8). A Tabela
5.4 mostra os resultados das saídas S1, S2 e S3, para três replicações do modelo de
simulação do exemplo, para cada um dos cenários.

Tabela 5.4 – Resultados do modelo de simulação do exemplo, para os cenários criados

Cenário 1 (4,4) Cenário 2 (4,8) Cenário 3 (8,4) Cenário 4 (8,8)


S1 = 644 chamadas S1 = 397 chamadas S1 = 406 chamadas S1 = 76 chamadas
S2 = 63% S2 = 77% S2 = 80% S2 = 89%
S3 = 1,44 minuto S3 = 0,96 minuto S3 = 0,86 minuto S3 = 0,52 minuto

Note, pela Tabela 5.4, que o desempenho do sistema melhora quando o número de linhas
aumenta: o número de chamadas perdidas (S1) e o tempo médio de espera total (S3)
diminuem, enquanto a porcentagem das chamadas atendidas dentro de dois minutos (S2)
aumenta.
Como o comportamento do modelo refletiu o esperado pela matriz de influência causal,
pode-se, portanto, aumentar a confiança no modelo. É importante ressaltar que a técnica
descrita aqui não garante um modelo de simulação válido (aliás, nenhuma técnica de V&V
garante!), mas se trata de uma técnica de aplicação relativamente simples e que pode ser
automatizada no computador.
Referências bibliográficas
BANKS, J.; CHWIF, L. Warnings about simulation. Journal of Simulation, n. 5, p. 279-
291, 2010.
KLEIJNEN, Jack P. C. Verification and validation of simulation models. European
Journal of Operational Research, v. 82, n. 1, p. 145-162, 1995.
KLEIJNEN, Jack P. C.; BETTONVIL, Bert; VAN GROENENDAAL, Willem J. H..
Validation of Trace-driven Simulation Models: Regression Analysis Revisited.
Proceedings of the 1996 Winter Simulation Conference, 1996. p. 352-359.
KLEIJNEN, Jack P. C. Validation of Models: Statistical Techniques and Data Availability.
Proceedings of the 1999 Winter Simulation Conference, p. 647-654, 1999.
MILLER, George A. The Magical Number Seven, Plus or Minus Two: Some Limits on
Our Capacity for Processing Information. The Psychological Review, v. 63, n. 2, p. 81-
97, 1956.
PIDD, Michael. Tools for thinking: modelling in management science. 4. ed. Chichester:
John Wiley & Sons, 2000.
ROBINSON, Stewart. Simulation: the practice of model development and use.
Chichester: John Wiley & Sons, 2004.
SARGENT, Robert G. Verification, validation and accreditation of simulation models.
Proceedings of the 2000 Winter Simulation Conference, p. 50-59, 2000.
TURING, Alan M. Computing machinery and intelligence. Mind, n. 59, 1950. p. 433-460.
Capítulo 6

Dimensionamento de corridas e análise dos


resultados de um modelo de simulação
6.1. Introdução
Ao final da etapa de verificação e validação conceitual, o modelo de simulação torna-se
operacional, estando pronto para ser utilizado. Temos agora uma fonte poderosa de
experimentos estatísticos utilizados no processo de análise do comportamento do sistema.
Considere, por exemplo, um sistema como o do pub (apresentado no Capítulo 3).
Poderíamos determinar o que ocorre no sistema se, em um certo dia, a taxa de chegadas de
clientes aumentar muito ou, ao contrário, cair muito. Dessa forma, estaríamos realizando
diferentes experimentos de simulação com o nosso modelo, gerados a partir de questões do
tipo “O que ocorre se...”. Contudo, como as entradas da simulação são processos aleatórios,
em cada replicação ou experimento realizado teremos saídas cujos valores também serão
aleatórios (KELTON, SADOWSKI, R.; SADOWSKI, D. , 1998, sugerem o termo RIRO –
random-in, random-out –, para descrever o que ocorre na simulação). Entradas aleatórias
implicam, portanto, saídas aleatórias. Consequentemente, não podemos concluir muita coisa
a partir de uma única replicação da simulação. Se estivermos estudando o tempo médio T
que os clientes permanecem na fila de entrada do pub, em uma primeira replicação da
simulação, teremos uma estimativa T1 para este valor. Se rodarmos n vezes o modelo,
teremos um conjunto de valores T1,T2,...,Tn, cuja média pode representar um bom estimador
para o tempo médio em fila. A precisão desse valor pode ser avaliada por sua variância, de
modo que, quanto menor a variância, mais precisa a estimação. Temos, portanto, duas
questões importantes quando estamos obtendo resultados de um modelo de simulação: qual
a variância estimada e quantas observações devemos realizar para atingirmos uma dada
precisão.
O objetivo deste capítulo é discutir como construir os experimentos e quais as técnicas
disponíveis para analisarmos as saídas obtidas a partir do modelo de simulação, de modo
que as medidas de desempenho possam ser estimadas dentro de uma precisão desejada.
O processo de análise dos resultados é, geralmente, menos dispendioso do que os
processos vistos anteriormente, como a modelagem, a construção do modelo computacional,
a verificação, validação etc. Agora é a vez de o modelo trabalhar! Os pacotes comerciais
de simulação possuem diversas facilidades para a construção de cenários e para o
tratamento estatístico dos resultados. Boas análises permitem melhores condições e mais
segurança para a tomada de decisão.
Alguns conceitos importantes são pré-requisitos para entendermos as técnicas de análise
dos resultados. Assim, antes de prosseguirmos na análise dos dados propriamente dita,
discutiremos na primeira parte deste capítulo os seguintes conceitos:
• O que é regime transitório e o que é regime permanente;
• O que é simulação terminal e o que é simulação em regime;
• O que são medidas de desempenho;
• O que é replicação e o que é “rodada”;
• O que é intervalo de confiança.
A segunda parte deste capítulo, a partir da Seção 6.7, descreve a metodologia de análise
dos dados de saída em forma de tutorial, de modo que possam ser utilizados mais facilmente
nos futuros projetos.
6.2. Regime transitório vs. regime permanente
Considere que o pub do Exemplo 3.2 está fechado e, neste exato momento, a porta é
aberta para a entrada dos primeiros clientes. Como o número de clientes no lado de fora era
grande, repentinamente, o pub sofre um problema de “congestionamento” de clientes. Trata-
se de um período curto, mas confuso no pub. Dizemos que, durante esse período, o pub está
em regime transitório, ou seja, o desempenho do sistema está fortemente relacionado com
as suas condições iniciais.
Passado algum tempo, as coisas se acalmam e o pub volta a funcionar como em todas as
noites. Dizemos que, agora, o pub está em regime permanente, ou seja, as condições
iniciais não afetam mais o comportamento do sistema.
O estudo de sistemas durante o regime transitório é mais complexo e, via de regra, pouco
conclusivo, pois as condições iniciais de um sistema nem sempre são as mesmas. Por outro
lado, como veremos adiante, as condições iniciais podem afetar perigosamente os
resultados de uma simulação.

Exemplo 6.1: Jogo de dados


Considere um dado de seis faces. Como a probabilidade1 de ocorrência de cada face é
1/6, espera-se que, após o lançamento do dado um bom número de vezes, a média dos
valores obtidos seja de:
(6.1)

(6.2)

Considere que temos um dado velho, não viciado (em nada...), e vamos utilizá-lo para
“simular” o processo de lançamentos.
No nosso primeiro lançamento, obtemos o número 1. Assim, a média dos lançamentos é
1. No segundo lançamento, obtemos, pasmem, o número 1 de novo. A nossa média continua
igual a 1. A Tabela 6.1 representa os resultados dos nossos primeiros 10 lançamentos e a
média obtida até então.
Aparentemente, não tivemos muito sucesso em obter a tal média 3,5 nos primeiros 10
lançamentos – alguns chamariam isso de “azar”. Para entendermos melhor como se
comporta o sistema, vamos construir um gráfico. No eixo vertical, colocaremos a média
acumulada obtida a cada lançamento, e no eixo horizontal, o respectivo lançamento. Note,
pela Figura 6.1, o comportamento da média: visualmente, ela ainda não convergiu para o
valor de 3,5.
Devemos lançar mais vezes o dado, de modo a melhorar o resultado. Após 150
lançamentos, a média obtida foi de 3,507, ou um erro absoluto de 0,007. Pela Figura 6.2
podemos acompanhar o comportamento da média acumulada ao longo dos 150 lançamentos.

Tabela 6.1 – Primeiros dez lançamentos do dado


Lançamento Número Obtido Média Acumulada
1 1 1/1=1,0
2 1 (1+1)/2=1,0
3 4 (1+1+4)/3=2,0
4 6 (1+1+4+6)/4=3,0
5 6 3,6
6 5 3,8
7 2 3,6
8 1 3,5
9 2 3,3
10 1 3,1

Notamos pela Figura 6.2 como a média dos primeiros 50 lançamentos é influenciada pelo
comportamento inicial do sistema. Na figura, chamamos o primeiro trecho de regime
transitório, pois as condições iniciais (no caso, “poucos lançamentos”) afetam o resultado
da média. Neste trecho, a média é calculada com base em um número pequeno de valores.

Figura 6.1 – Comportamento da média acumulada dos valores obtidos após 10 lançamentos de um dado não
viciado.
Figura 6.2 – Comportamento da média acumulada dos valores obtidos após 150 lançamentos de um dado não
viciado.

A partir do lançamento 80, o sistema já se comporta como o esperado, estando a média


muito próxima de 3,5. A partir desse ponto, dizemos que o sistema está em regime
permanente, pois os efeitos das condições iniciais do sistema já não afetam o seu
desempenho. Concluindo, para atingirmos uma boa estimativa do que acontece em regime
permanente, temos três alternativas:
1. Simular o sistema por um período muito longo de modo que o número de amostras em
regime transitório seja desprezível em relação ao número de amostras em regime
permanente (jogar mais vezes o dado);
2. Eliminar o período transitório através de alguma técnica apropriada. Isso será mais
bem discutido adiante;
3. Iniciar o sistema já em um estado dentro do regime permanente, o que equivale, no
exemplo do dado, a considerar a média inicial igual a 3,5.
6.3. Simulação terminal vs. simulação não terminal
Quando estudamos a simulação do pub, é natural pressupor que o sistema deva ser
simulado por um turno inteiro de trabalho. Se o pub abre às 12h e fecha, pelas leis inglesas,
pontualmente às 23h, a simulação deve ser feita para esse mesmo intervalo de tempo. Esse
tipo de simulação é conhecido como simulação terminal, e não há dúvidas quanto aos
instantes de tempo de início e fim da simulação.
Por outro lado, existem sistemas em que não temos certeza sobre o momento em que a
simulação deve ser terminada. Por exemplo, considere uma usina siderúrgica que opera 24
horas por dia, sete dias por semana. Neste caso, precisamos de uma simulação para um
horizonte de tempo longo ou, tecnicamente, infinito. Esse tipo de simulação é conhecida
como simulação não terminal, ou simulação em regime, e não temos certeza, a priori,
sobre quanto tempo ela deve durar (mas sabemos que deve ser um longo tempo).
Às vezes, apesar de o sistema possuir um “turno” claro de operação, opta-se pela
simulação em regime. Por exemplo, considere uma linha de montagem de fogões com apenas
um turno de trabalho diário de oito horas seguidas. Se, ao final do período, os processos
são momentaneamente paralisados, de tal forma que no dia seguinte são retomados no
mesmo ponto, este é um sistema que deve ser simulado em regime, pois a “parada” que
ocorre ao final do turno não é, do ponto de vista da simulação, uma parada final do sistema
(o sistema não vai ser reconfigurado após esta parada).
A identificação do tipo de simulação com que estamos lidando implica metodologias
diferentes na análise das saídas do modelo.
A simulação terminal é, geralmente, mais fácil de ser conduzida e analisada. Cada
execução do modelo fornece um conjunto de resultados. Com um número adequado de
execuções, podemos realizar as estimativas desejadas a partir dos dados obtidos.
A simulação em regime torna as coisas mais complicadas, pois precisamos analisar o
comportamento da simulação para identificarmos cuidadosamente a duração dos regimes
transitório e permanente do sistema.
6.4. Escolhendo as medidas de desempenho adequadas
No Capítulo 2, discutimos os cuidados necessários ao escolhermos os parâmetros de
entrada do modelo. Devemos diferenciar os que são parâmetros de “entrada” daqueles que
são parâmetros de desempenho ou “saída” do sistema. Para a análise dos resultados, o
problema é escolher corretamente os parâmetros que utilizaremos como medidas de
desempenho do sistema. Para reduzirmos a possibilidade de erro, não podemos perder o
foco da questão que está sendo apresentada ao modelo.
Considere novamente o exemplo do pub. Quais seriam as medidas adequadas de
desempenho desse sistema? Se o proprietário está preocupado com os clientes que têm de
esperar por atendimento, algumas medidas de desempenho poderiam ser:
• A probabilidade de que um cliente aguarde mais do que três minutos por atendimento;
• O número de clientes que desistem do atendimento devido ao excesso de clientes na fila
de espera por bebidas.

O leitor poderia acrescentar a média do tempo de atendimento como medida de


desempenho. Com certeza este é um parâmetro “interessante”, e devemos utilizá-lo na nossa
análise. Mas ele responde à dúvida do proprietário do pub? Note que calcular a média e a
variância do tempo de atendimento serve para aumentarmos o nosso conhecimento sobre o
sistema, mas não para atendermos à preocupação principal do proprietário, que é a demora
que alguns clientes sentem no atendimento dos seus pedidos. De novo, o leitor é convidado
a lembrar-se do primeiro capítulo deste livro, em que discutimos as limitações ao olharmos
o mundo sempre pela média...
Portanto, a primeira etapa para realizarmos uma boa análise de resultados é escolhermos
as medidas de desempenho do sistema a partir da definição dos objetivos da simulação.
6.5. Qual a diferença entre replicação e rodada?
Existe alguma confusão entre esses termos: quando falamos em rodada, estamos nos
referindo ao que ocorre quando selecionamos ou iniciamos o comando que executa a
simulação no computador. Uma rodada pode envolver várias replicações. A replicação é
uma repetição da simulação do modelo, com a mesma configuração, a mesma duração e com
os mesmos parâmetros de entrada, mas com uma semente de geração dos números aleatórios
diferente. Desse modo, apesar de os dados e os parâmetros de entrada serem os mesmos,
como os números aleatórios gerados são diferentes, cada replicação terá uma saída
diferente também. (Apêndice III).
6.6. Você, realmente, confia nos resultados?
Um modelo de simulação lida com números aleatórios. Seria extremamente imprudente
de nossa parte se tirássemos conclusões de um modelo a partir de apenas uma rodada de
simulação. Cada rodada do modelo deve ser entendida como um novo “experimento”.
Considere, por exemplo, um posto bancário, com fila única de clientes e apenas um caixa.
Construído um modelo de simulação do sistema, realizou-se uma replicação. Nesta
replicação, o número médio de pessoas na fila foi de 6,72 pessoas, um número alto (mesmo
para o nosso banco). A seguir, foram realizadas mais nove replicações, obtendo-se os
valores da Tabela 6.2.
Note que a média das 10 replicações foi de 1,54 pessoa, um valor quatro vezes menor do
que o encontrado na primeira replicação!
A pergunta fundamental é: podemos confiar na média de 1,54 pessoa? Essa é uma questão
delicada, pois uma coisa é a confiança estatística, e outra é a precisão. Quando falamos em
confiança estatística, estamos nos referindo ao intervalo de confiança, ou seja, um intervalo
de valores que contém a média da população, com uma certa probabilidade. Quanto maior o
valor dessa probabilidade, maior a confiança estatística de que a média da população
encontra-se nesse intervalo construído. Já quando falamos em precisão, estamos nos
referindo ao tamanho do intervalo, pois de nada adianta uma alta confiança estatística se o
tamanho do intervalo é tão grande que não podemos concluir nada sobre a média da
população. Quando lemos no jornal que determinado candidato tem 35% das intenções de
voto, por exemplo, este valor representa uma estimativa para a proporção de votos do
candidato. Já nos acostumamos com o fato de que, associada a essa informação, o jornal
explica que a “margem de erro” da pesquisa é de 3% “para mais ou para menos”. Assim, o
candidato pode ter uma votação dentre 32% e 38% dos eleitores. O que o jornal raramente
informa é a confiança da pesquisa. Usualmente, o valor adotado e não informado é de 95%,
e, neste caso, o intervalo de confiança para a proporção seria de:

(6.3)

Portanto, essa pesquisa eleitoral tem apenas 5% de chance de estar errada.


Um intervalo de confiança 100(1-α% para a média de uma população é construído
através da equação (Devore, 2000):

(6.4)

ou:
(6.5)

onde:

é a média da amostra;

é a metade do tamanho do intervalo de confiança, aqui

denominada precisão;

éo percentil da distribuição t de Student com n-1 graus de


liberdade;

s é o desvio-padrão da amostra;

n é o número de dados da amostra.

A partir das médias relacionadas na Tabela 6.2, construímos os intervalos de 99%, 95%,
90% e 80% de confiança, relacionados na Tabela 6.3.
Tabela 6.2 – Média de pessoas em fila para cada replicação realizada
Replicação Média de pessoas em fila
1 6,72
2 2,00
3 0,38
4 1,28
5 0,46
6 0,19
7 0,14
8 1,30
9 0,12
10 2,85
Média 1,54
Desvio-padrão 2,03

Tabela 6.3 – Intervalos de confiança construídos para o exemplo


Precisão (metade do
n Confiança α intervalo) Intervalo de confiança da média
10 99% 0,01 3,25 2,09 –0,55 ≤ µ ≤ 3,63
10 95% 0,05 2,26 1,45 –0,09 ≤ µ ≤ 3,00
10 90% 0,10 1,83 1,18 –0,37 ≤ µ ≤ 2,72
10 80% 0,20 1,38 0,89 –0,65 ≤ µ ≤ 2,43

De acordo com a Tabela 6.3, descobrimos que o intervalo –0,55 ≤ µ ≤ 3,63 contém a
média do número de pessoas em fila, com 99% de confiança. Perceba que, ao diminuirmos
a confiança, passando de 99% para 95%, o tamanho total da metade do intervalo diminuiu
de 2,09 para 1,45, indicando uma precisão maior.
Uma regra de causa-efeito diz que, para aumentarmos a precisão dos dados, devemos
aumentar o tamanho da amostra (número de replicações, no nosso caso). A Tabela 6.4
representa os resultados para o número médio de pessoas em fila do mesmo modelo de
simulação, mas agora com 20 replicações.2 Com o aumento do número de replicações, a
média da amostra é agora de 1,08 e o desvio-padrão é de 1,49.

Tabela 6.4 – Média de pessoas em fila para cada replicação realizada


Replicação Média de pessoas em fila
1 6,72
2 2,00
3 0,38
4 1,28
5 0,46
6 0,19
7 0,14
8 1,30
9 0,12
10 2,85
11 0,80
12 0,75
13 1,18
14 0,60
15 0,50
16 0,40
17 0,30
18 0,60
19 0,60
20 0,50
Média 1,08
Desvio-padrão 1,49

Tabela 6.5 – Intervalos de confiança construídos para o exemplo


Precisão (metade do
Confiança intervalo) Intervalo de confiança da média
n α

20 99% 0,01 2,86 0,95 0,13 ≤ µ ≤ 2,03


20 95% 0,05 2,09 0,70 0,39 ≤ µ ≤ 1,78
20 90% 0,10 1,73 0,57 0,51 ≤ µ ≤ 1,66
20 80% 0,20 1,33 0,44 0,64 ≤ µ ≤ 1,52

A Tabela 6.5 resume os resultados obtidos para os intervalos de confiança da média de


pessoas em fila, a partir das 20 replicações relacionadas na Tabela 6.4. Perceba como os
intervalos diminuíram sensivelmente, melhorando a precisão do resultado.
Neste momento, cabe a pergunta: quantas replicações devemos realizar para obtermos
uma precisão igual a um valor h*? Uma técnica possível é utilizar uma amostra-piloto.
Basicamente, devemos extrair da população (no nosso caso, “replicar” o modelo) um
número n de amostras e construir o intervalo de confiança do parâmetro desejado. Se a
precisão h do intervalo obtido ainda não for menor do que a desejada h*, então, o número
de amostras (replicações) necessário pode ser obtido pela seguinte expressão:

(6.6)

onde: corresponde ao arredondamento para o número inteiro acima de x.

No caso do exemplo, assuma que desejamos construir um intervalo com confiança de


99% e precisão de 0,5. Utilizando a equação (6.6), temos:
(6.7)

Portanto, se realizarmos 73 replicações, teremos um intervalo com a precisão desejada.


Como já realizamos 20 replicações, faltam outras 53. Consideradas as 73 replicações
(Tabela 6.6), o número médio de pessoas em fila foi de 0,76 pessoa, e o desvio-padrão de
1,40 pessoa. Lembre-se de que o grau de confiança desejado é de 99%; portanto, α = 0,01.
Assim, como n = 73 replicações, obtemos da tabela da distribuição t de Student:

(6.8)

E o tamanho da metade do intervalo fica:

(6.9)
Este valor é menor do que a precisão definida de 0,5 pessoa em fila. A partir desse
último valor, podemos construir o seguinte intervalo de confiança para a média de pessoas
em fila:

(6.10)

Concluindo, existe uma probabilidade de 99% de que o intervalo [0,33; 1,19] contenha o
número médio de pessoas em fila.
Agora temos uma estimativa precisa e confiável para o número médio de pessoas em fila
(compare esse resultado com o valor obtido na primeira replicação do modelo).
A análise de dados de saída depende do tipo de sistema que estamos estudando, se
terminal ou não terminal. A partir deste ponto, dividiremos o estudo em duas partes:
inicialmente, os sistemas terminais – de análise mais simples –, e, posteriormente, os
sistemas em regime.

Tabela 6.6 – Média de pessoas em fila para cada replicação


Replicação Média de pessoas em fila Replicação Média de pessoas em fila
1 6,72 38 0,46
2 2,00 39 0,49
3 0,38 40 0,34
4 1,28 41 3,32
5 0,46 42 1,78
6 0,19 43 0,12
7 0,14 44 0,74
8 1,30 45 0,09
9 0,12 46 0,01
10 2,85 47 0,11
11 0,80 48 0,87
12 0,75 49 0,02
13 1,18 50 2,72
14 0,60 51 0,21
15 0,50 52 0,55
16 0,40 53 0,38
17 0,30 54 0,20
18 0,60 55 0,49
19 0,60 56 0,13

20 0,50 57 0,02
21 1,21 58 0,55
22 1,55 59 0,04
23 0,23 60 0,44
24 0,14 61 6,08
25 0,32 62 1,54
26 0,01 63 0,08
27 0,13 64 1,16
28 0,15 65 0,04
29 0,02 66 0,14
30 1,72 67 0,09
31 0,15 68 0,36
32 0,40 69 0,11
33 0,48 70 1,78
34 0,25 71 0,27
35 0,18 72 0,09
36 0,23 73 1,17

37 0,01
Média 0,76
Desvio-padrão 1,40
6.7. Análise dos dados de saída: sistemas terminais
Os sistemas terminais são aqueles que têm um momento exato no tempo para finalizar a
simulação. Neste tipo de sistema, dois valores precisam ser determinados: a duração da
simulação e o número de replicações.
A duração da simulação é determinada pela duração do período de operação do próprio
sistema real. Por exemplo, um supermercado que fica aberto das 9h às 22h deve ser
simulado por um período de 13 horas (= 22 – 9). O número de replicações do modelo
depende do grau de confiança com que desejamos trabalhar. A análise de dados de sistemas
terminais pode ser dividida em sete etapas:
• Estabelecer as medidas de desempenho adequadas;
• Escolher a confiança estatística e a precisão com que se pretende trabalhar;
• Definir, a partir da observação do sistema real, o tempo de simulação;
• Construir a “amostra-piloto” e estimar o intervalo de confiança;
• Determinar o número de replicações necessárias;
• Rodar o modelo novamente;
• Calcular o novo intervalo de confiança.

Exemplo 6.2: Verificação de crédito em uma loja de departamentos


Em uma central de financiamento de uma loja de departamentos, o tempo entre chegadas
sucessivas de clientes é normalmente distribuído com média de cinco minutos e desvio-
padrão de 2,2 minutos. Existem três atendentes que realizam a pré-análise. O tempo de pré-
análise é exponencialmente distribuído com média de oito minutos. Enquanto a atendente
está realizando a pré-análise do cliente, ela não pode atender a outro cliente. Os clientes
que chegam quando todas as atendentes estão ocupadas aguardam em fila única. Após a pré-
análise, 70% dos clientes são encaminhados ao gerente, que finaliza o processo de
financiamento. Os outros 30% não têm o financiamento aceito. O gerente leva 2,5 minutos,
na maior parte das vezes, para atender aos clientes, segundo uma distribuição triangular em
que o menor valor é de 0,5 minuto e o maior valor é de cinco minutos. A central funciona
diariamente das 10h30 às 22h. A loja pretende estudar o tempo médio que um cliente gasta
no sistema. (O ACD deste exemplo está representado na Figura 6.3.)
Figura 6.3 – ACD do exemplo de sistema terminal.

6.7.1. Estabelecer as medidas de desempenho adequadas


O objetivo da loja já determina a medida de desempenho mais adequada: tempo médio
que um pedido aceito permanece no sistema.

6.7.2. Escolher a confiança estatística e a precisão desejada


Vamos trabalhar com uma confiança estatística de 95% (portanto α = 0,05) e com uma
precisão tal que h* seja de, no máximo, 0,5 minuto.

6.7.3. Construir a amostra-piloto e estimar o intervalo de confiança


Vamos rodar o modelo com poucas replicações de modo a obtermos uma amostra-piloto.
Neste exemplo, vamos rodá-lo com 10 replicações (modelos mais complexos podem
necessitar de mais replicações: 15, 20...). A Tabela 6.7 apresenta os resultados obtidos para
o tempo médio de permanência no sistema para cada replicação.

Tabela 6.7 – Dados de saída do modelo de exemplo


Replicação Média do tempo no sistema (min.)
1 11,29
2 10,82
3 11,87
4 9,54
5 8,94
6 10,22
7 12,48
8 11,36
9 11,03
10 11,98
Média 10,95
Desvio-padrão 1,11

Através da amostra-piloto, podemos construir um intervalo de confiança para a média


obtida. Com α = 0,05 e n = 10 replicações, temos, da tabela da distribuição de t de Student:

(6.11)

O tamanho da metade do intervalo fica:


(6.12)

Esse valor é maior do que a precisão desejada de 0,5 minuto.


A partir desse último valor, podemos construir o seguinte intervalo de confiança para a
média:

(6.13)

Portanto, existe uma probabilidade de 95% de que o intervalo [10,16; 11,75] contenha a
média do tempo de espera no sistema.

6.7.4. Determinar o número de replicações necessárias


Como não atingimos a precisão desejada (0,5 min), devemos aumentar o número de
replicações. A partir da amostra-piloto, podemos determinar o número de replicações
necessárias pela expressão:
(6.14)

6.7.5. Rodar o modelo novamente


Neste momento, temos duas possibilidades: ou rodamos o modelo com 26 replicações e
descartamos a amostra- -piloto, ou rodamos mais 16 replicações e aproveitamos as 10
replicações da amostra-piloto. A segunda opção parece mais prática; contudo, devemos
lembrar de alterar a semente do gerador de números aleatórios. Se não alterarmos a
semente, as 10 primeiras replicações serão idênticas àquelas da amostra-piloto e não
teremos seis replicações, de fato, novas. Muita atenção: esse tipo de informação nem
sempre é de fácil verificação nos simuladores comerciais. (A Tabela 6.8 apresenta os
resultados obtidos para a média do tempo de espera no sistema em cada uma das 26
replicações.)

Tabela 6.8 – Dados de saída do modelo de exemplo (26 replicações)


Replicação Média do tempo no sistema (min.)
1 11,29
2 10,82
3 11,87
4 9,54
5 8,94
6 10,22
7 12,48
8 11,36
9 11,03
10 11,98
11 9,87
12 10,18
13 10,02
14 9,09
15 8,95
16 9,98
17 10,29
18 9,84
19 11,97
20 10,05
21 10,40
22 10,27
23 10,50
24 12,96
25 10,60
26 11,52
Média 10,62
Desvio-padrão 1,06

6.7.6. Calcular o novo intervalo de confiança


A partir da nova amostra de valores, podemos calcular o novo intervalo de confiança.
Com α = 0,05 e n = 26 replicações, temos, da tabela da distribuição do t de Student:

(6.15)
E a precisão do intervalo fica:

(6.16)

A precisão está, portanto, dentro do valor estipulado de 0,5 minuto. Caso esse valor não
tivesse sido atingido, deveríamos replicar mais vezes o modelo.
A partir da precisão calculada em (6.16), podemos construir o intervalo de confiança
definitivo:

(6.17)

Concluindo, existe uma probabilidade de 95% de que o intervalo [10,39; 10,84] contenha
a média do tempo de espera no sistema.
6.8. Análise dos dados de saída: sistemas não terminais
Os sistemas não terminais são aqueles em que não temos um instante exato para o término
da simulação. Portanto, a primeira questão que deve ser respondida é: “Por quanto tempo
cada replicação deve ser executada?”.
Neste tipo de sistema, a simulação deve ser executada de modo que os dados de saída
sejam obrigatoriamente coletados durante o estado de regime permanente. Como discutido
na Seção 6.2, existem três técnicas para se garantir a coleta de dados durante o estado em
regime permanente:
1. Começar a simulação em um estado próximo daquele esperado em regime permanente;
2. Rodar o modelo por um tempo de simulação longo;
3. Eliminar, dos dados de saída, todos os valores gerados durante o período transitório.

6.8.1. Estabelecer as condições iniciais do sistema próximas daquelas


encontradas em regime permanente
Em modelos de simulação, é comum considerarmos que, no início da simulação, o
sistema está vazio e livre. Naturalmente, esse estado inicial “vazio” causará algum impacto
negativo no tempo necessário para atingirmos o regime permanente, como ocorreu durante o
exemplo do jogo de dados (Fig. 6.2). Se, por outro lado, estabelecermos as condições
iniciais do sistema de modo que a simulação inicie já configurada para uma situação em
regime permanente, o problema da determinação do regime transitório é sanado. No
exemplo do pub (Cap. 3), a simulação poderia iniciar com algumas entidades já presentes
no sistema: copos cheios, copos vazios, clientes bebendo, clientes em espera etc. Na
prática, essa técnica dificilmente pode ser aplicada para modelos de sistemas que ainda não
existem na realidade, pois, nestes casos, não conhecemos, a priori, o estado do sistema em
regime permanente.

6.8.2. Rodar o modelo por um tempo de simulação longo


Em tese, ao rodarmos a simulação por um período muito grande, estamos minimizando os
efeitos das condições iniciais do sistema. Contudo, em modelos complexos, um tempo de
simulação muito longo pode ser proibitivo sob o ponto de vista dos recursos
computacionais necessários.

6.8.3. Eliminar dos dados de saída todos os valores gerados durante o


período de aquecimento ou “warm-up”
Nesta técnica, a simulação ocorre normalmente durante o período inicial em que não são
coletadas estatísticas. É como se a simulação estivesse em um período de aquecimento para
que pudesse ser utilizada logo em seguida (algo semelhante a um automóvel antigo que deve
ser aquecido alguns instantes pela manhã para que possa ser utilizado nas ruas).
Diversos autores propuseram técnicas para a determinação do tempo de aquecimento (ver
Goldsman, 1992, ou Robinson, 2004, para uma lista de bibliografias disponíveis sobre o
tema). O modo mais “prático” para a determinação do tempo de warm-up é através da
“observação”. Determinados os parâmetros de análise, são construídos gráficos com os
valores observados desses parâmetros em função do tempo. De posse desses gráficos, tenta-
se determinar a partir de que momento o parâmetro parece não ser mais influenciado pelas
condições iniciais do sistema.

Exemplo 6.3: Linha de produção


Em uma linha de produção de um determinado produto, para que ele possa ser produzido,
uma peça deve passar por 10 operações executadas em máquinas automáticas distintas (Fig.
6.4). Os tempos de operação nas máquinas são todos normalmente distribuídos com média
de 0,9 minuto e desvio-padrão de 0,3 minuto. As peças chegam à linha em um intervalo
constante de tempo igual a um minuto. O gerente da linha está preocupado com o tempo total
de produção. Nas palavras dele,

“Se o produto passa por 10 máquinas, que levam 0,9 minuto cada uma, então era
de se esperar que o tempo total de produção fosse de 0,9 x 10 = 9 minutos, em
média. Mas, hoje, estamos operando em 15 minutos, cerca de 50% mais lentos!”.
Figura 6.4 – Problema da linha de produção.

Um modelo de simulação foi construído, e o nosso objetivo inicial é determinar qual o


tempo necessário de warm-up. Inicialmente, deve-se executar o modelo por um tempo
suficientemente longo para que o sistema atinja as suas condições típicas de regime
permanente. Como regra prática, o estudo do tempo de warm-up é feito a partir de um
número mínimo de replicações, geralmente 5, pois a saída do modelo tende a ser muito
caótica, dificultando a análise a partir de apenas uma única replicação. Alguns resultados
das primeiras cinco replicações (600 minutos de simulação) estão representados na Tabela
6.9.

Tabela 6.9 – Resultados obtidos a partir de uma rodada com cinco replicações do exemplo da
linha de produção
Tempo médio de produção (min.)

Tempo de simulação (min.) Replicações


1 2 3 4 5 Média
10 0,00 0,00 0,00 0,00 0,00 0,00
20 3,00 3,06 1,98 2,03 2,92 2,60
30 9,62 9,60 9,79 9,98 9,84 9,76
40 10,82 11,26 10,75 11,64 11,39 11,17
50 11,37 12,87 11,26 11,66 11,19 11,67
60 12,47 13,34 12,04 11,76 10,91 12,10
70 13,33 14,78 13,29 12,70 11,03 13,03
80 13,57 14,08 13,91 12,68 12,00 13,25
90 12,51 14,23 14,47 12,28 12,07 13,11

580 15,47 14,71 15,07 15,79 13,79 14,97


590 15,26 14,87 15,82 16,60 13,17 15,14
600 15,08 14,61 15,99 16,97 12,85 15,10

Olhando mais atentamente para os dados da Tabela 6.9, notamos que os primeiros valores
são, de fato, inferiores aos valores observados no estado de regime permanente, nas linhas
finais da tabela. A explicação para esse fenômeno é a seguinte: repare que a linha de
produção possui 10 máquinas, e, se você é a primeira peça a ser produzida, então, você
encontrará um sistema vazio e sem filas. As peças subsequentes encontrarão também o
sistema ainda vazio, mas a chance de que alguma peça encontre fila de espera em alguma
máquina vai aumentando à medida que aumentam as peças em processamento simultâneo na
linha. Quando a operação entra em regime permanente, praticamente toda peça produzida
aguarda algum tempo em fila de alguma máquina.
A última coluna da Tabela 6.9 apresenta as médias do tempo de produção para cada
instante da simulação. Os valores da Tabela 6.9 estão representados graficamente na Figura
6.5 para os primeiros 500 minutos de simulação. Pela Figura 6.5, podemos facilmente notar
que a curva da média das replicações “suavizou” e facilitou a análise do comportamento
dos tempos de produção obtidos pelas cinco replicações. Adotando uma postura
“conservadora”, o período de warm-up dura os primeiros 250 minutos, pois a partir deste
instante a curva não aparenta mais tendência clara de crescimento ou diminuição, apenas
oscila entre valores limites máximos e mínimos.
Além da média aritmética das replicações, outra técnica usual é a do agrupamento dos
dados coletados em conjuntos menores. A média móvel de tamanho m de uma série de
dados é definida pela expressão:
Figura 6.5 – Tempos de produção obtidos a partir de cinco replicações e de suas médias para o exemplo da linha de
produção

(6.18)
A média móvel é uma das ferramentas mais comuns para previsão de séries temporais.
Considere, por exemplo, uma série histórica que represente o preço de fechamento de uma
ação na bolsa de valores ao longo do último ano. É natural pressupor que o comportamento
do preço dessa ação seja afetado pelas condições externas próximas à data atual e que, a
cada dia do ano, esse preço deve exibir um comportamento semelhante ao que ocorre nas
datas vizinhas. O preço da ação no final do ano teria, portanto, pouca correlação com o
preço da ação praticado no início do ano. Essa é a ideia por trás da utilização da média
móvel: calcular a média de uma “janela” de m pontos que se movimenta ao longo do tempo,
de modo a “focalizar” a média na vizinhança de cada ponto. Na determinação do tempo de
warm-up, podemos utilizar a média móvel para identificar um agrupamento de pontos (ou
“janela”) que caracterize melhor o início do estado de regime permanente do sistema.
A Tabela 6.10 relaciona as médias móveis (para m = 2 e m = 5) dos tempos de produção
obtidos a partir das cinco replicações do modelo da linha de produção. Cabe ressaltar que o
cálculo da média móvel com uma janela m só é possível a partir da m-ésima observação,
pois, para calcular a média móvel, por exemplo para m = 2, precisamos que ao menos duas
observações já tenham ocorrido.

Tabela 6.10 – Médias móveis (m = 2 e m = 5) dos tempos de produção obtidos a partir da


simulação de cinco replicações do exemplo da linha de produção
Tempos de produção
Tempo de simulação Média das cinco replicações Média móvel
m=2 m=5
0,00

10

20 2,60 1,30
30 9,76 6,18
40 11,17 10,47
50 11,67 11,42
60 12,10 11,89 7,04
70 13,03 12,56 9,46
80 13,25 13,14 11,55
90 13,11 13,18 12,24
100 13,24 13,18 12,63
110 13,62 13,43 12,95
A Figura 6.6 representa os gráficos construídos para a média (semelhante ao da Figura
6.5) e médias móveis representadas na Tabela 6.10.

Figura 6.6 – Tempos de produção ajustados por sua média, média móvel com m = 2 e média móvel com m = 5.

Como se pode perceber pela Figura 6.6, a média móvel “suaviza” a curva da média dos
tempos de produção. Com o aumento da janela m de 2 para 5, notamos uma maior
suavização da curva, pois um número maior de observações do período inicial será
descartado, “jogando fora” o regime transitório, e mais pontos serão utilizados no cálculo
da média, reduzindo a influência de “picos”, ou “vales”, isolados da curva média. A
identificação do tempo de warm-up fica, assim, facilitada quando utilizamos a média móvel,
devido ao ajuste nos dados obtidos através do modelo de simulação.3

Vamos prosseguir o estudo, realizando uma análise completa dos resultados de um


modelo de simulação para um sistema terminal.

Exemplo 6.4: Centro de distribuição


Em um centro de distribuição de uma transportadora, os tempos entre chegadas
sucessivas de pedidos de entregas seguem uma distribuição exponencial com média de
quatro horas. A frota desse centro encarregada dos pedidos constitui-se de três caminhões.
Para carregar completamente um caminhão, são utilizados, necessariamente, quatro dos oito
carregadores disponíveis. O tempo de carregamento do caminhão segue uma distribuição
normal com média de 100 minutos e desvio-padrão de 30 minutos. Existem duas docas de
carregamentos disponíveis para a operação. Para carregar, o caminhão deve estar,
necessariamente, posicionado em uma doca. Os tempos de atribuição e ocupação da doca já
estão incorporados ao tempo total de carregamento. Os tempos de transporte (da
transportadora até o cliente) estão uniformemente distribuídos entre 120 e 240 minutos. O
tempo de retorno (do cliente até a transportadora) segue exatamente essa mesma
distribuição. A operação de transporte é contínua e funciona 24 horas por dia. O ACD desse
exemplo está representado na Figura 6.7.
Basicamente, a análise dos dados de saída de uma simulação não terminal depende de
quatro etapas:
1. Estabelecer as medidas de desempenho adequadas;
2. Escolher a confiança estatística e a precisão com que se pretende trabalhar;
3. Identificar o período de aquecimento, ou warm-up;
4. Determinar o tempo de duração da simulação:
• O tempo de execução é curto: construir os intervalos de confiança a partir de um
conjunto de replicações;
• O tempo de execução é longo: construir lotes a partir de uma única replicação de
longa duração e construir os intervalos de confiança.

6.8.4. Estabelecer as medidas de desempenho adequadas


Neste caso, o gerente do centro de distribuição está preocupado com o tempo médio de
entrega do produto.

6.8.5. Escolher a confiança estatística e a precisão desejadas


Uma confiança estatística de 95% (α = 0,05) e uma precisão de h* ≤ 5 minutos são
valores adequados para este estudo.
Figura 6.7 – ACD do exemplo da transportadora.

6.8.6. Identificar o período de aquecimento (warm-up)


Para que possamos identificar o período de aquecimento, vamos rodar o modelo por um
período de tempo longo e observar o comportamento da medida de desempenho escolhida.4
A Figura 6.8 representa 920 tempos de entrega coletados ao longo de apenas uma
replicação. O tempo de simulação foi de 3.600 horas, ou cinco meses (= 5 × 30 × 24) de
operação do centro de distribuição. O tempo gasto no processamento dessa replicação foi
inferior a um minuto, em um Pentium III com 300 MHz e 256 MB de memória, utilizando o
software Arena 5.0. Note o comportamento aleatório dos dados. Apesar da sua aparência
caótica, os dados sugerem que os tempos de entrega estão entre 150 e 1.000 minutos.
Para identificarmos o tempo de warm-up, vamos utilizar a média móvel sobre os dados
resultantes de cinco replicações. A Figura 6.9 apresenta a média móvel, equação (6.18),
calculada a partir da média de cinco replicações, para uma janela m = 50 observações.
Como se pode perceber pela figura, a média móvel provocou uma maior suavização da
curva, facilitando a identificação do tempo de warm-up que, adotando uma postura
conservadora, termina após 700 horas de simulação.
Figura 6.8 – Tempos de entrega coletados da primeira replicação.

6.8.7. Determinar o tempo de simulação


O tempo de duração de uma simulação terminal é, como sabemos, determinado a priori.
No caso de uma simulação não terminal, estabelecido um tempo de warm-up, o próximo
passo é determinar por quanto tempo o sistema será simulado. Dois aspectos devem ser
considerados: o modelo simulado deve atingir o estado de regime permanente, e devemos
obter observações estatisticamente independentes. Pela Figura 6.9, podemos notar que um
tempo de simulação igual a 700 horas é suficiente para atingirmos o estado estacionário do
sistema. Por outro lado, o “custo computacional de cada replicação”, medido pelo tempo
que o computador leva para processá-la, foi relativamente baixo (menos de um minuto).

Figura 6.9 – Análise do tempo de warm-up na primeira replicação: média das cinco replicações iniciais e média
móvel com w = 50.

Se o tempo de processamento de cada replicação do modelo no seu computador não for


muito longo, podemos gerar diversas replicações (como fizemos no caso de sistemas
terminais), e as replicações podem ser consideradas como independentes e identicamente
distribuídas (i.i.d.). Por que isso é tão importante? Considerando aceita a hipótese de
independência, podemos construir os intervalos de confiança como fizemos anteriormente;
caso contrário, a análise é mais complexa e exigirá a construção de lotes (discutida na
próxima seção). Com o aumento da velocidade e da capacidade de processamento dos
computadores atuais, a prática de executar replicações longas tem se tornado cada vez mais
popular.
Utilizando a técnica descrita na Seção 6.6, foi construída uma amostra com 20
replicações, descartando-se os dados observados durante o período de warm-up de
700 horas. O tempo de simulação foi dobrado para 7.200 horas, ou 10 meses de operação,
pois a parte relativa ao tempo de warm-up será descartada, e, com o aumento do tempo,
pode-se coletar resultados de melhor qualidade (como regra prática, tempos maiores de
simulação implicam mais precisão na construção do intervalo de confiança5). A partir da
amostra-piloto (Tabela 6.11), a média do tempo de entrega foi de 372,3 minutos, e o desvio-
padrão de 14,4 minutos. O intervalo de confiança com 95% de significância para a média
do tempo de entregas é igual a [365,5; 379,0], o que significa que a precisão do intervalo é
igual a h = 6,8 minutos.

Tabela 6.11 – Amostra-piloto com 20 replicações, duração de 7.200 horas e tempo de warm-up
igual a 700 horas
Replicação Tempo médio de entrega (min.)
1 347,1
2 381,6
3 380,5
4 375,9
5 372,7
6 363,8
7 379,6
8 352,2
9 387,5
10 376,0
11 378,2
12 408,4
13 382,4
14 373,8
15 360,9
16 383,8
17 358,2
18 360,3
19 354,9

20 367,8
Média 372,3
Desvio-padrão 14,4

Para determinarmos o número de replicações necessárias para atingirmos a precisão


desejada de cinco minutos, basta utilizarmos a equação (6.6):

(6.19)

Após realizar uma rodada com 37 replicações,6 a média do tempo de entregas foi de
375,0 minutos, e o desvio-padrão foi de 15,1 minutos. O novo intervalo com 95% de
confiança para a média é de [370,0; 380,1], com uma precisão de 5,1 minutos. A precisão
desejada de cinco minutos não foi atingida, apesar do valor muito próximo. Novamente,
vamos determinar quantas replicações seriam necessárias considerando-se que as 37
replicações já realizadas representam uma nova amostra-piloto:

(6.20)

Necessitamos, portanto, de mais oito replicações. Com mais uma rodada de oito
replicações, a nova média para o tempo de entrega foi de 374,7 minutos, o desvio-padrão
foi de 15,2 minutos e podemos construir o seguinte intervalo com 95% de confiança para a
média: [370,1; 379,3], com uma precisão de 4,6 minutos. (A Tabela 6.12 apresenta um
resumo das rodadas executadas e os respectivos intervalos de confiança construídos.)

Tabela 6.12 – Resumo das rodadas realizadas e dos intervalos de confiança obtidos para a média
do tempo de entregas (minutos)
Precisão (metade do
Confiança intervalo) Intervalo de confiança da média
n α
(min.)

20 0,95 0,05 2,09 6,7 [365,5; 379,0]


37 0,95 0,05 2,03 5,1 [370,0; 380,1]
45 0,95 0,05 2,02 4,6 [370,1; 379,3]

6.8.8. O tempo de processamento é muito longo: criar lotes e construir os


intervalos de confiança
Se a simulação deve “correr” por um bom tempo até alcançar o estado de regime
permanente e rodar 45 replicações, leva a um tempo muito longo de processamento no seu
computador; a técnica alternativa é rodar apenas uma única replicação longa. Como as
observações individuais retiradas de uma única replicação não são mais independentes
entre si, não podemos construir um intervalo de confiança para a média do parâmetro em
análise. O método usualmente empregado consiste em dividir os resultados da simulação em
lotes grandes e contíguos, de tal modo que exista pouca correlação entre eles. Assim,
poderemos assumir que tais lotes são independentes entre si. A ideia aqui é a de que, em
uma longa replicação, a amostra é tão extensa que podemos dividi-la em uma série de
amostras menores. Como o tempo de simulação é longo, o efeito da configuração inicial é
dissipado e tem-se a certeza do regime permanente.
Essa técnica exige a estimativa de dois valores: o tamanho de cada lote e o número de
lotes necessários. O tamanho do lote, k, deve ser tal que duas observações retiradas, com
uma defasagem de k, uma da outra, tenham uma correlação próxima de zero. É natural supor
que os pontos na fronteira dos lotes tenham uma correlação alta, mas, se consideramos que
estamos trabalhando com lotes grandes, este efeito é minimizado.
Para facilitar a identificação da defasagem de tamanho k, podemos criar um
correlograma. O correlograma é um gráfico que representa o quanto uma observação,
retirada em um certo instante de tempo t, se relaciona com as observações subsequentes nos
instantes t+1, t+2, t+3,... A medida dessa relação é obtida pela função de autocorrelação
da série, definida pela expressão:

(6.21)

Onde:

ρk , função de autocorrelação;

, média da amostra;
, covariância de uma defasagem k;

, variância da amostra de tamanho n.

A função de autocorrelação só pode assumir valores no intervalo . Quanto mais


próximo dos extremos 1 ou –1 for o valor de ρk , maior o grau de correlação entre os dados
que estão a uma defasagem k entre si. Quanto mais próximo de 0 for o valor de ρk , menor o
grau de correlação entre os dados a uma distância k e maior a independência entre eles. O
correlograma é um gráfico que relaciona ρk com k.
A Figura 6.10 representa o correlograma do exemplo da transportadora. Para a
construção do correlograma, geralmente utiliza-se uma replicação com tempo superior a 10
vezes o tempo de warm-up; assim, foi realizada uma longa replicação de 10.000 horas.
Note, pela Figura 6.10, que a função de autocorrelação aproxima-se do zero quando a
defasagem k é aproximadamente igual a 17. A prática recomenda que adotemos um lote 10
ou mais vezes maior, ≥10k observações, de modo a garantir um número suficiente de
observações para os cálculos estatísticos que serão realizados a partir desta amostra
(quanto mais observações, melhor a qualidade dos resultados obtidos por lote).

Figura 6.10 – Correlograma do exemplo, para uma replicação de 10.000 horas.

O passo seguinte é determinar o número de lotes necessários. A boa prática recomenda


que sejam construídos 30 ou mais lotes. Se esses lotes não forem suficientes, podemos tratá-
los como uma amostra-piloto para a estimativa do número de lotes necessários. Assim,
vamos construir inicialmente 50 lotes. O último passo é determinar o tempo total de
simulação pela expressão:
Tempo total de simulação = tempo de warm-up + tempo de geração dos lotes + margem
de segurança
O tempo de warm-up já foi determinado anteriormente para o sistema: 700 horas. O
tempo de geração dos lotes pode ser estimado a partir da taxa de surgimento de entidades no
sistema. Pela descrição do exemplo, sabemos que, em média, de quatro em quatro horas um
novo pedido entra no sistema. Em outras palavras, temos uma nova observação a cada
quatro horas, isto é, uma taxa de surgimento de observações igual a:

observações/hora
(6.22)

Assim, o tempo de geração dos lotes, ou TG, pode ser estimado por:

Para o sistema em análise, temos:


(6.24)

Uma margem de segurança é adicionada como garantia extra de que a simulação não será
afetada pelas condições iniciais. Geralmente, adota-se 1% do tempo de geração dos lotes.
Assim, o tempo total de simulação é:

(6.25)

Agora é a vez de o “simulador” trabalhar um pouco... A replicação de 35.040 horas de


simulação consumiu menos de um minuto em um Pentium III com 300 Mhz e 256 Mb de
memória. Foram geradas 8.503 observações no total (já descontadas as observações
geradas durante o período de warm-up), e, como cada lote deve possuir 170 observações,
foi possível construir 50 lotes.
Cada lote deve ser tratado como uma nova replicação, e pode-se aplicar os mesmos
métodos utilizados para os sistemas terminais. Neste caso, a média do tempo de entregas é
de 367,2 minutos, o desvio-padrão é de 43 minutos, e o intervalo com 95% de confiança
para a média do tempo de entregas é: [355,1; 379,3], com uma precisão (tamanho da metade
do intervalo) de h=12,1 minutos. Como não foi atingida a precisão de cinco minutos, esse
conjunto de lotes deve ser tratado como uma amostra-piloto, e o novo número de lotes
necessários para atingir a precisão desejada é dado por:

lotes
(6.26)

O novo tempo de geração de lotes e o tempo total de simulação ficam sendo, portanto:

(6.27)

(6.28)
A replicação de 214.982 horas consumiu cerca de dois minutos de tempo de computação.
A simulação permitiu construir 313 lotes, a média do tempo de espera foi de 376,2 minutos,
o desvio-padrão foi de 46,8 minutos e o intervalo de 95% de confiança para a média foi de
[371,0; 381,4], o que corresponde a uma precisão de h = 5,2 minutos. Novamente, não foi
atingida a precisão desejada (cinco minutos). Antes de prosseguirmos, utilizando esses 313
lotes como uma amostra-piloto, podemos tentar um “truque” em vez de repetirmos os
cálculos. Como a última corrida foi longa, 214.982 horas, e estamos bem próximos da
precisão desejada, podemos tentar aumentar o número de observações por lote. Isto é,
vamos construir lotes, por exemplo, com 20k observações. Ao aumentarmos o número de
observações por lote, estaremos melhorando a qualidade dos dados coletados no lote e,
possivelmente, diminuindo o seu desvio-padrão, que, em última análise, deve diminuir o
tamanho do intervalo de confiança. Assim, não há necessidade de executarmos novamente a
replicação, basta redividi-la em lotes de 340 (= 20 × 17) observações. Por esse caminho,
são construídos 156 lotes, o tempo médio de espera é de 376,2 minutos – o mesmo valor
obtido anteriormente –, o desvio-padrão é de 30,0 minutos – portanto, menor – e o intervalo
com 95% de confiança para a média é de [371,5; 380,9], o que corresponde a uma precisão
de 4,7 minutos – portanto, dentro da precisão desejada. Mais uma vez: quanto mais
observações são coletadas, menores os tamanhos dos intervalos de confiança e mais
precisos os resultados.
6.9. Como comparar os resultados de alternativas simuladas?
Com um modelo de simulação pronto, podemos testar diversas alternativas antes de
implementá-las na prática. Por exemplo, poderíamos aumentar o número de caminhões para
diminuir o tempo médio de entregas no problema do centro de distribuição. O modelo de
simulação é, pois, uma poderosa ferramenta para a tomada de decisão.
Como discutido neste capítulo, os resultados obtidos pelo modelo são expressos na forma
de intervalos de confiança, que nada mais são do que intervalos que contêm uma média com
100(1-α)% de confiança. O problema neste momento é decidir qual das alternativas
simuladas apresenta o melhor desempenho.
Se a comparação é feita entre duas alternativas, uma técnica de fácil implementação é
aplicar um teste estatístico para comparação entre duas médias. Inicialmente, vamos
estabelecer a notação:
• é a observação obtida pela i-ésima replicação da simulação da alternativa 1, para

• é a observação obtida pela i-ésima replicação da simulação da alternativa 2, para

6.9.1. Caso 1: alternativas com o mesmo número de replicações


Se as duas alternativas foram simuladas por um mesmo número de replicações, ou seja,
e pode-se utilizar o teste t para amostras emparelhadas7,8. Usualmente, a
aplicação do teste é feita através da construção de um intervalo de confiança utilizando-se
os seguintes passos:
Passo 1: Calcular as diferenças:

(6.29)

Passo 2: Calcular a média e o desvio-padrão das diferenças:

(6.30)

(6.31)
Passo 3: Construir um intervalo de confiança, ,para o valor da média das
diferenças

Passo 4: Se o intervalo de confiança :

1. Contiver o 0, isto é, , então nada pode ser concluído sobre a diferença


entre as médias das alternativas, ou seja, não se pode afirmar que uma alternativa
simulada é melhor que a outra;
2. Se o intervalo cair totalmente à direita do 0, isto é, , então a média da
alternativa 1 é maior do que a outra;
3. Se o intervalo cair totalmente à esquerda do 0, isto é, , então a média
da alternativa 2 é maior do que a outra.

Exemplo 6.5: Comparando duas alternativas


As observações do tempo médio de espera por atendimento, obtidas pela simulação de
duas alternativas diferentes em um mesmo modelo de simulação, estão representadas na
Tabela 6.14. Os intervalos com 95% de confiança obtidos para a média dos tempos de
espera foram:
a) Alternativa 1: [2,018; 3,433]
b) Alternativa 2: [3,129; 3,962]

Tabela 6.13 – Cálculo das diferenças


Tempo de espera
Replicação Diferença
Alternativa 1 Alternativa 2
1 2,545 3,809 –1,263
2 2,370 3,529 –1,159
3 1,266 4,457 –3,191
4 1,359 2,186 –0,826
5 4,171 3,358 0,813
6 3,397 3,399 –0,002
7 3,200 3,429 –0,229
8 4,026 3,827 0,199
9 2,312 3,933 –1,621
10 2,606 3,532 –0,926
Média 2,725 3,546 –0,821
Desvio-padrão 0,989 0,582 1,121
Tabela 6.14 – Tempos de espera para as duas alternativas analisadas
Tempo de espera
Replicação
Alternativa 1 Alternativa 2
1 2,545 3,809
2 2,370 3,529
3 1,266 4,457
4 1,359 2,186
5 4,171 3,358
6 3,397 3,399
7 3,200 3,429
8 4,026 3,827
9 2,312 3,933
10 2,606 3,532
Média 2,725 3,546
Desvio-padrão 0,989 0,582

A Tabela 6.13 apresenta o cálculo das diferenças obtidas ao aplicarmos a equação (6.29)
para 10 replicações de cada alternativa.
A partir da nova amostra de valores, podemos calcular o novo intervalo de confiança.
Considerando um nível de confiança de 100(1–0,05)% e n = 10 replicações, obtemos, a
partir da tabela da distribuição de t de Student:

(6.32)

Assim, a precisão para o intervalo fica:

(6.33)

E o intervalo com 95% de confiança para a média das diferenças é:

(6.34)
Portanto, como o intervalo não contém o 0, o tempo médio de espera para atendimento da
alternativa 1 é menor do que a mesma medida de desempenho obtida pela alternativa 2.

6.9.2. Caso 2: amostras de tamanhos diferentes


O teste é semelhante ao realizado no caso anterior; porém, como as amostras não têm
mais o mesmo tamanho, a média e a variância são calculadas para cada alternativa
separadamente.

Médias:

(6.35)

(6.36)
Desvios:

(6.37)

(6.38)

O intervalo de confiança com 100(1-α)% é dado por:

(6.39)
Onde é o número de graus de liberdade, que pode ser obtido pela expressão:

(6.40)

Arredondado para o inteiro acima.


6.10. Exercícios de revisão
1. Identifique os seguintes sistemas como “terminais” ou “não terminais”, justificando sua
resposta:
a) Uma lavanderia de autoatendimento 24h.
b) Um semáforo.
c) Uma festa rave.
d) Uma linha de produção de automóveis.
e) Uma maternidade.
f) Um consultório dentário.
g) A cozinha de produção de donuts, existente na própria loja.

2. Em um estudo de simulação, deseja-se analisar o comportamento das pessoas ao


atravessarem uma determinada via. A Tabela 6.15 representa os valores obtidos, em
minutos, para os tempos que as pessoas levaram na travessia (tempo de espera +
caminhada pela via).

Tabela 6.15 – Exercício 2


0,95 0,85 0,92 0,95 0,93 0,86 1,00 6,10 0,92 0,85 0,81
0,78 0,93 0,93 1,05 0,93 0,10 1,06 1,06 0,96 0,81 0,96
Construa os intervalos de confiança para a média da população, considerando
confianças estatísticas de 99% e 95%.

3. Em um estudo de simulação sobre uma nova linha de produção, pretende-se estudar o


número médio de peças em produção (work in progress – WIP). Considere que foi
realizada uma rodada de 50 replicações, sendo construído o intervalo com 95% de
confiança [7,7; 9,6] para o número médio de peças em produção. Sendo µ o número
médio de peças em produção para a população em estudo, resolva:
a) Um intervalo com 90% de confiança calculado a partir dessa mesma amostra seria “mais
largo” ou “mais estreito” do que o intervalo dado? Explique seu raciocínio.
b) Considere a seguinte afirmação: “Existe 95% de chance de que µ esteja no intervalo
entre 7,7 e 9,6”. Explique por que essa afirmação está correta ou não.
c) Considere a seguinte afirmação: “Nós podemos estar confiantes de que, em 95% do
tempo, o número médio de peças em produção estará entre 7,7 e 9,6 peças”. Explique por
que essa afirmação está correta ou não.
d) Considere a seguinte afirmação: “Se as rodadas forem executadas 100 vezes, 95 dos
intervalos resultantes incluirão µ”. Explique por que essa afirmação está correta ou não.

4. Em um modelo de simulação de uma fila com apenas um servidor para atendimento,


foram realizadas 10 replicações para se determinar o número médio de pessoas em fila.
Os resultados obtidos para cada replicação estão representados na Tabela 6.16.
a) Construa um intervalo de confiança para a média com confiança de 95%.
b) Construa um intervalo de confiança para a média com confiança de 99%.
c) Qual dos intervalos calculados é mais preciso?

Tabela 6.16 – Exercício 4


Replicação Média de pessoas em fila
1 3,73
2 2,00
3 0,48
4 1,38
5 1,26
6 0,34
7 1,14
8 1,20
9 1,22
10 1,15

5. Intervalo de confiança para a proporção. Considere que, no Exemplo 6.2, o gerente


deseja estudar a probabilidade de que algum cliente aguarde mais do que 10 minutos em
fila.
a) Construa um modelo computacional para o exemplo.
b) Construa um intervalo de confiança para a probabilidade de que o tempo de espera em
fila seja maior do que 10 minutos, com confiança de 95%.
c) Quantas replicações a mais devem ser realizadas para que a precisão do intervalo seja de
1%?

6. Neste capítulo, discutimos um modo de se determinar o número de replicações


necessárias para se atingir um nível de confiança 100(1 – α)% do intervalo, pela
construção de uma amostra-piloto. Outro modo para se determinar o tamanho da amostra
é utilizar a expressão

onde s é a variância obtida a partir da amostra-piloto.

Considerando que, para n ≥ 50, obtenha a expressão anterior a partir


da expressão do intervalo de confiança para a média.

7. Os gráficos a seguir foram extraídos de diferentes estudos de simulação. Para cada


gráfico:
a) Identifique o estado em que a simulação se encontra: transitório ou em regime
permanente.
b) Classifique os sistemas em terminais ou não terminais.
8. Procedimento de Welch. Uma técnica de fácil implementação para se determinar o tempo
de warm-up foi proposta por Welch (1983). Diferentemente dos procedimentos com os
quais se calculam as médias das medidas de desempenho ao longo de uma mesma
replicação, o procedimento de Welch é utilizado para calcular a média de r replicações
diferentes em instantes fixos de tempo. O objetivo é observar qual a tendência dos dados
em face das condições iniciais do sistema.
Passo 1: Faça uma rodada com r replicações (r > 5) de “duração” n (n grande).
Considere xij a i-ésima (i = 1, 2,..., n) observação da j-ésima (j = 1, 2,..., r)
replicação.
Passo 2: Calcule a média de cada “lote” i:

para i=1, 2, ..., n.

Cada média representa a média das i-ésimas observações, sendo também denominada
média agrupada.
Passo 3: Para suavizar os efeitos das oscilações presentes na série ,
construa a seguinte média móvel:
Nas expressões anteriores, w é um número inteiro que representa a “janela” utilizada para
o cálculo da média móvel (adotar: ). A expressão (B) representa a média
móvel de 2w valores com centro em i. Por exemplo, se i = 10 e w = 2, então, a
expressão (B) representa a média dos valores de índice k=10-2, 10-1, 10, 10+1, 10+2,
ou:

Como até a observação w não temos um número suficiente de observações para


calcularmos a média móvel, precisamos de, no mínimo, 2w+1 valores. A expressão
(A) calcula as médias móveis com centro em i, mas com um número menor de
observações.
Passo 4: Desenhe o gráfico da média móvel , para alguns valores de w, e
identifique o momento em que as curvas parecem convergir. Caso nenhum valor de w
tenha sido satisfatório, repita o procedimento para novas r replicações.

A Tabela 6.17 representa a aplicação do procedimento de Welch para uma determinada


simulação. A Figura 6.11 mostra os respectivos gráficos das médias móveis obtidas.
a) Observando o gráfico, qual seria um tempo de warm-up adequado para a simulação em
estudo?
b) Acrescente uma nova coluna na Tabela 6.17, considerando w = 5, e construa o novo
gráfico resultante. Existe alguma mudança significativa no tempo de warm-up escolhido
no item a)?

Tabela 6.17 – Exercício 8


Replicações Média móvel
Obs. Média agrupada
1 2 3 4 5 w=2 w=3 w=4
1 2,0 3,0 1,0 5,0 10,0 4,2 4,2 4,2 4,2
2 15,0 32,0 39,0 28,0 27,0 28,2 26,4 26,4 26,4
3 62,0 58,0 58,0 5,0 51,0 46,8 73,2 73,2 73,2
4 94,0 191,0 190,0 120,0 132,0 145,4 102,9 114,9 114,9
5 133,0 143,0 205,0 110,0 115,0 141,2 154,4 151,7 150,9
6 122,0 174,0 195,0 125,0 149,0 153,0 197,4 189,4 180,9
7 277,0 341,0 262,0 305,0 244,0 285,8 226,7 221,9 208,6
8 272,0 310,0 229,0 281,0 217,0 261,8 253,4 240,7 234,2
9 302,0 304,0 238,0 295,0 319,0 291,6 278,2 260,1 249,2
10 330,0 304,0 263,0 256,0 220,0 274,6 276,4 278,4 267,4
11 300,0 323,0 261,0 279,0 222,0 277,0 280,2 281,1 282,9
12 311,0 305,0 264,0 282,0 224,0 277,2 282,9 285,5 283,0
13 331,0 306,0 216,0 337,0 213,0 280,6 286,5 284,8 285,5
14 320,0 294,0 310,0 351,0 250,0 305,0 288,4 286,2 284,7
15 296,0 283,0 275,0 340,0 269,0 292,6 289,8 287,2 286,1
16 220,0 271,0 314,0 307,0 322,0 286,8 290,5 288,7 288,3
17 225,0 298,0 285,0 306,0 306,0 284,0 287,0 291,0
18 212,0 288,0 293,0 288,0 340,0 284,2 287,8
19 223,0 284,0 306,0 320,0 305,0 287,6
20 308,0 317,0 288,0 277,0 293,0 296,6
Figura 6.11 – Exercício 8.

9. Procedimento das “médias agrupadas e exclusão”. Um procedimento alternativo, mas


baseado no procedimento de Welch, foi proposto por Banks et al. (2001).
Passo 1: Faça uma rodada com r replicações (r > 5) de “duração” n (n grande).
Considere xij a i-ésima (i=1, 2,..., n) observação da j-ésima (j=1, 2,..., r) replicação.
Passo 2: Calcule a média de cada “lote” i:
para i=1, 2, ..., n.

Passo 3: Cada média representa a média das i-ésimas observações, sendo também
denominada média agrupada.
Passo 4: Calcule a média acumulada de cada lote utilizando a seguinte expressão:

Na expressão anterior, d representa o número de médias agrupadas excluídas do cálculo


da média acumulada. Por exemplo, se i = 5 e d = 0, temos a média acumulada das
primeiras cinco médias agrupadas. Contudo, para i = 5 e d = 1, temos a média
acumulada das quatro últimas médias agrupadas, excluída uma observação, ou seja:

Passo 5: Desenhe o gráfico da média acumulada para alguns valores do número de


médias excluídas, d. Observe o gráfico e identifique o momento em que os efeitos das
condições iniciais deixam de afetar sua forma.

A Tabela 6.18 e a Figura 6.12 representam os dados utilizados no procedimento para o


mesmo estudo de simulação do exercício anterior.

Tabela 6.18 – Exercício 9


Replicações Média acumulada
Obs. Média agrupada
1 2 3 4 5 d=0 d=1 d=2 d=5 d=10
1 2,0 3,0 1,0 5,0 10,0 4,2 4,2
2 15,0 32,0 39,0 28,0 27,0 28,2 16,2 28,2
3 62,0 58,0 58,0 5,0 51,0 46,8 26,4 37,5 46,8
4 94,0 191,0 190,0 120,0 132,0 145,4 56,2 73,5 96,1
5 133,0 143,0 205,0 110,0 115,0 141,2 73,2 90,4 111,1
6 122,0 174,0 195,0 125,0 149,0 153,0 86,5 102,9 121,6 153,0
7 277,0 341,0 262,0 305,0 244,0 285,8 114,9 133,4 154,4 219,4
8 272,0 310,0 229,0 281,0 217,0 261,8 133,3 151,7 172,3 233,5
9 302,0 304,0 238,0 295,0 319,0 291,6 150,9 169,2 189,4 248,1
10 330,0 304,0 263,0 256,0 220,0 274,6 163,3 180,9 200,0 253,4 274,6
11 300,0 323,0 261,0 279,0 222,0 277,0 173,6 190,5 208,6 257,3 275,8
12 311,0 305,0 264,0 282,0 224,0 277,2 182,2 198,4 215,4 260,1 276,3
13 331,0 306,0 216,0 337,0 213,0 280,6 189,8 205,3 221,4 262,7 277,4
14 320,0 294,0 310,0 351,0 250,0 305,0 198,0 212,9 228,3 267,4 282,9
15 296,0 283,0 275,0 340,0 269,0 292,6 204,3 218,6 233,3 269,9 284,5
16 220,0 271,0 314,0 307,0 322,0 286,8 209,5 223,2 237,1 271,5 284,8
17 225,0 298,0 285,0 306,0 306,0 284,0 213,9 227,0 240,2 272,5 284,7
18 212,0 288,0 293,0 288,0 340,0 284,2 217,8 230,3 243,0 273,4 284,7
19 223,0 284,0 306,0 320,0 305,0 287,6 221,5 233,5 245,6 274,4 285,0
20 308,0 317,0 288,0 277,0 293,0 296,6 225,2 236,8 248,4 275,9 286,0
Figura 6.12 – Exercício 9.

a) Analisando a Figura 6.12 para d = 0, aparentemente, as condições iniciais afetam os


resultados ____________________ (abaixando/aumentando) a estimativa do tempo
médio de espera.
b) Perceba, pelo gráfico, que, quanto mais médias agrupadas são excluídas, ou seja, quanto
maior o valor d, menos os dados iniciais afetam o resultado da estimativa do tempo
médio de espera obtido pela simulação. Construa e desenhe as curvas de mais algumas
sequências de médias acumuladas para d = 11, 12 e 15.
c) A partir de que momento podemos considerar que o sistema não é mais afetado pelas suas
condições iniciais?

10. Um caixa eletrônico de banco, localizado em uma loja de conveniência 24 horas, possui
intervalos entre chegadas sucessivas de clientes exponencialmente distribuídos com
média de 22 segundos. O tempo de atendimento no caixa é também exponencialmente
distribuído com média de 20 segundos. Este tipo de sistema é conhecido como uma fila
M/M/1.
a) Construa o ACD representando o sistema.
b) O sistema é terminal ou não terminal? Justifique.
c) Construa um modelo computacional para a simulação do sistema e determine o tempo de
warm-up a partir do procedimento de Welch.
d) Em uma fila qualquer, a taxa de chegadas de clientes no sistema, λ, é definida por:

e a taxa de atendimento de clientes no servidor, µ, é definida por:

e) Portanto, no caixa eletrônico, a taxa de chegadas de clientes é de ____________


clientes/min, e a taxa de atendimento é de ____________ clientes/min.
f) Um sistema que possui estaria bem dimensionado? Justifique.
g) Uma medida de desempenho de filas é o índice de congestionamento do sistema, ρ. Ele
indica a fração do tempo que o caixa fica ocupado em serviço. No caso de uma fila
M/M/1, esse índice é determinado pela expressão:

Portanto, no caixa eletrônico, o índice de congestionamento é de ______.


h) Se , o índice de congestionamento é igual a 1. Sem simular o modelo, responda:
este sistema está bem dimensionado? Justifique.
i) Agora, utilize o modelo computacional para responder à questão anterior.

11. Uma grande livraria possui quatro caixas para pagamento. O processo de chegadas
sucessivas de clientes é um processo de Poisson com taxa média de chegadas de
2,5 cliente/min. Atualmente, não existe uma fila única, e, quando um cliente chega ao
caixa, opta pela menor fila. Após escolher a fila, o cliente permanece nela até o momento
do pagamento. O processo de atendimento nos caixas também é um processo de Poisson
com taxa média de atendimentos de 1 cliente/min. Considere que a livraria opera das 9h
às 24h, todos os dias. O gerente pretende realizar um estudo sobre as vantagens da fila
única em relação ao sistema atual e solicitou sua ajuda.
a) Construa o ACD do sistema de fila única e do sistema de filas separadas.
b) Construa um modelo computacional para cada sistema do item a).
c) Construa intervalos de confiança adequados para as seguintes medidas de desempenho
dos sistemas: tempo médio que um cliente permanece no sistema, tempo médio que um
cliente permanece em fila, número de clientes no sistema, número de clientes em fila e
número de clientes que ainda estão em fila no momento em que a livraria está encerrando
o expediente.
d) Qual sistema tem melhor desempenho para cada uma das medidas de desempenho obtidas
no item c)? E qual a sua sugestão para o gerente?
e) Depois de ouvir suas sugestões sobre “a justiça social em filas” e analisar o seu relatório
de projeto, o gerente decide pelo sistema de fila única. Ele fica tão entusiasmado com as
suas recomendações que o convida para o happy hour dos “bêbados habilidosos” – uma
confraria de gerentes de livrarias tomadores de vinho. Você, obviamente, aceita sem
saber que eles bebem e não ficam tontos, já você... Na manhã seguinte você descobre que
os gerentes bêbados e habilidosos criaram uma promoção espetacular na livraria:
Considerando que uma compra média equivale a R$ 30,00, qual redução no lucro da
loja essa promoção acarretará?
f) Considerando que o custo de um novo caixa (além dos atuais) é de R$ 50,00/hora relativa
aos salários e que o turno de trabalho de um caixa é de oito horas, determine o número de
caixas necessários a mais para minimizar o prejuízo da promoção.
g) Promoções desse tipo sempre ocasionam um aumento da demanda, pois a maior parte das
pessoas é muito sensível à rapidez no atendimento. Considerando a solução encontrada
no item anterior, qual o aumento de demanda tolerável pelo sistema em clientes/min.?
Qual o impacto do aumento de demanda sobre o prejuízo inicial?
h) Obtenha do seu modelo computacional um gráfico que represente o número de clientes
em fila durante a simulação. Se você analisar com atenção o comportamento da fila, deve
perceber que ela exibe um processo cíclico de “renovação” ou “regeneração”: a fila
surge, cresce e diminui até praticamente sumir. Esse ciclo regenerativo, que se repete em
diversos momentos da simulação, é uma característica de sistemas que possuem
distribuições exponenciais envolvidas – você mesmo pode identificá-lo no seu dia a dia.
Baseado nessa constatação, quais sugestões você daria ao gerente quanto às atribuições
dos funcionários da livraria?

12. Considere o Exemplo 6.4. O diretor da operação deseja, como “estratégia de


marketing”, garantir que a entrega chegue ao cliente em um tempo de, no máximo, seis
horas, contadas a partir da chegada do pedido no centro de distribuição. Se isso não
ocorrer, o cliente ganha o valor da carga do caminhão, que vale, em média, R$ 10.000,00.
a) Refaça o ACD do sistema, incorporando as alterações propostas.
b) Construa um modelo de simulação computacional do sistema.
c) A estratégia é viável? O que é necessário ser feito para implementar essa estratégia?
Experimente mudar a disponibilidade de recursos, para ver o que ocorre.
d) Suponha que um pico de demanda de 30% ocorra para esse ACD. Como fica a operação?
Discuta qual seria a melhor estratégia para contornar esse problema.

13. A linha de metrô de RockCity é composta por sete estações, como indicado na Figura
6.13. Cada trem inicia sua viagem pela estação Muddy Waters e termina na Garagem. Os
passageiros podem embarcar ou desembarcar nas estações: Muddy Waters, Elvis, Who,
Hendrix, Sex Pistols e Heart Break Hotel. Na Tabela 6.19, podem ser identificados os
tempos médios de embarque e desembarque em cada estação, que são exponencialmente
distribuídos, e as distâncias em km entre elas. Nunca pode acontecer de dois trens
trafegarem simultaneamente em um mesmo trecho da linha; um dos trens deve aguardar na
estação até que o próximo trecho esteja livre. A velocidade de operação dos trens é
constante e igual a 50 km/h. A companhia que opera o metrô em RockCity está
preocupada com o horário de operação no período que vai das 18h às 20h.

Figura 6.13 – Exercício 13.

Tabela 6.19 – Exercício 13


Tempo de embarque/desembarque Distância para a próxima estação
Estação
(min.) (km)
Muddy Waters 1 2
Elvis 2 4
Who 3 4
Hendrix 4 1
Sex Pistols 1 2
Heart Break Hotel 2 4
Garagem -o- -o-

Os trens partem da estação Muddy Waters de 15 em 15 minutos, o que significa que,


no período das 18h às 20h, 16 trens partem para a viagem.
a) Construa o ACD do problema e um modelo computacional do sistema.
b) Considerando um nível de confiança de 95%, construa um intervalo de confiança para a
média do tempo de viagem completa de um trem. Podemos afirmar que, em 95% das
viagens, o tempo total de viagem será inferior a ____%.
c) Com o intuito de melhorar o atendimento, a companhia pretende diminuir o intervalo de
partida dos trens para cinco minutos. O que acontecerá com o tempo médio de viagem
caso essa decisão seja implementada?
d) Outra alternativa considerada pelo metrô é aumentar a velocidade dos trens para
60 km/h. O que acontecerá com o tempo médio de viagem caso essa decisão seja
implementada?
e) Os trens podem apresentar defeito durante o trajeto entre as estações. A probabilidade de
ocorrer alguma falha nesse trajeto é de 0,5%. Nesse caso, o trem deve aguardar na
próxima estação por um atendimento que consome 20 minutos, sendo esse tempo
constante. Qual o efeito que isso terá sobre o intervalo de confiança construído no item
a)?
f) Estudos de confiabilidade do departamento de Engenharia identificaram que os defeitos
são diretamente relacionados à velocidade do trem, como indica a Tabela 6.20. Todos os
trens devem viajar na mesma velocidade, mas você pode escolher a velocidade mais
conveniente. Construa um intervalo com 95% de confiança para a média do tempo de
viagem, para cada uma das velocidades relacionadas na Tabela 6.20. Qual velocidade
leva ao melhor tempo total de viagem?

Tabela 6.20 – Exercício 13


Velocidade (km/h) Probabilidade de defeito
40 0,25%
50 0,4%
60 0,5%
70 1%
80 5%
14. Redes de Filas – Teorema de Jackson. Em uma rede de computadores, o processo de
chegadas de tarefas de processamento é um processo de Poisson com taxa de
1,5 tarefa/min. A rede é composta por três computadores, A, B e C, que podem processar
as tarefas. Os tempos de processamento das tarefas são exponencialmente distribuídos,
com médias de: A, 1 min; B, 2 min; C, 1 min. As novas tarefas sempre iniciam o
processamento pelo computador A. Caso a tarefa encontre o computador ocupado, ela
aguarda em fila no próprio computador. Após acabar de ser processada, a tarefa ou é
encaminhada para outro computador ou sai do sistema, como indica a Tabela 6.21, que
representa as probabilidades de transição entre os computadores. Por exemplo, uma
tarefa que acaba de ser processada no computador A tem 50% de chance de ser
encaminhada ao computador B e 50% de chance de ser encaminhada ao computador C.

Tabela 6.21 – Exercício 14


Para
A B C Sair
A 0 0,5 0,5 0
De B 0 0 0,8 0,2
C 0,2 0 0 0,8

a) Construa o ACD do problema.


b) Construa um modelo de simulação computacional do problema.
c) Considere que a rede está em funcionamento 24 horas por dia. Determine o tempo de
warm-up para a simulação.
d) Estime o tempo médio que cada tarefa permanece no sistema e o número médio de tarefas
no sistema.
e) Qual a fração do tempo em que o computador A permanece ocioso?
f) O Teorema de Jackson (1957) estabelece que, em uma rede de filas aberta, como a do
exercício, se os tempos entre chegadas sucessivas de clientes são (1) exponencialmente
distribuídos, (2) os tempos de serviço em cada estágio da rede são exponencialmente
distribuídos e (3) cada estágio tem uma capacidade de espera em fila infinita, então, os
tempos entre chegadas sucessivas de clientes para cada estágio da fila também são
exponencialmente distribuídos (WINSTON, 1994). Isso significa que cada estágio da fila
pode ser tratado como uma fila M/M/1, e podem ser utilizadas as expressões analíticas
semelhantes às utilizadas no exercício 10. Identifique a taxa de chegadas ao computador
A e determine a fração do tempo que o computador A permanece ocupado, utilizando a
expressão do índice de congestionamento ρ apresentada no exercício 10. Compare com o
resultado obtido pelo modelo de simulação.
Leitura Complementar

A técnica da redução da variância


Como discutimos no início do capítulo, todo modelo de simulação que possui entradas
representadas por distribuições probabilísticas de variáveis aleatórias também terá saídas
aleatórias.9 Uma consequência disso é a necessidade de construirmos intervalos de
confiança para os parâmetros escolhidos para análise. Quanto menor for o intervalo de
confiança em um dado nível de significância α (ou quanto maior a precisão), maior será a
segurança de nossa estimativa. Para reduzirmos o tamanho do intervalo, uma alternativa é
aumentarmos o tempo de simulação do modelo, de modo a coletarmos um número maior de
dados no regime permanente.
Existem algumas técnicas disponíveis para a redução da variância de um modelo sem a
necessidade de aumentarmos o tempo de simulação. Uma das técnicas mais populares e
encontrada em diversos pacotes comerciais utiliza números aleatórios denominados
antitéticos.10 Nessa técnica, deve-se simular o sistema em “pares de replicações” ou,
usando a tal palavra novamente, “replicações antitéticas”. Para entendermos essa técnica (e
a própria palavra “antitética”), devemos nos reportar ao processo de geração de números
aleatórios dentro do computador (como discutido no Apêndice III).
Internamente, o processo de simulação no computador inicia-se pela geração de uma
sequência de números aleatórios uniformemente distribuídos entre 0 e 1 (o Apêndice III
apresenta mais detalhes). A seguir, cada número aleatório da sequência é transformado em
um número aleatório de uma sequência que segue a distribuição probabilística escolhida. O
processo de simulação prossegue até o final, e o parâmetro de saída é estimado a partir dos
resultados da simulação. Considere, por exemplo, que X é a estimativa de um parâmetro de
saída de uma simulação, feita a partir de uma sequência de números aleatórios
uniformemente distribuídos entre 0 e 1. Vamos denominar essa sequência de r1, r2, ..., rn.
Seguindo a metodologia descrita neste capítulo, para construirmos um intervalo de
confiança para X, devemos rodar o modelo por um número mínimo de replicações. É no
modo como essas replicações serão construídas que a técnica dos números antitéticos vai
intervir. Acompanhe atentamente: considere que, a partir de cada sequência anterior, r1, r2,
..., rn, foi construída a sequência antitética 1-r1, 1-r2, ..., 1-rn e o modelo rodado para cada
par de sequências assim geradas. A denominação antitética sugere que as sequências são
antagônicas; de fato, quando em uma replicação o tempo de atendimento, por exemplo, é
alto, na outra ele será, obrigatoriamente, baixo. Note que a sequência 1-r1,1-r2,...,1-rn é
igualmente aleatória e uniformemente distribuída entre 0 e 1, assim como sua sequência
antitética r1, r2, ..., rn (que é a sequência original).
Agora, considere X a estimativa do parâmetro de saída obtida quando usamos a primeira
sequência e Y a estimativa do mesmo parâmetro de saída do modelo quando usamos a
sequência antitética. Como uma sequência foi obtida diretamente da outra, os resultados das
duas simulações não são independentes. Dizemos que as variáveis X e Y são negativamente
correlacionadas (quando uma aumenta, a outra, obrigatoriamente, diminui). Neste caso, a
média do parâmetro pode ser obtida diretamente pela média de X e Y:

Contudo, como as variáveis não são independentes entre si, a variância do parâmetro é
estimada por:

Onde: Cov(X,Y) é a covariância entre X e Y.


Se a covariância entre X e Y é negativa, podemos concluir que a variância de X + Y será
menor, pois, na expressão anterior, o último termo será negativo, diminuindo o valor de V(X
+ Y). O interessante é que, para estimarmos a variância V(X + Y), não há necessidade de
calcularmos diretamente a covariância Cov(X, Y), pois podemos calcular a variância de X +
Y diretamente.
Tomemos um exemplo numérico. Na Tabela 6.22, temos os resultados dos parâmetros X e
Y para cinco rodadas de uma simulação.

Tabela 6.22 – Resultados para os parâmetros X e Y em cinco rodadas de uma simulação


Rodada X Y (X+Y)/2
1 1,78 0,65 1,22
2 2,05 0,48 1,27
3 0,14 3,21 1,68
4 1,24 1,43 1,34
5 0,98 2,12 1,55
Média 1,24 1,58 1,41
Variância 0,56 1,26 0,04

A média do parâmetro é estimada diretamente por:

A variância, já calculada na tabela, é:


A precisão para o intervalo de confiança fica:

O intervalo com 95% de confiança para o parâmetro de análise fica, portanto:

minuto.

A precisão do intervalo anterior é baixa, apesar de utilizarmos apenas 10 replicações no


total.
Devemos frisar que nem todo software comercial de simulação dispõe de mecanismos
para redução da variância.
Existem outras técnicas de redução da variância. Para o leitor interessado, sugerimos a
consulta a Law e Kelton (1991).
Referências bibliográficas
BANKS, Jerry; CARSON, John S.; NELSON, Barry L.; NICOL, David M. Discrete-event
system simulation. 2. ed. Upper Sandle River: Prentice-Hall International Series in
Industrial and System Engineering, 2001.
CHISMAN, James A. Industrial cases in simulation modeling. Belmont: Duxbury Press,
1996.
DEVORE, Jay. Probability and statistics for engineering and the sciences. 5. ed.
Pacific Grove: Duxbury Press, 2000.
GOLDSMAN, David. Simulation output analysis. Proceedings of the 1992 Winter
Simulation Conference, p. 97-103, 1992.
JACKSON, Jim. Networks of waiting lines. Operations Research, n. 5, p. 518-521,
1997.
KELTON, David W.; SADOWSKI, Randall P.; SADOWSKI, David. Simulation with
Arena. Boston: McGraw Hill, 1998.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed., Nova
York: McGraw-Hill, 1991.
ROBINSON, Stewart. Simulation: the practice of model development and use.
Chichester: John Wiley & Sons, 2004.
TAHA, Hamdy A. Operations research: an introduction. 7. ed. Nova York: Maxwell
MacMillan Publishing, 2002.
WINSTON, Wayne L. Operations research: applications and algorithms. Belmont:
Duxbury Press, 1994.
Capítulo 7

Projeto de experimentos e otimização


7.1. Introdução
Em muitos estudos de simulação, existem questões relevantes sobre o sistema simulado
que vão além dos resultados experimentais (assunto discutido no Capítulo 6). Por exemplo,
considere um modelo de simulação de um sistema de distribuição rodoviário em que são
apreciados mais de 20 parâmetros ou fatores de entrada (taxa de descarregamento, tempo de
viagem, paradas de manutenção, quebras etc.). O cliente que encomendou o estudo de
simulação poderia querer saber quais parâmetros afetam de modo mais significativo o
número de viagens/caminhão feitas por mês ou, ainda, qual o número ótimo de caminhões
que maximiza esse valor mensal de viagens/caminhão, dado que os demais parâmetros
sejam mantidos constantes.
Para lidar com questões como essas, dispomos de duas ferramentas: o Projeto de
Experimentos (do inglês Design of Experiments – DOE) –, que responde ao questionamento
sobre os fatores mais influentes na produtividade –, e a Simulação e Otimização –, que
responde à pergunta sobre a frota ótima de caminhões.
Na Seção 7.2, são apresentados os princípios do Projeto de Experimentos, e, na Seção
7.4, discute-se Simulação e Otimização. Ao final, na Seção 7.7, discute-se a integração
entre as duas ferramentas.
7.2. Noções de Projeto de Experimentos
Em projetos de simulação que contemplam um grande número de variáveis de entrada, é
comum a necessidade de processarmos um grande número de cenários no simulador, no
intuito de obtermos toda sorte de informações sobre o comportamento do sistema. Em uma
fase posterior, podemos ser forçados a desprezar parte considerável das simulações
realizadas, pois essas não apresentaram impacto significativo no sistema simulado.
O “Projeto de Experimentos” é um método que permite estimar como as variáveis de
entrada afetam a(s) resposta(s) de um experimento. Quando aplicado à simulação, o Projeto
de Experimentos permite planejar de forma racional os cenários a serem executados,
evitando o processo de tentativa e erro, tão comum nos projetos de simulação.

7.2.1. Conceitos fundamentais: fatores, níveis, respostas e espaço de


combinações
Assim como no caso do sistema de distribuição rodoviário, em muitos estudos de
simulação é importante determinar como (e se) os parâmetros de entrada de um sistema
afetam uma ou mais saídas; por exemplo:
1. Qual o efeito de se aumentar ou de se reduzir o número de equipamentos de uma
fábrica na produtividade da linha de produção?
2. Qual o efeito de se aumentar ou de se reduzir o número de operadores de telemarketing
com relação ao nível de serviço de uma central de atendimento?
3. O lead-time de entrega é sensível a um aumento ou a uma redução no tempo de
transporte entre células de produção?

O Projeto de Experimentos (ou Projeto Experimental) é uma técnica estatística que pode
responder a esses tipos de questionamentos de modo eficaz.
Três conceitos são relevantes para se compreender o Projeto de Experimentos: fator,
níveis e resposta. Um fator é qualquer variável de entrada a ser considerada, como o
número de equipamentos em um sistema de manufatura, o número de veículos em um sistema
de transporte ou o número de operadores em uma central de atendimento. Já os níveis
estabelecem os valores associados a um determinado fator. Geralmente os níveis são
considerados de modo qualitativo, associando valores numéricos aos fatores. Voltando ao
exemplo do sistema de distribuição rodoviário, um fator poderia ser o tamanho dos
caminhões, e os níveis associados a esse fator poderiam ser: pequeno (10 t), médio (20 t)
ou grande (30 t). Para cada fator considerado, deve-se determinar uma quantidade
apropriada de níveis; usualmente, no máximo quatro níveis são suficientes. Finalmente, uma
resposta é uma variável de saída que se deseja analisar, como o número de
viagens/caminhão por mês, a produtividade de uma linha de produção, o tempo de espera
em fila etc.
O conjunto de combinações de todos os níveis de todos os fatores é denominado espaço
de combinações. Por exemplo, se forem considerados três níveis para um fator que afeta o
funcionamento de um sistema (fator A) e dois níveis para outro fator (fator B), o espaço de
combinações será formado por seis valores da resposta desejada (Tabela 7.1).

Tabela 7.1 – Conjunto de combinações para os dois fatores do exemplo


Fator A – Baixo Fator A – Médio Fator A – Alto
Fator B – Baixo X11 X12 X13
Fator B – Alto X21 X22 X23

7.2.2. Projeto de experimentos fatoriais 2k completo


Um tipo de Projeto Experimental bastante utilizado é o chamado Experimento Fatorial 2k
Completo.1 Nesse caso, cada fator possui apenas dois níveis (alto ou baixo) e existem k
fatores em consideração. Assim, o número total de combinações possíveis nessa categoria
de Projeto de Experimentos é sempre igual a 2k.
Considere o exemplo da frota de caminhões, em que o fator A é o tamanho do caminhão,
com apenas dois níveis: baixo (10 t) e alto (30 t). O fator B representa o tamanho da frota:
baixo (20 caminhões) e alto (40 caminhões). Nesse caso, tem-se k = 2 fatores e o número de
combinações possíveis entre os níveis dos fatores A e B é 2k = 22 = 4 combinações, ou seja:
(baixo, baixo); (baixo, alto); (alto, baixo) e (alto, alto). Assim, pode-se simular o modelo
computacional do sistema para cada uma das combinações possíveis, gerando quatro
experimentos de simulação ou tratamentos.
A notação proposta por Montgomery (1991) para denotar cada tratamento utiliza uma
sequência de letras minúsculas. Uma letra minúscula indica que um dado fator está em seu
nível alto dentro do tratamento. Assim, por exemplo, em um tratamento denominado “a”, o
fator A está no nível alto, enquanto os demais fatores estão no nível baixo. Um tratamento
chamado “ab” é aquele em que os fatores A e B estão no nível alto. A exceção para essa
notação é o tratamento (1), em que todos os fatores estão no nível baixo.
Para o exemplo da frota de caminhões, considere que foram realizados quatro tratamentos
(combinações possíveis dos fatores), cujos resultados estão mostrados na Tabela 7.2 (os
níveis baixo e alto também podem ser representados pelos valores –1 e +1,
respectivamente). A resposta considerada foi o número de viagens/caminhão por mês.
A partir dos resultados obtidos (Tabela 7.2), é possível determinar a influência de cada
fator sobre a resposta do sistema calculando os valores de seus efeitos. Por exemplo, os
tratamentos 1 e 3 mostram que o aumento no tamanho dos caminhões (fator A) causa um
aumento do número mensal de viagens por caminhão de: 20 (= 30 – 10) viagens, no caso em
que a frota (fator B) está em nível baixo. De modo semelhante, quando o fator A é
aumentado e a frota de caminhões está em nível alto (tratamentos 2 e 4), há um aumento de
20 (= 40 – 20) viagens. Assim, o efeito E(A) do fator A é calculado pela diferença entre a
resposta média observada quando o fator A está em nível alto e a resposta média observada
quando o fator A está em nível baixo:
viagens/caminhão
(7.1)

Tabela 7.2 – Resultados para o planejamento 2k


Fator A Fator B
Número de
Experimento (tamanho do (número de Tratamento
viagens/caminhão por mês
caminhão) caminhões)
1 Baixo (-1) Baixo (-1) (1) 10
2 Baixo (-1) Alto (+1) b 20
3 Alto (+1) Baixo (-1) a 30
4 Alto (+1) Alto (+1) ab 40

O termo entre colchetes na Equação 7.1 é chamado de contraste do fator A, e seu valor (=
40) é proporcional ao valor do efeito de A – a proporcionalidade depende do número de
fatores avaliados (neste caso, 2) e do total de avaliações do sistema feitas sob a mesma
configuração dos fatores (neste caso, foi feita apenas uma avaliação do experimento). A
importância dos contrastes será evidenciada quando discutirmos experimentos com mais de
dois fatores.
Analogamente, o efeito E(B) do fator é calculado pela diferença entre a resposta média
observada quando o fator B está em nível alto e a resposta média observada quando o fator
B está em nível baixo:

viagem/caminhão
(7.2)

Assim como no caso do fator A, o contraste do fator B é dado pelo termo entre colchetes
na Equação 7.2. De posse dos valores dos efeitos (ou dos contrastes), pode-se concluir que
o fator A tem maior influência (ou é mais significativo) do que o fator B.
Uma dúvida natural seria: existe interação entre os fatores A e B? Ou, em outras
palavras, o efeito do fator A depende do nível do fator B (e vice-versa)? Pode-se mensurar
o efeito da interação entre A e B, E(AB) partindo da hipótese de que, se não houve interação
entre os fatores A e B, então o efeito do aumento de A, quando B é mantido baixo, deve ser o
mesmo de quando B é mantido alto. Numericamente, tem-se:
• Caso 1: alteração na resposta quando A e B estão no mesmo nível = (30 – 10) = 20;
• Caso 2: alteração na resposta quando A e B estão em níveis diferentes = (40 – 20) = 20.

Assim, para os dados da Tabela 7.2, os efeitos são os mesmos, e podemos dizer que não
há interação entre os fatores A e B. O efeito da interação entre A e B, E(AB) é calculado pela
diferença entre a resposta média observada quando os fatores A e B estão no mesmo nível e
a resposta média observada quando os fatores A e B estão em níveis diferentes:
viagem/caminhão
(7.3)

Assim como nos casos anteriores, o contraste da interação entre A e B é dado pelo termo
entre colchetes na Equação 7.3. A Tabela 7.3 apresenta os resultados dos tratamentos para
um segundo caso em que os valores das respostas são ligeiramente diferentes.

Tabela 7.3 – Resultados para o planejamento 2k , quando existe interação entre os fatores
Fator Número de
Tratamento A (tamanho do B (número de Nomenclatura viagens/caminhão por
caminhão) caminhões) mês
1 –1 (baixo) –1 (baixo) (1) 10
2 –1 (baixo) +1 (alto) b 20
3 +1 (alto) –1 (baixo) a 30
4 +1 (alto) +1 (alto) ab 50

Neste caso, os contrastes valem:


viagens/caminhão (7.4)

viagens/caminhão
(7.5)

viagens/caminhão
(7.6)

Como o efeito E(AB) é diferente de 0, existe interação entre os fatores A e B e, portanto,


não se pode analisar a influência desses fatores de forma isolada. A rigor, para que se possa
verificar a existência de interação significativa, deve-se construir uma tabela de análise de
variância (“Tabela ANOVA”). No caso da simulação, por simplicidade, pode-se utilizar
como resposta o valor médio de N replicações (dentro de um intervalo de confiança com a
amplitude desejada) e utilizar o seguinte critério prático informal: se o módulo do efeito da
interação for 10 vezes menor que os módulos dos demais efeitos envolvidos, pode-se
considerar que não há interação significativa. Assim, para o exemplo anterior, não haveria
interação entre os fatores A e B se o valor de E(AB) tivesse resultado abaixo de 0,1.

Exemplo 7.1: O pipoqueiro de Montgomery


Para ilustrar a aplicação do planejamento experimental (que independe de se utilizar ou
não simulação computacional), vamos primeiramente aplicá-lo a um exemplo que foi
retirado e adaptado de Montgomery (1991).
Um pipoqueiro pretende avaliar qual a influência de alguns fatores sobre o crescimento
de suas pipocas. Para tanto, escolheu três fatores:
• A marca da pipoca (Yoda ou Obi);
• A proporção entre a pipoca e o óleo (0,8 ou 1);
• O volume total de milho (1/3 litro ou 2/3 litro).

A produção da pipoca é medida através da altura (em cm) que esta atingiu quando
estourada no carrinho de pipocas. Como foram considerados três fatores, cada um em dois
níveis distintos, o pipoqueiro realizou 23 = 8 experimentos ou tratamentos. Os resultados
obtidos estão relacionados na Tabela 7.4.

Tabela 7.4 – Resultados dos tratamentos para o exemplo do pipoqueiro


Fator A: marca Fator B: milho/óleo Fator C: volume Saída: altura da
Tratamento Obi = + 0,8 = - 1/3 l = + pipoca
Yoda = - 1=+ 2/3 l = - (cm)
(1) - - - 6,25
a + - - 8,00
b - + - 6,00
ab + + - 9,50
c - - + 8,00
ac + - + 15,00
bc - + + 9,00
abc + + + 17,00

Os cálculos dos contrastes ficam facilitados pelo uso de uma tabela de contrastes, que
armazena os coeficientes (+1 ou –1) necessários para os cálculos de contrastes. A Tabela
7.5 representa uma tabela de contrastes válida para qualquer Projeto de Experimentos que
tenha três fatores e dois níveis em cada fator, ou seja, para experimentos fatoriais 23
completos.

Tabela 7.5 – Tabela de contrastes para três fatores e dois níveis


Tratamento
(1) a b ab c ac bc abc
A -1 +1 -1 +1 -1 +1 -1 +1
B -1 -1 +1 +1 -1 -1 +1 +1
AB +1 -1 -1 +1 +1 -1 -1 +1
Contraste C -1 -1 -1 -1 +1 +1 +1 +1
AC +1 -1 +1 -1 -1 +1 -1 +1
BC +1 +1 -1 -1 -1 -1 +1 +1
ABC -1 +1 +1 -1 +1 -1 -1 +1

Com o auxílio da Tabela 7.5, pode-se determinar facilmente os contrastes de cada efeito.
Por exemplo, o efeito E(A) do fator A é calculado pela multiplicação dos coeficientes da
linha do fator A na tabela de contrastes pelas respectivas saídas de cada tratamento da
Tabela 7.3. O resultado é dividido por 2k-1 = 23-1 = 4, em que k é o número de fatores
experimentais. Assim, o efeito E(A) vale:

cm
(7.7)

Para os demais efeitos, tem-se:

cm
(7.8)
cm (7.9)

cm
(7.10)

cm
(7.11)

cm
(7.12)

cm
(7.13)

Os valores dos efeitos podem ser ordenados em um gráfico de barras, como mostrado na
Figura 7.1.
Figura 7.1 – Gráfico de efeitos x fatores.

Note que, aparentemente, os efeitos importantes são: A, C e AC. Assim, poderíamos dizer
que os fatores que mais afetam a produtividade da pipoca são a marca e o tamanho do lote.
No entanto, esta afirmação só pode ser feita se for possível desprezar as interações AB, AC,
BC e ABC, o que não parece ser o caso, especialmente para AC.2
Aplicações do Projeto de Experimentos em problemas reais são realizadas com mais
facilidade com o auxílio de softwares de estatística, tais como Minitab, SPSS, Statistica,
dentre outros. Na próxima seção é apresentado um caso prático resolvido com o auxílio do
Minitab.
7.3. Projeto de Experimentos: um caso prático
Uma fábrica que produz insumos para a indústria automobilística recebe parte de seus
próprios insumos em big bags, transportados por caminhões do tipo sider, ou a granel por
caminhões-tanque. Os insumos são armazenados em silos externos e, no momento da
produção, transferidos para os silos internos. A fabricação ocorre em três linhas de
fabricação, que terminam em áreas de homogeneização de produtos e embalagem (em sacos
de 25 kg ou em big bags). Para compreender melhor o sistema, foi construído um modelo de
simulação e realizado um experimento fatorial 2k completo. Os fatores e os níveis
escolhidos estão relacionados na Tabela 7.6.

Tabela 7.6 – Fatores e níveis utilizados no exemplo da fábrica


Fator Descrição Valor baixo Valor alto
composição dos caminhões em % dos
A 10% 90%
caminhões sider
valores originais de 30% de acréscimo aos
B vazão da linha 1 em kg/minuto
vazão valores originais
valores originais de 30% de acréscimo aos
C vazão da linha 2 em kg/minuto
vazão valores originais
valores originais de 30% de acréscimo aos
D vazão da linha 3 em kg/minuto vazão valores originais

composição das embalagens em % de big


E 10% 90%
bags

As respostas obtidas pela simulação estão relacionadas na Tabela 7.7.

Tabela 7.7 – Relação de saídas do modelo de simulação do exemplo da fábrica


Saída Descrição
Fesp BB Fila máxima de espera de caminhões com big bags
Fesp Gran Fila máxima de espera de caminhões a granel
% Ut lin1 Taxa de utilização da linha 1
% Ut lin2 Taxa de utilização da linha 2
% Ut lin 3 Taxa de utilização da linha 3
Util Homog Utilização do homogeneizador
Util Ensac Utilização da ensacadeira
Produt Glob Produção global (em t/mês)

Como há cinco fatores e o experimento realizado foi do tipo fatorial 2k completo, há 2k =


25 = 32 tratamentos possíveis. Para cada tratamento, foram realizadas cinco replicações do
modelo, resultando em um total de 160 rodadas de simulação. Uma tabela para cada rodada
foi construída e inserida no software de análise estatística Minitab, que possui a opção para
gerar experimentos fatoriais. A Figura 7.2 ilustra a entrada de dados principais no Minitab
para o experimento em questão.

Figura 7.2 – Dados de entrada do exemplo da fábrica representados no Minitab.

Após a entrada de dados, foi possível calcular os efeitos de cada fator e os efeitos
compostos, que são os efeitos das interações entre os fatores. Um exemplo de relatório de
saída do Minitab está mostrado na Figura 7.3, para a saída da fila máxima de espera de
caminhões com big bags (Fesp BB). Na nomenclatura do Minitab, o efeito é denominado
effect.
Factorial Fit: Fesp BB versus A, B, C, D, E
Estimated Effects and Coefficients for Fesp BB (coded units)

Term Effect Coef SE Coef T P


Constant 2.46875 0.04593 53.75 0.000
A 2.81250 1.40625 0.04593 30.62 0.000
B -0.01250 -0.00625 0.04593 -0.14 0.892
C 0.13750 0.06875 0.04593 1.50 0.137
D 0.11250 0.05625 0.04593 1.22 0.223
E 0.06250 0.03125 0.04593 0.68 0.497
A*B -0.03750 -0.01875 0.04593 -0.41 0.684
A*C 0.06250 0.03125 0.04593 0.68 0.497
A*D 0.08750 0.04375 0.04593 0.95 0.343
A*E 0.08750 0.04375 0.04593 0.95 0.343
B*C 0.18750 0.09375 0.04593 2.04 0.043
B*D 0.11250 0.05625 0.04593 1.22 0.223
B*E -0.08750 -0.04375 0.04593 -0.95 0.343
C*D -0.03750 -0.01875 0.04593 -0.41 0.684
C*E 0.01250 0.00625 0.04593 0.14 0.892
D*E -0.06250 -0.03125 0.04593 -0.68 0.497
A*B*C 0.11250 0.05625 0.04593 1.22 0.223
A*B*D 0.08750 0.04375 0.04593 0.95 0.343
A*B*E -0.16250 -0.08125 0.04593 -1.77 0.079
A*C*D -0.01250 -0.00625 0.04593 -0.14 0.892
A*C*E -0.01250 -0.00625 0.04593 -0.14 0.892
A*D*E -0.13750 -0.06875 0.04593 -1.50 0.137
B*C*D -0.03750 -0.01875 0.04593 -0.41 0.684
B*C*E 0.06250 0.03125 0.04593 0.68 0.497
B*D*E 0.23750 0.11875 0.04593 2.59 0.011
C*D*E 0.13750 0.06875 0.04593 1.50 0.137
A*B*C*D -0.11250 -0.05625 0.04593 -1.22 0.223
A*B*C*E 0.03750 0.01875 0.04593 0.41 0.684
A*B*D*E 0.16250 0.08125 0.04593 1.77 0.079
A*C*D*E 0.01250 0.00625 0.04593 0.14 0.892
B*C*D*E 0.03750 0.01875 0.04593 0.41 0.684
A*B*C*D*E 0.01250 0.00625 0.04593 0.14 0.892

Figura 7.3 – Resultados dos efeitos sobre a resposta Fesp BB.

Os efeitos relevantes para a resposta Fesp BB são os que apresentam p-value inferior a
0,05 (fator P da tabela). Isoladamente, o único fator relevante é o fator A. Como este fator
representa a porcentagem de caminhões sider, é esperado que afete a fila máxima de
caminhões sider em espera (Fesp BB). Neste caso, o efeito vale 2,81, ou seja, se alterarmos
a porcentagem de caminhões sider de 10% para 90% isto causa um aumento médio de 2,81
caminhões na fila de espera.
Os cálculos dos efeitos dos fatores estudados em todas as respostas estão sumarizados na
Tabela 7.8 (as células da tabela marcadas com “-” representam efeitos não significativos, ou
seja, p-value > 0,05).

Tabela 7.8 – Principais efeitos sobre as respostas do exemplo


Fesp Fesp % Ut % Ut %Ut Util Util Produt
BB Gran Lin1 Lin2 Lin 3 Homog Ensac Glob
A 2,81 -2,74 - - - - - -
B - - -3,18 - - 0,53 1,01 338,87
C - - - -1,56 - 0,22 0,51 158,63
D - - - - -2,79 0,48 0,98 317,13
E - - - - - - 12,67 -

Note que o fator A só afetou significativamente as respostas Fesp BB e Fesp Gran, o que
era, de certa forma, esperado. Os fatores de vazão das três linhas (B, C e D) afetaram as
utilizações das respectivas linhas, dos equipamentos e a produção global. O fator E
(composição das embalagens) afetou somente a utilização do equipamento de ensacamento.
Dessa maneira, o planejamento experimental serve para avaliar como uma mudança em
um fator afeta a resposta e pode servir também como ferramenta de verificação e validação
de um modelo de simulação (ver Leitura Complementar do Capítulo 5).
7.4. Simulação e Otimização
Segundo Averill Law, em participação no painel “O futuro da simulação” no simpósio
Winter Simulation Conference de 2001 (BANKS, 2001), a integração de módulos de
otimização com modelos de simulação é um dos assuntos mais “quentes” da atualidade.
Ainda segundo Law, um dos maiores impedimentos para o uso da Simulação e Otimização é
o tempo de execução que esse processo demanda.
Alguns exemplos de aplicações da Simulação e Otimização seriam (FU, 2001):
1. Sistemas de manufatura. Podemos, por exemplo, ter um modelo de simulação de uma
fábrica de semicondutores integrado a um modelo de otimização que permita
maximizar a produtividade (número total de “chips”) e, simultaneamente, minimizar o
tempo de ciclo (tempo médio que o “chip” gasta na fábrica).
2. Cadeias de suprimentos. Dada uma cadeia de suprimentos de fabricação de PCs,
determinar como o sistema pode ser operado a fim de reduzir os estoques totais e
aumentar o nível de serviço do cliente.
3. Centrais de atendimento (call centers). Dado um modelo de simulação de uma central
de atendimento, determinar como esta pode ser operada de modo a minimizar os custos
do sistema (p. ex., redução do número de agentes) e aumentar o nível de serviço
(reduzir os tempos de espera).

Nesta seção, procuramos fazer uma introdução sobre esse tema e apresentamos um caso
prático para ilustrarmos os aspectos teóricos.
Embora a simulação computacional apresente uma série de vantagens, descritas ao longo
dos capítulos deste livro, ela possui ainda algumas “limitações”. A simulação, como vimos,
é uma ferramenta que responde a perguntas do tipo “O que ocorre se?” (what-if questions),
como: “O que acontecerá com minha produção se aumentarmos o número de operadores de
10 para 11?”, ou “O que acontecerá com o nível médio de estoques se mudarmos nossa
regra de sequenciação de FIFO (primeiro a entrar, primeiro a sair) para SIRO (atendido em
ordem aleatória)?”. Nesse sentido, a simulação é uma ferramenta avaliadora de soluções, e
não geradora de soluções. Uma abordagem que faz com que essa condição mude é a
utilização de técnicas de otimização na simulação computacional.
Tipicamente, um problema de otimização pode ser formulado através de uma função
objetivo (ou medida de desempenho) que se deseja maximizar ou minimizar, sujeito a um
conjunto de restrições – equações ou inequações que delimitarão os valores que as
variáveis podem assumir. A Figura 7.4, por exemplo, representa um problema de
programação linear.
Figura 7.4 – Formulação típica de um problema de programação linear.

Um problema de otimização pode conter muitas variáveis, sejam elas inteiras, reais,
binárias etc. Resolver o problema de otimização consiste em determinar os valores ótimos
dessas variáveis, ou seja, que minimizam ou maximizam uma função objetivo.
De acordo com a formulação e as variáveis envolvidas, podemos utilizar diversos
métodos de solução. Por exemplo, se a função objetivo e as restrições forem constituídas
por combinações lineares das variáveis, podemos resolver o problema de otimização
através da programação linear. Caso a formulação tenha variáveis inteiras, podemos aplicar
técnicas derivadas de busca em árvore (branch-and-bound, beam search etc.). Caso a
formulação seja não linear, podemos aplicar técnicas de busca heurísticas.
Em muitos casos, as técnicas utilizadas não garantem o ótimo, e, portanto, são chamadas
de técnicas “subotimizantes”. As técnicas alternativas de busca, ou meta-heurísticas, como
os algoritmos genéticos, o Simulated Annealing e o Tabu Search, são consideradas técnicas
subotimizantes.
O uso da otimização pode implicar alguns inconvenientes. O primeiro é a limitação na
modelagem de sistemas complexos. Ao se introduzirem aspectos dinâmicos e um grande
número de variáveis, o modelo de otimização pode ficar difícil de ser construído, podendo
se tornar extremamente complicado. Por outro lado, um bom modelo de otimização
(simples, é claro) pode não possuir uma técnica de solução apropriada, impedindo a
resolução do problema de otimização.
Portanto, tanto a simulação quanto a otimização possuem algumas limitações. A questão
é: como juntar essas duas ferramentas de modo a minimizar as desvantagens de cada uma
delas? É o que se discute a seguir.
O termo “Simulation Optimization ( SO)” surgiu da junção das ferramentas de simulação
e otimização. Segundo Azadivar (1992), um problema de SO é um problema de otimização
em que a função objetivo, ou as restrições ou, ainda, ambas, são saídas que somente podem
ser avaliadas pela simulação computacional. Quando se fala em problemas de SO com uma
única função objetivo, existem basicamente três métodos de solução: métodos de
aproximação estocásticos, métodos de superfície de resposta e métodos de busca. Dentre
esses métodos, os mais utilizados nos softwares comerciais são os métodos de busca,
especialmente os algoritmos genéticos.
A ideia básica desses métodos é a seguinte: tendo uma condição inicial X0, o
procedimento de otimização atuará interativamente com o modelo de simulação, fornecendo
os valores das variáveis a serem simuladas e recebendo do modelo de simulação o valor da
função objetivo. O procedimento de otimização terminará quando algum critério for
satisfeito (p. ex., atingiu-se o número máximo de iterações, não se encontra mais potencial
significativo de otimização das variáveis etc.). O resultado final desse procedimento são os
valores “ótimos” (ou “subótimos”) das variáveis de interesse do modelo de simulação. Essa
ideia está ilustrada na Figura 7.5.

Figura 7.5 – Representação da ideia-base da Simulação e Otimização.

Embora a SO tenha sido abordada pela literatura há mais de 20 anos, só há


aproximadamente 10 anos essas técnicas têm sido incorporadas nos softwares de simulação
comerciais. Cabe reforçar que a Simulação e Otimização, apesar de apresentar inúmeras
vantagens, apresenta algumas limitações; por isso, não deve ser encarada como uma
panaceia milagrosa. A abordagem da SO, mesmo sendo generativa, não substitui o analista,
que desempenha papel fundamental na definição da função objetivo e das variáveis a serem
otimizadas. Além disso, mesmo com o surgimento de computadores cada vez mais velozes e
poderosos, a SO ainda consome muito tempo de computação. Isso porque o algoritmo de
otimização tem que avaliar muitas combinações de variáveis, bem como efetuar as
repetições necessárias para cada conjunto de valores das variáveis, já que estamos lidando
com variáveis aleatórias.
Finalizando, nos últimos 20 anos, um considerável esforço foi gasto no estudo da
otimização de variáveis quantitativas em modelos de simulação (número de máquinas,
número de operadores, velocidades de processamento, por exemplo). No entanto, muito
pouco tem sido reportado no que tange à otimização das características estruturais e das
políticas operacionais que podem ser estudadas em um modelo de simulação (p. ex., qual o
conjunto de ações ou a política ótima de estoques em um centro de distribuição?). Nesse
caso, cada avaliação da função objetivo pode requerer alterações estruturais no modelo de
simulação, o que torna as técnicas tradicionais de otimização de variáveis quantitativas
pouco aplicáveis. Acreditamos que esse ponto é de extrema importância para o futuro da
SO. Outra questão importante é que a maioria dos métodos de Simulação e Otimização
lidam com uma única função objetivo (mesmo quando temos vários objetivos – neste caso, a
função objetivo contém pesos relativos para cada um dos múltiplos objetivos). Algumas
pesquisas recentes procuram encarar o problema da Simulação e Otimização segundo vários
objetivos que devem ser otimizados independentemente, e não otimizados mediante uma
única função objetivo (BELTON; HODGKIN; MONTIBELLER, 2004).
7.5. Simulação e Otimização: um caso prático
Este caso prático (BARRETO et al., 1999) foi realizado para testar o desempenho de um
algoritmo de otimização específico em conjunto com um modelo de simulação. O modelo
adotado é o do caso da usina, apresentado nos exercícios de revisão do Capítulo 3 (o leitor
deve retornar à descrição do problema antes de prosseguir).
Como parâmetros de entrada a serem otimizados, adotamos: número de torpedos, número
de guindastes, número de fornos de preparação e o volume máximo de metal fundente que
um torpedo pode conter. Em todos os casos, essas variáveis assumem valores inteiros com
incremento unitário (variam de 1 em 1). As variáveis de entrada, bem como suas faixas de
variação, estão relacionadas na Tabela 7.9.

Tabela 7.9 – Variáveis de entrada e seus possíveis valores


Descrição da variável Valor mínimo Valor máximo Incremento
Número de torpedos (Nt) 1 12 1
Número de guindastes (Nc) 1 2 1
Número de fornos (Nsf) 1 6 1
Capacidade de cada torpedo (Vt) 50 350 1
Assim, um cenário é dado por uma combinação das variáveis de entrada (Nt, Nc, Nsf e
Vt). Note que, ao todo, temos 43.200 (= 12 × 2 × 6 × 300) combinações possíveis. Isso
fornece uma ideia de como é difícil a otimização de problemas de simulação, se tivermos
de avaliar cada uma das soluções possíveis independentemente. Na prática, utilizou-se um
método de busca que investiga apenas uma porcentagem dessas combinações.
Para a solução do problema de SO, deve-se, também, adotar uma função objetivo a ser
minimizada ou maximizada. No caso da usina, é “natural” considerar a minimização dos
custos totais da planta, ou seja, os custos de investimento somados aos custos operacionais.
O custo de investimento pode ser calculado pela amortização dos equipamentos (torpedos,
guindastes e fornos). A Tabela 7.10 relaciona os custos de amortização por unidade de cada
equipamento, em uma base mensal.

Tabela 7.10 – Preços relativos dos equipamentos do exemplo


Equipamentos Preço por unidade (R$)
Torpedos 2.100,00
Guindastes 8.300,00
Fornos de preparação 16.700,00

Dado que cada tonelada de metal fundente perdido (caso não haja torpedos suficientes)
custa R$ 100,00, é possível calcular o custo total mensal (CTM) gerado pela planta:
(7.14)

Onde: Perd é a perda gerada em 10 dias de produção, em milhares de reais. Essa é a


função que foi utilizada para a rodada da Simulação e Otimização.
O modelo da usina foi implementado em um simulador conjuntamente com um algoritmo
de otimização em Visual Basic para Excel, comunicando-se diretamente com o software de
simulação. Como front-end desse processo (para definir os valores iniciais dos parâmetros,
bem como os parâmetros adotados pelo algoritmo de otimização), foi utilizada uma planilha
eletrônica. Poder-se-ia, nesse caso, utilizar um módulo de otimização comercial, mas, como
o objetivo era também testar o desempenho do algoritmo, preferiu-se fazer toda a sua
implementação.
A operação da planta foi simulada durante 10 dias, com cinco replicações para cada
combinação das variáveis de entrada. A solução inicial considerava três torpedos, um
guindaste, cinco fornos e capacidade de 300 toneladas para cada torpedo. Os resultados da
simulação com o procedimento de otimização estão relacionados na Tabela 7.11.

Tabela 7.11 – Resultados do procedimento de simulação e otimização


Valores Solução inicial Solução “ótima”
Função objetivo (milhares R$) 7.490,16 112,70
Perda (t/mês) 73.920 0
Número de torpedos 3 6
Número de guindastes 1 2
Número de fornos 5 5
Capacidade de cada torpedo (t) 300 260

Para determinar os valores mostrados na Tabela 7.11, o algoritmo de otimização avaliou


somente 3% das 43.200 combinações possíveis. A solução “ótima” foi obtida em
aproximadamente 30 minutos, com a utilização de um computador Pentium II de 300 MHz.
Dizemos “ótimo” (entre aspas) porque, em geral, os algoritmos utilizados em um
procedimento de Simulação e Otimização são considerados “subotimizantes”, pois podem
chegar muito próximo do valor “ótimo”, embora não se tenha garantia de que obtenham,
necessariamente, o valor ótimo. Note que a redução do valor da função objetivo foi
substancial: os custos operacionais mensais caíram de R$ 7.490.160,00 para
R$ 112.700,00, devido, principalmente, à redução das perdas geradas pelo processo.
7.6. Simulação e Otimização: softwares comerciais
Felizmente, não precisamos, na prática, desenvolver um algoritmo de otimização para
modelos de simulação, já que existem softwares comerciais com essa finalidade. Os passos
para fazer a otimização nesses softwares são praticamente os mesmos estabelecidos aqui,
ou seja, para “otimizarmos” um modelo de simulação, devemos:
1. Definir as variáveis de decisão e suas faixas de variação;
2. Definir as restrições do problema;
3. Definir a função objetivo e o tipo de otimização (maximização ou minimização);
4. Definir o número de rodadas de simulação (ou um tempo de limite para o processo de
otimização) e o número de replicações em cada rodada.

Na Figura 7.6, são apresentadas algumas telas do software de otimização OptQuest


(seguindo os passos anteriores), que funciona em conjunto com vários softwares de
simulação comerciais. Deve-se observar que os dados para o passo 2 (definição das
restrições) ficaram em branco, pois o modelo da usina não possui qualquer restrição. O
padrão do OptQuest é fazer três replicações por rodada de simulação, mas isso pode ser
alterado. Ao clicar o botão de otimização, esse software fará automaticamente diversas
simulações, buscando os valores “ótimos” das variáveis de decisão.
Figura 7.6 – Aplicação de simulação e otimização utilizando o software comercial Optquest.

Na Figura 7.7, são apresentados os resultados de um processo de otimização (no caso,


maximização) após nove rodadas de simulação (o OptQuest desenha um gráfico da função
objetivo em função de cada rodada de simulação). Neste caso, a solução “ótima” foi obtida
logo na terceira rodada.

Figura 7.7 – Resultados de uma simulação e otimização utilizando o software comercial OptQuest.
7.7. Integração entre Projetos de Experimentos e a Simulação
e Otimização
Segundo a classificação proposta por Stuckman et al. (1991), existem três tipos de
analistas no que tange à otimização de um sistema por simulação. Um primeiro tipo apelará
para o método da “tentativa e erro”, alterando desordenadamente os valores das variáveis
de entrada, de modo a obter um conjunto de valores que “otimizem” a medida de
desempenho escolhida; um segundo tipo irá um passo à frente e desenvolverá algo como
uma “análise de sensibilidade”, alterando sistematicamente as variáveis e observando seus
efeitos sobre o resultado – este também pode aplicar alguma técnica sistemática, como o
Projeto de Experimentos; o terceiro tipo aplicará diretamente um procedimento de
Simulação e Otimização. Pode-se enumerar algumas vantagens dessa última abordagem. A
principal é que se tem um procedimento sistemático para a otimização das variáveis,
evitando métodos desgastantes como a “tentativa e erro”. Juntamente com o procedimento
de otimização, a simulação se torna um gerador de soluções, e não só um avaliador de
soluções.
A Simulação e Otimização (SO) tem maior poder de análise do que o Projeto de
Experimentos (DOE), pois lida com variáveis contínuas e discretas, em vez de trabalhar
apenas com níveis dos fatores (CHWIF, 1997). Na prática, as duas ferramentas podem ser
usadas em etapas distintas da análise de um modelo de simulação, como indicado na Figura
7.8: o DOE pode ser realizado primeiro, para avaliar quais variáveis realmente possuem
influência sobre a função objetivo; após essa etapa, deve-se aplicar a SO para determinar
os valores que otimizam a função objetivo.
Um exemplo de uso encadeado das ferramentas é apresentado por Montevechi, Filho e
Medeiros (2006), em que os autores aplicaram o procedimento de Projeto de Experimentos
com a finalidade de diminuir o número de variáveis de decisão em um caso de Simulação e
Otimização. Segundo os autores, a aplicação dessas ferramentas conjuntamente levou a uma
redução de 59% a 67% no número de rodadas de simulação, em vários casos analisados.

Figura 7.8 – Relação entre DOE e SO na análise de um modelo de simulação.


7.8. Exercícios de revisão
1. Descreva um caso completo em que possa ser aplicado um procedimento de Projeto de
Experimentos e de Simulação e Otimização.

2. Uma companhia está especificando uma linha de montagem de pallets retornáveis e


resolve criar um modelo de simulação para avaliar a influência de três fatores em sua
produtividade. Os fatores adotados são (entre parênteses, os valores associados aos
níveis baixo e alto do respectivo fator):
• A: número de buffers existentes antes de cada posto de carregamento ou montagem (1 ou
3);
• B: variação dos tempos de carregamento ou montagem (15% ou 25% de desvio em relação
à média);
• C: quantidade de pallets retornáveis no sistema (4 ou 8).

Para cada combinação dos fatores foram realizadas 10 replicações do modelo. Os


resultados obtidos estão dispostos na Tabela 7.12.

Tabela 7.12 – Exercício 2


A B C Saída: produção horária média
- - - 113,42
- - + 113,42
- + - 109,08
- + - 109,12
+ - + 113,96
+ - + 114,60
+ + + 110,40
+ + + 113,02

Deseja-se saber qual ou quais fatores mais afetam a produtividade e qual deve ser a
especificação dessa linha (número de buffers e número de pallets retornáveis).

3. A usina de açúcar Maiscavo tem capacidade para esmagar uma média diária de 14.400
toneladas de cana-de-açúcar. O transporte da cana do campo (lavoura) para a unidade
industrial é feito por 72 caminhões, que carregam, cada um, 40 toneladas por viagem. Na
entrada da unidade industrial, os veículos são pesados por uma balança de matéria-prima
(o que demora, em média, 6 minutos/caminhão, segundo uma distribuição exponencial) e,
posteriormente, passam por uma sonda mecânica que coletará uma amostra para
determinar o teor de sacarose contido na cana-de-açúcar. O tempo de coleta é fixo e dura
quatro minutos. Em seguida, os caminhões formam fila no pátio da indústria para
descarregarem sua carga. A retirada da carga dos caminhões é feita por um hillo,3 que
demora em média oito minutos, com desvio-padrão de dois minutos, normalmente
distribuídos, para executar a operação (retirar toda a carga). O hillo abastece a moega,
que possui capacidade de processamento de 10 toneladas por minuto. Após a descarga da
matéria-prima, os caminhões passam pela balança da tara e seguem novamente para a
região de corte da cana. O tempo de pesagem em vazio de cada caminhão é o mesmo da
pesagem do veículo cheio. O tempo de ida à lavoura e de carregamento segue uma
distribuição normal com média 120 minutos e desvio-padrão de 30 minutos. A usina
funciona durante 24 horas por dia. A administração da usina acredita que a frota atual de
72 caminhões está superdimensionada e deseja fazer um estudo de Simulação e
Otimização para confirmar essa suspeita.
A partir da descrição fornecida, responda:
a Qual(is) é(são) a(s) variável(is) de decisão deste modelo?
b Defina uma função objetivo adequada ao estudo. Lembre-se de que você deve maximizar a
produtividade e minimizar o custo fixo – proporcional ao número de caminhões.
c Construa o ACD do problema.
d Implemente o modelo e determine o número ótimo de caminhões que maximiza a
produtividade e minimiza o número de caminhões.
e Refaça o item d), supondo que cada caminhão possui indisponibilidade (quebras, paradas
etc.) durante 15% do tempo.

4. Qual a maior dificuldade de aplicação de SO na prática: tempo de processamento,


inexistência de softwares comerciais ou falta de conhecimento da técnica?

5. Defina as variáveis a serem otimizadas e uma função objetivo para os seguintes


problemas:
a O problema do “centro de distribuição” descrito no Exemplo 6.4 do Capítulo 6.
b A Mac Dongle é uma lanchonete que faz hambúrgueres para viagem. Seu funcionamento é
ininterrupto, durante 24h por dia. Atualmente, sua linha é capaz de produzir quatro tipos
de sanduíche, com os seguintes ingredientes:
• Mac Dongle Hamburguer: hambúrguer (1), molho especial e pão;
• Mac Dongle Cheeseburguer: hambúrguer (1), queijo tipo mozzarella, molho especial e
pão;
• Mac Dongle Salada: hambúrguer (1), queijo tipo mozzarella, molho especial, alface,
tomate, maionese e pão;
• Mac Dongle Supremo: hambúrgueres (2), queijo tipo mozzarella, molho especial,
alface, tomate, maionese e pão especial. Esse é o único sanduíche que contém dois
hambúrgueres e pão especial (maior do que o pão comum).
Os clientes chegam à Mac Dongle com uma certa frequência e se dirigem para a
respectiva fila (fila do Hamburger, Cheeseburguer, Salada e Supremo). Se o cliente
ficar muito tempo esperando, sairá do Mac Dongle com muita raiva, sem comprar
nada, e contabilizará as amargas estatísticas dos clientes insatisfeitos. Se o cliente
não esperar muito, pedirá seu sanduíche preferido, pagará e sairá da lanchonete
contente.
Na cozinha, os hambúrgueres são produzidos e estocados nas respectivas bandejas,
pois na Mac Dongle a produção de hambúrgueres é antecipada para minimizar os
tempos de espera. Assim, caso seu sanduíche esteja disponível na bandeja, o cliente
será atendido imediatamente quando chegar ao balcão.
A capacidade máxima de produção da cozinha é de 120 sanduíches/hora. Se a
produção for de até 30 sanduíches/hora, não é necessário qualquer investimento em
equipamentos; caso contrário, será preciso alugar equipamentos adicionais.
Segundo a política de qualidade do Mac Dongle, nenhum sanduíche pode ficar mais
de seis minutos aguardando na bandeja, pois, além de perder algumas propriedades
de sabor, o sanduíche esfria. Se isso ocorrer, o sanduíche será jogado fora
imediatamente, contabilizado as estatísticas dos “hambúrgueres jogados fora”.
Um caminhão de entregas passa pela Mac Dongle duas vezes ao dia e repõe todos os
estoques na quantidade máxima especificada. Devido ao trânsito de Dongle City, o
caminhão pode chegar adiantado ou atrasado. O tempo de descarregamento dos
produtos gira em torno de uma hora.
Caso haja falta de um ou mais itens no estoque, a Mac Dongle deixará de vender
seus sanduíches, contabilizando a estatística de “hambúrgueres perdidos”. Todos os
itens de suprimentos são embalados unitariamente para cada sanduíche em
embalagens reutilizáveis. Isso quer dizer que, por exemplo, um pacote de queijo, um
pacote de molho especial, um pacote de pão e um pacote de hambúrguer permitem
fazer um Dongle Cheeseburguer. A única exceção, para todos os casos, é com
relação ao Mac Supremo, pois são necessários dois hambúrgueres (e, portanto, dois
pacotes de hambúrguer) em sua composição. A partir dos custos de produção,
armazenagem, aluguel e das receitas advindas da definição dos preços de cada
sanduíche, é possível estabelecer a margem de lucro da cadeia.

6. Para o exercício 4 do Capítulo 3 (“Fundição”), sabe-se que o custo de cada


derramamento desperdiçado é de R$ 35.000,00 e que o custo de um conjunto de molde é
de R$ 530.000,00. Supondo que não haja aumento de custos variáveis de produção,
determine o número de moldes que minimiza os custos totais.

7. Este exemplo4 se refere à manutenção de máquinas em uma fábrica. A fábrica possui


quatro máquinas, duas equipes de auxiliares de manutenção, dois eletricistas e um
mecânico. Sempre que uma máquina quebra, é avaliada e consertada pelo mecânico,
voltando a trabalhar até quebrar novamente. Cada máquina funciona sem quebras por um
tempo exponencialmente distribuído, com média de 10 horas. Quando a máquina quebra,
é necessário que um eletricista desconecte seus cabos de força, o que demora uma hora.
Após a desconexão da rede, uma equipe de auxiliares de manutenção retira a máquina da
sua posição original e a coloca na área de manutenção, em um processo delicado que
leva, em média, cinco horas. Somente após estar devidamente posicionada na área de
manutenção a máquina é avaliada e consertada pelo mecânico: isso é feito em uma média
de seis horas, segundo uma distribuição normal, com desvio-padrão de uma hora. Para
recolocar a máquina em sua posição de trabalho, uma equipe de auxiliares de manutenção
demora um tempo uniformemente distribuído entre cinco e oito horas. Para que a máquina
possa voltar a operar, é necessário que o eletricista reconecte todos os seus cabos, o que
leva de uma a quatro horas, segundo uma distribuição uniforme. Sabe-se que o lucro
advindo de cada uma das quatro máquinas, funcionando durante 100% do tempo, é de
R$ 40.000,00 por mês. Os custos mensais de cada técnico por turno de oito horas estão
dispostos na Tabela 7.13. Determine o número ótimo de recursos que maximiza o lucro
total da fábrica (lucro da máquina – custos dos recursos humanos). A fábrica opera 24
horas por dia.

Tabela 7.13 – Exercício 7


Custos/(mês×turno)
Ajudante R$ 800,00
Eletricista R$ 2.400,00
Mecânico R$ 3.200,00
Referências bibliográficas
AZADIVAR, Farhad. A tutorial on simulation optimization. Proceedings of the 1992
Winter Simulation Conference, p.184-204, 1992.
BANKS, Jerry. Panel Session: The future of simulation. Proceedings of the 2001 Winter
Simulation Conference, p.1453-1460, 2001.
BARRETTO, Marcos R. B; CHWIF, Leonardo; ELDABI, Tillal; PAUL, Ray J. Simulation
optimization with the linear move and exchange optimization algorithm. Proceedings of
the 1999 Winter Simulation Conference, p.806-811, 1999.
BELTON, Valerie; HODGKIN, Julie; MONTIBELLER, Gilberto. From decision to
decision: an integrated approach linking discrete event simulation, evolutionary multi-
objective optimisation and multicriteria decision analysis. Proceedings of the 2004
International Workshop on Simulation, Birmingham, 2004.
BOX, George E. P., HUNTER, William G.; HUNTER, J. Stuart. Statistics for
experimenters – an introduction to design, data analysis and model building. Nova
York: John Wiley & Sons, 1978.
CHWIF, Leonardo. Simulation optimization – uma introdução. Workshop de Simulação,
p.55-58, Centro de Estudos em Logística, 1997.
FU, Michael. Simulation optimization. Proceedings of the 2001 Winter Simulation
Conference, p.53-61, 2001.
MONTEVECCHI, José A.; FILHO, Renaldo G. de A.; MEDEIROS, André L. Application
of factorial designs for reducing factors in optimization via discrete-event simulation.
Proceedings of the 2006 Winter Simulation Conference, p.1977-1984, 2006.
MONTGOMERY, Douglas C. Design and analysis of experiments. Nova York: John
Wiley & Sons, 1991.
PAUL, Ray J. Activity cycle diagrams and the tree phase method. Proceedings of the
1993 Winter Simulation Conference, p.123-131, 1993.
PAUL, Ray J.; BALMER, David W. Simulation modelling. Londres: Chartwell-Bratt,
1993.
STUCKMAN, Bruce; EVANS, Gerald W.; MOLLAGHASEMI, Mansooreh. Comparison
of global search methods for design optimization using simulation. Proceedings of the
1991 Winter Simulation Conference, p.937-943, 1991.
Capítulo 8

Estudo de casos

Neste capítulo demonstramos alguns exemplos de casos que podem ser resolvidos pela
Simulação de Eventos Discretos. Alguns deles são baseados em problemas reais,
resolvidos previamente em projetos de simulação, outros são baseados em problemas de
natureza probabilística, que podem ser encontrados nas referências bibliográficas sugeridas
ao final do capítulo. Procuramos selecionar um conjunto de problemas de maior porte, que
justificam a elaboração de um projeto completo de simulação. Para a elaboração do
relatório técnico, sugerimos a leitura do Apêndice IV.

Centro de distribuição1
1. A Oplogic é uma transportadora que possui um centro de distribuição (CD), na cidade de
Uberlândia-MG. No CD, os intervalos de tempo entre chegadas sucessivas de pedidos de
entregas são exponencialmente distribuídos, com média de quatro horas. A transportadora
possui uma frota de três caminhões, e 10 carregadores estão à disposição para seu
carregamento, sendo que nesse processo cada caminhão utiliza, necessariamente, quatro
carregadores simultaneamente. Os tempos de carregamento de caminhões são
normalmente distribuídos, com média de 100 e desvio-padrão de 30 minutos. O CD
possui duas docas disponíveis para a operação de carregamento (para carregar, os
veículos devem estar, inevitavelmente, posicionados em uma doca). Os tempos de
transporte (da transportadora até o cliente) estão uniformemente distribuídos no intervalo
entre 120 e 240 minutos. Os tempos de retorno (do cliente até a transportadora) seguem
exatamente essa mesma distribuição.
O diretor da operação deseja utilizar uma nova “estratégia de marketing”: garantir
que a entrega chegue ao cliente em um tempo de, no máximo, seis horas, contadas a
partir da chegada do pedido ao centro de distribuição. Se isso não ocorrer, o cliente
não precisa pagar o frete da carga, que vale, em média, R$ 10.000,00. Utilizando um
modelo de simulação, responda:
a) A estratégia é viável?
b) Quais os recursos mínimos necessários (caminhões, carregadores e docas) para que a
Oplogic possa implementar a nova estratégia?
c) Suponha que um pico de demanda de 30% ocorra para esse CD. O que isso implica na
operação? Aponte quais estratégias o gerente poderia adotar nessa situação.
Manutenção e disponibilidade de equipamentos2
2. A Green Drill é uma empresa que opera sete sondas de perfuração de petróleo em um
campo petrolífero no mar. As sondas trabalham em operação contínua, interrompendo seu
funcionamento apenas para manutenção corretiva. O tempo entre falhas é descrito por
uma distribuição normal com média de 168 e desvio-padrão de 24 horas. A manutenção é
feita por uma única equipe e sua duração é exponencialmente distribuída, com média de
24 horas. No início da operação, a equipe se encontra em uma base em terra. A cada
quebra de sonda, a equipe se desloca para o local da sonda, ali permanecendo até o
término da manutenção. Ao final da manutenção, se não houver outras sondas quebradas,
a equipe retorna à base; caso haja, a equipe se desloca diretamente para a sonda que
estiver aguardando por manutenção há mais tempo. Os tempos de deslocamento entre as
sondas são descritos por uma distribuição normal com média de 0,9h e desvio-padrão de
0,2h. Os tempos de deslocamento entre as sondas e a base em terra também seguem uma
distribuição normal, com média de 1,2h e desvio-padrão de 0,2h.
a) Construa o ACD representativo do sistema.
b) Para o cenário apresentado, qual a disponibilidade3 média das sondas?
c) O critério adotado pela Green Drill para a disponibilidade mínima das sondas é de 85%.
Devido ao aumento do preço do petróleo, a empresa prevê um aumento do número de
sondas em perfuração no campo. Qual o número de sondas que a equipe atual de
manutenção conseguiria atender, garantido o critério de disponibilidade?
Filas em um supermercado4
3. O supermercado Pão de Mel vem sofrendo reclamações constantes dos clientes,
insatisfeitos com o tempo de espera em fila. Pacácio Jr., o novo gerente do supermercado,
pensa em estabelecer algum critério para determinar quantos caixas devem estar abertos
para um atendimento satisfatório da clientela. Inicialmente, Pacácio quer estudar a
situação aos sábados, pois o sábado, segundo a experiência do mercado varejista, é o dia
de maior fluxo de clientes. Fisicamente, o supermercado dispõe de sete caixas; porém,
nos dias de maior demanda, o supermercado abre um caixa para compras (ditas
“expressas”) iguais ou inferiores a 10 volumes, e cinco caixas para compras (ditas
“normais”) com mais de 10 volumes. Os tempos entre chegadas sucessivas de
consumidores no supermercado são exponencialmente distribuídos, com média de 45
segundos. Sabe-se que 25% dos consumidores farão compras rápidas (e utilizarão os
caixas expressos), demorando, em média, 400 segundos (distribuídos exponencialmente)
só para comprar. No caixa expresso, os tempos de atendimento (registro e pagamento)
são normalmente distribuídos com média de 90 segundos e desvio-padrão de nove
segundos. Os consumidores que não fazem compras rápidas levam, em média, 2.500
segundos para realizarem suas compras (distribuídos exponencialmente) e 300 segundos
em atendimento no caixa (segundo uma distribuição normal com desvio-padrão de 30
segundos). Os consumidores aparentam escolher sempre o caixa com a menor fila, e não
realizam a “troca” de filas; ou seja, escolhida uma fila, permanecem nela mesmo se a fila
ao lado diminuiu de tamanho. Construa um modelo de simulação que obedeça à descrição
do supermercado. Considere que o supermercado opera durante 12 horas consecutivas
aos sábados.
a) Pacácio considera que um bom supermercado nunca deve ter uma fila maior do que cinco
pessoas nos caixas. Quantos caixas seriam necessários para atender a esse nível de
serviço?5

Na realidade, sabe-se que existe uma alta correlação entre o tempo de compra e o
tempo de atendimento no caixa. Feitos alguns estudos, descobriu-se uma correlação
linear entre o tempo de atendimento e o tempo de compra. Dessa maneira, tem-se
que o tempo de atendimento no caixa expresso (TAE) e o tempo de atendimento no
caixa normal (TAN) para um dado cliente podem ser expressos por:

TAE = 0,10TC + 20 minutos;

TAN = 0,15TC – 25 minutos.

Onde TC é o tempo de compra do cliente.

b) Altere o modelo, para que ele represente essa nova condição. Quais são as novas
necessidades de caixas no supermercado?
Um sistema de identificação de produto por leitura magnética reduziria o tempo de
registro de mercadorias em aproximadamente cinco vezes. Deste modo, os novos
tempos (em segundos) para registro seriam:

Normal (20,2), para o caixa expresso;

Normal (60,6), para as compras normais.

O custo fixo de implantação de um sistema desse tipo é de R$ 10.000,00, e o custo


variável é de R$ 2.500,00 por caixa.

c) Se cada atendente do caixa recebe um salário mensal de R$ 600,00 (com encargos e


benefícios), o sistema é viável? Explique.
d) Pacácio ficou entusiasmado com os resultados do seu estudo, mas comenta: “Na verdade,
o cenário estudado representa apenas um sábado do mês. A quantidade de clientes é
muito variável durante os outros dias e horários. Como meus funcionários podem
trabalhar em diversas funções, eu gostaria de uma tabela que relacionasse o número de
clientes que entram por minuto no supermercado com a minha necessidade de caixas
abertos”.6 Como você faria isso?
e) Determine o que é mais eficiente, ter filas separadas em cada caixa ou ter uma fila única
(como era antigamente nos bancos). Por quê? Suponha que você considere que o sistema
de fila única é melhor; ele é viável em um supermercado? Quais seriam suas sugestões
para implementar, pelo menos parcialmente, a fila única?7

Terminais portuários
4. Considere um terminal portuário importador de matérias-primas para a indústria de
fertilizantes, dotado inicialmente de um berço de atracação, cuja capacidade de
atendimento nominal é de 5.000 toneladas por dia. Cada berço de atracação tem um custo
fixo anual de R$ 10 milhões, e a obra de construção e montagem de um novo berço leva
três anos para ficar pronta. Os navios que operam nesse terminal têm uma capacidade de
carga distribuída da seguinte forma: 25% têm capacidade de 10.000 toneladas, 30% têm
capacidade de 80.000 toneladas e 45% têm capacidade de 40.000 toneladas. Na situação
atual, as importações são de um milhão de toneladas por ano. A administração portuária
prevê um aumento de 10% no volume importado a cada ano, em relação ao período
imediatamente anterior. Pode-se admitir que o intervalo entre chegadas sucessivas de
navios obedeça a uma distribuição exponencial. A Tabela 8.1 apresenta, para cada ano de
operação do terminal, o nível das importações e o número esperado de navios no ano.

Tabela 8.1 – Exercício 4


Ano de operação Nível das Número de navios
do terminal importações (mil t) por ano
1 1.000 25
2 1.100 27
3 1.210 30
4 1.331 33
5 1.464 36
6 1.610 40
7 1.771 44
8 1.948 48
9 2.143 53
10 2.357 58
11 2.593 64
12 2.853 71
13 3.138 78
14 3.452 86
15 3.797 94
16 4.177 104
17 4.594 114
18 5.054 126
19 5.559 138

O custo diário de cada navio no porto, em operação de descarregamento ou em


espera por berço, pode ser estimado pela expressão:

(R$/dia)

Onde: V é a capacidade de carga da embarcação, em toneladas.

a) Quantos navios, em média, são atendidos por ano? Qual o tempo entre chegadas
sucessivas de navios por dia?
b) Admitindo-se que, ao expandir o volume de importação e o número de berços do
terminal portuário, as distribuições dos processos de chegada e atendimento permaneçam
as mesmas, projete o número de berços necessários do terminal, a cada ano, de modo a
minimizar o custo total anual. Dica: A equação do custo total anual do terminal é dada
por:

Onde:
B é o número de berços do terminal;
CB é o custo anual de operação do berço;
TE é o tempo médio de espera no terminal, em dias;
NV é o número de navios que utilizam o porto no ano;
CD é o custo diário do navio.

Transportadora de caminhões
5. A transportadora Vai e Não Volta possui uma frota de três caminhões. Cada caminhão
executa um mesmo roteiro fechado, descrito pelas seguintes etapas:
1. Carrega o caminhão em Juiz de Fora-MG;
2. Percorre um trecho de 320 km até Taubaté-SP;
3. Troca de motorista em Taubaté-SP;
4. Percorre um trecho de 150 km até São Paulo-SP;
5. Descarrega o caminhão em São Paulo-SP;
6. Carrega o caminhão em São Paulo-SP;
7. Troca de motorista;
8. Percorre um trecho de 594 km até Belo Horizonte-MG;
9. Troca de motorista em Belo Horizonte-MG;
10. Percorre um trecho de 115 km até João Monlevade-MG;
11. Descarrega o caminhão em João Monlevade-MG;
12. Trafega mais 115 km até Belo Horizonte-MG;
13. Carrega em Belo Horizonte-MG;
14. Troca de motorista em Belo Horizonte-MG;
15. Percorre 280 km até Juiz de Fora-MG
16. Descarrega o caminhão em Juiz de Fora-MG
17. Reinicia o ciclo (volta para passo 1).

Considere que a velocidade do caminhão é normalmente distribuída com média de


50 km/h e o coeficiente de variação é de 25%. Considere também que os tempos de
carregamento e descarregamento são normalmente distribuídos com média de cinco
horas e coeficiente de variação de 25%. O turno de trabalho dos motoristas é de 12
horas, seguido de 12 de descanso (o mesmo motorista só pode voltar a trabalhar
após 12 horas do término do serviço anterior). Assuma que o tempo de troca de
motorista é nulo e que, em um ciclo, o motorista pode realizar horas extras.
a) Construa o ACD do sistema.
b) Qual o número mínimo de motoristas necessários para que o número médio de viagens
por semana por caminhão seja maior ou igual a 2?
c) Supondo que existam infinitos motoristas, qual seria o número máximo de viagens por
caminhão por semana?
d) Há trechos nos quais os motoristas realizarão hora extra? Explique. Qual a probabilidade
de ocorrência de hora extra por trecho?

Atendimento de emergência
6. A central de atendimentos de emergência do corpo de bombeiros da cidade de RockCity
dispõe de três viaturas para atendimento da população. A prefeitura deseja que 95% dos
atendimentos sejam realizados em um tempo inferior a oito minutos. Quando todas as
viaturas estão ocupadas, uma nova chamada aguarda em fila até a disponibilidade de uma
viatura. Sabe-se que os atendimentos surgem segundo um processo de Poisson
espacialmente distribuído a partir de quatro regiões da cidade. Desse modo, a taxa de
surgimento de emergências é de 15 emergências/hora, e, dado que um novo acidente tenha
ocorrido, a probabilidade de que ele ocorra nas regiões 1, 2, 3 e 4 é de, respectivamente,
25%, 10%, 30% e 35%. Os tempos de viagem ao local do acidente e de retorno à base
estão relacionados na Tabela 8.2. Os tempos de atendimento no local são
exponencialmente distribuídos com média de três minutos.

Tabela 8.2 – Exercício 6


Região 1 Região 2 Região 3 Região 4
Tempo de viagem ao
Normal (6,1) Normal (5,1) Normal (5,1) Normal (4,1)
local (min.)
Tempo de viagem de
Normal (10,3) Normal (9,3) Normal (15,3) Normal (6,3)
retorno à base (min.)
Notação: Normal (média, desvio-padrão).

a) Construa um modelo que represente a situação atual. O número de viaturas é suficiente


para atender ao nível de serviço desejado pela prefeitura? Quantas viaturas seriam
necessárias?
b) Sabe-se que a central de atendimento recebe 150 chamadas por hora, contudo, apenas
10% são chamadas de emergência. Considere que a central de atendimento possui três
atendentes, que levam 45 segundos em média cada (exponencialmente distribuídos) para
identificar se a chamada é de emergência ou não. Se a chamada não é de emergência, ela
é encaminhada instantaneamente para outra central. Tratando-se de uma emergência, o
atendente leva, em média, 25 segundos (segundo uma distribuição normal com desvio-
padrão de cinco segundos) para despachar uma viatura e esta partir para o local do
acidente. Qual o impacto do processo de atendimento na central sobre o nível de serviço
estimado no item a)? Quantas atendentes você recomendaria para a central?
c) Quais aspectos você acha que deveriam ser considerados caso este modelo fosse
implementado na prática?

7. A central de polícia de Gotham City está estudando o planejamento das rondas policiais
de suas três viaturas. Atualmente, a central recebe 30 chamadas por hora, conforme um
processo de Poisson; dessas, apenas 5% são chamadas de emergência, e 95% são trotes.
Existem três bairros, A, B e C, de onde partem as chamadas, e cada um deles é
responsável por 1/3 das chamadas atendidas. Os tempos de deslocamento das viaturas
aos locais das chamadas são exponencialmente distribuídos com média de dois minutos,
caso a chamada seja realizada a partir do bairro de patrulhamento da viatura. Caso a
chamada venha de outro bairro, os tempos de deslocamento, tanto para o atendimento
quanto para o retorno ao bairro, são normalmente distribuídos com média de 20 e desvio-
padrão de cinco minutos. Quando uma chamada é reconhecida como de emergência, é
encaminhada à viatura do bairro; caso esta esteja ocupada, então, a chamada é
encaminhada para a primeira viatura disponível ou fica em uma fila de espera,
aguardando alguma viatura disponível (não necessariamente a de seu bairro). Os tempos
de atendimento no local da chamada são exponencialmente distribuídos com média de
cinco minutos. Terminado o atendimento, a viatura retorna imediatamente ao seu bairro e
não pode atender a nenhuma chamada durante a viagem de retorno.
a) Construa um modelo de simulação que represente o problema. Qual o tempo médio de
espera por atendimento (tempo até a chegada ao local)? Qual a taxa de utilização das
viaturas em atendimento de chamadas?
b) Qual a fração das chamadas atendidas por uma viatura que parte de fora do seu bairro?
c) Considere que o comissário Gordon deseja proibir que uma viatura atenda às chamadas
que não sejam do seu bairro de patrulhamento. Qual será o novo tempo médio de espera
por atendimento?
d) A central de polícia deseja avaliar a possibilidade de que todas as viaturas fiquem
aguardando as chamadas estacionadas na delegacia central de Gotham City. Nesse caso,
os tempos de viagem de ida e volta seriam exponencialmente distribuídos com média de
seis minutos. Para essa nova configuração, qual seria o tempo médio de atendimento e
qual a nova taxa de utilização das viaturas? Esse sistema tem desempenho melhor do que
o do item a)?
e) Devido às férias do Sr. Bruce Wayne, o número de chamadas passou de 30 para 80
chamadas por hora. Qual sistema tem agora o melhor desempenho? Explique por que isso
ocorreu, utilizando os resultados da simulação.

“Então, cancela!”: central de atendimento – “call center”


8. A PlimCabo é uma operadora de TV a cabo da cidade de New Wave. Os assinantes do
serviço possuem um número de telefone para realizarem chamadas de manutenção. As
chamadas são recebidas na central de atendimento, ou call center, da empresa e
comportam-se como um processo de Poisson, com taxa de 120 chamadas por hora.
Quando surge uma chamada, essa é atendida por uma equipe de operadores treinados.
Contudo, se todos os operadores estiverem ocupados, a chamada aguarda em uma fila de
espera. Os tempos de atendimento dos operadores são uniformemente distribuídos no
intervalo de seis a 18 minutos. Em 35% dos casos, o cliente não se sente satisfeito e
solicita o cancelamento da assinatura. Nesses casos, a chamada é transferida para uma
segunda equipe de operadores treinados especialmente em negociação com o cliente,
para convencê-lo a não desistir da assinatura.8 Durante a negociação, o operador
consome seis minutos, distribuídos exponencialmente. Em 50% dos casos, o operador
não consegue convencer o cliente, e encaminha a chamada ao gerente. O gerente faz mais
uma tentativa de convencimento, que tem sucesso em 60% dos casos. As conversas com o
gerente duram, em média, 10 minutos, distribuídos exponencialmente. Caso o gerente não
tenha sucesso, a chamada é finalmente encaminhada ao serviço de cancelamento de
assinaturas.
a) Os clientes são muito sensíveis ao tempo de espera no telefone e, geralmente, quando são
atendidos, já vão logo dizendo: “Então, cancela!”. A empresa deseja que 90% das
chamadas aguardem um tempo inferior a um minuto de espera na fila pelo primeiro
atendimento. Quantos operadores devem estar à disposição, simultaneamente, para esse
fim? Qual seria o número necessário de operadores caso o nível de serviço desejado
fosse de que 99% dos clientes tenham um tempo de espera na fila inferior a um minuto?
b) Considere que 5% das chamadas colocadas em espera desistem imediatamente do
atendimento. As outras chamadas abandonam o sistema de modo linear: a cada dois
minutos, a taxa de abandono aumenta mais 3,5%, até o limite, em que, após 20 minutos de
espera, 40% das chamadas abandonaram o sistema. Isso significa que 60% das chamadas
nunca abandonam o sistema, independentemente do tempo de espera. Como isso altera as
suas propostas do item anterior?9
c) Para o atendimento da segunda equipe, a empresa deseja que 99% das chamadas
aguardem um tempo inferior a 15 segundos em espera. Quantos operadores seriam
necessários para esse fim?
d) Quando o gerente é acionado, ele recebe instruções do operador sobre o problema do
cliente. Esse processo consome 45 segundos em média, segundo uma distribuição normal
com desvio-padrão de cinco segundos. Qual o impacto dessa condição no nível de
serviço? Haverá necessidade de mais algum(s) operador(es)?
e) Se uma segunda chamada surgir enquanto o gerente estiver ocupado, ela é
automaticamente transferida para o serviço de cancelamento. Qual a taxa de sucesso real
do gerente ao convencer os clientes? Qual a taxa de sucesso final de convencimento de
todo o sistema?

Problema do pedestre10
9. Considere um cruzamento de pedestres como o indicado na Figura 8.1. Os pedestres
chegam pela direita e pela esquerda, em processos de Poisson com taxas médias de,
respectivamente, clientes por minuto e clientes por minuto. Os
pedestres aguardam até que a luz verde acenda, então, atravessam a rua. A travessia é
instantânea, ou seja, o tempo de travessia pode ser considerado nulo.
Figura 8.1 – Exercício 9.

São consideradas três regras de funcionamento do semáforo:


• Regra 1: a cada intervalo de tempo T = 90 segundos, a luz se alterna do vermelho para
o verde;
• Regra 2: o semáforo fica verde toda vez que o número de pedestres aguardando nos
dois lados no total, N0, é maior ou igual a 50 pedestres;
• Regra 3: o semáforo fica verde toda vez que o primeiro pedestre a chegar após o último
sinal verde aguardou T0 = 80 segundos no cruzamento.
a) Construa um modelo de simulação para cada regra em estudo.
b) Determine, para cada regra: o número médio de pedestres que cruzam da direita para a
esquerda, o número médio de pedestres que cruzam da esquerda para a direita, e o tempo
médio de espera de um pedestre no cruzamento.
c) Verifique a validade das seguintes expressões analíticas para o número médio de
pedestres que cruzam da esquerda para a direita (LARSON; ODONI, 1981):
• Regra 1:

• Regra 2:

• Regra 3:

Gestão de estoques
10. Um método clássico para se determinar o tamanho do lote ótimo de abastecimento de
estoques é a fórmula do lote econômico, desenvolvida por Ford W. Harris, um engenheiro
de produção da Westinghouse, em 1913:11

Onde:
q é o tamanho ótimo do lote, ou o “lote econômico” de produtos;
K é o custo de processamento do pedido do lote ao fornecedor (R$/pedidos);
D é a demanda anual do produto;
h é o custo de manutenção do produto em estoque por ano (R$/produto×ano).

O Juke Joint Pub está preocupado com o custo do seu estoque de cerveja. A
demanda anual do Juke é de 36.500 garrafas, o que equivale a uma média de 100
garrafas de cerveja vendidas por dia. Uma garrafa mantida em estoque ao longo de
um ano custa ao Juke R$ 1,00. Cada vez que um novo pedido de cerveja é solicitado
ao fornecedor, os custos envolvidos no processamento de pedidos (uso do telefone,
internet, tempo do funcionário etc.) totalizam R$ 50,00, independentemente do
tamanho do lote solicitado. Para esse problema, o tamanho do lote econômico seria:

a) Construa um modelo de simulação do pub que permita visualizar o comportamento do


estoque ao longo do ano – um gráfico do estoque em função do tempo. Considere no seu
modelo:
• O tempo entre chegadas sucessivas de clientes é constante e igual a 0,01 dia, e cada
cliente consome apenas uma cerveja;
• Toda vez que o estoque atinge zero, o pub instantaneamente recebe um novo lote de
tamanho q;
• O estoque inicial é de 1.500 cervejas;
• O tempo de simulação é de um ano;
• Calcule, se possível durante a simulação, o valor do custo anual de estoque, CE, pela
expressão:

Onde n é o número de pedidos realizados no ano e é o nível médio de estoque no


ano.
Teste o modelo para valores distintos do tamanho do lote q e verifique,
empiricamente, se o lote de q = 1.351 cervejas é o mais econômico – ou, de outro
modo, se o lote é aquele que minimiza o custo anual de estoque. Para a verificação
do modelo, obtenha os valores do número de pedidos realizados e do intervalo de
tempo entre pedidos. Para um lote de q = 1.351 cervejas, o número de pedidos ao
longo do ano deve ser igual a:

e, portanto, o intervalo de tempo entre pedidos sucessivos, ou ciclo de estoque,


deve ser igual ao inverso desse valor, ou seja:
b) Vamos aumentar o realismo do modelo, considerando que a demanda não é mais
constante, ou determinística, e apresenta um comportamento aleatório. Altere o modelo
considerando que, por dia, a quantidade de cervejas vendidas é normalmente distribuída
com média de 100 garrafas e desvio-padrão de 50 garrafas. Isso significa que a média da
demanda anual, é:

garrafas

e o desvio-padrão da demanda anual é:

garrafas

c) O estoque não é mais reposto no momento em que ele zera, mas periodicamente, em
intervalos de 13,5 dias. Rode o modelo e perceba que, às vezes, há sobra, e, às vezes,
faltam produtos em estoque no instante imediatamente anterior à chegada do novo lote.
d) O fornecedor de bebidas do Juke opera com um lead time, L, fixo de uma semana. Lead
time é o intervalo de tempo entre a realização do pedido e a entrega do produto. A ideia
do proprietário é a de solicitar um novo lote de cerveja toda vez que a quantidade
disponível de garrafas atingir o que ele espera vender em uma semana. Durante o lead
time, a demanda esperada, é de:

garrafas

e o desvio-padrão é:

garrafas

e) Altere o seu modelo computacional de modo que (1) se incorpore o lead time e que (2)
um novo lote seja solicitado sempre que o número de garrafas em estoque atingir a
demanda esperada em uma semana de garrafas. Como a demanda durante
esse período pode ser considerada normalmente distribuída, essa política do proprietário
resultará em falta de estoque em qual fração dos ciclos de estoque?
f) Para o Juke Joint, um cliente não atendido tem um custo alto, pois envolve não só a perda
da venda mas também o prejuízo futuro à imagem do pub entre os seus clientes. O
proprietário calcula que um cliente não atendido equivale a um custo de R$ 10,00.
Recalcule o custo de estoque anual do pub, considerando que existe um custo adicional
de R$ 10,00 por cerveja não vendida. Considere que o estoque médio, é calculado
apenas sobre a parte “positiva” do estoque.

Uma das estratégias de gestão de estoques é o modelo (r,q).12 Nessa estratégia,


considera-se que o tamanho do lote, q, é calculado pela expressão do lote
econômico, utilizando-se a média da demanda anual, . O momento do “novo
pedido”, r, é medido em função do número de produtos remanescentes em estoque,
de modo a minimizar o custo total. Uma aproximação para o valor de r pode ser
obtida através da seguinte expressão:

Onde: é a probabilidade de que a demanda durante o lead time seja


maior do que o total disponível de produtos em estoque, r, durante este período. Cp
é o custo da perda de venda.
Para o Juke, teríamos:

Como a demanda é normalmente distribuída, podemos obter da tabela da


distribuição normal o valor de r tal que :
garrafas

g) Teste esse valor de reposição no seu modelo. Na prática, ele significa que o estoque de
segurança, ES, é igual a:

garrafas

ou:

desvios-padrão da demanda no lead time.

h) Pesquise outras formas de gestão de estoque e teste sua eficiência no modelo de


simulação.

Terminal aeroportuário
11. Nos aeroportos, é comum que, da saída do avião até o local de retirada da bagagem, os
passageiros realizem uma caminhada razoável. Essa distância, aparentemente longa, tem
duas razões básicas: (1) permitir que a bagagem seja retirada do avião e disponibilizada
para os passageiros, evitando um congestionamento desnecessário na sala de bagagens; e
(2) minimizar possíveis injustiças entre os passageiros, já que alguns optam por
transportar apenas a “bagagem de mão”, mesmo quando ela não é tanto assim “de mão...”.
A nova ala de desembarque do aeroporto de Codorna City está sendo projetada, e a
equipe responsável pelo projeto solicitou que você determine qual deveria ser a distância
entre a saída do avião e o ponto de recepção das bagagens. Eles não estão muito certos
quanto ao nível de serviço da operação, mas já definiram que será mensurado pela fração
das bagagens já prontas para serem retiradas. Os intervalos de tempo entre chegadas
sucessivas de aviões são exponencialmente distribuídos com média de 30 minutos. Existe
apenas um veículo para transporte da bagagem entre o avião e o terminal, capaz de
transportar até 1 t de bagagem a uma velocidade média de 20 km/h. A distância entre o
local de pouso e o terminal é de 200 metros. O número de passageiros transportados por
avião é uniformemente distribuído entre 60 e 120 passageiros. A bagagem transportada
por passageiro é normalmente distribuída com média de 3,2 volumes e desvio-padrão de
2,1 volumes. O peso médio de um volume é de 15 kg. Existem seis operadores
especializados na operação de descarregamento da aeronave e na colocação da bagagem
no veículo. Cada operador leva em média cinco segundos para descarregar um volume da
aeronave, segundo uma distribuição normal com desvio-padrão de três segundos. A
operação de descarregamento do veículo é realizada por três operadores que consomem
dois segundos em média por volume, segundo uma distribuição normal com desvio-
padrão de um segundo. A velocidade da caminhada dos passageiros é de 1,2 m/s,
admitida como constante. Após a aterrissagem, os passageiros saem do avião entre
intervalos de tempo exponencialmente distribuídos com média de três segundos.
a) Construa um modelo computacional que represente o problema. Considere que a
distância a ser percorrida é de 10 metros. Qual a fração das bagagens que se encontra
disponível para ser retirada pelos passageiros?
b) Qual a distância que deve ser percorrida para que a fração média de bagagens
preparadas seja de 50%?
c) A equipe ficou entusiasmada com os resultados que você apresentou. Eles gostariam de
melhorar a fração de bagagens disponíveis sem alterar a distância percorrida pelos
passageiros. O que você recomendaria para a equipe de projeto?
d) Para o segundo ano de operação, espera-se um aumento de 50% na média das
aterrissagens realizadas no terminal, sem que isso altere o tipo de distribuição envolvida.
O que isso altera nas suas recomendações de projeto?

As filas também enganam13


12. Dois supercomputadores recebem tarefas para processamento que se comportam como
um processo de Poisson com taxa de uma tarefa/segundo. O tempo de processamento das
tarefas em cada supercomputador é igual a zero segundo, com probabilidade 1 – ε, e igual
a n segundos, com probabilidade ε, onde ε é um número muito pequeno. Nesse sistema,
portanto, a maior parte dos atendimentos é instantânea. Os administradores da rede
desejam avaliar duas regras de comportamento para as filas de processamento:
1. Regra A: cada computador tem uma fila única. Quando uma nova tarefa chega, ela entra
na menor fila, caso os dois supercomputadores estejam ocupados, ou entra aleatoriamente
em qualquer um deles, caso os dois estejam livres ou as filas sejam do mesmo tamanho.
2. Regra B: cada computador tem uma fila única. Quando uma nova tarefa chega, ela entra
na menor fila, caso a diferença dos tamanhos das filas seja de 0 ou uma tarefa –
considerando toda tarefa em execução como pertencente à fila. Se os dois
supercomputadores estão livres, ela entra aleatoriamente em qualquer uma deles.
Contudo, se a diferença entre as filas for maior do que uma tarefa, a tarefa entra na maior
fila.
a) Construa um modelo de simulação para cada caso e estime o tempo médio de
permanência no sistema para cada uma das regras. Qual regra teve o melhor
desempenho em termos do tempo médio no sistema e do tempo médio em fila? Avalie
as diferenças percentuais entre os tempos e considere ε = 0,001 e n = 10 segundos.
Dica: Como a probabilidade de ocorrência de filas simultâneas é muito baixa, rode
a simulação por um tempo longo (≥ 300 horas).
b) Você consegue explicar intuitivamente o que está ocorrendo?

JobShop14
13. A fábrica de autopeças Wonka produz três tipos diferentes de componentes utilizados na
fabricação de ônibus e caminhões. A planta de produção da Wonka possui cinco estações
de trabalho, cada uma com um número diferente de máquinas. Os componentes são
produzidos nas estações, mas cada um deve seguir um roteiro próprio de estações para
ser produzido. Os tempos de operação em cada estação são exponencialmente
distribuídos, com médias dependentes do tipo de componente, como indicado na Tabela
8.3.
As estações 1, 2, 3, 4 e 5 possuem, respectivamente, 3, 2, 4, 3 e 1 máquinas que
podem realizar as operações. As solicitações por componentes chegam à planta
entre intervalos de tempo sucessivos que seguem um processo de Poisson com
média de quatro componentes por hora. As solicitações são do componente A em
30% das vezes; do componente B, em 50% das vezes; e do componente C, em 20%
das vezes. A planta opera em turnos de oito horas, não havendo perda de
continuidade entre um turno e outro.

Tabela 8.3 – Exercício 13


Roteiro de Tempo médio de operação
Componente
estações (minutos)
A 3→1→2→5 30 35 50 50 -
B 4→3→1 65 50 35 - -
C 2→5→1→4→3 75 15 25 50 60

a) Construa o ACD do problema.


b) Construa um modelo de simulação para o problema e estime as seguintes medidas de
desempenho: o tempo médio de execução de cada componente, o tempo médio que cada
componente permanece em fila, o tempo médio em fila em cada máquina, a taxa de
utilização de cada máquina e o número médio de componentes sendo processados
simultaneamente na planta. O sistema está bem dimensionado?
c) Utilizando o modelo de simulação, proponha alternativas para melhorar o desempenho
operacional do sistema.

Programação da produção15
14. A Sequeum é uma fábrica que produz por encomenda. Ela recebe as ordens de produção
de seus produtos com data de entrega determinada pelo Departamento de Vendas, que lida
diretamente com os clientes. O Departamento de Planejamento, Programação e Controle
da Produção (PPCP) calcula o tempo necessário para a entrega do pedido e orienta o
Departamento de Vendas. A confirmação obtida através do Departamento de PPCP, no
entanto, é tardia, devido ao tempo necessário para reprogramar o sistema de produção e
analisar a nova programação. A Sequeum precisa de um sistema capaz de determinar
rapidamente esses prazos. A solução encontrada foi desenvolver um modelo de simulação
que possibilite à empresa informar, rapidamente e com segurança aos seus clientes, o dia
de entrega dos pedidos. Existem cinco famílias de produtos e cinco roteamentos, um para
cada família, que são fixos. Não há necessidade de trabalhar com calendários e turnos,
visto que os centros de trabalho funcionam nos mesmos horários e turnos. A Tabela 8.4
apresenta o roteamento para cada família de produtos e o tempo de trabalho em cada
centro (em horas).
Tabela 8.4 – Exercício 14
Centro de trabalho
Família 1 2 3 4 5
1 8 12 24 12
2 4 6 12 6
3 5 8 16 8
4 2 4 8 4
5 20

Podemos inferir que, constantemente, serão formadas filas nos centros de trabalho.
Toda vez que isso ocorrer, devemos criar regras claras para definir a priorização
dos trabalhos em fila. Devemos, por exemplo, processar primeiro o pedido que
chegou antes ao centro ou o pedido que tem prazo de entrega mais “apertado”?
Justamente para responder a essa pergunta, deseja-se determinar, dentre todas, a
política de priorização (ou a disciplina de atendimento) a ser adotada em cada
centro de trabalho; são elas:
• FIFO – First-in, first-out: nessa política, como o nome original em inglês nos diz, o
primeiro produto a chegar ao centro de trabalho será o primeiro a ser processado; isto é,
os produtos serão processados na ordem em que chegam ao centro de trabalho;
• LIFO – Last-in, first-out: nessa política, o último pedido a chegar ao centro de trabalho
será o primeiro a ser processado. À primeira vista, essa política pode parecer ilógica,
mas ocorre com frequência, devido às condições de armazenagem; muitas vezes, os
produtos são colocados em estantes profundas, uns na frente dos outros, de modo que o
último pedido a chegar ficará na frente de todos; isto é, será inviável, por exemplo,
retirar o produto do fundo (primeiro a chegar) sem retirar todos os outros antes;
• MTPO – Menor tempo de processamento: são priorizados os pedidos cujos tempos de
processamento no centro de trabalho em questão forem menores;
• MDEN – Menor data de entrega: nessa política, os produtos são ordenados pelo prazo de
entrega: os que tiverem prazos mais “apertados” serão priorizados;
• ALEA – Aleatório: nessa política, pouco utilizada na prática, não há prioridades; isto é, os
pedidos são processados aleatoriamente;
• FEST – Folga Estática: a folga estática é o tempo que falta para se entregar o pedido,
descontado dos tempos de processamento necessários para o referido pedido. Nesse tipo
de disciplina, serão processados inicialmente os produtos com menor folga estática.

A Tabela 8.5 apresenta dados de pedidos para montagem e execução do modelo.

Tabela 8.5 – Exercício 14


Pedido Data de chegada Família Data de entrega
1 0 5 20
2 1 4 95
3 2 4 105
4 3 3 80
5 4 3 95
6 5 2 180
7 6 2 185
8 7 1 115
9 8 1 130
10 9 4 110
11 10 4 125
12 11 3 100
13 12 3 120
14 13 2 200
15 14 2 210
16 15 1 155
17 16 1 165

Sabe-se, ainda, que a Sequeum paga 1 dólar para cada hora de atraso (para cada
ordem).
a) Você deve construir um modelo de programação no simulador para cada centro de
trabalho, mostrando os indicadores para a taxa de utilização de cada centro, o horizonte
total de programação para as ordens descritas anteriormente, a taxa média de atraso dos
pedidos, o número de pedidos atrasados, o número de pedidos adiantados e o que
considerar relevante para realizar uma análise gerencial do sistema. Note que esta é uma
simulação determinística, e, portanto, apenas uma única replicação será suficiente!
b) Suponha que todos os centros de trabalho respeitem a disciplina FIFO. Quais seriam os
resultados da simulação?
c) Suponha que os centros de trabalho funcionem segundo as seguintes regras: C1, LIFO;
C2, MTPO; C3, MDEN; C4, ALEA; e C5, FEST. Compare os resultados dessas
configurações em relação ao item anterior no que tange às medidas de desempenho
explicitadas.

Linha de pallets retornáveis16


15. A Wembley & Co. deseja testar, por meio de simulação, seu projeto de linha de
montagem com pallets retornáveis, que irá alimentar uma linha de montagem principal.
Como o layout da linha não é simples, incluindo uma divisão de fluxos, decidiu-se
utilizar a simulação para verificar se não há algum problema com gargalos e determinar o
número ideal de pallets. O layout da linha está ilustrado na Figura 8.2.
Figura 8.2 – Exercício 15.

O fluxo do processo é o seguinte: no posto 1, um robô retira o produto já montado e


o transfere para a linha principal. O trecho que vai do posto 1 até a operação 20
corresponde ao trecho de retorno do pallet vazio; da operação 20, o pallet segue até
a operação 30; da operação 30, ele vai para a operação 40/50, seguida da operação
60/70, e depois se dirige ao posto 1, através do trecho que possui o cruzamento.
Note que as operações 40/50 e 60/70 estão duplicadas. Portanto, após a operação
30, deve-se decidir qual é o trecho de transportador ao qual o produto deverá se
dirigir (vide ponto de decisão na Figura 8.2). A prioridade é o trecho mais próximo;
porém, se a operação 40/50, mais próxima da operação 30, estiver ocupada, então o
produto deverá se dirigir para a posição 40/50 – mais distante desse ponto. Para
cada operação, há um operador correspondente. Os tempos de processo, em
segundos, seguem uma distribuição triangular, conforme a Tabela 8.6.

Tabela 8.6 – Exercício 15


Operação Menor valor Mais provável Maior valor
OP 20 30,6 34,0 39,1
OP 30 27,1 30,2 34,7
OP 40/50 75,8 84,0 96,6
OP 60/70 54,4 60,5 69,6

Os tempos de transporte para cada segmento (cada quadrado no layout) do


transportador, que é uma esteira assíncrona (do tipo stop-and-go), é de três
segundos para movimentação horizontal e de seis segundos para transferência a 90º.
O tempo de manipulação do robô é constante e igual a 30 segundos.
a) Construa um modelo de simulação que represente o sistema em projeto na Wembley.
b) Qual o número ideal de pallets retornáveis para maximizar a produtividade? Dica:
Construa um gráfico de produtividade vs. número de pallets. Não se esqueça de
considerar um tempo de “warm-up” adequado para o modelo.
c) Há algum problema de travamento da linha? Em caso afirmativo, explique como a lógica
de decisão poderia ser alterada para contornar esse problema.

Gerenciamento da cadeia de suprimentos17


16. Os problemas de gerenciamento da cadeia de suprimentos envolvem a correta
identificação dos fluxos existentes. Os fluxos podem ser caracterizados como de dois
tipos: de materiais, geralmente dos elos superiores da cadeia (fornecedores) para os
inferiores (vendedores); e de informação, geralmente dos elos inferiores para os elos
superiores. A companhia de bebidas Cervejeiros Habilidosos deseja estudar a sua cadeia
de suprimentos. Atualmente, a cadeia é composta por quatro fábricas, quatro
distribuidores e diversas lojas varejistas (Fig. 8.3).
Figura 8.3 – Exercício 16.

As quatro fábricas produzem 12 tipos diferentes de bebidas – entre cervejas,


refrigerantes e águas minerais – que abastecem os distribuidores. Uma fábrica não
produz todo tipo de produto; na verdade, cada fábrica produz seis tipos de produtos
diferentes, como indicado na Tabela 8.7. Nas fábricas, o tempo entre chegadas
sucessivas de produtos (equivalente ao tempo de produção) é exponencialmente
distribuído com média de 600 minutos.

Tabela 8.7 – Exercício 16


Fábricas
F1 F2 F3 F4

1 7 4 10
2 8 5 11
3 9 6 12
Produtos
4 10 7 1
5 11 8 2
6 12 9 3

As fábricas produzem de forma ininterrupta ao longo do dia, iniciando a produção


no primeiro dia à 0h e terminando no 30o dia às 24h (após 720 horas).
Os quatro distribuidores, por sua vez, fornecem os produtos para um grupo de lojas
de varejo e realizam pedidos para as fábricas segundo estratégias previamente
determinadas. Inicialmente, as fábricas produzem por sete dias, gerando estoques
dos produtos. A seguir, os distribuidores iniciam os seus pedidos (isto é, no oitavo
dia à 0h, 168 horas após o início da produção); neste momento, todos os
distribuidores realizam pedidos de 10 unidades por produto para o abastecimento
inicial de seus estoques, independentemente da estratégia adotada.
Os pedidos dos distribuidores são realizados uma vez por dia, sempre à 0 hora. Se
um pedido não puder ser atendido pela fábrica, ele é adiado para o dia seguinte. Um
pedido somente é considerado atendido se o total de produtos solicitados de cada
tipo está disponível. Existe um tempo (em horas) entre o momento da realização do
pedido pelo distribuidor e a entrega efetiva do produto pelo fabricante (lead time)
Tij, relacionado na Tabela 8.8.

Tabela 8.8 – Exercício 16


Fábricas
F1 F2 F3 F4

D1 16 22 20 12
D2 15 16 13 19
Distribuidores
D3 14 16,5 20 17
D4 22 13 16,5 18

Cada lojista realiza seus pedidos para os distribuidores segundo as seguintes regras:
• Cada pedido é de apenas um produto específico;
• Os distribuidores são escolhidos aleatoriamente entre os quatro disponíveis, segundo uma
distribuição uniforme;
• Os tempos entre os pedidos sucessivos são uniformemente distribuídos no intervalo entre
600 e 3.600 segundos;
• O tipo de produto solicitado em um pedido é uniformemente distribuído entre 1 e 12;
• Os pedidos começam a ser realizados a partir do nono dia, à 0 hora (ou após 192 horas do
início da produção pelas fábricas).

Todo pedido que não pode ser totalmente atendido é negligenciado, e o lojista não
repete o mesmo pedido posteriormente. Contudo, os distribuidores que não
conseguem entregar os produtos de um pedido realizam um pedido adicional desses
produtos às fábricas no próximo horário de realização de pedidos (à 0 hora do dia
seguinte), independentemente da estratégia que o distribuidor está utilizando.
O tempo de entrega dos distribuidores para os lojistas é considerado pequeno e
desprezível para este estudo.
Os produtos não possuem atributos específicos, como tamanho ou peso. Eles são
pedidos para as fábricas segundo três tipos de estratégia: A, B ou C. Cada elo da
cadeia de suprimentos tenta atender ao pedido (ou demanda) do elo inferior da
cadeia. Conjuntamente, cada elo da cadeia solicita uma certa quantidade de produtos
para o elo superior. No momento em que o pedido chega, o responsável pelo
suprimento somente é capaz de contemplá-lo caso disponha de todos os produtos em
estoque (isso significa que não existe backlog ou atendimento de pedidos em
atraso).
Estratégia A. Se um distribuidor vendeu uma unidade do produto durante o último
dia, ele realiza um pedido de duas unidades do mesmo produto. Nesta estratégia, os
distribuidores D1 e D2 realizam pedidos às fábricas F1 e F2; e os distribuidores D3 e
D4 realizam pedidos às fábricas F3 e F4, como indica a Tabela 8.9.
O transporte das fábricas para os distribuidores custa R$ 10,00 por hora de entrega,
por pedido (independentemente do número de produtos em um pedido). Os
distribuidores têm um custo de R$ 1,00 por produto mantido em estoque de um dia
para o outro (independentemente do dia ou hora em que o produto chegou ao
estoque).
a) Simule o sistema apenas uma vez por 30 dias e mostre a evolução do estoque do
distribuidor D1 ao longo do tempo.
b) Realize 100 replicações do modelo, calculando o máximo, o mínimo, a média e a
variância dos seguintes parâmetros: custo total de cada distribuidor Di (i=1,2,3 e 4),
número de produtos distribuídos pelo distribuidor Di, e custos relativos do distribuidor
Di, Ri = Ci/Ni.

Estratégia B. Em vez de realizar pedidos com tamanho constante (Estratégia A), os


distribuidores solicitam o necessário para atenderem à demanda do elo inferior da
cadeia. Assim, cada distribuidor acumula os pedidos (para cada produto) dos
lojistas – preenchidos ou não – durante 24 horas (de 0h às 24h de cada dia) e
encaminha pedidos dessas quantidades para as fábricas no próximo instante de
realização do pedido (à 0h do dia seguinte).
c) Simule o sistema apenas uma vez por 30 dias e mostre a evolução do estoque do
distribuidor D1 ao longo do tempo.
d) Realize 100 replicações do modelo, calculando o máximo, o mínimo, a média e a
variância dos seguintes parâmetros: custo total de cada distribuidor Di (i=1,2,3 e 4),
número de produtos distribuídos pelo distribuidor Di e custos relativos do distribuidor
Di, Ri=Ci/Ni.

Estratégia C. Nas estratégias anteriores, os distribuidores realizam seus pedidos às


fábricas de modo fixo (Tabela 8.9). Na Estratégia C, um distribuidor Di tenta
realizar o pedido a uma fábrica Fk com o menor tempo de lead time Tjk (
). Se a quantidade desejada de produtos não estiver
disponível, a próxima fábrica com o menor tempo de lead time é escolhida, e assim
por diante. Se nenhuma fábrica for capaz de atender ao pedido, ele será adiado para
o dia seguinte.

Tabela 8.9 – Exercício 16


Distribuidores
D1 D2 D3 D4

1 F1 F1 F4 F4

2 F1 F1 F4 F4

3 F1 F1 F4 F4

4 F1 F1 F3 F3

5 F1 F1 F3 F3

6 F1 F1 F3 F3
Produtos
7 F2 F2 F3 F3

8 F2 F2 F3 F3

9 F2 F2 F3 F3

10 F2 F2 F4 F4

11 F2 F2 F4 F4

12 F2 F2 F4 F4

e) Simule o sistema apenas uma vez por 30 dias e mostre a evolução do estoque do
distribuidor D1 ao longo do tempo.
f) Realize 100 replicações do modelo, calculando o máximo, o mínimo, a média e a
variância dos seguintes parâmetros: custo total de cada distribuidor Di (i=1,2,3 e 4),
número de produtos distribuídos pelo distribuidor Di, e custos relativos do distribuidor
Di, Ri=Ci/Ni.
g) Qual das três estratégias apresentou o melhor desempenho para o distribuidor D1?
Justifique.

Atendimento de exame de campo SUS18


17. O exame de campo visual é importantíssimo no auxílio à prevenção de algumas doenças
da visão, como o glaucoma. O quanto antes um problema com o campo visual do paciente
(uma pessoa normal tem um campo visual ao redor de 130o) for detectado, maior a
chance de cura e menor o risco para o paciente. Em uma das unidades de atendimento
deste tipo de exame, são atendidos cinco pacientes, pré-agendados por turno, das 13h às
17h (com essa capacidade de atendimento, a fila de espera pode chegar a seis meses). Os
pacientes devem chegar todos às 12h, mas cada paciente pode ter um atraso segundo uma
distribuição triangular de no mínimo 30 minutos, moda de 60 minutos e máximo de 120
minutos em relação ao meio-dia. O atendimento dos pacientes é sequencial, com a
presença de um técnico em oftalmologia que realiza as etapas descritas na Tabela 8.10.
a) Construa o ACD do problema.
b) Construa o modelo computacional do problema.
c) Qual a probabilidade de que o atendimento do último paciente termine após às 17h (fim
do expediente do técnico)?
d) Responda novamente à questão do item c), supondo que deverão ser atendidos seis
pacientes por dia.
e) O layout da unidade de funcionamento está representado, esquematicamente, na Figura
8.4. Basicamente, após ser anunciado ao microfone (1), o paciente se dirige ao
consultório (2) para realizar o exame. O técnico, após o registro no aparelho, vai até a
caixa de lentes (3), pega as respectivas lentes, retorna ao consultório (2) e realiza o
restante do processo. Terminado o exame, o paciente é liberado. Quais seriam as suas
sugestões para reduzir o tempo total de cada exame? Quais seriam os impactos dessas
mudanças nas respostas dos itens c) e d)?

Tabela 8.10 – Exercício 17


Etapa Tempo Observação
Configuração Cinco minutos em média, segundo uma
do distribuição normal com desvio-padrão de Feita pelo técnico.
equipamento 0,125 minuto.
Chamada do Uniformemente distribuído entre 0,8 e 1,2
Feita pelo técnico.
paciente minuto.
No caso de autorrefração, como a O técnico, juntamente com o paciente.
Realização de lensometria, o processo dura 1,5 minuto 70% dos pacientes realizam anamnese
anamnese em média, segundo uma distribuição por autorrefração; 25% por lensometria,
(levantamento normal com desvio-padrão de 0,35 e 5% já trazem o seu último exame de
do grau) minuto. No caso de apresentação do grau vista, não sendo necessário levantar o
por exame prévio, o tempo de grau por autorrefração ou por
levantamento é imediato. lensometria.
Registro no
Uniformemente distribuído entre 0,5 e 1
aparelho de Feito pelo técnico.
minuto.
medição
Uniformemente distribuído entre 3 e 4
Separação do
minutos
conjunto de Feita pelo técnico.
(inclui o deslocamento do local do exame
lentes
até a posição da caixa de lentes).
15% de ser 6 minutos por olho; Técnico com o paciente. 11% dos
Exame de
20% de ser 12 minutos por olho; pacientes fazem exame em um só olho; e
campo
65% de ser 18 minutos por olho. 89%, nos dois olhos.
Finalização Uniformemente distribuído entre 1 e 2
Feita pelo técnico.
do exame minutos.
Figura 8.4 – Exercício 17.
Transporte ferroviário
18. A companhia de transportes ferroviários Railway Pangaré Unlimited (RPU) está
desenvolvendo um projeto de expansão para uma linha ferroviária de 1.500 km. Nessa
linha, planeja-se instalar 10 pontos de transbordo de carga. Cada ponto estará espaçado
do ponto anterior pelas distâncias descritas na Tabela 8.11. Cada trecho pode ser
percorrido simultaneamente por apenas uma composição ferroviária, composta por uma
locomotiva e um conjunto de vagões de carga. Admita que uma estação ferroviária tem
capacidade para acomodar “várias linhas” e que a quantidade de composições que
possam carregar ou descarregar ao mesmo tempo em cada estação seja ilimitada.

Tabela 8.11 – Exercício 18


Estações 1-2 2-3 3-4 4-5 5-6 6-7 7-8 8-9 9-10
Distância (km) 150 50 300 200 350 100 50 100 200

A RPU utilizará dois tipos de composição para a linha. A composição do tipo 1 é


constituída de 31 vagões que pesam 25 t cada quando vazios e que podem carregar
até 55 t cada. A composição do tipo 2 é constituída por 35 vagões que pesam 25 t
cada quando vazios e podem carregar até 35 t cada. Cada locomotiva, que pode
puxar qualquer uma das composições, pesa 300 t.
A velocidade média dos trens (composição e locomotiva) em cada trecho é de 25
km/h (considere uma distribuição uniforme entre 22,5 e 27,5 km/h).
Existem dois produtos a serem transportados. O produto 1 só pode ser transportado
em uma composição do tipo 1, e o produto 2, na composição do tipo 2. Considere
que a lógica de transporte será a seguinte:
• Trem cheio: uma vez que o trem carregado chega a um ponto de transbordo, ele libera a
composição para descarregamento. Se existe uma composição de vagões cheios no
ponto, ele se conecta à nova composição e inicia a viagem de transporte. Caso não haja
uma composição de vagões vazios no ponto, então a locomotiva se conecta à nova
composição e aguarda uma nova tarefa. Caso não haja essa composição vazia, a
locomotiva aguarda a liberação da composição em descarregamento, para, então,
aguardar uma nova tarefa. Uma vez que uma composição terminou de descarregar em
uma determinada estação, ela fica livre para uma nova tarefa.
• Trem vazio: uma vez que o trem vazio chega a um ponto de transbordo, libera a
composição para o carregamento (note que um trem vazio só vai a um ponto se houver
demanda para tal). Os passos seguintes são semelhantes ao do trem cheio.

Uma ordem de transporte é uma solicitação de trem carregado entre uma estação de
origem (que pode ou não ser a atual) e uma estação de destino. As ordens de
transportes estão distribuídas como mostrado na Tabela 8.12.

Tabela 8.12 – Exercício 18


Ordem de transporte Produto Rota
1 1 da estação 3 à estação 10
2 2 da estação 7 à estação 10
3 2 da estação 4 à estação 10
4 1 da estação 8 à estação 4
5 2 da estação 5 à estação 1
6 1 da estação 6 à estação 1

O processo de surgimento de uma nova ordem de transportes é uniformemente


distribuído; ou seja, dado que um trem vazio (locomotiva e composição de vagões)
está livre, a próxima ordem a ser executada é um número inteiro uniformemente
distribuído no intervalo de 1 a 6, representando a próxima ordem de transportes a
ser executada. Por hipótese, assume-se que toda ordem de transporte tem carga
suficiente para encher completamente a composição.
Cada vagão é descarregado ou carregado em 30 minutos em média, segundo uma
distribuição normal com desvio-padrão de seis minutos.
a) Construa um fluxograma do processo de carga e descarga em um ponto de transbordo;
b) Dado que a RPU tem seis locomotivas, seis composições do tipo 1 e seis composições
do tipo 2, estime a carga total em tonelada transportada em cada rota em um ano;
c) A partir da resposta do item anterior, calcule a eficiência do sistema ferroviário. A
eficiência do sistema pode ser medida em termos de TKB. Um TKB é um acrônimo para
tonelada × quilômetro bruto e pode ser calculado da seguinte maneira: se uma
composição composta por uma locomotiva e 10 vagões de 80 t percorreu um trecho de
100 km, então a tonelada × quilômetro bruto será de:
TKB = (peso em t) × (quilômetros percorridos) = (10 × 80 + 1 × 300) × (100)
TKB = 110.000 tonelada × quilômetro bruto
O TKB total é a soma das medidas de TKB de cada trecho.
d) Considere que as demandas mínimas anuais a serem atendidas em cada rota são dadas
pela Tabela 8.13. Determine o número de composições e locomotivas necessários para
atender às demandas de modo a minimizar o TKB total.

Tabela 8.13 – Exercício 18


Ordem de transporte Produto Rota Demanda mínima anual (t)
1 1 da estação 3 à estação 10 300.000
2 2 da estação 7 à estação 10 250.000
3 2 da estação 4 à estação 10 410.000
4 1 da estação 8 à estação 4 280.000
5 2 da estação 5 à estação 1 150.000
6 1 da estação 6 à estação 1 200.000
Simulação de tanques de produtos líquidos
19. Um problema comum na Simulação de Eventos Discretos é a simulação de sistemas com
fluxos contínuos de produtos. A Biotricks, empresa do Grupo Embromar, está projetando
uma refinaria que pode produzir biodiesel a partir de qualquer um de cinco insumos
diferentes (Fig. 8.5): óleo bruto, ácido, soda cáustica, catalisador e metanol. O óleo bruto
pode ser: óleo de dendê, óleo de mamona, óleo de soja, óleo de algodão ou óleo de sebo
animal. Além do biodiesel, o processo produz alguns subprodutos: goma, glicerina e
ácidos graxos. Nesse projeto, a Biotricks deseja dimensionar sua necessidade de tanques
de recepção de óleos brutos utilizando-se da Simulação de Eventos Discretos.
A refinaria em projeto prevê apenas a utilização de dois tipos de óleos brutos: óleo
de soja e óleo de algodão, que não podem ser misturados num mesmo tanque.
Entretanto, os tanques não são dedicados, no sentido de que, uma vez esvaziado, o
tanque pode ser utilizado para óleo de soja ou de algodão. Cada tipo de óleo chega
em caminhões de 15 m3. Inicialmente, são previstas duas baias de recepção que se
conectam a cada um dos tanques de recepção. O tempo de descarregamento do
caminhão é estimado em 20 minutos. Como a refinaria está em fase de projeto,
admite para este tempo (e para qualquer tempo ou taxa horária de operação) que as
distribuições são triangulares, sendo o valor máximo 30% acima da média, e o valor
mínimo 30% abaixo da média.
Os tanques de recepção dos produtos têm capacidade para 150 m3 (ou,
aproximadamente, 10 caminhões). Os tanques de produtos líquidos operam em
função do lastro e capacidade máxima de segurança. Assim, um tanque é
considerado vazio quando o volume disponível de produto é inferior a 10% da sua
capacidade (ou do seu lastro). Da mesma forma, o tanque é considerado cheio
quando seu volume disponível é superior a 90% da sua capacidade.
Quando o tanque de recepção é considerado cheio, ele passa por um processo de
inspeção que dura 24 horas, e, a seguir, é liberado para a produção. O processo de
produção envolve as etapas de pré-tratamento, transesterificação e purificação.
Simplificadamente neste projeto, essas etapas podem ser consideradas como uma
atividade de “produção” que utiliza apenas um tanque cheio por vez e o esvazia à
taxa de 10 m3/h. A etapa de produção é concluída com o esvaziamento do tanque,
que, assim, fica liberado para a recepção. Por sua vez, a atividade de produção
pode, se existir, iniciar o esvaziamento de um novo tanque cheio.
O projeto assume que os tempos entre chegadas sucessivas de caminhões são
exponencialmente distribuídos e que 30% dos caminhões chegarão com óleo de
algodão. Considere que a refinaria deve produzir 50.000 m3/ano de biodiesel e que
não há perda de massa em sua produção.
Deseja-se determinar quantos tanques de recepção devem ser construídos para a
refinaria de modo a se garantir a produção anual de biodiesel; assim, a Biotricks
solicitou a sua equipe de projeto a elaboração de uma tabela que relacione o número
de tanques de recepção ao número médio de caminhões em fila de espera para
descarregar o produto e a taxa de ocupação do sistema de produção.
Figura 8.5 – Exercício 19.

Simulação de redes de computadores19


20. O departamento de informática da Embromar Ltda. está preocupado com a carga de
trabalho atribuída aos roteadores utilizados na comunicação entre dois locais da empresa.
Cada local possui um roteador conectado a quatro computadores, que enviam mensagens
segundo um processo de Poisson com taxa de duas mensagens/segundo. O roteador de
cada local envia mensagens para o outro roteador à taxa de 20 mensagens/segundo, por
meio de um cabo bidirecional.
Ambos os roteadores possuem bancos de memória para armazenagem das mensagens
ainda não enviadas, denominados “buffers”. Caso o buffer do roteador esteja cheio
no momento da chegada de uma nova mensagem, a mensagem é perdida. As
conexões que ligam cada computador ao roteador do seu local possuem capacidade
ilimitada.
A Embromar deseja expandir, em cada local, o número de computadores de 4 para
6. A empresa deseja que você analise o desempenho do sistema – atual e futuro –
identificando qual deve ser o tamanho mínimo do buffer em cada roteador (valores
possíveis: de 0 a 200 mensagens), de modo que não ocorra perda de mensagens. O
departamento de informática também sugere que sejam analisadas as seguintes
medidas de desempenho:
a) O atraso no envio de mensagens ocasionado pelo cabo;
b) A perda absoluta e percentual de mensagens em cada cenário;
c) A taxa de utilização do cabo de transmissão entre os roteadores.
Figura 8.6 – Exercício 20.
Leitura Complementar

Caso real de um projeto de simulação


Esta seção trata de um estudo de simulação realizado em uma fábrica de processamento
de bobinas metálicas (CHWIF et al., 2008). O objetivo do projeto era avaliar o impacto
logístico na expedição dessa indústria frente aos futuros aumentos de volumes.
Embora este projeto tenha detalhes que não foram revelados aqui, por simples motivo de
restrições de espaço, acreditamos que tanto o iniciante em projetos quanto os mais
experientes podem se beneficiar desta descrição.
Como primeira etapa, segundo a metodologia de simulação, foram estabelecidos os
objetivos e o escopo do projeto, descritos a seguir:
• Objetivo: dimensionar o sistema de expedição de materiais de uma fábrica (envolvendo
diversos recursos, como balanças, docas de carregamento e pontos de enlonamento) para
suportar a produção até o ano 2020. Isso representa um crescimento do fluxo de produtos
em 235%, segundo estimativas da própria empresa. Um primeiro cálculo foi realizado,
chegando a uma ou duas balanças, três docas de carregamento e dois pontos de
enlonamento, mas isso deverá ser confirmado por meio de simulação discreta.
• Escopo: entrada dos caminhões de expedição (há basicamente três tipos) na fábrica,
pesagem sem carga na balança, carregamento, enlonamento e pesagem na saída
(carregado). O sistema de expedição atual possui uma balança, uma doca de
carregamento e uma doca para enlonamento.
O passo seguinte foi a modelagem conceitual, discutida com um time de projeto formado
por um consultor externo de simulação, dois engenheiros da empresa e um supervisor
logístico. Essa discussão demorou cerca de cinco horas. Basicamente, o modelo deveria
levar em conta o fluxo de caminhões de expedição, o fluxo de caminhões de recebimento e o
fluxo de caminhões administrativos. Apesar de o foco do estudo ser a expedição, não se
pode desprezar o fluxo dos caminhões de recebimento e o fluxo de caminhões
administrativos, pois eles compartilham os mesmos recursos. No entanto, eles terão um
tempo global de permanência, em vez de terem todo o seu processo logístico modelado
detalhadamente. Dessa maneira, o processo principal de expedição compreende as seguintes
etapas:
1. Entrada dos caminhões de expedição nos limites da fábrica;
2. Entrada na balança e pesagem;
3. Tempo de viagem até a doca de carregamento;
4. Processo de carregamento na doca;
5. Processo de enlonamento;
6. Tempo de retorno do ponto de enlonamento até a balança;
7. Pesagem final.

A Figura 8.7 representa o ACD do modelo conceitual elaborado.


Figura 8.7 – ACD do modelo conceitual.

Como outras variáveis que afetam diretamente o modelo, podemos citar: janela de
recebimento, fator sazonalidade (que concentra o fluxo no final do mês) e fator de
crescimento do fluxo, que chegará a 235% em 2020. A modelagem também considera um
limite de caminhões dentro da expedição por motivos de segurança. Assim, caso o limite
seja excedido, os caminhões devem esperar fora dos limites da fábrica. Outro fator
importante é o perfil de probabilidade de chuva, pois, quando chove, o processo de
enlonamento é realizado na própria doca de carregamento, e não no ponto de enlonamento.
O próximo passo foi a modelagem dos dados. De fato, como mencionado por Pidd
(1996), é o modelo que estabelece os dados a serem coletados, e não o contrário. Assim,
esta fase se iniciou somente após o esboço do modelo conceitual estar pronto. A fase de
coleta durou aproximadamente dois meses, e os seguintes dados foram coletados: fluxo de
caminhões de expedição e recebimento, tempo da pesagem (caminhões cheios e vazios),
tempo total de permanência para os caminhões de recebimento, tempos de viagem (da
balança até a doca de carregamento e o retorno), tempo de carregamento e tempo de
enlonamento. A partir da massa de dados, descobriu-se que o padrão de chegadas é
praticamente constante (não existe pico ao longo do dia), e, então, esta foi modelada
segundo a distribuição exponencial. Um software de modelagem de dados – no caso, o
Stat::Fit – foi utilizado para se obterem distribuições matemáticas dos demais dados. A
Figura 8.8 mostra alguns dos dados processados no Stat::Fit.
Figura 8.8 – Tempos de processos de entrada.

A partir de dados reais, foi obtido o perfil de probabilidade de chuva, hora a hora, para
meses de chuvas intensas (janeiro a março), conforme se vê na Tabela 8.14. Essas
informações foram retiradas de Pezzopane et al. (1995).

Tabela 8.14 – Probabilidades de ocorrência de chuvas ao longo do dia

Intervalo Probabilidade
de 00:00 a 1:00 9,7%
de 1:00 a 2:00 11,0%
de 2:00 a 3:00 9,4%
de 3:00 a 4:00 8,1%
de 4:00 a 5:00 9,0%
de 5:00 a 6:00 9,0%
de 6:00 a 7:00 7,7%
de 7:00 a 8:00 6,8%
de 8:00 a 9:00 6,1%
de 9:00 a 10:00 4,8%
de 10:00 a 11:00 5,5%
de 11:00 ao 12:00 6,8%
de 12:00 a 13:00 8,1%
de 13:00 a 14:00 12,3%
de 14:00 a 15:00 14,5%
de 15:00 a 16:00 16,8%

de 16:00 a 17:00 14,5%

de 17:00 a 18:00 16,8%


de 18:00 a 19:00 18,7%
de 19:00 a 20:00 19,7%
de 20:00 a 21:00 18,1%
de 21:00 a 22:00 15,8%
de 22:00 a 23:00 14,2%
de 23:00 a 24:00 12,3%

Após a coleta de dados, foram discutidas e estabelecidas as principais hipóteses do


modelo:
1. Os recursos de carregamento (homens, empilhadeiras etc.) serão modelados sem
restrições, ou seja, sempre estarão em quantidade suficiente na doca;
2. O tempo de viagem da balança para a doca pode ser considerado igual ao do retorno
(da doca para a balança);
3. O tempo de pesagem não depende do tipo do caminhão, mas do seu estado (cheio ou
vazio);
4. Será considerado um mix típico de caminhões, sendo 22% de caminhões pequenos,
62% de caminhões médios e 16% de caminhões grandes (carretas).

O próximo passo foi a construção do modelo no software de simulação SIMUL8 versão


2007. Como esse modelo não é complexo, foram necessárias oito horas para construí-lo por
completo. A Figura 8.9 ilustra a configuração inicial do modelo, enquanto a Tabela 8.15
mostra os dados de entrada, que podem ser customizados e modificados pelo cliente.
A próxima fase foi a validação do modelo computacional. Foi agendada uma reunião de
validação com o time que durou 3,5 horas. Todas as medidas de desempenho, como tempos
de espera, tamanho de filas e utilizações, foram validadas, exceto uma – a espera para o
carregamento. A simulação mostrava que os caminhões esperavam menos do que a
realidade. Assim, foi necessária uma nova coleta de dados, para verificar as causas desse
problema.
Após uma semana e meia de coleta de dados, foram descobertos dois pontos: (1) a espera
obtida anteriormente não havia sido medida, e sim calculada por diferença; e (2) existe
alguma espera devido a outros fatores além do tempo de carregamento. Esses fatores são
muitos, incluindo: o tempo gasto pelo motorista para fazer outras tarefas, tempo de espera
para a empilhadeira etc. No entanto, como a empilhadeira não era considerada como
restrição, esses tempos de espera adicionais não foram considerados no modelo, e, para os
objetivos do estudo, pode-se considerar o modelo como válido. Assim, o modelo inicial foi
expandido, considerando-se os recursos extras de balanças, docas e pontos de enlonamento.
Figura 8.9 – Representação do modelo no software SIMUL8.

Parâmetro Valor
Tabela 8.15 – Dados de entrada do modelo de simulação
Parâmetro Valor
Fluxo de caminhões na expedição
Número médio de caminhões por hora 1,6
Janela de tempo (horas) 2 23
Fluxo de caminhões no recebimento
Número médio de caminhões por hora 1,7
Janela de tempo (horas) 6 21
Fator de sazonalidade 1,2
Fator de crescimento 1,88
Mix %
Toco (1) 22
Truck (2) 62
Carreta (3) 16
Limite de caminhões 7
Número de balanças 2
Probabilidade de chuva Padrão Torrencial
de 00:00 a 1:00 9,7 50
de 1:00 às 2:00 11 50
de 2:00 às 3:00 9,4 50
de 3:00 às 4:00 8,1 50

de 4:00 às 5:00 9 50
de 5:00 às 6:00 9 50
de 6:00 às 7:00 7,7 50
de 7:00 às 8:00 6,8 50
de 8:00 às 9:00 6,1 50
de 9:00 às 10:00 4,8 50
de 10:00 às 11:00 5,5 50
de 11:00 às 12:00 6,8 50
de 12:00 às 13:00 8,1 100
de 13:00 às 14:00 12,3% 100
de 14:00 às 15:00 14,5% 100
de 15:00 às 16:00 16,8% 100
de 16:00 às 17:00 14,5% 100
de 17:00 às 18:00 16,8% 100
de 18:00 às 19:00 18,7% 100
de 19:00 às 20:00 19,7% 100
de 20:00 às 21:00 18,1% 100
de 21:00 às 22:00 15,8% 100
de 22:00 às 23:00 14,2% 100
de 23:00 às 24:00 12,3% 100

Para a análise dos resultados, foram consideradas as seguintes medidas de desempenho:


• Tempo de permanência no sistema (mínimo, médio e máximo);
• Tamanho mínimo, médio e máximo da fila e tempos de espera para a balança na entrada;
• Tamanho mínimo, médio e máximo da fila e tempos de espera para a balança na saída;
• Tamanho médio e máximo da fila e tempo de espera para a fila de espera fora da fábrica
(quando o limite de caminhões for atingido);
• Tamanho médio e máximo da fila e tempos de espera para as docas;
• Tamanho médio e máximo da fila e tempos de espera para os pontos de enlonamento;
• Utilização das balanças;
• Utilização das docas;
• Utilização dos pontos de enlonamento.

A Figura 8.10 ilustra os principais resultados obtidos, com o correspondente intervalo de


confiança para 20 replicações.
Figura 8.10 – Resultados da simulação.
A primeira análise feita inicialmente foi uma análise de saturação, tentando responder à
questão: “Considerando a configuração atual (uma doca e um ponto de enlonamento), quanto
o sistema suporta de aumento de fluxo?”. De acordo com a simulação, a configuração atual
pode aguentar por três anos; depois disso, o desempenho da expedição se degradará. Em
seguida, a análise foi realizada com o modelo expandido, considerando três docas, dois
pontos de enlonamento e até duas balanças ao todo. Dessa maneira, foram criados diversos
cenários através das combinações das seguintes variáveis: aumento de fluxo, número de
balanças, número de docas, número de pontos de enlonamento, presença ou não de chuva,
perfil de chuva (normal ou pesado) e mix de caminhões. Como o perfil original de chuva
afetou pouco a utilização das docas, decidiu-se adicionar um novo cenário, “chuva pesada”,
que aumenta a probabilidade de chuva.
Os resultados mostraram que, para o fluxo projetado para 2020, são necessárias duas
balanças, três docas de carregamento e dois pontos de enlonamento (exatamente a
configuração inicialmente proposta). Neste caso, o sistema desempenhou bem quando não
ocorreram exceções. A utilização das docas ficou em torno dos 50%, e os tempos de espera,
entre um e 30 minutos. Somente em casos bem particulares (chuva intensa) ou concentrações
de carreta, o sistema satura, mas, em 98% das vezes, ele se encontra bem dimensionado.
O grupo de projeto ficou satisfeito com os resultados, pois a simulação veio a corroborar
suas expectativas. O cliente ainda ficou com o modelo, podendo rodá-lo na versão run-time
do software (SIMUL8 Viewer).
Alguns pontos deste projeto merecem destaque:
• A aplicação da metodologia de simulação nem sempre é linear. Observe que o modelo,
inicialmente, não estava válido, o que exigiu nova coleta de dados;
• A simulação pode ser utilizada em projetos de horizonte de maior prazo como este;
• A simulação, neste caso, serviu para confirmar as expectativas e reforçar o estudo.
Referências bibliográficas
ALBESEDER, Daniel; FÜGGER, Matthias. Small PC-Network simulation – a
comprehensive performance case study. Simulation News Europe. n. 41/42, p. 28-31,
2004.
CHISMAN, James A. Industrial cases in simulation modeling. Belmont: Duxbury Press,
1996.
CHWIF, Leonardo; MEDINA, Afonso C., BARRETTO, Marco R. P., MONTEVECHI, J.
A. Use of discrete event simulation for a long range planning of an expediditon system.
The 7th International Workshop on Modeling & Applied Simulation – MAS 2008,
Italy, p. 63-67, 2008.
DIJK, Nico M. Why queuing never vanishes. European Journal of Operations Research.
v. 99, p. 463-476, 1997.
FRANCO, Daniel L.; MANCINI, Elder; PACÍFICO, João P. dos Santos; BAISE, Mario.
Criação de uma metodologia de planejamento de caixas de supermercado. Trabalho
de Graduação. São Caetano do Sul: Escola de Engenharia Mauá, 2001.
HARRIS, Ford W. How many parts to make a once. Operations Research, v. 38, n. 6, p.
947-950, 1990.
LARSON, Richard C.; ODONI, Amadeo R. Urban operations research. Englewood
Cliffs: Prentice-Hall, 1981.
LARSON, Richard C. Perspectives in queues: social justice and psychology of queueing.
Operations Research, v. 35, n. 6, p. 895-905, 1987.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed. Nova
York: McGraw-Hill, 1991.
MYIASHITA, Ricardo. Desenvolvimento de um ambiente visual e interativo para
modelagem e processamento de simulação a eventos discretos usando a abordagem
DCA – três fases. Tese de Doutorado. Rio de Janeiro: Universidade do Estado do Rio
de Janeiro, 2002.
PEZZOPANE, J. E. M; SENTELHAS, P. C.; ORTOLANI, A. A.; MORAES, A. V. C.
Hourly rainfall pattern for three sites in the state of São Paulo, Brazil: a subsidy to
agricultural practices planning. Sci. Agric. Piracicaba, n. 52, v. 1, p. 70-77, 1995.
PIDD, Michael. Five Simple Principles of Modelling. Proceedings of the Winter
Simulation Conference, p. 721-728, 1996.
SALTZMAN, Robert M.; MEHROTRA, Vijay. A call center uses simulation to drive
strategic change. Interfaces, n. 3, v. 31, p. 87-101, 2001.
TAUBÖCK, Shabnam M. C14 Supply chain management. Simulation News Europe, 2001.
Disponível em: <http://www.argesim.org>. Acesso em: 10 de agosto de 2005.
WHITT, Ward. Deciding which queue to join: some counterexamples. Operations
Research, v. 34, n. 1, p. 55-62, 1986.
WINSTON, Wayne L. Operations research: applications and algorithms. Belmont:
Duxbury Press, 1994.
Capítulo 9

Tópicos adicionais em simulação


9.1. Introdução
Como discutido no Capítulo 1, existem outras formas de simulação além da Simulação de
Eventos Discretos. Neste capítulo, são apresentadas a Simulação de Monte Carlo e a
Simulação de Sistemas Dinâmicos. Enquanto a Simulação de Monte Carlo representa um
sistema em determinado instante do tempo, a Simulação de Sistemas Dinâmicos considera o
comportamento do sistema ao longo do tempo e, principalmente, as relações de causa e
efeito entre os seus elementos. Ambas as técnicas de simulação são de larga aplicabilidade,
como será visto nas próximas seções. Na seção 9.6 apresentaremos as novas tendências em
simulação, que inclui, por exemplo, a Simulação de Agentes.
9.2. Simulação de Monte Carlo
Na Simulação de Monte Carlo, também conhecida como simulação estática, o tempo não
é o parâmetro mais importante, como no caso da Simulação de Eventos Discretos. A seguir,
serão apresentados dois exemplos que ilustram a sua aplicação.

Exemplo 9.1: O problema do jornaleiro


Considere o problema clássico da gestão de estoques, conhecido como “problema do
jornaleiro”. Nele, um vendedor de jornais deve decidir quantos jornais comprará do seu
fornecedor para atender à clientela de domingo. Se comprar mais jornais do que o número
verificado de clientes, a sobra de jornal será vendida para um serviço de reciclagem de
papel por R$ 1,00 a unidade. Por outro lado, se o número de clientes for maior do que o
número de jornais disponíveis, o jornaleiro deixa de ganhar o valor da venda, R$ 3,00 por
cliente não atendido. Os jornais são comprados em lotes de 50 jornais ao preço unitário de
R$ 2,50 por jornal. A partir da sua experiência vendendo jornais, o jornaleiro sabe que a
distribuição do número de clientes que aparecem em um domingo é discreta e pode ser
representada pela Tabela 9.1.

Tabela 9.1 – Função densidade de probabilidade para o número de jornais vendidos no domingo
Número de clientes Probabilidade
100 0,10
150 0,25
200 0,35
250 0,20
300 0,10

Esse problema pode ser resolvido com relativa facilidade pela Simulação de Monte
Carlo. A ideia da Simulação de Monte Carlo é simples: suponha que se construa uma roleta
(daquelas de cassino) dividida em cinco faixas, uma para cada nível de demanda: “100”,
“150”, “200”, “250” e “300”, com áreas proporcionais às suas respectivas probabilidades
de ocorrência (Figura 9.1).
Figura 9.1 – Roleta representando as demandas do domingo.

De posse da roleta, um domingo pode ser facilmente simulado: roda-se a roleta e


determina-se qual o número de clientes que aparecerá para comprar jornais. Por exemplo,
considere que o jornaleiro realizou um pedido de 200 jornais para atender à demanda de
domingo. Qual o lucro médio obtido nesse caso? De posse da roleta, simulamos alguns
domingos. Na Tabela 9.2, existem as demandas ocorridas e o lucro obtido para 10
“domingos”, ou, como denominamos no Capítulo 6, para 10 “replicações”.

Tabela 9.2 – Demanda e lucro obtidos a cada domingo para um pedido de 200 jornais

Número Demanda obtida pela roleta Vendas (B) Custo (C) Sobra (D) Lucro
Dia =(A- (=B+D-
aleatório (A) =A*R$ 3,00 =200*R$ 2,50 200)*R$ 1,00 C)

R$
1 0,68 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
2 0,58 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
3 0,41 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
-R$
4 0,18 100 R$ 300,00 R$ 500,00 R$ 100,00
100,00
R$
5 0,24 300 R$ 600,00 R$ 500,00 R$ 0,00
100,00
6 0,12 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
7 0,66 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
8 0,62 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
9 0,54 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
-R$
10 0,88 100 R$ 300,00 R$ 500,00 R$ 100,00
100,00

R$
Lucro médio: 30,00

R$
Desvio-padrão:
82,33

Pelo resultado das primeiras 10 replicações, nosso pobre jornaleiro vai continuar pobre.
Evidentemente, não devemos tirar conclusões precipitadas a partir de um número tão baixo
de replicações, afinal, o sistema ainda está no seu regime transitório (Cap. 6). A roleta
precisa ser utilizada mais vezes, para se simular um número maior de domingos e se testar o
modelo com outros tamanhos de lotes adquiridos pelo colega vendedor de jornais.
Obviamente, construir roletas não é uma tarefa fácil, mas, utilizando as técnicas de
geração de variáveis aleatórias apresentadas no Apêndice III, pode-se obter os mesmos
resultados através de uma planilha eletrônica. A Tabela 9.3 sintetiza 50 replicações
realizadas para um lote fixo de 200 jornais.1

Sobra (D) Lucro


Número Demanda obtida pela roleta Vendas (B) Custo (C)
Dia =(A- (=B+D-
aleatório (A) =A*R$ 3,00 =200*R$ 2,50
200)*R$ 1,00 C)
Tabela 9.3 – Problema do jornaleiro: 50 replicações para um lote de 200 jornais
Sobra (D) Lucro
Número Demanda obtida pela roleta Vendas (B) Custo (C) =(A- (=B+D-
Dia
aleatório (A) =A*R$ 3,00 =200*R$ 2,50 200)*R$ 1,00 C)

R$
1 0,68 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
2 0,58 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
3 0,41 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
4 0,18 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
5 0,24 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
6 0,12 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
7 0,66 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
8 0,62 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
9 0,54 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
10 0,88 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
11 0,74 250 R$ 600,00 R$ 500,00 R$ 0,00 100,00

R$
12 0,79 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
13 0,48 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
14 0,96 300 R$ 600,00 R$ 500,00 R$ 0,00
100,00
15 0,29 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
16 0,31 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
17 0,96 300 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
18 0,79 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
19 0,25 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
20 0,83 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
21 0,75 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
22 0,15 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
23 0,19 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
24 0,58 200 R$ 600,00 R$ 500,00 R$ 0,00 100,00

R$
25 0,41 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
-R$
26 0,04 100 R$ 300,00 R$ 500,00 R$ 100,00
100,00
R$
27 0,39 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
28 0,76 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
29 0,88 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
30 0,17 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
31 0,44 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
32 0,66 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
33 0,39 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
34 0,53 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
35 0,95 300 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
36 0,91 300 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
37 0,69 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
38 0,19 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
39 0,37 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
-R$
40 0,00 100 R$ 300,00 R$ 500,00 R$ 100,00
100,00
R$
41 0,54 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
42 0,62 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
R$
43 0,88 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
44 0,19 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
45 0,86 250 R$ 600,00 R$ 500,00 R$ 0,00 100,00

R$
46 0,68 200 R$ 600,00 R$ 500,00 R$ 0,00
100,00
47 0,19 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
48 0,19 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00
R$
49 0,72 250 R$ 600,00 R$ 500,00 R$ 0,00
100,00
50 0,22 150 R$ 450,00 R$ 500,00 R$ 50,00 R$ 0,00

R$
Lucro médio:
64,00
R$
Desvio-padrão:
56,28

A pergunta original continua esperando a sua resposta: “Qual o tamanho do lote de


jornais que dará o maior lucro médio?”. Para respondê-la, deve-se simular o modelo para
cada tamanho de lote possível: 100, 150, 200, 250 e 300. A Tabela 9.4 apresenta os
resultados obtidos para cada tamanho de lote, a partir de simulações com 10.000
replicações. Pela Tabela 9.4, o lucro médio mais alto ocorre quando o jornaleiro solicita
lotes de 150 jornais.

Tabela 9.4 – Lucro médio obtido em função do número de jornais adquiridos


Lote Lucro médio obtido Precisão do intervalo de confiança
100 R$ 50,00 R$ 0,00
150 R$ 66,81 R$ 0,67
200 R$ 56,44 R$ 1,49
250 R$ 7,62 R$ 1,50
300 -R$ 51,30 R$ 2,50

A última coluna da Tabela 9.4 apresenta os resultados dos intervalos de confiança2


calculados com 95% de confiança (Cap. 6). Assim, por exemplo, o lucro médio para lotes
de 150 jornais está no intervalo entre R$ 66,14 e R$ 67,48, com confiança de 95%.
Obviamente, um número maior de replicações diminui o intervalo, aumentando a precisão
do lucro médio.
Com mais “roletas” ou geradores de números aleatórios, pode-se simular sistemas mais
complexos. A Simulação de Monte Carlo é hoje uma das ferramentas mais populares como
auxílio à tomada de decisão, devido à sua facilidade de implementação em planilhas
eletrônicas. O próximo exemplo aplica a Simulação de Monte Carlo para um problema do
mercado financeiro e utiliza recursos disponíveis em planilhas eletrônicas.

Exemplo 9.2: O problema do fazendeiro


Um fazendeiro deve decidir quanto produzirá de determinado produto na próxima safra.
Ele tem três possibilidades de produção: 500 t, 750 t ou 1.000 t. Seu principal problema é o
risco quanto ao preço futuro do produto. Historicamente, o preço da unidade de produto está
correlacionado com a produção total dos fazendeiros da região, de modo que, se todos
produzem mais, a oferta aumenta e o preço cai. Pode-se assumir, contudo, que o
comportamento do fazendeiro quanto ao nível de produção é comparável ao dos outros
fazendeiros da região, de modo que a seguinte expressão correlaciona a quantidade
produzida, Q, ao preço de referência do produto, P, por tonelada:

(9.1)

Contudo, o preço real apresenta uma oscilação em relação ao preço de referência, de


modo que o preço real é normalmente distribuído com média P e coeficiente de variação de
20%; ou seja, o desvio-padrão equivale a 20% da média P. Para produzir a safra, o
fazendeiro tem um custo variável de R$ 1.000,00/t e um custo fixo de R$ 600.000,00 a cada
safra.
No problema em questão, o fazendeiro deseja maximizar o lucro esperado pela
comercialização da safra. Dado um preço futuro P’, a expressão do lucro total esperado L é:

(9.2)

Na expressão 9.2, L é a função objetivo do fazendeiro, e Q é a variável de decisão.


Utilizando ferramentas computacionais disponíveis, é possível simular diretamente a
expressão anterior sem a necessidade da construção das tabelas do exemplo do jornaleiro.
Alguns softwares disponíveis são: @Risk, Crystal Ball, Insight, Simtools,3 Gnumeric etc.
Geralmente, esses softwares utilizam planilhas eletrônicas como base. Para este exemplo,
utilizaremos o Gnumeric,4 uma planilha eletrônica de código aberto que pode ser baixada e
utilizada gratuitamente. Para usuários do Excel ou OpenOffice, a planilha tem as mesmas
funções (e com a mesma nomenclatura).
Basicamente, a montagem do modelo se dá em três etapas:5
1. Montagem da equação do preço futuro. Na célula D8, foi colocada a expressão:
“=12500-350*SQRT(D5)”; na célula D5, foram colocados os níveis de produção (500,
750 ou 1.000); na célula D9, foi colocada a expressão do preço futuro que é
normalmente distribuído: “=NORMINV(RAND(), D8,0.2*D8)”.
2. Montagem da equação do lucro. Na célula D12, foi colocada a expressão do lucro
esperado: “=D9*D5-1000*D5-600000”.
3. Simulação. No Gnumeric, entre na opção “Simulação” do menu “Ferramentas”. Na aba
“Variáveis”, são definidas as células das variáveis de decisão e da função objetivo.
Para o Gnumeric, “Variáveis de entrada” são as entradas; no caso, o preço futuro
colocado na célula D9. “Variáveis de saída” são as saídas; no caso, o lucro esperado
colocado na célula D12. Na aba superior “Opções”, é possível definir o número de
iterações da simulação, que, neste exemplo, utilizamos 10.000.

Tabela 9.5 – Lucro médio obtido pelo fazendeiro em função da quantidade produzida
Quantidade produzida (t) Lucro médio obtido Precisão do intervalo de confiança (95%)
500 R$ 1.235.507,19 R$ 7.762,80
750 R$ 836.141,43 R$ 7.237,02
1.000 -R$ 165.022,96 R$ 4.702,78

O Gnumeric apresenta os resultados completos da simulação, inclusive com os intervalos


de confiança já calculados. A Tabela 9.5 apresenta o lucro médio obtido pelo fazendeiro
para cada nível de produção e os respectivos intervalos de confiança. Notadamente, o
fazendeiro terá maior lucro se produzir ao nível de 500 t na próxima safra, pois seu lucro
médio será R$ 1.235.507,19 ± 7.762,80.
9.3. Introdução à Simulação de Sistemas Dinâmicos
A Simulação de Sistemas Dinâmicos é útil para a análise de sistemas caracterizados por
relações de causa e efeito entre seus componentes. Os exemplos a seguir ilustram sua
aplicação.

Exemplo 9.3: Uma avenida bem congestionada


Considere, por exemplo, uma avenida congestionada de uma cidade e o desejo da
prefeitura de construir uma nova avenida paralela à atual. Para conseguir os recursos
necessários, a prefeitura pretende vender “certificados de construção”, de modo que os
proprietários dos terrenos na região e, principalmente, no entorno da nova avenida possam
construir edificações com até 25 andares.
Figura 9.2 – Via simples congestionada do exemplo.

Passado algum tempo, a prefeitura inaugura a nova avenida, com discurso, foguetório e
bandinha de música. Passam-se mais alguns meses, e o trânsito melhora tanto que a
reeleição do prefeito é iminente.
Figura 9.3 – Depois das obras, não existem mais congestionamentos, e florescem investimentos imobiliários no novo
“Eldorado”.

Passam-se mais alguns meses e... as duas avenidas estão completamente congestionadas!

Figura 9.4 – Da via simples congestionada até a via dupla congestionada.


O que ocorreu?
Incentivados por uma melhor oferta de transportes, causada pela nova avenida, e com um
aumento explosivo na oferta de escritórios comerciais construídos por incentivo da
prefeitura – lembre-se dos certificados de construção utilizados para financiar a nova
avenida –, boa parte da população foi em busca do novo eldorado urbano: avenida larga,
imóveis novos e mais empregos, em decorrência dos novos escritórios.
De fato, faltava oferta de transportes. Num primeiro momento, a nova avenida aumentou
essa oferta e eliminou o congestionamento de veículos. Contudo, para viabilizar
economicamente a obra, a prefeitura incentivou a construção de novos edifícios comerciais.
Surgiu, assim, uma oferta adicional de empregos prontamente assimilada pela população.
Esses novos trabalhadores, muitos dos quais ex-moradores da região, agora precisam de
transporte para ir ao novo emprego. Com o aumento dos negócios, em pouco tempo a nova
avenida deixou de ser suficiente para atender à nova demanda, ocasionando uma situação
caótica muito pior do que a anterior.
Seria possível simular um sistema como esse de modo a prever o comportamento da
cidade antes de se realizar o investimento na nova avenida?
Em sistemas complexos em que os mecanismos de realimentação, ou feedback, são
elementos fundamentais para o seu funcionamento, como os sistemas sociais do exemplo da
cidade, existe uma metodologia para entendimento e modelagem de algumas classes de
problemas complexos, conhecida como dinâmica de sistemas (do inglês: System
Dynamics).
Originalmente, a dinâmica de sistemas foi criada por Forrester (1961) para lidar com
problemas industriais,6 mas a sua natureza geral permitiu estendê-la para várias classes de
sistemas (industriais, sociais, econômicos etc.).
São diversas as aplicações dos modelos de sistemas dinâmicos: na economia, no estudo
da dinâmica das populações animais, no comportamento humano, no planejamento urbano,
nos investimentos públicos, nos negócios etc. Uma referência interessante, com muitos
exemplos, é o livro Business Dynamics (STERMAN, 2000), que aplica a técnica em
diversos modelos da área de gestão e negócios. A filosofia que permeia a dinâmica de
sistemas é chamada de System Thinking, e uma das suas melhores referências é o livro A
quinta disciplina (SENGE, 1990), obra fundamental para quem deseja se aprofundar na
área.
Diferentemente da Simulação de Eventos Discretos, em que o foco são as atividades ou
eventos, a modelagem de um sistema dinâmico foca as relações de causa e efeito entre as
variáveis ou elementos do sistema simulado. Além disso, um modelo de simulação discreta
dificilmente possui retroalimentações, que foram a base dos modelos de sistemas
dinâmicos.
9.4. Sistemas dinâmicos: diagrama de laços causais
A dinâmica dos sistemas, basicamente, trabalha com relações de causa e efeito,
acumulação de fluxos e atrasos de tempo. Esquematicamente, um sistema pode ser
representado pelo seu diagrama de laços causais.

Exemplo 9.4: Caderneta de poupança


Um investidor deseja simular o comportamento da sua caderneta de poupança. Neste
caso, têm-se duas variáveis principais: o dinheiro disponível na poupança, D, e ganhos
mensais, G. Quanto mais dinheiro ele investe na poupança, mais ele aumenta os ganhos
mensais. Assim, neste sistema, o dinheiro investido, D, causa o efeito do aumento dos
ganhos mensais, G, e, de modo similar, um aumento dos ganhos mensais, G, causa o efeito
de aumento do dinheiro investido, D. A Figura 9.5 representa o diagrama de laços causais
do investidor.
Figura 9.5 – Diagrama de laços causais para o exemplo da poupança.

No diagrama, o sinal positivo no arco indica que o aumento do dinheiro investido


aumenta o ganho da poupança. Como, por sua vez, o aumento do ganho da poupança causa
um aumento do dinheiro investido, o arco inferior também tem um sinal positivo. O arco
menor e mais interno, com o sinal de “+”, identifica a existência de um ciclo fechado entre
dinheiro investido e ganho na poupança, denominado laço.
Um diagrama de laços causais é uma representação de arcos e nós em que os nós
simbolizam as variáveis do sistema e os arcos simbolizam as relações existentes entre as
variáveis. Um arco entre duas variáveis X e Y pode ser positivo ou negativo.
Simplificadamente:
• Se o arco for positivo, o crescimento da variável X causa o crescimento da variável Y (ou
a diminuição de X causa a diminuição de Y);
• Se o arco for negativo, o crescimento de X causa uma diminuição de Y (ou a diminuição de
X causa o crescimento de Y).

Um laço (ou “loop”), que é um conjunto de arcos que formam um caminho fechado,
também pode possuir sinal. O efeito de um loop positivo (denominado também de laço de
reforço), como o mostrado na Figura 9.5, é o de gerar um crescimento ilimitado: no caso da
poupança, quanto mais dinheiro depositado, maiores serão os ganhos mensais, o que
aumentará a quantidade de dinheiro acumulado. Como não foi considerada a possibilidade
de retiradas ou saques de dinheiro, o investidor terá um ganho ilimitado no tempo.
Consideremos agora, que o investidor, percebendo um aumento dos recursos disponíveis
na poupança, resolve retirar parte do valor para comprar bens, como carro, liquidificador,
livros de simulação etc. Neste caso, “R” é a retirada que o investidor realiza. Quanto maior
o dinheiro disponível, maior será a retirada, e quanto maior for a retirada, menor será o
dinheiro disponível. A Figura 9.6 representa o diagrama da nova situação do investidor.
Note a existência de um loop negativo, ou laço de balanço, que faz com que o sistema tente
atingir uma situação de equilíbrio.
Figura 9.6 – Diagrama de laços causais para o exemplo da poupança.

Para o problema da avenida congestionada, de maneira simplificada, uma parte do


diagrama de laços causais seria análogo ao da Figura 9.5. No caso, as variáveis de
interesse são: “O”, que é o investimento de obras”; “P”, a população que circula na região;
e “T”, o trânsito na avenida. Assim, um aumento nos investimentos em obras causa uma
diminuição no trânsito da região. Por sua vez, uma diminuição no trânsito causa um aumento
na população que circula na região, o que causa um aumento no trânsito. Com o crescimento
do trânsito, naturalmente, existirá um aumento nos congestionamentos e a necessidade de
mais investimentos em obras. Neste caso, temos um loop negativo, ou laço de balanço, que
faz com que o sistema tente atingir um equilíbrio. Assim, poderíamos ilustrar o
comportamento através da Figura 9.7.
Figura 9.7 – Diagrama de laços causais do exemplo da avenida congestionada.

Exemplo 9.5: Investimentos em metrô


Quando uma cidade investe na construção de um nova linha de metrô, espera-se uma
redução do número de automóveis nas ruas, um aumento do número de usuários do metrô e,
consequentemente, um aumento da receita do sistema metroviário. A disponibilidade de
mais receita viabiliza a construção de novas linhas de metrô. Contudo, o aumento de
usuários circulando pelas linhas aumenta a lotação dos vagões, e vagões mais cheios
significa desconforto para os passageiros e redução de usuários do metrô. A Figura 9.8
representa o diagrama de laços causais do problema. Pela figura, por exemplo, o loop
“usuários-automóveis-trânsito-usuários” representa as relações de causa e efeito entre as
variáveis. Note que um aumento de usuários do metrô causa uma redução do número de
automóveis em circulação (sinal negativo no arco que liga “usuários” a “automóveis”). O
aumento do número de automóveis aumenta o trânsito (sinal positivo no arco que liga
“automóveis” a “trânsito”). Por fim, o aumento do trânsito causa um aumento no número de
usuários do metrô, pois as pessoas trocam os automóveis pelo metrô (sinal positivo no arco
que liga “trânsito” a “usuários”).
Um erro comum seria criar um arco entre “automóveis em circulação” e “lotação do
metrô”, pois, afinal, “mais automóveis em circulação diminuem a lotação do metrô”. Esta,
contudo, não é uma relação de causa e efeito direta, pois a lotação não é afetada pelos
automóveis, mas sim por aqueles que compõem a lotação: usuários e trens disponíveis.
Figura 9.8 – Diagrama de laços causais para o exemplo do metrô.
9.5. Sistemas dinâmicos: construção do modelo
A construção de um modelo de sistemas dinâmicos se dá, essencialmente, a partir das
seguintes etapas:
• Criação de um diagrama de laços causais;
• Criação de um diagrama de estoque e fluxo;
• Definição das equações, dos parâmetros e dos valores iniciais que regem o sistema.

A primeira etapa foi apresentada na seção anterior. A segunda etapa é a transformação


dos laços causais em um diagrama de estoque e fluxo. Neste diagrama, as variáveis do
diagrama de laços causais se tornam variáveis auxiliares, estoques ou fluxos. De fato, todo
modelo de simulação dinâmica representa situações através de estoques e fluxos. Vamos
exemplificar este processo de conversão no exemplo a seguir.

Exemplo 9.6: Analogia da caixa d’água


Figura 9.9 – Analogia da caixa d’água.

A caixa d’água da Figura 9.9 pode ser representada por um diagrama de estoque e fluxo
como o apresentado.
As válvulas de entrada e saída são consideradas “fluxos”, representados pelos símbolos
semelhantes a ampulhetas no diagrama de estoque e fluxo; a caixa d’água, por sua vez, é um
estoque, representado por um retângulo. Assim, se o fluxo de entrada de água (T1) for maior
do que o fluxo de saída (T1>T2), o nível do estoque (água) aumentará ao longo do tempo; se
o fluxo de saída for maior do que o de entrada (T2>T1), o nível de estoque diminuirá, e, se
os fluxos forem iguais (T1 = T2), o nível de água permanecerá o mesmo. A “nuvem” no
diagrama estoque e fluxo indica que a fonte de água da entrada é infinita e que a saída pode
absorver qualquer vazão de água.
Note que esta modelagem é tão abrangente que o diagrama da Figura 9.9 poderia modelar
uma situação completamente diferente, como a dinâmica da população de morcegos de uma
região: o estoque seria a população de morcegos, T1 representaria a taxa de nascimento, e
T2 a taxa de morte, como ilustra a Figura 9.10.

Figura 9.10 – Dinâmica de crescimento e diminuição da população de morcegos.

De posse dos conceitos anteriores, o diagrama de laços do exemplo da poupança pode


ser convertido para um de estoque e fluxo: a variável “Dinheiro” é um estoque, pois
representa o dinheiro acumulado na poupança; a variável “Ganhos” é um fluxo, pois
representa o aporte mensal de dinheiro na poupança, ou seja, o fluxo monetário. Esse fluxo,
por sua vez, depende de uma variável externa ao modelo, a “taxa de juros”. Assim, o
diagrama de estoque e fluxo seria o mostrado na Figura 9.11.

Figura 9.11 – Diagrama de estoque e fluxo para o exemplo do poupador.

A partir de um diagrama de estoque e fluxo, pode-se definir as equações que regem o


sistema, bem como os parâmetros e os valores iniciais das variáveis. No exemplo da
poupança o sistema é regido por apenas uma equação:

Fluxo monetário = poupança × taxa de juros (9.3)

Essa equação pode ser traduzida na seguinte equação de diferencial:

(9.4)
Ou seja, o dinheiro que está na poupança no instante t + ∆t será o que havia no instante
anterior t, multiplicado pela taxa de juros no período infinitesimal ∆t. Ou, de um modo
prático, ∆t é o “passo” de avanço do tempo, necessário para toda Simulação Contínua. O
relógio de simulação do modelo da poupança (e de qualquer modelo de sistema dinâmico)
sempre avançará de ∆t em ∆t unidades de tempo. No exemplo, o leitor deve perceber
facilmente que o usual no sistema financeiro é se considerar ∆t igual a um mês (para uma
poupança com rendimento de 1% ao mês, por exemplo, a taxa de juros seria igual a 0,01).
Finalmente, basta definir a quantidade de dinheiro disponível inicialmente na poupança
(p. ex., R$ 1.000,00), para poder implementar o modelo de estoque e fluxo em um simulador
de sistemas dinâmicos. Um simulador de uso simples é o Vensim7 (da Ventana Systems),
que é gratuito para finalidades acadêmicas.
A Figura 9.12 mostra uma tela do software Vensim com o modelo da poupança e alguns
resultados obtidos após a sua execução. Note que simulado o sistema durante 100 meses, o
investidor teria acumulada a “polpuda” quantia de R$ 2.704,81. Outra observação
interessante é que o resultado (dinheiro acumulado) cresce exponencialmente, o que é
característico de sistemas com laços positivos.
Evidentemente, este modelo representa um exemplo extremamente simples de sistema
dinâmico. O próximo exemplo é mais complexo: envolve vinho, dinheiro, um casal e...
simulação!
Figura 9.12 – Tela do software de simulação dinâmica Vensim para o exemplo da poupança.

Exemplo 9.7: Um jantar romântico


Você convidou sua(seu) namorada(o) para um jantar em sua casa, comprou um vinho
muito caro e não quer fazer feio na hora de encher o copo da sua companhia. Então, antes de
realmente encher o copo, você decide modelar o processo de enchimento (o que a ansiedade
não faz com a gente?!). O processo de enchimento, seja do vinho ou de um reles copo de
água, é praticamente o mesmo, ou seja, deseja-se um limite superior de líquido e a vazão de
enchimento inicial é a maior possível. Assim que o copo vai “enchendo”, a vazão cai até ir
para zero. Este é um processo em malha fechada (ou seja, possui mecanismo de feedback)
e está ilustrado na Figura 9.13.
Figura 9.13 – Processo de enchimento da taça de vinho do exemplo.

Note que a inclinação da garrafa de vinho determina o fluxo de vinho. Quanto maior o
fluxo, mais rapidamente sobe o nível de líquido. Quanto maior o nível de líquido, menor a
diferença entre o nível atual e o nível desejado, o que faz com que se altere a inclinação da
garrafa (já que você não quer transbordar a taça). O diagrama de laços causais para o
enchimento da taça está representado na Figura 9.14.
Figura 9.14 – Diagrama de laços causais para o exemplo do enchimento da taça de vinho.

Para converter o diagrama da Figura 9.14 em um diagrama de estoque e fluxo, deve-se


notar que o vinho disponível na taça é um estoque e que o fluxo de vinho é, ele mesmo, um
fluxo, como representado na Figura 9.15.

Figura 9.15 – Diagrama de estoque e fluxo do exemplo de enchimento da taça de vinho.

Primeiramente, suponha que o fluxo máximo de vinho da garrafa para a taça (obtido
quando a garrafa de vinho está na maior inclinação “segura” possível) seja de 50 mL/s e
que o nível de líquido desejado na taça seja de 200 mL. Como estratégia de controle, o
fluxo de vinho da garrafa para a taça deve ser proporcional à diferença (gap) entre o nível
de líquido desejado e o nível de líquido instantâneo. Assim, quando a taça está vazia e o
gap é máximo, o fluxo também deve ser máximo. Conforme a taça vai se enchendo, o gap
diminui, e o fluxo também diminui de modo proporcional. A equação que rege o sistema é:
A Figura 9.16 apresenta os gráficos de nível de vinho e o fluxo do vinho no decorrer do
tempo, como gerados pelo software Vensim. Neste caso, observa-se que o copo é enchido
em cerca de 20 segundos, e, quando isso ocorre, o fluxo de vinho é interrompido.

Figura 9.16 – Gráficos do nível de vinho na taça e do fluxo de vinho de enchimento como gerados pelo Vensim.

Note que a variável de interesse, nível de vinho na taça, tende a um valor limite, o que
geralmente ocorre quando tivermos um loop negativo. Pode-se ainda simular vários
cenários diferentes de enchimento (com diferentes fluxos máximos e tamanho de copos),
mas, com certeza, o melhor a se fazer neste caso é beber o vinho...
Os casos analisados geram comportamentos típicos de sistemas dinâmicos: crescimento
exponencial (caso da poupança) e evolução para um valor limite (caso do vinho). Um
terceiro caso (exercício 3) representa sistemas de comportamento oscilatório. Outros
comportamentos podem ser derivados desses três, e um modelo pode conter uma
combinação de vários comportamentos diferentes. Os modelos apresentados aqui são
relativamente simples, mas é possível complicá-los o quanto se queira. O próprio Forrester
criou um modelo para estudar o crescimento da população mundial com mais de 300
equações. O campo da simulação dinâmica é muito extenso, e não pretendemos usar este
capítulo para esgotar o assunto.
9.6. Tendências em simulação8
Esta última seção discute algumas das tendências da Simulação de Eventos Discretos,
versando sobre três tópicos avançados com fértil campo para pesquisa científica e
tecnológica. Primeiramente se apresenta a Simulação Baseada em Agentes, talvez o assunto
mais em destaque no universo de pesquisa em simulação de sistema. A seguir, apresentam-
se a Simulação Web e a Simulação Baseada em Componentes. Por fim, é apresentada a
Simulação Distribuída, que já possui pacotes comerciais à disposição para sua
implementação. Não se pretende uma abordagem exaustiva, mas focada nos conceitos
principais e na sugestão ao leitor das referências bibliográficas seminais, que darão a
devida profundidade quando esta se fizer uma necessidade.

9.6.1. Simulação Baseada em Agentes


Embora a Simulação Baseada em Agentes (ABS – Agent-Based Simulation) tenha sua
base teórica definida ao final da década de 1940 com o desenvolvimento da Teoria de
Autômatos (VON NEUMANN, 1948; 1966) e tenha se consolidado efetivamente na década
de 1990, somente a partir desta última década é que ela obteve uma maior aceitação e
número de adeptos, gerando assim um maior número de pesquisas e projetos.
A Simulação Baseada em Agentes é um paradigma de simulação realizada por meio da
construção do modelo de um sistema baseado em uma coleção de entidades de decisão
autônomas, denominadas agentes, que residem em um ambiente (i.e., um mundo virtual que
pode ser discreto ou contínuo) e são capazes de interagir tanto entre si quanto com seu
ambiente, conforme ilustra a Figura 9.17. Normalmente, denomina-se esse paradigma de
modelagem bottom-up (de baixo para cima), uma vez que, a partir do comportamento
individual dos agentes (suas ações e interações) obtém-se como resultado o comportamento
global observável do sistema.

Figura 9.17 – Componentes de um modelo de Simulação Baseada em Agentes.

De acordo com Siebers et al. (2010), um modelo de Simulação de Agentes (ABMS –


Agent Based Model Simulation) pode ser caracterizado por um modelo de simulação em
que um dado sistema é representado por uma coleção de agentes que são programados para
seguirem regras de comportamentos, havendo interação com troca de informações entre
esses agentes e até aprendizado (o agente “aprende” algo programado ao longo do tempo,
apresentando um comportamento evolutivo).
No jargão deste livro, um agente é uma entidade (como uma entidade de um ACD, por
exemplo) individual (representando seres humanos ou formigas ou zumbis) ou coletiva
(representando organizações empresariais ou colônias ou mortualha de zumbis) que possui
um comportamento, normalmente definido por meio de regras simples. Ele também é capaz
de interagir com o ambiente por meio de ações e com outros agentes por meio de troca de
mensagens. Essas mensagens representam o diálogo direto entre dois indivíduos ou ainda
um contato indireto, realizado por meio da observação do comportamento desses agentes ou
dos efeitos de suas ações.
Por exemplo, considere que na Figura 9.17 um dos agentes é infectado pelo vírus Z e se
torna um zumbi. Pode-se construir um modelo de simulação computacional que represente o
comportamento da comunidade de pessoas sob ataque de uma ameaça zumbi.
Simplificadamente, cada agente infectado (zumbi) vasculha o ambiente numa busca
desesperada por cérebros para comer, enquanto os agentes não infectados movimentam-se
em permanente fuga. Contudo, mesmo mais lentos, os agentes infectados são capazes de
capturar os não infectados, e, dessa interação entre agentes, um agente não infectado será
infectado e, em pouco tempo, tornar-se-á um zumbi. Um modelo computacional que
represente esse conjunto de ações pode, portanto, representar por meio de simulação o
comportamento do sistema e permitir ao analista responder a questões importantes sobre o
comportamento social no caso de um ataque zumbi real.
Num primeiro momento, não é trivial a tarefa de diferenciar a Simulação de Eventos
Discretos da Simulação de Agentes, pois, de fato, não são técnicas excludentes entre si, mas
complementares. Para elucidar as diferenças, a Tabela 9.6 destaca os principais pontos de
divergência entre os modelos de Simulação de Agentes e os de Simulação de Eventos
Discretos.

Tabela 9.6 – Comparação das características dos modelos de Simulação de Eventos Discretos e
Baseada em Agentes (adaptada de Siebers et al., 2010)
Modelos de Simulação de Eventos
Modelos de Simulação Baseada em Agentes
Discretos
Foco na modelagem do comportamento individual
Foco na modelagem do processo
das entidades
Controle centralizado (global) Controle descentralizado (local ao agente)
Entidades reativas Entidades reativas ou pró-ativas
Interação pode ocorrer diretamente entre entidades
Interação entre entidades e recursos em nível
e recursos, podendo essa interação influenciar nas
agregado
decisões dos agentes
Filas são elementos importantes Não necessariamente usa filas
Inflexibilidade de definição de rotas dos
agentes no ambiente (todas as rotas devem ser As rotas dos agentes no ambiente não precisam
previamente definidas) necessariamente ser previamente determinadas

Segundo Bonabeau (2002), o paradigma da Simulação de Agentes possui diversos


benefícios em relação a outros paradigmas existentes, quais sejam:
• Ela permite a simulação de fenômenos emergentes, fenômenos esses que resultam da
interação dos agentes individuais. Diferentemente do que se possa imaginar, tais
fenômenos não podem ser deduzidos pela simples agregação das propriedades de seus
agentes individuais, uma vez que essas entidades interagem e influenciam o
comportamento uma das outras. Assim, o comportamento global observável do sistema é
mais do que a soma de suas partes;
• Ela possibilita uma descrição mais natural para modelagem de sistemas compostos de
entidades que possuem comportamentos heterogêneos, tais como tráfego urbano, mercado
financeiro ou organizações empresariais. Essa maior naturalidade deriva das
características inerentes de sua entidade básica, o agente. É muito mais natural
representar o comportamento de um conjunto de automóveis que se move nas vias de uma
cidade por meio de regras individuais associadas a cada automóvel do que descrever o
comportamento agregado de todos os automóveis por meio de equações diferenciais;
• Ela é mais flexível sob diversas dimensões, tais como a quantidade e a complexidade de
agentes compondo o sistema, uma vez que o comportamento é definido individualmente
não sendo necessária a alteração da estrutura de controle do modelo com a alteração
dessas entidades ou suas quantidades sendo simuladas.

As ciências que geralmente mais fazem uso da Simulação de Agentes são as sociais,
políticas e econômicas. Entretanto, aplicações conhecidas abrangem um conjunto mais
amplo de áreas e disciplinas, tais como: o mercado financeiro, a evolução da estrutura de
mercados, as cadeias de suprimentos, a difusão de epidemia, a adaptabilidade do sistema
imunológico, a violência civil, a evolução de normas sociais, as instituições políticas, a
queda de civilizações antigas, entre outras.

Exemplo 9.8: O Jogo da Vida


Para ilustrar melhor o conceito de agente, é apresentado a seguir o “Game of Life”,9 ou
Jogo da Vida, um problema clássico proposto pelo matemático britânico John Horton
Conway, e publicado em um artigo na revista Scientific American de 1970 (GARDNER,
1970) (note como o conceito de agentes é bem antigo).
A ideia desse modelo é reproduzir no tempo a evolução de uma população em um espaço
bidimensional (Figura 9.18). Para tanto, utiliza-se um reticulado de duas dimensões e cada
uma de suas posições, chamada de célula, representa um indivíduo, ou agente, dessa
população. Cada célula ou agente pode estar em dois estados distintos: “vivo” –
representado pela célula preenchida em cinza –, ou “morto” – representado pela célula
preenchida em branco. Cada agente possui oito vizinhos que correspondem a suas quatro
células ortogonais (vertical e horizontal) e as quatro células diagonais. A Figura 9.19 ilustra
um exemplo de um reticulado com cinco agentes “vivos” (células cinza) e o restante deles
“mortos” (células brancas).

Figura 9.18 – Reticulado bidimensional com cinco células representando agentes “vivos”, indicados com
preenchimento em cinza, e o restante das células representando agentes “mortos”, indicados com preenchimento em
branco.

O jogo evolui no tempo a partir de uma situação inicial por meio de um conjunto de
regras individuais relativamente simples, quais sejam:
• Sobrevivência: todo agente “vivo” com dois ou três vizinhos “vivos” sobrevive;
• Morte: todo agente “vivo” com nenhum ou um vizinho “vivo” morre por isolamento;
aqueles com quatro ou mais vizinhos também morrem, mas devido ao excesso
populacional;
• Nascimento: todo agente “morto” com exatamente três agentes “vivos” adjacentes torna-se
“vivo”.

A cada instante de tempo, chamado geração, essas regras são aplicadas simultaneamente
por todos os agentes do ambiente. Desta maneira, iniciando pela situação ilustrada na Figura
9.18 e aplicando as regras descritas anteriormente, obtêm-se as situações ilustradas na
Figura 9.19.
Figura 9.19 – Quatro gerações evoluídas a partir da situação inicial apresentada na Figura 9.18.

Vale ressaltar que padrões relativamente complexos podem surgir dessas regras
relativamente simples, tais como: padrões estáticos (“still lives”), padrões oscilatórios
(“oscillators”) e padrões que se movimentam no reticulado (“spaceships”). Isso é possível
somente devido à interação entre agentes que, neste caso, é representada pela observação
do estado dos agentes vizinhos.10

Embora este jogo seja de maior interesse acadêmico, ele aborda de maneira simples a
ideia de agentes, uma vez que considera que cada posição do reticulado (ou agente) é uma
entidade autônoma que possui regras de comportamento próprias, não havendo nenhuma
entidade que realize o controle centralizado de suas ações.

Exemplo 9.9: Lobos e ovelhas


No exemplo anterior, todos os agentes são homogêneos; ou seja, todos os agentes
possuem as mesmas regras de comportamento. No entanto, um dos benefícios da Simulação
de Agentes é a possibilidade de modelagem de sistemas com entidades heterogêneas que
interagem entre si. Uma variante natural do exemplo anterior é um sistema ecológico
predador-presa que simula a dinâmica de interação entre duas espécies animais diferentes,
na qual uma das espécies – o predador – alimenta-se da outra – a presa.
O ambiente, tal como no exemplo do “Game of Life”, é definido aqui como um reticulado
bidimensional que representa um terreno no qual cada posição, ou célula, pode conter ou
não gramíneas e duas espécies animais, ovelhas e lobos, que se movem no ambiente à
procura de alimento, como representado na Figura 9.20.
Figura 9.20 – No ambiente do modelo predador-presa há gramíneas, ovelhas e lobos.

Definido o ambiente e os agentes nele existentes, a tarefa seguinte é definir seus


comportamentos.
Os agentes representando as ovelhas e os lobos têm como objetivo principal encontrar
alimento, portanto eles se movem aleatoriamente no ambiente. Enquanto o lobo (o predador)
alimenta-se de ovelhas (a presa), as ovelhas, por sua vez, alimentam-se de gramíneas. Cada
agente possui um indicador de saúde, representado pelo seu nível de energia, o qual
diminui de uma unidade a cada movimento do agente. No entanto, quando o agente encontra
alimento (i.e., quando ambos estão na mesma posição do reticulado), o agente consome o
alimento, eliminando esse último do ambiente e aumentando seu nível de energia. Por
exemplo, ao alimentar-se de gramíneas, um ovelha aumenta seu nível de energia em quatro
unidades, enquanto um lobo aumenta seu nível de energia em 20 unidades ao consumir um
ovelha.
Esses agentes também têm a possibilidade de reproduzirem-se; ou seja, eles podem se
subdividir gerando um novo agente no ambiente. Para tanto, o nível de energia do agente
reprodutor é repartido exatamente ao meio com o novo agente. Um lobo com nível de
energia de 100 unidades, ao se reproduzir, ficará com 50 unidades e gerará um segundo lobo
com nível de energia de 50 unidades.
Quando o nível de energia do agente atinge zero unidade, ou seja, quando ele gastou toda
sua energia movendo-se no ambiente e não conseguiu encontrar alimento para repor os
gastos, ele morre e é eliminado do ambiente.
As gramíneas, diferentemente dos agentes que se reproduzem, após serem consumidas
pelas ovelhas têm um tempo de regeneração; ou seja, elas requerem um tempo mínimo para
ressurgirem no reticulado.
A evolução da simulação deste modelo ocorre por meio de unidades discretas de tempo,
ou ciclos, em que cada agente executa suas regras de comportamento uma vez por ciclo.
Assim, a partir da configuração inicial do modelo estabelecida por meio dos parâmetros de
entrada listados na Tabela 9.7, o modelo evolui, gerando uma dinâmica populacional
medida por meio do número de cada tipo de agente existente no ambiente.

Tabela 9.7 – Parâmetros de entrada do modelo predador-presa


Parâmetro de entrada Descrição
Número de ovelhas Número inicial de ovelhas no ambiente
Número de lobos Número inicial de lobos no ambiente
Tempo de regeneração Número de unidades de tempo para que uma área volte a ter gramíneas
das gramíneas após ter sido consumida por uma ovelha
Valor energético da
Número de unidades que uma ovelha ganha ao consumir gramíneas
gramínea
Valor energético da
Número de unidades que um lobo ganha ao consumir uma ovelha
ovelha
Taxa de reprodução da
Probabilidade de reprodução da ovelha
ovelha
Taxa de reprodução do
Probabilidade de reprodução do lobo
lobo

A morte, o consumo e a reprodução dos agentes, bem como a capacidade de regeneração


das gramíneas, criam tal dinâmica populacional, a qual varia dependendo dos valores dos
parâmetros iniciais do sistema, como uma simulação discreta comum.
Assumindo um ambiente em que:
• O número de ovelhas é o dobro do número de lobos, respectivamente, 100 e 50;
• As gramíneas quando consumidas proveem quatro unidades de energia às ovelhas,
enquanto as ovelhas proveem 20 unidades de energia aos lobos;
• A taxa de reprodução das ovelhas e lobos são respectivamente 4% e 5%;

A partir da simulação do modelo com o tempo de regeneração das gramíneas de 30 ciclos


(abundância de chuvas) e 100 ciclos (escassez de chuvas), obtém-se a dinâmica
populacional apresentada na Figura 9.21, respectivamente, (a) e (b).
Neste exemplo, considerou-se que cada ciclo corresponde a um dia. Assim, a simulação
apresentada corresponde a 1.000 dias reais, ou aproximadamente três anos.

Figura 9.21 – Evolução do número de agentes ovelhas e lobos dependendo da taxa de regeneração das gramíneas.

Nota-se, pela Figura 9.21, que, quando há abundância de chuvas, as populações de


ovelhas e lobos mantêm-se em equilíbrio e aparentemente entram em um estado oscilatório
(Figura 9.21, chuvas regulares). Porém, aumentando o tempo de regeneração das gramíneas,
os lobos rapidamente diminuem (aproximadamente 200 dias) até serem extintos (Figura
9.21, chuvas escassas). Inicialmente, poder-se-ia imaginar que o aumento do tempo de
regeneração das gramíneas teria um maior impacto nas ovelhas, levando-as à extinção antes
dos lobos. Mas a dinâmica observada é bem diferente, pois uma redução no número de
ovelhas gera um maior impacto no curto prazo na sobrevivência dos lobos, levando-os a
uma rápida extinção. É interessante notar que, apesar de restarem somente ovelhas no
ambiente, elas não se proliferam indiscriminadamente, mas oscilam em tamanho
populacional devido à reduzida disponibilidade de alimentos com a escassez de chuvas.
O leitor pode ter se surpreendido com a possível vitória da ovelhas, mas resultados
contraintuitivos como esses são comuns em Simulação de Agentes, particularmente quando
há razoável complexidade nas interações entre os diferentes tipos de agentes.11

Exemplo 9.10: Simulação de operações de regaste


Um exemplo de modelo de simulação de escopo prático é o RoboCup Rescue Simulation,
cujo desenvolvimento foi motivado pela destruição causada pelo terremoto Great Hanshin-
Awaji na cidade de Kobe no Japão em janeiro de 1995.
Deste evento catastrófico surgiu a ideia de desenvolver uma plataforma de Simulação de
Agentes com o objetivo de reproduzir as condições de desastre geradas após a ocorrência
de um terremoto em uma área urbana. Esse tipo de modelo tem como potenciais aplicações:
(1) auxiliar no treinamento de equipes de resgate, (2) avaliar políticas de gerenciamento de
desastres e (3) servir na avaliação de estratégias de coordenação de equipes de resgate de
robôs (pensando futuristicamente).
Nessa plataforma, agentes de resgate são programados com regras de comportamento que
possibilitam a coordenação de suas ações para a mitigação dos efeitos negativos gerados
em decorrência do terremoto, tais como: incêndios, bloqueios e soterramento de indivíduos.
Imaginando uma cidade devastada por um terremoto, o ambiente desse modelo é
representado por meio de um mapa composto por diferentes tipos de entidades, conforme
ilustrado na Figura 9.22:
• Edificações, representando construções reais, tais como edifícios e casas, podem desabar
ou se incendiar, sendo que o incêndio pode se propagar para as outras edificações
próximas;
• Refúgios, representando tipos especiais de edificações que não incendeiam ou desabam,
sendo, portanto, responsáveis por abrigar em segurança cidadãos da cidade bem como
por prover serviços a agentes de resgate;
• Estradas, representando as vias que permitem a movimentação dos agentes no ambiente;
• Bloqueios, obstáculos localizados sobre as Estradas, impedindo a movimentação dos
agentes no ambiente.
Figura 9.22 – Mapa de uma cidade atingida por um terremoto e identificação das entidades que o compõem.

Além das entidades do ambiente, o modelo também possui dois tipos principais de
agentes: os civis, que representam cidadãos comuns, vítimas do desastre que necessitam
serem salvos (serem transportados aos refúgios), e os agentes de resgate, que são agentes
especializados em tarefas de resgate, os quais são subdivididos em três tipos:
• Ambulâncias (pontos brancos), responsáveis por desenterrar e resgatar agentes (civis ou
outros agentes de resgate) soterrados ou feridos. Seu objetivo principal é desenterrá-los e
transportá-los em segurança até um refúgio onde estarão em segurança;
• Bombeiros (pontos vermelhos), responsáveis por extinguir incêndios em edificações,
sendo equipados com um repositório finito de água, que pode ser recarregado nos
refúgios;
• Policiais (pontos azuis), responsáveis por desbloquear as estradas.

Além dessas ações, os agentes de resgate também são capazes de se comunicarem por
meio da troca de mensagens, que pode ser realizada de forma direta (i.e., grito com limite
de alcance) ou via canal de comunicação (i.e., frequência de rádio). Na transmissão direta,
a mensagem é transmitida a todos os agentes que se encontram dentro de um raio de
cobertura do agente transmissor, ao passo que na transmissão via canal de comunicação não
existe restrição de distância.
Essa simulação evolui por um número finito de ciclos e em cada ciclo:
• Os agentes de resgate recebem as mensagens transmitidas por outros agentes e a
informação a respeito do estado dos agentes e entidades que estão em seu raio de
percepção ou visão. Os agentes não têm uma visão completa do estado do ambiente,
portanto têm conhecimento limitado do ambiente;
• Os agentes de resgate devem então decidir qual ação realizar. Todos os agentes de resgate
podem se mover no ambiente se não estiverem soterrados ou bloqueados. Além dessa
ação, cada agente possui ações específicas que podem realizar: ambulâncias podem
dessoterrar ou transportar outros agentes para o refúgio, bombeiros podem extinguir
incêndios jogando água nas edificações em chamas e policiais podem desbloquear
estradas. Por exemplo, a cada ciclo, cada policial deve decidir (1) mover-se na direção
de uma estrada que está bloqueada ou (2) desbloquear uma estrada caso o bloqueio esteja
próximo;
• O simulador recebe as ações selecionadas pelos agentes e as realiza no ambiente.

Ao final da simulação, o simulador apresenta uma pontuação que corresponde ao


desempenho dos agentes de resgate em mitigar os efeitos do desastre. Essa pontuação pode
ser utilizada para comparação de estratégias de coordenação de resgate entre esses três
tipos distintos de agentes de resgate, podendo servir como uma plataforma de teste de
políticas públicas em caso de desastres.
Para o leitor interessado em um aprofundamento no assunto, sugere-se a leitura de
Axelrod (1997) e Macal e North (2007).
As principais plataformas de simulação genéricas para agentes disponíveis são: NetLogo,
MASON e Repast. Uma lista mais completa de plataformas ABMS com suas características
e funcionalidades específicas pode ser encontrada em Allan (2010).

9.6.2. Simulação Web e Simulação Baseada em Componentes


A Simulação Web (ou do inglês Web Based Simulation – WBS) pode ser definida como
uma simulação onde a construção e a execução do modelo é realizado via web,12 por
intermédio de algum navegador da internet. Do ponto de vista da construção do modelo, uma
Simulação Web poderia permitir que vários desenvolvedores criassem o modelo ao mesmo
tempo, gerando colaboração.
A grande vantagem no uso de modelos web é permitir que usuários em diferentes
localidades colaborem na construção de um mesmo modelo ou utilizem esse modelo
remotamente para análises. A área educacional também é favorecida, principalmente como
ferramenta de auxílio a cursos online.
Embora não se possa construir modelos do zero, o site www.yousimul8.com apresenta
diversos modelos de simulação que rodam via web com tecnologia Ajax13 (como o Java,
essa é uma linguagem para desenvolvimento de aplicações web) e que permitem a alteração
de seus parâmetros de entrada por interface amigável. A Figura 9.23 ilustra um modelo que
pode ser rodado nesse site.
Figura 9.23 – Modelo do site YouSimul8.com, em que se pode fazer upload e rodar simulações via web.

Uma tecnologia correlata à Simulação Web é a da Simulação Baseada em Componentes


(Component Based Simulation). Segundo Pidd, Oses e Brooks (1999), a Simulação
Baseada em Componentes origina-se da ideia da orientação a objetos, na qual um modelo
pode ser construído a partir de diversos componentes que seriam desenvolvidos para serem
reutilizados. Esses componentes estariam disponíveis na web (nuvem) para que o usuário
juntasse esses objetos em modelos maiores. Por meio da utilização dos componentes
prontos, haveria, em tese, redução do desenvolvimento de linhas de código e
consequentemente no tempo de desenvolvimento. Fazendo uma analogia com os blocos de
encaixar, cada componente corresponderia a um desses blocos, e um modelo seria
construído através da ligação dos diversos componentes, assim como construímos carros,
navios, naves espaciais com os blocos de encaixar. A dificuldade natural deste tipo de
abordagem é garantir que o “encaixe” entre os objetos do modelo de simulação sejam tão
fáceis quanto encaixar dois blocos Lego.

9.6.3. Simulação Distribuída


A Simulação Web e a Simulação de Componentes podem ser consideradas
especializações da Simulação Distribuída. A Simulação Distribuída refere-se à execução de
um modelo de simulação em múltiplos processadores interconectados por meio de uma
infraestrutura de comunicação (FUJIMOTO, 2000). Tais modelos podem ser executados em
diferentes computadores distribuídos geograficamente e interconectados por meio de uma
rede de computadores, ou ainda em um mesmo computador quando esse tem vários
processadores ou é multicore (tem um único processador com múltiplos núcleos de
processamento).
As vantagens da Simulação Distribuída em relação à simulação monoprocessada são:
• Redução do tempo de execução do modelo de simulação, ou a execução de modelos
maiores e mais complexos, uma vez que mais recursos (memória e capacidade de
processamento) estarão disponíveis para a execução do modelo;
• Desenvolvimento e execução colaborativa dos modelos, porque, com a possibilidade de
os computadores estarem dispersos na rede, é possível que usuários que estejam em
diferentes locais físicos participem tanto do desenvolvimento quanto da execução do
modelo de simulação;
• Reuso de modelos e componentes, integrando-os em um único ambiente de simulação;
• Heterogeneidade e interoperabilidade entre modelos de simulação, executando-os em
simuladores de diferentes fabricantes;
• Tolerância à falha, já que diversos computadores podem estar disponíveis para a
execução de um mesmo modelo de simulação, evitando a paralisação do processamento
por falha de hardware.

Apesar de suas vantagens e benefícios, a Simulação Distribuída requer a integração de


diferentes modelos de simulação, que podem (1) ter tempos de execução distintos, (2) usar
diferentes representações de dados e (3) possuir diferentes níveis de interdependência entre
eles. Essas características impõem alguns desafios funcionais à implementação da
Simulação Distribuída, dentre os quais: (1) a distribuição de dados entre os diversos
modelos de simulação e (2) a sincronização dos relógios dos modelos para que a execução
deles ocorra de forma harmônica.
O desafio referente à Simulação Distribuída não se limita somente à possibilidade de
interconexão física entre os computadores que executam os modelos interdependentes, mas
também ao que se refere à representação e aos tipos dos dados trocados entre eles. Isto é,
modelos interdependentes necessitam compreender uns aos outros e, para tanto, necessitam
saber o significado dos dados recebidos e como transmiti-los. A abordagem mais simples é
fazer com que todos os participantes concordem em uma mesma representação e significado
dos dados distribuídos. Uma analogia com a realidade humana seria fazer com que todas as
pessoas do mundo falassem a mesma língua, como o Esperanto. No entanto, essa solução
impõe outros desafios mais complicados de serem solucionados, muitas vezes
impossibilitando seu uso na prática. Para tanto, a teoria da Simulação Distribuída dispõe de
outros mecanismos de distribuição de dados, os quais em sua maioria são derivados da
teoria de sistemas distribuídos.
Os relógios de simulação controlam o tempo de execução dos modelos de simulação,
sendo eles residentes no próprio modelo. Portanto, ao se integrar diversos modelos de
simulação, há a necessidade de se garantir o sincronismo de seus tempos de execução para
que a simulação ocorra de forma harmônica e consistente. Por exemplo, em uma Simulação
Distribuída composta de dois modelos interdependentes, A e B, caso o modelo A envie uma
informação para o modelo B sem que esse último esteja preparado, a informação será
perdida e a simulação pode ser bloqueada ou proceder de forma incoerente. Para tanto, na
literatura de Simulação Distribuída existem diferentes mecanismos de sincronização.
Assim, para usufruir dos benefícios e solucionar os desafios criados com o uso da
Simulação Distribuída, nas últimas décadas foram propostas diversas arquiteturas de
propósito geral, dentre as quais a HLA (High Level Architecture). Na atualidade, essa é a
mais relevante especificação de arquitetura para Simulação Distribuída e se tornou o
padrão de fato na implementação desses sistemas.
A HLA é uma especificação de arquitetura de escopo geral proposta pelo DoD (US
Department of Defense, ou Departamento de Defesa dos Estados Unidos) em 1996
(IEEE1516, 2000). Ela possibilita a interoperabilidade de modelos de simulação; isto é,
possibilita conectar entre si diversos componentes e modelos de simulação oriundos de
diferentes softwares e/ou plataformas.
Para ilustrar o uso da Simulação Distribuída na solução de problemas práticos, será
apresentada uma Simulação Distribuída desenvolvida por um dos autores deste livro. Esse
modelo de simulação, descrito em detalhes em Medina et al. (2013), consiste na integração
de vários modelos de simulação de Portos Marítimos a fim de possibilitar o
dimensionamento das frotas de navios necessárias para a exportação do minério de ferro
com origem nos portos brasileiros para os diversos portos importadores distribuídos no
mundo. A arquitetura do modelo de Simulação Distribuída desenvolvida é ilustrada na
Figura 9.24.
Figura 9.24 – Arquitetura do modelo de Simulação Distribuída de terminais marítimos.

Essa arquitetura é composta por nove computadores, dos quais sete simulam diferentes
portos marítimos, cada qual com o seu próprio modelo desenvolvido, um computador
simula o modelo de navegação marítima entre os portos e um computador executa o
controlador do sistema, denominado “Sargento”.
Considere um navio que está navegando em lastro (vazio). Ele, de fato, é uma entidade
dentro do modelo de navegação. Ao chegar a seu destino, essa entidade “navio” é
transferida do modelo de navegação para o modelo de simulação do terminal marítimo de
exportação correspondente, por meio da infraestrutura de rede. Assim, o modelo do porto
de destino recebe da rede a informação de que uma nova entidade (com atributos de carga,
porte etc.) chegou e deve ser gerada no modelo. O navio agora é uma entidade em outro
modelo e, ao término do processo de carregamento, ele é transferido de volta ao modelo de
navegação, de modo a iniciar a viagem rumo a seu porto designado de destino. Quem
garante o sincronismo das operações, envia e recebe mensagens dos modelos quanto a
chegadas ou partidas dos navios é o sargento, que nada mais é do que um programa de
computador que dispõe de todas as informações para tomar a melhor decisão quanto à
alocação de navios às rotas ou de quanto o relógio da simulação pode avançar.
Comercialmente, os fornecedores de pacotes de simulação já estão implementando
alguma das funcionalidades da Simulação Distribuída. O Simul8, por exemplo, permite
distribuir as replicações de um mesmo modelo em diversos computadores de uma mesma
rede, reduzindo assim o tempo total de simulação.
9.7. Exercícios de revisão
1. A demanda por um certo lote de produto em um centro de distribuição para um período
fixo segue uma distribuição Erlang de parâmetros 8 e 2 (a média é oito lotes). O custo de
excesso de estoque é de R$ 60,00 por lote por período, e o custo da falta é de R$ 160,00
por lote por período. Determine o quanto se deve pedir por período para minimizar os
custos totais, considerando um erro máximo de 10%. A quantidade pedida pode variar de
um lote até, no máximo, 20 lotes. Solucione também os seguintes problemas:
a) Para cada tamanho de lote pedido, determine a probabilidade de haver falta (demanda
maior do que pedido).
b) Considerando o cenário do ponto ótimo, qual a probabilidade de os custos totais
excederem R$ 500,00? E qual a probabilidade de ficarem abaixo dos R$ 400,00? Qual a
probabilidade de ficarem entre R$ 400,00 e R$ 600,00?
c) Como a decisão do ponto ótimo é alterada se os custos de excesso aumentarem em 20%?

Dica: Para gerar uma distribuição Erlang de Parâmetros P1 e P2, utilize a seguinte
função do Excel: P1/(2*INVGAMA(ALEATÓRIO(),P2,1)).

2. Cada avião da Companhia Aérea Proing tem capacidade máxima para transportar 100
passageiros. No entanto, devido à possibilidade de no-show (o passageiro compra a
passagem mas não aparece), ela se permite a venda de até 105 assentos por avião. O
número de vendas de passagens para cada voo é uniformemente distribuído entre 96 e
105. O número de no-shows por voo é uma distribuição discreta como a representada na
Tabela 9.8.

Tabela 9.8 – Exercício 2


Número de no-shows Probabilidade
0 0,25
2 0,50
4 0,25

Toda vez que o número de passageiros em um voo exceder o número de assentos, a


Proing é obrigada a pagar uma multa para cada passageiro excedente e deve tentar
realocá-lo em outro voo.
a) Construa um modelo de Simulação de Monte Carlo para determinar o número médio de
multas que a companhia aérea deve pagar por voo.
b) Determine a probabilidade de a Proing pagar uma ou mais multas por voo.
c) Considere que o lucro obtido com a venda de uma passagem é de R$ 100,00. Qual deve
ser o valor mínimo da multa para que não compense à Proing executar a prática (nefasta,
terrível, odiosa, mas econômica) do overbooking?
3. Exercício resolvido. A pizzaria Mozzarela de Ouro atende a uma clientela diferenciada,
com alto poder aquisitivo. Assim, a demanda é influenciada diretamente pela qualidade
da pizza, e sofre pouca ou nenhuma influência do preço cobrado pelo produto. Dessa
maneira, quanto maior a qualidade da pizza, maior será a demanda de clientes.
Obviamente, quanto maior a demanda de clientes atendidos, maior será também o lucro
da pizzaria. Por outro lado, quanto maior a qualidade, menores os lucros (a muçarela não
pode ser da mais barata, o pizzaiolo deve ser bem treinado etc.), o que leva à redução da
qualidade na tentativa de aumento dos lucros.
a) Represente o sistema por um diagrama de laços causais.
b) O nível de demanda não é influenciado instantaneamente pela qualidade, pois os clientes
satisfeitos ainda gastam um tempo para influenciar outros clientes a visitarem a pizzaria.
No jargão da dinâmica de sistemas, isso representa um atraso. Construa o diagrama de
estoque e fluxo da pizzaria e simule o sistema no software Vensim. Adote os parâmetros
que achar conveniente.

Resolução:
O diagrama de laços causais está mostrado na figura a seguir:
Perceba que, quanto maior a demanda, maiores os lucros; quanto maiores os
lucros, menor é a diferença entre um lucro objetivo e o lucro real. Essa diferença
leva a um aumento ou diminuição da qualidade; quanto maior a qualidade, maior
a demanda. Perceba também que o arco entre a “qualidade” e a “demanda” está
marcado com uma linha dupla, a qual representa um “atraso”. No caso em
questão, a demanda só é afetada depois de algum tempo que a qualidade mudou.
Para converter o diagrama de laços em um diagrama de estoque e fluxo,
transformaremos a diferença em uma taxa (fluxo) e a qualidade em um estoque.
Assim, este fica de acordo com a figura que se segue (construído no software
Vensim):
Mas só o diagrama não gera o comportamento. É necessário definir as equações.
Vamos então, defini-las.
• Atraso = 5

O atraso será considerado de cinco semanas; ou seja, a cada mudança da


qualidade a demanda só mudará após cinco semanas.
• Demanda = DELAY FIXED(100*qualidade, atraso, 50 )

A demanda é proporcional à qualidade, e o coeficiente de proporcionalidade é


100. Ou seja: a demanda seria 100*qualidade (a qualidade é um número que pode
variar de 0 a 1 – 0 indica mínima qualidade e 1 indica máxima qualidade). Mas,
como há um atraso, que é introduzido pela função DELAY FIXED, ela só será isso
após o tempo “Atraso”. O valor inicial da demanda é de 50.
• Lucro= 30*demanda

O lucro é proporcional à demanda de pessoas. Neste caso, ele é 30 vezes a


demanda.
• Lucro objetivo= 2.000

Lucro que se deseja atingir


• Qualidade= INTEG (taxa de variação da qualidade,0,5)

Qualidade é um estoque, que recebe um fluxo igual à “taxa de variação”. O valor


0,5 corresponde ao valor da qualidade no início da simulação.
• Taxa de variação da qualidade= coef×(lucro objetivo – lucro)

A taxa de variação da qualidade é proporcional à diferença entre lucro objetivo e


lucro. “Coef” é um coeficiente que converte a diferença em taxa (variação por
unidade de tempo)
• Coef = 0,0001

Coeficiente de conversão da taxa. Para cada R$ 1,00 de diferença, a qualidade


será alterada por semana no valor de 0,0001. Em outras palavras, é necessária
uma diferença de R$ 1.000,00 entre o lucro real e o objetivo para que haja uma
alteração semanal de 0,1 no valor da qualidade.
• FINAL TIME = 100

Tempo final da simulação (em semanas)


• INITIAL TIME = 0

Tempo inicial da simulação (em semanas)


• TIME STEP = 0,03125

Time Step adotado para a simulação.


Ao simularmos 100 semanas, obteremos o seguinte comportamento para a
qualidade:
Ou seja, um comportamento oscilatório, pois há o componente “atraso”.
Referências bibliográficas
ALLAN, R. J. Survey of Agent Based Modelling and Simulation Tools. Great Britain:
Science and Technology Facilities Council, Daresbury Laboratory, 2010.
AXELROD, R. The complexity of cooperation: Agent-based models of competition and
colloboration. Princeton, NJ: Princeton University Press, 1997.
BONABEAU, E. Agent-based modeling: Methods and techniques for simulating human
systems. Proceedings of the National Academy of Sciences of the United States of
America, 99(3):7280-7287, 2002.
FORRESTER, Jay W. Industrial dynamics. Portland, OR: Productivity Press, 1961.
FUJIMOTO, R. M. Parallel and distributed simulation systems. Nova York, NY: John
Wiley & Sons, Inc, 2000.
GARDNER, M. Mathematical games – The fantastic combinations of John Conway’s new
solitaire game ‘life’. Scientific American, 223: 120-123, 1970.
IEEE1516. IEEE Standard for Modeling and Simulation (M&S) High Level Architecture
(HLA) – Framework and Rules. IEEE Std. 1516-2000, 2000.
MACAL, C. M.; NORTH, M. J. Managing business complexity: Discovering strategic
solutions with agent-based modeling and simulation. Nova York, NY: Oxford
University Press, 2007.
MEDINA, A. C., NARDIN, L. G., PEREIRA, N. N., BOTTER, R. C.; SICHMAN, J. S. A
distributed simulation model of the maritime logistics in an iron ore supply chain
management. In: OBAIDAT, M. S.; KOZIEL, S.; KACPRZYK, J.; LEIFSSON, L.;
ÖREN, T. (Eds.) SIMULTECH 2013 – Proceedings of the 3rd International
Conference on Simulation and Modeling Methodologies, Technologies and
Applications. Reykjavík, Iceland: SciTePress, 2013
PIDD, M.; OSES, N.; BROOKS, R. J. Component-Based Simulation on the Web? In:
Proceedings of the 1999 Winter Simulation Conference, p. 1438-1444, 1999.
RICHARDSON, George P.; PUGH, Alexander L. Introduction to system dynamics
modeling with dinamo. Portland, OR: Productivity Press, 1981.
SENGE, P. M. A quinta disciplina: a arte e prática da organização que aprende. São
Paulo: Best Seller, 1990.
SIEBERS, P. O.; MACAL. C. M.; GARNETT, J.; BUXTON, D.; PIDD, M. Discrete-event
simulation is dead, long live agent-based simulation. Journal of Simulation, 4(3):204-
210, 2010.
STERMAN, John D. Business dynamics: system thinking and modelling for a complex
world. Boston, MA: Irwin McGraw-Hill, 2000.
VON NEUMANN, J. The General and Logical Theory of Automata. Hixon Symposium,
Pasadena, CA, 1948
VON NEUMANN, J. Theory of Self-Reproducing Automata. Champain, IL: University of
Illionois Press, 1966.
WINSTON, Wayne L. Operations research: applications and algorithms. Belmont:
Duxbury Press, 1994.
Capítulo 10

Epílogo
10.1. Introdução
Discutimos neste livro boa parte da teoria da simulação; contudo, certos aspectos da
simulação nos são desvendados apenas pela experiência. Ademais, a aplicação correta da
teoria não garante que um estudo de simulação seja bem-sucedido. Neste Epílogo,
pretendemos discutir sobre o sucesso na condução de um estudo de Simulação de Eventos
Discretos ou, de outro modo, buscar uma resposta para a pergunta: “O que é o sucesso (ou o
fracasso) em um estudo de simulação?”.
Robinson (2004) sugere que o sucesso em um estudo de simulação pode ser mensurado
pelas seguintes categorias:
• O estudo de simulação atingiu seus objetivos e/ou mostrou benefícios;
• Os resultados do estudo foram aceitos;
• Os resultados do estudo foram implementados;
• A implementação provou que os resultados do estudo de simulação estavam corretos.

Um estudo de simulação que atendesse a essas quatro categorias seria um sucesso


completo. Este livro propõe uma maneira mais simples de direcionar seu projeto de
simulação. Seu projeto será um sucesso quando:
• O modelo desenvolvido for uma representação adequada do sistema;
• O estudo de simulação atingir os objetivos desejados pelos tomadores de decisão.
Existe uma grande confusão em relação àquilo que pode a simulação e, num outro plano,
a Pesquisa Operacional. O objetivo da Pesquisa Operacional não é o de tomar decisões.
Quem toma decisões são os gerentes, diretores, técnicos, operadores, analistas etc. –
denominados aqui de “Tomadores de Decisão”. O objetivo real e possível da Pesquisa
Operacional – e de um dos seus tópicos, que é a simulação – é fornecer uma base racional e
científica para que a administração possa tomar as suas decisões. O estudo de simulação
deve, portanto, responder às dúvidas que o tomador de decisão necessita esclarecer para
que possa tomar sua decisão. Se, ao início do estudo de simulação, seu escopo não está
alinhado com os objetivos dos tomadores de decisão, o projeto será um fracasso, por mais
tempo e dinheiro que sejam aplicados em seu desenvolvimento.
A clareza dos objetivos e do escopo do projeto, advindos das entrevistas e discussões
com o cliente, também servirão para eliminar objetivos descolados da realidade e para
definir as reais prioridades do projeto. Um erro típico é assumir objetivos que nem se tem
em mente, como prever a viabilidade. Por exemplo, não há como assumir: “O objetivo deste
projeto é o de reduzir em 30% os custos de estoques em trânsito...”. Retirado de um projeto
real e fracassado de simulação, esse não é um objetivo que possa ser estabelecido no início
do projeto. Ele é, no máximo, um desejo ou uma ambição do cliente. O percentual de
redução do custo, se ocorrer, será um resultado obtido ao final do projeto. Não há como
sabermos de antemão em quanto este custo será reduzido, e sabemos menos ainda qual o
impacto (para mais ou para menos) que essa redução de custo terá no custo total. De fato,
“se os benefícios da simulação forem conhecidos de antemão, isso normalmente implicará
que os seus resultados também o são, não sendo necessária, portanto, a simulação” (GRAY,
1976). Mas se você é uma pessoa capaz de assumir que o seu estudo de simulação reduzirá
os custos do cliente em 30%, ou você não tem a menor ideia do que está falando ou deveria
mandar para nós, estes pobres autores, os números a serem sorteados esta semana na
loteria...
O correto (no projeto apresentado) seria o analista reconhecer a preocupação do cliente
quanto à redução dos custos do estoque em trânsito e investigar mais a fundo as medidas de
desempenho que o cliente utiliza para avaliar esse estoque. Regra de ouro no 1: descubra
quais as medidas de desempenho utilizadas pelo cliente e qual a ordem de prioridade delas;
por exemplo:
• Um aumento na produção total do mês é preferível em relação à redução do estoque em
trânsito?
• O prazo de entrega dos produtos é um fator crítico?
• Uma redução do tempo de ciclo é preferível em relação a uma redução no número de
máquinas da linha de produção?

Uma pesquisa desenvolvida por Robinson e Pidd (1998) reforça que a relação “cliente-
analista” é tão ou mais importante que os aspectos tecnológicos envolvidos no projeto de
simulação. Os autores investigaram quais os fatores que os analistas de simulação e os
clientes acreditam ser os preponderantes no sucesso ou fracasso de um estudo de simulação.
A partir de 338 fatores identificados, foram construídas as seguintes dimensões:
• Modelo (velocidade, estética e facilidade de uso);
• Confiança no modelo (credibilidade);
• Disponibilidade e precisão nos dados de entrada;
• Software;
• Credibilidade do analista;
• Competência do analista;
• Profissionalismo do analista;
• Comunicação e inteiração do pessoal envolvido no projeto;
• Responsividade do analista (capacidade de responder ao cliente de forma adequada);
• Comprometimento do cliente com o projeto de simulação.

Das 10 dimensões apresentadas, apenas as quatro primeiras são técnicas. A relação


cliente-analista aparenta ser o fator determinante no sucesso do estudo de simulação. Regra
de ouro no 2: ao elaborar um primeiro projeto de simulação, procure um problema simples,
em que a chance de sucesso é maior, e apresente os primeiros resultados utilizando uma
animação do modelo de simulação. A animação aumenta a credibilidade do seu projeto e
você ganha aliados dentro da empresa, garantindo sua continuidade. Você ouvirá a famosa
frase:

“– É assim que a minha <fábrica> funciona!”


Obviamente, a expressão entre os sinais “<...>” pode ser substituída por diversas outras:
linha de produção, call center, supermercado, escritório, transportadora etc.; porém, mais
importante do que a alegria do cliente é a confiança conquistada. A experiência mostra que,
neste momento, o cliente se torna um aliado do projeto, fornecendo informações e dados
com mais rapidez e firmeza (um pequeno exercício mental: quantos, dos fatores propostos
por Robinson e Pidd, foram atendidos quando o cliente reconheceu o seu sistema na
animação apresentada?).
10.2. O sucesso e, às vezes, o fracasso
Um dos casos que consideramos um grande fracasso – na realidade, do ponto de vista do
cliente, não foi um fracasso – revelou-se como tal na hora de “mostrar, de forma animada e
dinâmica, o comportamento de uma nova fábrica”. Neste projeto, gastou-se quase um mês de
trabalho no desenvolvimento de um modelo de animação (e não de simulação) de uma nova
fábrica. Um modelo de animação, pois todos os dados de entrada eram fictícios e o modelo
só servia para mostrar como funcionava a fábrica, não fornecendo qualquer resultado de
análise tangível. Para a concretização desta façanha, utilizamos um software com
capacidade gráfica poderosa, possibilitando apresentar a simulação em três dimensões (à
época, o software dispunha de um módulo de modelagem de sólidos e capacidade de
programar um script, ou roteiro, de uma câmera, tal como um filme). O resultado foi
literalmente um show! Apesar disso, o projeto foi um fracasso, pois este modelo, segundo
nosso ponto de vista, não atendeu à primeira finalidade de um modelo de simulação:
auxiliar na tomada de decisão.
Outro caso de insucesso iniciou de forma não tão normal: fomos convidados a continuar o
modelo de outra pessoa que “largou o projeto no meio”. O modelo deveria ser corrigido e
entregue ao cliente em quatro semanas. Analisado o modelo, descobriu-se que este era um
“monstro sem pé nem cabeça”. Em suma: quatro meses de desenvolvimento inúteis. Os
resultados, segundo o próprio cliente, “não estavam confiáveis”. Tínhamos dois caminhos:
aproveitar o modelo e tentar corrigi-lo ou construir outro a partir do zero. Acabamos
optando pela segunda alternativa, adotando uma modelagem um pouco mais compacta, pois
o prazo era de apenas quatro semanas. Refizemos a especificação do modelo junto ao
cliente, e um modelo novo foi desenvolvido. O prazo foi atendido e o modelo apresentava
resultados coerentes. Mas onde está o insucesso? Agora vem a novela... Na metade da
terceira semana, uma pessoa da empresa entrou no time de projeto e viu o modelo. Externou
que gostaria de ver mais algumas medidas de desempenho extraídas dele, como determinava
o escopo do projeto original. Ao final, como não dispúnhamos de tempo hábil para o
desenvolvimento de novas medidas de desempenho, o modelo foi entregue sem atender
totalmente aos objetivos do cliente.
O envolvimento das pessoas da equipe de projeto é fator crítico de sucesso. Por exemplo,
uma indústria de bens de consumo duráveis solicitou um modelo para simular sua linha de
produção. Parte importante do modelo era o setor de testes de produtos acabados. Durante a
elaboração do modelo conceitual, o engenheiro de processos convenceu a todos de que a
lógica do CLP1 era “bem simples, sem muitos detalhes”. Elaborado o modelo
computacional, iniciamos o processo de validação face a face com os diversos envolvidos
e, logo ao início da primeira reunião, nosso amigo engenheiro de processos não titubeou: “A
lógica está muito boa, só falta acrescentar mais um detalhezinho...”.
O detalhe foi implementando e o processo de validação continuou até o mesmo
engenheiro lembrar de outro “detalhezinho”. Quando finalmente percebemos que a lógica do
CLP não era aquela discutida na elaboração do modelo conceitual, sugerimos ao engenheiro
que nos apresentasse a documentação da lógica em pseudocódigo.2 Infelizmente, ouvimos:
“Não posso fazer isso, pois não vou abrir o funcionamento do meu sistema para vocês!”.
Moral da história: a realização de um projeto de simulação exige envolvimento e abertura
das informações pertinentes. Para aquele engenheiro, a propriedade intelectual da lógica era
inviolável, mas, sem a lógica correta, o projeto sempre será um fracasso.
Do ponto de vista do sucesso, vários projetos trouxeram um retorno significativo às
empresas. Em um projeto de uma nova linha de montagem automotiva de pallets retornáveis
para um novo produto, um dos objetivos era dimensionar adequadamente o número de
pallets. Contrariamente ao que seria de se esperar, ao aumentarmos o número de pallets
numa linha desse tipo, a produtividade aumenta até um limite: se aumentarmos ainda mais o
número de pallets, a produtividade pode ser prejudicada (para uma referência completa
sobre a simulação de linha de montagens com pallets retornáveis, ver CHWIF, 2004). Um
cálculo “manual”, disponibilizado pela Engenharia da empresa, indicava a necessidade de
600 pallets no sistema como um todo (linha existente somada à linha nova). Na simulação,
chegou-se à conclusão de que 400 pallets atenderiam completamente às necessidades. Este
projeto representou uma economia de 200 pallets, e, em termos financeiros, quase
R$ 2.000.000 de economia.
Como no projeto anterior, muitos outros projetos que realizamos obtiveram reduções de
custos por um simples motivo: o ser humano, se não consegue avaliar efetivamente o
desempenho de um sistema, tende a superestimar as necessidades de equipamentos para
minimizar riscos. Em um desses projetos, desejava-se trocar o sistema de alimentação de
bobinas metálicas de prensas com empilhadeiras por carros automáticos. Como se dispunha
de três prensas, a empresa planejava adquirir três carros. Para a empresa, com três carros,
não haveria perda de produtividade, afinal, cada carro ficaria dedicado a uma prensa. O
projeto de simulação demonstrou que, com três ou dois carros, não haveria perda de
produtividade, e que, com um carro somente, haveria perda de produtividade de apenas 2%.
Como o custo unitário de um carro era alto (em torno de 65 mil dólares), decidiu-se apenas
adquirir um carro e suprir essa perda de produtividade com outras otimizações do processo.
Evitou-se a compra de dois carros, ou seja, uma economia de 130 mil dólares!
Em muitos projetos, é possível mostrar ao cliente que não é necessário investir em
equipamentos para que os resultados apareçam – às vezes, apenas modificando a lógica de
produção pode-se obter diversos benefícios. Este é o caso de um projeto realizado para
uma empresa de produtos químicos que possuía duas fábricas geminadas: uma fábrica de
frascos plásticos e uma fábrica da mistura e envase. A programação da produção era gerada
para ambas, o que resultava num nível alto de estoque intermediário de frascos vazios. O
escopo do projeto consistiu em estudar a possibilidade de se realizar a “programação da
produção” da fábrica de frascos pelo método Kanban, ou utilizar o sistema de “produção
puxada”, em substituição à “produção empurrada”, em uso à época. Foram implementados,
então, dois modelos: um da situação atual, contemplando a lógica corrente de programação
da produção, e outro contemplando a lógica Kanban. Os resultados mostraram que a lógica
Kanban conseguiu atender à produção e reduziu os estoques intermediários em,
aproximadamente, 20 vezes, liberando uma área de mais de 1.200 m2.
Às vezes, um modelo de simulação pode ser utilizado como uma ferramenta de tomada de
decisão operacional. Por exemplo, um problema típico de centros de distribuição de
produtos é a separação (ou picking) de produtos para envio ao cliente. A DHL, empresa do
setor de logística, desenvolveu um modelo de simulação da sua operação de separação em
sua unidade de Louveira-SP (SANTINI et al., 2010). O modelo computacional construído
permite simular toda a operação de determinado dia, antes do seu início, a partir do
recebimento das necessidades de separação do dia anterior. O modelo permite ainda
identificar gargalos, necessidades de mão de obra, a configuração dos meios de
movimentação de materiais (paleteiras simples ou automáticas), entre outros aspectos
relevantes. Além disso, quando se identifica um problema, a negociação com o cliente
(empresa para a qual a DHL opera) é facilitada pelos dados de saída fornecidos pelo
modelo de simulação.
Figura 10.1 – Tela do modelo desenvolvido pela DHL (SANTINI et al., 2010).

Uma situação interessante de sucesso se dá quando nos deparamos com o fracasso “dos
outros”. Ironicamente, muitas vezes somos chamados a dar uma segunda opinião sobre
resultados obtidos por projetos de terceiros, como um médico que é consultado para
confirmar ou não um diagnóstico anterior. São situações delicadas, pois, muitas vezes, são
identificados erros no projeto que podem ser equivocadamente imputados ao responsável
pela construção do modelo. Não vamos aqui detalhar cada um dos (muitos, infelizmente)
casos em que nos envolvemos, mas nossa experiência tem mostrado que esses erros são
invariavelmente culpa da má comunicação de projeto. Para que o leitor nunca se depare
com esse tipo de erro, damos três regras mágicas e ultrassecretas:
1. Documentar;
2. Documentar;
3. Documentar.

A documentação não é apenas um arquivo com todas as informações pertinentes do


projeto, ela é cada e-mail trocado, as atas de todas as reuniões, as informações telefônicas
trocadas, todas as premissas adotadas, cópias de bancos de dados etc. Adicionalmente,
cada material documentado deve ser encaminhado para receber a validação do cliente. Esse
procedimento, além de aumentar a qualidade do trabalho e evitar que o trabalho seja refeito,
aumenta sobremaneira a confiança do cliente no projeto em execução.
Embora nos setores de manufatura e logística os ganhos esperados por projetos de
simulação sejam sempre maiores, é possível ter sucesso e gerar ganhos consideráveis
também no setor de serviços. Em um projeto desenvolvido para um serviço de atendimento
bancário, o objetivo principal era dimensionar a carga de trabalho (work load) dos
atendentes, gerentes e estagiários, a fim de atingir um certo nível de serviço estipulado. A
partir do modelo desenvolvido, chegou-se à conclusão de que a quantidade de pessoas
existentes no sistema conseguiria atender à maioria dos clientes dentro do nível de serviço
estipulado. Contudo, a carga de trabalho estava praticamente saturada, não sobrando tempo
para a venda de novos produtos. As análises dos resultados sugeriram que um aumento no
número de atendentes possibilitaria um aumento de receita, através da oferta de venda de
novos produtos e da maior satisfação dos clientes, que aguardariam um tempo menor em fila
de espera. Para o ramo de serviços, uma regra simples diz que: quanto menor a espera pelo
serviço, maior o número de clientes interessados nele. Neste momento, talvez até tenhamos
despertado o interesse do leitor em descobrir que banco maravilhoso é esse. Desculpe-nos,
leitor-cliente-amigo, quem toma a decisão é o cliente, não o modelo...
Referências bibliográficas
CHWIF, Leonardo. Simulação aplicada em projetos de linhas de montagem com paletes
retornáveis. Congresso Internacional de Automação, 2004.
GRAY, Paul. The economics of simulation. Proceeding of the 1976 Winter Simulation
Conference. p. 17-25, 1976.
ROBINSON, Stewart. Simulation: the practice of model development and use.
Chichester: John Wiley & Sons, 2004.
ROBINSON, Stewart; PIDD, Michael. Provider and customer expectations of successful
simulation projects. Journal of the Operational Research Society, v. 49, n. 3, p. 200-
209, 1998.
SANTINI, Bruno; MOURA FILHO, João P.; CHWIF, Leonardo. Crystal Ball: uma
ferramenta para análise de operação de picking baseada na tecnologia de simulação de
eventos discretos. Revista Mundo Logística, n. 14, p. 51-55, 2010.
Apêndice I

Revisão de probabilidade e estatística

O objetivo deste Apêndice é rever alguns conceitos básicos de probabilidade e


estatística, considerados importantes para a compreensão dos assuntos discutidos no livro.
Para uma discussão mais aprofundada sobre esses conceitos, recomendamos a consulta às
referências bibliograficas sugerida ao final deste Apêndice (BOTTER et al., 1996;
DEVORE, 2000).
I.1. Espaço amostral
Espaço amostral de um experimento é o conjunto de todos os resultados possíveis do
experimento em questão.Se jogarmos uma moeda para o ar, teremos um experimento cujos
dois únicos resultados possíveis são “cara” (K) ou “coroa” (C). Neste caso, o espaço
amostral, S, seria:

S={K, C}

Se lançarmos dois dados de seis faces simultaneamente, teremos 21 resultados possíveis,


formando o espaço amostral S descrito na Figura I.1.
Um evento é qualquer subconjunto do espaço amostral S.
Retomando o exemplo do lançamento da moeda, existem dois eventos possíveis: cara,
E1={K} e coroa, E2={C}. Considere que vamos jogar a moeda três vezes. Neste caso, o
espaço amostral teria oito possibilidades:

S={KKK, CKK, KCK, KKC, CCK, CKC, KCC, CCC}


Figura 1.1 – Espaço amostral do lançamento de dois dados simultâneo.

Alguns eventos possíveis para esse experimento seriam:


• A={CKK, KCK, KKC}: o evento em que apenas uma coroa tenha ocorrido;
• B={CCK, KCC, CKC}: o evento em que duas coroas tenham ocorrido.

Os eventos A1, A2,..., Ak são denominados mutuamente exclusivos se, para todo i≠j (i=1,
2, ..., k e j=1, 2, ..., k), Ai e Aj, não houver qualquer elemento em comum.
Dado que um evento é um conjunto, as operações de união, intersecção e complemento da
Teoria dos Conjuntos podem ser aplicadas para a construção de “novos” eventos a partir
daqueles já existentes.
No caso do lançamento da moeda, sendo os eventos A e B como definidos anteriormente,
podemos construir os seguintes eventos:
• União: = {CKK, KCK, KKC, CCK, KCC, CKC}
• Intersecção:
• Complemento:
• {KKK, CCK, CKC, KCC, CCC}
• {KKK, CKK, KCK, KKC, CCC}
I.2. Propriedades básicas da probabilidade
Probabilidade de um evento A, P(A) é a frequência relativa do evento A dentro do espaço
amostral S. De outro modo, a probabilidade associa um número à chance de que
determinado evento ocorra dentro do espaço amostral.
Propriedades básicas da probabilidade:

1. Para qualquer evento A, .

2. e .

3. Se são eventos mutuamente exclusivos, então,


.

4. .

5. .

Laplace1 (1749-1827) foi o primeiro a definir a probabilidade, pela seguinte regra


prática:

Essa regra só é aplicável quando os N resultados possíveis do experimento são


igualmente prováveis.
Quando lançamos uma moeda apenas uma vez, a chance ou probabilidade de que a
moeda caia com a face “cara” (K) voltada para cima é dada por:

Qual a probabilidade de que, ao retirarmos uma carta de um baralho de 52 cartas, ela


seja vermelha? E qual a probabilidade de que ela seja vermelha ou um valete?
As cartas vermelhas do baralho são as de “ouros” e ”copas”. Portanto, existem 26 (= 13
+ 13) resultados favoráveis em que uma carta vermelha é retirada e 52 resultados possíveis
do experimento, pois qualquer uma das 52 cartas pode ser retirada do baralho. Assim:
Evento A = a carta é vermelha:

Para determinarmos a probabilidade de que a carta seja vermelha ou um valete, sabemos


que existem quatro valetes no baralho e, portanto:
Evento B = a carta é um valete:
No baralho, existem duas cartas que são vermelhas e valetes:

Pela propriedade 5, temos:


I.3. Probabilidade condicional e independência
Considere dois eventos A e B. A probabilidade de que o evento A ocorra, dado que o
evento B ocorreu, é conhecida como probabilidade de A condicionada a B, .
Como o evento B já ocorreu, a probabilidade condicionada pode ser obtida
aplicando a regra da probabilidade:

Dividindo o numerador e o denominador da expressão anterior pelo número total de


resultados possíveis do experimento N, temos:

Considere que uma carta vermelha foi retirada de um baralho de 52 cartas. Qual a
probabilidade de que ela seja de ouros?
Evento A = a carta retirada é de ouros
Evento B = a carta retirada é vermelha
Note, pelo exemplo anterior, que, apesar de a probabilidade de retirarmos uma carta de
ouros do baralho ser de 1/4, ao recebermos a informação de que a carta é vermelha, essa
probabilidade aumenta para 1/2.
Através do conceito de probabilidade condicionada de eventos, podemos construir os
seguintes teoremas:
• Teorema do Produto:

• Teorema da Probabilidade Total: Se A1, A2,..., Ak são eventos mutuamente exclusivos e


exaustivos, então, para qualquer evento B de S, temos:

• Teorema de Bayes: Se A1, A2,..., Ak são eventos mutuamente exclusivos e exaustivos, então,
para qualquer evento B de S, temos:
• Dois eventos A e B são estatisticamente independentes quando:

Ou seja, a probabilidade de ocorrência do evento A não é afetada pelo fato de o evento B


ter ocorrido ou não. Note, pelo Teorema do Produto, que:

Uma carta foi retirada de um baralho de 52 cartas. Os eventos “a carta é vermelha” e “a


carta é de copas” são eventos independentes?
Evento A = a carta é vermelha
Evento B = a carta é de copas
Assim, temos:

Portanto, os eventos “a carta é vermelha” e “a carta é de copas” não são eventos


independentes. Ou, de outro modo, o fato de a carta retirada ser vermelha afeta diretamente
a probabilidade de que ela seja de copas.
Uma carta foi retirada de um baralho de 52 cartas. Os eventos “a carta é um valete” e “a
carta é de copas” são eventos independentes?
Evento A = a carta é um valete
Evento B = a carta é de copas

A probabilidade de ocorrência do evento A é:

A probabilidade de ocorrência do evento B é:

A probabilidade da ocorrência simultânea dos eventos A e B (a carta ser um valete de


copas) é:

Assim, temos:

Portanto, os eventos “a carta é um valete” e “a carta é de copas” são eventos


independentes. Ou, de outro modo, o fato de a carta retirada ser um valete não aumenta ou
diminui a probabilidade de que ela seja de copas.
I.4. Variáveis aleatórias
Uma variável aleatória é uma regra que associa um número real aos eventos de um dado
espaço amostral S. Por exemplo, considere uma agência bancária na qual os clientes
aguardam o início do atendimento em fila única. O número de pessoas aguardando em uma
fila bancária varia ao longo do dia de modo aleatório. Sendo X o número de pessoas em
uma fila, então X é uma variável aleatória.
As variáveis aleatórias podem ser discretas ou contínuas. Sendo X uma variável
aleatória, se todos os valores possíveis de X são finitos (ou contáveis), então X é
denominada uma variável aleatória discreta. Por exemplo, no caso da fila do banco, o
número de pessoas em fila é igual a 0, 1, 2, 3,... Portanto, X é uma variável aleatória
discreta, pois pode assumir valores dentro do conjunto contável: 0, 1, 2, 3,...
Se a variável aleatória X pode assumir qualquer valor dentro de um intervalo, então ela é
dita contínua. Voltando ao exemplo da agência bancária, o tempo que um cliente permanece
em fila é aleatório e pode assumir qualquer valor dentro de um intervalo tolerável de
espera. Sendo X o tempo que um cliente aguarda em fila antes do atendimento, então X é
uma variável aleatória contínua.
Considere um certo espaço amostral S. Ao associarmos probabilidades aos resultados de
S, estamos, na verdade, atribuindo probabilidades a valores particulares de uma variável
aleatória X. A distribuição de probabilidades de X representa o modo como as
probabilidades de ocorrência de valores específicos de X se distribuem no intervalo [0,1].
No caso de variáveis aleatórias discretas, a distribuição de probabilidades é representada
através da função probabilidade. No caso contínuo, a distribuição de probabilidades é
representada através da função densidade de probabilidade.
I.5. Variáveis aleatórias discretas
I.5.1. Função probabilidade e função de repartição

A função probabilidade representa a probabilidade de que ou .

A função de repartição, ou acumulada F(x), para qualquer variável aleatória X é


definida por: . Para uma variável aleatória discreta, temos:

O problema do jornaleiro (distribuição discreta)


Um vendedor de jornais deseja determinar quantos jornais estocar em sua banca para as
vendas de um dia. Pela sua experiência, ele sabe que a demanda, representada pelo número
de clientes interessados na compra do jornal ao longo do dia, tem uma distribuição de
probabilidades como a indicada na Tabela I.1.

Tabela I.1 – Distribuição de probabilidades da demanda por jornais

Número de Clientes xk Probabilidade

10 0,10
20 0,15
30 0,25
40 0,35
50 0,10
60 0,05

Se o jornaleiro deseja saber qual a probabilidade de que apareçam, no máximo, 30


clientes, deve calcular:

A função de repartição para a demanda está representada graficamente na Figura I.2.


Figura 1.2 – Função repartição da demanda por jornais.

I.5.2. Média e variância


A média, ou valor esperado E(X), de uma variável aleatória é uma importante medida de
posição. Para uma variável aleatória discreta, temos:

A variância V(X) de uma variável aleatória é uma medida de dispersão, que nos dá uma
ideia de como os valores assumidos pela variável aleatória estão distribuídos em torno da
média. A variância nada mais é do que a média dos quadrados dos desvios, ou seja, a média
da variável aleatória . Assim, temos:

Para o caso do jornaleiro, a média de clientes por dia é dada por:

Portanto, a média, ou valor esperado fica:

clientes

A variância é dada por:

Portanto, a variância2 vale:


clientes2
I.6. Variáveis aleatórias contínuas
I.6.1. Função densidade de probabilidade e função de repartição
A função densidade de probabilidade é que caracteriza as distribuições de
probabilidades de variáveis aleatórias contínuas. Dada uma variável aleatória X, a sua
função densidade de probabilidade f(x) é uma função contínua, tal que:

A função de repartição, ou acumulada, F(x), de uma variável aleatória contínua é dada


por:

Note que, ao derivarmos a expressão anterior, temos:

O problema do jornaleiro (distribuição contínua)


O jornaleiro do exemplo anterior descobriu que, na verdade, a distribuição da demanda
diária por jornais na sua banca é contínua e tem a seguinte função densidade de
probabilidade:
Se o jornaleiro deseja saber qual a probabilidade de vendas entre 30 e 40 jornais, temos:

A Figura I.3 ilustra a função de repartição do exemplo.


Figura I.3 – Função de repartição para a demanda por jornais.

I.6.2. Média e variância


Para uma variável aleatória contínua, a média, ou valor esperado E(X), é dada por:

A variância de uma variável aleatória contínua é dada por:


A variância também pode ser obtida pela relação equivalente:

Para o caso do jornaleiro, a média de clientes é dada por:

Portanto:

clientes

A variância vale:

clientes
I.7. Estimação de parâmetros de funções: o método da
máxima verossimilhança
Na Simulação de Eventos Discretos, muitas vezes precisamos selecionar um modelo
estatístico que represente um conjunto de dados coletados. Uma das tarefas envolvidas é
estimar os parâmetros do modelo. O método da máxima verossimilhança,3 apresentado pelo
geneticista e estatístico R. A. Fisher em 1922,4 é um dos métodos mais populares5 para a
estimação de parâmetros de uma distribuição conhecida por um conjunto de observações
coletadas.
Toda distribuição estatística possui constantes, denominadas de parâmetros, que
governam a forma da função densidade de probabilidade da distribuição. A distribuição
normal (Apêndice VII), por exemplo, possui como parâmetros a média µ e a variância .

Sabe-se que, quanto maior a relação , mais dispersos estão os valores da distribuição, e

a forma de “sino”, típica da distribuição normal, assume uma aparência mais “larga”. O
objetivo do método da máxima verossimilhança é estimar esses parâmetros a partir de um
conjunto de dados observados.

O princípio da máxima verossimilhança


Suponha que conhecemos n variáveis i.i.d. , um conjunto de valores
observados a partir da variável aleatória X, um conjunto de k parâmetros
desconhecidos e uma função densidade de probabilidade conjunta
. O princípio da máxima verossimilhança pode ser colocado como
(ELIASON, 1993): dado um conjunto de observações para a variável
aleatória X, encontre os parâmetros que maximizam a função densidade
de probabilidade conjunta .
Como os elementos pertencentes a X são independentes, a função densidade de
probabilidade conjunta pode ser escrita como a multiplicação das distribuições marginais,
definindo a função de máxima verossimilhança :

O valor que soluciona o problema de otimização anterior é denominado estimador de


máxima verossimilhança, sendo usualmente representado por .

Distribuição discreta
Uma moeda foi lançada cinco vezes. Nos primeiro, segundo e terceiro lançamentos, a
face obtida foi a cara (K), e, nos outros dois, a face obtida foi a coroa (C). Definido p como
a probabilidade de que a face obtida em um lançamento ao acaso seja “cara”,
,e se a face obtida for cara, e 0, caso contrário, então, os valores observados na
amostra de lançamentos foram:

No exemplo, o parâmetro a ser estimado é a probabilidade p de a face obtida ser “cara”,


ou seja: . A função densidade de probabilidade conjunta é dada por:

Para maximizarmos a função anterior, basta igualarmos a zero sua derivada em p. Uma
maneira mais adequada de realizar isso é resolvendo o problema para o logaritmo natural
da função :

A estimativa de p é , que é denominado estimador de máxima verossimilhança de

p.

O resultado anterior pode ser facilmente generalizado, para o caso de m sucessos em n


tentativas:

Distribuição contínua

Considere que é uma amostra obtida a partir de uma distribuição normal.


Os parâmetros a serem estimados agora são dois, a média µ e a variância , ou seja,
. A função de máxima verossimilhança neste caso é:

Ou de outra maneira:
A maximização da função de máxima verossimilhança será feita novamente pelo seu
logaritmo natural:

Derivando em µ e σ, temos:
O estimador de máxima verossimilhança para é:

A Tabela I.2 apresenta estimadores sugeridos para algumas das distribuições comumente
utilizadas na simulação, obtidos a partir do método da máxima verossimilhança.
Para outras distribuições, o leitor pode consultar Banks et al. (2001) e Law e Kelton
(1991).

Tabela I.2 – Estimadores de máxima verossimilhança para algumas das distribuições mais
utilizadas na simulação
Distribuição Parâmetros Estimadores de máxima verossimilhança

, m sucessos em n tentativas
Binomial p
Normal

Exponencial λ

Poisson λ

Lognormal após retirar o logaritmo natural dos dados


Referências bibliográficas
ALDRICH, John. R. A. Fisher and the making of maximum likelihood 1912-1922. Statist.
Sci. v. 12, n. 3, p. 162-176, 1997.
BOTTER, Denise A.; PAULA, Gilberto A.; LEITE, José G.; CORDANI, Lisbeth K.
Noções de Estatística – com apoio computacional. São Paulo: Instituto de Matemática
e Estatística da USP, 1996.
BANKS, Jerry; CARSON, John S.; NELSON, Barry L.; NICOL, David M. Discrete-event
system simulation. 2. ed. Upper Sandle River: Prentice-Hall International Series in
Industrial and System Engineering, 2001.
DEVORE, Jay. Probability and statistics for engineering and the sciences. 5. ed.
Pacific Grove: Duxbury Press, 2000.
ELIASON, Scott R. Maximum likelihood estimation: logic and practice. Quantitative
Applications in Social Sciences Series. Newbury Park: Sage Publications Inc., 1993.
KELTON, David W.; SADOWSKI, Randall P.; SADOWSKI, David. Simulation with
Arena. Boston: McGraw Hill, 1998.
LAW, Averill M.; KELTON, David W. Simulation, modeling & analysis. 2. ed. Nova
York: McGraw-Hill, 1991.
NETO, Pedro L. C. Estatística. São Paulo: Edgar Blücher Ltda., 1986.
Apêndice II

Introdução à Teoria das Filas

Este Apêndice pretende ser uma breve introdução à Teoria das Filas. Para um
aprofundamento dos conceitos apresentados, aconselha-se ao leitor a consulta das
referências sugeridas ao final do apêndice.
Você se lembra da última vez em que perdeu parte do seu precioso tempo aguardando em
uma fila? Talvez tenha sido no supermercado, no banco, no caixa eletrônico, no trânsito, no
restaurante ou mesmo na internet (esperando por atendimento online ou em algum servidor
de jogos...). Para a maioria das pessoas, o tempo gasto em uma fila vai do “indesejável” ao
“Isto é um absurdo! Será que eles não poderiam colocar mais funcionários atendendo? ”.
No início do século XX, Agner Krarup Erlang, um engenheiro de telecomunicações
dinamarquês, iniciou o estudo do congestionamento e dos tempos de espera para a
realização de ligações telefônicas, iniciando assim a chamada Teoria das Filas. A Teoria
das Filas não é um método de otimização estrita (como a programação linear, por exemplo),
mas sim uma ferramenta que se preocupa com a elaboração e a solução de modelos
matemáticos que representem analiticamente o processo de formação de fila. Os modelos
da Teoria das Filas procuram fornecer informações como:
• Tempo médio de espera de um elemento em fila;
• Tempo médio de permanência de um elemento no sistema;
• Número médio de elementos no sistema e na fila;
• Nível médio de ocupação do sistema de atendimento;
• Probabilidade de formação de fila.
Outras características também podem ser calculadas, como:
• Distribuição estatística do tempo de espera em fila;
• Distribuição estatística do número de clientes no sistema.

O procedimento para o estudo de um problema de fila pode ser resumido em quatro


etapas:
• Identificar e relacionar as variáveis que condicionam o problema;
• Identificar as distribuições probabilísticas dos processos de chegada e atendimento das
entidades;
• Aplicar a Teoria das Filas ou técnicas de simulação probabilística;
• Analisar as respostas e modificar os parâmetros do problema, buscando verificar as
alterações na operação do sistema.
II.1. Conceitos fundamentais
Toda fila é gerada através de dois processos: processo de chegadas e processo de
atendimentos. Normalmente o processo de chegadas é representado pela taxa média de
chegadas de clientes no sistema, simbolizada pela letra grega λ, e o processo de
atendimentos é representado pela taxa de média de atendimentos, simbolizada pela letra
grega µ.
Para facilitar o estudo analítico dos modelos de fila, assume-se, na maioria dos casos,
que os processos de chegada e atendimento seguem distribuições exponenciais. Quando esse
tipo de premissa não pode ser assumida, a tendência é do aumento da dificuldade de se
construir expressões matemáticas para os principais parâmetros da Fila. Este Apêndice vai,
por meio de exemplos, tratar apenas os casos em que os processos de chegadas e/ou
atendimentos possam ser assumidos como exponenciais.
Modelos de fila podem ter várias configurações. As mais estudadas são aquelas em que a
fila é única, com um único servidor ou com diversos servidores, como ilustra a Figura II.1.
Figura II.1 – Esquematização de modelos de filas única com 1 ou mais servidores.

Ao entrar em um sistema de fila, um cliente poderá ter de esperar em fila por algum
tempo até que um servidor esteja disponível para atendê-lo. Contudo, nem sempre os
clientes são atendidos na ordem de chegada, já que as filas são sempre regidas por algumas
regras de funcionamento, denominadas disciplinas de serviço. Entre as disciplinas mais
comumente utilizadas, destacam-se:
• FCFS (first-come, first-served). Primeiro a chegar, primeiro a ser atendido: os clientes
são atendidos na ordem em que chegam. Trata-se da disciplina mais comum em sistemas
que envolvem o atendimento de pessoas. Quando alguém “fura a fila”, está
desrespeitando a regra FCFS (e deveria ser sumariamente enforcado);
• LCFS (last-come, first-served). Último a chegar, primeiro a ser atendido. Aparentemente
pouco comum, esta regra é bem conhecida de moradores do último andar de um prédio
(você saberia explicar por quê?);
• SIRO (served in random order). Atendimento aleatório dos elementos em fila, comum em
um balcão de bar;
• GD (generic discipline). Disciplina genérica de atendimento, explicada por um conjunto
próprio de regras. Um exemplo bastante comum no Brasil é a regra das “pulseiras
coloridas” utilizada para priorizar o atendimento de pacientes em hospitais.

Outro conceito importante é o de estado estacionário. Considere, por exemplo, a


lanchonete de uma faculdade em que o proprietário deseja determinar quantos caixas de
pagamentos deve colocar à disposição de seus clientes. Pela sua experiência, ele sabe que
existem horários de pico de atendimento (almoço ou jantar) em que a taxa de chegadas de
clientes aumenta repentinamente. Em uma situação como essa, fica a dúvida: o sistema deve
ser estudado em um intervalo de tempo curto (somente nos horários de pico) ou longo
(contemplando o dia inteiro)?
A escolha do horizonte de tempo depende de uma análise empírica dos dados. Se a
variação da taxa de surgimento de clientes for alta a ponto de comprometer os valores
médios, de fato, a análise forçosamente deverá ser realizada para um período curto de
tempo.
No caso do restaurante, por exemplo, se já existia alguma fila de atendimento às 11h30
(início do horário do almoço), essa fila pode nunca se dissipar ao longo da próxima hora,
afetando diretamente o desempenho do sistema dentro do período de análise. Neste caso, o
sistema é afetado diretamente pela sua condição inicial (fila já existente) e deve ser
analisado no seu regime transitório, que é o período em que o comportamento do sistema é
dependente das suas condições iniciais.
Por outro lado, se as condições iniciais do sistema se dissipam, ou seja, se o período de
análise é suficientemente longo para que as condições iniciais não afetem o comportamento
médio do sistema, a análise pode ser feita apenas para o estado estacionário. Devido à
natureza matemática do problema, o regime transitório é de análise extremamente difícil e
geralmente não é abordado nos textos introdutórios da Teoria das Filas.

Indicadores básicos de fila


Esta seção relaciona alguns indicadores básicos ou medidas de desempenho para
sistemas de fila. É importante notar que, quando os clientes ou elementos em fila são
atendidos pelos servidores, eles não se encontram mais em fila, enquanto a denominação de
“sistema” compreende tanto a fila quanto os clientes já em atendimento. São medidas de
desempenho usuais de sistemas de fila:
• L: número médio de elementos no sistema (tanto em fila quanto em atendimento no
servidor);
• Lq: número médio de elementos em fila;
• Ls: número médio de elementos sendo atendidos (note que L = Lq + Ls);
• W: tempo médio de espera no sistema;
• Wq: tempo médio de espera em fila;
• P: taxa de utilização do servidor ou índice de congestionamento do sistema;
• Po: probabilidade de o sistema estar vazio ou probabilidade de um novo cliente encontrar
o sistema vazio;
• Pj: probabilidade de existirem exatamente j elementos no sistema;
• P[≥ k no sistema]: probabilidade de haver k, ou mais, elementos no sistema;
• P[W≤T]: probabilidade de um cliente esperar um tempo máximo T no sistema;
• P[Wq≤T]: probabilidade de um cliente esperar um tempo máximo T em fila.

Notação de Kendall-Lee
A caracterização de um sistema de fila é dada pela notação de Kendall-Lee, que
representa as principais características do sistema por meio de uma sigla com até seis
informações:
(a/b/c):(d/e/f)

Onde:
• a: indica o processo de chegadas dos elementos aos postos de atendimento, definido pela
distribuição estatística do intervalo entre chegadas. São utilizadas as seguintes
abreviações padronizadas:
• M: os intervalos de tempo entre chegadas sucessivas são variáveis aleatórias
independentes, identicamente distribuídas (i.i.d.) com distribuição exponencial;
• D: os intervalos de tempo entre chegadas sucessivas são i.i.d. e determinísticos;
• Ek: os intervalos de tempo entre chegadas sucessivas são variáveis aleatórias i.i.d. com
distribuição Erlang de parâmetro k;
• G: os intervalos de tempo entre chegadas sucessivas são variáveis aleatórias i.i.d. com
distribuição genérica, definida por sua média e variância;
• b: indica qual o processo de atendimento dos elementos em cada posto de serviço,
definido pela distribuição estatística dos tempos de serviços, com as mesmas
abreviações utilizadas para os tempos entre chegadas sucessivas (M, I, Ek e G);
• c: é o número de postos de serviços em paralelo;
• d: é a disciplina de atendimento dos elementos da fila, de acordo com a descrição feita
anteriormente neste Apêndice (FCFS, LCFS, SIRO e GD);
• e: é o número máximo de elementos permitido no sistema (tanto em fila quanto nos postos
de atendimento). Situação comum quando o espaço físico da fila é limitado a e clientes
no máximo;
• f: é o número de elementos que frequentam o sistema. Em sistemas abertos o número de
elementos é usualmente infinito; contudo, em sistemas fechados, por exemplo, a fila que
se forma ao se entrar em uma sala de aula, o número de elementos é limitado e conhecido
(no exemplo, o número de alunos matriculados na aula).

Convém mencionar que, em muitas situações, a fila é especificada apenas pelas três
primeiras informações (a/b/c), admitindo-se que o primeiro cliente a chegar é o primeiro a
ser atendido, que não há limitação na capacidade do sistema e que a população é infinita.
Por exemplo, a notação M/G/3/FCFS/5/∞ representa um sistema em que:
• Os tempos entre chegadas sucessivas são exponencialmente distribuídos;
• Os tempos de atendimento seguem uma distribuição genérica;
• Existem três servidores que podem realizar atendimentos simultâneos;
• A disciplina de serviço é tal que o primeiro a chegar é o primeiro a ser atendido;
• No máximo cinco clientes podem estar no sistema simultaneamente;
• O número de clientes que podem frequentar o sistema é infinito.
II.2. Fórmula de Little: a fórmula geral das filas
Considere qualquer sistema de filas em estado estacionário, onde:
• λ é taxa média de chegadas de clientes ao sistema [clientes/unidade de tempo];
• L é número médio de clientes no sistema (tanto em fila quanto em atendimento) [clientes];
• W é tempo médio de permanência de um cliente no sistema [unidades de tempo].

Neste caso, a fórmula de Little é definida como:

Essa fórmula também pode ser escrita em função do número esperado de clientes na fila
(Lq) e do tempo médio de espera em fila (Wq) ou em função do número médio de clientes
em atendimento (Ls) e do tempo médio de atendimento (Ws):

Um posto bancário recebe uma média de 30 clientes por hora. O tempo médio de
permanência no banco (calculado entre a chegada e a partida de cada cliente) é igual a
cinco minutos. Quantos clientes em média encontram-se no banco? Se cada cliente
permanece no caixa de atendimento em média por um minuto, qual o número médio de
clientes em fila?
Neste exemplo, a taxa de chegadas é de 30 clientes/h, ou seja:
O tempo médio de espera no sistema é de cinco minutos, ou seja:

Para se determinar o número médio de elementos no banco, a aplicação da fórmula de


Little é imediata:

Se cada cliente permanece por um minuto no caixa, então:

E o número médio de clientes em atendimento é obtido diretamente da fórmula de Little:

Como a média de clientes no sistema é a soma da média de clientes em fila com a média
de clientes em atendimento, temos:
II.3. Expressões analíticas para alguns modelos clássicos da
Teoria das Filas
Estas seção apresenta alguns dos principais modelos de fila: M/M/1, M/M/1/c, M/D/1 e
M/M/s.
O modelo M/M/1/c se refere ao modelo que possui capacidade do sistema limitada para
c elementos (há, portanto, desistências caso o sistema esteja cheio); o modelo M/D/1
corresponde ao modelo que possui processo de atendimento determinístico (constante) e o
modelo M/M/s é uma generalização do modelo M/M/1 para considerar s servidores em
paralelo.

Modelo M/M/1
• Intervalos entre chegadas exponencialmente distribuídos;
• Intervalos de atendimento exponencialmente distribuídos;
• Um servidor de atendimento.

Parâmetro Expressão

Índice de ocupação do sistema


Probabilidade de o sistema estar livre

Probabilidade de j elementos no sistema

Probabilidade de mais do que k elementos no sistema

Média de elementos em fila

Média de elementos em atendimento

Média de elementos no sistema

Os valores de W, Wq eWs podem ser derivados pela fórmula de Little.

Observação

Este modelo (e quase todos os demais) exige que o sistema seja estável; ou seja, que
a fila não cresça indefinidamente ao longo do tempo, apresentando, assim, um
comportamento médio definido. Matematicamente, esta condição de estabilidade é
atingida se o índice de congestionamento ρ for menor que 1.
Em um posto bancário, que possui apenas um caixa de atendimento, os clientes chegam a
uma taxa de 50 clientes por hora. Um caixa atende, em média, 60 clientes por hora.
Considere que as distribuições dos intervalos de tempo entre chegadas e dos tempo de
atendimento são exponenciais.
Neste caso, os indicadores básicos de desempenho seriam:

(como < 1, então o sistema é estável)

clientes

clientes

cliente
Da fórmula de Little:

Note que os valores de Ls e Ws também poderiam ter sido calculados pelas expressões:
e .

Modelo M/M/1/c (estável para qualquer valor de r)


• Intervalos entre chegadas exponencialmente distribuídos;
• Intervalos de atendimento exponencialmente distribuídos;
• Um servidor de atendimento;
• Capacidade máxima de elementos no sistema: c.
Parâmetro Expressão
Parâmetro Expressão

Taxa efetiva de entrada no sistema

Índice de ocupação do sistema

Probabilidade do sistema estar livre

Probabilidade de j elementos no sistema


Probabilidade de mais do que k elementos no sistema

Média de elementos em fila

Média de elementos em atendimento

Média de elementos no sistema

Novamente, os valores de W, Wq e Ws podem ser derivados pela fórmula de Little,


porém, utilizando a taxa efetiva de entrada no sistema, λc=λ(1-pc), em vez da taxa de
chegadas λ. Isso ocorre porque parte dos elementos que procuram o sistema (com taxa
média igual a λ) o encontrarão com sua capacidade esgotada (o que ocorre com
probabilidade igual a pc), fazendo com que apenas uma fração λ(1-pc) efetivamente entre
no sistema.

O posto bancário do exemplo anterior comporta apenas seis clientes (havendo cinco
clientes em fila, o próximo desistirá).
Neste caso, o despenho geral do sistema mudaria para (dado que ):

cliente

Probabilidade de o sistema estar cheio é o mesmo que a probabilidade de que seis


clientes estejam no sistema (5 em fila e 1 em atendimento):
Taxa efetiva de chegadas:

Da fórmula de Little podem-se obter os tempos de médios de permanência:

Note que, a cada hora, dos 50 clientes que chegam para serem atendidos, de fato entram
no posto bancário 46,1. Assim, o posto bancário por ter uma capacidade limitada em seis
clientes perde, a cada hora, cerca de quatro clientes por “congestionamento” do sistema.
Modelo M/D/1
• Intervalos entre chegadas exponencialmente distribuídos;
• Intervalos de atendimento determinísticos;
• Um servidor de atendimento;

Parâmetro Expressão

Índice de ocupação do sistema

Probabilidade de o sistema estar livre

Probabilidade de j elementos no sistema

Probabilidade de mais do que k elementos no sistema

Média de elementos em fila

Média de elementos em atendimento

Média de elementos no sistema


Mais uma vez, os valores de W, Wq e Ws podem ser derivados pela fórmula de Little.
Se o tempo de atendimento no posto bancário fosse constante, os indicadores básicos de
desempenho seriam:

(como < 1, então o sistema é estável)

Da fórmula de Little:
Modelo M/M/s
• Intervalos entre chegadas exponencialmente distribuídos;
• Intervalos de atendimento exponencialmente distribuídos;
• s servidores de atendimento em paralelo.

Parâmetro Expressão

Índice de ocupação do sistema

Probabilidade de o sistema estar livre


Probabilidade de j elementos no sistema

Probabilidade de existirem s ou mais elementos no


sistema

Média de elementos em fila

Média de elementos em atendimento

Média de elementos no sistema

Para facilitar os cálculos, a Tabela II.1 já traz calculados os valores da probabilidade


em função do número de servidores e da relação :

Tabela I.1 – Valores de p0 para a fila M/M/s

Número de servidores
λ/µ 2 3 4 5
0,15 0,8605 0,8607 0,8607 0,8607
0,20 0,8182 0,8187 0,8187 0,8187
0,25 0,7778 0,7778 0,7778 0,7778
0,30 0,7391 0,7407 0,7408 0,7408
0,35 0,7021 0,7046 0,7047 0,7047
0,40 0,6667 0,6701 0,6703 0,6703
0,45 0,6327 0,6373 0,6376 0,6376
0,50 0,6000 0,6061 0,6065 0,6065
0,55 0,5686 0,5763 0,5769 0,5769
0,60 0,5385 0,5479 0,5487 0,5488
0,65 0,5094 0,5209 0,5219 0,5220
0,70 0,4815 0,4952 0,4965 0,4966
0,75 0,4545 0,4706 0,4722 0,4724
0,80 0,4286 0,4472 0,4491 0,4493
0,85 0,4035 0,4248 0,4271 0,4274
0,90 0,3793 0,4035 0,4062 0,4065
0,95 0,3333 0,3636 0,3673 0,3678
1,20 0,250’0 0,2941 0,3002 0,3011
1,40 0,1765 0,2360 0,2449 0,2463
1,60 0,1111 0,1872 0,1993 0,2014
1,80 0,0526 0,1460 0,1616 0,1646
2,00 0,1111 0,1304 0,1343
2,20 0,0815 0,1046 0,1094
2,40 0,0562 0,0831 0,0889
2,60 0,0345 0,0651 0,0721
2,80 0,0160 0,0502 0,0581
3,00 0,0377 0,0466

3,20 0,0273 0,0372


3,40 0,0186 0,0293
3,60 0,0113 0,0228
3,80 0,0051 0,0174
4,00 0,0130
4,20 0,0093
4,40 0,0063
4,60 0,0038
4,80 0,0017

Se o posto bancário do do exemplo do caso M/M/1 ganha um segundo caixa, os novos


parâmetros de desempenho ficam:

(como < 1, então o sistema é estável)


Da fórmula de Little:
II.4. Análise econômica de filas
As decisões envolvendo o dimensionamento de filas geralmente são baseadas em uma
análise subjetiva de suas características operacionais. Por exemplo, um administrador
escolhe certos parâmetros de desempenho da fila, tais como: número médio de pessoas em
fila ou tempo máximo de permanência em fila. Utilizando os modelos de filas apresentados
nas seções anteriores, o administrador procura determinar o número de servidores
necessários de modo a atender aos parâmetros previamente estabelecidos.
Outra forma de análise considera as implicações econômicas da fila, através dos custos
envolvidos. Basicamente, o custo total de se operar uma fila será a soma do custo de
atendimento com o custo associado à espera. Considere a seguinte notação:
• cw: custo de espera de um elemento por unidade de tempo;
• L: número médio de elementos no sistema;
• cs: custo de atendimento por unidade de tempo para cada servidor;
• s: número de servidores;
• CT: custo total associado ao sistema, por unidade de tempo;
• CA: custo do atendimento por unidade de tempo;
• CE: custo de espera pelo atendimento por unidade de tempo.

Para o caso do exemplo do posto bancário, o custo total de operação seria dado por:
($/unidade de tempo)

O custo de atendimento é o mais fácil de se determinar por se tratar do custo de se operar


um servidor (caixa de banco, garçom etc.) Contudo, o custo de espera é, geralmente, de
difícil determinação. Em um restaurante por quilo, por exemplo, o custo de espera não é um
custo direto para o seu proprietário, pois não é algo que ele pague. Contudo, se ele permitir
longas filas de espera, os clientes procurarão outro local para o almoço fazendo com que o
restaurante tenha perdas de vendas, o que, de fato, gera um custo. Usualmente, este valor é
estimado dentro do conceito de perdas de “vendas” ou “negócios” futuros. Algo intangível,
mas que de fato pode ocorrer caso o cliente não fique satisfeito com o tempo em espera.1
A Figura II.2 apresenta a forma geralmente encontrada para as curvas dos custos
discutidos. O custo de atendimento cresce linearmente com o aumento do número de
servidores (supondo que o custo de cada servidor adicional seja constante), enquanto o
custo de espera em fila diminui (já que o atendimento melhora).
Figura II.2 – Exemplo de curvas de custo de espera, atendimento e total para um sistema com presença de filas.

Voltando ao exemplo do posto bancário, se o banco estima que custo da espera em fila é
de R$ 10/cliente/h, valor que é igual ao custo por hora de um atendente, vale a pena ter dois
atendentes no posto?
Para um atendente:

Custo de atendimento/hora = R$ 10,00/h


Custo de espera/hora ou R$ 41,67/h

Custo total = R$ 10,00/h + R$ 41,67/h = R$ 51,67/h.

Para dois atendentes:


Custo de atendimento/hora = R$ 20,00.
Custo de espera/hora =10Lq = 10 × 0,1751 = R$ 1,75
Custo total = R$ 20,00/h+R$ 1,75/h= R$ 21,75/h.
Portanto, o custo total de operação é mais baixo com dois atendentes.
Na prática, determinar o custo de espera de cada cliente em fila não é uma tarefa trivial.
Alternativamente, pode-se estimar qual seria o custo horário de espera por cliente que
justificaria o acréscimo de um atendente no sistema.
Referências bibliográficas
KLEINROCK, L. Queuing Systems. Vol. 1 e 2. Nova York: Wiley, 1975.
ROSS, S. Applied Probability Models with Optimization Applications. São Francisco:
Holden-Day, 1970.
WINSTON, Wayne L. Operations research: applications and algorithms. Belmont:
Duxbury Press, 1994.
Apêndice III

Geração de números aleatórios

O objetivo deste Apêndice é apresentar uma breve introdução de algumas técnicas


utilizadas no processo de geração de números aleatórios. Há excelentes fontes de referência
para um estudo introdutório da geração de números aleatórios, como Knuth (1997), Press et
al. (2002) e Anderson (1990).
Considere, por exemplo, um modelo de simulação de um caixa eletrônico. Basicamente,
existem dois fenômenos aleatórios importantes: o processo de chegada de clientes no
sistema e o processo de atendimento dos clientes no caixa. Um modelo computacional de
simulação para esse sistema deve, portanto, ser capaz de representar tais fenômenos. Em um
primeiro momento, devemos descobrir quais distribuições probabilísticas representam
melhor tanto o processo de chegada quanto o de atendimento dos clientes, utilizando as
técnicas discutidas no Capítulo 2. Em uma etapa posterior, com o modelo computacional já
pronto e em condições de uso, devemos esperar que, toda vez que ele seja “rodado”,
números aleatórios que representem os processos de chegada e de atendimento dos clientes
sejam gerados de acordo com as distribuições probabilísticas previamente escolhidas.
Se, por exemplo, o tempo de atendimento no caixa for exponencialmente distribuído, o
modelo computacional deverá gerar tempos de atendimento aleatórios que, quando testados,
sejam aceitos como exponencialmente distribuídos.
Internamente, no computador, o processo de construção de uma distribuição
probabilística é desenvolvido, de modo geral, em duas etapas (Fig. III.1):
• Sorteia-se um número aleatório uniformemente distribuído entre 0 e 1.
• Utilizando a função repartição da distribuição de probabilidade desejada, transforma-se
o número aleatório uniformemente distribuído em um valor segundo a distribuição
probabilística desejada.
Figura III.1 – Esquema básico do processo de geração de números aleatórios.

Os números aleatórios pertencentes ao intervalo [0,1] são calculados por algoritmos que
partem, geralmente, de um valor inicial denominado semente. Tais algoritmos geram os
chamados números pseudoaleatórios. Uma interessante discussão filosófica começa aqui.
Os matemáticos preferem diferenciar um número genuinamente aleatório de um número
pseudoaleatório. Conceitualmente, o número aleatório seria aquele gerado por um processo
que não pode ser repetido. Por exemplo, a série de números do sorteio da loteria nunca se
repete (caso contrário, todos nós já saberíamos o resultado de antemão). Um número
aleatório gerado pelo computador, por exemplo, não é exatamente aleatório, pois pode ser
repetido; basta que utilizemos o mesmo algoritmo, com a mesma semente, e o número
“aleatório” já é previamente conhecido. Daí a denominação “pseudoaleatório”. Doravante,
quando nos referirmos aos números aleatórios, estaremos falando, na verdade, de números
pseudoaleatórios.
III.1. Métodos para geração de números aleatórios
Existem diversos métodos para geração de números aleatórios. Atualmente, diversos
equipamentos eletrônicos possuem geradores de números aleatórios: computadores,
calculadoras de mão, relógios de pulso, dentre outros. Contudo, antes do surgimento dos
computadores, os pesquisadores forçosamente precisavam utilizar dados, bolas numeradas
em urnas, grandes tabelas impressas de números aleatórios etc. Em 1927, Leonard H. C.
Tippett publicou a primeira tabela de números aleatórios de que se tem notícia, com 41.600
números, obtidos ao se retirarem os dígitos do meio dos valores das áreas das paróquias
existentes na Inglaterra.
Em 1946, John von Neumann apresentou o método do meio-quadrado para a geração de
números aleatórios. O método é bem simples: a cada iteração, eleva-se um número
“semente” ao quadrado e extraem-se os seus dígitos do meio. Esse novo número é utilizado
como semente para a iteração seguinte, e o processo se repete. Por exemplo, considere o
número semente r1= 76. Elevando-o ao quadrado, temos:

r21 = (76)2 = 5.776

Os dígitos do meio de “5776” formam o número “77”, que é utilizado como semente para
a próxima iteração:
r22 = (77)2 = 5.929

r23 = (92)2 = 8.464

Assim, será gerada a sequência de números aleatórios de dois dígitos: 76, 77, 92, 46, 11,
12, 14,... Contudo, o método do meio-quadrado é pouco eficiente, gerando ciclos (repetição
da mesma sequência de números) em intervalos1 muito curtos; ademais, toda vez que o
número gerado for igual a zero, será necessário escolher uma nova semente.
A Tabela III.1 relaciona os cálculos dos 15 primeiros números gerados pelo método do
meio-quadrado, quando a semente utilizada é o número “76”.

i ni ni2

Tabela III.1 – Sequência de 15 números aleatórios gerados pelo método do meio-quadrado. Note
que os números de três dígitos ou menos receberam “0” à frente
i ni ni2

1 76 5776
2 77 5929
3 92 8464
4 46 2116
5 11 0121
6 12 0144
7 14 0196
8 19 0361
9 36 1296
10 29 0841
11 84 7056
12 05 0025
13 02 0004
14 00 0000
15 00 0000

Note que, a partir do 14o número, a sequência fica igual a zero indefinidamente. Essa
situação pode ser parcialmente contornada utilizando-se números com 10 ou mais dígitos.
O método mais popular para a geração de números aleatórios é o método da
congruência2 ou resíduo. Esse método trabalha a partir de quatro parâmetros: o
multiplicador, a; a constante aditiva, c; o módulo, M; e a semente inicial r0. O método segue
estes passos:
Passo 1: Escolha os valores a, c e M. Usualmente, M é escolhido o maior possível.
Passo 2: Escolha a semente r0, tal que:

Passo 3: Calcule o próximo número aleatório pela expressão:

onde: é o módulo (resto da divisão inteira) da divisão de x por y (p. ex.,


).

Passo 4: Substitua r0 por r1 e volte ao passo anterior, de modo a construir a sequência de


números aleatórios desejada.

Esse algoritmo constrói uma sequência de números aleatórios entre 0 e M-1. Com “boas
escolhas” de a e c, o período de repetição da sequência pode chegar até M.3
Para obtermos números aleatórios uniformemente distribuídos no intervalo [0,1], basta
realizarmos a divisão:
Para obtermos números aleatórios uniformemente distribuídos no intervalo [0,1), a
divisão é ligeiramente diferente da anterior:

A Tabela III.2 resume a aplicação do método da congruência quando são utilizados os


valores: a = 9; c = 1; M = 17 e r0 = 8. Neste exemplo, a sequência de números se repete em
um intervalo de oito números. Usualmente, trabalha-se com os valores indicados na Tabela
III.3. Na tabela, os valores de M são da forma 2f, onde f é o tamanho em bits do
processador utilizado.

Tabela III.2 – Sequência de 20 números aleatórios obtidos a partir do método da congruência,


com a=9; c=1; M=17; e r0=8
r0 y=9r0+1 r1=y mod 17 r1/17

8 73 5 0,29412
5 46 12 0,70588
12 109 7 0,41176
7 64 13 0,76471
13 118 16 0,94118
16 145 9 0,52941
9 82 14 0,82353
14 127 8 0,47059
8 73 5 0,29412
5 46 12 0,70588
12 109 7 0,41176
7 64 13 0,76471
13 118 16 0,94118
16 145 9 0,52941
9 82 14 0,82353
14 127 8 0,47059
8 73 5 0,29412
5 46 12 0,70588
12 109 7 0,41176
7 64 13 0,76471
Tabela III.3 – Valores usuais utilizados no método da congruência linear
A M c Período de repetição
75 231–1 0 231–2
1.664.525 232 1.013.904.223 232
69.069 232 0 232
6,36414E+18 264 1 264
III.2. Testes de aleatoriedade
Uma vez construída a sequência, ainda fica a questão: podemos aceitar a sequência de
números gerada como aleatória para fins de simulação? Alguns testes podem ser aplicados
para se responder a essa questão; são eles:
• Teste do qui-quadrado, ou de Kolmogorov-Smirnov (Cap. 2), para testar a aderência de
uma distribuição uniforme de números entre 0 e 1 sobre a sequência de números gerada;
• Teste de independência, que verifica se existe correlação entre valores na sequência de
números obtida pelo método empregado.

Observação

Pela própria experiência dos autores e pelos diversos relatos encontrados na


literatura, recomendamos que você, caso necessite utilizar um gerador de números
aleatórios de algum compilador de linguagem de programação, teste antes a
qualidade do gerador. Via de regra, os geradores de números aleatórios encontrados
nos compiladores comerciais são de qualidade duvidosa para aplicações em
simulação. Depois de algumas surpresas desagradáveis, nossa prática atual é
implementar a nossa própria rotina de geração sempre que necessário. Se o leitor
está interessado nas questões relativas à implementação dos algoritmos de geração
de números aleatórios, uma referência fundamental é Press et al. (2002), afinal:
“Geradores de números aleatórios não devem ser escolhidos aleatoriamente.”4
(Ronald Knuth)
III.3. Geração de variáveis aleatórias contínuas
Existem diversas técnicas para geração de valores para variáveis aleatórias contínuas.
Um dos métodos mais populares é o da Transformada Inversa. Dada uma função densidade
de probabilidade f(x) para uma variável aleatória X, o método pode ser resumido nos
seguintes passos (WINSTON, 1994):
Passo 1: Obtenha a função de repartição da variável aleatória através da expressão
(Apêndice I):

Passo 2: Gere um número aleatório r entre 0 e 1.


Passo 3: Faça F(x) = r e resolva em x. A variável x é uma variável aleatória cuja
distribuição é dada pela função densidade de probabilidade f(x).

Considere que x é uma variável aleatória com distribuição exponencial de média T.


Passo 1: Neste caso, a função de repartição da distribuição é:

, onde = 1/T

Passo 2: O número aleatório será r.


Passo 3: Igualando F(x) = r e resolvendo em x, temos:

E o nosso gerador de números aleatórios fica:

A Figura III.2 apresenta a função de repartição da distribuição exponencial de média 4


(ou seja: = 1/4). O número aleatório r no intervalo [0,1] é marcado sobre o eixo vertical do
gráfico da função de repartição. O passo seguinte é “ler” através do gráfico qual ponto x
corresponde ao valor do r escolhido anteriormente.
Figura III.2 – Função de repartição da distribuição exponencial de média 4.

A seguir, veremos como gerar variáveis aleatórias de algumas distribuições contínuas


conhecidas, através de exemplos.

Distribuição Uniforme
Considere que X é uma variável aleatória com distribuição uniforme no intervalo [a, b].
Neste caso, a função de repartição da distribuição é:
Fazendo F(x) = r, temos:

Distribuição Erlang
Se x é uma variável aleatória com distribuição Erlang de ordem k e média T, então x é a
resultante do somatório de k variáveis aleatórias independentes com distribuição
exponencial de média T/k.

Distribuição Normal
Para a obtenção de uma variável x normalmente distribuída com média 0 e variância 1
(normal padrão), deve-se gerar dois números aleatórios r1 e r2 e utilizar o seguinte gerador
aproximado:

Com o valor de x obtido pela expressão anterior, pode-se obter valores para uma
variável aleatória y normalmente distribuída, com média m e desvio-padrão , utilizando a
equação:
III.4. Geração de variáveis aleatórias discretas
O método da Transformada Inversa também pode ser aplicado a variáveis aleatórias
discretas. Neste caso, o método é ligeiramente diferente:
Passo 1: Obtenha a função de repartição da distribuição discreta através da expressão
(Apêndice I):

Passo 2: Gere um número aleatório r pertencente ao intervalo [0,1].


Passo 3: Escolha o menor inteiro i, tal que:

Passo 4: Faça a variável aleatória x ser igual a xi.

A Figura III.3 representa a função de repartição da demanda diária por jornais em uma
banca (Exemplo I.7 do Apêndice I). Dado um número aleatório r, pertencente ao intervalo
[0,1], deve-se identificá-lo no eixo das ordenadas do gráfico da função repartição. A seguir,
identifica-se, no gráfico, a que ponto x do eixo das abscissas corresponde ao número r,
como esquematizado na Figura III.3.
Figura III.3 – Função repartição da demanda por jornais.
Referências bibliográficas
ANDERSON, Stuart L. Random numbers generators on vector supercomputers and other
advanced architectures. SIAM Review, v. 32, n. 2, p. 221-251, 1990.
KNUTH, Donald N. The art of computer programming. Volume 2: Seminumerical
Algorithms. 3. ed.; Reading: Addison-Wesley Professional, 1997.
PRESS, Willian H.; TEUKOLSKY, Saul A.; VETTERLING, Willian T.; FLANNERY, B.
P. Numerical recipes using C: the art of scientific computing. 2. ed., Nova York:
Cambridge University Press, 2002.
WINSTON, Wayne L. Operations research: applications and algorithms. Belmont:
Duxbury Press, 1994.
Apêndice IV

Documentação do projeto e elaboração de


um relatório de simulação

Imagine, por um momento, que você é convidado a dar continuidade a um projeto do qual
não participou desde sua gênese. O que você gostaria que estivesse documentado sobre o
projeto? Se, nesse breve exercício mental, você passar pelos tópicos do sumário deste
livro, notará que, para dar continuidade ao projeto, você depende de que o analista (ou a
equipe) do projeto original tenha documentado as diversas etapas do projeto com boa
riqueza de detalhes; caso contrário, não haverá como retomá-lo, por mais simples que seja o
objetivo da sua continuidade. Um projeto de simulação só está completo com (1) a
apresentação do “Relatório Técnico” – capaz de sintetizar as principais conclusões do
projeto de simulação – e (2) sua documentação completa.
IV.1. A documentação do projeto de simulação
A documentação do projeto é tarefa obrigatória e deve acompanhar todo o seu
desenvolvimento. Ela representa a memória de tudo o que foi realizado no âmbito do
projeto. Existem três razões básicas para realizarmos uma boa documentação:
1. Um projeto mal documentado dificulta sua compreensão por parte do cliente,
diminuindo a confiança em seus resultados e prejudicando sua aplicabilidade;
2. A documentação é uma fonte de informação valiosa para o processo de verificação e
validação, principalmente quando este é feito por pessoas externas ao projeto;
3. Um projeto de simulação pode ser reutilizado, seja pela continuidade do projeto, seja
em projetos futuros de natureza semelhante. Como nem sempre as equipes de projeto
são as mesmas, pois as pessoas mudam de funções dentro da estrutura organizacional,
ou mesmo trocam de organizações, um projeto mal documentado dificilmente será
compreendido por terceiros.

“Documentar” um projeto envolve armazenar, catalogar e descrever de maneira funcional


os seguintes tópicos:
• A especificação do projeto;
• As reuniões realizadas e suas atas;
• Os e-mails e comunicações trocadas ao longo do projeto;
• O modelo conceitual, com as hipóteses e simplificações assumidas;
• O modelo de entrada de dados, com os dados utilizados e todo procedimento
desenvolvido;
• O modelo computacional, com uma descrição detalhada das suas variáveis, atributos,
rotinas etc.;
• A verificação e a validação realizadas;
• Os cenários avaliados e os seus resultados computacionais obtidos com o máximo de
detalhamento possível;
• As apresentações realizadas para a equipe, clientes etc.;
• Os relatórios parciais e o relatório final do projeto.

Evidentemente, boa parte dos tópicos relacionados é facilmente documentável, caso se


utilizem adequadamente as ferramentas da informática. Contudo, o modelo computacional,
por mais avançados que estejam os softwares de simulação, ainda é a parte mais
dispendiosa da documentação. Não basta disponibilizar o modelo computacional: ele deve
estar documentado de tal modo que possa ser alterado, adaptado e atualizado por outros
analistas. A própria literatura sobre documentação de projetos de simulação, apesar de
escassa, enfatiza a documentação do modelo computacional. Gass (1984) destaca a
necessidade de que a documentação exista de tal modo que possa atender às diversas
audiências envolvidas; assim, o autor propõe manuais específicos para o analista, o
programador, o usuário e o gerente do modelo computacional. Orcarsson e Moris (2002)
apontam que o modelo de simulação, particularmente o modelo computacional, pode ser
documentado através das ferramentas de documentação típicas da área de tecnologia da
informação, por exemplo, fluxogramas, linguagens abstratas, como a Unified Modelling
Language (UML), dentre outros. No trabalho de Richter e März (2000), encontramos uma
discussão mais aprofundada sobre a utilização da UML na representação de modelos de
simulação. Cabe ao analista ponderar qual é o grau de detalhamento que será utilizado na
descrição do modelo. Mas também cabe lembrar a máxima: “Quanto menor o grau de
detalhamento que você der à documentação de um projeto, maior será a probabilidade de
precisar dele no futuro!”.
IV.2. O relatório técnico
O relatório técnico representa um dos itens da documentação do projeto. Sendo um
relatório técnico, ele tem características próprias de apresentação, algumas disponíveis
inclusive em norma técnica da ABNT.1 O relatório final deve sintetizar o trabalho executado
no âmbito do projeto em um linguajar técnico e conciso.
Na elaboração de um relatório, direcione-o para quem você está elaborando o relatório.
Seu “cliente”, muitas vezes, não é representado por uma única pessoa, mas por pessoas de
formações diversas e com preocupações organizacionais diferentes. O diretor-presidente de
uma empresa, por exemplo, por mais interessado que esteja nas maravilhas tecnológicas da
simulação, provavelmente não deseja perder tempo tentando descobrir como foi construído
o modelo, qual software foi utilizado, se o modelo era terminal ou não etc. Por outro lado,
ao abrir o relatório de simulação, ele vai querer identificar rapidamente quais os impactos
causados pelo estudo na organização: qual o custo, qual o aumento no lucro, qual o aumento
de produção esperado, quantos trabalhadores serão demitidos ou contratados etc. Enfim, o
diretor-presidente deseja conhecer as principais conclusões e recomendações obtidas
através da simulação.
Dentro da estrutura organizacional dessa mesma empresa, encontraremos, possivelmente,
um “técnico” responsável pelo acompanhamento do projeto. Esse técnico desejará
reconhecer no relatório aspectos que identifiquem que o modelo é válido – que representa
corretamente o sistema em estudo. Para que esse profissional tenha o seu desejo atendido, o
relatório de simulação deve contemplar aspectos específicos que caracterizam o modelo, a
descrição do sistema simulado, as entradas utilizadas, o tratamento de dados utilizado, os
níveis de confiança, o modelo computacional, as saídas do modelo e como elas foram
analisadas etc.2
Você pode estar pensando que o relatório será um belo “tijolo” de 300 folhas de papel.
Não é bem assim. O relatório reflete o trabalho na busca de um objetivo. Se você focá-lo
nesse objetivo, verá que elaborar um relatório não é o fim do mundo.
Antes de começarmos a parte “técnica” de elaboração do relatório, convém atentarmos
para o fato de que os softwares de simulação atuais dispõem de “geradores de relatórios”
automáticos; contudo, tais relatórios devem ser utilizados com muito cuidado e inteligência.
A título de ilustração, o software Arena, da Rockwell Software, possui um gerador de
relatórios automático, baseado no “Crystal Reports”. Para o modelo de simulação do
Exemplo 6.2, o Arena gerou um relatório com 6.930 páginas! Obviamente, o fabricante do
software não disponibilizou essa ferramenta com a finalidade de gerar relatórios em
substituição ao relatório técnico gerencial, mas com a intenção de disponibilizar ao analista
todas as informações necessárias para que ele possa construir o seu próprio relatório de
maneira rápida. Através de comandos do tipo “copiar e colar” ou de “importação e
exportação” de arquivos, podemos extrair do relatório gerado pelo software tabelas e
gráficos já prontos e colocá-los no nosso relatório final, ganhando tempo e qualidade na
apresentação.3
Estruturação de um relatório de simulação
Não se pretende aqui fornecer a descrição formal de um relatório técnico; para isso,
podem ser consultadas bibliografias específicas, tais como a norma NBR 10.719 (NB 887)
da ABNT. Nosso objetivo é apresentar uma possível estruturação para o relatório de
simulação que, pela nossa prática e experiência, tem se mostrado adequada. Não estamos
apresentando regras obrigatórias, mas sugestões para o desenvolvimento do relatório. Na
verdade, a natureza de cada projeto vai determinar a estruturação mais adequada do
relatório.
Como sugestão, o relatório deve contemplar a seguinte estrutura básica:
• Carta de apresentação;
• Capa;
• Sumário;
• Síntese do relatório;
• Introdução;
• Corpo:
• Descrição dos sistemas simulados;
• Objetivos;
• Resultados obtidos;
• Conclusões;
• Anexos.
Nos itens a seguir, vamos descrever sucintamente cada uma das partes dessa estrutura.

Carta de apresentação
Coloque uma carta de apresentação que comunica a entrega do relatório e delineia as
principais conclusões do relatório, tais como: ganho de produtividade, custos totais, lucros,
impactos etc.

Sumário
Deve aparecer em todo relatório técnico. O sumário indica as seções em que está
dividido o texto. Anexos e/ou apêndices devem aparecer posteriormente à indicação das
seções. Por último, devem aparecer as referências bibliográficas, índices remissivos e
glossários. Se o relatório for dividido em partes, cada parte deve possuir o seu próprio
sumário.

Síntese do relatório
Esta seção não é obrigatória, mas sugerimos, para sua conveniência, que se coloque uma
página de rosto onde são destacados os seguintes aspectos: itens de identificação interna
(número, data, nome do projeto etc.), data, objetivo sucinto do trabalho, descrição sucinta
do sistema simulado, resumo das conclusões.

Introdução
Nesta primeira seção do corpo do texto, são apresentados o problema e a necessidade
do trabalho. A introdução não deve apresentar a metodologia utilizada nem as conclusões
obtidas. Sugere-se que, para facilitar a leitura, os objetivos do trabalho sejam descritos em
uma seção própria.

Descrição dos sistemas simulados


Já fazendo parte do corpo do texto, esta seção deve descrever em detalhes o sistema
simulado, com suporte de gráficos, desenhos, fluxogramas, diagramas etc. Nesta seção, o
cliente deverá identificar claramente o seu sistema atual. Nela devem estar apresentadas,
com suporte gráfico, se possível, as distribuições adotadas, como discutido no Capítulo 2.
Contudo, os cálculos ou saídas de programas de computador não fazem parte do corpo do
texto e devem aparecer obrigatoriamente em anexo. O ACD, ou modelos conceituais
desenvolvidos (discutidos no Capítulo 3), não deve ser colocado no relatório entregue ao
cliente, mas deve ser documentado e devidamente arquivado para consultas futuras.

Objetivos do estudo
Após a descrição do sistema simulado contida na seção anterior, a apresentação dos
objetivos do projeto fica facilitada. Esta seção deve ser sucinta e sem rodeios, pois o
problema já foi apresentado e descrito nas seções anteriores. Basicamente, os objetivos
referem-se às respostas que se pretende obter ao final do estudo.
Resultados obtidos
São todos os resultados, computacionais ou não, utilizados para responder às perguntas
da seção anterior. Novamente, tabelas, gráficos, desenhos e diagramas devem ser utilizados
para a apresentação dos resultados de maneira prática. Os resultados quantitativos devem
ser apresentados de modo agregado, através de intervalos de confiança. Todos os resultados
das replicações utilizadas no cálculo dos intervalos de confiança devem aparecer no
relatório, obrigatoriamente, em anexo.4 Desse modo, se o cliente quiser realizar uma
verificação dos cálculos realizados, ele encontrará as informações, de forma facilitada, nos
anexos.

Conclusões e recomendações
Corresponde à última seção textual do relatório. Esta seção deve sintetizar, de maneira
clara e ordenada, as principais conclusões e recomendações do trabalho. As recomendações
são frases curtas que representam as ações que o cliente deve tomar no futuro, obtidas a
partir das conclusões do trabalho. Se o trabalho for extenso, a seção pode ser subdividida
em partes, sempre com o intuito de garantir a clareza.

Anexos
Nesta seção, são colocados os elementos de suporte do trabalho que não são
fundamentais para a compreensão do corpo do texto, como diagramas específicos, dados
coletados em campo, tabelas de replicações, listagens de programa, relatórios de saída de
softwares etc. Cada elemento acrescentado ao relatório deve ter o seu anexo próprio. A
numeração de figuras e tabelas também deve ser específica para cada anexo.
Na sequência, apresentamos um relatório de simulação real que ilustra o que foi discutido
nas seções anteriores. Novamente, frisamos que o texto a seguir é apenas uma sugestão, e
não um roteiro obrigatório para desenvolvimento de relatórios de simulação.

Embromar Ltda.

Rua do Ócio, 9999


Fone: Fax 0XX-99-9999-9999
E-mail: embromar@embromar.com.br

Coruscant, 31 de janeiro de 2010.

À
Fábrica de paraquedas “O chão é o limite”
At.: Sr. Leonardo da Vinci
Rua Nono, 99.

Prezado Senhor,

Encaminho o Relatório Técnico do estudo de viabilidade da nova linha de produção de


paraquedas de madeira.

As principais conclusões do projeto foram:


• cinco estações, no conceito adotado para um tempo de teste automático de 100 segundos,
não são suficientes;
• Pode-se utilizar dois operadores, em vez de três, com queda de produtividade de apenas
2%;
• O modelo com estações em linha e o modelo com estações opostas são equivalentes.

O detalhamento do projeto está descrito no corpo do relatório e nos seus anexos.

Atenciosamente,

Pacácio Jr.
Engenheiro de Sistemas

SUMÁRIO

1. Síntese do Relatório................................................................................ 1
2. Introdução.............................................................................................. 2
3. Descrição dos Sistemas Simulados....................................................... 2
4. Objetivos do Estudo.............................................................................. 4
5. Resultados Obtidos............................................................................... 5
6. Conclusões e Recomendações.............................................................. 6
Anexos........................................................................................................... 7

SÍNTESE DO RELATÓRIO

NÚMERO: 003/97

DATA: 09/12/97

PROJETO: Paraquedas de madeira

OBJETIVO: Verificar a produtividade da linha de montagem concebida para a área de


teste funcional e propor alterações para a melhoria da sua produtividade.

DESCRIÇÃO DO SISTEMA INICIAL: Uma linha de teste composta por cinco estações
de testes e de três operadores.

SOLUÇÃO PROPOSTA: A adoção de seis estações de testes com dois operadores e com
arranjo em linha ou opostos.

CONCLUSÕES: Cinco estações, no conceito adotado para um tempo de teste automático


de 100 segundos, não são suficientes. Pode-se utilizar dois operadores, em vez de três, com
queda de produtividade de apenas 2%; o modelo com estações em linha e o modelo com
estações opostas são equivalentes.

SOFTWARE UTILIZADO: xxxxxxxx

INTRODUÇÃO
O modelo de simulação da área de testes da linha de montagem para o projeto Da Vinci
foi construído porque se suspeitava que a área de testes poderia ser um ponto de gargalo no
sistema. Pretendeu-se neste estudo analisar a capacidade de produção da linha, o nível de
utilização dos operadores e propor alterações no arranjo (layout) das estações.

DESCRIÇÃO DOS SISTEMAS SIMULADOS


No layout inicial (CFG 1), previam-se cinco estações de testes e três operadores, como
ilustra a Figura IV.1. Ao chegar ao ponto 1, o produto tem duas alternativas: se uma estação
está livre, então ele se dirige para ela; caso contrário, espera neste ponto até que algum
produto seja liberado. Quando o produto chega à estação, um operador realiza todas as
conexões necessárias e inicia-se o teste (feito de modo automático pelo timer da máquina).
Após o teste, um operador desconecta o produto da estação, aprova ou reprova o seu
funcionamento, liberando-o em seguida. Os tempos nominais para este teste estão mostrados
na Tabela IV.1. No Anexo 1 deste relatório, encontram-se os dados coletados e o
procedimento de escolha das distribuições probabilísticas.

Tabela IV.1 – Tempos nominais de teste

Manual (M) ou Tempo nominal Distribuição adotada


Operador
Automático (A) (segundos) (segundos)
1 M 10 Triangular (9,10,11.5)
2 A 100 100 (constante)
3 M 15 Triangular (13.5,15,17.25)

Cada operador tem uma eficiência de 85%, o que significa que, em 15% do tempo, ele
está indisponível. Cada operador em estado “livre” pode trabalhar em qualquer estação,
mas, se ele conectou um determinado produto, o mesmo operador deve realizar sua
desconexão.
Figura IV.1 – Configuração 1.

A linha possui espaço para dois buffers antes das estações e para dois buffers depois. A
configuração 2 (CFG 2) é análoga à configuração 1 para dois operadores. A configuração 3
(CFG 3) é a configuração com seis estações em linha e três operadores. A configuração 4
(CFG 4) é análoga à configuração 2, contemplando somente dois operadores. A diferença
entre as configurações 4a e 4b deve-se ao fato de que, no primeiro caso, qualquer operador
pode trabalhar em qualquer estação, e, no segundo, cada operador é dedicado às três
estações. A configuração 5 (CFG 5) também possui seis estações dispostas em lados
opostos da linha, com a adição de um girador. Todas essas configurações estão
representadas na Figura IV.2.
Figura IV.2 – Configurações utilizadas no projeto.

Para a linha de montagem, foram adotados os valores descritos na Tabela IV.2.

Tabela IV.2 – Parâmetros adotados na simulação

Parâmetro Valor
Velocidade da linha 20 m/min
Tempo de transferência 4,5 s
Tempo de giro (no caso da CFG5) 4s
OBJETIVO DO ESTUDO
Este estudo tem basicamente os seguintes objetivos:
• Avaliar se o sistema atual consegue atender à produção prevista, que é de
120 produtos/hora;
• Verificar o nível de utilização dos operadores e identificar se há possibilidade de se
utilizarem dois operadores, em vez dos três utilizados atualmente;
• Comparar as duas configurações propostas para o layout das estações: em linha ou
opostas.

RESULTADOS OBTIDOS
Foram feitas várias simulações no caso da configuração 1 (CFG 1), com o tempo de teste
automático variando de 80 a 120 segundos, com o objetivo de verificar a sensibilidade da
linha em relação a este parâmetro. Os resultados obtidos estão relacionados na Tabela IV.3.

Tabela IV.3 – Produtividade da CFG1 em função do tempo de teste

Produção horária Produção horária média com


Tempo de teste automático
média reprocesso de 2%
(segundos)
(produtos) (produtos)
80 125,0 122,5
90 117,1 114,7
100 110,1 107,9
110 103,7 101,7
120 98,2 96,2

Se considerarmos um reprocesso de 2%, veremos que a produção horária nominal


somente seria atingida com um tempo de teste de 80 segundos, sendo que a duração
estimada desse teste é de 100 segundos (Tabela IV.1). Logo, pode-se concluir que a
configuração 1 não atende aos requisitos de produção média previamente estabelecidos.
A Tabela IV.4 apresenta os resultados finais da simulação das configurações 2, 3 e 4a,
com tempo de teste igual a 100 segundos.

Tabela IV.4 – Quadro comparativo entre as configurações 2,3 e 4a

Número Produção horária Produção horária média com 2% de


Número de
CFG de média reprocesso
operadores
estações (produtos) (produtos)
1 5 3 110,1 107,9
2 5 2 107,8 105,6
3 6 3 129,0 126,4
4a 6 2 126,5 124,0
Nota-se, pela Tabela IV.4, que um aumento do número de estações de 5 para 6 gera um
aumento da produção média de 19 produtos/hora (ou aproximadamente 15%), e uma
diminuição de três operadores para dois gera uma diminuição de, aproximadamente, 2,5
produtos/hora (aproximadamente 2%), pois a utilização do terceiro operador é baixa (em
torno de 10%). Dentre as configurações analisadas, a melhor solução é a configuração 4a.
A próxima pergunta a ser respondida é: uma vez que a solução com seis estações e dois
operadores é a melhor, qual seria o melhor layout das estações, em linha (configuração 4b)
ou opostas (configuração 5)? Para responder a essa pergunta, foram realizadas cinco
replicações de 18 horas de duração para cada caso; os resultados estão relacionados na
Tabela IV.5.
A diferença de produção horária entre as duas configurações (com 95% de confiança)
está no intervalo [-0,576; 0,1764], o que demonstra que os dois modelos são equivalentes
em termos de produtividade.

Tabela IV.5 – Quadro comparativo entre as configurações 4b e 5

Replicações
CFG 1 2 3 4 5 Média
4b 125,53 124,88 123,88 124,88 124,94 124,82
5 125,59 124,94 124,82 125,00 124,76 125,02
Diferença –0,059 –0,059 –0,941 –0,118 0,177 –0,200
CONCLUSÕES E RECOMENDAÇÕES
As principais conclusões deste estudo, obtidas através da simulação dos cenários
descritos neste relatório, estão sumarizadas a seguir:
• Considerando que o tempo de teste no modo automático é de 100 segundos, o teste com
cinco estações não supre as necessidades de produção média horária (120
produtos/hora). Deve-se considerar, portanto, o uso de seis estações;
• A eliminação de um operador diminui a produtividade em apenas 2%. Como a taxa de
utilização do operador é baixa, a melhor configuração é a com dois operadores;
• Não há diferenças significativas entre as configurações de layout com estações colocadas
em linha ou em lados opostos;
• As configurações 4b e 5 possuem eficiências de 85%, considerando 2% de reprocesso
(122,5/144).
Referências bibliográficas
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 10719 (NB 887):
Apresentação de Relatórios Técnicos e Científicos. Rio de Janeiro: ABNT, 1989.
GASS, Saul I. Documenting a computer-based model. Interfaces, v. 14, n. 3, p. 84-93,
1984.
OSCARSSON, Jan; MORIS, Matias Urenda. Documentation of discrete event simulation
models for manufacturing system life cycle simulation. Proceedings of the 2002 Winter
Simulation Conference, p. 1073-1078, 2002.
RICHTER, Hendrick; MÄRZ, Lothar. Toward a standard process: the use of UML for
designing simulation models. Proceedings of the 2000 Winter Simulation Conference,
p. 394-398, 2000.

Bibliografia Complementar
Uma boa referência sobre estudos de casos e a elaboração de relatórios de projetos é:
LAPIN, Lawrence L.; WHISLER, D. Willian. Cases in management science. San
Francisco: Duxbury Press, 1996.
Apêndice V

Especificação do modelo de simulação

Ao final do Capítulo 3, comentamos sobre a finalidade e o conteúdo da especificação do


modelo de simulação. Este Apêndice apresenta um exemplo real da documentação da
especificação do modelo. O objetivo aqui é oferecer ao leitor um possível modelo de
estruturação do documento para seu uso em projetos profissionais.
Para facilitar o processo de catalogação das diversas informações pertinentes ao modelo,
foi adotada a seguinte nomenclatura:
• Toda hipótese é identificada pela letra H, seguida de um número sequencial. Por exemplo,
“H2: A carga do caminhão é sempre fechada”;
• Todo dado de entrada é identificado pela letra D, seguida de um número sequencial. Por
exemplo, “D9: Tempo de set-up de linha”;
• As frases devem ser preferencialmente curtas, para facilitar tanto o processo de
comunicação dentro da equipe quanto a validação conceitual.

O material apresentado a seguir deve ser considerado apenas como sugestão de


abordagem do problema da especificação, e não como uma referência definitiva sobre o
assunto.1

Projeto: Avaliação do desenho logístico da Júpiter 2 em Alpha Centauri

Especificação da Modelagem Conceitual


1. Resumo, objetivos, escopo, nível de detalhamento e cenários a serem simulados
1.1. Objetivos: Avaliar o novo desenho logístico de recebimento e expedição de
caminhões da fábrica da Júpiter 2 em Alpha Centauri.
1.2. Escopo do Modelo: Serão considerados dois processos básicos: o processo de
recebimento de veículos e o processo de expedição. O processo de recebimento de
caminhões será compreendido desde a entrada na portaria, verificação de nota
fiscal, pesagem, desenlonamento, descarregamento, pesagem e passagem pela
portaria. No processo de expedição, serão consideradas as atividades de entrada na
portaria, passagem pela balança, carregamento, emissão de nota fiscal, pesagem de
retorno e liberação na portaria. O estudo do bolsão de estacionamento não pertence
ao escopo do escopo do modelo.
1.3. Nível de Detalhamento: Cada processo será modelado por seus tempos globais
entre o início e o fim da operação. A demanda de veículos com peças de máquinas
de envase, veículos de sucata, veículos de PP, será considerada como demanda que
contribui para a ocupação dos recursos na portaria e balança.
1.4. Cenários a serem simulados:
• Cenário Base: cenário de validação com os volumes praticados atualmente;
• Cenário Futuro 1: projeção de volumes para o ano de 2015;
• Cenário Futuro 2: projeção de volumes para o ano de 2020.
1.5. Período a ser simulado: corresponde ao período de maior movimento – do dia 25
ao último dia cada mês. A operação é contínua durante as 24 horas do dia.

2. Descrição do modelo
2.1. Tipos de caminhões
2.1.1. Recebimento
• Toco;
• Truck;
• Carreta.
2.1.2. Expedição
• Toco;
• Truck;
• Carreta;
• Exportação.
2.1.3. Outros (sucata, PP, PE etc.)
Observação: considerar as hipóteses H1, H2 e H6.
2.2. Descrição dos processos
2.2.1. Recebimento
Os caminhões de recebimento chegam à portaria de acordo com uma taxa de
chegadas diária e aguarda até a liberação da portaria, que possui um número fixo
de recursos. A seguir, o caminhão realiza as seguintes atividades em sequência:
pesagem, desenlonamento, deslocamento até uma doca livre e descarregamento.
Após o descarregamento, o caminhão se desloca novamente para a balança e
aguarda até a liberação por parte da portaria. Todos os tempos são dependentes
do tipo de caminhão.
2.2.2. Expedição
Os caminhões de expedição chegam à portaria de acordo com uma taxa de chegadas
diária e aguarda até a liberação da portaria, que possui um número fixo de
recursos. A seguir, o caminhão realiza as seguintes atividades em sequência:
pesagem, preparação (abertura do sider), deslocamento até uma doca livre de
expedição – para contêineres existem docas dedicadas –, expedição, emissão da
nota fiscal. Após a expedição, o caminhão se desloca novamente para a balança e
aguarda até a liberação por parte da portaria. Todos os tempos são dependentes
do tipo de caminhão.
2.2.3. Outros
Existe um fluxo de caminhões que utilizam os recursos da portaria e da balança. Eles
têm uma taxa de chegada diária, um tempo de liberação de portaria, um tempo de
pesagem, um tempo estimado de permanência na fábrica e um tempo de liberação
na portaria de saída. Para segurança das operações, existe uma limitação no
número de processos simultâneos de expedição e recebimento. Deve-se
considerar a existência de um certo número de caminhões adicionais que ocupam
as docas. As empilhadeiras podem interferir nos fluxos dos caminhões de
expedição ou recebimento gerando um bloqueio (espera para passagem). Há um
ponto de bloqueio localizado no início da via – hipóteses H5 e H7.
2.2.4. Recursos customizáveis
• Número de balanças;
• Número de pontos de enlonamento;
• Número de pontos de abertura de sider;
• Número de docas de expedição (normal e contêiner);
• Número de docas de recebimento;
• Número de funcionários na portaria (24 h);
• Funcionários para emissão de nota fiscal (24 h).

3. Hipóteses de Modelagem
• H1: Os caminhões de recebimento do tipo carreta serão considerados com lona, e os
de expedição serão considerados do tipo sider;
• H2: Os tempos de deslocamentos internos são desprezíveis. No entanto, serão
consideradas as interferências da empilhadeiras em circulação como bloqueios ao
deslocamento;
• H3: Não sazonalidade durante o período de simulação, mas as taxas diárias de
chegadas dos caminhões variam ao longo do dia;
• H4: Serão desprezados os fluxos de caminhões de devolução e de logística reversa;
• H5: As empilhadeiras, utilizadas no carregamento e descarregamento, estão sempre
disponíveis para a operação; no entanto, a sua movimentação interna gera bloqueios
nos deslocamentos dos caminhões;
• H6: Serão considerados apenas caminhões para contêineres de 40 pés;
• H7: Serão considerados caminhões adicionais, externos às operações em análise,
mas que gerarão bloqueio nas docas de expedição. Esses caminhões não terão o seu
fluxo completo modelado, mas apenas a sua interferência nas docas de expedição.

4. Dados de saída (resultados da simulação)


4.1. Tempos médio e máximo de espera dos caminhões; números médio e máximo de
caminhões em espera, para os seguintes processos:
• Entrar na portaria;
• Pesar (entrada);
• Pesar (saída);
• Enlonar;
• Abrir sider;
• Descarregar (caminhões de recebimento);
• Carregar (caminhões de expedição);
• Emitir nota fiscal (caminhões de expedição);
• Passar por ponto de bloqueio.
4.2. Taxas de ocupação dos seguintes recursos:
• Balança;
• Docas de recebimento;
• Docas de expedição;
• Pontos de enlonamento;
• Ponto de abertura sider;
• Funcionários da portaria;
• Funcionários de emissão de nota fiscal.
4.3. Outros:
• Caminhões que não entraram por falta de capacidade da fábrica.

5. ANEXOS
5.1. Dados de entrada fornecidos
• D1: Taxa de chegadas de caminhões ao longo do dia

Número de caminhões
Intervalo Recebimento Expedição Outros
00:00 – 04:00 h 8,4 6,5 1,2
04:00 – 08:00 h 10,4 8,6 3,4
08:00 – 12:00 h 22,6 20,2 16,2
12:00 – 16:00 h 18,5 17,2 14,2
16:00 – 20:00 h 6,4 5,8 2,0
20:00 – 24:00 h 3,2 2,5 1,0

• D2: Tempos operacionais na fábrica

Caminhões
Recebimento Expedição
Tempos Mínimo Moda Máximo Mínimo Moda Máximo
Portaria (entrada) (h) 5,0 7,0 10,0 2,0 2,5 4,0
Pesagem (ida ou volta) (h) 0,5 1,0 5,0 0,5 1,0 5,0
1. Toco (h) 3,5 4,0 4,5
2. Truck (h) 3,0 4,0 5,0
3. Carreta (h) 25 30 40 3,0 5,0 6,0
4. Contêiner (h)
Recebimento (h)
1. Toco (h) 20 30 40 95 120 130
2. Truck (h) 20 30 40 100 130 150
3. Carreta (h) 20 30 40 120 150 180
4. Contêiner (h) 150 180 210 150 180 210
Emissão de nota fiscal (h) 15 60 120
Portaria (saída) (h) 0,5 1,0 2,0 4,0 5,0 7,0

• D3: Outros parâmetros relevantes

Parâmetros diversos Valor


Número de funcionários na portaria (24 h) 3
Número de balanças 2
Número de locais de desenlonamento 3
Número de locais para abertura de sider 3
Número de docas de recebimento 3
Número de docas de expedição 2
Número de funcionários para emissão de nota fiscal (24 h) 5
Máximo de caminhões permitidos na fábrica 500 caminhões
Fluxo de empilhadeiras 66 emp./h
Tempo mínimo de bloqueio 30 min

6. Revisões deste documento


• 04/09/2008 – Criação inicial do documento – Will Robson e Robô
• 20/09/2008 – Revisão do Documento – Dr. Zachary Smith
Apêndice VI

Tabelas

Tabela de Números Aleatórios


8147 9595 9502 3404 1966 1299 3998 2399
9058 6557 0344 5853 2511 5688 2599 1233
1270 0357 4387 2238 6160 4694 8001 1839
9134 8491 3816 7513 4733 0119 4314 2400
6324 9340 7655 2551 3517 3371 9106 4173
0975 6787 7952 5060 8308 9133 1818 0497
2785 7577 1869 6991 5853 1524 2638 9027
5469 7431 4898 8909 5497 8258 1455 9448
9575 3922 4456 9593 9172 5383 1361 4909
9649 6555 6463 5472 2858 9961 8693 4893
1576 1712 7094 1386 7572 0782 5797 3377
9706 7060 7547 1493 7537 4427 5499 9001
9572 0318 2760 2575 3804 1067 1450 3692
4854 2769 6797 8407 5678 9619 8530 1112
8003 0462 6551 2543 0759 0046 6221 7803
1419 0971 1626 8143 0540 7749 3510 3897
4218 8235 1190 2435 5308 8173 5132 2417
9157 6948 4984 9293 7792 8687 4018 4039
7922 3171 9597 3500 9340 0844 0760 0965
1320 1690 1835 3063 9390 1948 9797 1174
9421 6491 3685 5085 8759 2259 4389 2967
9561 7317 6256 5108 5502 1707 1111 3188
5752 6477 7802 8176 6225 2277 2581 4242
0598 4509 0811 7948 5870 4357 4087 5079
2348 5470 9294 6443 2077 3111 5949 0855
3532 2963 7757 3786 3012 9234 2622 2625
8212 7447 4868 8116 4709 4302 6028 8010
0154 1890 4359 5328 2305 1848 7112 0292
0430 6868 4468 3507 8443 9049 2217 9289
7303 9037 0967 1062 3689 0225 2810 7702
4886 8909 8181 3724 4607 4253 4401 3225
5785 3342 8175 1981 9816 3127 5271 7847
2373 6987 7224 4897 1564 1615 4574 4714
4588 1978 1499 3395 8555 1788 8754 0358
9631 0305 6596 9516 6448 4229 5181 1759
5468 7441 5186 9203 3763 0942 9436 7218
5211 5000 9730 0527 1909 5985 6377 4735
2316 4799 6490 7379 4283 4709 9577 1527
4889 9047 8003 2691 4820 6959 2407 3411
6241 6099 4538 4228 1206 6999 6761 6074
6791 6177 4324 5479 5895 6385 2891 1917
3955 8594 8253 9427 2262 0336 6718 7384
3674 8055 0835 4177 3846 0688 6951 2428
9880 5767 1332 9831 5830 3196 0680 9174

0377 1829 1734 3015 2518 5309 2548 2691


8852 2399 3909 7011 2904 6544 2240 7655
9133 8865 8314 6663 6171 4076 6678 1887
7962 0287 8034 5391 2653 8200 8444 2875
0987 4899 0605 6981 8244 7184 3445 0911

Áreas da Distribuição Normal Padrão

z 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09
–3,40 0,0003 0,0003 0,0003 0,0003 0,0003 0,0003 0,0003 0,0003 0,0003 0,0002
–3,30 0,0005 0,0005 0,0005 0,0004 0,0004 0,0004 0,0004 0,0004 0,0004 0,0003
–3,20 0,0007 0,0007 0,0006 0,0006 0,0006 0,0006 0,0006 0,0005 0,0005 0,0005
–3,10 0,0010 0,0009 0,0009 0,0009 0,0008 0,0008 0,0008 0,0008 0,0007 0,0007

–3,00 0,0013 0,0013 0,0013 0,0012 0,0012 0,0011 0,0011 0,0011 0,0010 0,0010
–2,90 0,0019 0,0018 0,0018 0,0017 0,0016 0,0016 0,0015 0,0015 0,0014 0,0014
–2,80 0,0026 0,0025 0,0024 0,0023 0,0023 0,0022 0,0021 0,0021 0,0020 0,0019
–2,70 0,0035 0,0034 0,0033 0,0032 0,0031 0,0030 0,0029 0,0028 0,0027 0,0026
–2,60 0,0047 0,0045 0,0044 0,0043 0,0041 0,0040 0,0039 0,0038 0,0037 0,0036

–2,50 0,0062 0,0060 0,0059 0,0057 0,0055 0,0054 0,0052 0,0051 0,0049 0,0048
–2,40 0,0082 0,0080 0,0078 0,0075 0,0073 0,0071 0,0069 0,0068 0,0066 0,0064
–2,30 0,0107 0,0104 0,0102 0,0099 0,0096 0,0094 0,0091 0,0089 0,0087 0,0084
–2,20 0,0139 0,0136 0,0132 0,0129 0,0125 0,0122 0,0119 0,0116 0,0113 0,0110
–2,10 0,0179 0,0174 0,0170 0,0166 0,0162 0,0158 0,0154 0,0150 0,0146 0,0143

–2,00 0,0228 0,0222 0,0217 0,0212 0,0207 0,0202 0,0197 0,0192 0,0188 0,0183
–1,90 0,0287 0,0281 0,0274 0,0268 0,0262 0,0256 0,0250 0,0244 0,0239 0,0233
–1,80 0,0359 0,0351 0,0344 0,0336 0,0329 0,0322 0,0314 0,0307 0,0301 0,0294
–1,70 0,0446 0,0436 0,0427 0,0418 0,0409 0,0401 0,0392 0,0384 0,0375 0,0367
–1,60 0,0548 0,0537 0,0526 0,0516 0,0505 0,0495 0,0485 0,0475 0,0465 0,0455
–1,50 0,0668 0,0655 0,0643 0,0630 0,0618 0,0606 0,0594 0,0582 0,0571 0,0559
–1,40 0,0808 0,0793 0,0778 0,0764 0,0749 0,0735 0,0721 0,0708 0,0694 0,0681
–1,30 0,0968 0,0951 0,0934 0,0918 0,0901 0,0885 0,0869 0,0853 0,0838 0,0823
–1,20 0,1151 0,1131 0,1112 0,1093 0,1075 0,1056 0,1038 0,1020 0,1003 0,0985
–1,10 0,1357 0,1335 0,1314 0,1292 0,1271 0,1251 0,1230 0,1210 0,1190 0,1170

–1,00 0,1587 0,1562 0,1539 0,1515 0,1492 0,1469 0,1446 0,1423 0,1401 0,1379
–0,90 0,1841 0,1814 0,1788 0,1762 0,1736 0,1711 0,1685 0,1660 0,1635 0,1611
–0,80 0,2119 0,2090 0,2061 0,2033 0,2005 0,1977 0,1949 0,1922 0,1894 0,1867
–0,70 0,2420 0,2389 0,2358 0,2327 0,2296 0,2266 0,2236 0,2206 0,2177 0,2148
–0,60 0,2743 0,2709 0,2676 0,2643 0,2611 0,2578 0,2546 0,2514 0,2483 0,2451

–0,50 0,3085 0,3050 0,3015 0,2981 0,2946 0,2912 0,2877 0,2843 0,2810 0,2776
–0,40 0,3446 0,3409 0,3372 0,3336 0,3300 0,3264 0,3228 0,3192 0,3156 0,3121
–0,30 0,3821 0,3783 0,3745 0,3707 0,3669 0,3632 0,3594 0,3557 0,3520 0,3483
–0,20 0,4207 0,4168 0,4129 0,4090 0,4052 0,4013 0,3974 0,3936 0,3897 0,3859
–0,10 0,4602 0,4562 0,4522 0,4483 0,4443 0,4404 0,4364 0,4325 0,4286 0,4247

Áreas da Distribuição Normal Padrão (continuação)


z 0,00 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09
0,00 0,5000 0,5040 0,5080 0,5120 0,5160 0,5199 0,5239 0,5279 0,5319 0,5359
0,10 0,5398 0,5438 0,5478 0,5517 0,5557 0,5596 0,5636 0,5675 0,5714 0,5753
0,20 0,5793 0,5832 0,5871 0,5910 0,5948 0,5987 0,6026 0,6064 0,6103 0,6141
0,30 0,6179 0,6217 0,6255 0,6293 0,6331 0,6368 0,6406 0,6443 0,6480 0,6517
0,40 0,6554 0,6591 0,6628 0,6664 0,6700 0,6736 0,6772 0,6808 0,6844 0,6879

0,50 0,6915 0,6950 0,6985 0,7019 0,7054 0,7088 0,7123 0,7157 0,7190 0,7224
0,60 0,7257 0,7291 0,7324 0,7357 0,7389 0,7422 0,7454 0,7486 0,7517 0,7549
0,70 0,7580 0,7611 0,7642 0,7673 0,7704 0,7734 0,7764 0,7794 0,7823 0,7852
0,80 0,7881 0,7910 0,7939 0,7967 0,7995 0,8023 0,8051 0,8078 0,8106 0,8133
0,90 0,8159 0,8186 0,8212 0,8238 0,8264 0,8289 0,8315 0,8340 0,8365 0,8389

1,00 0,8413 0,8438 0,8461 0,8485 0,8508 0,8531 0,8554 0,8577 0,8599 0,8621
1,10 0,8643 0,8665 0,8686 0,8708 0,8729 0,8749 0,8770 0,8790 0,8810 0,8830
1,20 0,8849 0,8869 0,8888 0,8907 0,8925 0,8944 0,8962 0,8980 0,8997 0,9015
1,30 0,9032 0,9049 0,9066 0,9082 0,9099 0,9115 0,9131 0,9147 0,9162 0,9177
1,40 0,9192 0,9207 0,9222 0,9236 0,9251 0,9265 0,9279 0,9292 0,9306 0,9319

1,50 0,9332 0,9345 0,9357 0,9370 0,9382 0,9394 0,9406 0,9418 0,9429 0,9441
1,60 0,9452 0,9463 0,9474 0,9484 0,9495 0,9505 0,9515 0,9525 0,9535 0,9545

1,70 0,9554 0,9564 0,9573 0,9582 0,9591 0,9599 0,9608 0,9616 0,9625 0,9633
1,80 0,9641 0,9649 0,9656 0,9664 0,9671 0,9678 0,9686 0,9693 0,9699 0,9706
1,90 0,9713 0,9719 0,9726 0,9732 0,9738 0,9744 0,9750 0,9756 0,9761 0,9767

2,00 0,9772 0,9778 0,9783 0,9788 0,9793 0,9798 0,9803 0,9808 0,9812 0,9817
2,10 0,9821 0,9826 0,9830 0,9834 0,9838 0,9842 0,9846 0,9850 0,9854 0,9857
2,20 0,9861 0,9864 0,9868 0,9871 0,9875 0,9878 0,9881 0,9884 0,9887 0,9890
2,30 0,9893 0,9896 0,9898 0,9901 0,9904 0,9906 0,9909 0,9911 0,9913 0,9916
2,40 0,9918 0,9920 0,9922 0,9925 0,9927 0,9929 0,9931 0,9932 0,9934 0,9936

2,50 0,9938 0,9940 0,9941 0,9943 0,9945 0,9946 0,9948 0,9949 0,9951 0,9952
2,60 0,9953 0,9955 0,9956 0,9957 0,9959 0,9960 0,9961 0,9962 0,9963 0,9964
2,70 0,9965 0,9966 0,9967 0,9968 0,9969 0,9970 0,9971 0,9972 0,9973 0,9974
2,80 0,9974 0,9975 0,9976 0,9977 0,9977 0,9978 0,9979 0,9979 0,9980 0,9981
2,90 0,9981 0,9982 0,9982 0,9983 0,9984 0,9984 0,9985 0,9985 0,9986 0,9986

3,00 0,9987 0,9987 0,9987 0,9988 0,9988 0,9989 0,9989 0,9989 0,9990 0,9990
3,10 0,9990 0,9991 0,9991 0,9991 0,9992 0,9992 0,9992 0,9992 0,9993 0,9993
3,20 0,9993 0,9993 0,9994 0,9994 0,9994 0,9994 0,9994 0,9995 0,9995 0,9995
3,30 0,9995 0,9995 0,9995 0,9996 0,9996 0,9996 0,9996 0,9996 0,9996 0,9997
3,40 0,9997 0,9997 0,9997 0,9997 0,9997 0,9997 0,9997 0,9997 0,9997 0,9998

Valores Críticos para a Distribuição t de Student

α
ν 0,1 0,05 0,025 0,01 0,005 0,001 0,0005
1 3,08 6,31 12,71 31,82 63,66 318,29 636,58
2 1,89 2,92 4,30 6,96 9,92 22,33 31,60
3 1,64 2,35 3,18 4,54 5,84 10,21 12,92
4 1,53 2,13 2,78 3,75 4,60 7,17 8,61
5 1,48 2,02 2,57 3,36 4,03 5,89 6,87
6 1,44 1,94 2,45 3,14 3,71 5,21 5,96
7 1,41 1,89 2,36 3,00 3,50 4,79 5,41
8 1,40 1,86 2,31 2,90 3,36 4,50 5,04
9 1,38 1,83 2,26 2,82 3,25 4,30 4,78

10 1,37 1,81 2,23 2,76 3,17 4,14 4,59


11 1,36 1,80 2,20 2,72 3,11 4,02 4,44
12 1,36 1,78 2,18 2,68 3,05 3,93 4,32
13 1,35 1,77 2,16 2,65 3,01 3,85 4,22
14 1,35 1,76 2,14 2,62 2,98 3,79 4,14
15 1,34 1,75 2,13 2,60 2,95 3,73 4,07
16 1,34 1,75 2,12 2,58 2,92 3,69 4,01
17 1,33 1,74 2,11 2,57 2,90 3,65 3,97
18 1,33 1,73 2,10 2,55 2,88 3,61 3,92
19 1,33 1,73 2,09 2,54 2,86 3,58 3,88

20 1,33 1,72 2,09 2,53 2,85 3,55 3,85


21 1,32 1,72 2,08 2,52 2,83 3,53 3,82
22 1,32 1,72 2,07 2,51 2,82 3,50 3,79
23 1,32 1,71 2,07 2,50 2,81 3,48 3,77
24 1,32 1,71 2,06 2,49 2,80 3,47 3,75
25 1,32 1,71 2,06 2,49 2,79 3,45 3,73
26 1,31 1,71 2,06 2,48 2,78 3,43 3,71
27 1,31 1,70 2,05 2,47 2,77 3,42 3,69
28 1,31 1,70 2,05 2,47 2,76 3,41 3,67
29 1,31 1,70 2,05 2,46 2,76 3,40 3,66

30 1,31 1,70 2,04 2,46 2,75 3,39 3,65


32 1,31 1,69 2,04 2,45 2,74 3,37 3,62
34 1,31 1,69 2,03 2,44 2,73 3,35 3,60
36 1,31 1,69 2,03 2,43 2,72 3,33 3,58
38 1,30 1,69 2,02 2,43 2,71 3,32 3,57
40 1,30 1,68 2,02 2,42 2,70 3,31 3,55
42 1,30 1,68 2,02 2,42 2,70 3,30 3,54
44 1,30 1,68 2,02 2,41 2,69 3,29 3,53
46 1,30 1,68 2,01 2,41 2,69 3,28 3,51
48 1,30 1,68 2,01 2,41 2,68 3,27 3,50

50 1,30 1,68 2,01 2,40 2,68 3,26 3,50


52 1,30 1,67 2,01 2,40 2,67 3,25 3,49
54 1,30 1,67 2,00 2,40 2,67 3,25 3,48
56 1,30 1,67 2,00 2,39 2,67 3,24 3,47
58 1,30 1,67 2,00 2,39 2,66 3,24 3,47
60 1,30 1,67 2,00 2,39 2,66 3,23 3,46
120 1,29 1,66 1,98 2,36 2,62 3,16 3,37
inf 1,28 1,64 1,96 2,33 2,58 3,09 3,29

Valores Críticos para a Distribuição do Qui-quadrado

α
ν 0,995 0,99 0,975 0,95 0,90 0,10 0,05 0,025 0,01 0,005
1 0,00 0,00 0,00 0,00 0,02 2,71 3,84 5,02 6,63 7,88
2 0,01 0,02 0,05 0,10 0,21 4,61 5,99 7,38 9,21 10,60
3 0,07 0,11 0,22 0,35 0,58 6,25 7,81 9,35 11,34 12,84
4 0,21 0,30 0,48 0,71 1,06 7,78 9,49 11,14 13,28 14,86
5 0,41 0,55 0,83 1,15 1,61 9,24 11,07 12,83 15,09 16,75
6 0,68 0,87 1,24 1,64 2,20 10,64 12,59 14,45 16,81 18,55
7 0,99 1,24 1,69 2,17 2,83 12,02 14,07 16,01 18,48 20,28
8 1,34 1,65 2,18 2,73 3,49 13,36 15,51 17,53 20,09 21,95
9 1,73 2,09 2,70 3,33 4,17 14,68 16,92 19,02 21,67 23,59

10 2,16 2,56 3,25 3,94 4,87 15,99 18,31 20,48 23,21 25,19
11 2,60 3,05 3,82 4,57 5,58 17,28 19,68 21,92 24,73 26,76
12 3,07 3,57 4,40 5,23 6,30 18,55 21,03 23,34 26,22 28,30
13 3,57 4,11 5,01 5,89 7,04 19,81 22,36 24,74 27,69 29,82
14 4,07 4,66 5,63 6,57 7,79 21,06 23,68 26,12 29,14 31,32
15 4,60 5,23 6,26 7,26 8,55 22,31 25,00 27,49 30,58 32,80
16 5,14 5,81 6,91 7,96 9,31 23,54 26,30 28,85 32,00 34,27
17 5,70 6,41 7,56 8,67 10,09 24,77 27,59 30,19 33,41 35,72
18 6,26 7,01 8,23 9,39 10,86 25,99 28,87 31,53 34,81 37,16
19 6,84 7,63 8,91 10,12 11,65 27,20 30,14 32,85 36,19 38,58
20 7,43 8,26 9,59 10,85 12,44 28,41 31,41 34,17 37,57 40,00

21 8,03 8,90 10,28 11,59 13,24 29,62 32,67 35,48 38,93 41,40
22 8,64 9,54 10,98 12,34 14,04 30,81 33,92 36,78 40,29 42,80
23 9,26 10,20 11,69 13,09 14,85 32,01 35,17 38,08 41,64 44,18
24 9,89 10,86 12,40 13,85 15,66 33,20 36,42 39,36 42,98 45,56
25 10,52 11,52 13,12 14,61 16,47 34,38 37,65 40,65 44,31 46,93
26 11,16 12,20 13,84 15,38 17,29 35,56 38,89 41,92 45,64 48,29
27 11,81 12,88 14,57 16,15 18,11 36,74 40,11 43,19 46,96 49,65
28 12,46 13,56 15,31 16,93 18,94 37,92 41,34 44,46 48,28 50,99
29 13,12 14,26 16,05 17,71 19,77 39,09 42,56 45,72 49,59 52,34

30 13,79 14,95 16,79 18,49 20,60 40,26 43,77 46,98 50,89 53,67
31 14,46 15,66 17,54 19,28 21,43 41,42 44,99 48,23 52,19 55,00
32 15,13 16,36 18,29 20,07 22,27 42,58 46,19 49,48 53,49 56,33
33 15,82 17,07 19,05 20,87 23,11 43,75 47,40 50,73 54,78 57,65
34 16,50 17,79 19,81 21,66 23,95 44,90 48,60 51,97 56,06 58,96
35 17,19 18,51 20,57 22,47 24,80 46,06 49,80 53,20 57,34 60,27
36 17,89 19,23 21,34 23,27 25,64 47,21 51,00 54,44 58,62 61,58
37 18,59 19,96 22,11 24,07 26,49 48,36 52,19 55,67 59,89 62,88
38 19,29 20,69 22,88 24,88 27,34 49,51 53,38 56,90 61,16 64,18
39 20,00 21,43 23,65 25,70 28,20 50,66 54,57 58,12 62,43 65,48
40 20,71 22,16 24,43 26,51 29,05 51,81 55,76 59,34 63,69 66,77

>40

Valores Críticos para o Teste de Kolmogorov-Smirnov


Nível de significância
n
α = 0,10 α = 0,05 α = 0,01
1 0,900 0,975 0,995
2 0,684 0,842 0,929
3 0,565 0,708 0,829
4 0,493 0,624 0,734
5 0,447 0,563 0,669
6 0,410 0,519 0,617
7 0,381 0,483 0,576
8 0,358 0,454 0,542
9 0,339 0,430 0,513

10 0,323 0,409 0,489


11 0,308 0,391 0,468
12 0,296 0,375 0,449
13 0,285 0,361 0,432
14 0,275 0,349 0,418
15 0,266 0,338 0,404
16 0,258 0,327 0,392
17 0,250 0,318 0,381
18 0,244 0,309 0,371
19 0,237 0,301 0,361

20 0,232 0,294 0,352


25 0,208 0,264 0,317
30 0,190 0,242 0,290
35 0,177 0,224 0,269
40 0,165 0,210 0,252
n>40
Apêndice VII

Distribuições estatísticas
VII.1. Distribuições discretas
Binomial (p, n)

Parâmetros: p: probabilidade de sucesso e n é o número de tentativas.


Domínio: Distribuição discreta: x = 0, 1, 2, ..., n

Função
densidade de
probabilidade:

Média: np
Variância: np(1 – p)
Modelam o número de sucessos em um conjunto de n tentativas, por exemplo: o
Aplicações
número de itens dentro de uma ordem de serviço, número de defeitos em um lote
mais comuns:
etc.

Poisson (λ)
Parâmetros: λ: média, número positivo real
Domínio: Distribuição discreta: x = 1, 2, 3, ...

Função
densidade de
probabilidade:

Média: λ
Variância: λ
Modelam o número de eventos independentes que ocorrem em um intervalo de
tempo fixo; por exemplo, o número de gols que ocorrem em uma partida de futebol.
Aplicações
Se o número de eventos que ocorrem em um intervalo de tempo fixo é um processo
mais comuns:
de Poisson, então o tempo entre ocorrências sucessivas desses eventos é
exponencialmente distribuído.
VII.2. Distribuições contínuas
Poisson (α, β)

Parâmetros: Parâmetros de forma β e α.


Domínio: 0 ≤ x ≤ 1 (ou [a,b] através da transformação: y = b + (b – a) x)
Função
densidade de
probabilidade:
Onde B é a função beta completa:

Média:

Variância:

Modelam os tempos de conclusão de atividades em redes de planejamento


Aplicações mais
(PERT). Devido à sua flexibilidade, são muito utilizadas quando não se dispõe de
comuns:
dados reais coletados.

Poisson (λ, k)
Parâmetros: λ: taxa de ocorrências e k: parâmetro de forma.
Domínio: x≥0

Função densidade de
probabilidade:

Média:
Variância:

Aplicações mais Modelam processos compostos por fases sucessivas nas quais cada fase tem
comuns: uma distribuição exponencial. Teoria das Filas.

Poisson (λ)

Parâmetros: λ: taxa de ocorrências.


Domínio: x≥0
Função
densidade de
probabilidade:

Média:

Variância:

Modelam os tempos entre ocorrências sucessivas de eventos ou a duração do


evento, por exemplo: chegadas sucessivas de clientes em um banco, tempo entre gols
Aplicações sucessivos em uma partida de futebol etc.
mais comuns: Se o tempo entre ocorrências sucessivas de um evento é exponencialmente
distribuído, então o número de eventos que ocorrem em certo intervalo de tempo é
um processo de Poisson.

Gama (α, β)
Parâmetros: α: parâmetro de forma e β: parâmetro de escala.
Domínio: 0 < x < +∞

Função densidade
de probabilidade:
Onde Γ(α) é a função gama completa:

Média: αβ
Variância: αβ2
Aplicações mais Devido à sua flexibilidade, modelam os tempos entre ocorrências sucessivas de
comuns: eventos, duração de eventos, tempo entre falhas sucessivas etc.

Lognormal (µ, σ2)


µ: parâmetro de escala ou de posição e σ: parâmetro de forma ou de dispersão;
Parâmetros:
números positivos reais.
Domínio: 0 ≤ x < +∞

Função
densidade de
probabilidade:
Média:

Variância:

Modelam situações em que a distribuição do processo envolvido pode ser


considerada como a multiplicação de um conjunto de processos componentes. Se
Aplicações
uma variável aleatória X tem distribuição lognormal com parâmetros µ e σ, então,
mais comuns:
ln(X) tem uma distribuição normal com média µ e desvio-padrão σ. Note que µ e σ
não são a média e o desvio-padrão de X, mas a média e o desvio-padrão de ln(X).

Normal (µ, σ2)


Parâmetros: σ2: variância e µ: média; número positivo real.
Domínio: 0 ≤ x < +∞
Função
densidade de
probabilidade:
Média: µ
Variância: σ2
Modelam situações em que a distribuição do processo envolvido pode ser
Aplicações considerada como a soma de um conjunto de processos componentes. Por exemplo,
mais comuns: o tempo execução de uma operação, que é a soma dos tempos de execução de etapas
da operação.

Uniforme (a, b)

Parâmetros: a: menor valor e b: maior valor são números reais, tais que a < b
Domínio: a≤x≤b
Função densidade de
probabilidade:

Média:

Variância:

Aplicações mais Modelam processos em que todos os valores em um intervalo [a, b] têm
comuns: igual probabilidade de ocorrência.

Triangular (a, m, b)
a: menor valor, b: maior valor e m: valor que mais ocorre (moda) são números
Parâmetros:
reais, tais que a < m < b.
Domínio: a≤x≤b

Função
densidade de
probabilidade:
Média:

Variância:

Modelam situações em que não se conhece a forma exata da distribuição, mas


Aplicações mais
têm-se estimativas para o menor valor, para o valor mais provável de ocorrer e
comuns:
para o maior valor.

Weibull (α, β)
Parâmetros: α: parâmetro de forma e β: parâmetro de escala
Domínio: 0 ≤ x < +∞

Função densidade
de probabilidade:

Média: onde Γ(α) é a função gama completa:

Variância:
Aplicações mais Modelam os tempos de vida ou de falha de equipamentos. A distribuição
comuns: exponencial é um caso particular da distribuição de Weibull.
Apêndice VIII

Respostas de exercícios selecionados

Capítulo 1
2)
a) Simulação contínua. A variável principal, consumo (medida em mm, por exemplo)
varia continuamente com o tempo.
b) Simulação discreta. O número de válvulas varia discretamente no tempo,
dependendo da ocorrência de um evento “consumo” ou “abastecimento”.
c) Simulação discreta. Todos os eventos (chegada de cliente, início de atendimento
etc.) ocorrem em intervalos discretos de tempo.
d) Simulação discreta. Todos os eventos (início de compra, fechamento de compra,
recebimento etc.) ocorrem em intervalos discretos de tempo.
e) Simulação discreta. Todos os eventos (pegar contêiner, carregar contêiner etc.)
ocorrem em intervalos discretos de tempo.
f) Simulação contínua. A variável principal altura da árvore (medida em m) varia
continuamente com o tempo.
g) Simulação discreta ou contínua dependendo do escopo. Se estivermos interessados
somente no processo total de carregamento tem-se uma simulação discreta; por outro
lado, se analisarmos o processo de carregamento de forma micro, isto é,
considerando o nível do tanque ao longo do tempo, temos uma simulação contínua.
h) Simulação contínua. O número da população varia continuamente com o tempo.

Capítulo 2
1) Levantamentos de tempos:
• Tempos entre as chegadas sucessivas de clientes para os caixas normais;
• Tempos entre as chegadas sucessivas de clientes para os caixas expressos;
• Tempos de atendimento em um caixa expresso e em um caixa normal.
O tempo de atendimento nos caixas deve ser marcado entre o instante de início de
atendimento pelo caixa até o instante final de pagamento. Para os caixas expressos,
seria conveniente anotar mais um instante: o de início de pagamento, pois, para o caixa
expresso, o tempo de pagamento pode ser significativo. Deste modo, o tempo de
atendimento seria o tempo de lançamento dos preços no caixa mais o tempo de
pagamento.
3) Levantamentos:
• Tempos de encaixe da peça em cada operador;
• Tempos entre chegadas sucessivas de peças para montagem.
Obs.: Usualmente em linha com esteiras utiliza-se como parâmetro a velocidade da
esteira e o número de peças/unidade de comprimento.
4) Triangular/Weibull/Uniforme/Lognormal/Exponencial/Normal.
5) Retirar 3 outliers da amostra: 2, 4.134 e o 10. Como o p-value é 0,67, não rejeitamos
a hipótese de que os dados aderem ao modelo uniforme.
8)
a) A prova de Inglês apresenta menor desvio padrão.
b) A prova de Lógica, pois, além da média de 4,1 ser a maior (empatada com a prova
de Inglês), ela apresenta uma mediana maior, indicando que a metade dos alunos
tiveram uma nota superior a 6.
c) Notar que o “2” é um outlier.
9)
a) Distribuição normal
b) Distribuição normal
c) Número de gols: distribuição de Poisson. Intervalo entre gols: distribuição
exponencial
d) Determinística (se o semáforo não for inteligente)
e) Exponencial
f) Uniforme
12)
a)
b) p-value = 0,20, portanto não podemos rejeitar a hipótese de aderência ao modelo
exponencial.
c) Como os tempos entre ocorrências sucessivas de gols são exponencialmente
distribuídos; então, a probabilidade de ocorrência de gols em um intervalo de tempo
é uma distribuição de Poisson com parâmetro λ=2,48. Assim:

13) Sim, pois o p-value é maior que 0,10.

Capítulo 3
1) Sistema não conservativo
2) Sistema não conservativo
4) Sistema conservativo
Capítulo 5
1) Não. Uma vez que o modelo acabou de ser implementado, ele se torna um modelo
computacional (Fig.1.6). Para executar a simulação e colher resultados, o modelo
necessariamente deve passar pelas etapas de validação e verificação para se tornar um
modelo operacional. Só depois de se tornar um modelo operacional é que se pode
colher os resultados.
4) Algumas “ocorrências” comuns em pubs podem acontecer, e não foram considerados
no modelo do pub, por exemplo:
a) Falta de chope (considerado como ilimitado);
b) Clientes conversando entre si (no modelo os clientes só pedem ou bebem);
c) Clientes indo ao banheiro;
d) Garçonetes parando de trabalhar por algum motivo ;
e) Número de copos que o cliente gostaria de tomar no início da simulação pode
mudar mediante o ambiente ou a qualidade do chope.
6) Para verificar se o modelo simulado representa o sistema real para a medida de
desempenho “produtividade no sistema”, deve-se aplicar o teste estatístico descrito no
exercício 5.
Neste caso tem-se uma t de Student de 14 graus de liberdade, e o intervalo de confiança
fica: 2,5 ± 2,25. Portanto, como o intervalo de confiança não contém o zero, o modelo
não pode ser considerado válido.

Capítulo 6
1)
a) Não terminal
b) Não terminal
c) Terminal
d) Não terminal
e) Não terminal
f) Terminal
g) Terminal
3)
a) Mais estreito, aumenta a chance de que o intervalo não contenha a média.
b) Incorreta, a confiança está relacionada com a chance de sucesso do experimento
quando ele é repetido diversas vezes no tempo.
c) Incorreta, a confiança está relacionada com a chance de sucesso do experimento
quando ele é repetido diversas vezes no tempo.
d) Correta.

6)

7) Transitório, não terminal; transitório, terminal; permanente, não terminal; permanente,


não terminal; permanente, terminal; permanente, não terminal.
10)
a)
a) Não terminal.
b) 3.000 s
c) ---
d) 0,045 cliente/s e 0,050 cliente/s
e) Não, pois chegariam mais clientes do que o sistema consegue atender.
f) 0,91
g) Não. Como existe aleatoriedade tanto nos processos de chegadas quanto nos de
atendimentos, o sistema não conseguiria atender aos clientes, surgindo o fenômeno
da “fila infinita”.

Capítulo 7
4) O maior entrave para aumentar a utilização da ferramenta ainda é, sem dúvida, o tempo
de processamento computacional. Isso está diminuindo com a utilização de
processadores mais poderosos e computação paralela.
5)
Variáveis de decisão:
• Número de caminhões;
• Número de carregadores.
Função objetivo:
• Minimizar o custo total de recursos (carregadores, caminhões) somado a possível
multa de atraso do atendimento (contabilizado se a entrega demorar mais de 600
minutos, por exemplo)
Notas

Capítulo 1
1 Dicionário Houaiss da Língua Portuguesa. 1. ed., Rio de Janeiro: Objetiva, 2001.
2 Do inglês: tool of last resort (tradução livre).
3 Processo que visa certificar-se de que o modelo é uma boa representação da realidade. Esse assunto será discutido no
Capítulo 5.
4 O Apêndice II apresenta uma introdução à Teoria das Filas.
5 First-in, first-out: o primeiro a chegar é o primeiro a ser atendido.
6 “Se lixo entra, lixo sai”, o que quer dizer que, se os dados de entrada de um software (ou mesmo de um modelo de
simulação) estão incorretos, é praticamente impossível obtermos dados de saída corretos.
7 A simulação é, em última análise, uma ferramenta da Pesquisa Operacional, ciência aplicada para a resolução de
problemas complexos que surgem na gestão de grandes sistemas da indústria, negócios, governo e defesa. A Pesquisa
Operacional tem como foco a tomada de decisões por meio de modelos quantitativos. Assim, a simulação encaixa-se
perfeitamente como uma ferramenta para a tomada de decisão.
8 Mainframe é um computador de grande porte utilizado para o processamento de grande volume de informações. Sua
utilização é hoje restrita aos setores que além da carga de processamentos, também necessitam de um grande número de
terminais, como bancos, companhias de aviação, empresas governamentais, universidades etc.
9 O Apêndice VII apresenta uma relação das distribuições estatísticas mais utilizadas na Simulação de Eventos Discretos.
10 Como destacado no Apêndice II, a caracterização de um modelo de fila é dada pela notação de Kendall-Lee: (a/b/c):
(d/e/f), onde:
a: indica o processo de chegadas dos elementos aos postos de atendimento, definido pela distribuição estatística do intervalo
entre chegadas dos elementos. São utilizadas as seguintes abreviações padronizadas: M, quando os tempos entre chegadas
sucessivas são variáveis aleatórias i.i.d. com distribuição exponencial; D, quando os tempos entre chegadas sucessivas são
i.i.d. e determinísticos; Ek, quando os tempos entre chegadas sucessivas são variáveis aleatórias i.i.d. com distribuição
Erlang de parâmetro k; G, quando os tempos entre chegadas sucessivas são variáveis aleatórias i.i.d. com distribuição
genérica;
b: indica o processo de atendimento dos elementos em cada posto de serviço, definido pela distribuição estatística do tempo
de serviço, com as mesmas abreviações utilizadas para os tempos entre chegadas sucessivas;
c: é o número de postos de serviço em paralelo;
d: é a disciplina de atendimento dos elementos da fila: FCFS, LCFS, SIRO e GD;
e: é o número máximo de elementos permitido no sistema (fila mais postos de serviço).
Convém mencionar que, em muitas situações, a fila é especificada apenas pelo primeiro termo (a/b/c), pois se admite que o
primeiro a chegar é o primeiro a ser atendido, não há limitação na capacidade do sistema e a população é infinita.

Capítulo 2
1 Uma sequência de variáveis aleatórias é dita independente e identicamente distribuída (i.i.d.) quando todas as variáveis
pertencentes à sequência têm a mesma distribuição de probabilidades e são mutuamente independentes entre si. Por
exemplo, se lançarmos um dado 10 vezes e em todas as vezes a face obtida for igual a 1, no próximo lançamento, a chance
– ou probabilidade – de ocorrência da face 1 continua a mesma, isto é, não aumenta nem diminui em função da sequência de
faces obtida no passado. Muitos testes estatísticos partem da hipótese de que a sequência de variáveis aleatórias é i.i.d.
2 A variância da amostra é particularmente afetada, pois representa a média dos desvios ao quadrado (Apêndice I). Neste
aspecto, a mediana é uma medida mais robusta, pois é pouco afetada por pequenos erros na amostragem.
3 Se ordenarmos os valores observados do maior valor para o menor e dividirmos em quatro partes iguais, o primeiro quartil
(Q1) é o valor que deixa 25% das observações à sua esquerda, o segundo quartil (Q2) ou mediana deixa 50% das
observações à sua esquerda, e o terceiro quartil (Q3) deixa 75% das observações à sua esquerda.

4 Muitos “eventos raros” podem ser incorporados no estudo de simulação de outras maneiras: através de uma cuidadosa
análise de sensibilidade da simulação ou através da incorporação de “falhas” no modelo computacional.
5 Muitas ocorrências com valor baixo e poucas ocorrências com valor alto.
6 Como a distribuição exponencial tem uma média igual ao seu desvio-padrão (Apêndice VII), o coeficiente de variação
dessa distribuição é sempre igual a 1.
7 Alguns métodos usuais para estimação de parâmetros das distribuições são: o método da máxima verossimilhança, o
método dos momentos e o método gráfico (p. ex., Devore, 2000).
8 Denominado erro “Tipo I”.
9 Outros testes conhecidos (LAWLESS, 1982): Cramer-von Mises, Anderson-Darling e o método gráfico.
10 Baseado em Biller e Nelson (2005).
11 Baseado em Chu (2003).
12 As curvas de Bézier são formadas por um conjunto de curvas parametrizadas, comumente utilizadas na computação
gráfica. A partir de um conjunto de pontos de controle, pode-se variar a forma da curva facilmente, daí sua importância no
ajuste de dados (NELSON; YAMNITSKY, 1997).

Capítulo 3
1 Alguns aspectos da complexidade dos modelos de simulação estão descritos na Leitura Complementar ao final deste
capítulo.
2 O presente texto (à exceção do exemplo “Filósofos famintos”), até a seção “Outras executivas de simulação”, foi
elaborado na íntegra pelo Prof. Ray J. Paul, da Universidade de Brunel (Inglaterra).
3 O processo pode ser automatizado com o auxílio de calculadoras ou mesmo de um computador.
4 Alguns exemplos foram adaptados de PAUL; BALMER, Simulation Modelling, 1993.
5 Baseado em Chwif et al. (1999).
6 Baseado em Chwif et al. (2000).
7 Originalmente, “keep it simple and stupid” (“mantenha-o simples e estúpido”), ou simplesmente “KISS”, acrônimo criado
por Kelly Johnson, engenheiro chefe da empresa estadunidense Lockheed. Com o tempo, a frase ganhou novas versões,
como a popular “keep it simple, stupid!” (“mantenha-o simples, estúpido!”).

Capítulo 4
1 Uma fila M/M/1 é um modelo de fila em que os tempos entre chegadas sucessivas de clientes são exponencialmente
distribuídos, os tempos de atendimento no servidor são exponencialmente distribuídos, e existe apenas um servidor de
atendimento. Estando o servidor ocupado, os clientes permanecem em uma fila única e são atendidos segundo uma disciplina
que respeita a ordem de chegada dos clientes, ou “o primeiro a chegar é o primeiro a ser atendido”.
2 “Python” é uma linguagem de programação de alto nível, interpretada, orientada a objetos e que prioriza a legibilidade do
código. Possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python
Software Foundation. Saiba mais em www.python.org.
3 Uma versão desde código pode ser obtida no site do livro: www.livrosimulacao.eng.br.
4 Baseado em Banks (2001).
5 www.minutesmansoftware.com.
6 http://lionhrtpub.com/orms/
7 http://www.argesim.org/comparisons/index.html
8 Consulte o Capítulo 7.
9 Quando um modelo é construído através do POO, podemos criar “objetos-filho”, que “herdam” propriedades do “objeto-
pai”.

Capítulo 5
1 Existe outro tipo de validação denominada validação operacional, mas, quando falamos somente validação, estamos nos
referindo à validação conceitual.
2 O primeiro a chegar é o primeiro a ser atendido.
3 Do inglês “accreditation”.
4 Baseado em: “A Prescriptive Technique for V&V of Simulation Models when no real-life data are avaiable”, de Leonardo
Chwif, Paulo Sérgio Muniz e Lúcio Shimada. Proceedings of the 2006 Winter Simulation Conference, Monterey, CA,
USA, 2006.
5 Na verdade, a metodologia de V&V proposta originalmente pelos autores é um pouco mais complexa do que a descrita
nesta leitura complementar, pois envolve uma técnica estatística denominada “Projeto de Experimentos”, que será descrita
no Capítulo 7. Além disso, há alguns problemas intrínsecos ligados à matriz de influências causais. Para mais detalhes,
recomenda-se a leitura do artigo original.
6 Exemplo retirado de Robinson (2004). Este modelo, para o simulador SIMUL8, está disponível em:
http://www.support.simul8.com/library/StewartRobinson/.

Capítulo 6
1 O Apêndice I apresenta uma breve revisão dos assuntos de probabilidade e estatística.
2 Como já tínhamos 10 replicações, foi necessário realizar mais 10. Contudo, as novas replicações devem ser realizadas com
a “semente” de geração dos números aleatórios modificada para cada replicação; caso contrário, as novas 10 replicações
seriam idênticas às 10 já obtidas.
3 Existem diversas técnicas práticas e eficientes para ajuste ou suavização de curvas. Um ponto de partida é consultar um
bom livro de Pesquisa Operacional, como os de Winston (1994) ou Taha (2002).
4 Se o estudo envolve outras medidas de desempenho, todas devem ser analisadas, e o warm-up deve ser escolhido pelo
maior valor.
5 Usualmente, procura-se trabalhar com tempos de simulação superiores a, no mínimo, 10 vezes o tempo de warm-up; essa
quantidade, “10” vezes, é empírica.
6 Esta rodada consumiu cerca de quatro minutos em um Pentium III com 300 MHz, utilizando o software Arena.
7 Duas amostras são ditas “emparelhadas” quando possuem alguma relação entre si. No caso, como as amostras são
obtidas a partir de um mesmo modelo de simulação, garante-se o emparelhamento.
8 Para a aplicação do teste, deve-se assumir a hipótese de normalidade para as observações obtidas do modelo de
simulação. Essa hipótese é razoável, pois cada observação extraída de uma replicação representa uma média de
observações internas desta replicação, e cada replicação é executada sob as mesmas condições.
9 RIRO (randon-in,random-out).
10 Aντιϑετικóς. [Do gr. antithetikós.] Adj. 1. Que contém ou constitui antítese. Dicionário Aurélio.
Capítulo 7
1 Para outros tipos de projetos, sugere-se a leitura de: Box e Hunter (1978) e Montgomery (1991).
2 Para verificarmos se os tratamentos são realmente significativos, é necessário montar uma tabela de análise de variância
(ANOVA). Para detalhes, ver Montgomery (1991).
3 “Hillo” é um guincho composto de uma estrutura tubular ou de perfis laminados, com altura variando entre 13 e 16 metros.
A estrutura sustenta um sistema de cabos com polias que movimenta uma viga horizontal em um movimento ascendente e
descendente.
4 Baseado em Paul; Balmer (1993).

Capítulo 8
1 Este caso já foi parcialmente discutido no Exemplo 6.4.
2 Baseado em Myiashita (2002).
3 Disponibilidade é a porcentagem do tempo em que a sonda está disponível para operação, ou seja, não está quebrada nem
em manutenção e/ou em espera por manutenção.
4 Baseado em Chisman (1996).
5 Baseado em Dijk (1997).
6 Baseado em Franco et al. (2001).
7 Sugestão de leitura: Larson (1987).
8 Esta área, nos call centers, é chamada de área de antiatrito, ou anti-atrition.
9 Baseado em Saltzman e Mehrotra (2001).
10 Baseado em Larson e Odoni (1981).
11 “How many parts to make a once”, Factory: The Magazine of Management, v. 10, 1913, p.135-136. Republicado em
Harris (1990).
12 Ver, por exemplo, Winston (1994), para uma discussão mais detalhada sobre modelos de gestão de estoques
probabilísticos.
13 Baseado em Whitt (1986).
14 Baseado em Law; Kelton (1991).
15 Baseado nas anotações de aula da disciplina “Planejamento e Controle da Produção”, do professor Miguel Cezar Santoro,
da Escola Politécnica da Universidade de São Paulo.
16 Baseado num projeto real realizado por um dos autores.
17 Baseado em Tauböck (2001).
18 Retirado de um caso real de atendimento médico do SUS, com dados modificados.
19 Baseado em Albeseder; Függer (2004).

Capítulo 9
1 Na planilha eletrônica Excel, por exemplo, a função =ALEATORIO() retorna números aleatórios uniformemente
distribuídos entre 0 e 1. Para gerar uma demanda da roleta, pode-se utilizar alguma função de teste lógico do tipo se... então
para converter o número aleatório em uma demanda de jornais.
2 Do Capítulo 6, um intervalo de confiança 100(1-α)% para a média de uma população é construído através da equação
(DEVORE, 2000):
onde:
é a média da amostra;

é a metade do tamanho do intervalo, aqui denominada de precisão;

é o percentil da distribuição t de Student com n-1 graus de liberdade;


s é o desvio-padrão da amostra;
n é o número de dados da amostra.
1 http://home.uchicago.edu/~rmyerson/addins.htm
2 http://projects.gnome.org/gnumeric/
3 O arquivo utilizado neste exemplo está disponível no site do livro, na seção de downloads:
http://livrosimulacao.eng.br/download.html
4 Inicialmente, a dinâmica de sistemas era chamada de Industrial Dynamics.
5 http://www.vensim.com
6 Esta seção contou com a colaboração do pesquisador Luis Gustavo Nardin do Laboratório de Técnicas Inteligentes da
Escola Politécnica da USP (LTI, http://www.lti.pcs.usp.br) e do Laboratory of Agent-Based Social Simulation (LABSS,
http://labss.istc.cnr.it/).
7 http://conwaylife.com/
8 Um applet em Java deste jogo pode ser visualizado no site http://www.bitstorm.org/gameoflife/, enquanto uma aplicação
open-source para uso em computadores ou celulares está disponível em http://golly.sourceforge.net/.
9 Um applet deste jogo pode ser visualizado no site
http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation%28docked%29.
10 “World Wide Web” ou simplesmente “Web”, também conhecido como www, é um termo de língua inglesa que se traduz
por “teia mundial” e identifica o sistema de documentos hipermídia que são conectados e executados na internet.
11 Acrônimo em língua inglesa de Asynchronous Javascript and XML.

Capítulo 10
1 CLP: Controlador Lógico Programável, dispositivo de controle de processos.
2 Pseudocódigo: codificação de um programa em uma linguagem próxima da linguagem natural.

Apêndice I
1 Pierre Simon, Marquês de Laplace. “Théorie Analytique des Probabilités” (1812).
2 O desvio-padrão é definido como a raiz quadrada positiva da variância.
3 Qualidade do que é verossímil ou verossimilhante (Dicionário Houaiss).
4 Uma discussão interessante sobre o desenvolvimento do método da máxima verossimilhança pode ser encontrada em
Aldrich (1997).
5 Outros métodos conhecidos para a estimação de parâmetros são o método dos momentos (consultar, por exemplo,
Devore, 2000) e o método de Bayes (consultar, por exemplo, Neto, 1986).

Apêndice II
1 O leitor é obviamente convidado a refletir (se é que ainda não o fez) sobre quanto custa sua hora de espera em uma fila.
Mas lembre-se: pense num valor a partir do qual o prestador de serviço perderá o leitor como cliente e o quanto isso trará de
prejuízo para o prestador no futuro.
Apêndice III
1 Uma discussão mais aprofundada sobre o método do meio-quadrado pode ser encontrada em Knuth (1997).
2 Ou gerador de congruência linear (linear congruent generator – LCG).
3 Ou seja: a sequência de números começa a se repetir após M iterações do algoritmo.
4 Do inglês: “Random number generators should not be chosen at random”.

Apêndice IV
1 Norma NBR 10.719 (NB887): “Apresentação de Relatórios Técnicos Científicos”.
2 Ou seja: tudo aquilo que o diretor-presidente não quer ler.
3 Mas, se você prefere imprimir e entregar para o seu cliente um relatório automático de 6.930 páginas, por favor, não
comente com ninguém que você leu nosso livro...
4 Atenção, apenas anexe os resultados que foram realmente utilizados nos cálculos. Se, por exemplo, trata-se do intervalo
de tempo de espera em fila, no anexo deve aparecer uma tabela com cada saída de cada replicação apenas para o tempo
de espera em fila. Um erro grosseiro é acrescentar saídas completas de softwares de simulação com várias páginas e várias
informações inúteis que não fizeram parte do escopo do projeto.

Apêndice V
1 No site do livro, o leitor encontra material complementar sobre especificação de modelos de simulação.