Você está na página 1de 56

Universidade Federal Fluminense

Instituto de Matemática e Estatı́stica


Curso de Estatı́stica

Fabio Mascarenhas Loureiro

Otimização de um Sistema de Elevadores à partir da


Simulação de Eventos Discretos

Niterói
2013
Fabio Mascarenhas Loureiro

Otimização de um Sistema de Elevadores à partir da


Simulação de Eventos Discretos

Monografia apresentada ao Curso de Estatı́stica da


UFF, como requisito para a obtenção do grau de
BACHAREL em Estatı́stica.

Orientadora: Jessica Quintanilha Kubrusly


Doutora em Matemática

Niterói
2013
Fabio Mascarenhas Loureiro

Otimização de um Sistema de Elevadores à partir da


Simulação de Eventos Discretos

Monografia apresentada ao Curso de Estatı́stica da


UFF, como requisito para a obtenção do grau de
BACHAREL em Estatı́stica.

Aprovado em Março de 2013

BANCA EXAMINADORA

Jessica Quintanilha Kubrusly


Doutora em Matemática

Valentin Sisko
Doutor em Estatı́stica

Victor Hugo de Carvalho Gouvêa


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 àquelas pessoas que me
ajudaram e me apoiaram até aqui mas que não
resistiram para compartilhar deste momento
junto a mim.
Resumo

Quando se lida com problemas de modelagem estocástica é comum nos depa-


rarmos com sistemas complexos que, em alguns caso, são impossı́veis de se resolver de
forma analı́tica. Diante disto, é comum usarmos a simulação para entender e estudar
fenômenos 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, já na
segunda, cada elevador para em andares especı́ficos. O objetivo principal do trabalho é
decidir em qual dos dois sistemas o tempo médio de espera dos passageiros é menor.

Palavras-chaves: Processos Estocásticos, Geração de Variáveis Aleatórios, Geração de


Processo de Poisson Homogêneo e não Homogêneo, Simulação, Simulação de Sistemas de
Filas.
Agradecimentos

Gostaria de agradecer primeiramente à minha mãe (Nadia), por todo o apoio


que me foi dado. Sei que passamos tempos difı́ceis e talvez não seja tão mais fácil daqui
em diante, mas tenho certeza que poderei sempre contar com a sra.

Agradeço também 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.

Não 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, Garçom da Mineira, China,
Orelha, Nariz, Paulista, Ubá, José, Natan e Lage.

Agradeço também aos que ajudaram no meu crescimento acadêmico: Linda


novamente, Bruna, Fernanda, Kiese, Carol, Marcela, Evelyne, Guilherme, Clark e Lex.

Ao falar dos meus conhecimento acadêmicos, nunca poderia deixar de agra-


decer minha orientadora (Jessica). Agradeço por todo o tempo dedicado, paciência e
puxões de orelha que me deu. Aprendi muito com a sra. e espero podermos trabalhar
juntos novamente.

Gostaria ainda de não só agradecer, mas também dedicar este trabalho a quatro
pessoas. Pessoas que foram e continuarão sendo muito importantes na minha vida.

Pai (Hélio), 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, você pode não ver o término desta etapa da minha vida, não fisica-
mente, mas sei que está 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 lá te ver formando!”. Tenho certeza que estará!

Tia (Bené), nunca esquecerei a sra. Você tinha um sentimento por mim e pela
minha mãe que inexplicavelmente é maior do que o de muitas pessoas que já passaram
por nossas vidas. Não só agradeço, mas afirmo que sempre lembrarei do auxı́lio e “dicas”
que me deu em vida. Obrigado!

Por último, mas não menos importante, gostaria de agradecer a pessoa que me
incentivou e acreditou desde sempre na minha capacidade, meu avô (Carlos). É com uma
alegria, seguida de profunda tristeza, que escrevo este agradecimento. Vô, infelizmente
não está 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, paciência, dedicação e incentivo que me deste serei eternamente grato. Você
teve a mim como um filho e eu o considero como tal! Não poderei abraçá-lo após minha
apresentação nem após meu último dia na faculdade, mas sempre lembrarei de você. Por
isso, mesmo não estando comigo fisicamente, estará sempre presenta na minha vida.

4
Sumário

Lista de Figuras 7

Lista de Tabelas 8

1 Introdução 9

2 Geração de Variáveis Aleatórias 11

2.1 Números Pseudo-Aleatórios . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Geração de Variáveis Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.1 Método da Transformada Inversa - V. A. Discreta . . . . . . . . . . 14

2.2.2 Método da Transformada Inversa - V. A. Contı́nuas . . . . . . . . . 15

2.2.3 Geração de uma exponencial . . . . . . . . . . . . . . . . . . . . . . 17

3 Geração de um Processo de Poisson 19

3.1 Processo de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.1 Tempo entre Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Processo de Poisson não-Homogêneo . . . . . . . . . . . . . . . . . . . . . 21

3.3 Geração de Processo de Poisson Homogêneo . . . . . . . . . . . . . . . . . 21

3.4 Geração de Processo de Poisson não-Homogêneo . . . . . . . . . . . . . . . 22

4 Simulação de Sistemas 24

4.1 Conceituando Eventos Discretos . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 Sistema com um servidor e fila única . . . . . . . . . . . . . . . . . . . . . 26

4.3 Sistema com vários servidores e fila única . . . . . . . . . . . . . . . . . . . 28

4.4 Sistema com vários servidores e filas em paralelo . . . . . . . . . . . . . . . 31


4.5 Determinando o número de simulações realizadas . . . . . . . . . . . . . . 34

4.5.1 Critério de Parada das Simulações . . . . . . . . . . . . . . . . . . . 35

5 Aplicação Prática: Simulando um Sistema de Elevadores 36

5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.3 Resultados da Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.4 Modelo simulado para λ homogêneo . . . . . . . . . . . . . . . . . . . . . . 44

5.5 Modelo simulado para λ não homogêneo . . . . . . . . . . . . . . . . . . . 47

6 Conclusões 51
Lista de Figuras

2.1 Função de distribuição acumulada de uma variável aleatória discreta. . . . 14

4.1 Sistema com um servidor em fila única . . . . . . . . . . . . . . . . . . . . 26

4.2 Sistema com k servidores e fila única . . . . . . . . . . . . . . . . . . . . . 29

4.3 Sistema com k servidores e k filas . . . . . . . . . . . . . . . . . . . . . . . 32

5.1 W resultante da simulação de 3 elevadores e λ = 2. . . . . . . . . . . . . . 46

5.2 W resultante da simulação de 3 elevadores e λ = 3. . . . . . . . . . . . . . 46

5.3 W resultante da simulação de 3 elevadores e λ = 4. . . . . . . . . . . . . . 47

5.4 W resultante da simulação de 3 elevadores e λ = 5. . . . . . . . . . . . . . 47

5.5 Curvas das funções das taxas de chegada λ(t). . . . . . . . . . . . . . . . . 48

5.6 W resultante da simulação de 4 elevadores e λ1 (t). . . . . . . . . . . . . . . 50

5.7 W resultante da simulação de 4 elevadores e λ2 (t). . . . . . . . . . . . . . . 50


Lista de Tabelas

5.1 Tempos que incidem sobre os modelos simulados. . . . . . . . . . . . . . . 43

5.2 Variáveis que definem os sistemas. . . . . . . . . . . . . . . . . . . . . . . . 43

5.3 Tempo médio (minutos) no sistema 1 para λ homogêneo. . . . . . . . . . . 45

5.4 Tempo médio (minutos) no sistema 2 para λ homogêneo. . . . . . . . . . . 45

5.5 Tempo médio (minutos) no sistema 1 para λ não homogêneo. . . . . . . . . 49

5.6 Tempo médio (minutos) no sistema 2 para λ não homogêneo. . . . . . . . . 49


9

1 Introdução
Ao modelar um sistema que envolve variáveis estocásticas muitas vezes é pre-
ciso optar entre um modelo mais fiel à realidade ou outro modelo que seja mais matemati-
camente tratável. Como por exemplo, ao modelar um sistema bancário pode-se optar por
um modelo mais realista que considere chegadas não homogêneas ao longo do dia, variação
no tempo de atendimento entre diferentes atendentes, possı́veis faltas de funcionários ou
até mesmo pausas durante o expediente. Porém para que esse sistema tenha uma solução
analı́tica é preciso simplificá-lo bastante, por exemplo, considerar as chegadas homogêneas
e descartar as demais complicações citadas.

