Universidade Federal do ABC Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas Curso de Engenharia de Informação. ESTI020-18 - Teoria de Filas e Análise de Desempenho 2 o Quadrimestre de 2018 Laboratório 1-05/07/2018 Introdução ao JMT e Simulação de Topologias Básicas de Filas Material: Professor André Ponchet 1 Experimento 1: Introdução ao JMT (Java Modelling Tools) Neste experimento vamos aprender, passo a passo, a utilizar o pacote de aplicativos Java Modelling Tools (JMT). O pacote JMT é um conjunto de aplicativos para simulação de redes de filas desenvolvido pelo instituto Politecnico di Milano e disponibilizado com uma licença GPL (software livre). Neste primeiro experimento vamos comparar o desempenho das filas D/D/1, M/D/1, D/M/1 e M/M/1 e verificar o funcionamento destas filas para diferentes valores de tráfego oferecido (0, 5 λ/µ 1). Os parâmetros que devem ser verificados são: ocupação do servidor, quantidade total de elementos na fila, tempo de espera na fila, tempo total na fila. 1.1 Procedimento Experimental A seguir são apresentadas as instruções passo-a-passo para realização do experimento. Inicie o JMT com um duplo clique no ícone do programa na sua área de trabalho e siga as instruções a seguir. 1. Para a criação dos modelos de simulação iremos utilizar as ferramentas JSIMgraph. Clique no ícone indicado na figura abaixo para iniciar o JSIMgraph: Figura 1: Janela Inicial do JMT. 2. Na janela do JSIMgraph, crie um novo projeto (Menu->File->New ou Ctrl-N): 1
Figura 2: Ambiente Gráfico de Simulação de Filas JSIMgraph. 3. Crie no projeto uma fonte (Source), um sumidouro (Sink) e uma fila (Queue). Para isto é preciso selecionar cada objeto na barra de ferramentas e clicar na posição desejada do objeto na área de trabalho. Interligue a fonte à fila e a fila ao sumidouro. Isto é feito selecionando-se o botão connect two stations na barra de tarefas. Em seguida é preciso pressionar o botão esquerdo do mouse sobre o objeto de origem, arrastar o mouse até o objeto de destino e soltar o botão. Caso você deseje alinhar perfeitamente os objetos, clique no botão Optimize Graph na barra de tarefas. Figura 3: Sistema de Filas no JSIMgraph. 4. Abra a janela de edição de classes (botão na barra de tarefas ou Menu->Define->Customer classes). Crie uma classe de cliente (botão add class). Selecione tipo aberto, tempo médio entre chegadas exponencial igual a 2 (portanto com taxa de chegadas λ = 1/2) e reference station igual à fonte. Isto define um processo de chegada markoviano com λ = 1/2. 5. Abra a janela de edição da fila, com um duplo clique no objeto da fila na área de trabalho. Selecione a aba Service Section e altere a distribuição do tempo de serviço para constante (Determinístico) e média 1 (µ = 1). Defina o número de servidores igual a 1 servidor. Agora temos um modelo de uma fila M/D/1. 6. Abra a janela de definição dos parâmetros de performance. Nesta janela são selecionados os resultados que a simulação deve apresentar. Adicione à lista de parametros medidos Number of Customs, Queue Time, Response Time e Utilization, para todas as classes e para a fila do projeto. Nesta janela pode-se especificar o intervalo de confiança e o nível de confiança desejados. Vamos definir um intervalo de 99% e um erro relativo de 3%. 2
7. Selecione a janela What-If. Nesta janela é especificada a sequência de simulação com diferentes parâmetros para comparação. Em nosso caso queremos analisar o comportamento da fila para diferentes valores de tráfego oferecido (0, 5 λ/µ 1). Vamos manter o tempo de serviço contante (1) e variar a taxa de entrada de clientes das filas de 0,5 a 0,95 em 10 passos. 8. Execute a simulação pressionando o botão Solve simulation model. 9. Abra a janela de resultados para visualizar os resultados da simulação. Você tem a opção de salvar os gráficos (para depois colocar no seu relatório) e pode dar um copy/paste dos valores numéricos. Observe que em alguns casos, os resultados podem ser apresentados em vermelho. Nos parâmetros de simulação é especificado um limite para término da simulação. Eventualmente a simulação termina sem que se tenha alcançado o nível de confiança especificado. 10. Salve o projeto num arquivo. 11. Modifique o projeto para transformá-lo num modelo de simulação de filas D/D/1, M/M/1 e D/M/1. Salve cada um dos projetos em diferentes arquivos. De posse dos resultados você pode comparar o desempenho das quatro filas. Justifique as diferenças. Por que a simulação não foi feita para λ/µ = 1? O que acontece se tentarmos fazer isso? 2 Experimento 2: Análise do Sistema M/M/1 com a Ferramenta JMCH Neste Experimento iremos analisar o sistema de filas M/M/c (a variável c indica o número de servidores) utilizando a ferramenta JMCH (Markov Chain Simulator With Graphical Interface) do JMT. 2.1 Procedimento Experimental 1. Para iniciar o JMCH, clique no ícone indicado na janela principal do JMT conforme a figura abaixo: Figura 4: Janela Inicial do JMT. 2. Na janela do JMCH, escolha a opção M/M/1 Server, 1 Station, conforme a figura abaixo: 3
Figura 5: Configuração Inicial do Sistema M/M/c no JMCH. Antes de executar a simulação, ajuste o λ (taxa de chegada de clientes) para 0.5cust./s e o tempo médio de serviço 1/µ para 1.80s, conforme a figura abaixo: Figura 6: Configuração do Sistema M/M/1 no JMCH. Para executar a simulação, clique no botão start e escolha na janela a seguir a opção unlimited (capacidade do sistema) e em seguida clique no botão enter. 3. Execute a simulação para um tempo total de 2.000s (current total time). Clique na aba log e verifique os resultados analíticos e de simulação para os seguintes parâmetros da fila: Utilização do servidor: ρ = λ µ Número médio de clientes no sistema: N = Vazão do sistema: X = ρ µ Tempo médio de espera na fila: T q = ρ µ(1 ρ) ρ 1 ρ Tempo total no sistema (tempo de resposta): T = 1 µ(1 ρ) 4
Calcule os parâmetros acima através das equações fornecidas e compare com os resultados apresentados pelo simulador. Explique as diferenças entre os valores calculados pelas equações e os valores obtidos durante a execução da simulação. O que acontece quando λ > µ? Explique. 5