- Gustavo Nunes
Este projeto tem como objetivo simular um sistema onde clientes podem chegar e ser atendidos por um dos vários servidores disponíveis. Por exemplo, o sistema pode ser um lava-jato onde os carros chegam no sistema, esperam por um tempo na fila até serem atendidos por um dos atendentes.
A simulação é útil para que possamos coletar dados como por exemplo:
- número médio de clientes na fila durante o tempo da simulação
- tempo médio de um cliente no sistema
- tempo médio de um cliente na fila
- tempo médio no qual os servidores demoram para atender o cliente
Os tempos com os quais os clientes chegam no sistema e o tempo que um servidor leva para atender um cliente são definidos de forma aleatória através do arquivo de config (ver detalhes nos itens abaixo).
python3instalado na máquinapip3instalado na máquina- pacote tabulate
pip3 install tabulate
- pacote bisect
pip3 install bisect
- pacote matplotlib
pip3 install matplotlib
Para executar a simulação, é necessário adicionar os parâmetros desejados no arquivo config.json. Os parâmetros possíveis são:
| Nome | Descrição | Valores Possíveis |
|---|---|---|
tec_type |
Tipo de aleatoriedade usada para gerar o tempo entre as chegadas |
uniform, uniform_int, deterministic, normal, exp, mmc
|
tec |
Parâmetro necessário para gerar o tempo entre as chegadas dependendo do tec_type desejado |
(Ver explicação abaixo) |
ts_type |
Tipo de aleatoriedade usada para gerar o tempo de serviço |
uniform, uniform_int, deterministic, normal, exp, mmc
|
ts |
Parâmetro necessário para gerar o tempo de serviço dependendo do ts_type desejado |
(Ver explicação abaixo) |
clients |
Número de clientes na simulação |
int > 0
|
servers |
Número de servidores |
int > 0
|
max_queue_size (opcional, default = inf) |
Tamanho máximo da fila |
int >= 0
|
Os parâmetros que adicionam aleatoriedade à simulação são os parâmetros TEC (tempo entre chegadas) e TS (tempo de serviço). É possível controlar o tipo da variável aleatória desejada pelos atributos tec_type e ts_type, que podem receber um dos possíveis valores abaixo:
| Tipo | Descrição |
|---|---|
uniform |
Distribuição uniforme em um intervalo |
uniform_int |
Distribuição uniforme de inteiros em um intervalo |
deterministic |
Valor determinístico |
normal |
Distribuição normal |
exp |
Distribuição exponencial |
mmc |
Método de Monte Carlo |
Os campos tec e ts armazenam os parâmetros necessários dependendo do tipo (dentre os mencionados acima). Cada tipo exige um formato especial para os parâmetros conforme os exemplos abaixo:
| Tipo | Descrição do atributo | Exemplo |
|---|---|---|
uniform |
Intervalo de valores possíveis |
|
uniform_int |
Intervalo de valores possíveis |
|
deterministic |
Valor a ser retornado |
|
normal |
Média e desvio padrão da distribuição normal. |
|
exp |
Taxa de chegada (em unidades de tempo). Por exemplo: lambda = 0.5 significa que os clientes chegam em média a cada meia hora (se a unidade de tempo for em horas), portanto chegam 1/0.5 = 2 clientes por hora. |
|
mmc |
Amostra de dados cuja distribuição irá ser aplicada na simulação utilizando o método de monte carlo. |
|
- Criar um novo
notebookno Google Colab - Copiar os arquivos do projeto para a pasta
arquivosnaaba à esquerda - Executar o comando
%run main.pyem alguma célula de execução


