Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA8 Abordagem por Processos É o mais utilizado atualmente. Suportada pela linguagem SIMSCRIPT II.5, SIMULA e GPSS. Lógica do Modelo – Todo o ciclo de vida de uma entidade é tomado como base da simulação baseada em processos. – Processo: seqüência de operações pela qual uma entidade deve passar durante seu ciclo de vida. – Cada classe de entidades tem seu próprio processo. – Cada entidade criada herda o processo de sua classe. – A simulação consiste em um conjunto de processos, pelo menos um para cada classe de entidades. O progresso de uma entidade por um processo é regulado por dois tipos de condições: – Bloqueio incondicional • Também chamado de suspensão ativa. • Ocorre quando o progresso de uma entidade é bloqueado por um certo período de tempo que, em princípio, pode ser determinado de antemão. • Depois de decorrido o período de tempo indicado, a entidade é desbloqueada. • Ex.: atendimento de um cliente – Bloqueio condicional • Também chamada de suspensão passiva. • Ocorre quando o progresso de uma entidade é bloqueado devido a condições específicas do modelo simulado. • A entidade é desbloqueada no momento em que as condições são satisfeitas. • Ex.: cliente permanece na fila até que chegue no topo da fila e o servidor esteja livre. Exemplo: Problema Teatro chegada fila rua serviço nada telefonando lugar espera chamando Processos: – ClienteNaBilheteria crie entidade Cliente calcule TempoChegada do próximo Cliente crie e bloqueie novo processo ClienteNaBilheteria por TempoChegada espera até que (topo da fila) e (Funcionário livre) coloque Funcionário em serviço retire Cliente da fila calcule TempoDeServiço bloqueie processo por TempoDeServiço libere Funcionário libere Cliente. Exercício: 1) Especifique em pseudo-código o processo para a entidade Telefonema. Módulo de decisão – O módulo de decisão necessita saber onde, em cada processo, uma entidade está (ou seja, o estado do processo) e necessita também ter a capacidade de parar e reiniciar o movimento de uma entidade pelo seu processo. – Logo, deve manter, para cada entidade: • tempo de reativação (se conhecido) • ponto de reativação (isto é, a posição dentro do processo) – O módulo de decisão mantém duas listas com essas informações: • lista de eventos futuros: calendário com as informações sobre entidades que sofreram bloqueio incondicional. • lista de eventos atuais: contém as informações de dois tipos de entidades – entidades bloqueadas incondicionalmente que atingiram o tempo de desbloqueio, – entidades em bloqueio condicional. O módulo de decisão divide-se em três fases: – A lista de eventos futuros é utilizada para se determinar o próximo evento. O relógio de simulação é atualizado para o novo tempo. – As entidades da lista de eventos futuros cujo tempo de reativação for igual ao relógio são movidas para a lista de eventos atuais. – Cada entidade da lista de eventos atuais é movimentada pelo seu processo se as condições permitirem, até o ponto de terminar o processo ou serem bloqueadas novamente. Iniciar Examinar lista eventos futuros Mover entre listas Examinar lista de eventos atuais Fim? sim Parar não Exercícios: 2) Para o problema de modelagem das máquinas em uma linha de produção, construa, em pseudo-código, o programa de simulação e os processos.