Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2, N 3, SETEMBRO 1998
I. INTRODUO
A simulao em computador consiste na reproduo
da operao de um sistema realizada com o objectivo de
avaliar diferentes caractersticas desse sistema. Na prtica,
a forma como o sistema modelado depende das
caractersticas deste que se pretendem analisar. Por
exemplo, se relativamente cantina da Universidade de
Aveiro, quisermos estimar o tempo mdio que decorre
desde que um aluno chega bicha at que servido por
uma das senhoras, o modelo deve incluir descries dos
processos de chegada dos alunos cantina e do servio
efectuado pelo conjunto das senhoras. No entanto, se
quisermos tambm determinar o nmero de mesas
necessrio para garantir que a probabilidade de um aluno
no encontrar um lugar vago aps ser servido seja
reduzida, o nmero de lugares e o processo que descreve o
tempo de cada refeio devem tambm ser includos no
modelo do sistema.
O estado do sistema, num dado instante de tempo,
pode ser caracterizado atravs de variveis de estado.
Exemplos de variveis de estado no caso da cantina, so o
nmero de senhoras ocupadas (note que podem haver
senhoras desocupadas caso, momentaneamente, no haja
alunos na bicha) e o nmero de alunos na bicha. Podem
distinguir-se dois tipos de sistemas: discretos, em que as
variveis de estado mudam instantaneamente em pontos
separados no tempo e contnuos, em que as variveis de
estado mudam continuamente no tempo.
A simulao de eventos discretos (discrete-event
simulation) [1] [2] [3] consiste na modelao da evoluo
temporal de um sistema, atravs de uma representao na
qual as variveis de estado do sistema mudam de valor em
pontos separados no tempo. Estes instantes de tempo so
Incio
rotina de iniciao
programa principal
0. Relgio de simulao = 0
1. Iniciar as variveis de estado e os
contadores estatsticos
2. Iniciar a lista de eventos
rotina de temporizao
1. Invocar a rotina de temporizao
2. Invocar a rotina do evento i
rotina do evento i
livrarias
1. Actualizar as variveis de estado
2. Actualizar os contadores estatsticos
3. Gerar os eventos futuros e
acrescent-los lista de eventos
A simulao
terminou?
Gerador de
distribuies
sim
no
gerador do relatrio
1. Calcular as estimativas de interesse
2. Escrever o relatrio
Fim
A. Modelo
O demonstrador animado concebido para ilustrar as
tcnicas de programao de simuladores de eventos
discretos baseado num sistema M/M/1. Neste caso, os
instantes entre chegadas de clientes, C1, C2, , so
variveis
aleatrias
(v.a.)
independentes
e
exponencialmente distribudas, os tempos de servio dos
sucessivos clientes, S1, S2, , so tambm v.a.
independentes e exponencialmente distribudas, sendo
ainda os instantes entre chegadas e os tempos de servio
independentes entre si.
Um cliente que chega ao sistema e encontra o servidor
livre entra imediatamente em servio; se encontrar o
servidor ocupado junta-se a uma fila de espera; logo que
um cliente complete o seu servio, entra em servio o
prximo cliente da fila de espera (se existir algum).
Admite-se que a ordenao dos clientes na fila de espera
do tipo First-In First-Out (FIFO).
A simulao comear no instante t=0, no qual nenhum
cliente se encontra no sistema. A chegada do primeiro
cliente ocorrer em t=C1. O sistema ser simulado at que
um nmero fixo e pr-definido de n clientes completem os
seus atrasos na fila de espera, ou seja, a simulao
terminar quando o n-simo cliente entrar em servio.
B. Medidas de desempenho
Neste demonstrador, o sistema M/M/1 caracterizado
atravs de trs medidas de desempenho: atraso mdio na
fila de espera, nmero mdio de clientes na fila de espera
e taxa de utilizao mdia do servidor.
d (n ) =
i =0
q (n ) =
Q (t )dt
T (n )
u (n ) =
T (n )
Di
B (t )dt
T (n )
No
pargrafos
seguintes
iremos
explicar
detalhadamente a evoluo do modelo de simulao nos
instantes de tempo t=0, t1, t2, , t10 nos quais so
observados 4 atrasos na fila de espera, utilizando, para o
efeito, o demonstrador desenvolvido em MATLAB.
Assumiremos para instantes entre chegadas e tempos de
servio dos clientes os seguintes valores: C1=0.6354,
C2=0.3988,
C3=0.9586,
C4=2.7054,
C5=0.8735,
C6=0.0721,
C7=0.1670,
C8=0.6407;
S1=4.3805,
S2=0.3382, S3=0.4765, S4=2.1479. Note-se que, num
programa de simulao, estes valores so gerados por
geradores de nmeros aleatrios.
Iniciao (t = 0, Figura 2). A simulao comea e a
rotina que inicia as variveis necessrias simulao do
modelo invocada. Inicialmente o sistema est vazio e o
servidor est livre. As variveis de estado que
caracterizam esta situao so iniciadas: o estado do
servidor zero, B(t)=0, e o nmero de clientes
na fila de espera zero, Q(t)=0. Os contadores
estatsticos nmero de atrasos, atraso total e
a rea sob Q(t), e a rea sob B(t), so todos
colocados zero. O relgio de simulao colocado a
zero e lista de eventos so atribudos os
instantes de tempo da prxima ocorrncia de cada um dos
Definio
inicia
temp
chegada
partida
relator
actcont
Rotina que
estatsticos
Varivel
Definio
actualiza
os
contadores
Parmetros de entrada:
lambda
Figura 7: Caracterizao do sistema no instante de tempo t=5.8306.
niu
Taxa de servio
NumAtrasReq
Variveis auxiliares:
Livre
Ocupado
TipProxEvent
TempDesdUltEvent
Relogio
Relgio de simulao
Atraso
TotalAtras
Variveis de estado:
EstServ
NumNaQ
TempUltEvent
InstCheg
Contadores estatsticos:
NumClieAtras
AreaNumNaQ
AreaEstServ
Lista de eventos:
TemProxEvent(1)
TemProxEvent(2)
Parmetros de sada:
NumMedNaQ
AtrasMedNaQ
TempMedUtilServ
Incio
rotina de
iniciao
programa
principal
0. Relgio de simulao = 0
1. Iniciar as variveis de
estado e os contadores
estatsticos
2. Iniciar a lista de
eventos
1.
de
2.
de
rotina do
evento i
1. Actualizar as variveis de
estado
2. Actualizar os contadores
estatsticos
3. Gerar os eventos futuros e
acrescent-los lista de
eventos
A simulao
terminou?
Determinar o tipo
evento seguinte
Avanar o relgio
simulao
livrarias
Gerador de
distribuies
no
gerador
do
sim
relatrio
1. Calcular as estimativas
de interesse
2. Escrever o relatrio
Fim
Ocupado = 1;
Livre = 0;
% Iniciar a simulao
inicia
% Executar a simulao enquanto forem necessrios
% atrasos
while (NumClieAtras < NumAtrasReq),
% Determinar o prximo evento
temp
% Actualizar os tempos mdios dos contadores
% estatsticos
actcont
% Invocar a rotina evento adequado
if (TipProxEvent == 1),
chegada
else
partida
end
end
% Invocar o gerador de relatrio e acabar simulao
relator
Figura 9: Cdigo MATLAB do programa principal do modelo da fila de
espera M/M/1, mm1.
% INICIA
Rotina que INICIA as variveis de
% simulao
Evento
chegada
Contadores Estatsticos
= 0;% Nmero de Clientes Atrasados
0; % Total de Atrasos
0; % rea do Nmero de Clientes na fila
% de espera
AreaEstServ = 0; % rea do Estado do Servidor
Agendar o prximo
evento chegada
Sim
O servidor
est ocupado?
No
Incrementar o
nmero de
clientes na fila
de espera
Fazer atraso=0
para este cliente
Armazenar o
instante de
chegada do
cliente
Incrementar o
nmero de
clientes
atrasados
Colocar o
servidor ocupado
Agendar o prximo
evento partida
Retornar
% CHEGADA
[Relogio,TipProxEvent] = min(TempProxEvent);
Figura 11: Cdigo MATLAB da rotina temp.
% RELATOR
Evento
partida
Sim
No
Colocar o
servidor livre
Decrementar o
nmero de
clientes na fila
de espera
Eliminar o evento
partida
Calcular o atraso
do cliente que
entrou em servio
Incrementar o
nmero de
clientes
atrasados
Agendar o evento
partida para este
cliente
Mover cada
cliente na fila
de espera (se
algum) um lugar
Retornar
% ACTCONT
ACTualizao do tempo mdio dos
% CONTadores estatsticos
V. CONCLUSES
% Incrementar o nmero de clientes atrasados e o
% instante de partida
NumClieAtras = NumClieAtras + 1;
TempProxEvent(2) = Relogio + exprnd(1/niu);
% Calcular o atraso do cliente que est comeando o
% servio
Atraso = Relogio - InstCheg(1);
% Actualizar o acumulador do atraso total
TotalAtras = TotalAtras + Atraso;
[2]
[3]