Com o avanço da computação surgiu uma terceira possibilidade para analisar


sistemas estocásticos. A ideia é implementar e simular sistemas considerando alguns
complicadores a fim de tornar a modelagem o mais fiel possı́vel à realidade. A análise
do sistema será feita a partir das observações geradas pelas simulações realizadas. Dessa
forma não será fornecida uma solução analı́tica, porém a partir dessas observações será
possı́vel fazer inferências sobre o sistema. Vale ressaltar que para uma boa representação
da realidade é recomendável que os parâmetros da simulação sejam bem estimados a partir
de um estudo prévio.

O objetivo deste trabalho é implementar e simular um sistema de elevadores


a fim de estudar o tempo de espera dos clientes. Para isso serão considerados duas
alternativas: a primeira considera que todos os elevadores param em todos os andares e
existe uma única fila, já 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 será introduzido o conceito de números pseudos-aleatórios assim


como algumas formas de geração de variáveis aleatórias. No Capı́tulo 3 serão definidos
Processos de Poisson Homogêneo e não Homogêneo e formas de geração desses processos
estocásticos. No Capı́tulo 4 serão conceituado alguns tipos de simulação, apresentados
alguns exemplos de simulação com filas e por fim feita uma breve discussão sobre o número
de simulações a serem realizadas. No Capı́tulo 5 será apresentado o problema do elevador
1 Introdução 10
bem como os resultados obtidos. Por fim, no Capı́tulo 6 serão feitas as conclusões e as
considerações finais com relação ao trabalho.
11

2 Geração de Variáveis Aleatórias

2.1 Números Pseudo-Aleatórios

Uma sequência de números pseudo-aleatórios é uma cadeia de valores gerados


à partir de uma regra, tal que, estes tentam “imitar” da melhor maneira possı́vel uma
variável aleatória distribuı́da uniformemente no intervalo (0, 1). O intuito disto é criar
um conjunto de valores sequenciais que, apesar de não serem de fato aleatórios, não
apresentem previsibilidade aparente.

