Introdução à Simulação
12 INTRODUÇÃO À SIMULAÇÃO
12.1 INTRODUÇÃO
A palavra simulação, tem sua origem nos trabalhos de Von Newmann e Ulam em 1940,
quando eles associaram a expressão Análise de Monte Carlo. Actualmente a simulação de
um sistema é a operação de um modelo que o representa. O modelo permite manipulações
que seriam inviáveis no sistema real.
A simulação sempre foi usada pela humanidade como forma de representar os processos
relativos aos sistemas onde as pessoas viviam por meio de esculturas, pinturas e todas as
formas de representação de ideias. Actualmente, a ciência utiliza os modelos como uma
etapa de analise e correcção através da redução e ampliação de escalas. " existem modelos
em escala reduzida como barragens, fotografias, edifícios etc.; modelos de aviões para
estudos de aerodinâmica; modelos analíticos de processos físicos ou mentais ".
Segundo Davies, R et all (1948), a simulação é usada com três objectivos fundamentais:
- Comparação: faz a comparação dos resultados obtidos na simulação através da mudança
das variáveis de decisão com os objectivos da operação do sistema real.;
- Previsão: previsão dos resultados, para determinar o nível da realização dos esforços
para alcançar a performance desejada.
- Investigação: serve como um método para investigar o desenvolvimento e
funcionamento dos sistemas para se saber se este está no sentido normal ou anormal.
2) Simulação contínua: é usada para modelos de sistemas que operam com variáveis
contínuas ao longo do tempo em sistemas dinâmicos e as vezes em sistemas
determinísticos ou estocásticos
.
3) Simulação discreta: consiste na modelação de sistemas que podem ser representados
por uma série de eventos. A simulação neste caso, descreve estes eventos discretos,
movimentos ao longo do tempo.
Muitas razões podem ser enumeradas para justificar o uso da simulação em administração.
Entre elas podemos destacar.
a) Por ser impossível ou muito difícil observar directamente certos processos no mundo
real;
b) O sistema observado pode ser tão complexo que se torna impossível descrevê-lo em
termos de um conjunto de equações matemáticas de solução analítica viável.
c) Mesmo sendo possível desenvolver um modelo matemático do sistema em foco, a sua
solução pode ser muito trabalhosa e pouco flexível.
c) A simulação pode servir como um primeiro teste para se delinear novas políticas e
regras de decisão para a operação de um sistema, antes de experimentar no sistema real.
Identificação das variáveis - como primeiro passo da modelagem, devem ser identificadas
as variáveis do problema. A escolha de um conjunto de variáveis é muito importante para a
qualidade do modelo, ou melhor é fundamental que todas as variáveis importantes sejam
incluídas no modelo de forma que os resultados do modelo sejam confiáveis.
De um modo geral identificam-se duas classes de variáveis relevantes:
a) Variáveis controláveis (endógenas) - são variáveis que representam aspectos de interesse
do sistema que foram identificados no primeiro passo, bem como as que são calculadas
dentro do modelo, para chegar à solução final.
b) Variáveis não - controláveis (exógenas) - são variáveis que representam valores
importantes determinados por influências de fora do sistema, mas que influem na tomada de
decisão.
F o r m u la c a o d o p r o b le m a
R e c o lh a d e d a d o s
I n d e n t ic a c a o d a s v a r ia v e is
F o r m u la c a o d o m o d e lo
M o d e lo R e je i t a d o
A v a li a c a o d o m o d e l o
M o d e l o a c e it e
F o r m u la c a o d o p r o g a r m a d o
c o m p u ta d o r
T e ste d o p ro g ra m a
R e a l iz a r a s i m u la c a o
Formulação do modelo - esta é a etapa mais difícil do processo de simulação e que deve
ser realizada com mais cuidado. A dificuldade decorre do facto de que, na construção de
modelos, é exigida tanto arte quanto técnica, para que eles representem bem os sistemas,
levando em conta todas as relações importantes, tanto entre as variáveis internas, como entre
este e o meio ambiente que o cerca. Conhecidos os objectivos, os dados disponíveis e as
variáveis do processo, a construção do modelo consiste na formulação de equações que
devem representar as inter-relações do sistema e no estabelecimento de limites de variação
dos resultados e valores.
Avaliação do modelo - uma vez construído o modelo é necessário saber se ele atende aos
objectivos da simulação, representando correctamente o sistema em estudo. Os testes com o
modelo devem abranger também os dados, de forma a verificar sua consistência.
Um algoritmo é uma descrição de forma ordenada, com clareza e rigor, das operações que
se pretendem realizar em computador para resolver um problema.
Os estudos de simulação, são de um modo geral muito complexos, e estão orientados para o
computador, até um certo ponto exigindo uma programação bem detalhada. O que requer
um certo domínio das linguagens de programação em especial das linguagens de simulação
como GPSS, SIMSCRIPT, SIMPAC e GASP.
Teste do programa - esta é a fase de ajustar o programa - modelo, geralmente com poucos
dados e manualmente ou não para verificar se os resultados obtidos do programa
correspondem aos esperados. (Se o programa pode executar com eficiência uma dezena de
dados, então provavelmente será funcional para mais dados sem defeitos significativos) a
última fase será explicada a diante.
Vamos analisar dois exemplos que exemplificam a técnica de modelação para a simulação.
Lembra-se desde já, que não existem regras muito rígidas na definição e construção de um
modelo de uma forma inequívoca, se não a própria lógica das variáveis do problema e todas
as operações facilitadas pelo conhecimento específico do problema focalizado.
a) Formulação do problema
Uma empresa revendedora de pneus, trabalha com um certo tipo, cuja demanda diária é de
40 pneus em média, com distribuição dada pela tabela 12.1. O contrato do revendedor com a
fábrica garante uma entrega semanal de 240 unidades (semana de seis dias úteis). Porém o
fabricante está tendo dificuldades de transporte, o que acarreta possíveis atrasos na entrega.
A experiência tem mostrado que o atraso médio é de 2 dias, com uma distribuição de
probabilidades mostrada na tabela 12.2. O objectivo do revendedor é simular seu sistema de
stock de forma a analisar a política de recebimento, face aos problemas de transporte do
fabricante.
- Custos de falta
* Cada pneu que deixa de ser vendido, por falta de stock, representa um prejuízo de 80 u.m.
Também a quantidade de pneus que o fabricante entrega por semana é uma variável
dependente, que pode ser alterada de forma a modificar o comportamento do sistema de
stock.
d) Formulação do modelo
Condicoes iniciais
stock iniciao
calendario = 1
A
Gerar demanda
Calcular demanda do
stock
Sim
stock < 0 ? calcular custo de falta
Nao
Calendario = 1 Nao
semana ?
Sim
Estabelecer data de
entrega
Actualizar calendario
Data de entrega
FIM
foi atingida ? Sim stock=stock+reposicao
Nao
Retomar o ponto A
a) Formulação do problema
Deseja-se estudar a operação de uma cabina telefónica com a finalidade de planear sua
expansão. O funcionamento do sistema é o seguinte:
O cliente chega e ocupa a cabina desocupada. Se estiver ocupada, ele deve esperar na fila,
não sendo analisada a hipótese de sua desistência. Quando alguém sair, o primeiro da fila
entra imediatamente.
b) Dados
Através de levantamentos estatísticos realizados com uma determinada cabina, sabe-se que a
chegada dos clientes obedece à distribuição de Poisson, com média de 18 chegadas por hora.
O número médio de telefones efectuados numa cabina, por hora, é igual a 20, e cada
telefone tem a duração média de 3 minutos, sendo esta uma variável aleatória que segue a
distribuição exponencial negativa.
c) Identificação de variáveis
* Chegada de clientes;
* duração das chamadas.
c) O modelo
condicoes iniciais
Sim
O ultimo da lista ?
Fazer
Ultimo=1 Nao
Ocupada
Testar estado da cabina
Incrementar o relogio
Nao
terminou a chamada?
FIM
Os modelos de simulação têm como objectivo imitar o funcionamento dos sistemas reais. É
por isso que qualquer modelo antes de ser posto em funcionamento deve ser analisado
cuidadosamente por uma equipa ou por especialistas na área.
A validação de um modelo é uma das fases mais difíceis da simulação, onde o trabalho se
resume na comparação dos custos do modelo real e do simulado quer ao nível dos
construtores quer para os utilizadores.
4. Simplicidade - um modelo de simulação para que seja compreendido deve ser simples.
Se o fenómeno a estudar é muito complexo ele poderá ser decomposto em módulos,
procedimentos ou funções mais simples de compreender, de tal modo que os utilizadores
não necessitem de muita tradução para a sua utilização.
O termo simulação Monte Carlo, é retirado do nome de um famoso casino europeu onde
eram realizados jogos de sorte ou azar. Actualmente o termo, simulação Monte Carlo, é
aplicado a problemas de simulação em que é utilizado um processo aleatório para gerar
ocorrências num determinado sistema.
a) Conceito fundamental
O método Monte Carlo baseia-se num conceito estatístico muito simples, vejamos:
Seja x uma variável aleatória com as seguintes características:
• f(x) - função de distribuição de probabilidades;
• F(x) - função acumulada de probabilidades, com F(x) = f(x)dx para distribuições
contínuas é igual a função de partição das distribuições discretas.
Se definirmos uma nova variável aleatória y = f(x), esta tem uma distribuição uniforme
sobre o intervalo fechado (0,1). Assim, como a função acumulada de probabilidades
representa as características aleatórias da variável em questão, a função y = f(x) é uma
relação entre duas variáveis:
• variável x, com distribuição aleatória própria;
• variável y, com distribuição uniforme, entre 0 e 1.
b) Procedimento
Exemplo 12.3. Seja a variável aleatória x dada na tabela 12.3 com função de distribuição de
probabilidades f(x) distribuída segundo a lei de Poisson, portanto uma função discreta,
(coluna 2). A coluna 3 mostra a função acumulada de probabilidades.
λx * e −λ
Então f ( x) = se λ for igual a 2, variando x de 0 até 10, recebemos os valores da
x!
função densidade e função acumulada de probabilidade, ver tabela 12.3.
.3
funcao densidade de prob. - f(x)
.3
.2
.2
.1
.1
0.0
0 1 2 4 5 6 7 8 9 10
Variavel aleatoria - X
0.6767 B
.6
.4
A
.2
-2 0 2 4 6 8 10 12
Variavel aleatoria - X
As figuras 12.4 e 12.5, mostram as duas curvas, com x distribuído segundo a lei de Poisson
com média 2 e y tem distribuição uniforme no intervalo 0 e 1. F(x) ilustra esta situação.
Para achar a probabilidade de obter um valor da variável aleatória pelo método de Monte
Carlo deve:
• sortear um número aleatório no intervalo (0,1), por exemplo 0.65 é sorteado.
• o número 0.65 na coluna 3 da tabela 12.3, pertence a probabilidade acumulada 0.6767
para a variável y e que corresponde a 2 no eixo x.
Concluindo, pode-se ver que a probabilidade de achar o valor 2 para a variável x, pelo
método de Monte Carlo é dada pelo segmento AB e é igual a 0.2707 coluna 2 da tabela 12.3.
Os modelos de simulação têm como objectivo imitar o funcionamento dos sistemas reais. É
por isso que qualquer modelo antes de ser posto em funcionamento deve ser analisado
cuidadosamente por uma equipa ou por especialistas na área.
A validação de um modelo é uma das fases mais difíceis da simulação, onde o trabalho se
resume na comparação dos custos do modelo real e do simulado quer ao nível dos
construtores quer para os utilizadores.
4. Simplicidade - um modelo de simulação para que seja compreendido deve ser simples.
Se o fenómeno a estudar é muito complexo ele poderá ser decomposto em módulos,
procedimentos ou funções mais simples de compreender, de tal modo que os utilizadores
não necessitem de muita tradução para a sua utilização.
Os métodos manuais são muito trabalhosos e não são muito práticos, salvo para fins
ilustrativos, e mesmo assim requerem o uso de roletas, baralho de cartas, bolas em uma
urna, lançamento de uma moeda honesta ao ar, etc.
Para gerar um "número aleatório ", podem ser usados programas de computadores com
funções apropriados de acordo com a linguagem de programação. Por exemplo em Pascal a
função "RANDOM" é usada para gerar números pseudo - aleatórios, bastando indicar um
número como argumento da função, por exemplo:
numero := random(12);
Esta instrução faz com que a variável "numero", seja atribuída um valor entre 0 a 12
(incluindo o 0 e excluindo 12).
Nota: A função RANDOM, deve ser aplicada num programa pascal e correr num
compilador pascal, ela devolve, efectivamente, um número pseudo - aleatório gerado numa
sequência interna pelo processador. O procedimento RANDOMIZE é usado juntamente
com a função random para inicializar a sequência aleatória.
I n ic io
Ler N
i = 1
x = r a n d o m ( i)
escrever x
i = i + 1
N ao
i > N
S im
F im
Program aleatorio;
{* programa que gera uma sequência de números aleatórios *}
Var i, x, n : integer; {* declaração de variáveis *}
Begin {* inicio do programa *}
write('Introduz o numero n = ');
readln(n);
for i:= 1 to n do {* ciclo for *}
Begin
randomize; {* inicialização da sequência*}
x:= random(i); {* função geradora *}
write(x); {* escreve o numero aleatório*}
write(' ; '); {* separador dos números *}
end;
readln;
end. {* fim do programa *}
Observação:. Uma outra rotina que gera números pseudo - aleatórios é a que é dada pelo
método de congruência multiplicativas, que se baseia na função MOD. Por exemplo se
escrever:
r := 48 mod 10;
recebemos o resto da divisão inteira entre 48 e 10, isto é (40+8)/10 = 8, e 8 seria o número
gerado. Para gerar mais números bastava usar recursivamente a função, resumindo-se na
equação:
Procedimento
• seja a semente r(o), com k dígitos, onde k usualmente é par;
• eleva-se r(o) ao quadrado;
• toma-se os k dígitos centrais de r²(o), que formarão o r(1);
• repete-se o processo de forma que r(n) seja extraído dos k dígitos centrais de r²(n-1). Se
houver necessidade, podem-se incluir zeros à esquerda de r²(n-1) de forma que r(n)
tenha sempre k dígitos.
Observação.
1. Foi introduzido um 0 à esquerda para que r1 tivesse os 4 dígitos centrais.
2. A escolha do número dos dígitos centrais depende da semente.
3. A desvantagem deste método é que os números aleatórios podem formar ciclos após
pequenas sequências.
Exemplo 12.5. Dada a semente r(o) = 74, formar uma sequência de 5 números aleatórios.
Resolução
r(o) = 74, donde r²(o) = 5476
r(1) = 47, donde r²(1) = 2209
r(2) = 20, donde r²(2) = 0400
r(3) = 40, donde r²(3) = 1600
r(4) = 60, donde r²(4) = 3600
r(5) = 60, donde r²(5) = 3600
A simulação Monte Carlo, requer números aleatórios para obter observações aleatórias de
uma distribuição de probabilidades. Gerar uma sequência de números sempre que for
necessário seria uma actividade rotineira sem necessidade. Além disso, já está claro que os
números gerados por procedimentos computacionais não são verdadeiramente aleatórios
"são pseudo - aleatórios", e os processos manuais carecem de honestidade. Portanto uma
maneira de contornar este problema é o uso de tabelas de números aleatórios que se
encontram a disposição em várias literaturas.
Os números aleatórios que constam nas tabelas, foram gerados recorrendo-se a alguns
processos físico aleatórios e são considerados como números "verdadeiramente" aleatórios.
Para a utilização correcta da tabela, deve-se escolher um número qualquer e tomar os
seguintes da mesma coluna ou linha sem saltos ou estabelecer cada vez um critério de
escolha. A tabela 12.4, apresenta um exemplo de uma tabela de números aleatórios, de onde
extraímos 10 números entrando pela segunda linha.
Exemplo 12.6. Uma determinada empresa produz um determinado artigo e cuja sua
demanda diária está expressa pela seguinte distribuição de probabilidades. Usando a
simulação Monte Carlo, gere um padrão de demandas num período de 10 dias.
_________________________________________________________________
demanda/dia 0 1 2 3 4 5
probabilidades 0.05 0.10 0.15 0.30 0.25 0.15
______________________________________________________
Resolução / procedimento:
a) Dada a variável aleatória x, a função densidade ou de distribuição das probabilidades
f(x), escrever a função acumulada de probabilidades F(x);
b) Escrever os intervalos associados aos números aleatórios a partir da função acumulada
de probabilidades;
c) Seleccionar na tabela, 10 números aleatórios;
d) Associar cada número aleatório aos intervalo correspondentes e ler na coluna da
demanda o valor da demanda simulada.
* Os números foram obtidos lendo na oitava coluna os dois dígitos terminais do anexo 1.
Resolução:
* Dados: demanda; custos de stock 3 u.m. e 2 u.m.; custos de falta 80 u.m.
* variáveis: demanda; prazo de entrega; nível inicial do stock; custos
Como as variáveis aleatórias são discretas, os números aleatórios são associados por
intervalos, conforme mostram as tabelas 12.7a e 12.7b.
Com auxílio destas tabelas, o método de Monte Carlo pode ser aplicado ao problema de
stock. Considerando o stock inicial igual a 240 pneus (início de cada semana), a tabela 12.7c
mostra a simulação dos custos de estocagem e de falta. A tabela 12.7d, mostra a simulação
das datas de entrega dos pneus encomendados.
As datas de entrega real são 8 para a 1a. semana e 15 para a 2a. semana.
Foram sorteados 15 números aleatórios onde 94 correspondeu a entrega do dia 8 com um
atraso de 3 dias. Na segunda semana o 15 teve o número aleatório 50 que indica 2 dias de
atraso. Conhecendo os dias de atraso, os dias de entrega inicialmente prevista são 5 e 13
respectivamente para a 1a e 2a. semanas. (Lembre-se que uma outra geração de números
aleatórios pode fornecer outras datas).
--------------------------------------------------------
Demanda /dia 14 15 16 17 18
probabilidades 0.11 0.14 0.26 0.29 0.20
--------------------------------------------------------
a) Apresente as colunas correspondentes a função acumulada das probabilidades e dos
intervalos associados aos números aleatórios.
b) b) Se, St(inicial) = 40 unidades, C(armaz) = $15 /unidade; C(falta)=$30 /unidade;
C(ordena/)=$35 /cada reposição; usando o método de Monte Carlo, simule a
sequência do stock inicial em cada dia, demanda diária e stock final.
c) Calcule os custos do stock e de falta que a farmácia terá no fim dos 10 dias.
Resolução
Os números aleatórios serão extraídos começando pela posição 29 e a tabela 7.8 reporta
como foram respondidas as alíneas anteriores.
Tabela 12.8a. Preparação da simulação
14 0.11 0.11 00 - 10
15 0.14 0.25 11 - 24
16 0.26 0.51 25 - 50
17 0.29 0.80 51 - 79
18 0.20 0.20 80 - 99
1 29 16 40 24 360 - -
2 75 17 24 07 105 - -
3 96 18 07 -11 - - 330
4 96 18 45 27 405 35 -
5 48 16 27 11 165 - -
6 50 16 11 -5 - - 75
7 31 16 45 29 435 35 -
8 37 16 29 13 195 - -
9 83 18 13 -5 - - 75
10 24 15 45 30 450 35 -
Regra: Dada uma sequência de números aleatórios ri, os valores xi resultados da simulação
de uma variável aleatória contínua X se obtém tomando o supremo das soluções da equação
F(x) = ri onde F(x) é a função de distribuição de X.
Os valores de xi para uma função concreta são obtidos resolvendo a equação: xi = f(ri).
Exemplo 12.9. Estabelecer a formula que permite simular uma variável uniforme
distribuída no intervalo (a ; b).
Resolução
x−a
F ( x) =
b−a
x -a
Fazendo F ( x ) = ri entao = ri a forma explicita sera xi = (b − a) * ri + a
b−a
Resolução
Como a função de probabilidade F(x) está definida no intervalo 0 a 1, então vamos escolher
números aleatórios neste intervalo, com a = 4; b = 14 então (b - a ) = 10
____________________________________________________
var-x n.a = ri 10*ri xi
____________________________________________
1 0.66 6.6 10.6
2 0.06 0.6 4.6
3 0.57 5.7 9.7
4 0.47 4.7 8.7
5 0.17 1.7 5.7
6 0.31 3.1 8.1
7 0.06 0.6 4.6
8 0.01 0.1 4.1
9 0.08 0.8 4.8
_____________________________________________
Exemplo 12.11. Resolver pelo método de Monte Carlo o exemplo 12.2 (relativo a cabina
telefónica) para 15 clientes.
Resolução.
Para que a solução do problema seja fácil, vamos usar intervalos entre chegadas e duração
dos telefonemas, em vez dos ritmos médios. Dividindo o problema em quatro etapas:
Y = F ( x) = 1 − e − µx
Tabela 12.9a Apresenta os valores calculados para μ = 0.3 chegadas por minuto e μ = 0.33
telefonemas por minuto, para a duração média de telefone igual a 3.
_______________________________________________________________
intervalo função acumulada função acumulada
em min para μ = 0.3 para μ = 0.33
_____________________________________________________
1 0.259 0.283
3 0.593 0.632
5 0.777 0.811
7 0.878 0.903
9 0.933 0.950
11 0.963 0.975
13 0.979 0.987
15 0.988 0.993
17 0.993 0.996
____________________________________________________
1.2 1.2
Funcao acumulada para 0.33 telef/min
funcao acumulada para 0.30 chedasa/min
1.0 1.0
.8 .8
.6 .6
.4 .4
.2 .2
1 3 5 7 9 11 13 15 17 1 3 5 7 9 11 13 15 17
Figura 12.8. Funções acumuladas de probabilidades para 0.30 chegadas por minuto e
0.33 telefonemas por minuto.
Etapa 2. Usando o método Monte Carlo, vamos simular os intervalos entre as chegadas e as
durações dos telefonemas para 15 clientes.
Sejam as designações:
nc - número de cliente
x1, x2 - número aleatório relativo a chegadas e aos telefonemas
Ic - intervalo de chegada relativo ao cliente anterior
MR - marcação do relógio em min.
ti - duração do telefonema.
Para realizar a simulação basta usar a relação: F(x) = ri em seguida pode-se obter a equação:
ln(1 − ri )
xi = −
µ
0nde ri é o número aleatório, Xi pode assumir Ic ou ti.
ln(1 − 0.94) ln(1 − 0.02) ln(1 − 0.43)
Ic = − = 9.0 ; Ic = − + 9 = 9.1 ; t i = − = 1. 7
0.3 0.3 0.33
Tabela 12.9b. Simulação das chegadas dos clientes e das durações dos telefonemas
___________________________________________________
nc x1 Ic MR x2 ti
___________________________________________________
1 94 9.0 9.0 43 1.7
2 02 0.1 9.1 55 2.4
3 28 1.1 10.2 74 4.0
4 73 4.2 14.4 28 1.0
5 66 3.7 18.1 64 3.0
6 64 3.4 21.5 91 7.2
7 26 1.0 22.5 60 2.7
8 61 3.1 25.6 39 1.5
9 89 7.5 33.1 74 4.0
10 91 8.0 41.1 84 5.5
11 54 2.5 43.6 31 1.1
12 39 1.7 45.3 06 0.2
13 82 5.5 50.8 53 2.2
14 57 2.7 53.5 93 8.2
15 22 0.8 54.3 56 2.5
____________________________________________________
Assim, considerando o inicio da simulação como sendo a hora 0, o relógio estará marcando
9 min quando chegar o 1o. cliente, cujo o telefonema durará 1.7 min (e sairá aos ti = 10.7
min). Antes porém, aos 9.1 min chegará o 2o. cliente que deverá esperar na fila. A simulação
continua dessa maneira, até que todos os clientes tenham sido atendidos.
x1 : 1 2 3 x2: 10 20 30 40 50 x3: 1 2 3
pi : 0.5 0.3 0.2 pi : 0.04 0.06 0.20 0.30 0.40 pi : 0.4 0.2 0.4
Demanda /dia 40 45 50 55 60 65 70
probabilidade 0.05 0.10 0.20 0.30 0.15 0.15 0.05
Exercício 12.3 As vendas de um comerciante numa das suas lojas seguem uma
distribuição discreta conforme mostra a tabela obtida na última semana de Junho para 5
dias úteis:
X: (sacos) 10 20 30 40 50
P(xi) : 0.10 0.15 0.25 0.30 0.20
Referência:
ANDRADE, EL(1998) – Introdução à Pesquisa Operacional – métodos e modelos para a Análise de decisão, 2a
edição, editora LTC, RJ, Brasil: cap7;
DAVIES, R; Robert, O’K(1948) – Simulation Modelling with Pascal - Printice Hall International, UK Lda.
SHAMBLIN, JE(1989) – Pesquisa Operacional –uma abordagem básica, Editora Atlas S.A. São Paulo, Cap7;