otimiza˘c~ao de um sistema de elevadores a partir da...
TRANSCRIPT
Universidade Federal Fluminense
Instituto de Matematica e Estatıstica
Curso de Estatıstica
Fabio Mascarenhas Loureiro
Otimizacao de um Sistema de Elevadores a partir da
Simulacao de Eventos Discretos
Niteroi
2013
Fabio Mascarenhas Loureiro
Otimizacao de um Sistema de Elevadores a partir da
Simulacao de Eventos Discretos
Monografia apresentada ao Curso de Estatıstica da
UFF, como requisito para a obtencao do grau de
BACHAREL em Estatıstica.
Orientadora: Jessica Quintanilha Kubrusly
Doutora em Matematica
Niteroi
2013
Fabio Mascarenhas Loureiro
Otimizacao de um Sistema de Elevadores a partir da
Simulacao de Eventos Discretos
Monografia apresentada ao Curso de Estatıstica da
UFF, como requisito para a obtencao do grau de
BACHAREL em Estatıstica.
Aprovado em Marco de 2013
BANCA EXAMINADORA
Jessica Quintanilha Kubrusly
Doutora em Matematica
Valentin Sisko
Doutor em Estatıstica
Victor Hugo de Carvalho Gouvea
Doutor em Engenharia Estatıstica
Loureiro, Fábio Mascarenhas Otimização de um Sistema de Elevadores a partir da Simulação
de Eventos Discretos / Fábio Mascarenhas Loureiro; Jessica Quintanilha Kubrusly, orientadora. Niterói, 2012. 56 f. : il.
Trabalho de Conclusão de Curso (Graduação em
Estatísticaa ) – Universidade Federal Fluminense, Instituto de Matemática e Estatística, Niterói, 2012.
1. Processos Estocásticos. 2. Geração de Variáveis
Aleatórias. 3. Geração de processo de Poisson homogêneo e não homogêneo. 4. Simulação de Sistemas de Filas. I. Kubrusly, Jessica Quintanilha, orientadora. II. Universidade Federal Fluminense. Instituto de Matemática e Estatística. III. Título.
CDD -
Dedico este trabalho aquelas pessoas que me
ajudaram e me apoiaram ate aqui mas que nao
resistiram para compartilhar deste momento
junto a mim.
Resumo
Quando se lida com problemas de modelagem estocastica e comum nos depa-
rarmos com sistemas complexos que, em alguns caso, sao impossıveis de se resolver de
forma analıtica. Diante disto, e comum usarmos a simulacao para entender e estudar
fenomenos desta natureza. Este trabalho apresenta um estudo para um sistema de eleva-
dores, que pode ser considerado um desses sistemas complexos. Este sistema foi modelado
segundo duas perspectivas. Na primeira, os elevadores param em todos os andares, ja na
segunda, cada elevador para em andares especıficos. O objetivo principal do trabalho e
decidir em qual dos dois sistemas o tempo medio de espera dos passageiros e menor.
Palavras-chaves: Processos Estocasticos, Geracao de Variaveis Aleatorios, Geracao de
Processo de Poisson Homogeneo e nao Homogeneo, Simulacao, Simulacao de Sistemas de
Filas.
Agradecimentos
Gostaria de agradecer primeiramente a minha mae (Nadia), por todo o apoio
que me foi dado. Sei que passamos tempos difıceis e talvez nao seja tao mais facil daqui
em diante, mas tenho certeza que poderei sempre contar com a sra.
Agradeco tambem ao meu tio (Geraldo), pessoa que me auxiliou e transformou
isto possıvel. Sei que muitas coisas poderiam ser diferentes sem sua ajuda e portanto serei
eternamente grato.
Nao poderia deixar de agradecer algumas pessoas que fizeram parte do meu
desenvolvimento pessoal (DCE): Linda, Cissa, Dani, Thalita, Paola, Keilane, Leo(a),
Luciana(p), Nadine, Pablo, Bruno, Evandro, Riba, Barrientos, Garcom da Mineira, China,
Orelha, Nariz, Paulista, Uba, Jose, Natan e Lage.
Agradeco tambem aos que ajudaram no meu crescimento academico: Linda
novamente, Bruna, Fernanda, Kiese, Carol, Marcela, Evelyne, Guilherme, Clark e Lex.
Ao falar dos meus conhecimento academicos, nunca poderia deixar de agra-
decer minha orientadora (Jessica). Agradeco por todo o tempo dedicado, paciencia e
puxoes de orelha que me deu. Aprendi muito com a sra. e espero podermos trabalhar
juntos novamente.
Gostaria ainda de nao so agradecer, mas tambem dedicar este trabalho a quatro
pessoas. Pessoas que foram e continuarao sendo muito importantes na minha vida.
Pai (Helio), depois que entrei na faculdade nunca mais o vi, mas saiba, aonde
estiver, que sempre quis poder conversar e dizer tudo que cresci e evoluı.
Regina, voce pode nao ver o termino desta etapa da minha vida, nao fisica-
mente, mas sei que esta olhando e torcendo por mim. Obrigado pela ajuda no inıcio da
faculdade e por me dar a oportunidade de ter te conhecido. Ao pegar o diploma, lembrarei
da sua fala: “Estarei velhinha e indo la te ver formando!”. Tenho certeza que estara!
Tia (Bene), nunca esquecerei a sra. Voce tinha um sentimento por mim e pela
minha mae que inexplicavelmente e maior do que o de muitas pessoas que ja passaram
por nossas vidas. Nao so agradeco, mas afirmo que sempre lembrarei do auxılio e “dicas”
que me deu em vida. Obrigado!
Por ultimo, mas nao menos importante, gostaria de agradecer a pessoa que me
incentivou e acreditou desde sempre na minha capacidade, meu avo (Carlos). E com uma
alegria, seguida de profunda tristeza, que escrevo este agradecimento. Vo, infelizmente
nao esta comigo agora, mas cada etapa, cada passo que der, estarei lembrando de tudo
que me disse e me ensinou. O sr. ajudou a construir a pessoa que sou hoje e, por todo
o tempo, paciencia, dedicacao e incentivo que me deste serei eternamente grato. Voce
teve a mim como um filho e eu o considero como tal! Nao poderei abraca-lo apos minha
apresentacao nem apos meu ultimo dia na faculdade, mas sempre lembrarei de voce. Por
isso, mesmo nao estando comigo fisicamente, estara sempre presenta na minha vida.
4
Sumario
Lista de Figuras 7
Lista de Tabelas 8
1 Introducao 9
2 Geracao de Variaveis Aleatorias 11
2.1 Numeros Pseudo-Aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Geracao de Variaveis Aleatorias . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.1 Metodo da Transformada Inversa - V. A. Discreta . . . . . . . . . . 14
2.2.2 Metodo da Transformada Inversa - V. A. Contınuas . . . . . . . . . 15
2.2.3 Geracao de uma exponencial . . . . . . . . . . . . . . . . . . . . . . 17
3 Geracao de um Processo de Poisson 19
3.1 Processo de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Tempo entre Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Processo de Poisson nao-Homogeneo . . . . . . . . . . . . . . . . . . . . . 21
3.3 Geracao de Processo de Poisson Homogeneo . . . . . . . . . . . . . . . . . 21
3.4 Geracao de Processo de Poisson nao-Homogeneo . . . . . . . . . . . . . . . 22
4 Simulacao de Sistemas 24
4.1 Conceituando Eventos Discretos . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Sistema com um servidor e fila unica . . . . . . . . . . . . . . . . . . . . . 26
4.3 Sistema com varios servidores e fila unica . . . . . . . . . . . . . . . . . . . 28
4.4 Sistema com varios servidores e filas em paralelo . . . . . . . . . . . . . . . 31
4.5 Determinando o numero de simulacoes realizadas . . . . . . . . . . . . . . 34
4.5.1 Criterio de Parada das Simulacoes . . . . . . . . . . . . . . . . . . . 35
5 Aplicacao Pratica: Simulando um Sistema de Elevadores 36
5.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.1 Sistema 1: n elevadores parando em todos os andares . . . . . . . . 37
5.2.2 Sistema 2: n elevadores parando em andares intercalados . . . . . . 40
5.2.3 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 Resultados da Simulacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4 Modelo simulado para λ homogeneo . . . . . . . . . . . . . . . . . . . . . . 44
5.5 Modelo simulado para λ nao homogeneo . . . . . . . . . . . . . . . . . . . 47
6 Conclusoes 51
Lista de Figuras
2.1 Funcao de distribuicao acumulada de uma variavel aleatoria discreta. . . . 14
4.1 Sistema com um servidor em fila unica . . . . . . . . . . . . . . . . . . . . 26
4.2 Sistema com k servidores e fila unica . . . . . . . . . . . . . . . . . . . . . 29
4.3 Sistema com k servidores e k filas . . . . . . . . . . . . . . . . . . . . . . . 32
5.1 W resultante da simulacao de 3 elevadores e λ = 2. . . . . . . . . . . . . . 46
5.2 W resultante da simulacao de 3 elevadores e λ = 3. . . . . . . . . . . . . . 46
5.3 W resultante da simulacao de 3 elevadores e λ = 4. . . . . . . . . . . . . . 47
5.4 W resultante da simulacao de 3 elevadores e λ = 5. . . . . . . . . . . . . . 47
5.5 Curvas das funcoes das taxas de chegada λ(t). . . . . . . . . . . . . . . . . 48
5.6 W resultante da simulacao de 4 elevadores e λ1(t). . . . . . . . . . . . . . . 50
5.7 W resultante da simulacao de 4 elevadores e λ2(t). . . . . . . . . . . . . . . 50
Lista de Tabelas
5.1 Tempos que incidem sobre os modelos simulados. . . . . . . . . . . . . . . 43
5.2 Variaveis que definem os sistemas. . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 Tempo medio (minutos) no sistema 1 para λ homogeneo. . . . . . . . . . . 45
5.4 Tempo medio (minutos) no sistema 2 para λ homogeneo. . . . . . . . . . . 45
5.5 Tempo medio (minutos) no sistema 1 para λ nao homogeneo. . . . . . . . . 49
5.6 Tempo medio (minutos) no sistema 2 para λ nao homogeneo. . . . . . . . . 49
9
1 Introducao
Ao modelar um sistema que envolve variaveis estocasticas muitas vezes e pre-
ciso optar entre um modelo mais fiel a realidade ou outro modelo que seja mais matemati-
camente tratavel. Como por exemplo, ao modelar um sistema bancario pode-se optar por
um modelo mais realista que considere chegadas nao homogeneas ao longo do dia, variacao
no tempo de atendimento entre diferentes atendentes, possıveis faltas de funcionarios ou
ate mesmo pausas durante o expediente. Porem para que esse sistema tenha uma solucao
analıtica e preciso simplifica-lo bastante, por exemplo, considerar as chegadas homogeneas
e descartar as demais complicacoes citadas.
Com o avanco da computacao surgiu uma terceira possibilidade para analisar
sistemas estocasticos. A ideia e implementar e simular sistemas considerando alguns
complicadores a fim de tornar a modelagem o mais fiel possıvel a realidade. A analise
do sistema sera feita a partir das observacoes geradas pelas simulacoes realizadas. Dessa
forma nao sera fornecida uma solucao analıtica, porem a partir dessas observacoes sera
possıvel fazer inferencias sobre o sistema. Vale ressaltar que para uma boa representacao
da realidade e recomendavel que os parametros da simulacao sejam bem estimados a partir
de um estudo previo.
O objetivo deste trabalho e implementar e simular um sistema de elevadores
a fim de estudar o tempo de espera dos clientes. Para isso serao considerados duas
alternativas: a primeira considera que todos os elevadores param em todos os andares e
existe uma unica fila, ja a segunda considera que cada elevador para em andares especıficos.
Dessa forma espera-se comparar as duas alternativas e concluir em qual delas o cliente
passa menos tempo na fila.
No Capıtulo 2 sera introduzido o conceito de numeros pseudos-aleatorios assim
como algumas formas de geracao de variaveis aleatorias. No Capıtulo 3 serao definidos
Processos de Poisson Homogeneo e nao Homogeneo e formas de geracao desses processos
estocasticos. No Capıtulo 4 serao conceituado alguns tipos de simulacao, apresentados
alguns exemplos de simulacao com filas e por fim feita uma breve discussao sobre o numero
de simulacoes a serem realizadas. No Capıtulo 5 sera apresentado o problema do elevador
1 Introducao 10
bem como os resultados obtidos. Por fim, no Capıtulo 6 serao feitas as conclusoes e as
consideracoes finais com relacao ao trabalho.
11
2 Geracao de Variaveis Aleatorias
2.1 Numeros Pseudo-Aleatorios
Uma sequencia de numeros pseudo-aleatorios e uma cadeia de valores gerados
a partir de uma regra, tal que, estes tentam “imitar” da melhor maneira possıvel uma
variavel aleatoria distribuıda uniformemente no intervalo (0, 1). O intuito disto e criar
um conjunto de valores sequenciais que, apesar de nao serem de fato aleatorios, nao
apresentem previsibilidade aparente.
Um dos metodos mais utilizados para se tentar realizar tal simulacao e o me-
todo congruencial multiplicativo (Ross, 2006; Gentle, 2003). A proposta deste gerador e
construir uma sequencia de numeros pseudo-aleatorios onde, primeiramente e gerada uma
sequencia de numeros naturais {xn}∞n=1 de acordo com a expressao (2.1), que calcula, de
forma recursiva, sucessivos valores xn, para n ≥ 1, a partir de valores iniciais x0, a e m:
xn = axn−1 mod m (2.1)
A constante x0 e chamada de semente e pode ser qualquer valor real. As
constantes a e m sao inteiras e o termo mod m representa o resto da divisao por m.
Tem-se entao que a sequencia de numeros pseudo-aleatorio no intervalo (0, 1) e definida
por
un =xnm
(2.2)
Exemplo 2.1.1. Ao definir x0 = 1, a = 5 e m = 139, os dez primeiros termos da sequencia
xn serao gerados da seguinte maneira:
2.1 Numeros Pseudo-Aleatorios 12
x1 = 5× 1 mod 139 = 5
x2 = 5× 5 mod 139 = 25
x3 = 5× 25 mod 139 = 125
x4 = 5× 125 mod 139 = 69
x5 = 5× 69 mod 139 = 67
x6 = 5× 67 mod 139 = 57
x7 = 5× 57 mod 139 = 7
x8 = 5× 7 mod 139 = 35
x9 = 5× 35 mod 139 = 36
x10 = 5× 36 mod 139 = 41
Observe que, como a funcao mod m retorna o resto da divisao por m, xn ∈
{0, 1, . . . ,m − 1}, neste caso, xn ∈ {0, 1, . . . , 138}. Posterior a isto pode-se calcular a
sequencia de valores un ∈ [0, 1). Os dez primeiros numeros pseudo-aleatorios gerados
para os parametros definidos serao:
u1 = 5/139 = 0, 0359
u2 = 25/139 = 0, 1799
u3 = 125/139 = 0, 8993
u4 = 69/139 = 0, 4964
u5 = 67/139 = 0, 4820
u6 = 57/139 = 0, 4101
u7 = 7/139 = 0, 0504
u8 = 35/139 = 0, 2518
u9 = 36/139 = 0, 2590
u10 = 41/139 = 0, 2950
Como foi visto, este metodo utiliza 3 parametros para ser inicializado e todos
devem ser fornecidos pelo programador, assim, e razoavel que se tome algumas medidas
para maior eficiencia do metodo.
Primeiramente, pela forma de calculo utilizado, acaba que em algum momento
a sequencia comece a se repetir. Desta forma, caso seja escolhido um m pequeno, a
sequencia se repetira com maior rapidez. Assim, e comum e de maior eficacia a utilizacao
2.2 Geracao de Variaveis Aleatorias 13
de um m relativamente grande. Entretanto, pode-se observar que se a divisao por m
resultar em 0, todos os outros termos da sequencia serao nulos. Logo, busca-se utilizar,
alem de m grande, m primo. Com isto, espera-se dificultar o fato da sequencia gerada
se anular a partir de um dado momento. Observe tambem que, apesar dos recursos
computacionais estarem bastante evoluıdos, por uma limitacao, Ross (2006) sugere que
seja utilizado m = 231−1, sendo este o maior valor computavel primo para computadores
de 32 bit.
Para os valores de a e x0 nao ha muitas recomendacoes, porem como x0 sera
o valor que definira toda a sequencia gerada, e natural que sejam utilizados criterios de
escolha para o mesmo de forma que, cada vez que se for gerar uma sequencia, estas sejam
diferentes umas das outras. Para a Ross (2006) sugere o valor de a = 75.
Segundo tais criterios, espera-se que a sequencia gerada seja aparentemente
derivada de uma variavel com distribuicao Uniforme (0, 1) para todo x0 escolhido e que
a mesma ira demorar um tempo consideravelmente grande ate recomecar a geracao.
Outro tipo de metodo para a geracao de numeros pseudo-aleatorios, ainda
dentro da famılia de geradores congruenciais, e o metodo misto. Neste modelo, o valor
sera gerado segundo a equacao por
xn = (axn−1 + c) mod m. (2.3)
Neste modelo, cada numero e calculado dependendo do anterior, bem como no
metodo multiplicativo, e a, c e m sao numeros inteiros, tais que a < m e c < m. Neste
caso, a divisao un = xn/(m− 1) resulta num numero pseudo-aleatorio real pertencente ao
intervalo (0, 1).
Para este trabalho so foi utilizado o metodo congruencial multiplicativo, assim,
para maiores detalhes acerca de outros metodos de geracao veja Ross (2006).
2.2 Geracao de Variaveis Aleatorias
Existem diversos metodos para geracao de variaveis aleatorias. O metodo da
transformada inversa e um deles, ele utiliza a funcao de distribuicao acumulada da variavel
aleatoria a ser gerada junto com uma sequencia de numeros pseudo-aleatorios.
2.2 Geracao de Variaveis Aleatorias 14
Neste capıtulo serao apresentados as formas de geracao de variaveis aleatorias
discretas e contınuas, utilizando o metodo da transformada inversa. Para mais detalhes
sobre este ou outros metodos de geracao, veja Ross (2006).
2.2.1 Metodo da Transformada Inversa - V. A. Discreta
Para este metodo usaremos o fato da funcao de distribuicao acumulada FX de
uma variavel aleatoria X discreta ser sempre uma funcao do tipo escada. Comecada em
0 e finalizada em 1. Logo, Im(Fx) = (0, 1). Assim, a forma de se gerar uma variavel
aleatoria discreta a partir do metodo da transformada inversa, deve-se primeiro gerar um
numero pseudo-aleatorio no intervalo (0, 1] e em seguida verificar em qual “patamar” da
distribuicao acumulada se encontra o numero gerado, ou seja, em qual intervalo xi, xi+1
se localiza a variavel U ∼ Unif(0, 1) gerada.
Figura 2.1: Funcao de distribuicao acumulada de uma variavel aleatoria discreta.
Explicitando de forma logica o metodo voltado para uma distribuicao discreta
segue que: seja X = x0, x1, x2, . . . os possıveis valores ordenados da variavel aleatoria
X que se quer gerar e P0, P1, . . . , Pn as respectivas probabilidades, podemos obter um
elemento de forma aparentemente aleatoria segundo o pseudo-codigo definido abaixo.
Gera discreta1
2
Gerar uma variavel aleatoria U ∼ Unif(0, 1), isto e, um numero pseudo-aleatorio;3
Definir i = 0 e F = P0;4
Se U < F , retorna xi;5
2.2 Geracao de Variaveis Aleatorias 15
Incrementa i : i = i+ 1;6
Incrementa F : F = F + Pi;7
Voltar para a linha 5.8
Veja que desta forma, garantimos que a probabilidade de gerar X igual a xi
e dada por Pi, ou seja P (X = xi) = Pi. A exemplo, na figura 2.1 como P0 + P1 < U <
P0 + P1 + P2, o elemento gerado seria x2.
Exemplo 2.2.1. Considere uma variavel aleatoria X com distribuicao dada por:
X 0 1 2
P(X = xj) = pj 1/4 1/2 1/4
Nesse exemplo, mostramos abaixo como pode-se gerar X usando como base o
pseudo-codigo gera discreta.
U = u, onde u ∼ Unif(0, 1)1
se U < 0.25, entao retorna x = x1 = 0, senao:2
se U < 0.75, entao retorna x = x2 = 1, senao:3
retorna x = x3 = 24
Note que para se obter uma amostra com varios elementos, basta replicar o
procedimento descrito diversas vezes.
2.2.2 Metodo da Transformada Inversa - V. A. Contınuas
O metodo da transformada inversa para a geracao de variaveis aleatorias contı-
nuas so pode ser aplicado para gerar uma variavel aleatoria quando e conhecida a inversa
da sua funcao de distribuicao acumulada, denotada por F−1. Segue entao que, seja X
uma variavel aleatoria contınua, entao Fx e uma funcao contınua nao-descrescente, tal
que Im(Fx) = (0, 1).
2.2 Geracao de Variaveis Aleatorias 16
Supondo X variavel aleatoria tal que F−1 e conhecida, pode-se utilizar o
pseudo-codigo descrito abaixo para se obter uma observacao aparentemente aleatorio de
X.
Gera contınua1
2
Gerar uma variavel aleatoria U ∼ Unif(0, 1), isto e, um numero pseudo-aleatorio;3
Retornar X = F−1(U).4
Veja que assim observacao gerada realmente vem de uma populacao cuja dis-
tribuicao acumulada e dada por F :
P (Saida ≤ x) = P (F−1(U) ≤ x) = P (U ≤ F (x)) = F (x)
Exemplo 2.2.2. Seja X uma variavel aleatoria com densidade f(x) = 2x, 0 < x < 1. Logo,
a distribuicao acumulada e dada por
F (x) =
0, se x < 0
x2, se 0 ≤ x < 1
1, se x ≥ 1
Suponha que se quer gerar um valor deX e para isso o pseudo codigo“Gera contınua”.
Primeiramente deve-se encontrar a funcao de distribuicao acumulada inversa:
X2 = U ⇒ X = U1/2
Uma vez encontrada a inversa da distribuicao acumulada, basta aplica-la na
funcao implementada.
U = u, onde u ∼ Unif(0, 1);1
Retorne x =√U2
2.2 Geracao de Variaveis Aleatorias 17
Este metodo e bastante eficaz e possui uma forma bem rapida e direta de se
gerar valores aleatorios, porem, ele exige que se saiba alem da funcao acumulada, saber
inverter a mesma. Para as distribuicoes continuas tais que a distribuicao acumulada
nao e conhecida, por exemplo a da distribuicao Normal, sao utilizados outros metodos
que tratam melhor destas especificidades, como o metodo da aceitacao e rejeicao. Neste
trabalho nos limitaremos a falar apenas do metodo da transformada inversa, ja que e mais
simples, em termos de implementacao, e funciona bem na geracao de todas as distribuicoes
aqui usadas. Para maiores detalhes acerca do modelo de aceitacao e rejeicao pode-se
verificar Ross (2006).
2.2.3 Geracao de uma exponencial
A distribuicao exponencial e um dos pilares do processo de Poisson, desta
forma, saber gerar variaveis aleatorias com tais caracterısticas e fundamental para o de-
senvolvimento deste trabalho que tem como base a simulacao de um processo de Poisson.
Esta relacao sera mais bem explicitada no capıtulo 3.
Definicao 2.2.3. Seja X uma variavel aleatoria contınua com funcao de densidade de
probabilidade dada por
f(x) = λe−λx (2.4)
Entao, diz-se que X tem distribuicao exponencial com parametro λ.
Logo, seja X ∼ Exponencial(λ), entao sua funcao de distribuicao acumulada
sera dada por
F (x) = 1− e−λx, x ≥ 0. (2.5)
Veja que a distribuicao exponencial possui uma funcao de distribuicao acumu-
lada inversıvel:
F (x) = 1− e−λx ⇒ F−1(u) =−ln(1− u)
λ.
Verifique que F−1(F (x)) = x.
2.2 Geracao de Variaveis Aleatorias 18
Vide entao que o metodo da transformada inversa pode ser facilmente utilizado
para a geracao de variaveis aleatorias com distribuicao exponencial como e mostrada no
pseudo-codigo Gera exponencial implementado a seguir.
Gera exponencial1
2
Gerar U ∼ Unif(0, 1);3
Retornar X = − ln(1−U)λ
4
Podemos simplicar ainda mais este codigo uma vez que U ∼ Unif(0, 1) ⇒
1−U ∼ Unif(0, 1). Logo, podemos alterar nosso metodo de geracao para uma forma um
pouco mais simples, computacionalmente e matematicamente. Desta forma, temos que
Gera exponencial1
2
Gerar U ∼ Unif(0, 1);3
Retornar X = − ln(U)λ
4
19
3 Geracao de um Processo de Poisson
Nesta sessao primeiro serao definidos os processos de Poisson, homogeneos e
nao-homogeneos. Em seguida serao apresentados metodos de geracao desses processos.
3.1 Processo de Poisson
Um processo de Poisson pode ser dito como um caso particular de um processo
de contagem (Ross, 1996) e por isto e fundamental entender o que e um processo de
contagem para depois sim definirmos um processo de Poisson.
Um processo estocastico {N(t), t ≥ 0} e dito como um processo de contagem
quando:
i. N(t) e o total de eventos ocorridos ate o instante t;
ii. N(t) ≥ 0;
iii. N(t) e um valor oriundo de um contagem, portanto deve ser um valor inteiro;
iv. Dado s < t, entao N(s) < N(t);
v. Dado s < t, entao N(t) − N(s) deve ser igual ao numero de eventos ocorridos no
intervalo (s, t].
Um processo de contagem e dito possuir incrementos independentes se o nu-
mero de eventos que ocorrem em intervalos de tempos disjuntos, forem variaveis aleatorias
independentes. Ou seja, se um processo de contagem possui incrementos independentes, o
numero de eventos que ocorrem ate o instante s, N(s), deve ser independente do numero
de eventos que ocorrem entre os instantes t e s, N(t)−N(s).
Definicao 3.1.1. Um processo de contagem e denominado processo de Poisson Homogeneo
com taxa λ, λ > 0, se
i. N(0) = 0;
3.1 Processo de Poisson 20
ii. O processo possui incrementos independentes;
iii. O numero de eventos em qualquer intervalo de tamanho t possui distribuicao Poisson
com media λt, ou seja, para todo s, t ≥ 0,
P{N(t+ s)−N(s) = n} = e−λt(λt)n
n!, n = 0, 1, . . .
Observe que a partir de iii temos que E[N(t)] = λt e devido a isto λ e chamado
de taxa do processo.
3.1.1 Tempo entre Eventos
Proposicao 3.1.2. Seja {N(t), t ≥ 0} um processo de Poisson homogeneo de taxa λ ≥ 0
e T1 o instante de ocorrencia do primeiro evento. Entao T1 ∼ Exp(λ).
Demonstracao:
FT1(t) = P (T1 ≤ t)
= 1− P (T1 > t)
= 1− P (nenhum evento ocorrer em (0, t))
= 1− P (N(t) = 0)
=
0 , se t < 0;
1− e−λt , se t ≥ 0.
Logo, FT1(t) = 1− e−λt, t ≥ 0. O que nos faz concluir que T1 ∼ Exp(λ)
Veremos agora um resultado mais geral.
Proposicao 3.1.3. : Seja {N(t), t ≥ 0} um processo de Poisson homogeneo de taxa λ ≥ 0
e Ti o instante de ocorrencia do i−esimo evento. Seja X1 = T1 e Xi = Ti−Ti−1 para i ≥ 2
o intervalo de tempo entre as ocorrencias de ındices i e i− 1.
Entao, Xi ∼ Exp(λ).
Esta proposicao esta enunciada e demonstrada em Taylor e Karlin (1998).
3.2 Processo de Poisson nao-Homogeneo 21
3.2 Processo de Poisson nao-Homogeneo
O processo de Poisson nao-homogeneo se faz necessario quando o numero medio
de ocorrencias varia no decorrer do tempo t.
Definicao 3.2.1. Um processo de contagem {N(t), t ≥ 0} e dito ser um processo de Poisson
nao-homogeneo com funcao de intensidade λ(·), λ(t) ≥ 0, se
i. N(0) = 0;
ii. {N(t), t ≥ 0} possui incrementos independentes;
iii. limh→0 P{exatamente 1 evento entre t e t+ h}/h = λ(t);
iv. limh→0 P{2 ou mais eventos entre t e t+ h}/h = 0.
A funcao m(t), definida por
m(t) =
∫ t
0
λ(s)ds, t ≥ 0 (3.1)
e chamada de funcao do valor medio e indica o numero medio de ocorrencias no intervalo
(0, t). Utilizando este fato, segue que: N(t + s) − N(t) e uma variavel aleatoria com
distribuicao de Poisson com media m(t+ s)−m(t).
Proposicao 3.2.2. Suponha que eventos ocoram de acordo com um processo de Poisson
homogeneo com taxa λ. Suponha tambem que, independente de qualquer coisa que tenha
acontecido, um evento que ocorra no instante t e contado com probabilidade p(t). Entao
este processo de contagem obedece um processo de Poisson nao homogeneo com funcao
de intensidade λ(t) = λp(t).
A proposicao acima esta implementada e demonstrada em Ross (2006). Esse
resultado sera de grande utilidade para gerar um processo de Poisson nao homogeneo.
3.3 Geracao de Processo de Poisson Homogeneo
Para se gerar um processo de Poisson Homogeneo, iremos utilizar como base o
fato dos intervalos entre cada ocorrencia serem variaveis aleatorias independentes e com
distribuicao Exponencial, como mostrado na Secao 3.1.1.
3.4 Geracao de Processo de Poisson nao-Homogeneo 22
Seguindo esta ideia, para gerar os instantes de ocorrencia de eventos de acordo
com o processo de Poisson Homogeneo serao efetivamente gerados os intervalos de tempo
entre ocorrencias consecutivas, que seguem o modelo exponencial.
Geracao do Proximo Instante de Tempo
Vejamos agora o pseudo-codigo de uma funcao que recebe como argumento o
tempo corrente t e retorna o instante da proxima ocorrencia de um processo de Poisson
homogeneo de taxa λ. A funcao sera denotada por “Prox t h” e e implementada abaixo.
Prox t h1
2
Entrada: t > 0;3
Gera U ∼ Unif(0, 1);4
t = t− ln(U)λ
;5
Retornar t.6
Veja que se U ∼ Unif(0, 1), entao − ln(U)λ∼ Exp(λ), como ja foi mostrado no
Capıtulo 2.
Uma vez ja implementada esta funcao, caso queira gerar n tempos de ocorren-
cia de eventos, basta utilizar esta funcao sucessivas vezes, atualizando sempre o t como o
tempo da ultima ocorrencia.
3.4 Geracao de Processo de Poisson nao-Homogeneo
Como ja citado anteriormente, nem todos os processos que se deseja modelar
sao bem ajustados a um processo de Poisson homogeneo. Alguns sistemas podem nao
possuir suas taxas de chegada constantes ao longo do tempo, mas sim variaveis.
Desta forma, suponha que se quer gerar o instante da proxima ocorrencia de
um processo de Poisson com funcao de intensidade λ(t). Primeiramente, deve-se escolher
λ tal que λ(t) ≤ λ para todo momento de tempo t.
3.4 Geracao de Processo de Poisson nao-Homogeneo 23
Posterior a isto, usaremos a Proposicao 3.2.2 para gerar os elementos de um
processo nao homogeneo a partir de um homogeneo. Ou seja, se um evento de processo de
Poisson homogeneo que ocorre com taxa λ em um tempo t e contado com probabilidade
λ(t)/λ, entao este processo de contagem de eventos sera um processo de Poisson nao-
homogeneo com funcao de intensidade dada por λ(t). Assim, utilizando a simulacao
de um processo de Poisson homogeneo e acrescentando uma probabilidade de contagem
λ(t)/λ aos eventos, ter-se-a um processo de Poisson nao-homogeneo.
Geracao do Proximo Instante de Tempo t
Vejamos agora a implementacao de uma funcao que recebe o tempo t cor-
rente no sistema e, utilizando os conceitos definidos acima, retorna o proximo instante de
tempo de ocorrencia de um evento decorrente de um processo de Poisson nao-Homogeneo.
Denotada por Prox t, veja abaixo o pseudo-codigo da mesma.
Prox t1
2
Entrada: t > 0;3
Gerar U ∼ Unif(0, 1);4
t = t− ln(U)λ
;5
Gerar V ∼ Unif(0, 1);6
Se V ≤ λ(t)/λ retorne t, senao:7
Volte para a linha 4.8
Note que os primeiros itens sao identicos a geracao do processo de Poisson
homogeneo e apenas foi acrescentada uma“chance”de contagem deste evento no processo.
24
4 Simulacao de Sistemas
Apresentando o conceito de modelo, este e, por definicao, uma representacao
estatica do mundo. A simulacao entao adiciona aspectos temporais ao “modelo” buscando
representar como o sistema modelado varia no decorrer do tempo. Assim, a simulacao
pode ser definida como uma representacao tempo-variavel do modelo (Sokolowski e Banks,
2009).
Observe tambem que a simulacao nos da a vantagem de podermos conduzir
multiplos experimentos sobre um modelo em condicoes variaveis sem termos a necessidade
de grandes recursos nem de modificar o sistema criado.
A simulacao possui basicamente duas vertentes, simulacao de eventos discretos
e simulacao contınua. A simulacao de eventos discretos decorre daqueles eventos que va-
riam de um estado para outro com o passar do tempo enquanto que na simulacao contınua
tratamos de casos que se comportam continuamente ao longo do tempo independente dos
eventos que ocorrem no sistema.
A exemplo, Sokolowski e Banks (2009) compara um semaforo a um carro.
Equanto o semaforo so pode estar nas cores verde, amarelo ou vermelho (estados 1, 2 ou
3) independente do tempo, por outro lado, o carro nao altera sua velocidade para zero
instantaneamente mas sim vai variando sua velocidade, desacelarando, no decorrer do
tempo. Esta mudanca de velocidade e contınua.
Diferenciar estes dois tipos de eventos e importante para a implementacao dos
processos que se seguirao. Neste trabalho serao abordados apenas modelos discretos e
neste capıtulo serao apresentados alguns tipos de sistemas e suas respectivas formas de
simulacao.
Alem do mais, ainda podemos classificar os modelos de simulacao em deter-
minısticos ou estocasticos (existem outros tipos, porem menos usuais). Num modelo de
simulacao determinıstico, este, nao contem nenhuma variavel aleatoria, ou seja, para um
conjunto conhecido de dados de entrada teremos um unico conjunto de resultados de saıda.
Ja nos modelos estocasticos, existem uma ou mais variaveis aleatorias como entrada, que
levam a saıdas aleatorias. E utilizado o modelo estocastico quando ao menos uma das
4.1 Conceituando Eventos Discretos 25
caracterısticas operacionais e dada por uma funcao de probabilidade.
Vide pela definicao, entao, que os modelos apresentados e os que serao imple-
mentados ao longo do trabalho sao modelos de simulacao estocastico de eventos discretos.
4.1 Conceituando Eventos Discretos
Primeiramente, vale conceituar alguns itens que serao usados frequentemente
de agora em diante. A simulacao de eventos discretos pode ser definida como a va-
riacao ocorrida num modelo devido a uma sequencia cronologica de eventos que agiram,
agem, sobre o mesmo; eventos sao ocorrencias instantaneas que causam a variacao, mu-
danca, do estado do sistema; e o estado do sistema e definido por uma ou mais variaveis
que descrevem completamente um sistema para qualquer tempo dado.
Segue entao que, o princıpio de uma simulacao deve ser a definicao das variaveis
que serao utilizadas bem como os eventos possıveis, pois serao eles que irao nortear nosso
algoritmo para uma maior proximidade da realidade. Para o sistema deste trabalho usou-
se basicamente tres tipos de variaveis:
1. Variaveis que definem o sistema - Sao representadas pelas variaveis utilizadas
na definicao do sistema. Podem ser representadas pelo tempo maximo do sistema
T e λ(t), dentre outras;
2. Variaveis de Interesse - Sao as variaveis que serao criadas durante o codigo
visando analises futuras. Aqui estao incluıdas variaveis como tamanho maximo
de uma fila, quantidade de eventos ocorridos ate o tempo T , maior tempo entre
eventos, e quaisquer outras variaveis que se tenha interesse no experimento;
3. Variaveis de Controle - Sao aquelas que definem as mudancas de estado do sis-
tema, nos ajudando a controlar e conseguir realizar a simulacao. A real utilidade
destas variaveis se tornara mais clara no decorrer do capıtulo. Entretanto, podemos
citar como exemplos desta variavel o tempo t corrente e total de pessoas no sistema
num dado instante.
Nas secoes a seguir serao vistos exemplos classicos de sistemas estocasticos
cuja simulacao e feita via eventos discretos. Muitos sistemas mais complexos, como o
4.2 Sistema com um servidor e fila unica 26
apresentado no capıtulo 5 em geral podem ser decompostos em partes mais simples, como
tais exemplos.
No decorrer deste capıtulo serao apresentados algumas aplicacoes das teorias e
algoritmos ja implementados anteriormente para simularmos sistemas de fila/servidor. Na
secao 4.2 sera apresentado como se construir a base de um algoritmo para um sistema de
servidor e fila unicos. Nas secoes 4.3 e 4.4 serao implementados algoritmos para multiplos
servidores, com filas unica e multiplas.
4.2 Sistema com um servidor e fila unica
Nesta secao sera apresentado um pseudo-codigo que realiza a simulacao de um
sistema com um unico servidor em fila unica.
Neste tipo de sistema os clientes chegam e, caso o servidor esteja desocupado,
sao imediatamente atendidos. Caso contrario, o cliente entra na fila. Assim, os clientes
serao atendidos na ordem em que chegaram. Este conceito e conhecido como FIFO (first
in-first out) e e valido para todos os casos de sistemas com fila unica. De forma simples
pode-se exemplificar este sistema como um banco onde so esteja funcionando um caixa.
Saıde de ClientesEntrada de Clientes
Figura 4.1: Sistema com um servidor em fila unica
Ao realizarmos a simulacao deste sistema podemos estar interessados em ana-
lisar o tempo que cada cliente fica no sistema ou o tamanho maximo da fila. Veja que
ambos sao variaveis aleatorias que nao conhecemos a distribuicao, uma vez que o sistema e
complexo. O que queremos com a simulacao e observar possıveis amostras dessas variaveis
para poder fazer inferencias em cima dela e com isso tomar decisoes.
Para realizar a simulacao utilizaremos as seguintes variaveis:
1. Variaveis que definem o sistema - tempo maximo T que o servidor ira funcionar;
e taxa de chegada λ(t) dos clientes no sistema;
4.2 Sistema com um servidor e fila unica 27
2. Variaveis de interesse - um array que guarda o horario de chegada dos clientes
no sistema, denominado NA; um array que guarda o horario de saıda dos clientes,
denominado ND;
3. Variaveis de controle - tempo corrente (t); quantidade de pessoas no sistema em
um dado instante t (n); tempo de chegada do proximo cliente no sistema (tc); tempo
de saıda do ultimo cliente ate o instante t (ta); e o numero de pessoas que entraram
no sistema (S).
Para a implementacao sera considerado que os clientes chegam no sistema de
acordo com um processo de Poisson, homogeneo ou nao, dependendo da modelagem.
Caso a escolha seja por chegadas de acordo com um processo homogeneo, a funcao prox t
citada no pseudo codigo a seguir deve ser implementada como prox t h da pagina 22,
caso contrario, essa funcao sera definida por prox t da pagina 23. Assim, segue abaixo o
pseudo-codigo para a simulacao de tal sistema.
Inicializacao:1
t = 0;2
ta =∞;3
tc = prox t(0);4
n = 0;5
S = 0.6
NA = ND = NULL;7
8
Caso 1: tc < ta e tc < T (um cliente chega no sistema)9
t = tc;10
S = S + 1;11
NA[S] = t;12
tc = prox t(t);13
n = n+ 1;14
se n = 1, gera ta;15
Volte para a linha 9.16
17
Caso 2: ta ≤ tc e tc, ta < T (termina o atendimento de um cliente)18
4.3 Sistema com varios servidores e fila unica 28
t = ta;19
ND[S − n] = ta;20
n = n− 1;21
se n ≥ 1, gera ta;22
se n = 0, ta =∞; Volte para a linha 9.23
24
Caso 3: T ≤ ta e T ≤ tc (sistema e esvaziado: nao entram mais clientes)25
se n = 0, FIM;26
t = ta;27
ND[S − n] = ta;28
n = n− 1;29
se n ≥ 1, gera ta e volta para a linha 27;30
se n = 0, FIM.31
No codigo mostrado nao especificamos qual a funcao para gerar ta. Isto se
deve ao fato de que este tempo pode ser qualquer funcao G definida pelo pesquisador ao
implementar o codigo. Neste caso o ideal seria fazer um estudo previo da distribuicao
mais adequada.
Note que para a obtencao de estatısticas tais como tempo medio de atendi-
mento e ou total de clientes atendidos no sistema, basta analisarmos as variaveis NA,
ND e S. A exemplo, sendo NA e ND arrays que guardam o horario de chegada e saıda
dos clientes, logo NA − ND e um array que guarda o tempo que cada cliente ficou no
sistema.
Perceba que o codigo apresentado nao possui muitas variaveis de interesse e ou
de controle, todavia, este pseudo-codigo tem a intencao de auxiliar, servindo como base,
na construcao de sistemas mais complexos com entradas e saıdas semelhantes.
4.3 Sistema com varios servidores e fila unica
Na secao anterior foi implementado o pseudo-codigo para um sistema com um
unico servidor e fila unicos. Nesta, sera construıdo a sequencia logica para implementacao
de um sistema com k servidores e uma unica fila.
4.3 Sistema com varios servidores e fila unica 29
Considere um sistema composto por k servidores. Uma vez que um cliente
chega no sistema, este entra na fila caso todos os servidores estejam ocupados ou entra
no primeiro que estiver livre.
Entrada de Clientes
Clientes
Saıda de clientes
Servidor k
...
Saıda de clientes
Servidor 1
Figura 4.2: Sistema com k servidores e fila unica
Suponha que se quer simular este sistema levando em consideracao as mesmas
afirmacoes feitas na secao 4.2. Os clientes chegam conforme um processo de Poisson nao
homogeneo com taxa λ(t) e os tempos de atendimento dos servidores e determinado por
um funcao G.
Para este tipo de sistema deve-se levar em consideracao algo que nao era im-
portante para um sistema com um unico servidor. Na secao 4.2 seguia-se um sistema
FIFO, coisa que neste tipo de sitema nao podemos afirmar. Ou seja, o i-esimo cliente que
chega ao sistema nao necessariamente sera o i-esimo cliente a sair do sistema, uma vez
que este pode demorar mais no atendimento do que outro cliente que chegue depois dele.
Para a simulacao deste sistema utilizaremos as seguintes variaveis:
1. Variaveis que Definem o Sistema - tempo maximo que o servidor ira funcionar
(T ); e taxa de chegada dos clientes no sistema (λ(t));
2. Variaveis de Interesse - horarios de chegada dos clientes no sistema, denominado
NA; horarios de saıda dos clientes, denominado ND;
3. Variaveis de Controle - tempo corrente (t); quantidade de pessoas no sistema
em um dado instante t (n); o tempo de chegada do proximo cliente no sistema (tc);
um array com os horarios de saıda dos clientes do servidor (ta); e a quantidade de
pessoas que entram no sistema, (S).
4.3 Sistema com varios servidores e fila unica 30
Supondo que se tem os mesmso interesses da secao 4.2, vejamos como pode-se
implementar um pseudo-codigo para este tipo de sistema.
Inicializacao:1
t = 0;2
ta = (∞, . . . ,∞);3
n = 0;4
S = 0;5
tc = prox t(0);6
NA = ND = NULL;7
8
Caso 1: tc < min(ta) e tc < T (um cliente entra no sistema)9
t = tc;10
S = S + 1;11
NA[S] = t;12
tc = prox t(t);13
n = n+ 1;14
se n ≤ k, seja i o ındice de um sevridor vazio, gere ta[i];15
Volte para a linha 9.16
17
Caso 2: min(ta) ≤ tc e tc,min(ta) < T (um cliente termina o atendimento)18
t = min(ta);19
ND[j] = t, onde j corresponde a ordem de chegada cliente que esta saindo do sistema;20
n = n− 1;21
seja i o ındice do servidor que terminou o atendimento;22
se n ≥ k, gere ta[i]; senao faca ta[i] =∞23
Volte para a linha 9.24
25
Caso 3: T ≤ min(ta) e T ≤ tc (sistema e esvaziado)26
se n = 0, FIM;27
t = min(ta);28
ND[j] = t, onde j corresponde a ordem de chegada do cliente que esta saindo do sistema;29
n = n− 1;30
4.4 Sistema com varios servidores e filas em paralelo 31
se n ≥ k, seja i o ındice do servidor que acabou o atendimento, gere ta[i], senao ta[i] =∞31
32
Volte para a linha 27;33
Para o sistema simulado acima vale algumas consideracoes. A variavel ta, e
vetor de tamanho k onde cada posicao corresponde a um servidor, sendo este ordenado
segundo sua posicao neste vetor. Ou seja, o tempo de atendimento do servidor i sera
representado por ta[i]. Note que as comparacoes em cada caso utiliza min(ta), isto e,
o menor valor do vetor ta. Desta forma, sabemos o proximo servidor que sera liberado.
A atualizacao de ND tambem se difere da secao 4.2, ja que, como dito, os clientes nao
necessariamente sao atendidos na mesma ordem em que entram no sistema.
Caso queira inferir em cima dos dados simulados vale as consideracoes realiza-
das na secao 4.2, basta utilizar NA, ND, S e qualquer outro tipo de variavel de interesse
que o pesquisador queira incrementar no pseudo-codigo implementado. Sao exemplos de
variaveis que nao estamos controlando neste pseudo-codigo: tamanho maximo da fila e
quantidade de pessoas atendidas por servidor. Note tambem que os servidores atendiam
todos segundo uma funcao G e caso queira tornar os sistema mais real deve-se levar
em consideracao uma distribuicao diferente para cada servidor, ja que, usualmente, os
atendentes, servidores, dificilmente atenderao de forma identica.
4.4 Sistema com varios servidores e filas em paralelo
Nesta secao iremos abordar o ultimo caso de simulacao de sistemas. O sistema
tera como base k servidores, como na secao 4.3, porem iremos considerar que cada cliente
escolhe ao chegar em qual servidor gostaria de ser atendido, criando-se desta forma uma
fila especıfica para cada servidor.
Como falado, representaremos um sistema com k servidores e k filas em para-
lelo. Considere que os clientes escolhem em qual servidor serao atendidos de acordo com
a quantidade de pessoas aguardando na fila do mesmo. Caso os servidores possuam filas
de tamanhos semelhantes, o cliente escolhe a primeira destas.
Para este sistema, tal qual na Secao 4.3, o sistema nao segue um padrao FIFO.
Entretanto, aqui o cliente opita por qual servidor sera atendido logo na sua chegada, en-
4.4 Sistema com varios servidores e filas em paralelo 32
quanto que, no sistema da secao 4.3, os clientes escolhiam isto na exata hora do atendi-
mento.
Entrada de clientes
Fila 1
...
Entrada de clientes
Fila k
Saıda de clientes
Servidor k
...
Saıda de clientes
Servidor 1
Figura 4.3: Sistema com k servidores e k filas
Com isto, para realizarmos a confeccao do pseudo-codigo deste sistema utili-
zaremos as seguintes variaveis:
1. Variaveis que definem o sistema - tempo maximo que o servidor ira funcionar
(T ); e taxa de chegada dos clientes no sistema λ(t);
2. Variaveis de interesse - horario de chegada dos clientes no sistema (NA); e horario
de saıda dos clientes (ND);
3. Variaveis de controle - tempo corrente (t); quantidade de pessoas no sistema em
um dado instante (n); tempo de chegada do proximo cliente no sistema (tc); vetor
com horarios de saıdas dos clientes do sistema (ta); vetor que indica a quantidade
de pessoas na fila de cada servidor (fila).
Com as variaveis definidas, tem-se que o pseudo-codigo para este tipo de sis-
tema pode ser implementado como e mostrado a seguir.
Inicializacao:1
t = 0;2
ta = (∞, . . . ,∞);3
n = 0;4
4.4 Sistema com varios servidores e filas em paralelo 33
S = 0;5
fila = (0, . . . , 0);6
NA = ND = NULL;7
tc = prox t(0);8
9
Caso 1: tc < min(ta) e tc < T (um cliente entra no sistema)10
t = tc;11
S = S + 1;12
NA[S] = t;13
n = n+ 1;14
seja i o ındice do servidor com fila menor;15
fila[i] = fila[i] + 1; se fila[i] = 1, gera ta[i];16
Volte para a linha 10.17
18
Caso 2: min(ta) ≤ tc e min(ta) < T (um cliente termina o atendimento)19
t = min(ta);20
ND[j] = t, onde j corresponde a ordem de chegada do cliente que esta saindo do sistema;21
n = n− 1;22
seja i o ındice do servidor que terminou o atendimento;23
fila[i] = fila[i]− 1;24
se fila[i] ≥ 1, gera ta[i];25
senao ta[i] =∞;26
Volte para a linha 10.27
28
Caso 3: T ≤ min(ta) e T ≤ tc (sistema e esvaziado)29
se n = 0, FIM;30
t = min(ta);31
ND[j] = t, onde j corresponde ao ındice de chegada do cliente que esta saindo do sistema;32
n = n− 1;33
seja i o ındice do servidor que terminou o atendimento;34
fila[i] = fila[i]− 1;35
se fila[i] ≥ 1, gera ta[i]; senao, ta[i] =∞;36
Volte para a linha 3037
4.5 Determinando o numero de simulacoes realizadas 34
Acerca deste sistema, valem os mesmos comentarios feitos nas Secoes 4.2 e 4.3.
No entanto, ao simularmos os sistemas com k servidores atendendo com um unica fila ou
com filas em paralelo podemos obter um resultado bastante conhecido.
Se mantivermos a mesma funcao de atendimento G e chegada dos clientes
com mesmo λ(t) para ambos os sistemas, podemos realizar comparacoes em relacao a
performance de cada um. Observando os tempos de espera no sistema, os tamanhos
maximos da fila e ou os tempos que cada servidor fica ocioso, dentre outras posıveis
variaveis, pode-se constatar um resultado bastante conhecido que e a preferencia pela
escolha de uma unica fila.
Alcancar tal resultado seria bastante complexo, talvez ate impossıvel, analiti-
camente devido a dificuldade em trabalhar com taxas de chegada nao homogeneas, por
exemplo.
4.5 Determinando o numero de simulacoes realizadas
Um ponto importante quando se usa a simulacao para a tomada de decisoes e
o numero de simulacoes que garantem que o resultado obtido e confiavel. Como em geral
estamos analisando a media de alguma variavel aleatoria podemos nos basear na lei dos
grandes numeros.
Lei dos Grandes Numeros
A Lei dos Grandes numeros e uma das aplicacoes de convergencia de variaveis
aleatorias, alem de um resultado muito importante em probabilidade. De forma geral o
teorema mostra que uma sequencia de variaveis aleatorias definida pela media amostral
de variaveis aleatorias identicamente distribuıdas e com esperanca finita converge para a
variavel aleatoria degenerada dada pela media populacional.
Existem duas versoes principais dessa lei, a versao fraca e a forte. A dife-
renca entre elas e o tipo de convergencia usada: a lei fraca garante a convergencia em
probabilidade enquanto a versao forte garante a convergencia quase certa.
Teorema 4.5.1. Lei Fraca dos Grandes Numeros de Khintchin
Seja {Xn} uma sequencia de variaveis aleatorias independentes, identicamente distribuıdas
4.5 Determinando o numero de simulacoes realizadas 35
tais que E[Xn] = µ <∞. Entao,
XnP−−−→
n→∞µ,
onde Xn =∑n
i=1Xi
n.
Teorema 4.5.2. Lei Forte dos Grandes Numeros de Kolmogorov
Seja {Xn} uma sequencia de variaveis aleatorias independentes, identicamente distribuıdas
tais que E[Xn] = µ <∞. Entao,
Xnq.c.−−−→n→∞
µ,
onde Xn =∑n
i=1Xi
n.
4.5.1 Criterio de Parada das Simulacoes
Seja T a variavel para a qual queremos determinar a sua media e seja Ti a
observacao dessa variavel na simulacao i. Defina Wi = T1+T2+...+Tii
, ou seja, Wi e a media
amostral das primeiras i observacoes da variavel T .
Pela lei dos grandes numeros podemos garantir que Wi −−−→i→∞
E[T ]. Dessa
forma o numero de simulacoes sera determinado pela variavel Wi. Enquanto Wi varia
muito, deve-se continuar simulando. A partir do momento que Wi varia pouco com a
atualizacao feita devido a novas simulacoes, podemos assumir que Wi ja esta proximo do
seu limite, logo proximo de E[T ]. Nesse caso assumimos que o ultimo Wi calculado e uma
boa aproximacao para o valor procurado E[T ].
36
5 Aplicacao Pratica: Simulando um Sistema
de Elevadores
Nos capıtulos anteriores, vimos que a simulacao e bastante empregada quando
nao podemos resolver de forma analıtica nossos problemas. Entretanto, vimos diversos
modelos isolados que poderiam auxiliar um futuro programador a realizar a simulacao de
um dado sistema.
Neste capıtulo sera apresentada uma aplicacao dos conceitos falados ate agora
para simular um sistema de elevadores. Nas Secoes 5.2 e 5.3 serao apresentadas desde
a implementacao do pseudo-codigo utilizado na simulacao do sistema ate a extracao das
informacoes e posterior analise das mesmas. Serao realizada tambem comparacoes acerca
das melhores formas de disposicao do sistema, visando otimizar os tempos de espera dos
clientes.
5.1 Introducao
Atualmente, devido a quantidade de predios e ate mesmo pela pratcidade,
vemos uma grande utilizacao dos elevadores. Entretanto, nem sempre sao realizados
estudos para se saber como alocar ou quantos elevadores utilizar.
Devido a isto, e comum nos depararmos com longas filas ou uma grande quanti-
dade de elevadores que ficam em desuso por nao considerar a taxa de chegada dos clientes
naquele local.
Tendo em vista tais problemas, neste capıtulo iremos abordar algumas manei-
ras de se dispor um sistema de elevadores, de modo a poder otimizar o tempo gasto pelas
pessoas na fila e a quantidade de elevadores otima.
Os sistemas levados em consideracao foram dois:
� Sistema 1: n elevadores parando em todos os andares; e
� Sistema 2: n elevadores parando em andares especıficos.
5.2 Algoritmo 37
Para o sistema 1, foi levado em consideracao uma fila unica, ja que, como
falado na Secao 4.4, um servidor com fila unica e mais eficiente do que um com filas em
paralelo. Para o sistema 2 foi considerada uma fila para cada elevador.
Na secao seguinte serao explicitadas algumas consideracoes feitas acerca dos
sistemas simulados e como foram implementados.
5.2 Algoritmo
Nesta secao sera mostrado como foram implementados os codigos de ambos os
sistemas e as compracoes, analises e discussoes acerca dos dados obtidos serao realizados
na secao 5.3.
Veja que para as simulacoes seguintes foram incluıdas uma lista de funcoes
uteis para a implementacao do algoritmo. Tais funcoes servirao para descrever de forma
mais realıtica o fenomeno que se quer simular.
Para ambos os sistemas, tambem nao foi levado em consideracao a entrada de
passageiros nos andares superiores. Ou seja, os passageiros entram no sistema apenas pelo
andar terreo e sao levados de elvador para os andares desejados. Porem nao esta sendo
considerado que eles peguem o elevador para descer e sair do sistema.
5.2.1 Sistema 1: n elevadores parando em todos os andares
Para a simulacao deste sistema, levou-se em consideracao a utilizacao de n
elevadores onde todos podem parar em qualquer andar. Para a implementacao do mesmo,
foram utilizadas as funcoes prox t e prox t h.
Para a realizacao da simulacao foram utilizadas as seguintes variaveis:
1. Variaveis que definem o sistema - tempo maximo que o servidor ira funcionar
(T ); taxa de chegada dos clientes no sistema (λ); numero maximo de pessoas por
elevador, (max elevador); quantidade de elevadores no sistema (n elevadores); e
numero de andares (n andares);
2. Variaveis de interesse - vetor com as horas de chegada de cada pessoa (NA);
numero de pessoas por dia no elevador (Nc); vetor com as horas de embarques de
5.2 Algoritmo 38
cada passageiro (ND); e o numero de pessageiros que ja embarcaram (Ne);
3. Variaveis de controle - tempo corrente (t); uma matriz n andares×n elevadores
em que guarda a quantidade pessoas que irao saltar em cada andar de modo que
em cada linha guarda-se o vetor de andares de cada elevador (andares); vetor que
indica quando os elevadores acabam a viagem (temp viag); vetor com os instantes
que os elevadores retornam ao terreo (temp volta); instante que o proximo cliente
chega na fila (tc); e o numero de pessoas na fila num dado instante t (n fila).
Alem das variaveis, foram utilizadas algumas funcoes uteis durante a simulacao
com o intuito de gerar os andares escolhidos pelos passageiros, atualizar o tempo de viagem
dos elevadores dentre outras.
Veja abaixo o pseudo-codigo para a implementacao do sistema simulado.
Inicializacao:1
2
NA = ND = NULL;3
Nc = Ne = 0;4
max fila = 0;5
andaresn andares×n elevadores = 0;6
tc = prox t(0);7
temp volta = (∞, . . . ,∞);8
temp viag = (∞, . . . ,∞);9
n fila = 0;10
11
Caso 1: tc < min(temp viag) e tc < min(temp volta) (um passageiro chega na fila)12
13
t = tc;14
Nc = Nc + 1;15
NA[Nc] = t;16
Se existe algum elevador no terreo e seja i o seu ındice:17
- - Ne = Ne + 1;18
- - ND[Ne] = t;19
5.2 Algoritmo 39
- - Atualizar o vetor andares[i, ] com o andar escolhido pelo passageiro;20
- - Atualizar temp viag[i];21
- - tc = prox t(t);22
Caso nao exista elevador no terreo, e seja k o elevador que ira descer primeiro;23
- - Se n fila = 0, entao:24
- - - Atualizar temp volta[k];25
t c = prox t(t);26
n fila = n fila+ 1;27
28
Caso 2: min(temp viag) < tc , min(temp viag) < min(temp volta) (o elevador vai29
parar)30
31
Seja k o elevador que ira parar, t = temp viag[k];32
temp viag[k] =∞;33
34
Caso 3: min(temp volta) < tc) e min(temp volta) < min(temp viag) (o elevador sera35
recarregado)36
37
Seja k o elevador que sera recarregado, t = temp volta[k];38
andares[k, ] = 0, ou seja, toda a linha k da matriz andares sera zerada;39
Se n fila > max elevador, entao:40
- - atualizar andares[k, ] segundo os andares escolhidos pelos passageiros;41
- - ND[Ne, Ne + 1, . . . , Ne +max elevador] = t;42
- - Ne = Ne +max elevador;43
- - n fila = n fila−max elevador;44
- - atualizar temp viag[k];45
- - atualizar temp volta[k];46
Senao: – atualizar andares[k, ] segundo os andares esocolhidos pelos passageiros;47
– ND[Ne, Ne + 1, . . . , Ne +max elevador] = t;48
– Ne = Ne +max elevador;49
– n fila = 0;50
– atualizar temp viag[k];51
– temp volta[k] =∞;52
5.2 Algoritmo 40
Note que este pseudo-codigo e bem mais complexo do que os apresentados ate
aqui. Entretanto, sua implementacao e embasada no outros mais simples realizados no
Capıtulo 4.
5.2.2 Sistema 2: n elevadores parando em andares intercalados
Nesta secao, iremos apresentar a simulacao de um sistema bastante seme-
lhante com o anterior, entretanto, cada elevador parara em andares especıficos e pre-
determinados. Elaborar este outro tipo de sistema tem como fim observarmos o compor-
tamento do tempo medio de espera dos passageiros em relacao ao primeiro sistema.
Para a definicao dos intervalos de parada foi utilizada a divisao mais igualitaria
possıvel dentre a quantidade de elevadores disponıveis. Assim, supondo um sistema com
tres elevadores e onze andares, os intervalos seriam elevador1 = [1, 2, 3, 4], elevador2 =
[5, 6, 7, 8] e elevador3 = [9, 10, 11]. Note que o intervalo de andares e formado de forma
consecutiva.
Para as realizacao da simulacao utilizou-se as seguintes variaveis:
1. Variaveis que definem o sistema - tempo maximo que o servidor ira funcionar
(T ); taxa de chegada dos clientes no sistema (λ); numero maximo de pessoas por
elevador (max elevador); quantidade de elevadores no sistema (n elevadores); e o
numero de andares (n andares).
2. Variaveis de interesse - lista com as horas de chegada de cada pessoa em cada
fila (NA); vetor com o numero de pessoas por dia em cada elevador (Nc); lista com
as horas de embarques de cada passageiro em cada elevador, (ND); e vetor com o
numero de pessageiros que ja embarcaram em cada elevador (Ne);
3. Variaveis de controle - tempo corrente (t); uma matriz n andares×n elevadores
em que guarda a quantidade pessoas que irao saltar em cada andar de modo que
em cada linha guarda-se o vetor de andares de cada elevador (andares); vetor que
indica quando os elevadores acabam a viagem (temp viag); vetor com os instantes
que os elevadores retornam ao terreo (temp volta); instante que o proximo cliente
chega na fila (tc); e o numero de pessoas na fila num dado instante t (n fila).
Veja que as variaveis utilizadas neste sistema se assemelham as utilizadas no
5.2 Algoritmo 41
primeiro. Isto ocorre pois estamos buscando otimizar o tempo medio de espera dos passa-
geiros alterando apenas o comprtamento dos elevadores, mantendo os mesmos parametros
e definicoes para ambos os sistemas.
Visto isso a atualizacao dos tempos de viagem do elevador, entrada de passa-
geiros no sistema, escolha de andares, dentre outros parametros, sao os mesmos usados
no sistema 1.
Abaixo segue o pseudo-codigo utilizado para a implementacao do sistema 2.
Inicializacao:1
2
andares = 0, lembre que andares e um lista;3
temp viag = (∞, . . . ,∞);4
temp volta = (∞, . . . ,∞);5
tc = prox th(0);6
n fila = (0, . . . , 0);7
NA = ND = NULL, note que ambos sao listas;8
Nc = Ne = (0, . . . , 0);9
t = 0;10
11
Caso 1: tc < min(temp viag) e tc < min(temp volta) (Chega um passageiro na fila)12
13
t = tc;14
Nc[j] = Nc[j] + 1, onde j corresponde ao elevador que o passageiro usara;15
NA[[j]] = t, atualiza NA de acordo com o elevador escolhido;16
Se existe algum elevador no terreo (passageiro entra direto):17
- - Ne[j] = Ne[j] + 1;18
- - ND[[j]] = t, atualiza ND de acordo com o elevador escolhido;19
- - atualiza andares[[j]] de acordo com o andar escolhido;20
- - atualiza temp viag[j];21
- - tc = prox t(t);22
Senao:23
- - atualiza temp volta;24
5.2 Algoritmo 42
- - tc = prox t(t);25
- - n fila[j] = n fila[j] + 1;26
27
Caso 2: min(temp viag) < tc) e min(temp viag) < min(temp volta) (Um elevador28
vai parar)29
30
Seja o elevador k com menor temp viag;31
t = temp viag[k];32
temp viag[k] =∞;33
34
Caso 3: min(temp volta) < tc e min(temp volta) < min(temp viag) (Um elevador35
sera recarregado)36
37
Seja o elevador k com menor temp viag;38
t = temp volta[k];39
andares[[k]] = 0, zera a posicao k da lista;40
Se n fila[k] > max elevador:41
- - atualiza andares[[k]] de acordo com os andares escolhidos;42
- - ND[[k]][Ne[k], . . . , Ne[k] +max elevador] = t;43
- - incrementar Ne mais max elevador elementos;44
- - n fila[k] = n fila[k]−max elevador;45
- - atualiza temp viag[k];46
- - atualiza temp volta[k];47
Senao:48
- - atualiza andares[[k]] de acordo com os andares escolhidos;49
- - ND[[k]][Ne[k], . . . , Ne[k] +max elevador] = t;50
- - incrementar Ne mais max elevador elementos;51
- - n fila[k] = 0;52
- - atualiza temp viag[k];53
- - temp volta[k] =∞;54
5.2 Algoritmo 43
5.2.3 Comentarios
Primeiramente, note que nao foi enunciado sobre o tipo de fila utilizado no
sistema 2. Isto se deve ao fato de, no sistema 2, o indivıduo ao escolher o andar desejado,
ja escolhe automaticamente o elevador que lhe atendera, criando diretamente uma fila
para cada elevador.
Alem disto, visando aproximar a simulacao de um sistema mais realıstico,
incluımos ainda alguns tempos estimados que podem incidir neste tipo de fenomeno. Veja
na Tabela 5.1 os os tempos e eventos que foram levados em consideracao.
Tabela 5.1: Tempos que incidem sobre os modelos simulados.
Descricao do Parametro Valor Estimado
Tempo entre cada andar 7 segundos
Tempo de entrada de cada passageiro 2 segundos
Tempo de abertura do elevador 5 segundos
Tempo de fechamento do elevador 5 segundos
Em relacao aos parametros das variaveis que definem os sistemas, veja na
Tabela 5.2 os valores usados.
Vale ressaltar que a complexidade do sistema 2 e bem maior do que a do
sistema 1, entretanto seria ainda mais difıcil implementa-lo caso nao tivessemos comecado
pelo sistema mais simples, parando em todos os andares.
Dito isto, foi utilizado o software estatıstico R, versao 2.15.1 para realizarmos
a simulacao e podermos analisar cada modelo.
Tabela 5.2: Variaveis que definem os sistemas.
Variaveis que definem Sistema Sistema
os Sistemas 1 2
T 600 minutos
max elevador 6 pessoas
n elevadores 1, 2, 3, 4 e 5 elevadores
n andares 20 andares
5.3 Resultados da Simulacao 44
5.3 Resultados da Simulacao
Ao analisarmos cada sistema simulado, nos deparamos com duas questoes:
- Qual o tempo gasto pelos passageiros ate saltarem no andar desejado ?; e
- A quantidade de dias simulados seria suficiente para afirmarmos que os resultados
obtidos de fato retratam o real problema?
Ao visar isto, criamos duas variaveis. Um vetor T - onde Ti corresponde ao
tempo medio gasto pelos passageiros dentro do sistema no i-esimo dia simulado - e outro
vetor W - onde Wi = T1+T2+...+Tii
.
Com base na Lei dos Grandes Numeros apresentada na Secao 4.5, utilizaremos
o vetor W para checarmos se a quantidade de dias simulados foi suficiente e qual o tempo
medio dentro de sistema por passageiro.
Entretanto, como ja foi apresentado, a chegada dos passageiros no sistema pode
se comportar de forma homogenea ou nao homogenea. Por isto, realizamos simulacoes
distintas para cada tipo de taxa de chegada.
Inicialmente foram gerados para cada sistema cem iteracoes com a quantidade
de elevadores variando de um a cinco.
5.4 Modelo simulado para λ homogeneo
Para representarmos este tipo de sistema, onde a taxa de chegadas e constante,
buscamos simular todos os casos para λ ∈ {2, 3, 4, 5, 6, 7, 8}.
Os valores de convergencia de W em cada sistema simulado estao expostos nas
Tabelas 5.3 e 5.4, onde E corresponde a quantidade de elevadores utilizados. Lembre-se
que tal valor pode ser interpretado como o tempo medio que cada passageiro demorou
dentro do sistema, ou seja, o tempo medio desde sua chegada na fila ate saltar no andar
desejado.
Primeiramente, verifica-se que independente da taxa de chegada, os sistemas
1 e 2 apresentam resultados semelhantes para um unico elevador. Isto nos da confianca
de que os sistemas simulados estao de acordo com as expectativas e a implementacao esta
5.4 Modelo simulado para λ homogeneo 45
Tabela 5.3: Tempo medio (minutos) no sistema 1 para λ homogeneo.
E
λ2 3 4 5 6 7 8
1 41.695 132.761 230.337 324.331 418.957 514.106 608.711
2 0.952 3.457 43.576 90.672 138.307 185.859 233.248
3 0.703 0.785 1.364 16.574 49.006 80.570 113.154
4 0.693 0.738 0.929 3.321 26.281 52.836 79.196
5 0.685 0.735 0.930 3.312 25.211 49.693 72.886
Tabela 5.4: Tempo medio (minutos) no sistema 2 para λ homogeneo.
E
λ2 3 4 5 6 7 8
1 42.156 132.784 230.115 323.746 418.567 514.1801 609.400
2 1.243 3.488 24.218 53.521 91.702 132.000 172.005
3 0.966 1.133 1.471 2.298 13.223 30.344 49.700
4 0.888 0.982 1.097 1.344 2.189 6.500 13.809
5 0.843 0.908 0.980 1.064 1.206 1.531 2.674
correta, uma vez que os dois sistemas sao identicos para este caso. Por outro lado, nao
podemos generalizar quando nos referimos ao melhor sistema.
Ao observarmos os resultados obtidos para as taxas de chegada λ ∈ {2, 3}
notamos que o sistema 1 apresenta tempos menores que os do sistema 2. Ou seja, neste
caso poderıamos dizer que o melhor sistema, com menor tempo de atendimento, seria o
primeiro.
Entretanto, conforme aumentamos a taxa λ, o sistema 2 passa a se mostrar
bem mais eficiente. Note que para o caso de cinco elevadores e λ = 7, a diferenca
dos tempos medios estimados no sistema 1 (49,7 minutos) em relacao ao sistema 2 (1,5
5.4 Modelo simulado para λ homogeneo 46
minutos) e de mais de 40 minutos. E conforme fomos aumentando as taxas de chegada o
segundo sistema continuou se mostrando bem mais eficiente, aumentando cada vez mais
esta diferenca dos tempos.
Como ja falado anteriormente, os valores obtidos nas Tabelas 5.3 e 5.4, foram
obtidos atraves do vetor W . Assim, dispomos nas Figuras 5.1, 5.2, 5.3 e 5.4 os graficos
dos vetores W ’s obtidos para os sistemas cujo λ ∈ {2, 3, 4, 5} e possuiam tres elevadores.
(a) Sistema 1. (b) Sistema 2.
Figura 5.1: W resultante da simulacao de 3 elevadores e λ = 2.
(a) Sistema 1. (b) Sistema 2.
Figura 5.2: W resultante da simulacao de 3 elevadores e λ = 3.
Veja que nos graficos apresentados, os valores de convergencia ate λ = 3 de fato
apontam para o sistema 1 como melhor modelo e, conforme incrementamos λ, o sistema
2 passa a ser bem mais eficaz do que o primeiro. De fato, ja havıamos constatado isto
atraves das Tabelas 5.3 e 5.4.
5.5 Modelo simulado para λ nao homogeneo 47
(a) Sistema 1. (b) Sistema 2.
Figura 5.3: W resultante da simulacao de 3 elevadores e λ = 4.
(a) Sistema 1. (b) Sistema 2.
Figura 5.4: W resultante da simulacao de 3 elevadores e λ = 5.
Os graficos apresentados sao apenas um exemplo do comportamento dos sis-
temas ao longo das iteracoes, dias simulados, e apesar de estarem exposto apenas alguns
modelos, todos obtiveram o mesmo comportamento. Todos os sistemas, independente da
quantidade de elevadores ou da taxa de chegada, apresentaram convergencia clara bem
antes dos cem dias simulados.
5.5 Modelo simulado para λ nao homogeneo
Diferente do caso homogeneo, nao podemos adotar um λ especıfico para rea-
lizar as compracoes. Assim, implementamos duas possıveis funcoes λ(t) e realizamos as
simulacoes com o mesmo numero de iteracoes, dias simulados, e quantidade de elevadores
utilizados para λ homogeneo. As funcoes criadas para λ(t) estao explicitadas na figura
5.5 Modelo simulado para λ nao homogeneo 48
5.5, de modo que:
λ1(t) =
3.75, se t < 120;
3(320− t)/160, se t < 300;
3(t− 270)/240, se t < 480;
3(4200− 7t)/960, se t ≤ 600.
λ2(t) =
7.5, se t < 120;
3(320− t)/80, se t < 300;
3(t− 270)/120, se t < 480;
3(4200− 7t)/480, se t ≤ 600.
(a) Funcao λ1(t).
(b) Funcao λ2(t).
Figura 5.5: Curvas das funcoes das taxas de chegada λ(t).
Nas tabelas 5.5 e 5.6 estao alocados os tempos medios de permanencia dos
passageiros em cada combinacao E × λ para os sistemas 1 e 2.
Primeiramente, os valores obtidos para um unico elevador sao semelhantes para
ambas as funcoes, tal qual no modelo homogeneo.
5.5 Modelo simulado para λ nao homogeneo 49
Ao analisarmos as tabelas citadas, vemos que para funcao λ1(t), independente
do numero de elevadores o sistema 1 apresentou-se mais eficaz. Entretanto, como ja vimos
no caso homogeneo, para λ = 4, o sistema 1 havia se mostrado mais eficaz e ja que λ1(t)
possui seus valores menores ou iguais a 3.75, este resultado ja era esperado.
Por outro lado quando comparamos os resultados obtidos para λ2(t), notori-
amente o sistema 2 foi o mais eficiente. De forma similar a λ1(t), este resultado ja era
esperado pois os possıveis valores da funcao λ2(t) se encontram em um intervalo mais
amplo e como ja havıamos visto para o caso homogeneo, conforme vamos aumentando a
taxa de chegada, o sistema 2 passa a ser mais eficaz.
Tabela 5.5: Tempo medio (minutos) no sistema 1 para λ nao homogeneo.
E λ1(t) λ2(t)
1 141.537 799.131
2 17.345 328.891
3 0.938 178.035
4 0.793 129.446
5 0.797 117.931
Tabela 5.6: Tempo medio (minutos) no sistema 2 para λ nao homogeneo.
E λ1(t) λ2(t)
1 141.440 798.419
2 10.236 253.235
3 1.212 96.832
4 1.001 36.606
5 0.931 11.729
Alem dos valores estimados do tempo de atendimento, bem como no caso
descrito para λ homogeneo, foi disposto nas Figuras 5.6 e 5.7 o comportamento do vetor
W ao longo das iteracoes, dias simulados.
5.5 Modelo simulado para λ nao homogeneo 50
Atraves dos graficos esbocados, podemos ver que os valores de convergencia de
W sao nitidamente distinto quando comparamos os sistemas.
Note que como ja foi dito, nos graficos de 5.6 o melhor sistema e notoriamente
melhor do que o segundo, ou seja, o sistema parando em todos os andares nos retorna um
tempo medio estimado de atendimento dos passageiros menor do que o caso de elevadores
parando em intervalos de andares. Entretanto, quando olha-se para os graficos de 5.7,
o melhor modelo de fato passa ser o segundo, com o elevador parando em intervalo de
andares.
Assim, verificamos que como na secao 5.4, para um λ nao homogeneo, obtemos
diferentes “sistemas otimos”, variando de acordo com a quantidade de elevadores e funcao
λ(t) usada.
(a) Sistema 1. (b) Sistema 2.
Figura 5.6: W resultante da simulacao de 4 elevadores e λ1(t).
(a) Sistema 1. (b) Sistema 2.
Figura 5.7: W resultante da simulacao de 4 elevadores e λ2(t).
51
6 Conclusoes
O intuito deste trabalho foi analisar o tempo medio de passageiros em um
sistema de elevadores. Para isso, usamos duas abordagens: uma com os elevadores pa-
rando em todos os andares e outra com cada elevador parando em andares especıficos.
As simulacoes foram realizadas com numero de elevadores variados e taxas de chegada
homogeneas e nao homogeneas.
Ao observarmos os resultados, vimos que nao podemos afirmar a existencia
de um sistema otimo para todos os casos. Ou seja, para cada combinacao de taxas de
chegada e numero de elevadores, um sistema se mostrou mais eficiente.
De maneira geral, o sistema onde os elevadores paravam em andares especı-
ficos apresentou resultados melhores quando o sistema estava saturado, isto e, muitas
chegadas para poucos elevadores. Ja o outro modelo mostrou-se mais eficaz para sistemas
menos saturados. Uma sugestao para trabalhos futuros seria estudar para quais valores
de E, numeros de elevadores, e λ, taxa media de chegada para um processo de Poisson
homogeneo, cada um dos dois sistemas tem melhores resultados.
Alem disso, para encontrar o sistema otimo supondo a taxa nao homogenea
vale a pena tambem testar o uso de um sistema misto, onde a partir de um certo instante
o funcionamento dos elevadores se inverte de uma abordagem para a outra. Por exemplo,
de manha quando a taxa de chegada e alta os elevadores funcionariam como no sistema
2 e depois de um certo horario passariam a funcionar de acordo com o sistema 1.
Mais sugestoes de trabalhos futuros seria a inclusao de complicadores a fim
de tornar a modelagem ainda mais real. Exemplos de complicadores seriam: possibilitar
elevadores parando em andares pares e ımpares, em vez de em intervalos contınuos; incluir
a possibilidade de um passageiro pegar um elevador que nao seja o seu e descer um andar,
caso a fila compense; e passageiros solicitando elevadores em andares diferente do terreo.
52
Referencias Bibliograficas
Gentle, J. E. (2003) Random Number Generation and Monte Carlo Methods. Springer, 2
edn.
Ross, S. (2006) Simulation. Academic Press, 4 edn.
Ross, S. M. (1996) Stochastic Process. John Wiley & Sons, Inc.
Sokolowski, J. A. e Banks, C. M. (2009) Principles of Modeling and Simulation. John
Wiley & Sons.
Taylor, H. M. e Karlin, S. (1998) An Introduction to Stochastics Modeling. Academic
Press, 3 edn.