Um dos métodos mais utilizados para se tentar realizar tal simulação é o mé-
todo congruencial multiplicativo (Ross, 2006; Gentle, 2003). A proposta deste gerador é
construir uma sequência de números pseudo-aleatórios onde, primeiramente é gerada uma
sequência de números naturais {xn }∞
n=1 de acordo com a expressão (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 é chamada de semente e pode ser qualquer valor real. As


constantes a e m são inteiras e o termo mod m representa o resto da divisão por m.
Tem-se então que a sequência de números pseudo-aleatório no intervalo (0, 1) é definida
por

xn
un = (2.2)
m
Exemplo 2.1.1. Ao definir x0 = 1, a = 5 e m = 139, os dez primeiros termos da sequência
xn serão gerados da seguinte maneira:
2.1 Números Pseudo-Aleatórios 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 função mod m retorna o resto da divisão por m, xn ∈


{0, 1, . . . , m − 1}, neste caso, xn ∈ {0, 1, . . . , 138}. Posterior a isto pode-se calcular a
sequência de valores un ∈ [0, 1). Os dez primeiros números pseudo-aleatórios gerados
para os parâmetros definidos serão:

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 método utiliza 3 parâmetros para ser inicializado e todos
devem ser fornecidos pelo programador, assim, é razoável que se tome algumas medidas
para maior eficiência do método.

Primeiramente, pela forma de cálculo utilizado, acaba que em algum momento


a sequência comece a se repetir. Desta forma, caso seja escolhido um m pequeno, a
sequência se repetirá com maior rapidez. Assim, é comum e de maior eficácia a utilização
2.2 Geração de Variáveis Aleatórias 13
de um m relativamente grande. Entretanto, pode-se observar que se a divisão por m
resultar em 0, todos os outros termos da sequência serão nulos. Logo, busca-se utilizar,
além de m grande, m primo. Com isto, espera-se dificultar o fato da sequência gerada
se anular à partir de um dado momento. Observe também que, apesar dos recursos
computacionais estarem bastante evoluı́dos, por uma limitação, Ross (2006) sugere que
seja utilizado m = 231 − 1, sendo este o maior valor computável primo para computadores
de 32 bit.

Para os valores de a e x0 não há muitas recomendações, porém como x0 será


o valor que definirá toda a sequência gerada, é natural que sejam utilizados critérios de
escolha para o mesmo de forma que, cada vez que se for gerar uma sequência, estas sejam
diferentes umas das outras. Para a Ross (2006) sugere o valor de a = 75 .

Segundo tais critérios, espera-se que a sequência gerada seja aparentemente


derivada de uma variável com distribuição U nif orme (0, 1) para todo x0 escolhido e que
a mesma irá demorar um tempo consideravelmente grande até recomeçar a geração.

Outro tipo de método para a geração de números pseudo-aleatórios, ainda


dentro da famı́lia de geradores congruenciais, é o método misto. Neste modelo, o valor
será gerado segundo a equação por

xn = (axn−1 + c) mod m. (2.3)

Neste modelo, cada número é calculado dependendo do anterior, bem como no


método multiplicativo, e a, c e m são números inteiros, tais que a < m e c < m. Neste
caso, a divisão un = xn /(m − 1) resulta num número pseudo-aleatório real pertencente ao
intervalo (0, 1).

Para este trabalho só foi utilizado o método congruencial multiplicativo, assim,
para maiores detalhes acerca de outros métodos de geração veja Ross (2006).

2.2 Geração de Variáveis Aleatórias

Existem diversos métodos para geração de variáveis aleatórias. O método da


transformada inversa é um deles, ele utiliza a função de distribuição acumulada da variável
aleatória a ser gerada junto com uma sequência de números pseudo-aleatórios.
2.2 Geração de Variáveis Aleatórias 14
Neste capı́tulo serão apresentados as formas de geração de variáveis aleatórias
discretas e contı́nuas, utilizando o método da transformada inversa. Para mais detalhes
sobre este ou outros métodos de geração, veja Ross (2006).

2.2.1 Método da Transformada Inversa - V. A. Discreta

Para este método usaremos o fato da função de distribuição acumulada FX de


uma variável aleatória X discreta ser sempre uma função do tipo escada. Começada em
0 e finalizada em 1. Logo, Im(Fx ) = (0, 1). Assim, a forma de se gerar uma variável
aleatória discreta a partir do método da transformada inversa, deve-se primeiro gerar um
número pseudo-aleatório no intervalo (0, 1] e em seguida verificar em qual “patamar” da
distribuição acumulada se encontra o número gerado, ou seja, em qual intervalo xi , xi+1
se localiza a variável U ∼ U nif (0, 1) gerada.

Figura 2.1: Função de distribuição acumulada de uma variável aleatória discreta.

Explicitando de forma lógica o método voltado para uma distribuição discreta


segue que: seja X = x0 , x1 , x2 , . . . os possı́veis valores ordenados da variável aleatória
X que se quer gerar e P0 , P1 , . . . , Pn as respectivas probabilidades, podemos obter um
elemento de forma aparentemente aleatória segundo o pseudo-código definido abaixo.

1 Gera discreta
2

3 Gerar uma variável aleatória U ∼ U nif (0, 1), isto é, um número pseudo-aleatório;
4 Definir i = 0 e F = P0 ;
5 Se U < F , retorna xi ;
2.2 Geração de Variáveis Aleatórias 15
6 Incrementa i : i = i + 1;
7 Incrementa F : F = F + Pi ;
8 Voltar para a linha 5.

Veja que desta forma, garantimos que a probabilidade de gerar X igual a xi


é 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 variável aleatória X com distribuição 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-código gera discreta.

1 U = u, onde u ∼ U nif (0, 1)


2 se U < 0.25, então retorna x = x1 = 0, senão:
3 se U < 0.75, então retorna x = x2 = 1, senão:
4 retorna x = x3 = 2

Note que para se obter uma amostra com vários elementos, basta replicar o
procedimento descrito diversas vezes.

2.2.2 Método da Transformada Inversa - V. A. Contı́nuas

O método da transformada inversa para a geração de variáveis aleatórias contı́-


nuas só pode ser aplicado para gerar uma variável aleatória quando é conhecida a inversa
da sua função de distribuição acumulada, denotada por F −1 . Segue então que, seja X
uma variável aleatória contı́nua, então Fx é uma função contı́nua não-descrescente, tal
que Im(Fx ) = (0, 1).
2.2 Geração de Variáveis Aleatórias 16
Supondo X variável aleatória tal que F −1 é conhecida, pode-se utilizar o
pseudo-código descrito abaixo para se obter uma observação aparentemente aleatório de
X.

1 Gera contı́nua
2

3 Gerar uma variável aleatória U ∼ U nif (0, 1), isto é, um número pseudo-aleatório;
4 Retornar X = F −1 (U ).

Veja que assim observação gerada realmente vem de uma população cuja dis-
tribuição acumulada é dada por F :

P (Saida ≤ x) = P (F −1 (U ) ≤ x) = P (U ≤ F (x)) = F (x)

Exemplo 2.2.2. Seja X uma variável aleatória com densidade f (x) = 2x, 0 < x < 1. Logo,
a distribuição acumulada é dada por




 0, se x<0

F (x) = x2 , se 0 ≤ x < 1


x≥1

 1, se

Suponha que se quer gerar um valor de X e para isso o pseudo código“Gera contı́nua”.
Primeiramente deve-se encontrar a função de distribuição acumulada inversa:

X 2 = U ⇒ X = U 1/2

Uma vez encontrada a inversa da distribuição acumulada, basta aplicá-la na


função implementada.

1 U = u, onde u ∼ U nif (0, 1);



2 Retorne x = U
2.2 Geração de Variáveis Aleatórias 17
Este método é bastante eficaz e possui uma forma bem rápida e direta de se
gerar valores aleatórios, porém, ele exige que se saiba além da função acumulada, saber
inverter a mesma. Para as distribuições continuas tais que a distribuição acumulada
não é conhecida, por exemplo a da distribuição Normal, são utilizados outros métodos
que tratam melhor destas especificidades, como o método da aceitação e rejeição. Neste
trabalho nos limitaremos a falar apenas do método da transformada inversa, já que é mais
simples, em termos de implementação, e funciona bem na geração de todas as distribuições
aqui usadas. Para maiores detalhes acerca do modelo de aceitação e rejeição pode-se
verificar Ross (2006).

2.2.3 Geração de uma exponencial

A distribuição exponencial é um dos pilares do processo de Poisson, desta


forma, saber gerar variáveis aleatórias com tais caracterı́sticas é fundamental para o de-
senvolvimento deste trabalho que tem como base a simulação de um processo de Poisson.
Esta relação será mais bem explicitada no capı́tulo 3.

Definição 2.2.3. Seja X uma variável aleatória contı́nua com função de densidade de
probabilidade dada por

f (x) = λe−λx (2.4)

Então, diz-se que X tem distribuição exponencial com parâmetro λ.

Logo, seja X ∼ Exponencial(λ), então sua função de distribuição acumulada


será dada por

F (x) = 1 − e−λx , x ≥ 0. (2.5)

Veja que a distribuição exponencial possui uma função de distribuição acumu-


lada inversı́vel:

−ln(1 − u)
F (x) = 1 − e−λx ⇒ F −1 (u) = .
λ

Verifique que F −1 (F (x)) = x.


2.2 Geração de Variáveis Aleatórias 18

Vide então que o método da transformada inversa pode ser facilmente utilizado
para a geração de variáveis aleatórias com distribuição exponencial como é mostrada no
pseudo-código Gera exponencial implementado a seguir.

1 Gera exponencial
2

3 Gerar U ∼ U nif (0, 1);


4 Retornar X = − ln(1−U
λ
)

Podemos simplicar ainda mais este código uma vez que U ∼ U nif (0, 1) ⇒
1 − U ∼ U nif (0, 1). Logo, podemos alterar nosso método de geração para uma forma um
pouco mais simples, computacionalmente e matematicamente. Desta forma, temos que

1 Gera exponencial
2

3 Gerar U ∼ U nif (0, 1);


4 Retornar X = − ln(U
λ
)
19

3 Geração de um Processo de Poisson


Nesta sessão primeiro serão definidos os processos de Poisson, homogêneos e
não-homogêneos. Em seguida serão apresentados métodos de geração 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 é fundamental entender o que é um processo de
contagem para depois sim definirmos um processo de Poisson.

Um processo estocástico {N (t), t ≥ 0} é dito como um processo de contagem


quando:

i. N (t) é o total de eventos ocorridos até o instante t;

ii. N (t) ≥ 0;

iii. N (t) é um valor oriundo de um contagem, portanto deve ser um valor inteiro;

iv. Dado s < t, então N (s) < N (t);

v. Dado s < t, então N (t) − N (s) deve ser igual ao número de eventos ocorridos no
intervalo (s, t].

Um processo de contagem é dito possuir incrementos independentes se o nú-


mero de eventos que ocorrem em intervalos de tempos disjuntos, forem variáveis aleatórias
independentes. Ou seja, se um processo de contagem possui incrementos independentes, o
número de eventos que ocorrem até o instante s, N (s), deve ser independente do número
de eventos que ocorrem entre os instantes t e s, N (t) − N (s).

Definição 3.1.1. Um processo de contagem é denominado processo de Poisson Homogêneo


com taxa λ, λ > 0, se

i. N (0) = 0;
3.1 Processo de Poisson 20
ii. O processo possui incrementos independentes;

iii. O número de eventos em qualquer intervalo de tamanho t possui distribuição Poisson


com média λt, ou seja, para todo s, t ≥ 0,

(λt)n
P {N (t + s) − N (s) = n} = e−λt , n = 0, 1, . . .
n!

Observe que à partir de iii temos que E[N (t)] = λt e devido a isto λ é chamado
de taxa do processo.

3.1.1 Tempo entre Eventos

Proposição 3.1.2. Seja {N (t), t ≥ 0} um processo de Poisson homogêneo de taxa λ ≥ 0


e T1 o instante de ocorrência do primeiro evento. Então T1 ∼ Exp(λ).

Demonstração:

FT 1 (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.

Proposição 3.1.3. : Seja {N (t), t ≥ 0} um processo de Poisson homogêneo de taxa λ ≥ 0


e Ti o instante de ocorrência do i−ésimo evento. Seja X1 = T1 e Xi = Ti − Ti−1 para i ≥ 2
o intervalo de tempo entre as ocorrências de ı́ndices i e i − 1.

Então, Xi ∼ Exp(λ).

Esta proposição está enunciada e demonstrada em Taylor e Karlin (1998).


3.2 Processo de Poisson não-Homogêneo 21
3.2 Processo de Poisson não-Homogêneo

O processo de Poisson não-homogêneo se faz necessário quando o número médio


de ocorrências varia no decorrer do tempo t.

Definição 3.2.1. Um processo de contagem {N (t), t ≥ 0} é dito ser um processo de Poisson


não-homogêneo com função 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 função m(t), definida por


Z t
m(t) = λ(s)ds, t≥0 (3.1)
0

é chamada de função do valor médio e indica o número médio de ocorrências no intervalo


(0, t). Utilizando este fato, segue que: N (t + s) − N (t) é uma variável aleatória com
distribuição de Poisson com média m(t + s) − m(t).

Proposição 3.2.2. Suponha que eventos ocoram de acordo com um processo de Poisson
homogêneo com taxa λ. Suponha também que, independente de qualquer coisa que tenha
acontecido, um evento que ocorra no instante t é contado com probabilidade p(t). Então
este processo de contagem obedece um processo de Poisson não homogêneo com função
de intensidade λ(t) = λp(t).

A proposição acima está implementada e demonstrada em Ross (2006). Esse


resultado será de grande utilidade para gerar um processo de Poisson não homogêneo.

3.3 Geração de Processo de Poisson Homogêneo

Para se gerar um processo de Poisson Homogêneo, iremos utilizar como base o


fato dos intervalos entre cada ocorrência serem variáveis aleatórias independentes e com
distribuição Exponencial, como mostrado na Seção 3.1.1.
3.4 Geração de Processo de Poisson não-Homogêneo 22
Seguindo esta ideia, para gerar os instantes de ocorrência de eventos de acordo
com o processo de Poisson Homogêneo serão efetivamente gerados os intervalos de tempo
entre ocorrências consecutivas, que seguem o modelo exponencial.

Geração do Próximo Instante de Tempo

Vejamos agora o pseudo-código de uma função que recebe como argumento o


tempo corrente t e retorna o instante da próxima ocorrência de um processo de Poisson
homogêneo de taxa λ. A função será denotada por “Prox t h” e é implementada abaixo.

1 Prox t h
2

3 Entrada: t > 0;
4 Gera U ∼ U nif (0, 1);
ln(U )
5 t=t− λ
;
6 Retornar t.

Veja que se U ∼ U nif (0, 1), então − ln(U


λ
)
∼ Exp(λ), como já foi mostrado no
Capı́tulo 2.

Uma vez já implementada esta função, caso queira gerar n tempos de ocorrên-
cia de eventos, basta utilizar esta função sucessivas vezes, atualizando sempre o t como o
tempo da última ocorrência.

3.4 Geração de Processo de Poisson não-Homogêneo

Como já citado anteriormente, nem todos os processos que se deseja modelar
são bem ajustados a um processo de Poisson homogêneo. Alguns sistemas podem não
possuir suas taxas de chegada constantes ao longo do tempo, mas sim variáveis.

Desta forma, suponha que se quer gerar o instante da próxima ocorrência de


um processo de Poisson com função de intensidade λ(t). Primeiramente, deve-se escolher
λ tal que λ(t) ≤ λ para todo momento de tempo t.
3.4 Geração de Processo de Poisson não-Homogêneo 23
Posterior a isto, usaremos a Proposição 3.2.2 para gerar os elementos de um
processo não homogêneo à partir de um homogêneo. Ou seja, se um evento de processo de
Poisson homogêneo que ocorre com taxa λ em um tempo t é contado com probabilidade
λ(t)/λ, então este processo de contagem de eventos será um processo de Poisson não-
homogêneo com função de intensidade dada por λ(t). Assim, utilizando a simulação
de um processo de Poisson homogêneo e acrescentando uma probabilidade de contagem
λ(t)/λ aos eventos, ter-se-á um processo de Poisson não-homogêneo.

Geração do Próximo Instante de Tempo t

Vejamos agora a implementação de uma função que recebe o tempo t cor-


rente no sistema e, utilizando os conceitos definidos acima, retorna o próximo instante de
tempo de ocorrência de um evento decorrente de um processo de Poisson não-Homogêneo.
Denotada por Prox t, veja abaixo o pseudo-código da mesma.

1 Prox t
2

3 Entrada: t > 0;
4 Gerar U ∼ U nif (0, 1);
ln(U )
5 t=t− λ
;
6 Gerar V ∼ U nif (0, 1);
7 Se V ≤ λ(t)/λ retorne t, senão:
8 Volte para a linha 4.

Note que os primeiros itens são idênticos à geração do processo de Poisson


homogêneo e apenas foi acrescentada uma “chance” de contagem deste evento no processo.
24

4 Simulação de Sistemas
Apresentando o conceito de modelo, este é, por definição, uma representação
estática do mundo. A simulação então adiciona aspectos temporais ao “modelo” buscando
representar como o sistema modelado varia no decorrer do tempo. Assim, a simulação
pode ser definida como uma representação tempo-variável do modelo (Sokolowski e Banks,
2009).

Observe também que a simulação nos dá a vantagem de podermos conduzir


múltiplos experimentos sobre um modelo em condições variáveis sem termos a necessidade
de grandes recursos nem de modificar o sistema criado.

A simulação possui basicamente duas vertentes, simulação de eventos discretos


e simulação contı́nua. A simulação de eventos discretos decorre daqueles eventos que va-
riam de um estado para outro com o passar do tempo enquanto que na simulação 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 semáforo a um carro.


Equanto o semáforo só pode estar nas cores verde, amarelo ou vermelho (estados 1, 2 ou
3) independente do tempo, por outro lado, o carro não altera sua velocidade para zero
instantaneamente mas sim vai variando sua velocidade, desacelarando, no decorrer do
tempo. Esta mudança de velocidade é contı́nua.

Diferenciar estes dois tipos de eventos é importante para a implementação dos


processos que se seguirão. Neste trabalho serão abordados apenas modelos discretos e
neste capı́tulo serão apresentados alguns tipos de sistemas e suas respectivas formas de
simulação.

Além do mais, ainda podemos classificar os modelos de simulação em deter-


minı́sticos ou estocásticos (existem outros tipos, porém menos usuais). Num modelo de
simulação determinı́stico, este, não contém nenhuma variável aleatória, ou seja, para um
conjunto conhecido de dados de entrada teremos um único conjunto de resultados de saı́da.
Já nos modelos estocásticos, existem uma ou mais variáveis aleatórias como entrada, que
levam a saı́das aleatórias. É utilizado o modelo estocástico quando ao menos uma das
4.1 Conceituando Eventos Discretos 25
caracterı́sticas operacionais é dada por uma função de probabilidade.

Vide pela definição, então, que os modelos apresentados e os que serão imple-
mentados ao longo do trabalho são modelos de simulação estocástico de eventos discretos.

4.1 Conceituando Eventos Discretos

Primeiramente, vale conceituar alguns itens que serão usados frequentemente


de agora em diante. A simulação de eventos discretos pode ser definida como a va-
riação ocorrida num modelo devido a uma sequencia cronológica de eventos que agiram,
agem, sobre o mesmo; eventos são ocorrências instantâneas que causam a variação, mu-
dança, do estado do sistema; e o estado do sistema é definido por uma ou mais variáveis
que descrevem completamente um sistema para qualquer tempo dado.

Segue então que, o princı́pio de uma simulação deve ser a definição das variáveis
que serão utilizadas bem como os eventos possı́veis, pois serão eles que irão nortear nosso
algoritmo para uma maior proximidade da realidade. Para o sistema deste trabalho usou-
se basicamente três tipos de variáveis:

1. Variáveis que definem o sistema - São representadas pelas variáveis utilizadas


na definição do sistema. Podem ser representadas pelo tempo máximo do sistema
T e λ(t), dentre outras;

2. Variáveis de Interesse - São as variáveis que serão criadas durante o código


visando análises futuras. Aqui estão incluı́das variáveis como tamanho máximo
de uma fila, quantidade de eventos ocorridos até o tempo T , maior tempo entre
eventos, e quaisquer outras variáveis que se tenha interesse no experimento;

3. Variáveis de Controle - São aquelas que definem as mudanças de estado do sis-


tema, nos ajudando a controlar e conseguir realizar a simulação. A real utilidade
destas variáveis se tornará mais clara no decorrer do capı́tulo. Entretanto, podemos
citar como exemplos desta variável o tempo t corrente e total de pessoas no sistema
num dado instante.

Nas seções a seguir serão vistos exemplos clássicos de sistemas estocásticos


cuja simulação é feita via eventos discretos. Muitos sistemas mais complexos, como o
4.2 Sistema com um servidor e fila única 26
apresentado no capı́tulo 5 em geral podem ser decompostos em partes mais simples, como
tais exemplos.

No decorrer deste capı́tulo serão apresentados algumas aplicações das teorias e


algoritmos já implementados anteriormente para simularmos sistemas de fila/servidor. Na
seção 4.2 será apresentado como se construir a base de um algoritmo para um sistema de
servidor e fila únicos. Nas seções 4.3 e 4.4 serão implementados algoritmos para múltiplos
servidores, com filas única e múltiplas.

4.2 Sistema com um servidor e fila única

Nesta seção será apresentado um pseudo-código que realiza a simulação de um


sistema com um único servidor em fila única.

Neste tipo de sistema os clientes chegam e, caso o servidor esteja desocupado,


são imediatamente atendidos. Caso contrário, o cliente entra na fila. Assim, os clientes
serão atendidos na ordem em que chegaram. Este conceito é conhecido como FIFO (first
in-first out) e é válido para todos os casos de sistemas com fila única. De forma simples
pode-se exemplificar este sistema como um banco onde só esteja funcionando um caixa.

Entrada de Clientes Saı́de de Clientes

Figura 4.1: Sistema com um servidor em fila única

Ao realizarmos a simulação deste sistema podemos estar interessados em ana-


lisar o tempo que cada cliente fica no sistema ou o tamanho máximo da fila. Veja que
ambos são variáveis aleatórias que não conhecemos a distribuição, uma vez que o sistema é
complexo. O que queremos com a simulação é observar possı́veis amostras dessas variáveis
para poder fazer inferências em cima dela e com isso tomar decisões.

Para realizar a simulação utilizaremos as seguintes variáveis:

1. Variáveis que definem o sistema - tempo máximo T que o servidor irá funcionar;
e taxa de chegada λ(t) dos clientes no sistema;
4.2 Sistema com um servidor e fila única 27
2. Variáveis de interesse - um array que guarda o horário de chegada dos clientes
no sistema, denominado N A; um array que guarda o horário de saı́da dos clientes,
denominado N D;

3. Variáveis de controle - tempo corrente (t); quantidade de pessoas no sistema em


um dado instante t (n); tempo de chegada do próximo cliente no sistema (tc ); tempo
de saı́da do último cliente até o instante t (ta ); e o número de pessoas que entraram
no sistema (S).

Para a implementação será considerado que os clientes chegam no sistema de


acordo com um processo de Poisson, homogêneo ou não, dependendo da modelagem.
Caso a escolha seja por chegadas de acordo com um processo homogêneo, a função prox t
citada no pseudo código a seguir deve ser implementada como prox t h da página 22,
caso contrário, essa função será definida por prox t da página 23. Assim, segue abaixo o
pseudo-código para a simulação de tal sistema.

1 Inicialização:
2 t = 0;
3 ta = ∞;
4 tc = prox t(0);
5 n = 0;
6 S = 0.
7 N A = N D = N U LL;
8

9 Caso 1: tc < ta e tc < T (um cliente chega no sistema)


10 t = tc ;
11 S = S + 1;
12 N A[S] = t;
13 tc = prox t(t);
14 n = n + 1;
15 se n = 1, gera ta ;
16 Volte para a linha 9.
17

18 Caso 2: ta ≤ tc e tc , ta < T (termina o atendimento de um cliente)


4.3 Sistema com vários servidores e fila única 28
19 t = ta ;
20 N D[S − n] = ta ;
21 n = n − 1;
22 se n ≥ 1, gera ta ;
23 se n = 0, ta = ∞; Volte para a linha 9.
24

25 Caso 3: T ≤ ta e T ≤ tc (sistema é esvaziado: não entram mais clientes)


26 se n = 0, FIM;
27 t = ta ;
28 N D[S − n] = ta ;
29 n = n − 1;
30 se n ≥ 1, gera ta e volta para a linha 27;
31 se n = 0, FIM.

No código mostrado não especificamos qual a função para gerar ta . Isto se


deve ao fato de que este tempo pode ser qualquer função G definida pelo pesquisador ao
implementar o código. Neste caso o ideal seria fazer um estudo prévio da distribuição
mais adequada.

Note que para a obtenção de estatı́sticas tais como tempo médio de atendi-
mento e ou total de clientes atendidos no sistema, basta analisarmos as variáveis N A,
N D e S. A exemplo, sendo N A e N D arrays que guardam o horário de chegada e saı́da
dos clientes, logo N A − N D é um array que guarda o tempo que cada cliente ficou no
sistema.

Perceba que o código apresentado não possui muitas variáveis de interesse e ou


de controle, todavia, este pseudo-código tem a intenção de auxiliar, servindo como base,
na construção de sistemas mais complexos com entradas e saı́das semelhantes.

4.3 Sistema com vários servidores e fila única

Na seção anterior foi implementado o pseudo-código para um sistema com um


único servidor e fila únicos. Nesta, será construı́do a sequência lógica para implementação
de um sistema com k servidores e uma única fila.
4.3 Sistema com vários servidores e fila única 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.

Saı́da de clientes

Servidor 1

Entrada de Clientes ..
.
Clientes
Saı́da de clientes

Servidor k

Figura 4.2: Sistema com k servidores e fila única

Suponha que se quer simular este sistema levando em consideração as mesmas


afirmações feitas na seção 4.2. Os clientes chegam conforme um processo de Poisson não
homogêneo com taxa λ(t) e os tempos de atendimento dos servidores é determinado por
um função G.

Para este tipo de sistema deve-se levar em consideração algo que não era im-
portante para um sistema com um único servidor. Na seção 4.2 seguia-se um sistema
FIFO, coisa que neste tipo de sitema não podemos afirmar. Ou seja, o i-ésimo cliente que
chega ao sistema não necessariamente será o i-ésimo cliente a sair do sistema, uma vez
que este pode demorar mais no atendimento do que outro cliente que chegue depois dele.

Para a simulação deste sistema utilizaremos as seguintes variáveis:

1. Variáveis que Definem o Sistema - tempo máximo que o servidor irá funcionar
(T ); e taxa de chegada dos clientes no sistema (λ(t));

2. Variáveis de Interesse - horários de chegada dos clientes no sistema, denominado


N A; horários de saı́da dos clientes, denominado N D;

3. Variáveis de Controle - tempo corrente (t); quantidade de pessoas no sistema


em um dado instante t (n); o tempo de chegada do próximo cliente no sistema (tc );
um array com os horários de saı́da dos clientes do servidor (ta ); e a quantidade de
pessoas que entram no sistema, (S).
4.3 Sistema com vários servidores e fila única 30
Supondo que se tem os mesmso interesses da seção 4.2, vejamos como pode-se
implementar um pseudo-código para este tipo de sistema.

1 Inicialização:
2 t = 0;
3 ta = (∞, . . . , ∞);
4 n = 0;
5 S = 0;
6 tc = prox t(0);
7 N A = N D = N U LL;
8

9 Caso 1: tc < min(ta ) e tc < T (um cliente entra no sistema)


10 t = tc ;
11 S = S + 1;
12 N A[S] = t;
13 tc = prox t(t);
14 n = n + 1;
15 se n ≤ k, seja i o ı́ndice de um sevridor vazio, gere ta [i];
16 Volte para a linha 9.
17

18 Caso 2: min(ta ) ≤ tc e tc , min(ta ) < T (um cliente termina o atendimento)


19 t = min(ta );
20 N D[j] = t, onde j corresponde a ordem de chegada cliente que está saindo do sistema;
21 n = n − 1;
22 seja i o ı́ndice do servidor que terminou o atendimento;
23 se n ≥ k, gere ta [i]; senão faça ta [i] = ∞
24 Volte para a linha 9.
25

26 Caso 3: T ≤ min(ta ) e T ≤ tc (sistema é esvaziado)


27 se n = 0, FIM;
28 t = min(ta );
29 N D[j] = t, onde j corresponde a ordem de chegada do cliente que está saindo do sistema;
30 n = n − 1;
4.4 Sistema com vários servidores e filas em paralelo 31
31 se n ≥ k, seja i o ı́ndice do servidor que acabou o atendimento, gere ta [i], senão ta [i] = ∞
32

33 Volte para a linha 27;

Para o sistema simulado acima vale algumas considerações. A variável ta , é


vetor de tamanho k onde cada posição corresponde a um servidor, sendo este ordenado
segundo sua posição neste vetor. Ou seja, o tempo de atendimento do servidor i será
representado por ta [i]. Note que as comparações em cada caso utiliza min(ta ), isto é,
o menor valor do vetor ta . Desta forma, sabemos o próximo servidor que será liberado.
A atualização de N D tambem se difere da seção 4.2, já que, como dito, os clientes não
necessariamente são atendidos na mesma ordem em que entram no sistema.

Caso queira inferir em cima dos dados simulados vale as considerações realiza-
das na seção 4.2, basta utilizar N A, N D, S e qualquer outro tipo de variável de interesse
que o pesquisador queira incrementar no pseudo-código implementado. São exemplos de
variáveis que não estamos controlando neste pseudo-código: tamanho máximo da fila e
quantidade de pessoas atendidas por servidor. Note também que os servidores atendiam
todos segundo uma função G e caso queira tornar os sistema mais real deve-se levar
em consideração uma distribuição diferente para cada servidor, já que, usualmente, os
atendentes, servidores, dificilmente atenderão de forma idêntica.

4.4 Sistema com vários servidores e filas em paralelo

Nesta seção iremos abordar o último caso de simulação de sistemas. O sistema


terá como base k servidores, como na seção 4.3, porém 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 serão 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 Seção 4.3, o sistema não segue um padrão F IF O.
Entretanto, aqui o cliente opita por qual servidor será atendido logo na sua chegada, en-
4.4 Sistema com vários servidores e filas em paralelo 32
quanto que, no sistema da seção 4.3, os clientes escolhiam isto na exata hora do atendi-
mento.

Entrada de clientes Saı́da de clientes

Fila 1 Servidor 1
.. ..
. .

Entrada de clientes Saı́da de clientes

Fila k Servidor k

Figura 4.3: Sistema com k servidores e k filas

Com isto, para realizarmos a confecção do pseudo-código deste sistema utili-


zaremos as seguintes variáveis:

1. Variáveis que definem o sistema - tempo máximo que o servidor irá funcionar
(T ); e taxa de chegada dos clientes no sistema λ(t);

2. Variáveis de interesse - horário de chegada dos clientes no sistema (N A); e horário


de saı́da dos clientes (N D);

3. Variáveis de controle - tempo corrente (t); quantidade de pessoas no sistema em


um dado instante (n); tempo de chegada do próximo cliente no sistema (tc ); vetor
com horários de saı́das dos clientes do sistema (ta ); vetor que indica a quantidade
de pessoas na fila de cada servidor (f ila).

Com as variáveis definidas, tem-se que o pseudo-código para este tipo de sis-
tema pode ser implementado como é mostrado a seguir.

1 Inicialização:
2 t = 0;
3 ta = (∞, . . . , ∞);
4 n = 0;
4.4 Sistema com vários servidores e filas em paralelo 33
5 S = 0;
6 f ila = (0, . . . , 0);
7 N A = N D = N U LL;
8 tc = prox t(0);
9

10 Caso 1: tc < min(ta ) e tc < T (um cliente entra no sistema)


11 t = tc ;
12 S = S + 1;
13 N A[S] = t;
14 n = n + 1;
15 seja i o ı́ndice do servidor com fila menor;
16 f ila[i] = f ila[i] + 1; se f ila[i] = 1, gera ta [i];
17 Volte para a linha 10.
18

19 Caso 2: min(ta ) ≤ tc e min(ta ) < T (um cliente termina o atendimento)


20 t = min(ta );
21 N D[j] = t, onde j corresponde a ordem de chegada do cliente que está saindo do sistema;
22 n = n − 1;
23 seja i o ı́ndice do servidor que terminou o atendimento;
24 f ila[i] = f ila[i] − 1;
25 se f ila[i] ≥ 1, gera ta [i];
26 senão ta [i] = ∞;
27 Volte para a linha 10.
28

29 Caso 3: T ≤ min(ta ) e T ≤ tc (sistema é esvaziado)


30 se n = 0, FIM;
31 t = min(ta );
32 N D[j] = t, onde j corresponde ao ı́ndice de chegada do cliente que está saindo do sistema;
33 n = n − 1;
34 seja i o ı́ndice do servidor que terminou o atendimento;
35 f ila[i] = f ila[i] − 1;
36 se f ila[i] ≥ 1, gera ta [i]; senão, ta [i] = ∞;
37 Volte para a linha 30
4.5 Determinando o número de simulações realizadas 34
Acerca deste sistema, valem os mesmos comentários feitos nas Seções 4.2 e 4.3.
No entanto, ao simularmos os sistemas com k servidores atendendo com um única fila ou
com filas em paralelo podemos obter um resultado bastante conhecido.

Se mantivermos a mesma função de atendimento G e chegada dos clientes


com mesmo λ(t) para ambos os sistemas, podemos realizar comparações em relação a
performance de cada um. Observando os tempos de espera no sistema, os tamanhos
máximos da fila e ou os tempos que cada servidor fica ocioso, dentre outras posı́veis
variáveis, pode-se constatar um resultado bastante conhecido que é a preferência pela
escolha de uma única fila.

Alcançar tal resultado seria bastante complexo, talvez até impossı́vel, analiti-
camente devido a dificuldade em trabalhar com taxas de chegada não homogêneas, por
exemplo.

4.5 Determinando o número de simulações realizadas

Um ponto importante quando se usa a simulação para a tomada de decisões é


o número de simulações que garantem que o resultado obtido é confiável. Como em geral
estamos analisando a média de alguma variável aleatória podemos nos basear na lei dos
grandes números.

Lei dos Grandes Números

A Lei dos Grandes números é uma das aplicações de convergência de variáveis


aleatórias, além de um resultado muito importante em probabilidade. De forma geral o
teorema mostra que uma sequência de variáveis aleatórias definida pela média amostral
de variáveis aleatórias identicamente distribuı́das e com esperança finita converge para a
variável aleatória degenerada dada pela média populacional.

Existem duas versões principais dessa lei, a versão fraca e a forte. A dife-
rença entre elas é o tipo de convergência usada: a lei fraca garante a convergência em
probabilidade enquanto a versão forte garante a convergência quase certa.

Teorema 4.5.1. Lei Fraca dos Grandes Números de Khintchin


Seja {Xn } uma sequência de variáveis aleatórias independentes, identicamente distribuı́das
4.5 Determinando o número de simulações realizadas 35
tais que E[Xn ] = µ < ∞. Então,
P
X̄n −−−→ µ,
n→∞
Pn
Xi
onde X̄n = i=1
n
.

Teorema 4.5.2. Lei Forte dos Grandes Números de Kolmogorov


Seja {Xn } uma sequência de variáveis aleatórias independentes, identicamente distribuı́das
tais que E[Xn ] = µ < ∞. Então,
q.c.
X̄n −−−→ µ,
n→∞
Pn
Xi
onde X̄n = i=1
n
.

4.5.1 Critério de Parada das Simulações

Seja T a variável para a qual queremos determinar a sua média e seja Ti a


T1 +T2 +...+Ti
observação dessa variável na simulação i. Defina Wi = i
, ou seja, Wi é a média
amostral das primeiras i observações da variável T .

Pela lei dos grandes números podemos garantir que Wi −−−→ E[T ]. Dessa
i→∞
forma o número de simulações será determinado pela variável Wi . Enquanto Wi varia
muito, deve-se continuar simulando. A partir do momento que Wi varia pouco com a
atualização feita devido a novas simulações, podemos assumir que Wi já está próximo do
seu limite, logo próximo de E[T ]. Nesse caso assumimos que o último Wi calculado é uma
boa aproximação para o valor procurado E[T ].
36

5 Aplicação Prática: Simulando um Sistema


de Elevadores
Nos capı́tulos anteriores, vimos que a simulação é bastante empregada quando
não podemos resolver de forma analı́tica nossos problemas. Entretanto, vimos diversos
modelos isolados que poderiam auxiliar um futuro programador a realizar a simulação de
um dado sistema.

Neste capı́tulo será apresentada uma aplicação dos conceitos falados até agora
para simular um sistema de elevadores. Nas Seções 5.2 e 5.3 serão apresentadas desde
a implementação do pseudo-código utilizado na simulação do sistema até a extração das
informações e posterior análise das mesmas. Serão realizada também comparações acerca
das melhores formas de disposição do sistema, visando otimizar os tempos de espera dos
clientes.

5.1 Introdução

Atualmente, devido a quantidade de prédios e até mesmo pela pratcidade,


vemos uma grande utilização dos elevadores. Entretanto, nem sempre são realizados
estudos para se saber como alocar ou quantos elevadores utilizar.

Devido a isto, é comum nos depararmos com longas filas ou uma grande quanti-
dade de elevadores que ficam em desuso por não 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 ótima.

Os sistemas levados em consideração 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 consideração uma fila única, já que, como
falado na Seção 4.4, um servidor com fila única é mais eficiente do que um com filas em
paralelo. Para o sistema 2 foi considerada uma fila para cada elevador.

Na seção seguinte serão explicitadas algumas considerações feitas acerca dos


sistemas simulados e como foram implementados.

5.2 Algoritmo

Nesta seção será mostrado como foram implementados os códigos de ambos os


sistemas e as comprações, análises e discussões acerca dos dados obtidos serão realizados
na seção 5.3.

Veja que para as simulações seguintes foram incluı́das uma lista de funções
úteis para a implementação do algoritmo. Tais funções servirão para descrever de forma
mais realı́tica o fenômeno que se quer simular.

Para ambos os sistemas, também não foi levado em consideração a entrada de


passageiros nos andares superiores. Ou seja, os passageiros entram no sistema apenas pelo
andar térreo e são levados de elvador para os andares desejados. Porém não está 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 simulação deste sistema, levou-se em consideração a utilização de n


elevadores onde todos podem parar em qualquer andar. Para a implementação do mesmo,
foram utilizadas as funções prox t e prox t h.

Para a realização da simulação foram utilizadas as seguintes variáveis:

1. Variáveis que definem o sistema - tempo máximo que o servidor irá funcionar
(T ); taxa de chegada dos clientes no sistema (λ); número máximo de pessoas por
elevador, (max elevador); quantidade de elevadores no sistema (n elevadores); e
número de andares (n andares);

2. Variáveis de interesse - vetor com as horas de chegada de cada pessoa (N A);


número de pessoas por dia no elevador (Nc ); vetor com as horas de embarques de
5.2 Algoritmo 38
cada passageiro (N D); e o número de pessageiros que já embarcaram (Ne );

3. Variáveis de controle - tempo corrente (t); uma matriz n andares×n elevadores


em que guarda a quantidade pessoas que irão 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 térreo (temp volta); instante que o próximo cliente
chega na fila (tc ); e o número de pessoas na fila num dado instante t (n f ila).

Além das variáveis, foram utilizadas algumas funções úteis durante a simulação
com o intuito de gerar os andares escolhidos pelos passageiros, atualizar o tempo de viagem
dos elevadores dentre outras.

Veja abaixo o pseudo-código para a implementação do sistema simulado.

1 Inicialização:
2

3 N A = N D = N U LL;
4 Nc = Ne = 0;
5 max f ila = 0;
6 andaresn andares×n elevadores = 0;
7 tc = prox t(0);
8 temp volta = (∞, . . . , ∞);
9 temp viag = (∞, . . . , ∞);
10 n f ila = 0;
11

12 Caso 1: tc < min(temp viag) e tc < min(temp volta) (um passageiro chega na fila)
13

14 t = tc ;
15 Nc = Nc + 1;
16 N A[Nc ] = t;
17 Se existe algum elevador no térreo e seja i o seu ı́ndice:
18 - - Ne = Ne + 1;
19 - - N D[Ne ] = t;
5.2 Algoritmo 39
20 - - Atualizar o vetor andares[i, ] com o andar escolhido pelo passageiro;
21 - - Atualizar temp viag[i];
22 - - tc = prox t(t);
23 Caso não exista elevador no térreo, e seja k o elevador que irá descer primeiro;
24 - - Se n f ila = 0, então:
25 - - - Atualizar temp volta[k];
26 t c = prox t(t);
27 n f ila = n f ila + 1;
28

29 Caso 2: min(temp viag) < tc , min(temp viag) < min(temp volta) (o elevador vai
30 parar)
31

32 Seja k o elevador que irá parar, t = temp viag[k];


33 temp viag[k] = ∞;
34

35 Caso 3: min(temp volta) < tc ) e min(temp volta) < min(temp viag) (o elevador será
36 recarregado)
37

38 Seja k o elevador que será recarregado, t = temp volta[k];


39 andares[k, ] = 0, ou seja, toda a linha k da matriz andares será zerada;
40 Se n f ila > max elevador, então:
41 - - atualizar andares[k, ] segundo os andares escolhidos pelos passageiros;
42 - - N D[Ne , Ne + 1, . . . , Ne + max elevador] = t;
43 - - Ne = Ne + max elevador;
44 - - n f ila = n f ila − max elevador;
45 - - atualizar temp viag[k];
46 - - atualizar temp volta[k];
47 Senão: – atualizar andares[k, ] segundo os andares esocolhidos pelos passageiros;
48 – N D[Ne , Ne + 1, . . . , Ne + max elevador] = t;
49 – Ne = Ne + max elevador;
50 – n f ila = 0;
51 – atualizar temp viag[k];
52 – temp volta[k] = ∞;
5.2 Algoritmo 40
Note que este pseudo-código é bem mais complexo do que os apresentados até
aqui. Entretanto, sua implementação é embasada no outros mais simples realizados no
Capı́tulo 4.

5.2.2 Sistema 2: n elevadores parando em andares intercalados

Nesta seção, iremos apresentar a simulação de um sistema bastante seme-


lhante com o anterior, entretanto, cada elevador parará em andares especı́ficos é pré-
determinados. Elaborar este outro tipo de sistema tem como fim observarmos o compor-
tamento do tempo médio de espera dos passageiros em relação ao primeiro sistema.

Para a definição dos intervalos de parada foi utilizada a divisão mais igualitária
possı́vel dentre a quantidade de elevadores disponı́veis. Assim, supondo um sistema com
três 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 é formado de forma
consecutiva.

Para as realização da simulação utilizou-se as seguintes variáveis:

1. Variáveis que definem o sistema - tempo máximo que o servidor irá funcionar
(T ); taxa de chegada dos clientes no sistema (λ); número máximo de pessoas por
elevador (max elevador); quantidade de elevadores no sistema (n elevadores); e o
número de andares (n andares).

2. Variáveis de interesse - lista com as horas de chegada de cada pessoa em cada


fila (N A); vetor com o número de pessoas por dia em cada elevador (Nc ); lista com
as horas de embarques de cada passageiro em cada elevador, (N D); e vetor com o
número de pessageiros que já embarcaram em cada elevador (Ne );

3. Variáveis de controle - tempo corrente (t); uma matriz n andares×n elevadores


em que guarda a quantidade pessoas que irão 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 térreo (temp volta); instante que o próximo cliente
chega na fila (tc ); e o número de pessoas na fila num dado instante t (n f ila).

Veja que as variáveis utilizadas neste sistema se assemelham às utilizadas no


5.2 Algoritmo 41
primeiro. Isto ocorre pois estamos buscando otimizar o tempo médio de espera dos passa-
geiros alterando apenas o comprtamento dos elevadores, mantendo os mesmos parâmetros
e definições para ambos os sistemas.

Visto isso a atualização dos tempos de viagem do elevador, entrada de passa-


geiros no sistema, escolha de andares, dentre outros parâmetros, são os mesmos usados
no sistema 1.

Abaixo segue o pseudo-código utilizado para a implementação do sistema 2.

1 Inicialização:
2

3 andares = 0, lembre que andares é um lista;


4 temp viag = (∞, . . . , ∞);
5 temp volta = (∞, . . . , ∞);
6 tc = prox th (0);
7 n f ila = (0, . . . , 0);
8 N A = N D = N U LL, note que ambos são listas;
9 Nc = Ne = (0, . . . , 0);
10 t = 0;
11

12 Caso 1: tc < min(temp viag) e tc < min(temp volta) (Chega um passageiro na fila)
13

14 t = tc ;
15 Nc [j] = Nc [j] + 1, onde j corresponde ao elevador que o passageiro usará;
16 N A[[j]] = t, atualiza N A de acordo com o elevador escolhido;
17 Se existe algum elevador no térreo (passageiro entra direto):
18 - - Ne [j] = Ne [j] + 1;
19 - - N D[[j]] = t, atualiza N D de acordo com o elevador escolhido;
20 - - atualiza andares[[j]] de acordo com o andar escolhido;
21 - - atualiza temp viag[j];
22 - - tc = prox t(t);
23 Senão:
24 - - atualiza temp volta;
5.2 Algoritmo 42
25 - - tc = prox t(t);
26 - - n f ila[j] = n f ila[j] + 1;
27

28 Caso 2: min(temp viag) < tc ) e min(temp viag) < min(temp volta) (Um elevador
29 vai parar)
30

