Universidade Federal de Itajubá 22/07/2011 APRESENTAÇÃO MODELO BANCO MODELO BANCO - O QUE VAMOS EXPLORAR? Distribuição do usuário Ciclos de chegada Comando FREECAP Regras de roteamento Comando CALHOUR CONCEPÇÃO MODELO BANCO 3 caixas e mais 1 caixa especial para idosos e gestantes Fila para os caixas Saída do cliente Entrada do cliente Assentos de espera pelo atendimento 2 atendentes gerais Professor Fabiano Leal 1 Universidade Federal de Itajubá 22/07/2011 CONCEPÇÃO - Descrição MODELO BANCO Descrição: O cliente entra pela porta da agência, e pode ter dois interesses: ou procurar os caixas ou o atendimento geral. Se optar pelo atendimento geral, o cliente se dirige à área de espera com 6 assentos disponíveis. Caso os assentos estejam ocupados, o cliente desiste e vai embora. Caso contrário, o cliente espera nos assentos até que um dos 2 atendentes fique desocupado. Após o atendimento, o cliente vai embora pela saída. Se o cliente optar pelos caixas, ele se dirige à fila dos caixas (fila única). Se este cliente na fila for idoso ou gestante, ele espera pelo caixa especial. Se o caixa especial estiver ocupado, ele vai ao caixa 3. Se ambos estiverem ocupados, ele aguarda, pois os demais caixas não podem atendê-lo. Após o atendimento, o cliente deixa a agência pela saída. Se o cliente na fila não for idoso ou gestante, ele espera pelos caixas 1, 2 ou 3. Se estes caixas estiverem em horário de almoço, o caixa especial passa a atender todos que estão na fila. Após, o cliente deixa a agência pela saída. Os caixas 1,2 e 3 fazem uma parada para o almoço, das 12:00 às 12:30. O caixa especial não para. O atendimento inicia às 11:00 e a porta de entrada se fecha às 15:00. Para facilitar, vamos chamar o cliente de atendimento geral de tipo 2; o cliente de caixa idoso ou gestante de tipo 3 e o cliente de caixa não idoso e não gestante de tipo 1. MODELO BANCO CONCEPÇÃO – IDEF-SIM Professor Fabiano Leal 2 Universidade Federal de Itajubá 22/07/2011 CONCEPÇÃO - Descrição MODELO BANCO Chegada do cliente A agência inicia o atendimento às 11 horas. A porta é fechada às 15 horas. Após este horário, somente os clientes que permanecem dentro da agência são atendidos. Independente do dia da semana, os clientes chegam na agência nesta proporção: 35% do total de clientes diários chegam entre 11 e 12 horas; 15% entre 12 e 13 horas; 20% entre 13 e 14 horas; 30% entre 14 e 15 horas. O total de clientes diários, observado durante alguns dias, é em média 230, com um desvio padrão de 30 (distribuição normal). Os clientes tipo 1 (procuram os caixas 1, 2 ou 3) correspondem a 50% do total; os tipo 2 (procuram o atendimento geral) correspondem a 30% e os tipo 3 (procuram o caixa especial) a 20%. CONCEPÇÃO – Modelagem de dados Tempos de atendimento MODELO BANCO Tempo gasto no caixa especial: distribuição uniforme, entre 6 e 10 minutos. ATENÇÃO À FORMA DE INSERIR OS PARÂMETROS DA DISTR. UNIFORME. Professor Fabiano Leal Tempo gasto nos caixas 1, 2 e 3: distribuição normal, com média 3 minutos e desvio de 1 minuto. Tempo gasto no atendimento geral: distribuição triangular, com mínimo de 15 minutos, moda de 20 minutos e máximo de 25 minutos. 3 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO IMPLEMENTAÇÃO - Locais Observe que o local “Espera_atendimento”, que se refere aos assentos de espera pelo atendimento geral, tem capacidade 1 e 6 unidades. Não foi programado cada assento individualmente pois não há necessidade de um acompanhamento individual por assento, diferentemente dos caixas e dos atendimentos gerais. IMPLEMENTAÇÃO - Entidades MODELO BANCO Apenas 1 entidade basta. Escolha 3 gráficos diferentes para esta entidade. Usaremos o comando GRAPHIC ao longo da programação. Professor Fabiano Leal Devemos criar uma distribuição para o atributo referente ao tipo de cliente. Para isto, entre em DISTRIBUIÇÕES DE USUÁRIO. Construir Mais Elementos 4 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Ciclo de Chegadas Agora, devemos associar esta distribuição que criamos à chegada de clientes. Para isto, vamos definir as CHEGADAS. MODELO BANCO Para programar taxas de chegada que dependem do horário, necessitamos da função CICLO DE CHEGADAS. Construir Mais Elementos 1- Defina o nome do seu ciclo 2- Defina se o ciclo será de porcentagens ou de quantidades IMPLEMENTAÇÃO – Ciclo de Chegadas Mas como funciona um ciclo de chegadas? MODELO BANCO Lembre-se que nosso banco atende das 11:00 às 15:00 (4 horas portanto) O Promodel interpreta este ciclo da seguinte forma: 1 - Intervalo entre 11:00 e 12:00 (chegam 35% do total de clientes) 2- Intervalo entre 12:00 e 13:00 (chegam 15% do total de clientes) 3- Intervalo entre 13:00 e 14:00 (...) 4- Intervalo entre 14:00 e 15:00 (...) Neste momento o Promodel ainda não sabe o número total de chegadas de cliente. Professor Fabiano Leal 5 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Ciclo de Chegadas Você pode optar por um ciclo de quantidades, ao invés de porcentagens. Neste caso você informa as quantidades de clientes em cada horário, e não o percentual. MODELO BANCO Finalizado o ciclo, você deve atribuí-lo à chegada. Vá então em CHEGADAS. Aqui você seleciona o nome do ciclo... ...e aqui a quantidade total de chegadas. IMPLEMENTAÇÃO – Ciclo de Chegadas MODELO BANCO Se você estiver trabalhando com ciclo de quantidades, não faz sentido colocar o total de chegadas. Neste caso coloque neste campo o número 1. Ele funciona com um fator multiplicativo das quantidades de chegada em cada horário. Se mudar para 2, todas as quantidades de cada horário dobrarão. O ciclo passa a valer logo no início. O ciclo deve ser repetido uma vez... ...a cada dia (fará diferença se você simular o modelo durante a semana). Professor Fabiano Leal 6 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO IMPLEMENTAÇÃO – Ciclo de Chegadas Em LÓGICA, você deverá construir uma expressão. Antes disto, vá em ATRIBUTOS e crie o atributo “Tipo_cliente”. Agora sim, em CHEGADAS, clique na coluna LÓGICA e crie a expressão: Atributo “Tipo_cliente” = Distribuição do usuário “Distribuicao_de_tipo_cliente” Desta forma, assim que o cliente entra pela porta, é a ele atribuído um valor, que pode ser 1, 2 ou 3, de acordo com a distribuição que criamos. IMPLEMENTAÇÃO – Variáveis Globais MODELO BANCO Crie 3 variáveis, como mostra a figura. Duas delas devem ser exibidas durante a simulação. Professor Fabiano Leal Vamos agora definir o PROCESSO. 7 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO IMPLEMENTAÇÃO – Processo IMPLEMENTAÇÃO – Processo (linha 1) MODELO BANCO Entra a entidade: Vai para o local: Operação: CLIENTE PORTA Vamos descobrir quantos clientes entram Se for cliente tipo 2, vamos associar o gráfico 2 definido em entidades. Se os assentos de espera estiverem lotados, o cliente vai para saída, e desiste. Se tiver vaga nos assentos, o cliente vai para a área de assentos. Comando FREECAP (location) retorna o valor da capacidade livre do local. FREECAP (location) = 0 significa que não há espaços livres no local. Professor Fabiano Leal INC Total_de_clientes_entraram IF Tipo_cliente = 2 THEN { GRAPHIC 2 IF FREECAP(Espera_atendimento) = 0 THEN { ROUTE 2 } ELSE { ROUTE 1 } } 8 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 1) Route 1 MODELO BANCO Route 2 Mas se o cliente tipo 2 for mandado para a rota 1, ele poderá ir à fila dos caixas, e isto está errado! Para resolver isto, usaremos regras de roteamento. Sai a entidade: Vai para: CLIENTE ... MODELO BANCO IMPLEMENTAÇÃO – Processo (linha 1) Na rota do bloco 1 (ROUTE 1), o cliente pode ir para a fila do caixa, se o atributo “Tipo_cliente” for diferente de 2 (1 ou 3), ou ir para a espera do atendimento, se for cliente tipo 2. Na rota do bloco 2 (ROUTE 2), o cliente vai para a saída. É necessário incrementar a variável “Desistentes”, para sabermos quantos desistiram da espera. Professor Fabiano Leal 9 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 1) MODELO BANCO Entra a entidade: Vai para o local: Operação: CLIENTE PORTA (continuando) IF Tipo_cliente = 1 THEN { GRAPHIC 1 ROUTE 1 } IF Tipo_cliente = 3 THEN { GRAPHIC 3 ROUTE 1 } Se for cliente tipo 1, vamos mudar seu gráfico e mandar para o bloco 1. Se for cliente tipo 3, vamos mudar seu gráfico e também mandar para o bloco 1. Perceba que o bloco 2 ficou específico para quem desiste do atendimento (somente o cliente tipo 2 pode desistir). IMPLEMENTAÇÃO – Processo (linha 2) MODELO BANCO Entra a entidade: Vai para o local: Operação: CLIENTE SAIDA Vamos contar quantos clientes saem do banco (os que foram atendidos e os que desistiram). A simulação não acaba pelo horário, mas sim por uma condição. Se for mais que 3 horas da tarde e não tiver mais ninguém sendo atendido, devemos parar a simulação. INC Clientes_que_sairam IF Total_de_clientes_entraram = Clientes_que_sairam AND CALHOUR() >= 15 THEN { STOP "Nenhum cliente a ser atendido" } CALHOUR() retorna a hora atual. STOP para a simulação e exibe uma mensagem. Professor Fabiano Leal 10 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 2) MODELO BANCO Sai a entidade: Vai para: CLIENTE EXIT Temos agora este trecho para programar: IMPLEMENTAÇÃO – Processo (linha 3) MODELO BANCO Entra a entidade: Vai para o local: Operação: Professor Fabiano Leal “Empurra” o cliente para sua posição na fila e só aplica os comandos após este momento Antes, crie o atributo “Tempo_de_fila_caixa”. Este atributo vai armazenar o tempo cronometrado. O disparo do cronômetro se dá com este comando ao lado. CLIENTE FILA_CAIXA MOVE Tempo_de_fila_caixa = CLOCK( MIN) 11 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 3) MODELO BANCO Sai a entidade: Vai para: CLIENTE O cliente, ao sair da fila, vai ao caixa especial se for do tipo 3. Se o caixa especial estiver ocupado, a alternativa (regra ALT) é o caixa 3. O cliente do tipo 1 vai ao caixa 1. Se estiver ocupado vai ao caixa 2, e se este estiver ocupado vai ao caixa 3. Se os três caixas estiverem fora de turno, ou em paradas programadas, ou quebrados, o cliente tipo 1 é direcionado ao caixa especial (regra BACKUP). IMPLEMENTAÇÃO – Processo (linha 4) MODELO BANCO Entra a entidade: Vai para o local: Operação: Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. Se o caixa especial estiver atendendo cliente tipo 1, o tempo de atendimento é uma normal, média 3 e desvio de 1 minuto. Se o cliente for do tipo 3 (o tipo 2 nunca vai vir aqui), o tempo de atendimento segue uma distribuição uniforme entre 6 e 10 minutos. Professor Fabiano Leal CLIENTE CAIXA_ESPECIAL LOG "Tempo de fila nos caixas", Tempo_de_fila_caixa IF Tipo_cliente = 1 THEN { WAIT N(3, 1) MIN } ELSE { WAIT U(8, 2) MIN } 12 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 4) Sai a entidade: Vai para: CLIENTE SAÍDA MODELO BANCO Acabamos de programar isto: IMPLEMENTAÇÃO – Processo (linha 5) MODELO BANCO Entra a entidade: Vai para o local: Operação: Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. LOG "Tempo de fila nos caixas", Tempo_de_fila_caixa No caixa 1 o atendimento se dá em média de 3 minutos, com desvio de 1 minuto. WAIT N(3, 1) MIN Sai a entidade: Vai para: Professor Fabiano Leal CLIENTE CAIXA_1 CLIENTE SAÍDA 13 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 6) MODELO BANCO Entra a entidade: Vai para o local: Operação: CLIENTE CAIXA_2 Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. LOG "Tempo de fila nos caixas", Tempo_de_fila_caixa No caixa 1 o atendimento se dá em média de 3 minutos, com desvio de 1 minuto. WAIT N(3, 1) MIN Sai a entidade: Vai para: CLIENTE SAÍDA IMPLEMENTAÇÃO – Processo (linha 7) MODELO BANCO Entra a entidade: Vai para o local: Operação: Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. Se o caixa 3 estiver atendendo cliente tipo 1, o tempo de atendimento é uma normal, média 3 e desvio de 1 minuto. Se o cliente for do tipo 3 (o tipo 2 nunca vai vir aqui), o tempo de atendimento segue uma distribuição uniforme entre 6 e 10 minutos. Professor Fabiano Leal CLIENTE CAIXA_3 LOG "Tempo de fila nos caixas", Tempo_de_fila_caixa IF Tipo_cliente = 3 THEN { WAIT U(8, 2) MIN } ELSE { WAIT N(3, 1) MIN } 14 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 7) CLIENTE SAÍDA MODELO BANCO Sai a entidade: Vai para: IMPLEMENTAÇÃO – Processo (linha 8) MODELO BANCO Entra a entidade: Vai para o local: Operação: Professor Fabiano Leal CLIENTE ESPERA_ATENDIMENTO Antes, crie o atributo Tempo_espera_atendimento = CLOCK( MIN) “Tempo_espera_atendimento”. Este atributo vai armazenar o tempo cronometrado. O disparo do cronômetro se dá com este comando ao lado. 15 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 8) CLIENTE MODELO BANCO Sai a entidade: Vai para: IMPLEMENTAÇÃO – Processo (linha 9) MODELO BANCO Entra a entidade: Vai para o local: Operação: Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. LOG "Tempo de espera no atendimento", Tempo_espera_atendimento Os tempos de atendimento do caixa de atendimento 1 foram na maioria dos casos 20 minutos (moda). O menor tempo indicado foi de 15 minutos, e o maior tempo de 25 minutos por cliente. WAIT T(15, 20, 25) MIN Sai a entidade: Vai para: Professor Fabiano Leal CLIENTE CAIXA_ATENDIMENTO_1 CLIENTE SAÍDA 16 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Processo (linha 10) MODELO BANCO Entra a entidade: Vai para o local: Operação: CLIENTE CAIXA_ATENDIMENTO_2 Neste ponto o cronômetro é parado, e o tempo cronometrado é atribuído ao cliente específico. LOG "Tempo de espera no atendimento", Tempo_espera_atendimento Os tempos de atendimento do caixa de atendimento 2 foram na maioria dos casos 20 minutos (moda). O menor tempo indicado foi de 15 minutos, e o maior tempo de 25 minutos por cliente. WAIT T(15, 20, 25) MIN Sai a entidade: Vai para: CLIENTE SAÍDA IMPLEMENTAÇÃO – Definição dos turnos MODELO BANCO Inicialmente, vamos definir o turno dos caixas 1, 2 e 3, que param para o almoço das 12:00 às 12:30. Observe que o turno foi definido até às 18 horas. Mas por que não definir o turno até às 15 horas, quando a porta da agência se fecha? Porque se isto for feito, os clientes que ainda estiverem na fila não serão atendidos mais. Associe este arquivo de turno aos caixas 1, 2 e 3. Professor Fabiano Leal 17 Universidade Federal de Itajubá 22/07/2011 IMPLEMENTAÇÃO – Definição dos turnos MODELO BANCO Crie e associe um arquivo de turno para o local “Porta”. Quando ela sair do seu turno, a entrada de cliente é barrada. ANÁLISE – Interpretando os resultados MODELO BANCO Vamos analisar os resultados pelo ProModel. Simule 5 réplicas. Grandes tempos de espera (fila) e de bloqueio (assentos) Professor Fabiano Leal 18 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO ANÁLISE – Interpretando os resultados Os locais “Espera_atendimento.n” não entram em operação pois não foi associado tempo de operação a eles. Ou eles estão vazios (sem entidade) ou bloqueados (tem entidade mas não conseguem enviá-la a frente). MODELO BANCO ANÁLISE – Interpretando os resultados Tempo de espera na fila dos caixas (comando CLOCK LOG) Professor Fabiano Leal 19 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO ANÁLISE – Interpretando os resultados Tempo de espera no atendimento (comando CLOCK LOG) MODELO BANCO ANÁLISE – Interpretando os resultados Professor Fabiano Leal 20 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO ANÁLISE – Interpretando os resultados MODELO BANCO ANÁLISE – Interpretando os resultados Total de desistentes Professor Fabiano Leal 21 Universidade Federal de Itajubá 22/07/2011 MODELO BANCO ANÁLISE – Interpretando os resultados ANÁLISE – Experimento Experimente uma melhoria nesta agência bancária. MODELO BANCO Sugestão: criar uma fila específica para o atendimento no caixa especial. Os tempos de espera diminuem com esta mudança? Professor Fabiano Leal 22