br
Introduo ao SIMUL8
Um guia prtico
Leonardo Chwif
Afonso C. Medina
Wilson I. Pereira
Darli R. Vieira
Jos E. Pcora Jr.
So Paulo
2015
INTRODUO AO SIMUL8: UM GUIA PRTICO
1 EDIO ATUALIZADA
12-14907 CDD-003.3
[2015]
Todos os direitos desta edio reservados a:
LEONARDO CHWIF
AFONSO C. MEDINA
livrosimulacao@livrosimulacao.eng.br
http://www.livrosimulacao.eng.br
Prefcio|4
Prefcio
O objetivo deste livro introduzir o leitor no uso de uma das mais poderosas e utilizadas ferramentas de simulao: o
SIMUL8.
PBLICO-ALVO
Este livro foi planejado para ser usado em cursos de simulao, para o profissional de simulao autodidata que deseja
utilizar o SIMUL8 em seus projetos e at mesmo para quem j o utiliza no seu cotidiano, mas no est totalmente
familiarizado com as capacidades especficas do software. Alm disto, estudantes de administrao, engenharia, cincias
da computao e reas afins, que estejam cursando disciplinas de simulao de eventos discretos e que possuam
atividades prticas e projetos no SIMUL8, tornam-se automaticamente pblico-alvo deste livro.
ORGANIZAO DO TEXTO
Ao escrever este livro, ns adotamos um estilo prximo ao de tutorial, de modo que, para o leitor, o tempo de
aprendizagem dos comandos e funes sejam os menores possveis. O livro est dividido em 8 captulos.
No Captulo 1, mostramos os recursos bsicos do SIMUL8 por meio de um exemplo simples. No Captulo 2
discutimos a alocao de recursos em modelos de simulao. O Captulo 3 dedicado ao uso de distribuies aleatrias.
O Captulo 4 mostra como podem ser representados desvios de fluxo em simulao, por meio de roteamentos. O
Captulo 5 introduz o ambiente de programao do SIMUL8 (Visual Logic), que permite representar situaes
complexas. O Captulo 6 discute os refinamentos visuais que podem (e devem) ser feitos em modelos de simulao.
O Captulo 7 mostra o uso de diversas funcionalidades especficas do SIMUL8, que servem para representar casos no
contemplados nos captulos anteriores. O Captulo 8 descreve casos prticos de simulao extrados de projetos reais
de consultoria. Por fim, inserimos um apndice que ilustra o uso do software Stat::Fit, especfico para o tratamento de
variveis aleatrias.
Leonardo Chwif
RECURSOS DISPONVEIS
Acreditamos que o ideal para aproveitar este livro acompanhar as explicaes e discusses com o software SIMUL8.
Para quem no o possui, disponibilizamos um stio na internet para download e instalao de uma verso Trial do
SIMUL8 que funcional durante 14 dias. Voc poder baix-lo em:
http://www.simul8.com/ebookbr
Adicionalmente a empresa Simulate Tecnologia de Simulao promove cursos on-line e presenciais do SIMUL8. Para
maiores informaes, acesse:
http://www.simulate.com.br/treinamento.html
Por fim, o livro tem seu prprio stio na Internet, um lugar para voc baixar material mais especfico sobre Simulao
de Eventos Discretos:
http://www.livrosimulacao.eng.br
Visite-nos!
Sobre os Autores
LEONARDO CHWIF
graduado em Engenharia Mecatrnica pela Escola Politcnica da Universidade de So Paulo, Mestre pela USP e
Doutor pela USP/Brunel University (U.K) em simulao de processos. Leonardo possui inmeros artigos em
simulao publicados em peridicos e conferncias nacionais e internacionais. Possui mais de 15 anos de experincia
em simulao, tendo trabalhado tambm em grandes empresas como Mercedes-Benz e Whirlpool Corporation. J
realizou mais de 100 projetos de simulao. Juntamente com Afonso Celso Medina autor do livro Modelagem e
Simulao de Eventos Discretos.
www.livrosimulacao.eng.br
Sumrio|7
Sumrio
Captulo 1 Introduo ........................................................................................................................................ 11
2.1. Introduo.......................................................................................................................................................34
3.1. Introduo.......................................................................................................................................................53
3.4.4. Combination: criando uma nova distribuio a partir da soma de outras ......................................64
3.4.5. Time Dependent: criando distribuies que se alteram com o tempo .............................................66
3.4.8. External: acessando distribuies externas ao SIMUL8 (Excel ou Visual Basic) .......................73
4.1. Introduo.......................................................................................................................................................78
4.3. Outras disciplinas de entrada (Expired Only, Oldest, Youngest, Longest e Circulate)..................................81
4.4. Disciplinas de sada: Circulate, Uniform, Percent, Priority, Label, Shortest Queue, Passive e Batching ...........83
8.3. Caso 2: modelagem e simulao do servio de suporte a usurios de um ERP ............................... 141
Captulo 1 INTRODUO
O SIMUL8 , atualmente, um dos softwares de simulao com o maior nmero de licenas vendidas no mundo. Isto se
deve, principalmente, ao seu preo de venda relativamente baixo e facilidade de uso. O desenvolvimento do SIMUL8
teve incio na dcada de 1990, na Universidade de Strathclyde (Esccia), com a finalidade de ensino de simulao.
Devido ao sucesso do programa como ferramenta de ensino de simulao, a Simul8 Corporation iniciou sua
comercializao como ferramenta profissional para projetos de simulao.
Este captulo contm um tutorial rpido de uso do SIMUL8, em que o leitor construir um modelo bsico de simulao
e entrar em contato com as principais funcionalidades do programa.
Figura 1.1 - Posto de atendimento bancrio, formado por uma fila de clientes, um caixa de atendimento e um ponto de sada.
Neste posto, cada cliente atendido pelo caixa em um tempo mdio de 6 minutos e um novo cliente chega ao posto
em busca de atendimento, em mdia, a cada 10 minutos (ou seja, o posto recebe uma mdia de 6 clientes por hora).
Os intervalos de tempo entre as chegadas e os tempos de atendimento de cada cliente so aleatrios e seguem
distribuies de probabilidade exponenciais1. O posto funciona continuamente durante 6 horas por dia e a disciplina
de atendimento do tipo o primeiro a chegar o primeiro a ser atendido: assim, no se pode furar a fila e no
existe qualquer tipo de atendimento preferencial. Estas informaes so suficientes para construirmos nosso primeiro
modelo de simulao no SIMUL8.
1 Caso no esteja familiarizado com distribuies de probabilidade, voc pode consultar o Captulo 3 deste livro ou
algum material especfico sobre estatstica e probabilidades.
Captulo 1: I n t r o d u o | 12
Para inserir objetos no modelo deve-se clicar no boto do bloco construtor correspondente (no painel de bloco
construtores do modelo) e, em seguida, na janela de simulao ou arrast-los do painel de blocos construtores para a
janela de simulao. Se a opo de conexo automtica estiver habilitada (que o padro do programa), o SIMUL8 ir
inserir automaticamente as ligaes entre os objetos inseridos. Assim, para construir o modelo do posto bancrio, faa
o seguinte:
Opcionalmente, pode-se arrastar e soltar os objetos do painel de blocos construtores para a janela de
simulao.
A janela de simulao dever apresentar um aspecto semelhante ao que mostrado na Figura 1.4. Compare o resultado
obtido com o desenho do exemplo na Figura 1.5: o ponto de entrada (Start Point) representa a entrada do sistema, ou
seja, o local por onde os clientes entram no posto. Os clientes aguardam na fila (Queue) caso algum cliente esteja sendo
atendido (Activity). Aps o atendimento, os clientes saem imediatamente do posto bancrio pelo ponto de sada (End).
Captulo 1: I n t r o d u o | 14
Figura 1.5 - Comparao entre as duas representaes do sistema: grfica e blocos construtores do SIMUL8.
Por questes estticas, voc poder querer movimentar os blocos do modelo basta clicar e arrastar o objeto desejado
com o mouse ou alinh-los automaticamente: selecione os blocos e clique com o boto direito do mouse sobre qualquer
ponto da janela de simulao (Figura 1.6). No menu de contexto que se abrir, existem duas opes: a opo Align2,
que alinha os objetos selecionados e a opo Space Equally, que distribui os objetos selecionados a uma mesma distncia
entre si. Use-as!
Figura 1.6 Menu de contexto com opes de alinhamento e espaamento de objetos selecionados.
possvel inserir as ligaes que eventualmente estiverem faltando usando o Routing Drawing Mode: clique no boto
correspondente no painel de ferramentas de conexo (Figura 1.7) para ativar o modo de edio de ligaes (o cursor
se transforma em uma seta apontando para a direita). Em seguida, clique nos objetos de origem e destino da ligao.
Para sair do modo de edio, clique novamente no boto Route Drawing Mode. Para apagar uma ligao errada basta
selecion-la com o mouse (com o Routing Drawing Mode desativado) e pressionar a tecla Delete.
Outra forma de se inserir objetos e ligaes no modelo por meio de uma ferramenta chamada Paddle que, quando
est ativada, se torna visvel quando um ponto de entrada, fila ou atividade so selecionados (Figura 1.8). Clicando-se
em uma das 4 abas da ferramenta possvel inserir outros objetos de simulao ligados (ou no) ao objeto original.
possvel (em funo da verso do SIMUL8) que voc tenha que ativar a ferramenta Paddle, caso as abas no sejam
exibidas: clique em File | Preferences | Options e selecione a opo Paddle On.
Captulo 1: I n t r o d u o | 16
a) Abra a janela de propriedades do ponto de chegada de clientes (Start Point), clicando duas vezes no objeto. Altere o
ttulo do objeto de Start Point 1 para Chegada e ajuste o intervalo de tempo mdio entre chegadas para 10 minutos,
com distribuio exponencial (Figura 1.9).
Captulo 1: I n t r o d u o | 17
O SIMUL8 mostrar uma breve explicao sobre cada boto e opo das janelas de parmetros caso voc posicione o
cursor do mouse sobre o elemento por alguns instantes (Figura 1.10).
Ainda na janela de parmetros do Start Point, clique em Graphics | Title | Show Title on Simulation Window para que o
nome do objeto (Chegada) seja exibido em tela (Figura 1.11). Conclua as alteraes, clicando em OK at fechar todas
as caixas de dilogo abertas. Como um mtodo alternativo, aps a seleo do objeto, clique na aba Graphics e ative a
opo Show no canto superior esquerdo (logo abaixo da aba File).
Captulo 1: I n t r o d u o | 18
O SIMUL8 cria automaticamente uma classe de entidades chamada Main Work Item Type para
representar os clientes que entram e saem do sistema. Apesar de ser possvel alterar o nome desta
classe, ou mesmo criar outras classes, isto no necessrio na maioria das situaes e no ser
abordado neste livro. Como discutiremos mais adiante, mais simples e prtico utilizarmos atributos
(ou labels) para representarmos diferentes tipos de entidades.
b) Abra a janela de propriedades da fila de espera (Queue Properties) e altere seu nome de Queue 1 para Fila de espera
(Figura 1.12). Ainda nesta janela, clique no boto Graphics e selecione a opo de exibio Queue para que o SIMUL8
mostre uma fila indiana de clientes durante a simulao (a opo padro Graphic Tank, que mostra um tanque se
enchendo ou esvaziando dependendo do tamanho da fila). Por fim, ainda na janela de opes grficas, clique em Title
| Show Title on Simulation Window para que o nome do objeto seja mostrado em tela. Em outra ocasio, explore as outras
opes de estilo de exibio da fila (Display Style).
Captulo 1: I n t r o d u o | 19
c) Abra a janela de propriedades da atividade (Activity) e altere seu ttulo de Activity 1 para Atendimento. Ajuste
tambm os parmetros do processo: distribuio exponencial, com tempo mdio de 6 minutos (Figura 1.13). Nas
propriedades grficas da atividade (boto Graphics), verifique que a opo Show Title ativada por padro.
d) Abra a janela de propriedades do ponto de sada dos clientes (End) e altere seu ttulo de End 1 para Sada (Figura
1.14). Ainda com a janela de propriedades aberta, clique em Graphics | Title | Show Title on Simulation Window para
habilitar a exibio do nome do objeto.
Captulo 1: I n t r o d u o | 20
Um ltimo ajuste recomendvel o da exibio permanente das linhas de ligao: clique no boto de opes do boto
Show/Hide Route Arrows e selecione a opo Always Show Routing Arrows (Figura 1.15).
Com isso, o modelo de simulao est pronto! Perceba que somente as alteraes feitas nos intervalos de tempo entre
chegadas e nos tempos de atendimento eram essenciais: as outras no afetam a simulao, mas facilitam o entendimento
do modelo.
Antes de prosseguir, faa uma verificao rpida de quais configuraes poderiam ter sido feitas diretamente pelo
menu principal do SIMUL8, por exemplo, selecionando o Start Point (Figura 1.16). Estas opes, que so exibidas
dinamicamente quando um objeto selecionado, so teis para os ajustes mais comuns nas propriedades de um objeto,
mas o conjunto completo de opes s est disponvel na janela de configuraes prpria.
Captulo 1: I n t r o d u o | 21
Por padro, o SIMUL8 contabiliza o tempo gasto no deslocamento de uma entidade entre os objetos do modelo de
acordo com o comprimento (em pixels) das ligaes. Como esses tempos de deslocamento geralmente so inseridos
no modelo por meio de Activities (ou matrizes de tempo de deslocamento), este tipo de representao no muito
utilizado. Assim, antes de simular o funcionamento do modelo, clique em File | Preferences e, na aba Distance, clique no
boto Set to Zero da seo Travel Times (Figura 1.17). Ao confirmar a operao, todas as ligaes do modelo tero o
tempo associado de percurso igual a zero.
Captulo 1: I n t r o d u o | 22
Esta operao muito importante porque os tempos de deslocamento no planejados podem afetar de
forma significativa os resultados de uma simulao. Alis, recomendamos que voc faa isso antes de
comear a construir qualquer modelo para no correr o risco de se esquecer!
Todos os objetos de um modelo de simulao no SIMUL8 utilizam uma mesma unidade de tempo. No caso do nosso
modelo, a unidade mais adequada o minuto, que (por acaso) a unidade padro do SIMUL8: clique em Data and
Rules | Properties ou d um duplo-clique no relgio de simulao para comprovar isso (Figura 1.18).
Captulo 1: I n t r o d u o | 23
Antes de executar uma simulao preciso definir o perodo total de tempo a ser simulado, que formado pela soma
de dois perodos consecutivos. No primeiro, chamado de perodo de aquecimento (Warm Up Period), nenhum resultado
da simulao ser coletado para a compilao de estatsticas. O objetivo deste perodo eliminar a influncias das
condies iniciais do sistema sobre os resultados da simulao3. Somente no segundo perodo (Results Collection Period)
que sero recolhidos resultados para a gerao de estatsticas, como o tempo mdio de espera em fila, por exemplo.
No exemplo do posto bancrio, por simplicidade, vamos utilizar um perodo de aquecimento = 0 e um perodo de
coleta de resultados de 100 horas de operao = 6.000 minutos. Os ajustes so feitos clicando-se nos botes na parte
inferior da janela de propriedades do relgio: pelo boto Warm Up Period (Figura 1.19) voc informa o tempo de
aquecimento ou Warm up e por meio do boto Results Collection Period (Figura 1.20) voc informa o tempo de durao
da simulao. Aps ter feito os ajustes, feche a janela de propriedades, clicando no boto OK. As outras opes da
janela de propriedades do relgio no so importantes neste ponto do nosso estudo e, portanto, no sero discutidas.
3Para maiores detalhes, consulte o livro Modelagem e Simulao de Eventos Discretos de Leonardo Chwif e
Afonso C. Medina - Captulo 6.
Captulo 1: I n t r o d u o | 24
Durante a simulao, a janela de simulao ter um aspecto semelhante ao que mostrado na Figura 1.22. Os nmeros
acima dos objetos indicam as quantidades de clientes que j entraram no sistema (32), que esto na fila de espera (1),
4Cuidado: se voc reduzir demais a velocidade de animao poder ter que esperar muito tempo para "retomar o
controle" da velocidade da simulao!
Captulo 1: I n t r o d u o | 25
em atendimento (0) e o total de clientes que j saram do sistema (30). Adicionalmente, a figura mostra (apenas para
efeitos visuais, j que os deslocamentos acontecem instantaneamente) uma entidade em deslocamento para a sada.
Voc poder clicar novamente no boto Run durante a execuo da simulao para interromp-la. Clicando novamente
no boto, a simulao ser retomada a partir do ponto em que parou. Voc saber que a simulao terminou quando
a animao dos objetos e do relgio parar5. Para recolocar o sistema em suas condies iniciais, clique no boto Reset.
Sempre que se inicia uma simulao pelo boto Run, a sequncia de nmeros aleatrios utilizados pelo
SIMUL8 ser a mesma que foi utilizada na ltima simulao. Isto quer dizer que, se o modelo no
sofrer nenhuma alterao, os resultados obtidos sero exatamente os mesmos! Na verso Professional
do SIMUL8, para executar a simulao com uma nova sequncia de nmeros aleatrios, clique na seta
abaixo do boto Run (vide boto de opes adicionais na Figura 1.21 e escolha a opo Run simulation
with new random numbers. Para todas as verses do SIMUL8, o controle dos nmeros aleatrios pode
ser feito manualmente, como descrito na seo 3.5.2.
Por fim, voc poder executar uma simulao passo a passo (ou seja, parando a execuo a cada evento) clicando no
boto Step, uma opo muito til para verificar se h erros no modelo.
Importante: os valores mostrados a seguir podero ser diferentes daqueles que voc, leitor, vai obter
em seu modelo devido aos nmeros aleatrios usados em cada computador.
Os principais resultados dos pontos de entrada so: o nmero de clientes que chegaram ao sistema e o nmero de
clientes perdidos ou seja, que no entraram no sistema por encontr-lo bloqueado (Figura 1.23). Por exemplo, se
a fila de espera tivesse capacidade limitada, qualquer chegada que ocorresse com a fila cheia daria origem a um cliente
perdido.
5 Na janela de ajuste do tempo de simulao possvel habilitar um beep que indique o final da simulao.
Existem dois grupos de informao disponveis nas filas de espera: um sobre a quantidade de clientes e outro sobre os
tempos de espera (Figura 1.24). Na seo Number of work items in this storage, possvel consultar o nmero de entidades
presentes na fila no instante em que a simulao foi interrompida (Currently), os nmeros mnimo, mdio e mximo de
entidades que estiveram na fila (Minimum, Average e Maximum) e o nmero total de entidades que entraram na fila
durante a simulao (Total Entered).
O boto Graph cria um grfico com a evoluo do nmero de clientes em fila ao longo da simulao, com o valor
mdio indicado por uma linha tracejada (Figura 1.25).
Sobre o tempo de espera (Queuing Time), so fornecidos os valores mnimo, mdio e mximo (Minimum, Average e
Maximum) e o respectivo desvio padro (Standard Deviation) para todas as entidades que passaram por esta fila (coluna
All). Os tempos associados s entidades que no tiveram que aguardar na fila (porque o servidor estava livre) so
indicados na coluna Non-Zero: o total de entidades com esta caracterstica dado por Number of non-zero queuing times.
possvel, ainda, obter um histograma dos tempos de espera, clicando no boto Histogram (Figura 1.26).
Por fim, possvel consultar a porcentagem de entidades que permaneceram em fila por um perodo de tempo igual
ou inferior a um limite especificado (Percentage within limit) - vide Figura 1.24.
Nas atividades, possvel consultar dois grupos de informaes (Figura 1.27). O primeiro, sobre o total de entidades
processadas (Number of work items), apresenta o nmero de entidades que estavam em processamento quando a
simulao foi interrompida, alm dos valores mnimo, mdio, mximo e total de entidades processadas (Currently in
Activity, Minimum, Average, Maximum e Completed Jobs).
Captulo 1: I n t r o d u o | 28
O segundo grupo de informaes, sobre porcentagens de tempo (Percent of Time), s ser apresentado quando a
atividade corresponder a um nico servidor (Replicate = 1), que o caso do nosso exemplo. Neste conjunto de
resultados so apresentadas as porcentagens de tempo em que a atividade esteve livre (Awaiting Work), em
processamento (Working), bloqueada porque a entidade processada no pde seguir em frente (Blocked) - e parada
por avarias (Stopped).
Por padro, cada Activity no SIMUL8 representa o processo de execuo de uma atividade, sobre uma
entidade: enquanto a atividade no terminar, o objeto Activity no poder processar outra entidade,
que dever aguardar em fila. No entanto, objetos Activity podem ser configurados para representar a
execuo de mais de uma atividade em paralelo, por meio de uma propriedade chamada Replicate. Por
exemplo, com apenas um objeto, podemos representar a operao em paralelo de 15 caixas de
supermercado, alimentados por uma fila nica, utilizando um Activity com Replicate = 15. O prximo
captulo discutir detalhes sobre o uso da propriedade Replicate.
O SIMUL8 permite a criao de um resumo de resultados personalizado, que pode ser consultado aps o final da
simulao por meio do boto Results Manager (Figura 1.29) da aba principal do programa (aba Home). Para configurar
os resultados que sero exibidos no resumo preciso clicar com o boto direito do mouse sobre os valores desejados
nas janelas de resultados correspondentes (o cursor mudar de cor e de formato ao ser posicionado sobre algum
resultado numrico vide Figura 1.28). Para remover algum resultado do resumo, o procedimento o mesmo.
Execute novamente a simulao do posto, clique no boto Results Manager e observe os resultados, que devero ser
semelhantes aos da Figura 1.297.
Figura 1.28 - Incluso de resultados do nmero de entidades que entraram no sistema no relatrio de resumo (Results Manager).
7O resumo de resultados do SIMUL8 Professional (Results Manager), mostrado na Figura 1.29, contm mais opes
do que o correspondente da verso Standard (Results Summary).
Captulo 1: I n t r o d u o | 30
minutos (= 6 horas). Em seguida, clique na seta abaixo do boto Run Trial (na aba Home), selecione a opo Trial Setup
e ajuste o nmero de replicaes da rodada para 30 (Figura 1.30).
Por fim, para executar as 30 replicaes do modelo, clique no boto Run Trial como indicado na Figura 1.31 (caso voc
clique no boto Run, o SIMUL8 executar apenas 1 replicao). Ao final da rodada, o SIMUL8 exibir automaticamente
o resumo de resultados (Figura 1.32).
Os resultados de uma rodada de simulao sempre so mostrados na forma de intervalos de confiana8. Por exemplo,
conforme a Figura 1.32, o tempo mdio de espera em fila (Average Queueing Time) no posto bancrio de 8,99 minutos
(Average Result). Alm disso, com 95% de confiana estatstica, pode-se afirmar que o tempo mdio de espera est entre
6,40 e 11,59 minutos. Quanto mais replicaes forem feitas em uma rodada, mais precisos sero os resultados obtidos,
ou seja, menor ser o tamanho do intervalo de confiana. Experimente executar 60 replicaes do modelo para
comprovar isso.
Durante a simulao, o SIMUL8 mostrar um grfico com a evoluo do intervalo de confiana, conforme as
replicaes so executadas (Figura 1.34).
8Para entender o conceito de intervalos de confiana, consulte algum material de estatstica ou o Captulo 6 do livro
Modelagem e Simulao de Eventos Discretos de Leonardo Chwif e Afonso C. Medina.
Captulo 1: I n t r o d u o | 32
Ao final do processo, ser indicado o nmero recomendado de replicaes (Figura 1.35) e o resumo de resultados
correspondente (Figura 1.36). Como cada grandeza selecionada impe um limite diferente, o SIMUL8 ir adotar como
nmero de replicaes o maior valor recomendado (=1.294 no nosso exemplo).
2.1. Introduo
Os recursos so entidades associadas aos objetos Activity, que controlam ou restringem a execuo de uma atividade.
Isto acontece porque, se um recurso no estiver disponvel para um Activity que o utiliza, este Activity no poder
realizar sua tarefa. Na prtica, isto serve para representar a disponibilidade limitada de recursos, como mquinas,
pessoas, ferramentas etc.
Outro conceito importante em simulao o de atributo de entidade, chamado no SIMUL8 de label. Neste captulo
faremos uma introduo ao uso de labels para explicar a sua funcionalidade na alocao de recursos Resource by Label
assunto que ser retomado em outros captulos deste livro, dado seu uso recorrente nos modelos de simulao.
A seqncia do processo para os caminhes : chega, aguarda em fila se necessrio, recebe a carga e sai. Para os
treminhes, o processo : chega, aguarda em fila se necessrio, descarrega e sai. Como visto no Captulo 1, os processos
de chegadas sero modelados por Start Points, as esperas (filas) por Queues, os processos de carga e descarga por Activities
e as sadas por Ends. As empilhadeiras, como veremos adiante, sero modeladas por recursos (Resources).
Como existem duas empilhadeiras disponveis, duas operaes de carga podero ocorrer simultaneamente. Por
motivos didticos, vamos representar a operao de carga por meio de dois Activities em paralelo, como ilustrado na
Figura 2.2, ainda sem a representao das empilhadeiras.
9Exemplo retirado de Introduo a Simulao com o SIMUL8 de Moreira, Gomes e Silva, Seco de Urbanismo,
Transportes, Vias e Sistemas Departamento de Engenharia Civil e Arquitectura, Instituto Superior Tcnico, 1993.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 35
Seria mais simples (e eficiente, do ponto de vista computacional) usar apenas um Activity com
Replicate = 2 do que usar dois objetos em paralelo. Repetindo, tomamos esta deciso apenas por
razes didticas.
Figura 2.1 - Exemplo inicial: um centro de distribuio que recebe caminhes para serem carregados e treminhes para descarregamento.
Segundo as informaes da descrio do exemplo, a durao das atividades deve ser configurada no SIMUL8 da forma
indicada na Tabela 2.1 valores em minutos.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 36
Tabela 2.1 - Tempos entre chegadas sucessivas e de durao dos atendimentos (em minutos).
As duas empilhadeiras so utilizadas em trs atividades do processo, de modo que elas podem no estar sempre
disponveis para uso. Este fato as qualifica como recursos, como comentamos na introduo deste captulo. Para
adicionar o recurso Empilhadeiras ao modelo, clique no objeto Resource no painel de blocos construtores e, em
seguida, em algum ponto da janela de simulao (Figura 2.3) opcionalmente, arraste o objeto para a janela de
simulao. O titulo do recurso, Empilhadeiras, pode ser digitado no canto superior da tela, no campo Name: do
menu Properities, que surge enquanto o recurso estiver selecionado. Pelo mesmo menu, na opo Number avaliable, voc
pode alterar o nmero de empilhadeiras disponveis: no caso do exemplo, o valor igual a 2.
A janela de propriedades do recurso, aberta clicando-se duas vezes no cone do recurso, tambm permite trocar o
nome e o nmero dos recursos disponveis, como mostrado na Figura 2.4.
Por fim, preciso associar os recursos s atividades, indicando para o SIMUL8 que a atividade s pode acontecer se o
recurso estiver disponvel10. Se isto no for feito, o modelo de simulao vai representar uma situao absurda, como
a de uma empresa que contrata um operador de mquina e compra uma mquina automtica que funciona sem a
presena do operador! Para fazer esta associao entre atividade e recurso, abra a janela de propriedades da atividade
Carregamento baia 1 e clique no boto Resources. Associe o recurso atividade clicando no boto Add e selecionando
o recurso desejado (Empilhadeiras), como apresentado na Figura 2.5.
Ainda na janela Resources Required, clique no boto Detail para definir o nmero de recursos necessrios para a execuo
da atividade (Number Required: Min e Max). Para este exemplo, no preciso alterar os valores padro (ambos iguais a
1), mas pedimos que voc abrisse esta janela para discutirmos o seguinte:
10Em nossa experincia, percebemos que muitos erros em modelos de simulao so devidos a problemas com a
alocao de recursos.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 38
Se forem definidos valores diferentes para o mnimo e o mximo de recursos exigidos, o tempo de
execuo da atividade ser inversamente proporcional ao nmero de recursos que puderem ser
alocados para a atividade (isto ser detalhado mais adiante neste captulo).
Figura 2.6 Definio do nmero de recursos necessrios para execuo da tarefa no Activity.
Repita a associao do recurso Empilhadeiras com a atividade de carga na baia 2 e com a atividade de descarga. O
SIMUL8 indicar visualmente a associao entre recursos e atividades se voc clicar sobre um recurso e mantiver o
boto do mouse pressionado (Figura 2.7). obs. A associao recurso - atividade pode ser tambm ser realizada de forma
grfica da mesma maneira que se liga dois objetos atravs de um link. Neste caso o link no ser visualizado mas
aparecer a mensagem Recurso xxx adicionado a atividade yyy
Figura 2.7 - Mantendo o mouse pressionado sobre objeto Resources o SIMUL8 reala os Activities que utilizam o recurso com bolas
vermelhas.
Simule o sistema por 72.000 minutos (Warm-up = 10.000 minutos), fazendo uma rodada com 30 replicaes (Trials) e
analise os principais indicadores de desempenho do modelo: mdias dos tamanhos e dos tempos de espera nas filas e
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 39
utilizao percentual dos recursos. Para acessar os resultados de sada de um recurso ou configurar o relatrio de
resultados basta proceder como discutido no Captulo 1. Lembre-se, claro, de zerar os tempos de deslocamento do
modelo (Travel Times) antes de executar a simulao. Compare seus resultados com os nossos, mostrados na Figura 2.8.
Que concluses podem ser obtidas sobre o funcionamento do sistema?
Considere, agora, que uma das empilhadeiras pare de funcionar, de modo que apenas uma operao de carga ou
descarga possa ser feita a cada instante. Para isso, no modelo, altere a quantidade empilhadeiras disponveis para 1
(Number of this type of resource available). Simule novamente o modelo e veja o tamanho do estrago causado.
Para responder a essa pergunta, vamos retornar ao exemplo da seo anterior, assumindo que exista apenas uma
empilhadeira disponvel e que a prioridade de alocao do recurso tenha que ser para a operao de descarga dos
treminhes. Todo Activity possui como valor padro de prioridade de alocao de recursos igual a 50 (confira, clicando
no boto Priority Figura 2.9). Qualquer valor acima deste faz com que um Activity tenha maior prioridade na alocao
de um recurso do que os demais Activitys que utilizem o mesmo recurso. Assim, para tornar a descarga dos treminhes
prioritria, basta alterar a prioridade do Activity Descarga para qualquer valor acima de 50 (por exemplo, 51). Com
isso, se houver um caminho e um treminho em fila, a empilhadeira ser alocada para a descarga do treminho, devido
prioridade. Mais adiante, discutiremos como alterar dinamicamente (ou seja, durante a execuo da simulao) a
prioridade de alocao de recursos.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 40
Figura 2.9 Alterao da prioridade de quem utiliza o recurso primeiro (Activity Priority).
Note que somente os Activities 2, 3 e 4 possuem um recurso associado (Operrio), cuja disponibilidade de 2
unidades. Aps criar o modelo, ajuste as configuraes do tempo de simulao (Results Collection Period) para 2.400
minutos e considere tempo de warm-up igual a zero.
Como principal medida de desempenho do resumo de resultados, considere o total de peas produzidas no perodo
total de simulao (Sada - Work Complete). Em nossos testes, realizando uma rodada com 10 replicaes, obtivemos
um valor mdio de 496,65 peas11.
Considere, agora, que h dois turnos de trabalho, um das 9:00 s 12:00 (turno da manh) e outro das 12:00 s 17:00
(turno da tarde), sendo que 3 operadores esto disponveis no primeiro turno e apenas 2 operadores esto disponveis
no segundo turno. Para representar esta situao, acesse o menu Data and Rules e, em seguida, Shifts, para definir os 2
turnos de trabalho, como ilustrado na Figura 2.11 para o caso do turno da manh (clique no boto New para inserir os
dados de cada turno).
11 O resultado da sua simulao no precisa ser igual a este, mas no deve ser muito diferente. Se houver uma
diferena significativa, confira as configuraes dos objetos e da simulao. Confira, ainda, se os tempos de
deslocamento do modelo foram zerados.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 42
Por si s, os turnos nada mais so do que definies de janelas de tempo para o SIMUL8. Eles s tero alguma utilidade
quando ns definirmos que existem 3 operrios disponveis no primeiro turno e 2 no segundo. Para isso, selecione as
propriedades do recurso Operrio e escolha a opo Shift Dependent para definir sua disponibilidade total em cada
turno. A Figura 2.12 ilustra como deve ser feita esta configurao.
Aps essas modificaes, obtivemos uma produo mdia de cerca de 557 unidades aps 10 replicaes do modelo,
ou seja, um aumento de quase 18% na produtividade original, com a adio de um recurso no primeiro turno.
Agora, suponha que a cada turno os operadores usam 2% do seu tempo produtivo para fazer ginstica laboral, para
minimizar leses por esforo repetitivo. Para verificar o impacto desta situao na produtividade, abra a janela de
propriedades do recurso Operrio, clique na propriedade Avaiability e ajuste o valor da disponibilidade para 98%.
Simulando esta nova condio, obteremos uma produo mdia de cerca de 552 peas, o que representa uma perda de
produtividade de cerca de 0,9% em relao situao anterior a perda no prxima de 2% porque os recursos no
param ao mesmo tempo. No Captulo 7 detalharemos melhor a questo de disponibilidade de recursos e de Activities.
O primeiro campo da janela de detalhamento define as quantidades mnima e mxima de recursos que podem ser
alocadas para a atividade. Por exemplo, se pudermos alocar de 1 a 4 recursos, o SIMUL8 considerar que o tempo
configurado no Activity para a realizao da tarefa equivale situao em que h apenas um recurso trabalhando. Se
for possvel alocar 2 recursos, o tempo de execuo ser dividido por 2; se for possvel alocar 3 recursos, o tempo de
execuo ser dividido por 3, e assim por diante. Assim, o nmero mnimo de recursos alocados ser a referncia para
que o SIMUL8 calcule o tempo de execuo da atividade. A opo de liberar um recurso como sendo de outro tipo
(Release resource as) e a opo de interrupo de outro Activity no sero abordadas neste livro.
Na parte inferior da caixa de dilogo, vemos a opo padro de alocao, que Normal: Require and Release the Resource
Here. Isto quer dizer que o recurso ser liberado pelo Activity assim que a atividade terminar. No entanto, em algumas
ocasies, preciso que o recurso permanea alocado at ser liberado em outro Activity, como se o recurso ficasse
preso entidade at poder ser liberado. Vamos ilustrar esta situao no exemplo a seguir.
Exemplo 2.2. A Oplogic uma transportadora que possui um centro de distribuio (CD), na cidade de Uberlndia-
MG. No CD, os intervalos de tempo entre chegadas sucessivas de pedidos de entregas so exponencialmente
distribudos, com mdia de 4 horas. Os pedidos so despachados em 3 tipos de veculos: vans, caminhes mdios e
caminhes pesados. A distribuio dos pedidos de carga de 50% para as vans, 30% para os caminhes mdios e 20%
para os caminhes pesados. Existem 10 carregadores disponveis para o carregamento dos veculos. Para carregar uma
van so necessrios 2 carregadores, enquanto os caminhes mdios e pesados exigem 4 carregadores. Os tempos de
carregamento, tanto das vans quanto dos caminhes mdios, seguem uma distribuio normal com mdia de 100
minutos e desvio padro de 30 minutos. Para carregar um caminho pesado, os carregadores gastam um tempo que
segue uma distribuio normal com mdia de 130 minutos e desvio padro de 45 minutos. A frota de veculos
composta por 3 vans, 2 caminhes mdios e 2 caminhes pesados. Para serem carregados, os veculos devem estar
necessariamente posicionados em uma doca. O centro de distribuio possui 5 docas, sendo 2 pequenas (para vans) e
3 grandes (para caminhes mdios e pesados). Os tempos de deslocamento entre a distribuidora e os clientes (ida e
volta) esto uniformemente distribudos entre 180 e 300 minutos para as vans e os caminhes mdios e entre 240
minutos e 480 minutos para os caminhes pesados. O objetivo do modelo de simulao verificar se este sistema ir
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 44
impor atrasos significativos s entregas dos pedidos. O atraso mdio (tempo de permanncia no sistema) dever ser
em torno de 6 horas. Considere o tempo de simulao de 1 semana (10.080 minutos). Para efetuar a diviso percentual
entre vans, caminhes mdios e caminhes pesados, utilize no objeto chegada a opo Routing out percent para inserir a
porcentagem para cada tipo de veculo.
A estrutura do modelo proposto para representar esta situao mostrada na Figura 2.14.
Como possvel que, em algum instante de tempo, mais de uma operao de carga ou de transporte
ocorra em paralelo, preciso ajustar a opo Replicate de cada Activity. No entanto, ao invs de fazer
este ajuste manualmente, mais simples e prtico selecionar a opo Auto adjust replicate levels em
todos os recursos, o que garante que a propriedade Replicate de cada Activity ter valor igual ao total
disponvel dos recursos associados (esta opo est disponvel clicando nas propriedadades dos
recursos.
Vamos explicar passo a passo como deve ser feita a alocao dos recursos aos Activities Carrega vans e Transporte
vans para os demais, a alocao ser feita de forma semelhante.
Deve ser alocada uma van e uma doca especfica para vans;
A doca de vans deve possuir alocao padro (Normal: Require Here and Release The resource here);
A van, entretanto, deve possuir alocao diferente da alocao padro. Na janela de propriedades do Activity
Carrega vans, pressionando o boto Resources, selecionamos a opo Require here but do not release the resource
(Figura 2.15). Assim, neste ponto do modelo, a van ser alocada para realizar o carregamento, mas no ser
liberada (isto ser indicado por um asterisco ao lado do nome do recurso na janela Resources Required.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 45
A liberao da van ocorrer somente no Activity Transporte Van, que tem as propriedades ilustradas na Figura 2.16
a janela Resources Required foi acessada clicando inicialmente no Activity e, em seguida, na opo Resources no menu
superior. Veja que, neste caso, foi selecionada a opo Only release the resource here, indicando que a van s poder ser
liberada para o prximo carregamento quando a operao de transporte acabar.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 46
As outras alocaes devem ser feitas de forma semelhante. Quando a entidade passar por Activities intermedirios (algo
que no acontece neste exemplo), que no alocam e nem desalocam recursos, deve ser utilizada a opo Display Only.
12Lembre-se que, se dois recursos so associados a um Activity, este s ir executar sua operao se ambos estiverem
disponveis, algo que no queremos que acontea neste exemplo.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 47
Figura 2.17 - Criao do Pool de recursos: 1) criar os recursos que pertencero ao Pool; 2) criar um recurso que ser a representao do
Pool e 3) a partir da opo Pool Resource, definir os membros do Pool.
Note que a opo Number of this type of resource available do pool fica desabilitada e que a opo padro para utilizao
dos membros do tipo List Sequence. Isto significa que o recurso preferencial para a alocao do pool ser o Huguinho
(Figura 2.17, passo 3). Caso o recurso Huguinho no esteja disponvel, ento o pool tentar alocar o Zequinha para o
Activity. Se selecionarmos a opo Circulate, o pool se encarregar de alocar alternadamente um e outro (circulando
pela lista de recursos). A partir da verso 2014 do SIMUL8, duas funcionalidades foram adicionadas ao pool. A primeira,
alm das opes List Sequence e Circulate, foi adicionada ao pool a opo Longest Avaiable. Neste caso o SIMUL8 ir
selecionar preferencialmente o recurso do pool que estiver parado pelo maior tempo. Outra mudana que se pode
definir pools dentro de pools.
Os recursos originais (membros do pool) podem estar alocados em qualquer quantidade (por exemplo, poderamos ter
3 recursos do tipo Huguinho e 2 do tipo Zequinha). Poderamos, ainda, fazer com que o Activity tenha tempos de
execuo diferentes em funo do recurso alocado (por exemplo, se o Huguinho for mais lento que o Zequinha), mas
esta uma funcionalidade avanada, que no ser abordada neste livro.
Esta definio tambm pode ser feita na matriz de distncias do recurso (Matrix of all journey Times), lembrando que a
posio com o nome do recurso se refere posio inicial do recurso e aquela em que partir quando estiver em
repouso (parado). Note, ainda, que todo recurso sempre fica parado ao lado do Activity que lhe solicitou trabalho
aps a execuo da atividade.
alguma informao individual durante a simulao. Por exemplo, em uma linha de produo, cada pea pode ser
classificada segundo sua cor, tamanho, qualidade etc. Em instituies de sade, poderamos classificar os pacientes
segundo a gravidade de sua enfermidade. Essas informaes so representadas por labels no SIMUL8, que podem ser
imaginadas como etiquetas presas a cada entidade, carregando informaes sobre aquela entidade em particular.
Para criar um label no SIMUL8, clique em Data and Rules | Labels | New e defina o nome e o tipo de label desejado
(Figura 2.20).
aconselhvel (mas no obrigatrio) utilizar o prefixo Label ou Lbl antes do nome do label para
facilitar a sua identificao, especialmente quando utilizarmos lgica de programao para
diferenciarmos os labels de outros tipos de informaes (Captulo 5).
Labels podem ser do tipo numrico (Number) ou texto (Text), sendo que os ltimos so menos usados que os primeiros.
Na prtica, quando precisamos associar informaes no numricas a uma entidade, estabelecemos uma
correspondncia entre as informaes e nmeros que as representem. Por exemplo, suponha que produtos sejam
classificados de acordo com sua qualidade, em Qualidade A, Qualidade B e Qualidade C. Neste caso, podemos utilizar
labels numricos (LblQualidade), com a correspondncia mostrada na Tabela 2.2.
Um erro muito comum cometido por iniciantes criar um label para cada tipo de qualidade, como
LblQualidadeA, LblQualidadeB e LblQualidadeC, o que no faz qualquer sentido.
Nas prximas sees deste livro continuaremos a discutir aplicaes para os labels. Por exemplo, no Captulo 3 (Entrada
de Distribuies Aleatrias) comentaremos como os labels podem ser associados a distribuies de probabilidades; no
Captulo 4 (Direcionamento de Entidades), veremos como os labels podem ser usados para direcionar entidades em
rotas diferentes dentro de um modelo e atuar na configurao de entidades que expiram; no Captulo 6 (Refinamentos
Grficos e Animao) utilizaremos labels para alterar a imagem de uma entidade ao longo da simulao; por fim, no
Captulo 7 (Funcionalidades Especficas), a utilizao de labels ser explorada em um exemplo prtico. Esta introduo
serviu especificamente para introduzirmos a funcionalidade chamada Resource by Labels, que ser descrita a seguir.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 50
A funcionalidade Resource by Labels foi adicionada em 2008 no SIMUL8 e permite, como o nome indica, que se faa a
alocao de recursos por meio de um label. Vamos imaginar que temos 3 recursos, Huguinho, Zequinha e Luizinho,
sendo que o Huguinho s pode trabalhar em peas do tipo 1, Zequinha s pode trabalhar em peas do tipo 2 e, por
fim, Luizinho, em peas do tipo 3, sempre em uma mesma mquina. Para representar esta situao, vamos criar uma
estrutura semelhante da Figura 2.21, deixando os objetos em suas configuraes padro.
Agora vamos criar um label numrico chamado Label tipo (Figura 2.20). Cada entidade que entrar no modelo dever
receber um label com o valor 1, 2 ou 3, com igual probabilidade de ocorrncia (33,33%). Para isso, logo no ponto de
entrada, associamos o label criado ao Start Point, como ilustrado na Figura 2.22.
Em seguida, devemos atribuir ao Label tipo um valor segundo uma distribuio Rounded Uniform, de 1 at 3. Isto
possvel pelo boto Actions, opo Set to, como representado na Figura 2.23.
Captulo 2: A l o c a o , c o n t r o l e d e r e c u r s o s e L a b e l s | 51
Em seguida, basta adicionar os recursos Huguinho, Zequinha e Luizinho ao Activity 1, ativando a opo Select Resource
By Label e selecionando o label desejado (Figura 2.24). Assim, se a entidade tiver label com tipo = 1, o recurso Huguinho
ser alocado; se tipo = 2, o recurso Zequinha ser alocado e, se tipo = 3, o recurso utilizado ser o Luizinho, de acordo
com a ordem definida na lista de recursos exigidos.
Importante: se a opo Select Resource by Label no tivesse sido selecionada, os trs recursos seriam
alocados simultaneamente para a realizao da atividade, o que estaria errado.
Um erro comum criar um recurso e se esquecer de aloc-lo em algum Activity. Para evitar isto, sugerimos,
aps a criao do modelo, dar um clique sobre cada recurso, sem soltar o boto do mouse, para que o
SIMUL8 destaque com um crculo os Activities aos quais cada recurso est associado.
Outro erro comum no manter a compatibilidade entre o nmero de possveis atividades em paralelo de
um Activity (opo Replicate) e o nmero total de recursos disponveis. Por exemplo, se voc tiver um
recurso com quantidade disponvel = 3 e alocar este recurso a um Activity com Replicate = 1, somente um
recurso ser alocado ao longo da simulao (os outros dois ficaro parados durante toda a simulao).
Para que isso no acontea, ajuste a opo Replicate do Activity para um nmero maior ou igual do que o
nmero de recursos disponveis ou configure no recurso a opo Auto Adjust Replicate Levels.
Por fim, um erro no to incomum adicionar dois recursos diferentes a um Activity, imaginando que ele
utilizar ou um ou outro. Se associarmos n recursos diferentes a um Activity, estamos garantindo que este
Activity s executar sua atividade se houver disponibilidade dos n recursos diferentes ao mesmo tempo
(exceto quando se usa Resource by Label). Portanto, quando queremos que ou um ou outro recurso seja
alocado, devemos utilizar um pool de recursos (veja a seo 2.6)
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 53
3.1. Introduo
Geralmente, simulamos o funcionamento de sistemas que so complexos demais para conseguirmos compreender
totalmente sem o apoio de ferramentas computacionais como o SIMUL8. Ao longo deste livro voc dever ser capaz
de entender como possvel representar sistemas mais complexos do que o posto bancrio do Captulo 1. A
complexidade de um sistema pode ser medida em funo do nmero de processos, filas, recursos, entidades etc. que
compem o sistema real. Contudo, existe outro componente muito importante: a aleatoriedade dos fenmenos
envolvidos. Por exemplo, um caixa bancrio no atende todos os clientes gastando o mesmo tempo, nem os clientes
chegam ao banco em intervalos de tempo constantes. Estes processos (atendimento e chegadas) exibem
comportamentos aleatrios, em que no sabemos com certeza qual ser o prximo valor em funo dos valores
anteriores. No entanto, podemos representar seu comportamento usando histogramas de frequncias e, ento,
determinar qual o melhor modelo terico capaz de representar o processo.
Parece complicado, mas a soluo muito mais simples do que o problema em si, como veremos no exemplo a seguir.
O centro de controle porturio construiu uma amostra dos intervalos sucessivos entre as chegadas de 100 navios e
obteve o histograma mostrado na Figura 3.2.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 54
Figura 3.2 - Histograma de frequncias para o intervalo de tempo (em horas) entre chegadas sucessivas.
3.2.1. Histograma
Um histograma, usualmente, apresenta no eixo vertical a frequncia com que ocorre um determinado fenmeno, que
representado no eixo horizontal. No nosso exemplo (Figura 3.2), verificamos que em 52% dos casos (eixo vertical),
o tempo entre chegadas de dois navios sucessivos ficou dentro do intervalo de 0 a 24 h, o que em termos de operao
porturia onde muitos tempos operacionais so contados em dias como dois navios chegassem praticamente
juntos. Mais do que isso, podemos dizer que, e isso importante, a chance de que dois navios cheguem em um mesmo
dia (intervalo inferior a 24 h) de 52%. esta chance de 52% que ns queremos que o SIMUL8 utilize em seus
clculos, sorteando aleatoriamente os tempos entre chegadas de navios, de modo que se respeite o histograma
informado.
Assim, o trabalho computacional ser do SIMUL8, enquanto para ns fica o trabalho de inform-lo qual o
comportamento do fenmeno, seja por meio de histogramas (como o da Figura 3.2), seja por meio de distribuies
estatsticas, como faremos a seguir.
O Apndice I apresenta o Stat::Fit, um software bastante prtico para identificao de distribuies estatsticas a partir
de dados reais, um processo conhecido como ajuste de dados ou identificao da distribuio terica. Por
exemplo, seguindo passo a passo o que apresentado no Apndice I, voc descobrir que o conjunto de dados do
intervalo entre embarcaes adere a uma distribuio exponencial (como na maioria dos casos em que chegadas
aleatrias e externas ao sistema esto envolvidas). Para o SIMUL8 s interessar a definio desta informao: qual
distribuio terica voc deseja que ele utilize, juntamente com os parmetros desta distribuio.
Para o exemplo do porto, j sabemos que os intervalos entre chegadas sucessivas so exponenciais. Os outros tempos
envolvidos no processo so: o tempo da manobra de atracao, o tempo de operao e o tempo de desatracao.
Considere que o centro de controle do porto analisou uma amostra de 100 embarcaes e, utilizando o Stat::Fit,
identificou as seguintes distribuies tericas:
Tempo de atracao: distribuio normal, com mdia de 2 horas e desvio padro de 1 hora;
Tempo de operao: distribuio Erlang de ordem 2, com mdia de 24 horas;
Tempo de desatracao: nesta parte, o porto no tinha dados coletados. Consultando operadores
experientes, foi sugerido que se utilizasse uma distribuio triangular com menor valor igual a 0,5 hora,
maior valor igual a 4 horas e moda (valor mais frequente) igual a 2 horas.
A Figura 3.3 apresenta um possvel modelo para representar este sistema. Sugerimos que voc construa este modelo
para poder acompanhar as discusses que faremos sobre distribuies no SIMUL8. Um detalhe de importante que
como somente um nico navio pode ficar atracado por vez, a alocao do bero deve ser realizada na atividade Manobra
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 55
de atracao e a liberao na atividade Manobra de desatraao. Assim, tome os seguintes cuidados ao ocupar o recurso
bero:
Na atividade Manobra de atracao: ocupe o recurso bero com a regra de alocao Require here but do not release
the resource;
Na atividade Porto: ocupe o recurso bero com a regra de alocao Display only;
Na atividade Manobra de desatracao: libere o recurso bero com a regra de alocao Only release the resource here.
Average: uma distribuio normal com o coeficiente de variao pr-definido em 25%, ou seja, o desvio-
padro vale 25% do valor da mdia;
Beta: uma distribuio bastante flexvel e seus parmetros podem ser obtidos facilmente por meio do
Stat::Fit;
Erlang: a distribuio Erlang de ordem k representa uma sequncia de distribuies exponenciais. Assim,
para k=1, ela a prpria distribuio exponencial. Para k=n, ela representa a soma de n valores com
distribuio exponencial. Ao passo que se aumenta a ordem k (tipicamente, k10), a distribuio se
assemelha distribuio normal. Com k>20, a distribuio erlang praticamente determinstica (ou seja,
fornece valores constantes). No SIMUL8, a mdia informada para esta distribuio a mdia total, e no a
mdia de cada distribuio exponencial;
Exponential: uma distribuio que possui coeficiente de variao igual a 1 e que representa quase todos os
processos de chegadas que so externas ao sistema. assim que, geralmente, pessoas chegam a um banco,
carros chegam ao pedgio, pessoas chegam a uma sala de reunies etc;
Fixed: distribuio que, na verdade, no representa aleatoriedade, j que definida por um valor fixo,
determinstico, constante.
Gamma: uma distribuio que pertence famlia das distribuies exponenciais e que pouco utilizada na
prtica, mas importante, pois dela so derivadas as distribuies Beta, Weibull etc.;
Lognormal: distribuio geralmente associada ao tempo de execuo de tarefas. Possui como caracterstica
mais marcante a probabilidade zero para valores pequenos (em oposio exponencial, que tem maior
ocorrncia para valores pequenos);
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 56
O SIMUL8 possui dois tipos de distribuio uniforme: Uniform e Rounded Uniform. A primeira gera
valores reais (fracionrios), enquanto a segunda gera somente valores inteiros dentro do intervalo
fornecido.
Weibull: uma das distribuies mais flexveis, pertencente famlia das distribuies exponenciais. Muito
comum para representar tempos relativos quebra de equipamentos em modelos que envolvem
manuteno.
Alm dessas, voc ainda pode construir a sua prpria distribuio a partir de combinaes de distribuies (Combination)
ou de histogramas (Probability Profile), como veremos a diante.
Como discutido no Captulo 1, a maneira usual de se informar a distribuio desejada para o SIMUL8 por meio da
janela de propriedades do objeto em questo. Para o problema do porto, por exemplo, a distribuio do intervalo entre
chegadas de navios pode ser fornecida diretamente na janela do objeto Start Point, como indicado na Figura 3.4.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 57
Contudo, o recomendado para melhor produtividade inserir distribuies personalizadas: estas so criadas ao se clicar
no boto New, logo abaixo do campo Distribution vide Figura 3.4 (ou em Data and Rules | Distributions). Para o exemplo,
podemos criar uma distribuio chamada Intervalo de chegadas de navios, como mostrado na Figura 3.5.
Como se pode notar na janela New Distribution (Figura 3.5), existem diversas opes para a construo de novas
distribuies. Por hora, ficaremos com a primeira opo, Named Distribution, que permite construir uma nova
distribuio a partir de alguma distribuio j existente. Clicando em Next>> surge a janela representada na Figura 3.6
onde informamos os parmetros da distribuio no caso, uma distribuio exponencial com mdia de 36 horas.
Voc pode estar se perguntando: qual foi a vantagem em se criar uma distribuio prpria para representar uma
distribuio exponencial, com mdia igual a 36 horas? Neste modelo, nenhuma! Imagine, no entanto, que estivssemos
construindo um modelo mais complexo, em que fosse necessrio utilizar a mesma distribuio em vrios objetos.
Neste caso, ao invs de informar Exponencial, mdia = 36 em cada objeto, bastaria selecionar a distribuio
Intervalo de chegadas de navios, que estar disponvel no final da lista de distribuies reconhecidas pelos objetos.
Alm disso, se o valor do tempo mdio entre chegadas passasse a ser de 38 horas, bastaria alterar o parmetro da
distribuio, ao invs de editar individualmente todos os objetos com a distribuio em questo.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 58
Se voc definir as outras distribuies por esse mtodo e nome-las como Tempo de manobra de atracao, Tempo
de operao no bero e Tempo de manobra de desatracao, poder encontr-las todas disponveis para edio em
um nico menu: em Data and Rules |Distributions, clicando na parte de baixo do cone Distributions, ser mostrada uma
lista de opes como a da Figura 3.7. Caso seja clicado o prprio cone Distributions, surgir uma janela como a da
Figura 3.8, onde voc poder editar (Properties), criar uma nova distribuio (New), copiar (Copy) ou apagar (Erase)
alguma distribuio j criada13.
Figura 3.8 Janela de distribuies obtida ao se clicar no cone Distributions do menu Data and Rules.
Considere que o modelo do terminal porturio deve contemplar, adicionalmente, o tipo de embarcao atendida.
Atualmente, o porto atende dois tipos distintos de embarcaes: Panamax e Suezmax. As embarcaes Panamax so
menores e tem tamanho compatvel com a travessia do canal do Panam, enquanto as Suezmax so maiores e de
tamanho compatvel com a travessia do canal de Suez (da os nomes das embarcaes). Os dados histricos mostram
que 30% das embarcaes que frequentam nosso porto so do tamanho de um Panamax, enquanto 70% so do
tamanho de um Suezmax (isto foi indicado na Figura 3.1, mas no havia sido comentado).
Pelo colocado, deveremos nomear as entidades por um tipo e essa nomeao deve seguir um padro: 30% de um tipo
e 70% do outro. Como discutido parcialmente no Captulo 2, isto pode ser feito por meio de labels. Acesse o menu
Data and Rules e selecione a opo Labels, que abrir uma janela com a lista de todos os labels utilizados atualmente no
modelo (Figura 3.9).
13Uma regra comum entre usurios do SIMUL8 criar algum prefixo inicial para distinguir uma distribuio de outro
objeto do modelo, o que extremamente til quando estamos utilizando a lgica de programao (Captulo 5). Assim,
uma sugesto comear os nomes das distribuies com o prefixo D_. Por exemplo, o D_tempo de operao no
bero, D_tempo de atracao etc.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 59
Clique no boto New e crie um label numrico chamado Tipo (Figura 3.10).
Precisamos, agora, criar uma distribuio para representar que 30% dos navios so do tipo Panamax e 70% so do tipo
Suezmax. A partir do menu Data and Rules, clique no cone da opo Distributions e, em seguida, clique no boto New
para criar a distribuio Tipo de navio. A opo selecionada deve ser Probality Profile, pois o que vamos definir so as
probabilidades de ocorrncia de cada tipo de navio (30% e 70%).
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 60
Quando clicamos no boto Next>> da janela New Distribution, obtemos uma janela (Figura 3.12) onde possvel
construir distribuies quaisquer (discretas ou contnuas) arrastando-se as barras do histograma com o mouse ou
digitando-se valores nos campos Percent e Value. Inicialmente, vamos diverso: experimente clicar e arrastar com o
mouse alguma barra azul do histograma. Note que, conforme voc manipula a forma da distribuio, os campos Percent
e Value so alterados automaticamente. No canto inferior direito, se voc selecionar a opo Continuous a distribuio
deixa de fornecer valores inteiros e passa a fornecer valores interpolados pelos respectivos valores das barras do
histograma.
Depois da diverso, a obrigao! Clique com o mouse na primeira barra (a do 0) e preencha o campo Percent: com o
valor 30. Em seguida, selecione a prxima barra e preencha o campo Percent: com o valor 70. Com isso, teremos
construdo, uma distribuio discreta de probabilidades que fornecer, em 30% das vezes, o valor 1 e em 70% das
vezes o valor 2 (Figura 3.13).
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 61
Apague as outras barras, utilizando a opo Delete com o boto direito do mouse, como mostrado na Figura 3.15. Outra
possibilidade para definir uma distribuio discreta criar a tabela de probabilidade versus valores no Excel e, em
seguida, copiar e colar os valores no SIMUL8 clicando no boto Paste, que aparece na lateral da janela Probability Profile
Distribution (Figura 3.15). Esta opo muito til quando o nmero de barras ou classes for grande.
Figura 3.15 Selecione a barrinha que deseja eliminar e a seguir, clicando com o boto direito do mouse, surge um novo menu suspenso
com diversas opes. Selecione a opo Delete para apagar a barra sem uso.
Agora que criamos o label Tipo e uma distribuio que ir atribuir um valor (1 ou 2) para este label, falta juntarmos
as peas. Isso feito pelo boto Actions, encontrado nas janelas Start Point ou Activity.
A Figura 3.16 ilustra a sequncia a ser usada neste exemplo: no Start Point Chegadas de navios, ao selecionar o boto
Actions, abriremos uma janela que permite associar um label criado previamente (Tipo) a cada entidade que entra no
modelo (boto Add Label to Change). Nesta janela de aes, como queremos que um valor seja atribudo ao label,
devemos selecionar a opo Set to: seguida pela seleo da distribuio Tipo de navio, como mostrado na Figura
3.17.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 62
Figura 3.16 Sequncia de comandos para associao do label Tipo s entidades do modelo.
Figura 3.17 Atribuio de uma distribuio (ou um valor) ao label que representa o tipo do navio.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 63
Vale a pena observar que um valor numrico armazenado em um label tambm pode ser usado como tempo de
execuo de um Activity (parmetro Timing).
O tempo de durao da atracao possui distribuio normal com mdia de 2 horas de durao e desvio padro de 1
hora. Esta distribuio pode ser visualizada na Figura 3.18.
Repare na cauda para a esquerda da distribuio e onde situa o valor zero. Se voc for um observador atento, deve ter
notado que parte da curva contm valores negativos para o tempo de atracao. A menos que estejamos simulando um
sistema com capacidade de voltar no tempo, possvel que o SIMUL8 sorteie um navio com tempo de atracao de -
0,2 horas!
nesse ponto que entram as distribuies do tipo Bounded, que impem limites (bounds) inferiores e superiores para as
distribuies tericas envolvidas. Faa isso para o nosso exemplo, limitando o tempo de atracao mnimo em 0,5
horas e o mximo em 4 horas. Para isso, voc ter que criar uma nova distribuio, chamada, por exemplo, Tempo
de atracao limitado, como indicado na Figura 3.19 e na Figura 3.20.
No se esquea de configurar o Activity "Manobra de atracao" para utilizar a nova distribuio criada.
Sempre que voc estiver trabalhando com distribuies tericas, lembre-se de utilizar a distribuio
bounded no s para valores negativos, mas tambm para valores muito altos, que voc sabe que
nunca ocorrero no sistema.
O SIMUL8 permite combinar ou somar o efeito de duas distribuies. Por exemplo, considere que 80% das
embarcaes esperam um tempo adicional de 3 horas para desatracar (alm do seu tempo normal de desatracao)
devido prioridade de trfego de embarcaes estabelecida pela Guarda Costeira.
Com a opo Combination, voc pode construir uma nova distribuio que soma, em 80% dos casos, 3 horas
distribuio original de desatracao (nos 20% restantes dos casos ser usado o prprio tempo de desatracao
original). Para tanto, inicialmente, construa uma distribuio discreta Porcentagem dos navios que esperam a Guarda
Costeira, utilizando a opo Profile Distribution. Atribua a 80% dos casos o valor 3 e a 20% dos casos o valor 0, como
representado na Figura 3.21.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 65
Figura 3.21 - Distribuio para o tempo adicional de desatracao devido regra da Guarda Costeira.
Em seguida, crie uma nova distribuio Tempo de desatracao combinado, utilizando a opo Combination (Figura
3.22).
Figura 3.22 - Criando a nova distribuio para o tempo de desatracao do navio a partir da opo Combination.
Agora hora de combinar os tempos. Com o boto Add, adicione a distribuio criada (Porcentagem dos navios...)
e a anterior (Tempo de manobra de desatracao), como mostrado na Figura 3.23.
Simule o modelo, sem se esquecer de utilizar a nova distribuio no Activity Manobra de desatracao.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 66
Figura 3.23 - Com o boto Add, adicione as duas distribuies (1) "Porcentagem dos..." e (2) "Tempo de atracao", formando uma nova
distribuio que a soma das duas.
Fique atento ao comportamento do conjunto de dados que voc est utilizando. Muitas vezes, valores
no usuais podem representar algum estado vlido do sistema (por exemplo, em parada para
manuteno ou afetado por sazonalidades) e so bons candidatos ao uso da opo Combination. A
nossa prtica sugere, sempre que possvel, trabalhar com uma amostra de dados muito superior
quela necessria para identificao da distribuio estatstica que melhor se ajusta aos dados.
Considere que, devido baixa luminosidade, a manobra de atracao noturna deve ser realizada a uma velocidade
menor do que a utilizada durante o dia. Assim, das 6 s 18 h, o tempo mdio de atracao deve ser igual ao tempo
original (2 horas), enquanto das 24 h at as 6 h do dia seguinte, o tempo mdio de atracao deve ser de 4 horas.
Utilizando uma distribuio do tipo Time dependent (Figura 3.24), podemos criar uma nova distribuio chamada
Tempo de atracao por horrio, que uma distribuio para o tempo de atracao que considera as faixas de
horrio.
Figura 3.24 - Criao de uma nova distribuio com a opo Time Dependent.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 67
Na janela Time Dependent Distribution (Figura 3.25), com o boto Add, podemos definir os intervalos de tempo para a
distribuio. No caso, a distribuio criada previamente, Tempo de manobra de atracao, ser atribuda ao intervalo
que se inicia s 6 horas Figura 3.25.
Figura 3.25 - Ao clicar o boto Add da Janela Time Dependent, temos a janela Time Slot para marcao do incio do intervalo de tempo em
que o tempo de atracao ser governado pela distribuio antiga de manobra de atracao.
Antes de definirmos a distribuio vlida a partir das 18:00 horas, precisamos cri-la! Para isso, basta clicarmos no
boto New e utilizarmos a opo Named Distribution para criarmos a nova distribuio Tempo de atracao noturna
(Figura 3.26).
Figura 3.26 - Janela para criar uma nova distribuio, que se inicia s 18 horas e representa o tempo de atracao noturno, uma normal de
mdia 4 e desvio padro de 1 hora.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 68
Finalmente, clicando no boto Add, podemos definir o novo intervalo, vlido a partir das 18:00 horas, associando a
distribuio adequada (Tempo de atracao noturna).
As distribuies Time Dependent so particularmente teis para simular sistemas que apresentam sazonalidades ou
variaes temporais conhecidas. Um bom exemplo do que estamos falando a representaao do fluxo de clientes em
uma padaria ao longo do dia.
Distribuies do tipo Time Absolute so distribuies que mudam exatamente em determinada hora, ou seja, com hora
marcada. Por exemplo, considere que, toda noite s 0:00 h, uma balsa de abastecimento atravessa a regio porturia.
Com a opo Time Absolute possvel definir a hora de ocorrncia (Figura 3.27).
Adicionalmente, a janela Time Absolute permite que se defina uma distribuio estatstica que ser somada ao tempo
fornecido. Seria como dizer que a balsa atravessa o canal s 12 horas, mas geralmente atrasa entre 0 e 1 hora. Isso pode
ser feito adicionando-se uma distribuio uniforme com intervalo entre 0 e 1 (Figura 3.28). Com esta nova distribuio
(Surgimento da balsa de abastecimento), convidamos o leitor a criar, como um exerccio de fixao, um bloqueio
dirio nas operaes de atracao e desatracao no modelo do porto.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 69
Figura 3.28 - Janela Time Slot para uma nova distribuio criada com a opo Time Absolute.
Apesar de aparentar ser um pouco trabalhosa de se utilizar, como veremos nesta seo, a distribuio Label Based
simplifica a representao de situaes em que entidades distintas so criadas por diferentes pontos de entrada (Start
Points), passam por um mesmo processo (Activity), mas possuem distribuies estatsticas prprias para o tempo de
operao.
Considere que o nosso porto passou por algumas reformas e que ser capaz de atender grandes embarcaes, do tipo
Capesize. Essas embarcaes, por serem maiores do que as que o porto recebe usualmente, tm um tempo de operao
tambm maior. Assim, o Centro de Controle Porturio informa que o tempo mdio de operao das embarcaes
Capesize de 48 horas, segundo uma distribuio Erlang de ordem 2 e que o tempo entre chegadas sucessivas destas
embarcaes de 96 horas, segundo uma distribuio exponencial. A ideia fazer com que a distribuio do tempo
de operao seja obtida diretamente pelo label da entidade navio.
Inicialmente, o modelo deve ser modificado para permitir a chegada do navio Capesize. Para isso, basta acrescentar
um novo Start Point com intervalo entre chegadas de 96 horas, segundo uma distribuio exponencial (a Figura 3.29
apresenta o modelo modificado).
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 70
Figura 3.29 Novo modelo, agora com um segundo Start Point para o surgimento das embarcaes Capesize.
O que vamos fazer agora criar duas distribuies distintas: uma para os navios Capesize e outra para as embarcaes
menores. A distribuio do tempo de atracao das embarcaes menores aquelas que surgem do primeiro Start
Point j foi criada anteriormente: trata-se da antiga Tempo de operao. Para as embarcaes maiores, vamos criar
uma nova distribuio chamada Tempo de operao Capesize, como representado na Figura 3.30.
Figura 3.30 - Criao da nova distribuio Tempo de operao Capesize. Note, que apenas como ilustrao de outra facilidade do
SIMUL8, a distribuio foi criada a partir da cpia da antiga distribuio Tempo de operao.
Na seo 3.4.2 j havamos criado o label Tipo de navio para caracterizar dois tipos distintos de entidade. Agora,
vamos criar um label que ir armazenar o nome da distribuio do tempo de operao da embarcao. Assim, vamos
criar uma nova distribuio Tempo de operao label a partir da opo label Based da caixa de dilogo New Distribution
(Figura 3.31).
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 71
Figura 3.31 - Criando a nova distribuio para o tempo de operao no bero a partir da opo Label Based.
Ao se clicar no boto Next>> da Figura 3.31, o SIMUL8 solicita qual label contm o valor (um nmero) da distribuio
ou o nome (um texto) da distribuio. Neste caso, queremos utilizar os nomes de duas distribuies Tempo de
operao e Tempo de operao Capesize. Precisamos, portanto, de um novo label que armazene estes nomes.
Assim, na janela Label Based Distribution (Figura 3.32), selecionamos o boto Create New Label para criarmos o label
Tempo de operao label14, no formato Text.
Figura 3.32 - A distribuio Label Based exige um label especfico que armazena ou o valor numrico ou o nome da distribuio j criada.
Assim, criamos um novo label no formato texto para armazenar o nome da distribuio do tempo de operao.
O ltimo passo atribuir ao label criado o nome da distribuio correta em cada um dos Start Points. A Figura 3.32
representa a atribuio do nome Tempo de operao para o label Tempo de operao label das entidades que
representam as embarcaes Panamax e Suezmax. Um procedimento semelhante deve ser feito no Start Point das
embarcaes Capesize, mas atribuindo o nome Tempo de operao Capesize.
14O fato de o nome do label ser igual ao da distribuio no tem razes ocultistas ou telricas. Para qualquer nome
que voc escolha para o label, o SIMUL8 ir adotar como novo nome da distribuio, eliminando a anterior.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 72
Figura 3.33 - No Start Point Chegadas de navios, o Label L_distribuio do tempo de operao recebe o valor Tempo de operao, o
nome da distribuio respectiva.
A ltima etapa na criao deste exemplo informar ao Activity Porto que a distribuio do tempo de operao agora
Tempo de operao label, como representado na Figura 3.33.
Figura 3.34 - A distribuio Label Based Tempo de operao label atribuda ao Activity Porto. Assim, toda vez que uma entidade entrar
no Porto, o label fornecer qual a distribuio a ser utilizada.
Outra possibilidade criarmos um label numrico para o tempo de operao e atribuir a respectiva distribuio a este
label no Actions do start point, por exemplo. Em seguida, no Activity onde este valor ser utilizado, deve-se configurar
uma distribuio fixa cujo valor numrico ser obtido do label indicado no campo Fixed Value.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 73
Em muitas situaes, desejamos simular um sistema a partir de um conjunto de dados reais, evitando a utilizao de
distribuies tericas. Isso praxe, por exemplo, quando queremos validar o nosso modelo, ou seja, mostrar que o
modelo apresenta sadas compatveis com os valores do sistema real, quando submetido s mesmas condies de
entrada. As distribuies criadas com a opo External permitem que o SIMUL8 leia valores diretamente de uma
planilha eletrnica em formato Excel ou definidas via Visual Basic15.
Considere, por exemplo, que a gerncia do nosso porto tem dvidas quanto ao modelo, pois existe um tempo de pr-
operao no considerado: toda vez que uma embarcao atraca, ela aguarda um tempo para liberao alfandegria,
decorrente do processo burocrtico de apresentao de documentos da embarcao e declarao de carga. Assim, a
gerncia forneceu uma planilha eletrnica com os valores dos tempos, em horas, da pr-operao de 100 embarcaes.
Os dados esto na pasta Plan1 da planilha mostrada na Figura 3.35, dispostos da clula A1 para baixo (A2, A3...).
Figura 3.35 - Planilha com dados dos tempos de pr-operao para 100 embarcaes.
Voc no precisa se preocupar quanto ao separador decimal usado no Excel, pois o SIMUL8 capaz de
reconhecer tanto o ponto quanto a vrgula.
Inicialmente, vamos criar a distribuio Tempo pr operao planilha, do tipo External, como mostra a Figura 3.36.
Aps clicarmos no boto Next>>, o SIMUL8 abrir a janela External Data Source (Figura 3.37) em que so fornecidos
os dados especficos da planilha. No caso, a planilha que contm os dados Porto tempos de pre op.xlsx e os dados
comeam pela clula da Linha 1 e Coluna 1. Por isso, o campo Starting Cell est com o valor L1C1. Nesta janela,
deve ser informado adicionalmente se os dados esto em uma coluna (como no nosso exemplo) ou em uma linha, o
nome da Pasta como consta no Excel (Plan1) e a origem da fonte de dados (Excel).
O SIMUL8 vai utilizar todos os dados a partir da clula indicada at que encontre uma clula na coluna que no
contenha um nmero (ou seja, que esteja vazia ou que contenha um texto).
Para que os navios aguardem o tempo de pr-operao no modelo, devemos acrescentar um Activity para a pr-
operao (utilizando a distribuio recm-criada) entre o Activity da manobra de atracao e o do porto, como
representado na Figura 3.38.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 75
Figura 3.38 - O Activity Pr Operao utiliza a distribuio recm criada Porto tempos de pre op, lendo diretamente do Excel o valor do
tempo de pr-operao para cada entidade (navio) que visita o Activity.
Esta das opes mais uteis para quem trabalha com sistemas em que a validao crtica ou com sistemas em que os
fenmenos aleatrios mudam com muita rapidez como nos modelos utilizados para a simulao de planejamento da
produo. Por exemplo, uma fbrica define a cada manh o que vai produzir dentre uma dezena de opes disponveis.
Neste caso, o melhor a fazer simular diretamente as corridas de produo, usando dados reais.
Pode no fazer sentido primeira vista, mas imagine que voc deseja testar seu modelo em busca de erros. Esse
trabalho, que usualmente chamamos de verificao, se torna (bem) mais fcil se voc no utilizar nmeros aleatrios,
mas sim, valores fixos conhecidos.
Para fazer isso no SIMUL8, basta considerar todas as distribuies como sendo do tipo Fixed. Se for possvel, voc
pode at realizar alguns clculos manuais para verificar se os dados de sada do modelo so coerentes16.
Um observador atento j deve ter percebido que toda vez que refaz uma simulao no SIMUL8, ele parece repetir a
sequncia de eventos, o que pode parecer estranho, pois, afinal, no era para ser aleatrio?
O SIMUL8 repete sempre a mesma semente do gerador de nmeros aleatrios de maneira proposital, para facilitar a
verificao do modelo e a experincia mostrar a voc que bom que seja assim. Afinal, mais fcil corrigir e
desenvolver um modelo quando voc pode pausar antes de determinado erro que voc j sabe, pela simulao anterior,
o momento que ocorre.
16Para um maior detalhamento sobre esta tcnica, consulte a seo 5.3 (Valores constantes ou simplificados vs. clculos
manuais) do livro Modelagem e Simulao de Eventos Discretos de Leonardo Chwif e Afonso C. Medina.
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 76
Quando o modelo est verificado e livre de erros, voc pode informar ao SIMUL8 que deseja novas sementes de
nmeros aleatrios a todo o momento. Isto pode ser feito facilmente utilizando-se o comando Random Sampling do
menu Advanced, como mostrado na Figura 3.39. Na janela Random Sampling Parameters, possvel garantir o uso (ou no)
de nmeros aleatrios distintos a cada rodada pela opo Auto change random number on EVERY restart. Outra opo
(pouco usada na prtica) consiste em alterar manualmente a semente de nmeros aleatrios pela opo Random Stream
Set Number.
Figura 3.39 - Com a opo Auto Change random number, a cada rodada do simulador, novos nmeros aleatrios so gerados. A opo
Random Stream Set Number serve para se substituir a semente de gerao de nmeros aleatrios
No item 3.4.8 descrevemos como o SIMUL8 pode utilizar informaes de um arquivo de dados externo. Para que o
SIMUL8 gere entidades na chegada de acordo com os instantes de tempo definidos em uma fonte dados interna, basta
acessar no objeto (Start Point) a opo Schedule Sheet (Figura 3.40).
Uma vez feito isto, o SIMUL8 pedir que se defina uma varivel do tipo planilha (Spreadsheet) onde so especificados
o horrio de chegada (tanto em formato de hora como em formato de tempo absoluto do relgio de simulao) e a
quantidade de entidades que devem chegar neste horrio. A Figura 3.41 ilustra um exemplo que o prprio SIMUL8
define quando se cria uma nova varivel nova do tipo Spreadsheet. No exemplo, uma entidade chega s 9:15, outra s
12:00, s 15:00 chegam 2 entidades e, quanto o relgio de simulao atingir 4.200 unidades de tempo, chegar mais
uma entidade, e assim sucessivamente. Caso o leitor queira explorar melhor esta funcionalidade recomendamos que
veja o Captulo 5 (Noes de Variveis e Visual Logic).
Captulo 3: D i s t r i b u i e s A l e a t r i a s n o S i m u l 8 | 77
Outra opo, disponvel a partir da verso 2015 do SIMUL8, por meio da funcionalidade Day Planner. Neste caso,
pode-se definir quantas entidades devem chegar em cada dia e em cada faixa de. A Figura 3.42 ilustra esta
funcionalidade.
4.1. Introduo
Na prtica, dificilmente um processo totalmente sequencial. Isto quer dizer que, em algumas (ou vrias) partes dele,
as entidades podem seguir por diferentes rotas ou vir de diferentes rotas. este tipo de operao que abordaremos
neste captulo. Os direcionamentos no SIMUL8 so controlados nos pontos de entrada (Start Points) ou nos Activities
(nunca em filas) e so ajustados nas propriedades Routing In e Routing Out destes objetos.
Para as filas 1, 2 e 3, configure um valor inicial de 60 entidades, de modo que, no incio da simulao, existam 60
entidades em cada fila. Para fazer isso, abra a janela de propriedades de cada fila, clique no boto Start-Up e digite o
valor 60 na caixa de dilogo Initial Conditions.
Voc pode inserir o mesmo valor inicial nas 3 filas de uma vez: selecione todas as filas com o mouse,
d um duplo-clique em uma delas e altere o contedo inicial para 60. Quando clicar no boto OK, o
SIMUL8 perguntar se voc deseja aplicar as alteraes em todos os objetos selecionados - ao
responder sim, voc acabou de ajustar os parmetros das trs filas ao mesmo tempo! Este tipo de
operao mltipla funciona com todos os objetos do SIMUL8.
Simule o modelo em uma velocidade baixa para poder ver o que est acontecendo. Observe que o Activity d preferncia
a uma das filas e, somente quando acabam as entidades desta fila, ele ir retirar entidades de outra fila. Isto acontece
porque o direcionamento de entrada padro do SIMUL8 do tipo Priority, em que seguida uma lista de prioridades.
Se voc construiu seu modelo na ordem (Fila 1, Fila 2 e Fila 3) e ligou as filas ao Activity nesta mesma ordem (1, 2 e 3),
o SIMUL8 considerar a fila 1 como a mais prioritria, seguida pelas filas 2 e 3. Para verificar esta lista de prioridades,
acesse as propriedades do Activity e clique no boto Routing In (Figura 4.2). Voc pode mudar a prioridade de uma fila
clicando em seu nome e utilizando o boto em formato de mozinha para aumentar ou diminuir a prioridade. Faa
uma experincia: considere agora que a fila 3 mais prioritria que a fila 2, que mais prioritria que a fila 1. Rode o
modelo novamente e veja o efeito desta alterao.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 79
Observe que, ao final da simulao, todas as 180 entidades presentes inicialmente saram do sistema (esta informao
ser importante nas prximas discusses).
Utilizando este mesmo modelo com 3 filas, vamos discutir o prximo tipo de direcionamento de entrada, chamado
Collect. Nas opes de roteamento do Activity, clique em Collect e observe que aparecero outras opes, como ilustra a
Figura 4.3 (no se esquea de clicar no boto More>>).
Do que se trata a disciplina Collect? Imagine que o seu processo vai precisar de 2 itens que esto na fila 1, 1 item da fila
2 e 1 item da fila 3 para realizar uma montagem que vai unir estes itens, formando um nico item na sada. Para isso,
indique no campo Collect, o recolhimento de 2 entidades na fila 1, 1 entidade na fila 2, 1 entidade na fila 3, mantendo
a opo Assemble ativada, e rode o modelo. O que ocorreu?
Primeiramente, observe que apenas 30 conjuntos foram montados. Isto aconteceu porque eram necessrios 2 itens da
fila 1 para formar cada conjunto e havia 60 itens nesta fila. E porque ficaram 29 itens nas filas 2 e 3? Porque quando
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 80
acabaram os itens da fila 1 o Activity retirou 1 item da fila 2, 1 item da fila 3, e ficou aguardando para retirar 2 itens da
fila 1. Como estes itens no chegaram, a simulao terminou neste estado.
Agora, experimente utilizar a opo Do not collect until all available presente na segunda coluna da opo Collect (Figura
4.3). Ao executar a simulao, voc perceber que sobraro 30 itens na fila 2 e 30 itens na fila 3, porque o Activity
somente ir iniciar a coleta quando todos os itens necessrios estiverem disponveis.
Por fim, desative a opo Assemble (Figura 4.4). Antes de simular, tente calcular quantos itens sairo do modelo. Rode
o modelo e confira se acertou (e se entendeu o que aconteceu).
A resposta : neste caso iro sair 120 unidades, pois o Activity coleta 2 entidades da fila 1, 1 entidade da fila 2 e 1
entidade da fila 3. Como h somente 60 itens na fila 1, ele ir coletar estas 60 entidades, alm de 30 entidades da fila 2
e 30 entidades da fila 3, totalizando 120 (60+30+30) unidades. Em termos temporais, o mecanismo de coleta do Activity
anlogo ao do caso anterior, s que ele no ir unir os itens em conjuntos, apenas processar as entidades ao
mesmo tempo e as liberar simultaneamente.
Vamos discutir agora outro tipo de direcionamento, chamado Passive (Figura 4.5). Troque a disciplina de prioridades
do Activity para Passive e rode o modelo novamente. O que aconteceu?
Absolutamente nada!
As filas so objetos de simulao passivos, ou seja, elas no empurram entidades para outros objetos de simulao.
Quanto voc as conecta na entrada de outro objeto passivo que no puxa entidades para si nada acontece. O
modo passivo til para situaes em que se conectam dois Activities em srie, sem que exista uma fila entre eles. Se
no segundo Activity no for atribuda a disciplina Passive, ele poder roubar as entidades do primeiro Activity. Se o
segundo Activity estiver com a disciplina Passive ativada, ele processar apenas as entidades que forem despachadas pelo
processo antecessor. No entanto, para evitar o uso destes artifcios, recomendamos sempre intercalar elementos ativos
com passivos no modelo, ou seja, Activities com Queues (filas), mesmo sabendo que eventualmente no haver tempo
de espera na fila intermediria.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 81
Produtos que devem ser retirados do estoque, pois ultrapassaram a data de validade;
Chamadas telefnicas que desistiram de esperar em uma central de atendimento aps esperarar muito
tempo;
Pessoas que desistiram de esperar em uma fila aps esperar por muito tempo.
Basicamente, um Activity com a disciplina Expired Only, ligado a uma fila, verifica se alguma entidade da fila j
ultrapassou um tempo mximo de espera (Shelf Live), definido nas propriedades da fila.
Voc pode simular a disciplina Expired Only no modelo da Figura 4.1. Inicialmente, clique na fila 1 e atribua um valor
para o seu Shelf Life, por exemplo, 5 minutos, como mostra a Figura 4.6.
Figura 4.6 - Opo Shelf Life para o tempo de prateleira ou tempo mximo de espera em fila.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 82
Para que as entidades que ultrapassem 5 minutos de espera sejam retiradas da fila, deve existir um Activity especfico
para isso. Assim, ao modelo original acrescente mais uma atividade que se conecta fila 1 e sada, como representado
na Figura 4.7.
Figura 4.7 Modelo com um segundo Activity para retirar as entidades que ultrapassem seu Shelf Live.
Agora, altere a disciplina de entrada do Activity 2 para Expired Only e simule o modelo (voc pode deixar o Activity 1
com a disciplina Collect). Note que a atividade 1 opera normalmente, mas algumas entidades sero retiradas da fila 1
pelo Activity 2.
Oldest: o Activity selecionar da fila a entidade que possuir o maior tempo de espera em fila;
Youngest: o Activity selecionar da fila a entidade que possuir o menor tempo de espera em fila;
Longest: o Activity selecionar entidade(s) da fila que possuir o maior nmero de elementos.
A disciplina Circulate faz com que o Activity selecione uma entidade por vez de cada fila, segundo a ordem estabelecida,
como um carteador que distribui as cartas do baralho para os jogadores da mesa, uma carta por vez e sempre no
mesmo sentido. A disciplina Circulate possui uma opo adicional, selecionada por padro: Ignore Starved (Figura 4.8).
Esta opo garante que, por exemplo, se a fila 1 no possuir mais entidades, o processo de coleta continuar nas outras
filas. Caso a opo Ignore Starved seja desabilitada, ento o Activity interremper a coleta de entidades na fila que est
vazia.
Para simular a disciplina Circulate no modelo da Figura 4.1, antes de apertar o boto Run, altere o contedo inicial da
fila 1 para 10.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 83
Veja que, na situao anterior, quando acabaram as entidades da fila 1, a retirada de entidades continuou entre as filas
2 e 3. Contudo, quando a opo Ignore Starved foi desativada, o Activity leva a disciplina Circulate risca, ou seja, se ele
tentar retirar uma entidade da fila 1 e no conseguir, ficar esperando at poder fazer a coleta na fila 1. Assim, nenhuma
entidade ser coletada e sobraro 50 entidades nas filas 2 e 3.
Acesse as propriedades do direcionamento de sada do Activity, clicando no boto Routing Out (note que o modelo usa
a opo Circulate). De forma anloga ao que vimos anteriormente, esta disciplina de sada envia entidades
alternadamente entre os destinos (no caso, filas) de sada. Rode o modelo e verifique seu funcionamento.
Agora, limite a capacidade da fila Storage Area 2 para 20 entidades (nas propriedades da fila, altere a opo Capacity).
Rode novamente o modelo e observe o que ocorreu. A disciplina Circulate ir alimentar as trs filas at que a capacidade
da fila Storage Area 2 seja atingida; depois disso, a disciplina Circulate ser obedecida apenas entre as filas Storage
Area 3 e Storage Area 4.
Acesse novamente a disciplina de sada do Activity, desative a opo (padro) Ignore Blocked Routes e rode o modelo
novamente. Perceba que, neste caso, quando a fila Storage Area 2 atinge sua capacidade mxima criada uma rota
bloqueada para o Activity. Como a opo Ignore Blocked Routes est desativada, o Activity no ignorar a rota e tentar, a
todo custo, enviar itens para esta fila. Como isto no ser possvel, o Activity no far mais nenhum processamento e
a fila anterior a ele passar a crescer de forma ilimitada at o final da simulao.
Vamos testar as outras opes. Volte a capacidade da fila Storage Area 2 para infinito e ative novamente a opo
Ignore Blocked Routes. Ajuste agora a disciplina de sada para Uniform. Neste caso, o Activity escolher aleatoriamente uma
fila para enviar entidades processadas. Note que h uma diferena fundamental entre as disciplinas Circulate e Uniform:
enquanto Circulate utiliza, obrigatoriamente, uma sequncia pr-definida, Uniform garantir apenas que, a longo prazo,
cada fila de sada receba a mesma quantidade de entidades. Rode o modelo e observe quantas entidades ficaram em
cada fila ao final da simulao. Os valores so muitos prximos, certo?
E se quisermos que 20% das entidades se dirijam para a fila Storage Area 2, 50% para a fila Storage Area 3 e 50%
para a fila Storage Area 4? Basta utilizar a opo Percent, definindo o perfil de probabilidades adequado, como
mostrado na Figura 4.10.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 84
Note que, neste modelo, a opo Uniform equivalente opo Percent, com o percentual de 33,33% para cada fila.
A prxima opo de direcionamento de sada Priority, nossa conhecida. Neste caso, assim como no direcionamento
de entrada, o Activity seguir a prioridade definida na lista: Storage Area 2, Storage Area 3 e Storage Area 4.
Selecione esta opo no Activity e execute o modelo. Veja que somente a fila Storage Area 2 receber as entidades,
por estar na primeira posio da lista de prioridades. Se esta fila tiver capacidade limitada, receber entidades at que
fique cheia; quando isso ocorrer, o Activity ir enviar entidades para o prximo destino da lista (Storage Area 3)
enquanto for possvel, passando para a prxima opo (Storage Area 4) quando necessrio.
Em seguida, temos as opes Label e Shortest Queue. Vamos comear pela segunda, que mais fcil de explicar. Imagine
que voc est em um supermercado com uma fila para cada um dos vrios caixas. Neste caso, uma boa ideia seria
escolher a fila com o menor nmero de pessoas, certo? exatamente este tipo de operao que esta opo faz.
A opo Label muito utilizada na prtica. Para ilustr-la, vamos utilizar o modelo Label Label Routing.S8, disponvel
na pasta SIMUL8\Examples\Labels. A Figura 4.11 ilustra esse modelo.
Observe que h um label chamado Route que, no ponto de entrada Type 1 Entry, ajustado inicialmente com o
valor 1, como mostra a Figura 4.12. De modo semelhante, no ponto de entrada Type 2 Entry, o label Route
ajustado para 2.
No Activity WC1, acesse as propriedades de direcionamento de sada e observe que a opo Label est acionada e que
o label Route foi selecionado (Figura 4.13). Desta forma, se o valor do label for igual a 1, ento o direcionamento de
sada ser para o primeiro destino da rota (fila Type 1); se o valor do label for igual a 2, o direcionamento ser para a
fila Type 2. Aps rodar a simulao fcil verificar, clicando na propriedade Contents das filas, que cada contm,
exclusivamente, entidades cujo label Route possui valor 1 ou 2.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 86
possvel, ainda, ajustar os valores dos labels por lgica de programao (como discutiremos no Captulo 5), o que
permite implementar lgicas de direcionamento complexas.
A partir da verso 2013 do SIMUL8 foi introduzida uma nova funcionalidade de roteamento denominada By Type. A
ideia ainda a de utilizar um label para roteamento, mas neste caso, possvel especificar os valores ou faixas de valores
de um label para um roteamento especfico. Suponha que tenhamos um label chamado L_Rota que pode assumir valores
inteiros de 1 a 10 e dois destinos de sada (por exemplo, filas): sada 1 e saida2. Desta maneira, podemos definir que
para os valores de 1 a 6 do label L_rota, a rota designada ser a sada 1 e para os valores de 7 a 10 do label, ser designada
a sada 2. Deixaremos o leitor vontade para explorar esta funcionalidade.
A opo Passive j foi explicada na seo anterior: se for colocada em um direcionamento de sada, ento quem ir
retirar a entidade do Activity ser o Activity posterior. Lembre-se de que a opo Passive s utilizada (e s faz sentido)
quando ligamos diretamente dois Activities.
Por fim, vamos ilustrar a opo Batching. Voc se lembra do roteamento de entrada Collect com a opo Assemble? Pois
bem, a opo Batching faz o inverso do Assemble, ou seja, aps o processamento, uma entidade recolhida pelo Activity
transformada em vrias entidades na sada (ou seja, a entidade copiada). Vamos usar, mais uma vez, um exemplo
do SIMUL8 para ilustrar esta operao. Abra o arquivo SIMUL8\Examples\Batching\Batching and Collect.s8, mostrado
na Figura 4.14.
Captulo 4: D i r e c i o n a m e n t o d e E n t i d a d e s | 87
Esse modelo simula uma linha de pallets retornveis, onde um nmero fixo de pallets fica circulando no sistema. O
nmero total de pallets disponveis 8 e foi estabelecido na propriedade Start-Up da fila Pallet Store. Note que o Activity
Load Pallet recolhe um item e um pallet, unindo os dois em uma nica entidade (opo Collect + Assmeble). Contudo,
aps a estao Unload, esta entidade separada em duas entidades (item + pallet). Para isso, foi utilizada a propriedade
Batching, com valor igual a 2 no direcionamento de sada do Activity Unload Pallet (Figura 4.15).
Mas, como podemos garantir que uma entidade (item) v para a sada e a outra (pallet) volte para a fila de pallets?
Elementar, meu caro Watson!17 A disciplina de sada usada Circulate: assim, cada item que sai do Activity vai para um
dos destinos de sada, alternadamente.
interessante notar que o valor da propriedade Batching tambm pode ser definido por uma distribuio de
probabilidades, por exemplo, para representar fornadas de biscoitos, onde a quantidade varia em funo de parmetros
de qualidade. Neste caso, usaramos uma distribuio do tipo Rounded Uniform.
Como observao final, note que os pontos de entrada de entidades (Start Point) possuem as mesmas opes de
direcionamento de sada de um Activity. Logo, podemos aplicar todos os conceitos abordados nesta seo para objetos
deste tipo.
17 Nota cultural: A famosa frase atribuda ao detetive ficcional britnico Sherlock Holmes, criado por Sir Arthur
Conan Doyle, de fato, no aparece em nenhuma obra escrita por seu criador, mas somente nas peas de teatro e
filmes da personagem.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 89
5.1. Variveis
Assim como em qualquer linguagem de simulao, o SIMUL8 pode trabalhar com variveis (por exemplo: Var1, data[5,6]
etc.). A principal diferena entre variveis e labels (atributos) o escopo da informao armazenada: enquanto os labels
guardam atributos de uma nica entidade do modelo de simulao, as variveis possuem natureza global, podendo ser
reconhecidas e acessadas durante todo o tempo de simulao. Esta diferena ilustrada na Figura 5.1, que representa
um modelo com 3 variveis (Contagem, Sinal e Desvio) e 2 atributos (Tipo, Cor). Cada entidade deste modelo possuir
o atributo prprio de cor e tipo, mas os valores de contagem, sinal e desvio valem para todo o modelo.
Graph Sync Interval: varivel que define a taxa de amostragem para a construo de grficos no SIMUL8. Seu
valor padro de 5 unidades de tempo;
Results Collection Period: define a durao do perodo de simulao considerado aps o perodo de
aquecimento (warm-up);
Simulation Time: valor atual do relgio de simulao. Esta varivel pode ser lida, mas no alterada
diretamente pelo usurio;
Warm Up Time: define a durao do perodo de aquecimento do modelo.
Para visualizar qualquer varivel, inclusive as variveis de sistema, mesmo durante a simulao, abra a Watch Window
(Advanced | Watch Windows) ou tecle Crtl-Alt-W e, com o boto direito do mouse, clique em Insert. A Figura 5.2 mostra
a aparncia desta janela de observao.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 90
Para criar uma varivel definida pelo usurio (no caso, voc), acesse o menu Data and Rules | Information Store ou utilize
o atalho de teclado Ctrl-I. A partir da janela que surgir, chamada Information Store (Figura 5.3), voc poder criar novas
variveis clicando no boto New.
As variveis numricas (number) so as mais comuns e, como o nome indica, servem para armazenar valores numricos
inteiros ou fracionrios. O valor On reset da varivel indica o valor que ela possuir quando a simulao for reiniciada
(se este tipo de atribuio no for necessrio, mantenha o valor padro, que zero). Outro tipo de varivel definida
pelo usurio que pode ser bastante til o tipo Spread Sheet, que se trata de uma varivel bidimensional. Para visualizar
ou alterar os valores armazenados neste tipo de varivel, na aba Data and Rules, clique no boto Spread sheets e depois
em View. Vai aparecer uma planilha semelhante do Microsoft Excel, conforme a Figura 5.4.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 91
Como o intuito desta seo apenas discutir noes de programao no SIMUL8, vamos utilizar um dos exemplos
prontos, fornecidos com o programa. Abra o arquivo Label Routing.s8, da pasta SIMUL8\Examples\Visual logic,
ilustrado na Figura 5.6.
Neste modelo, o direcionamento de sada do Activity Fred depende de um label chamado MYROUTE: se o valor
do label for igual a 1, a entidade ser direcionada para o Activity Jack; se o valor for igual 2, a entidade ir para o
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 92
Activity Mary. O valor do label ajustado por um bloco de cdigo (ou bloco de lgica) chamado Fred, associado
ao Activity Fred. Para acess-lo, abra a janela de propriedades do Activity e clique no boto Actions... O boto que
permite acessar o cdigo previamente criado estar inacessvel, j que no h nenhum label selecionado. Clique no
boto Add a Label to Change e selecione o label MYROUTE. Agora, clique no boto Visual Logic (que se tornou
visvel). A lgica que aparecer aque foi mostrada na Figura 5.6.
Vamos entender o que este cdigo faz: se o nmero de entidades na fila antes do Activity Jack (Queue for Jack.Count
Contents) for maior do que 5, ento o label MYROUTE receber o valor 2, indicando um direcionamento para o
Activity Mary. Em caso contrrio, o direcionamento ser para o Activity Jack. Feche todas as caixas de dilogo
abertas e simule o modelo em baixa velocidade para verificar o seu funcionamento.
Para acessar qualquer bloco de lgica de um modelo, clique em Visual Logic | All e selecione o cdigo desejado.
importante ressaltar que todos os blocos de lgica do SIMUL8 so locais, no sentido de que devem ser associados
a objetos ou eventos especficos. Vamos esclarecer do que isso se trata:
Alguns eventos aos quais podemos associar blocos de lgica so o de reincio do modelo (On Reset Logic),
final da simulao (On End Run), incio da simulao (On Start Run) etc. Neste caso, a insero dos cdigos
feita em Visual Logic | Time Based, no caso de eventos baseados no tempo, (como End Run) ou em Visual
Logic | Action Based, no caso de eventos baseados em aes, como On Start Run. Existe, ainda, um evento
especial chamado Visual Logic Time Check (acessvel a partir do menu Visual Logic | Time Logic VL), que
executa um bloco de lgica em intervalos de tempo pr-determinados. Esse tipo de evento muito til para
quando queremos, por exemplo, gerar registros (logs) do estado de uma simulao;
Tambm podemos associar blocos de lgica a eventos de objetos de simulao. Os casos mais comuns so:
os direcionamentos de entrada ou sada de Activities e nas alteraes de labels (Label Actions) dos pontos de
entrada ou Activities. No entanto, h inmeros outros pontos onde se podem associar blocos de lgica.
Vamos explicar algumas formas de uso de alguns destes comandos no exemplo a seguir.
Prope-se simular a operao durante 7 dias, 24 horas por dia (ou seja, 10.080 minutos) com o intuito de avaliar o
valor do estoque mdio no perodo e o nmero mximo de clientes esperando em fila, bem como o tempo mximo
18Como descrito no Captulo 2, a distribuio average corresponde a uma distribuio normal com desvio padro
igual a 25% do valor da mdia.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 93
de espera. Deseja-se, ainda, determinar o total de pedidos feitos no perodo e gerar um registro (log) do estoque de
produtos, de hora em hora. Considere que o estoque inicial do modelo de 80 unidades.
Se voc chegou at este ponto do livro, no deve ter dificuldades em construir o modelo ilustrado na Figura 5.7. Note
que a atividade batching uma atividade dummy (ou seja, possui tempo de execuo igual a zero, com distribuio
fixa). A razo de se utilizar esta atividade ser explicada na sequncia.
A partir da estrutura apresentada na Figura 5.7, devemos ajustar seus diversos parmetros. Para o Activity Lead Time
de Transporte, o preenchimento deve ser semelhante ao apresentado na Figura 5.8.
Note que a durao da atividade (ou seja, o tempo mdio de transporte) de um dia (=24*60 minutos) e que foi usado
um valor alto (1.500) para a propriedade Replicate. Escolhemos um valor de Replicate grande pois, teoricamente, vrias
cargas poderiam transitar simultaneamente, dependendo dos parmetros de ressuprimento. Caso o valor default seja
utilizado (replicate = 1), se tivermos 2 cargas simultneas uma estar na atividade Lead Time Transporte e outra ficar
aguardando na fila de produtos solicitados, adicionando tempo de espera ao Lead Time Transporte o que no faz
sentido.
O direcionamento de entrada do Activity Consumo, como mostra a Figura 5.9, deve ser tal que seja coletado 1 item
da fila Estoque e 1 item da fila Fila para Consumo, com as opes Do not Collect Until All Avaiable e Assemble
ativadas. Assim, cada cliente/pedido que chega ao sistema retira um produto do estoque e sai. Por fim, a durao da
atividade representada pelo Activity Consumo deve ser (fixa) igual a zero, pois supomos que o consumo imediato,
caso haja produto em estoque.
Agora, vamos s variveis. Crie uma varivel numrica denominada V_total_pedidos, que vai contabilizar quantos
pedidos foram feitos. Para isso, clique em Data and Rules | Information Store e crie uma varivel do tipo numrica, com
o nome indicado, mantendo o valor On Reset padro (zero), como representado na Figura 5.10. De modo semelhante,
crie uma varivel chamada V_conta_log, que ser usada na gerao do registro do estoque de produtos. O valor
inicial (On Reset) desta varivel deve ser igual a 10, pois o log ir ser contabilizado a partir da linha 10 da planilha de
dados.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 95
Por fim, crie uma varivel bidimensional (tipo Spread Sheet) chamada Planilha_Config_Estoque, preenchendo
algumas clulas com os valores mostrados na Figura 5.11 (no se preocupe com a formatao das clulas). Observe
que esta varivel armazena 5 parmetros, sendo que os 3 primeiros se referem ao estoque e os demais so indicadores:
Disponvel, que mede o quanto se tem de estoque no momento e Em trnsito, que mede o que j foi ordenado
(ou seja, quantas unidades j foram pedidas ao fornecedor). Este controle necessrio porque, se no monitorarmos
a quantidade em trnsito para o estoque, corremos o risco de gerar mltiplos pedidos de ressuprimento, enquanto o
pedido inicial ainda no chegou. evidente (para ns) que s se deve gerar um novo pedido caso a soma das
quantidades em estoque e em trnsito seja menor do que 100 (ponto de pedido).
Na linha 9, colocamos um texto que formar o cabealho do nosso registro de estoque (log).
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 96
Como visualizaremos o valor do ponto de ressuprimento durante a simulao? Basta colocarmos na Watch Window a
varivel Planilha_Config_Estoque[2,1], pois se trata da coluna 2 e linha 1 da planilha (isso mesmo: a indexao de
clulas no SIMUL8 feita com [<Nmero de Coluna>, <Nmero de Linha>]) Ao se clicar no campo Formula or
Condition, abre-se automaticamente a janela do Formula Editor que facilita todo o processo, como mostrado na Figura
5.12.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 97
Finalmente, vamos programao. Em primeiro lugar, definiremos a lgica de inicializao, que ser executada uma
nica vez, antes do incio da simulao. Para acessar (e editar) o bloco de lgica adequado, clique em: Visual Logic |
Time Based |Before Reset (Figura 5.13). Esta lgica ser executada logo antes do comando de Reset o modelo.
O SIMUL8 abrir uma janela para editarmos o cdigo que ser executado assim que o usurio clicar no boto Reset.
(Figura 5.13).
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 98
Os comandos em Visual Logic podem ser inseridos clicando-se com o boto direito do mouse na regio amarela da tela.
Por exemplo, iremos iniciar a lgica com um comentrio, como mostra a Figura 5.16.
Como a primeira providncia deste cdigo ser ajustar a fila que representa o estoque, insira um comentrio que
descreva esta operao. Alis, sempre uma boa prtica de programao inserir comentrios pertinentes ao cdigo
que est sendo desenvolvido (Figura 5.16).
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 99
O comando Set pode ser inserido da mesma forma que o comentrio (boto direito do mouse). Note que a primeira linha efetiva da lgica
ajusta (set) o valor inicial da fila para o valor (80) inserido na planilha. Note, ainda, que o nome do objeto Estoque e que Initial Contents
a propriedade que ser alterada19, parmetro facilmente obtido no Visual Logic a partir do Formula Editor, como mostrado na
19 O leitor familiarizado com Programao Orientada a Objetos dever reconhecer a notao Objeto.Propriedade.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 100
Figura 5.18. A segunda linha do cdigo ajusta o total Disponvel para este mesmo valor, enquanto a terceira linha
efetiva de lgica atribui zero para o valor Em transporte, j que nenhum pedido de ressuprimento foi feito no incio
da simulao.
Vamos agora configurar o Activity Batching. Note que esta uma atividade do tipo dummy, ou seja, seu tempo deve
ser sempre igual a zero (distribuio Fixed), j que a sua funo explodir a carga de um caminho que ser criada
na fila Produtos Solicitados (isso ser explicado a seguir). O leitor pode estar se perguntando porque no se configura
o bacthing na prpria atividade Lead Time Transporte. No se pode fazer isso porque a funcionalidade batching fica
desabilitada quando a propriedade Replicate ajustada para um valor diferente de 1 e, por isso, a necessidade da
atividade dummy. Assim, como ilustra a Figura 5.19, o valor de batching dever ser ajustado de acordo com o valor de
Planilha_Config_Estoque [2,2].
Vamos, agora, inserir a lgica de atualizao do valor On Order. No direcionamento de sada (Routing Out) do Activity
Batching, clique na seo de lgica On Exit (Figura 5.19). Isto lhe dar acesso lgica que o SIMUL8 executar
quando alguma entidade sair do Activity. Neste ponto, insira a seguinte instruo:
Esta instruo atualiza o valor da varivel Em pedido, pois assim que um produto entregue, um item deixa de estar
Em transporte.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 101
Agora vamos lgica mais complicada do modelo, que deve ser inserida no direcionamento de entrada (Routing In) do
Activity Consumo, como indicado na Figura 5.20: clique na aba Options, onde est disponvel o boto After Loading
Work.
IF Planilha_Config_Estoque[2,6]+Planilha_Config_Estoque[2,7] <=
Planilha_Config_Estoque[2,1]
SET Planilha_Config_Estoque[2,7]=
Planilha_Config_Estoque[2,7]+Planilha_Config_Estoque[2,2]
Lembre-se de que o cdigo anterior ser executado sempre que uma unidade de produto for retirada do estoque, ou
seja, quando um cliente for atendido. A primeira linha do cdigo atualiza o indicador de estoque. A segunda uma
estrutura condicional: se disponvel + em transporte estiver abaixo do ponto de ressuprimento, um novo pedido
ser feito. Neste caso ser adicionado um item fila Produtos Solicitados pelo comando Add Work to Queue. Em
seguida, o valor On Order ser atualizado com base no pedido e, finalmente, a ltima linha de lgica ir incrementar a
varivel que contabiliza o nmero de pedidos realizados.
Agora falta apenas criarmos a lgica do log de registro para que, a cada 60 minutos, o SIMUL8 crie uma linha na
planilha, representando o tempo de simulao e o nmero de produtos em estoque naquele momento. Para tanto,
acesse Visual Logic | Time Check VL | Time Check Properties (Figura 5.21).
Configure First Time check para 0 e Time Interval para 60 minutos. Isto far com que a lgica que criaremos seja executada
no instante 0 da simulao e, em seguida, a cada 60 minutos. Em seguida, abra a janela de cdigo do On Time Check
Logic, como mostrado na Figura 5.22.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 103
As duas primeiras linhas do cdigo gravam na planilha o tempo de simulao e quantidade atual em estoque. Note que
a linha utilizada da planilha indexada pela varivel V_conta_log (iniciada com o valor 10), que incrementada na
terceira linha do cdigo. Assim, a cada gravao de valor na planilha, uma nova linha ser utilizada.
Para o leitor mais avanado vale a pena comentar que seria possvel utilizar outra forma de modelagem equivalente
que acabamos de explicar. Neste caso apagaramos o Activity Lead Time Transporte, conectando diretamente a fila
Produtos Solicitados ao Activity Batching. Mas da o leitor poderia se perguntar como seria representado o tempo de
transporte. Bem, este seria inserido na propriedade Min Wait Time da fila Produtos Solicitados, fazendo com que
toda entidade adicionada fila espere, no mnimo, este valor de tempo (esta funcionalidade ser melhor detalhada no
captulo 7). Como a atividade Batching ocorre em tempo 0, ela no causar reteno da entidade que aguardou seu
tempo mnimo de processamento. Outro detalhe importante que a lgica de atualizao do estoque em transito foi
inserida no evento on Exit Logic da atividade Batching, decrementando o estoque em transito de uma em uma unidade.
Uma lgica totalmente equivalente seria inserir um decremento do valor da quantidade de ressuprimento (no caso 250)
no evento On Work Complete, j que, neste ponto ainda no ocorreu a exploso da entidade em 250 unidades. Enfim,
em simulao, h vrios modos de se construir um modelo.
Por fim, vamos fazer com que seja exibido na tela o valor da varivel V_total_pedidos. Para isso, clique em Insert |
Visual Data, posicione o cursor em algum ponto da tela e selecione a varivel V_total_pedidos. Por questes de
clareza, escreva um texto explicativo esquerda da varivel (Insert | Text Box). Voc tambm pode adicionar os grficos
das filas, mantendo-os em tela, como explicado no Captulo 1. Este procedimento far com que o modelo se assemelhe
ao que mostrado na Figura 5.23.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 104
Figura 5.23 - Sequencia para colocao do display de tela com o valor da varivel V_total_pedidos.
Antes de rodar o modelo, ajuste o relgio de simulao para contabilizar 24 horas por dia (incio s 0:00 horas, durao
de 24 horas), sete dias por semana, ou seja, 10.080 minutos (Results Collection Period), sem perodo de warm-up. Aps a
simulao, clique em Data and Rules | Spreadsheets e acesse a varivel que representa a planilha contendo o log. A
Figura 5.24 mostra um exemplo do aspecto desta planilha aps a simulao.
Captulo 5: V a r i v e i s e n o e s d e V i s u a l L o g i c | 105
Figura 5.24 - Planilha com as sadas e o "log" da quantidade disponvel em estoque a cada hora.
Com o modelo pronto (e funcionando corretamente), vamos recordar as questes inicialmente propostas: deseja-se
saber o valor do estoque mdio no perodo, o nmero mximo de clientes esperando em fila, o tempo mximo de
espera e o total de pedidos feitos pelos clientes.
Para respondermos a essas questes devemos adicionar as variveis relevantes ao resumo de resultados: estoque mdio,
nmero mximo e tempo mximo de espera na fila para consumo, total de pedidos de ressuprimento e nmero total
de clientes atendidos. O procedimento para inserir dados de sada de objetos (por exemplo, tamanho mdio de fila) no
resumo de resultados j foi discutido no Captulo 1. Para adicionar uma varivel ao resumo, clique em Data and Rules |
Information Store, selecione a varivel de interesse (no caso V_total_pedidos) e, com o boto direito do mouse, escolha
a opo Add to KPIs. Com isso, aps a simulao, o resumo de resultados dever ser semelhante ao que mostrado na
Figura 5.25 (resultados obtidos aps 100 replicaes do modelo).
Como mostrado na Figura 5.25, obtivemos um estoque mdio em torno de 83 itens, o nmero mximo de clientes
esperando por produto de cerca de 90 clientes e o tempo mximo de espera est ao redor de 900 minutos. Para
algumas situaes estes valores poderiam ser crticos, para outras no. Por exemplo, voc esperaria em uma fila por 15
horas (900minutos) para receber um eletrodomstico? Talvez a resposta seja sim, mas se o produto fosse uma bala ou
biscoito, voc provavelmente desistiria. Como exerccio, sugerimos que voc teste outros parmetros de entrada do
modelo (estoque inicial, ponto de ressuprimento e quantidade de ressuprimento) para obter melhores desempenhos.
Outra sugesto incluir a possibilidade de desistncia.
Vamos encerrar este captulo lembrando ao leitor que h inmeros outros comandos disponveis em Visual Logic, que
no sero descritos neste livro. Para ver a lista completa, abra uma janela de lgica qualquer e, com o boto direito
mouse, selecione Command | List All in Note Pad. Veja que a lista de comandos extensa, mas acreditamos que o objetivo
deste captulo tenha sido atingido ao fornecermos subsdios introdutrios programao em Visual Logic.
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 107
6.1. Introduo
Neste ponto do livro, voc j deve estar familiarizado com a ideia de que o objetivo da simulao a criao de um
modelo com a finalidade de analisar o comportamento de um sistema. Em ltima anlise, o conjunto de resultados do
modelo a pea chave para compreenso do sistema. No entanto, tambm h um aspecto muito importante presente
na maioria dos simuladores comerciais: a animao grfica dos resultados e processos.
O SIMUL8 j cria alguma animao automaticamente quando simulamos nossos modelos. A ideia agora
enriquecermos nossos modelos com mais elementos grficos, tornando-o mais didtico para quem assiste a
simulao.
A bem da verdade, nem tudo exatamento animado, no sentido de movimentao em tela. Boa parte do trabalho
consiste na colocao de elementos grficos ou, como o ttulo deste captulo sugere, refinamentos grficos.
Invariavelmente, contudo, utilizaremos o termo animao para nos referirmos a tudo que se refere parte grfica
do modelo, animada ou no.
Auxiliar o processo de verificao do modelo: muitos erros ou bugs de construo podem ser detectados
graas animao grfica;
Auxiliar a comunicao do projeto: clientes ou mesmo equipes de projeto tero muito mais confiana no seu
modelo, caso tenham a oportunidade de verificar o seu funcionamento por meio da animao do processo.
Evidentemente, o modelo tambm deve produzir resultados confiveis.
Um primeiro aspecto da animao em modelos de simulao o seu grau de detalhamento. A Figura 6.1 mostra
modelos de simulao sem muitos elementos grficos (a) e com um grau mediano de elementos (b).
(a) (b)
Fundo de tela;
Objetos de simulao;
Entidades.
Insert | Background Image: insere uma imagem de fundo, que pode ser um arquivo bitmap, JPG, ou mesmo,
um arquivo do AutoCad (extenso *.dwg). importante ressaltar que, uma vez que a imagem
inserida, ela s poder ser redimensionada ou deslocada no plano de fundo: suas propriedades grficas,
como cores, por exemplo, no podem ser alteradas (o SIMUL8 no um editor de imagens). Qualquer
alterao na imagem deve ser feita previamente em um software especfico;
Insert | Shapes: insere uma forma bsica (crculo, quadrado, linha, seta etc), com a opo de preenchimento
(quando aplicvel). Estes objetos podem ser reposicionados na tela e ter suas dimenses e outras
propriedades alteradas (cor de borda, cor de fundo etc);
Insert | Text Box: insere uma caixa de texto. Para esta operao o SIMUL8 exige que seja definida uma rea
retangular com o mouse (que ser o tamanho da caixa de texto) antes da digitao do texto propriamente
dito (no basta clicar na janela de simulao). As propriedades do texto (cor, estilo da fonte etc) podem ser
alteradas aps a insero.
Como exerccio, tente reproduzir o desenho mostrado na Figura 6.3 utilizando estas opes grficas. Algumas dicas:
Para alterar a cor do fundo (no nosso exemplo utilizamos a cor azul), clique com o boto direito do mouse
em qualquer posio da tela e selecione a opo Windows Properties. Em seguida, selecione a opo Select fill
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 109
color e escolha a cor desejada. Para selecionar uma cor especfica, a partir de seu cdigo RGB, clique com o
boto direito do mouse sobre a paleta de cores e selecione a opo More Colors (Line)20;
Observe que um dos quadrados possui preenchimento, enquanto o outro no. O mesmo vale para as
circunferncias;
A figura a capa de um livro, mas voc pode escolher a imagem que quiser do seu prprio computador a
partir de Insert | Background Image;
A partir da verso 2011 do SIMUL8 tornou-se possvel inserir bales de textos ou anotaes dinmicas, clicando em
Insert | Annotations. Deixaremos o leitor livre para explorar esta funcionalidade.
20Voc pode exibir o cdigo RGB das cores da paleta ao ativar a opo Show full color values on status bar. Se voc no
sabe do que estamos falando, no se preocupe: estamos fazendo este comentrio para dar ferramentas queles que
gostam de ter controle absoluto sobre a aparncia do modelo de simulao.
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 110
Add from library: adiciona uma imagem da biblioteca de imagens do SIMUL8 ou de alguma pasta do
computador. O SIMUL8 possui uma srie de imagens disponveis, de categorias como manufatura, pessoas,
servios, transportes etc21. Antes de criar uma imagem nova, sugerimos que voc use esta opo para
ganhar tempo a menos que seja realmente necessrio utilizar uma imagem personalizada;
Add from clipboard: adiciona uma imagem que est na rea de transferncia do computador (resultado de um
Ctrl+C);
New: cria uma nova imagem. Neste caso, o SIMUL8 abrir um editor de imagens, estilo Paint.
No pretendemos abordar aqui as funcionalidades detalhadas desta ferramenta, j que este no o propsito deste
livro. Vale ressaltar que o tamanho da imagem padro dos objetos do SIMUL8 de 3232 pixels. O editor de imagens
pode se estender at 9999 pixels, mas aconselhamos manter o formato padro para no sobrecarregar graficamente o
modelo, o que pode gerar resultados estranhos e/ou desproporcionais.
Aps testar as funcionalidades do editor, tente construir uma imagem semelhante que mostrada na Figura 6.5 (seu
tamanho de 3232 pixels). Nomeie a imagem como Def_t.
A imagem criada pode ser utilizada em qualquer objeto deste modelo de simulao, a partir das suas propriedades grficas.
Para utilizar a imagem em outros modelos preciso salv-la como um arquivo de imagem bitmap.
Uma nova e interessantssima funcionalidade do SIMUL8 2012 (somente na verso Professional) a possibilidade de
se importar modelos tridimensionais do Google SkethUp22 diretamente para o modelo de simulao e utilizar o mdulo
VR (Virtual Reality) para visualizar o modelo em 3-D. Isto feito diretamento pelo Image Editor como mostra a Figura
6.6.
Por exemplo, ns selecionamos o modelo de um navio de transporte de gs LNG Tanker (Figura 6.7), mas voc
poder escolher a figura que quiser. Ao final, voc deve clicar no boto Fazer download do modelo na parte inferior
da tela e confirmar ao SIMUL8 que deseja carregar o modelo para dentro da simulao (para os impacientes, o processo
de importao demora alguns segundos).
Ao clicar com o boto esquerdo e movimentar o mouse no Image Viewer, voc poder posicionar a imagem na perspectiva
que desejar, como mostra a Figura 6.8.
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 113
Importante: a visualizao em 3-D s estar disponvel na verso Professional e se for clicado o boto 3D da aba View.
Lembra-se do modelo do centro de distribuio do Captulo 2? Para refrescar sua memria, mostramos novamente a
estrutura no modelo na Figura 6.9.
Usando as tcnicas de refinamento grfico recm-discutidas, tente transformar o modelo da Figura 6.9 em outro mais
apresentvel, como mostrado no exemplo da Figura 6.10.
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 114
6.4. Entidades
No terceiro nvel de refinamento grfico, nosso foco estar nas entidades. Para associar uma imagem a uma entidade
principal (Work Item Type), basta selecionar a opo Advanced | Work Item Types e clicar no boto Image - Select, como
ilustrado na Figura 6.11. Este tipo de alterao recomendvel quando as bolinhas vermelhas exibidas por padro
pelo SIMUL8 no representam de forma clara as entidades reais do sistema.
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 115
Outra alterao que pode ajudar bastante a melhorar o aspecto de um modelo a determinao de caminhos no
lineares. Crie, por exemplo, um modelo com apenas uma chegada ligada a uma fila. Selecione a ligao entre a chegada
e, em seguida, clique e arraste sobre algum ponto intermedirio da ligao para adicionar um ponto de quebra. Este
tipo de alterao especialmente til em modelos de transporte, quando queremos que a entidade siga (visualmente)
um caminho pr-definido. A Figura 6.12 ilustra uma ligao com 3 pontos de quebra. Tente obter uma representao
semelhante e simule o modelo para ver o efeito.
Estamos considerando que, como de costume, os tempos de deslocamento do modelo foram zerados.
Assim, o efeito da utilizao de linhas de quebra puramente visual. Na simulao do modelo
mostrado na Figura 6.12 no haver nenhum gasto de tempo no deslocamento das entidades entre o
ponto de chegada e a fila, em termos de resultados da simulao.
Agora, abra a janela de propriedades da fila e clique no boto Graphics. Duas opes de visualizao muito usadas so
Tank e Graphic Tank, que mostram um efeito de um tanque se enchendo e esvaziando. Para o que queremos discutir
no momento, selecione a opo de visualizao Queue. Neste caso, as entidades em fila sero exibidas uma atrs da
outra, como em uma fila indiana. Volte para a edio do modelo e ative o modo de visualizao das ligaes (
). Ao selecionar a fila voc ver dois pontos de manipulao, na forma de pequenos quadrados com
preenchimento em preto: um no centro da fila e o outro um pouco deslocado para a esquerda. Clique neste segundo
ponto e o arraste para regular a orientao e espaamento das entidades e fila. Simule o modelo e veja o efeito da
alterao (mostramos alguns exemplos na Figura 6.13).
Agora vamos falar sobre alteraes dinmicas na imagem de uma entidade. Suponha que estamos construindo um
modelo de uma padaria e queremos representar a entrada de massa no forno e a sada de pes assados. Para conseguir
este efeito, basta acessar as propriedades grficas do Activity, clicar no boto Work Item Image on Exit e selecionar a
imagem desejada. Tambm possvel visualizar a entidade dentro do Activity durante seu processamento,
selecionando a opo Work Item. Estas funcionalidades esto ilustradas na Figura 6.1423.
Agora suponha que voc queira controlar a imagem da entidade atravs de um atributo (label). H duas formas de se
fazer isto. Uma via lgica de programao (Captulo 5), atravs de uma estrutura condicional IF e do comando Set
Work Item Image. Outra forma, que no exige programao, descrita a seguir:
Crie um label numrico com o nome image:xxxx, onde xxxx pode ser qualquer palavra. Neste exemplo, por
simplicidade, vamos criar um label com chamado image:tipo. A sintaxe image: reservada e no pode ser
alterada;
Crie duas imagens distintas no editor de imagens (Ctrl+Alt+I) ou as importe da biblioteca de imagens (ou,
ainda, de arquivos do tipo bitmap, extenso .bmp). Os nomes dessas imagens devem ser, necessariamente
tipo1 e tipo2. No pode haver espao entre a palavra tipo e o nmero que segue, pois este nmero que
far a indexao automtica entre o label e a imagem correspondente: Assim, se label = 1, ento imagem =
tipo1; se label = 2, ento imagem = tipo2, e assim por diante (Figura 6.15);
Captulo 6: R e f i n a m e n t o s G r f i c o s e A n i m a o | 118
Ajuste o valor do label (por exemplo, em um ponto de entrada) para uma distribuio Rounded Uniform entre
1 e 2, somente para efeitos de teste. Desta forma, haver 50% de chance de que o label seja do tipo 1 e 50%
de que seja do tipo 2. Rode o modelo. O resultado dever ser semelhante ao da Figura 6.16.
Note que este procedimento pode ser estendido para qualquer quantidade de imagens.
Para finalizar este captulo, seguem algumas dicas para outras funcionalidades grficas que julgamos interessantes:
Para visualizar os recursos trabalhando nos Activities, ao associ-los, utilize a opo Resources |Display |
Display at Activity ( uma das opes de propriedades grficas dos Activities);
Para que um Activity apresente imagens diferentes, uma para cada condio (ocioso, trabalhando, quebrado,
em set-up), abra as propriedades grficas do Activity e selecione a imagem correspondente a cada estado. Este
recurso s funciona se a propriedade Replicate do Activity for igual a 1;
Voc pode visualizar grficos na tela, dando um duplo-clique nos grficos e selecionando a opo Onscreen
(somente na verso Professional);
O SIMUL8 permite a construo de grficos de barras dinmicos e tabelas dinmicas. Estas funcionalidades
no sero abordadas aqui, mas podem ser acessadas a partir de Insert | Table ou Insert | Data Bar;
Imagens podem ser associadas a variveis, isto , dependendo do valor de uma varivel a imagem de um
objeto pode mudar. Esta funcionalidade se chama Image List e pode ser acessada clicando-se em Insert |
Image List. Tambm no abordaremos esta funcionalidade, por entendermos que se trata de um recurso
avanado.
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 119
7.1. Introduo
Este captulo visa aprofundar alguns conceitos desenvolvidos nos captulos anteriores, utilizando funcionalidades
especficas de Activities, filas e recursos. Pretendemos, ainda, que o leitor se aprofunde na utilizao de labels e
apresentaremos um novo objeto de simulao: a esteira (conveyor).
Desenvolveremos os tpicos utilizando um exemplo de um processo de triagem e embalagens de frutas. Por razes
didticas, explicaremos os detalhes de funcionamento do modelo medida que apresentarmos os novos conceitos.
Qualidade A: sero embaladas para exportao, o que leva 5 minutos por caixa com 12 frutas;
Qualidade B: sero processadas para a fabricao de suco, em um tempo de 30 minutos por batelada de 100
frutas;
Qualidade C: sero descartadas, ou melhor, segundo critrios de sustentabilidade, sero trituradas (o que
leva 40 minutos por batelada de 50 frutas) e utilizadas como matria-prima para a fabricao de adubo
orgnico.
O modelo que representa o processo est ilustrado na Figura 7.1. Os principais detalhes sobre a construo sero
explicados na prxima seo. Note que foram inseridos trs textos estticos (Qualidade A, Qualidade B e
Qualidade C).
todas as opes disponveis. Note, ainda, que selecionamos a opo Do not collect until all available para indicar que as
frutas devem ficar na fila at que exista a quantidade necessria para compor uma caixa.
Por fim, observe que as opes Match e Assemble devero estar desativadas. Apesar de o processo gerar uma caixa a partir
de 12 frutas no ativamos a opo Assemble porque queremos que todos os resultados sejam expressos em termos de
frutas. Se tivssemos ativado a opo Match, todas as frutas coletadas deveriam ser da mesma qualidade (representada
por um label), algo que usaremos (e explicaremos) na prxima seo.
As configuraes do direcionamento de entrada (Routing In) dos processos Suco e Rejeitos devem ser ajustadas de
forma semelhante. Neste ponto, o modelo ainda no est pronto para ser executado, pois falta definir o processo de
separao das frutas segundo a qualidade. Para isso usaremos labels, como explanado a seguir.
Como comentamos no Captulo 2, mesmo quando a informao armazenada em um label tem uma interpretao
textual (como Qualidade A), prefervel criar uma relao entre esta informao e um valor numrico do que utilizar
um label de texto. Para o nosso exemplo, esta relao descrita na Tabela 7.1.
24 Este boto tambm pode ser encontrado em pontos de entrada, filas e esteiras (conveyors).
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 122
Increment: Adiciona 1 ao valor do label, o que muito usado para se contar quantas vezes uma entidade
passou por um ponto do modelo;
Decrement: Similar ao anterior, subtraindo 1 do valor do label. Ao utilizada, por exemplo, para se contar
quantas tarefas restam para a finalizao de um processo;
Set to: Utilizado para atribuir determinado valor ao label, a partir de uma distribuio de probabilidades ou
um valor fixo. Se for utilizado em um ponto da simulao em que a entidade passa mais de uma vez, a nova
atribuio sempre ir se sobrepor anterior.
Add to: Adiciona um determinado valor ao valor atual do label;
Multiply by: Multiplica o valor atual do label por um valor;
Time Stamp: Atribui ao label o valor atual do relgio de simulao. Esta ao equivalente a atribuir ao label o
valor da varivel de sistema Simulation Time (o que exige o uso de Visual Logic);
Unique: Atribui um valor numrico nico para a entidade que receber o label (como ocorre, por exemplo,
com a numerao das notas de dinheiro);
Ask VB: Executa uma macro em Visual Basic para decidir o que fazer com o label. Esta ao deve ser
evitada, pois acionar programas externos ao SIMUL8 aumenta o tempo de simulao.
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 123
Como comentamos anteriormente, utilizaremos a opo Set to no nosso exemplo, sendo que o valor ser definido por
uma distribuio chamada Qualidade, do tipo Probability Profile, com os valores dados na Tabela 7.2:
Valor Probabilidade
1 55%
2 40%
3 5%
Os valores do label lbl_Qualidade sero usados pelo prprio Activity Triagem para programar a poltica de seleo
das frutas. Acesse as propriedades do Activity Triagem e, nas opes de direcionamento de sada, escolha a disciplina
label, selecionando o label lbl_Qualidade. A sua janela de propriedades deve se parecer com a que mostrada na
Figura 7.6 preste muita ateno ordem dos destinos de sada!
Agora o modelo est pronto para ser executado pela primeira vez.
Crie um recurso chamado Trabalhador (vide Captulo 2) para representar a existncia de 3 trabalhadores e o associe
a cada um dos Activities. Em seguida, abra a janela de propriedades do recurso e clique no boto Availability. Na janela
que se abrir (Figura 7.7), ajuste os parmetros da disponibilidade.
Se a opo Detailed for selecionada, a janela de propriedades se expande (Figura 7.8), exibindo opes para
se representar mais de um tipo de parada, como por exemplo, uma parada para almoo (com durao de 1
hora) e uma parada para lanche (que dura 15 minutos). Clicando no boto Time Between Absence, podemos
determinar de quanto em quanto tempo a parada acontece. J o boto Time to Return define quanto tempo
se passa at que o recurso volte atividade.
Para o nosso exemplo, defina dois tipos de paradas. A primeira ser chamada de Parada Curta e ocorrer a cada 120
minutos segundo uma distribuio exponencial, com durao fixa de 10 minutos. O segundo tipo, a Parada Longa,
representar pausas de 30 minutos aos quais os trabalhadores tm direito a cada 6 horas (360 minutos) no queremos
ter problemas com o sindicato dos separadores de frutas, certo?
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 125
Os objetos Activity podem ser programados para efetuar paradas programadas ou aleatrias. A configurao das paradas
dos Activities funciona exatamente como a configurao da disponibilidade dos recursos, com algumas opes
adicionais. A configurao das paradas acessada pelo boto Eficiency da janela de propriedades do Activity. Como se
pode observar no exemplo mostrado na Figura 7.9, a janela de parmetros muito semelhante janela de
disponibilidade dos recursos. A diferena est na seo When a break-down occurs, em que temos as seguintes opes:
Close feeding queues: se ativada, esta opo faz com que a(s) fila(s) da entrada deste Activity no recebam mais
itens at que ele volte a funcionar normalmente;
Stop work immediatly: se ativada, interrompe o funcionamento do Activity assim que a parada ocorre (opo
ativada por padro);
Extend breakdown by time to empty the queue: esta opo s estar disponvel se a opo Stop work immediatly
estiver desativada. Ela permite o processamento dos itens que j estavam na fila antes da parada acontecer.
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 126
Outra diferena est na janela onde definimos o tempo de parada (Length of Break Times), acionada pelo boto Time to
Repair (Figura 7.10): aqui temos a opo Resources, onde definimos quais recursos sero usados durante a parada (recursos
de conserto).
Crie uma parada Tipo Pane (parada imediata) para o Activity Suco, com os seguintes parmetros: tempo entre
paradas distribudo exponencialmente com mdia de 200 minutos e tempo de reparo segundo uma distribuio
Erlang(10, 3).
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 127
Imagine que o nosso setor de processamento das frutas comece a receber mais de um tipo de fruta, como peras e
mas. Imagine tambm que as peras, por serem mais delicadas e caras do que as mas, tm prioridade no processo
de separao e preparao do suco. Para diferenci-las, vamos utilizar um novo label, chamado lbl_fruta, com a
seguinte codificao numrica: 1 para peras e 2 para mas.
Vamos considerar que a cada 100 caixas de frutas que chegam ao setor, 45 so de mas e o restante de peras. Ajuste
a seo Label Actions do ponto de entrada para simular isso (sim, voc precisar criar uma nova distribuio).
Agora, as novidades: a Figura 7.11 mostra as propriedades da fila que antecede o Activity Triagem, com as
configuraes que sero usadas no nosso exemplo. Antes de alterar o seu modelo, acompanhe uma descrio de cada
opo:
Capacity: indica a capacidade mxima da fila. Se alguma entidade tentar entrar em uma fila cheia ela
simplesmente ser descartada e contabilizada como perdida (Item lost). A opo Infinity (padro) indica que a
fila tem capacidade ilimitada;
Captulo 7: F u n c i o n a l i d a d e s e s p e c f i c a s | 128
Shelf Life: representa o tempo que cada item pode aguardar na fila antes de ser considerado expirado.
Entidades expiradas s podem ser removidas da fila por um Activity com disciplina de entrada do tipo
Expired only, como visto no Captulo 4;
Min Wait Time: tempo mnimo de espera em fila, para representar, por exemplo, um tempo de secagem de
uma pea pintada, antes do prximo processamento. No nosso exemplo (Figura 7.11), nenhuma fruta ficar
menos do que 15 minutos em fila;
Prioritize: estabelece prioridade de atendimento segundo um label, do maior valor para o menor: ao entrar na
fila, entidades com maior valor de label furam parte da fila. Se for desejada uma ordem de prioridade
inversa, deve-se ativar a opo Reverse Priority;
LIFO: esta opo transforma a fila em uma pilha, ou seja, a ltima entidade a entrar na fila ser a primeira a
sair. Esta opo s ficar disponvel se a opo Prioritize estiver desativada por este motivo ela no
aparece na Figura 7.11;
Segregate Results: caso entidades com diferentes labels passem por essa fila, pode ser interessante conhecermos
os resultados de alguns indicadores (como tempo mdio de espera em fila) para cada valor de label esta
opo fora o SIMUL8 a fazer exatamente isso. Por exemplo, se quisermo saber os valores do tempo
mdio de espera das peras e das mas, devemos segregar os resultados pelo label lbl_fruta.
Ajuste os parmetros da fila antes da triagem como mostrado na Figura 7.11. Para as demais filas, utilize capacidade
infinita e sem definio de Shelf Life. Para as filas que antecedem os processos de embalagem e preparao de suco,
priorize as peras e faa com que os resultados sejam separados por tipo de fruta. Os resultados da fila de frutas rejeitadas
tambm devem ser desmembrados por tipo de fruta, mas no necessrio nenhum tipo priorizao, pois todas as
frutas que passarem por esta fila iro para a compostagem.
Por fim (e isso muito importante), como nenhuma caixa ou suco pode conter tipos diferentes de frutas, ative a opo
Match dos Activities Embala e Suco, selecionando o label lbl_fruta.
No SIMUL8, podemos introduzir tempos de set-up na janela de propriedades dos Activities, clicando em Routing In e
selecionando a aba Change Over, como ilustra a Figura 7.12. Do lado esquerdo da janela encontramos os campos em
que se define o tempo de set-up, que pode ser constante ou dado por uma distribuio de probabilidades. No lado
direito da janela, temos as seguintes opes:
No nosso exemplo, no queremos que existam traos de ma no suco de pera ou vice-versa. Portanto, ajuste os
parmetros de set-up do Activity Suco para considerar que haja uma limpeza a cada mudana de fruta (label lbl_fruta),
com tempo total de 60 minutos.
Objetos do tipo Conveyor podem ser encontrados na barra de componentes Advanced Building Blocks, que deve estar
na parte inferior da barra de componentes do SIMUL8 (Figura 7.13). A Figura 7.14 mostra as propriedades do objeto
Conveyor. Na parte superior da janela temos os campos de nome do objeto, o comprimento e a velocidade, em funo
das unidades definidas como padro nas propriedades da simulao. Como comentado anteriormente, o nmero
mximo de entidades que o Conveyor pode conter depende do seu tamanho e do tamanho da entidade. O tamanho
padro das entidades de 1 m, mas isto pode ser alterado em Advanced | Work Items | All Work Items | Wl Type Info. O
tamanho em tela do Conveyor no afetado por estas configuraes, mas voc pode alterar a imagem do objeto caso
queira uma animao mais realista.
Se a opo Acumulating for ativada, as entidades transportadas continuam o seu movimento mesmo que exista um item
no final da esteira bloqueando a sada, ou seja, os itens vo se acumulando at que o Conveyor esteja cheio. Caso esta
opo esteja desativada, o Conveyor s se movimenta se a sada estiver liberada, como acontece nas esteiras dos caixas
de supermercado.
Enquanto a opo Acumulating detalha as aes do Conveyor em relao sada dos itens, a opo Allow Gaps se refere
sua entrada: se a opo Allow Gaps estiver ativada, estaremos simulando uma esteira em movimento contnuo, ou
seja, um item pode estar separado do outro. Com a opo desativada, estaremos simulando uma esteira que s se
movimenta se os itens estiverem colados uns aos outros.
No discutiremos a configurao da rea de retirada de itens (Pick area length), por se tratar de uma funcionalidade
avanada.
Por fim, os objetos do tipo Conveyor tambm podem estar sujeitos a paradas para manuteno, tais como os Activities,
por meio da opo Efficiency (Figura 7.14).
Voltando ao nosso exemplo do processamento de frutas, imagine que as frutas de Qualidade A so transportadas por
uma esteira, da triagem para a embalagem. Considere, ainda, que esta esteira tem 10 metros de comprimento e funciona
a uma velocidade de 2 metros por minuto, desde que a sada esteja liberada. Altere o modelo para representar esta nova
situao (Figura 7.15), considerando que cada fruta ocupe um espao de 10 cm na esteira (a partir de Advanced | Work
Items). Rode em modelo com uma velocidade de animao que permita visualizar o funcionamento da esteira.
Quando uma ligao entre dois objetos apagada e refeita, ela entra no final da lista de destinos de
sada (Routing Out). Assim, se voc criou o modelo com a esteira a partir do modelo discutido nas
sees anteriores deste captulo, verifique se o direcionamento das frutas aps o processo triagem
est sendo feito de forma correta (sequncia de destinos: embalagem, fabricao de suco e descarte).
Captulo 8: E s t u d o s d e C a s o | 132
8.1. Introduo
Neste captulo, apresentaremos dois casos prticos baseados em projetos de consultoria realizados pelos autores. O
primeiro da rea de manufatura, enquanto o segundo da rea de servios, sobre o processo de suporte ao sistema
ERP (Enterprise Resource Planning). Para cada caso teremos:
Descrio do problema;
Criao de modelo de simulao;
Atividades complementares.
Nossa ideia para este captulo a seguinte: o leitor convidado a entender o problema proposto e ter uma noo geral
de como ele foi resolvido. Se desejar, crie o modelo de simulao com base na descrio geral e nos detalhes de
implementao que so fornecidos. Por fim, se quiser se estender na anlise do problema, pode realizar as atividades
complementares, propostas como exerccios.
Resumidamente, o processo de produo de ao na empresa analisada inicia na linha de decapagem, de onde as bobinas
de ao so enviadas para laminao (Figura 8.1). O processo continua na galvanizao, etapa onde as bobinas so
revestidas. A partir deste ponto, o processo produtivo pode seguir trs fluxos: a) os produtos so vendidos para o
mercado nacional; b) os produtos so encaminhados para a linha de pr-pintura contnua ou; c) os produtos so
encaminhados para o centro de servios de ao, onde so executadas operaes de corte. A continuao do processo
atravs da linha de pr-pintura a que nos interessa aqui (ponto 4 da Figura 8.1).
Captulo 8: E s t u d o s d e C a s o | 133
2 3
1
Legenda:
A linha de pr-pintura contnua (LPC) responsvel pela produo dos produtos com maior valor agregado da unidade
siderrgica estudada, respondendo por aproximadamente 27% do volume total faturado pela unidade.
A movimentao na sada da linha feita por uma ponte rolante com capacidade de carga de 15 toneladas. A ponte
possui um elevado percentual de utilizao devido s diversas movimentaes necessrias para a retirada de produtos
da linha de produo e seu carregamento nos caminhes despachados aos clientes.
Iniciamos o estudo elaborando um modelo abstrato do processo de movimentao de bobinas pr-pintadas, com o
objetivo de visualizar a estrutura do sistema fsico est estruturado. Em seguida, passamos para a etapa de coleta de
dados, coletando as frequncias de sada de bobinas de ao pr-pintadas da linha de produo, dadas pelo intervalo de
tempo de produo de cada bobina esta informao permite definir os intervalos entre chegadas das bobinas nas
Captulo 8: E s t u d o s d e C a s o | 134
operaes subsequentes pintura26. Os valores medidos, divididos em 7 classes distintas, esto representados na Tabela
8.1 e na Figura 8.2.
40%
Percentual da amostra
30%
20%
10%
0%
10 20 30 40 50 60 70
Ocorrncias
O modelo proposto para o estudo mostrado na Figura 8.3. O processo comea com a sada das bobinas de ao da
linha de pintura, onde existe um espao, chamado de bero. Pelo fato de existirem duas modas no histograma de
frequncias mostrado na Tabela 8.1 (ou seja, dois valores mais frequentes, nos blocos de 20 e 40 minutos), no
possvel obter uma distribuio de probabilidades contnua adequada ao processo de chega. Assim, optamos por
representar o processo de chegadas por meio de uma distribuio discreta (Probability Profile).
Uma caracterstica importante da operao da linha que o bero tem capacidade para receber at 3 bobinas. Assim,
caso o bero esteja cheio (ou seja, com 3 bobinas), a sada de uma quarta bobina da linha impossvel. Como a operao
de pr-pintura contnua, esta limitao do bero pode causar paradas na linha.
26Na verdade, o processo apresenta maior complexidade do que o descrito neste caso. Foram seguidos todos os
passos da metodologia de simulao, cujos detalhes no fazem parte do foco deste livro. Por esta razo, a descrio
desta etapa do estudo est, propositadamente, simplificada.
Captulo 8: E s t u d o s d e C a s o | 135
Uma ponte rolante responsvel pela movimentao e manuseio das bobinas de ao desde a sada da linha de pr-
pintura at o seu destino final. Assim, a ponte rolante representada como um recurso associado a todos os Activities
do modelo: Aps serem retiradas do bero, 70% das bobinas so encaminhadas ao centro de servios (onde sero
cortadas em placas para serem vendidas com maior valor agregado), enquanto 30% das bobinas seguem para a rea de
embalagem, onde sero devidamente protegidas contra os efeitos da oxidao antes de serem enviadas para o cliente
final. Note que, neste caso, a ponte rolante deve continuar alocada at o final do processo de embalagem.
Existe outro ponto de entrada de bobinas no modelo (identificado na Figura 8.3 como Chegada de Veiculos), que
representa a chegada de bobinas de uma segunda planta, via transporte rodovirio, para serem cortadas no centro de
servios. Analogamente ao que acontece aps a sada da LPC, aps a armazenagem, 30% das bobinas seguem para o
carregamento e 70% para o centro de servios.
A Tabela 8.2 mostra as distribuies de probabilidades usadas em cada Activity e ponto de entrada do modelo. O
processo de carregamento no pde ser caracterizado a partir de dados reais. Assim, optou-se por utilizar a distribuio
Average, em concordncia com os engenheiros da empresa. As distribuies matemticas dos tempos de operao dos
demais Activities foram obtidas a partir de dados reais, processados em um software de ajuste de curvas (vide Apndice
I). As ordens de prioridade dos processos na alocao da ponte rolante so: Retira do Berco prioridade = 100;
Descarrega Veiculos prioridade = 75; demais processos prioridade = 50 (valor padro do SIMUL8). O processo
de retirada do bero considerado o mais crtico, devido ao seu limite de armazenamento.
Processo Distribuio
LPC Probability Profile
Retira do Berco Fixed(0)
Embalagem Lognormal(3,5; 0,604)
Armazenagem Exponencial(4,22)
Carregamento Average(30)
Abastece Centro de Servicos Lognormal(3,7; 1,1)
Descarga de Veiculos Fixed(100)
Chegada de Veiculos Exponencial(240)
Nesta seo, discutiremos detalhes sobre a construo do modelo de simulao proposto para o estudo. Na sequncia
do texto, vamos considerar que o leitor que construiu o modelo j inseriu os objetos e ligaes ilustradas na Figura 8.3
e garantiu que os tempos de desolcamento (Travel times) sejam nulos (Seo 1.5.1). Portanto, faltam apenas as
configuraes dos objetos e outros detalhes. Vamos a eles.
Captulo 8: E s t u d o s d e C a s o | 136
a) O intervalo entre chegadas do Start Point chamado LPC deve respeitar a distribuio de probabilidade ilustrada na
Figura 8.2 (a Seo 3.2 descreve este tipo de operao). Note que o SIMUL8 usa o ponto como separador decimal, ao
invs da vrgula.
b) Crie um label numrico chamado lbl_Destino e o atribua a cada entidade que entra no modelo, com valores que
respeitem a distribuio de probabilidades ilustrada na Figura 8.4 (Dist_destino).
c) O Activity Retira do Bero tem como nica finalidade separar as bobinas segundo seu destino. Portanto, sua
operao deve ter tempo igual a zero (com distribuio Fixed) e seu direcionamento de sada (Routing Out) deve ser do
tipo label, como ilustrado na Figura 8.5. Observe que o primeiro destino da lista de destinos de sada (Embalagem)
receber 30% das bobinas, conforme a descrio do problema.
d) Repita as operaes anteriores para que as bobinas recebidas da segunda planta (Start Point Chegadas de veculos)
sejam direcionadas corretamente pelo Activity Armazenagem.
e) Note (Figura 8.3) que no existe uma fila entre os processos Retira do Bero e Embalagem e entre os processos
Retira do Bero e Abastece Centro de Servios. Isto foi feito porque o mesmo recurso (ponte rolante) ir executar
os dois processos, de forma sequencial. Para que isso acontea, o recurso ponte rolante no pode ser liberado aps o
termino do processo Retira do Bero, mas sim, aps o processo Embalagem. Para tanto, ajuste os parmetros dos
recursos nos Activities Retira do Bero e Embalagem como indicado nas Figura 8.4 e Figura 8.5 (para detalhes
sobre a configurao de recursos, veja a Seo 4.4).
Captulo 8: E s t u d o s d e C a s o | 137
Figura 8.6 - Parmetros do recurso no processo "Retira do Bero". Figura 8.7- Parmetros do recurso no processo "Embalagem".
O ajuste destas configuraes foi discutido nas Sees 1.5.2, 1.5.3 e 1.8. Os resultados de interesse do modelo esto
apresentados na Tabela 8.3 (a Seo 1.7 discute a criao de relatrios de resultados). Para melhor fundamentar a
tomada de deciso, foram considerados 3 cenrios, descritos a seguir.
Cenrio 1: Modelo da operao atual. A simulao deste cenrio serviu para que fossem identificados os gargalos do
sistema e os possveis pontos de melhorias. Como se pode observar nos resultados da simulao (Tabela 8.3), o bero
chega a acumular um valor mximo de 5,1 bobinas (o valor no inteiro por representar a mdia de 20 replicaes).
Como o bero comporta at 3 bobinas, sob pena de uma parada na produo, este resultado preocupante. O fato de
a ocupao mdia do bero ser de 0,8 bobinas traz uma falsa noo de que o bero tem capacidade suficiente para
manter a linha de produo ativa. Uma anlise mais profunda pode ser feita atravs do grfico de comportamento da
fila do bero (Figura 8.8), onde podemos observar que a fila contm mais do que 3 elementos em vrios momentos da
simulao. Um segundo problema que se pode observar nesta simulao o tempo de espera para o descarregamento,
que pode chegar a cerca de 422 minutos (aproximadamente 7 horas!). Por fim, pode-se observar que a ponte rolante
possui uma alta taxa de utilizao, em torno de 87%. Para melhorar o desempenho do sistema foram consideradas
Captulo 8: E s t u d o s d e C a s o | 138
duas opes: a compra de uma nova ponte rolante ou uma modificao no processo. Estas opes sero detalhadas
nos Cenrios 2 e 3, descritos a seguir.
Cenrio 2: Duplicao da capacidade de movimentao pela adio de uma ponte rolante27. Analisando os dados de
sada da simulao feita sob estas condies (Tabela 8.4), vemos que a ocupao mxima do bero passou a ser de 2,35
unidades, ou seja, menor do que o limite de 3 bobinas. Apesar de o tempo mximo de fila dos veculos para
descarregamento diminuir para cerca de 333 minutos, o valor ainda alto para o desempenho esperado na referida
operao. Por outro lado, neste cenrio, as pontes rolantes ficam em utilizao somente 41,6% do tempo.
27 Na prtica, alm da ponte rolante adicional, seria preciso contratar 5 funcionrios para operar o equipamento.
Captulo 8: E s t u d o s d e C a s o | 139
Cenrio 3: Eliminao do processo de descarga dos veculos para o abastecimento do centro de servios. Na prtica,
esta atividade poderia ser desviada para outro ponto da empresa, cuja ponte rolante possui baixa utilizao. Neste
cenrio, mantida somente uma ponte rolante executando todas as atividades, exceto o processo de descarga de
veculos. Os resultados obtidos para o modelo sob esta condio (Tabela 8.5) indicam que a fila mxima no bero fica
entre 2,84 e 3,05 bobinas. Ou seja, ao longo de um grande nmero de simulaes existe a chance de que a fila ultrapasse
o limite de 3 bobinas, como pode ser observado no grfico da Figura 8.9. Nesta rodada de 20 replicaes, no entanto,
a capacidade do bero nunca bobinas foi ultrapassada28, portanto, no haveria parada da linha de pintura por conta de
falta de espao no bero.
A princpio, pode-se imaginar que o Cenrio 2 o ideal, pois a fila mxima no bero fica sempre abaixo de 3 bobinas,
enquanto para o Cenrio 3, eventualmente, ocorrer um ruptura da capacidade mxima do bero. Para uma anlise
mais profunda da situao temos que calcular o investimento necessrio para a implantao de cada cenrio.
Cenrio 2: Investimento estimado de cerca de R$ 3,5 milhes para aquisio de uma nova ponte rolante
alm de 5 novos operadores, com custo anual de mo de obra estimado em R$ 108.000,00;
Cenrio 3: No necessrio nenhum investimento para efetuar a alterao da descarga, uma vez que j
existem possuem operadores disponveis para desempenhar esta nova atividade.
Logo, o Cenrio 2 seria a ltima opo a ser adotada, at porque aumentaria a ociosidade da ponte rolante, alm,
claro, do alto valor a ser investido. Assim, entendemos que o Cenrio 3 o que apresenta melhor atratividade para a
empresa.
Para um melhor entendimento da prtica de simulao, sugerimos as seguintes alteraes no modelo original.
a) Considere que houve uma ampliao na linha de pintura, que fez com que a taxa de chegada de bobinas fosse
triplicada. Estime a quantidade de pontes rolantes necessrias (critrio: ocupao mxima do bero) e analise os demais
indicadores de desempenho do modelo (vide Tabela 8.4).
b) A partir do Cenrio 1, crie um recurso unitrio chamado Doca, que ser utilizado tanto no carregamento quanto
no descarregamento dos veculos. Como isso afeta os resultados de sada da simulao?
c) Modifique as ordens de prioridade do modelo e verifique o que acontece com o desempenho do sistema.
Captulo 8: E s t u d o s d e C a s o | 141
8.3.1. Introduo
Este caso se refere a uma aplicao de simulao na rea de servios profissionais relativos ao suporte/consultoria de
uma soluo de ERP (Enterprise Resource Planning). Este caso tem claramente os atributos de um servio profissional
clssico: baixo volume de clientes atendidos por dia; elevado grau de customizao, nfase em pessoas (e no em
equipamentos), nfase nas atividades de front office e alta intensidade de contato com os clientes. Para o propsito
deste captulo, este caso complementa os comentrios desenvolvidos no anterior, orientando o leitor quanto s
especificidades do processo de modelagem e simulao na rea de servios.
A literatura sobre simulao rica em aplicaes sobre manufatura e logstica (o caso anterior era exatamente sobre
isso), mas h poucas aplicaes na rea de servios. Paradoxalmente, na atualidade, os servios representam algo
prximo de 75% do PIB dos pases desenvolvidos - no caso brasileiro, j se aproxima de 70% do PIB. Portanto,
servios so cada vez mais essenciais na gerao de riqueza.
Desta forma, foi possvel propor melhorias em termos de recursos (humanos e tecnolgicos) e de processo para reduzir
os gargalos (filas) no atendimento dos pedidos de suporte.
Especializada na implantao, desenvolvimento e suporte dos mdulos do software de gesto integrada, a empresa aqui
estudada possui vrios departamentos que atuam de forma complementar, cabendo a cada um deles a responsabilidade
de um processo particular. Neste caso, vamos analisar exclusivamente o departamento que presta suporte para
problemas no ERP. Desta forma, temos uma plataforma online em que os clientes (previamente cadastrados para
acesso) solicitam suporte, gerando pedidos que so organizados em vrios chamados, cada um com um nmero
especfico de controle. Alm disso, o suporte designado para equipes especializadas de cada mdulo do ERP.
semelhana das empresas que prestam servios para grandes provedores de solues de ERP, a empresa analisada
tambm depende de informaes e certificaes para que o suporte seja feito. Desta forma, a empresa provedora da
soluo possui amplo controle sobre as empresas que prestam servios sob sua chancela.
Para melhor entender a ilustrao desenvolvida neste caso, vejamos resumidamente os principais mdulos do sistema
ERP aqui analisado:
MM: a sigla para Material Management (Administrao de Materiais). Este mdulo atua sobre o processo de
compras de suprimentos, gesto e manuseio da chegada de materiais, controle de chegadas, conferncia de
faturas e todos os processos que versam em torno da entrada de materiais ou importao dentro da
organizao, atravs da automatizao e integrao com a cadeia de suprimentos, mais especificamente,
com a logstica de suprimentos;
SD: a sigla para Sales and Distribution (Venda e Distribuio). Este mdulo do ERP atua sobre a logstica
de distribuio, ou seja, o processo de sada do produto acabado da empresa. Tambm integrado com os
outros mdulos, este acompanha as notas fiscais, pedidos de remessas, quantidade produzida e vendida e
integrado diretamente com clientes que tambm utilizam o ERP;
Captulo 8: E s t u d o s d e C a s o | 142
O processo estudado caracterizado pelo atendimento a pedidos de suporte pelos clientes. O processo mapeado no
complexo, uma vez que o atendimento segue um processo quase linear. O que dificulta o mapeamento o
desmembramento do processo do atendimento em vrios mdulos, cada qual com sua respectiva fila no atendimento.
As etapas do processo e os mdulos suportados so descritos a seguir.
Pedido de Suporte: quando o cliente detecta algum problema no sistema ERP, aciona o pedido de suporte
pela internet, criando um pedido diretamente para o atendimento referente ao suporte.
Triagem: quando o chamado aberto, a equipe de diagnstico recebe as informaes fornecidas pelo
usurio da empresa em que o problema que ocorreu e faz uma anlise para determinar para qual equipe de
suporte deve ser direcionada para o pedido.
Anlise: a anlise feita pela triagem leva em considerao a gravidade do chamado, a quantidade de
informaes e os consultores disponveis para atendimento. Desta forma, o tempo de triagem se justifica
atravs da necessidade de coleta destas informaes e, s vezes, de contato com o cliente para a obteno
de informaes complementares.
Deciso (Mdulos): aps a anlise, os funcionrios da triagem devem direcionar o pedido para algum
consultor que tenha o conhecimento necessrio para a prestao do suporte.
MM: quando o pedido de suporte for referente entrada de suprimentos na empresa, com relao a algum
erro dentro do sistema ERP, como pedido de mercadoria, nota fiscal de entrada, empresas cadastradas, ou
qualquer outro problema. O chamado repassado para um consultor de MM, responsvel por analisar e
propor uma soluo, que ser documentada para posterior entrega ao cliente.
FI: o procedimento anterior ocorre para FI (e para CO). O consultor faz o diagnstico referente s
competncias do mdulo e documenta a soluo.
SD: igual aos itens anteriores, s que aplicado sincronizao do ERP com os processos de logstica de
sada (distribuio).
BASIS: o BASIS tambm tem seus chamados atribudos quando chegam. Por isso possui alto volume de
demanda, uma vez que presta suporte estrutural para a manuteno do ERP.
Documentao: quando as solues so encontradas, o consultor precisa documentar a soluo em um
formulrio eletrnico (como se fosse um plano de ao) e envi-la para que o cliente corrija o problema, ou
ele mesmo pode fazer a alterao remotamente, caso seja autorizado. Mesmo nestes casos, o consultor deve
realizar a documentao da soluo, para otimizar futuros processos.
Especialistas (2 nvel de atendimento): caso o problema no seja solucionado, o chamado
encaminhado para um grupo de suporte especialista, que reinicia o atendimento, seguindo o mesmo
procedimento anterior, utilizando mais critrio na anlise do chamado.
Captulo 8: E s t u d o s d e C a s o | 143
Encerramento: caso o pedido seja resolvido por um consultor normal ou pelo especialista, aps a soluo
ser documentada e aplicada/apresentada, o chamado fechado e o processo analisado se encerra.
Os principais dados coletados foram os tempos de atendimento dos chamados de suporte (SD, BASIS, MM e FI).
Com o processo mapeado, necessrio dispormos dos dados principais que serviro com parmetros para o
funcionamento da simulao. Os processos seguem as distribuies de probabilidade descritas na Tabela 8.6 (todos os
tempos esto em minutos).
Processo Distribuio
Chegada Exponencial(10)
Triagem Triangular(0.5,1, 1.5)
Atendimento Basis Normal(30, 7.5)
Atendimento SD Normal(32, 9)
Atendimento MM Normal(51, 15)
Atendimento FI Normal(35,10)
Documentao (todas) Triangular(15, 30,45)
Especialista Triangular(30,60,90)
Alguns dados foram modelados usando o Stat::Fit (vide Apndice I), enquanto outros, como a triagem, atendimento
de especialista e preenchimento da documentao foram estimados com base em entrevistas com os consultores.
Nestes casos, a experincia dos envolvidos no processo permitiu uma inferncia que se aproxima o suficiente da
realidade.
De forma resumida, o processo comea com a chegada de um pedido de suporte, que classificado em um dos dois
postos de triagem disponveis, e enviado para um consultor do mdulo (FI&CO, MM, SD, BASIS). Como o BASIS
no um mdulo propriamente dito, qualquer consultor pode atender pedidos de suporte para o BASIS. Aps o
atendimento, se o consultor conseguir resolver o problema do cliente, ele dever preencher um relatrio da soluo.
Para efeitos de modelagem, o mesmo consultor deve atender o cliente e fazer o relatrio. Caso o consultor no resolva
o problema do cliente, o pedido de suporte ser enviado a um especialista. A distribuio de suporte para o BASIS, FI,
MM e SD uniforme, ou seja, 25% para cada.
Portanto h 5 recursos diferentes: BASIS, FI, MM, SD e especialistas. Os recursos MM, SD e FI podem atender o
processo BASIS. Existem 3 consultores para cada recurso (FI, MM e SD) e 2 especialistas.
Historicamente, as porcentagens de chamados que precisam passar pelos especialistas so 4%, 7%, 12% e 5%, para os
mdulos BASIS, FI, MM e SD, respectivamente.
Uma das medidas de desempenho mais importantes neste modelo o nvel de servio da espera (nas filas de triagem
e dos processos de atendimento BASIS, MM, FI e SD), medido em termos da porcentagem de clientes que esperam
menos de 5 minutos.
a) Represente as porcentagens de chamados que devem ser encaminhados aos especialistas aps a triagem (opo
Routing Out - Percent).
b) Crie 5 recursos (consultores dos mdulos BASIS, MM, FI, SD e especialistas) e os associe aos respectivos Activities.
c) Lembre-se que os consultores dos mdulos especficos (MM, SD e FI) tambm tm formao para atender o
mdulo BASIS. Isto deve ser modelado por meio de um pool de recursos (Pool Resource) chamado Rec Basis, com os
recursos FI, MM e SD como componentes (Figura 8.11). Este recurso o que ser associado ao Activity do processo
BASIS.
d) Como qualquer consultor pode fazer a triagem, associe o recurso Rec Basis ao Activity Triagem29. Faa, ainda,
com que este Activity adicione um label numrico (Modulo), com valor definido por probabilidade uniforme entre 1
e 4 para identificar o tipo de pedido de suporte (BASIS, FI, MM ou SD).
e) Lembrando: o mesmo consultor que fez o atendimento deve fazer o relatrio. Portanto, este recurso (consultor)
deve ser liberado somente aps o respectivo processo de documentao: a opo de alocao dos recursos nos Activities
de atendimento (BASIS, FI, MM e SD) deve ser do tipo Require here but do not Release the Resource. Contudo, isto causa
um problema na modelagem dos pedidos de suporte que vo para o especialista, pois, nestes casos, o consultor deve ser
liberado. Para isso, usamos um Activity fantasma (tempo de operao fixo e igual a zero) chamado Libera Recurso,
cuja nica funo como o nome indica liberar o recurso alocado (opo de alocao:Only Release the Resource here).
Como as entidades que chegam neste Activity carregam recursos diferentes, devem ser haver uma forma de
identificao para que a liberao seja feita corretamente. Assim, necessrio habilitar a opo Select resource by Label e
indicar o nome do label (Modulo) nas opes de alocao de recursos do Activity (Figura 8.12).
f) Ajuste a propriedade Replicate de cada Activity para 20, como mostrado na Figura 8.13. Como o nmero de
consultores sempre menor do que este valor, o modelo funcionar adequadamente e ser flexvel, como discutimos
na Seo 5.4. A maneira mais elegante de fazer isto, no entanto, seria utilizar a opo dos recursos Auto Adjust Replicate
Levels. A nica exceo o Activity Triagem, que dever ter Replicate = 2, j que existem apenas dois postos de triagem;
g) No se esquea de que os recursos devem ser liberados aps os processos de documentao (opo Only Release
the Resource here).
Assim como no caso anterior, vamos avaliar os resultados da simulao da situao atual antes de avaliar cenrios de
melhoria.
Cenrio 1 Cenrio-base: Os resultados deste cenrio esto representados na Tabela 8.7. Pode-se observar que
existe uma fila na triagem, com espera mdia (dos clientes que esperam) de 9,65 minutos, com um pico de 48,97
minutos. Neste tipo de sistema, o cliente est muito pouco inclinado a esperar para ser atendido e exige um alto nvel
de servio, uma vez que o no atendimento gera uma parada ou reduo do volume e da qualidade do servio
prestado. As filas para os atendimentos para os mdulos (FI, MM, SD) tambm apresentam um alto grau de espera,
com valores mdios maiores do que os da triagem. A fila para o mdulo BASIS a nica que possui espera
relativamente baixa: 6,40 minutos. Assim, fica evidente que h falta de recursos. Esta concluso comprovada pela
Tabela 8.8, onde vemos que os consultores dos mdulos FI, MM e SD ficam, respectivamente, 82,34%, 57,79% e
68,91% do tempo ocupados, enquanto o consultor MM fica ocioso durante cerca de 42% do tempo (utilizao mdia
de 57,79%).
Captulo 8: E s t u d o s d e C a s o | 147
Cenrio 2 Treinamento: Neste cenrio, foi simulada a possibilidade de que os consultores pudessem atuar em mais
de um mdulo (por exemplo, aps receberem treinamentos). Desta forma, dos 5 consultores originais atuantes no
mdulo MM, 2 foram treinados para atender o mdulo FI e outros 2 foram treinados para atender o mdulo SD. Com
isso, a configurao de consultores ficou sendo a seguinte: 3 consultores dedicados a FI, 3 consultores dedicados a SD,
1 consultor dedicado a MM, 2 consultores que servem SD e MM e 2 consultores que servem FI e MM. A
implementao deste cenrio exigiu a definio de novos pools de recursos e a incluso de Activities.
Captulo 8: E s t u d o s d e C a s o | 148
As sadas do novo modelo de simulao so mostradas na Tabela 8.9 e na Tabela 8.10. Pode-se verificar (Tabela 8.9)
que os tempos de espera para as filas de triagem e do processo BASIS permanecem aproximadamente os mesmos, o
que condizente com a descrio do cenrio, visto que no foi acrescentado nenhum recurso. Os valores mdios
associados aos tempos dos clientes que aguardam algum tempo nas filas SD e FI diminuram e o valor correspondente
da fila MM aumentou, o que tambm condizente com o cenrio, haja vista a realocao de recursos.
Nota-se, ainda, (Tabela 8.10) que a utilizao dos recursos est mais bem distribuda, com todos os valores (FI, MM e
SD) variando, aproximadamente, entre 63% e 71%. Houve uma melhoria substancial neste segundo cenrio, mas ainda
existe uma espera que, geralmente, no tolerada por este tipo de cliente, que exige altos nveis de servio. Para tanto
optou pela contratao de trs novos consultores, um para cada mdulo, situao ilustrada no Cenrio 3.
Captulo 8: E s t u d o s d e C a s o | 149
Cenrio 3 Treinamento e Contratao: Neste cenrio foi simulado o treinamento e a contratao de novos
consultores. A configurao de consultores considerada foi a seguinte: 4 consultores dedicados a FI, 4 consultores
dedicados a SD, 2 consultores dedicados a MM, 2 consultores que podem tanto atender SD como MM e 2 consultores
que podem atender tanto FI como MM.
Segundo os resultados da simulao, mostrados na Tabela 8.11, verifica-se que as esperas mdias pela triagem e pelo
processo BASIS caram praticamente pela metade em relao ao cenrio-base. As filas nos processos FI, MM e SD
tm valores mdios um pouco acima de 10 minutos, valores melhores do que os do cenrio-base, mas que ainda podem
ser considerados altos. A distribuio da carga de trabalho tambm melhorou (vide Tabela 8.12). No entanto, ainda
existem alguns pontos de pico de atendimento, como no processo MM, em que alguns clientes chegam a esperar mais
de 50 minutos pelo atendimento. A ocorrncia desses picos praticamente inevitvel, a menos que seja alocada uma
quantidade muito grande de recursos complementares.
Captulo 8: E s t u d o s d e C a s o | 150
Na prtica, mais importante do que observar a ocorrncia dos picos determinar com qual frequncia eles ocorrem.
Para isso, observe a Tabela 8.13, que mostra a porcentagem dos atendimentos que tiveram uma espera de, no mximo,
5 minutos.
Captulo 8: E s t u d o s d e C a s o | 151
Tabela 8.13 - Porcentagem mdia de clientes atendidos em menos de 5 minutos em cada cenrio.
A Tabela 8.13 mostra a evoluo do nvel de servio obtido em cada cenrio: os nveis para os processos de triagem e
BASIS estavam dentro de limites aceitveis desde o primeiro cenrio. O mdulo MM, que tinha um nvel de servio
de 87,9% no cenrio-base, teve uma queda no Cenrio 2, em que os consultores deste mdulo passaram a atender
tambm os mdulos SD e FI. No terceiro cenrio, todos os processos tiveram mais de 90% dos atendimentos com
espera abaixo de 5 minutos de espera. Estes valores podem ser usados como uma forma de inferir o nvel de servio
prestado ao cliente, pois, como dito anteriormente, o processo real aleatrio e a formao de filas no pode ser
evitada, mas sim controlada.
Monte e analise os cenrios descritos a seguir. Antes de simular, tente deduzir o impacto das mudanas.
Os especialistas tambm podem ser utilizados para atendimento aos mdulos MM, FI e SD;
Todos os consultores podem atender a todos os mdulos;
Todos os consultores tm, no mnimo, duas especialidades e alguns podem ter as trs (MM, SD e FI).
Comparando cada alternativa com o cenrio-base, qual parece ser a melhor opo? Assuma que os custos de
treinamento no so relevantes.
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 152
I.1. Introduo
O Stat::Fit um software desenvolvido pela Geer Mountain Software Corporation para ajustar um conjunto de dados a uma
distribuio estatstica adequada, um processo conhecido como ajuste de curvas ou fitting. Uma verso educacional do
software pode ser obtida gratuitamente no stio de seu fabricante30. A principal limitao desta verso est no total de
valores que podem ser avaliados (at 50) e de distribuies utilizadas no processo de ajuste (4 distribuies contnuas
e 2 distribuies discretas). As figuras mostradas neste tutorial foram criadas com a verso completa do software, mas
principais diferenas sero destacadas, quando julgarmos necessrio.
Na sequncia, apresentaremos um pequeno tutorial de uso do Stat::Fit, com base no conjunto de valores dado na
Tabela I.
I.2. Pr-processamento
Todo conjunto de dados coletados pode conter valores discrepantes, ou outliers. Estes valores, quando existirem, devem
ser removidos antes que o conjunto de dados seja inserido no Stat::Fit, j que o software no possui ferramentas para
deteco de tais valores. Para mais detalhes sobre este assunto, consulte o Captulo 2 do livro Modelagem e Simulao
de Eventos Discretos de Leonardo Chwif e Afonso C. Medina.
30 Acesse: http://www.mcssl.com/store/geermountainsoftwarecorp.
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 153
Em seguida, insira os valores dados na Tabela I.1, usando o ponto como separador decimal. A sequncia de entrada
dos valores dever ser feita por colunas (vide Figura I.2). Isto fundamental para a anlise de correlao dos dados.
I.4. Histograma
Clique no boto Input Graph para gerar o histograma do conjunto de dados (Figura ).
O nmero de classes do histograma calculado automaticamente, mas pode ser alterado clicando-se em Input | Options
(Figura I.4).
O resultado do ajuste mostrado em uma lista contendo as distribuies testadas (Figura I.7), em ordem decrescente
de preferncia. Para cada uma dada a indicao de quais so consideradas adequadas (Do not reject) ou no (Reject) para
o ajuste.
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 156
Os resultados da Figura I.7 mostram que foram testadas 13 distribuies de probabilidades, o que no
acontecer se for usada a verso estudantil do software, limitada a 6 distribuies. De qualquer forma,
as operaes descritas na sequncia funcionaro da mesma forma em qualquer verso do programa.
Clique em uma das distribuies para desenhar o grfico da curva correspondente sobre o histograma de frequncias
(Figura I.8).
Para verificar a qualidade do ajuste proporcionado pelas distribuies testadas clique em Fit | Goodness of Fit. Quanto
maior o valor do p-value associado a uma distribuio, melhor ser a qualidade do ajuste (Figura I.). De forma
simplificada, valores de p-value maiores ou iguais a 0,1 representam ajustes adequados. Por exemplo, seria adequado
considerar que o conjunto de dados da Tabela I.1 pode ser representado por uma distribuio Weibull, pois o p-value
obtido resultou igual a 0,516.
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 157
Figura I.10 - Diagrama de disperso de dados com baixa Figura I.11 - Diagrama de disperso de dados com alta correlao.
correlao.
Outra forma de se verificar se h indcios de correlao por meio do coeficiente de correlao, que deve apresentar
valores abaixo de 0,6 (quanto mais prximo de 1, maior a correlao entre os dados).
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 158
Clique em Statistics | Independence | Autocorrelation (Figura I.12) e observe que h poucos indcios de correlao entre o
conjunto de dados deste exemplo. Como a correlao pode ser positiva ou negativa, so dados dois valores para o
coeficiente de correlao (+0,216 e -0,363). Evidentemente, o maior dos valores (em mdulo) que deve ser
considerado na anlise.
Na prtica, se houver alta correlao entre os dados, deve-se utilizar mais de uma distribuio
estatstica, com base em "sub-amostras" nas quais os dados possam ser considerados independentes
entre si (por exemplo, antes e depois do almoo). Em um modelo do SIMUL8, cada uma destas
diferentes distribuies dever ser associada a uma distribuio time dependent , como discutido no
Captulo 3.
Independentemente da escolha final, o uso da distribuio no SIMUL8 depende dos valores numricos de seus
parmetros: no caso da distribuio triangular estes parmetros so o menor valor, o valor mais provvel e o valor
mximo; para a distribuio Weibull, os parmetros so: valor mnimo (quando h), parmetro de forma e parmetro
de escala. Para obter os valores dos parmetros em um formato adequado para uso no SIMUL8, clique em File | Export
| Export Fit e selecione a distribuio desejada (Figura I.13). Antes mesmo da exportao, o Stat::Fit indica que, para
o caso da distribuio Weibull, deve-se combinar uma distribuio fixa (ou seja, um valor constante) com uma
distribuio Weibull de parmetros 1,4 e 10,4. De fato, a exportao do Stat::Fit consiste apenas em copiar para a
rea de transferncia (ou arquivo de texto) uma frase como create a combination distribution with a fixed offset of 6.
then add Weibull, 1.4, 10.4. No SIMUL8, estas informaes tero que ser inseridas manualmente.
Apndice I: T u t o r i a l d e u s o d o S t a t : : F i t | 159
Isto conclui este tutorial. Outras funcionalidades do Stat::Fit podem ser consultadas em sua documentao eletrnica.
SIMULATE TECNOLOGIA DE SIMULAO LTDA.
simulate@simulate.com.br
www.simulate.com.br