31 Seja o elevador k com menor temp viag;


32 t = temp viag[k];
33 temp viag[k] = ∞;
34

35 Caso 3: min(temp volta) < tc e min(temp volta) < min(temp viag) (Um elevador
36 será recarregado)
37

38 Seja o elevador k com menor temp viag;


39 t = temp volta[k];
40 andares[[k]] = 0, zera a posição k da lista;
41 Se n f ila[k] > max elevador:
42 - - atualiza andares[[k]] de acordo com os andares escolhidos;
43 - - N D[[k]][Ne [k], . . . , Ne [k] + max elevador] = t;
44 - - incrementar Ne mais max elevador elementos;
45 - - n f ila[k] = n f ila[k] − max elevador;
46 - - atualiza temp viag[k];
47 - - atualiza temp volta[k];
48 Senão:
49 - - atualiza andares[[k]] de acordo com os andares escolhidos;
50 - - N D[[k]][Ne [k], . . . , Ne [k] + max elevador] = t;
51 - - incrementar Ne mais max elevador elementos;
52 - - n f ila[k] = 0;
53 - - atualiza temp viag[k];
54 - - temp volta[k] = ∞;
5.2 Algoritmo 43
5.2.3 Comentários

Primeiramente, note que não 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,
já escolhe automaticamente o elevador que lhe atenderá, criando diretamente uma fila
para cada elevador.

Além disto, visando aproximar a simulação de um sistema mais realı́stico,


incluı́mos ainda alguns tempos estimados que podem incidir neste tipo de fenômeno. Veja
na Tabela 5.1 os os tempos e eventos que foram levados em consideração.

Tabela 5.1: Tempos que incidem sobre os modelos simulados.

Descrição do Parâmetro 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 relação aos parâmetros das variáveis que definem os sistemas, veja na


Tabela 5.2 os valores usados.

Vale ressaltar que a complexidade do sistema 2 é bem maior do que a do


sistema 1, entretanto seria ainda mais difı́cil implementá-lo caso não tivessemos começado
pelo sistema mais simples, parando em todos os andares.

Dito isto, foi utilizado o software estatı́stico R, versão 2.15.1 para realizarmos
a simulação e podermos analisar cada modelo.

Tabela 5.2: Variáveis que definem os sistemas.

Variáveis 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 Simulação 44
5.3 Resultados da Simulação

Ao analisarmos cada sistema simulado, nos deparamos com duas questões:

- Qual o tempo gasto pelos passageiros até 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 variáveis. Um vetor T - onde Ti corresponde ao


tempo médio gasto pelos passageiros dentro do sistema no i-ésimo dia simulado - e outro
T1 +T2 +...+Ti
vetor W - onde Wi = i
.

Com base na Lei dos Grandes Números apresentada na Seção 4.5, utilizaremos
o vetor W para checarmos se a quantidade de dias simulados foi suficiente e qual o tempo
médio dentro de sistema por passageiro.

Entretanto, como já foi apresentado, a chegada dos passageiros no sistema pode
se comportar de forma homogênea ou não homogênea. Por isto, realizamos simulações
distintas para cada tipo de taxa de chegada.

Inicialmente foram gerados para cada sistema cem iterações com a quantidade
de elevadores variando de um à cinco.

5.4 Modelo simulado para λ homogêneo

Para representarmos este tipo de sistema, onde a taxa de chegadas é constante,


buscamos simular todos os casos para λ ∈ {2, 3, 4, 5, 6, 7, 8}.

Os valores de convergência de W em cada sistema simulado estão 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 médio que cada passageiro demorou
dentro do sistema, ou seja, o tempo médio desde sua chegada na fila até saltar no andar
desejado.

Primeiramente, verifica-se que independente da taxa de chegada, os sistemas


1 e 2 apresentam resultados semelhantes para um único elevador. Isto nos dá confiança
de que os sistemas simulados estão de acordo com as expectativas e a implementação esta
5.4 Modelo simulado para λ homogêneo 45

Tabela 5.3: Tempo médio (minutos) no sistema 1 para λ homogêneo.

λ
2 3 4 5 6 7 8
E

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 médio (minutos) no sistema 2 para λ homogêneo.

λ
2 3 4 5 6 7 8
E

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 são idênticos para este caso. Por outro lado, não
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 diferença
dos tempos médios estimados no sistema 1 (49,7 minutos) em relação ao sistema 2 (1,5
5.4 Modelo simulado para λ homogêneo 46
minutos) é 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 diferença dos tempos.

Como já falado anteriormente, os valores obtidos nas Tabelas 5.3 e 5.4, foram
obtidos através do vetor W . Assim, dispomos nas Figuras 5.1, 5.2, 5.3 e 5.4 os gráficos
dos vetores W ’s obtidos para os sistemas cujo λ ∈ {2, 3, 4, 5} e possuiam três elevadores.

(a) Sistema 1. (b) Sistema 2.

Figura 5.1: W resultante da simulação de 3 elevadores e λ = 2.

(a) Sistema 1. (b) Sistema 2.

Figura 5.2: W resultante da simulação de 3 elevadores e λ = 3.

Veja que nos gráficos apresentados, os valores de convergência até λ = 3 de fato


apontam para o sistema 1 como melhor modelo e, conforme incrementamos λ, o sistema
2 passa a ser bem mais eficáz do que o primeiro. De fato, já havı́amos constatado isto
através das Tabelas 5.3 e 5.4.
5.5 Modelo simulado para λ não homogêneo 47

(a) Sistema 1. (b) Sistema 2.

Figura 5.3: W resultante da simulação de 3 elevadores e λ = 4.

(a) Sistema 1. (b) Sistema 2.

Figura 5.4: W resultante da simulação de 3 elevadores e λ = 5.

Os gráficos apresentados são apenas um exemplo do comportamento dos sis-


temas ao longo das iterações, 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 convergência clara bem
antes dos cem dias simulados.

5.5 Modelo simulado para λ não homogêneo

Diferente do caso homogêneo, não podemos adotar um λ especı́fico para rea-


lizar as comprações. Assim, implementamos duas possı́veis funções λ(t) e realizamos as
simulações com o mesmo número de iterações, dias simulados, e quantidade de elevadores
utilizados para λ homogêneo. As funções criadas para λ(t) estão explicitadas na figura
5.5 Modelo simulado para λ não homogêneo 48
5.5, de modo que:
 
 
3.75, se t < 120; 7.5, se t < 120;

 


 


 


 

 
3(320 − t)/160, 3(320 − t)/80,
 

 se t < 300; 
 se t < 300;
λ1 (t) = λ2 (t) =
 
3(t − 270)/240, 3(t − 270)/120,
 



 se t < 480; 


 se t < 480;

 


 

 3(4200 − 7t)/960, se t ≤ 600.  3(4200 − 7t)/480, se t ≤ 600.

 

(a) Função λ1 (t).

(b) Função λ2 (t).

Figura 5.5: Curvas das funções das taxas de chegada λ(t).

Nas tabelas 5.5 e 5.6 estão alocados os tempos médios de permanência dos
passageiros em cada combinação E × λ para os sistemas 1 e 2.

Primeiramente, os valores obtidos para um único elevador são semelhantes para


ambas as funções, tal qual no modelo homogêneo.
5.5 Modelo simulado para λ não homogêneo 49
Ao analisarmos as tabelas citadas, vemos que para função λ1 (t), independente
do número de elevadores o sistema 1 apresentou-se mais eficáz. Entretanto, como já vimos
no caso homogêneo, para λ = 4, o sistema 1 havia se mostrado mais eficáz e já que λ1 (t)
possui seus valores menores ou iguais a 3.75, este resultado já 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 à λ1 (t), este resultado já era
esperado pois os possı́veis valores da função λ2 (t) se encontram em um intervalo mais
amplo e como já havı́amos visto para o caso homogêneo, conforme vamos aumentando a
taxa de chegada, o sistema 2 passa a ser mais eficáz.

Tabela 5.5: Tempo médio (minutos) no sistema 1 para λ não homogêneo.

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 médio (minutos) no sistema 2 para λ não homogêneo.

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

Além dos valores estimados do tempo de atendimento, bem como no caso


descrito para λ homogêneo, foi disposto nas Figuras 5.6 e 5.7 o comportamento do vetor
W ao longo das iterações, dias simulados.
5.5 Modelo simulado para λ não homogêneo 50
Através dos gráficos esboçados, podemos ver que os valores de convergência de
W são nitidamente distinto quando comparamos os sistemas.

Note que como já foi dito, nos gráficos de 5.6 o melhor sistema é notoriamente
melhor do que o segundo, ou seja, o sistema parando em todos os andares nos retorna um
tempo médio estimado de atendimento dos passageiros menor do que o caso de elevadores
parando em intervalos de andares. Entretanto, quando olha-se para os gráficos 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 seção 5.4, para um λ não homogêneo, obtemos
diferentes “sistemas ótimos”, variando de acordo com a quantidade de elevadores e função
λ(t) usada.

(a) Sistema 1. (b) Sistema 2.

Figura 5.6: W resultante da simulação de 4 elevadores e λ1 (t).

(a) Sistema 1. (b) Sistema 2.

Figura 5.7: W resultante da simulação de 4 elevadores e λ2 (t).


51

6 Conclusões
O intuito deste trabalho foi analisar o tempo médio 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 simulações foram realizadas com número de elevadores variados e taxas de chegada
homogêneas e não homogêneas.

Ao observarmos os resultados, vimos que não podemos afirmar a existência


de um sistema ótimo para todos os casos. Ou seja, para cada combinação de taxas de
chegada e número 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 é, muitas
chegadas para poucos elevadores. Já o outro modelo mostrou-se mais eficaz para sistemas
menos saturados. Uma sugestão para trabalhos futuros seria estudar para quais valores
de E, números de elevadores, e λ, taxa média de chegada para um processo de Poisson
homogêneo, cada um dos dois sistemas tem melhores resultados.

Além disso, para encontrar o sistema ótimo supondo a taxa não homogênea
vale a pena também testar o uso de um sistema misto, onde à partir de um certo instante
o funcionamento dos elevadores se inverte de uma abordagem para a outra. Por exemplo,
de manhã quando a taxa de chegada é alta os elevadores funcionariam como no sistema
2 e depois de um certo horário passariam a funcionar de acordo com o sistema 1.

Mais sugestões de trabalhos futuros seria a inclusão 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 não seja o seu e descer um andar,
caso a fila compense; e passageiros solicitando elevadores em andares diferente do térreo.
52

Referências Bibliográficas

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.

Você também pode gostar