copyrightbrauliro.leal/ensino/ms/msd.pdf · a/b/c/k/m/z notação de kendall ... w tempo de espera...

254

Upload: vantruc

Post on 13-Dec-2018

254 views

Category:

Documents


3 download

TRANSCRIPT

Copyright© 2015 by Brauliro Gonçalves Leal

O conteúdo deste livro eletrônico é totalmente livre para uso de qualquer natureza desde que citado a fonte. Toda e qualquer parte desta publicaçãopode ser reproduzida, distribuída ou transmitida de qualquer forma ou por qualquer meio, ou armazenada de qualquer forma ou em qualquer sistemadesde que reconhecida a autoria.

Atribuição-CompartilhaIgual - esta licença permite que outrosremixem, adaptem e criem a partir deste trabalho, mesmopara fns comerciais, desde que lhe atribuam o devido créditoe que licenciem as novas criações sob termos idênticos(creativecommons.org/licenses).

Sobre o autor

Professor do Colegiado de Engenharia da ComputaçãoUniversidade Federal do Vale do São FranciscoAvenida Antônio Carlos Magalhães, 510 Santo Antônio48.902-300 Juazeiro – BA Brasil

e-mail: [email protected]: www.univasf.edu.br/~brauliro.lealPrimeira Edição Eletrônica: Abril de 2016ISBN: a ser feito

Modelagem e Simulação Discreta 2

Tabela de SímbolosSímbolo Descrição

A/B/c/K/m/Z notação de Kendallat tempo da chegada da tarefa na Fila (arrival time)bs tempo da chegada da tarefa no Servidor (begin service)

cdf, fda, F função distribuição acumulada (cumulative distribution function), F(x)=∫f(x)dx

CQ teste Chi-QuadradoD estatística do teste Chi-Quadrado

Dn estatística do teste Kolmogorov-Smirnove evento

E(X), m esperança matemática de X, média aritmética ou valor esperadoes tempo da saída da tarefa do Servidor (end service)

GCL Gerador Congruente LinearGNA gerador de número (pseudo)aleatórioGVA gerador de variável aleatóriaiat intervalos entre chegadas (interarrival time)IC Intervalo de confançaidt intervalo entre saídas (inter departure time)iid independente e igualmente distribuídoKS teste Kolmogorov-Smirnov

MML Método das Médias de LotesMRI Método de Replicação Independenten número de elementos de uma amostraN número de eventos de uma simulaçãon número de tarefas no Sistemanq número de tarefas esperando na Filans número de tarefas sendo atendidasp0 probabilidade de Servidor ocioso

pdf, f função distribuição de probabilidade (probability distribution function)pn probabilidade de n tarefas no ServidorQ Fila (Queue)

QS Sistema de Fila (Queue System)QSN Rede de Sistemas de Fila (Queue System Network)

r tempo de resposta (response)r coefciente de correlaçãos tempo de serviço (service)S Servidor (Server)

s(X), s desvio padrão da amostra Xst tempo de serviço (service time)T tempo da simulaçãoU utilização do ServidorU Distribuição uniforme

V(X), V variância de Xw tempo de espera na Fila (waiting)X amostra X ={X1, X2, ..., Xn}X variável aleatóriaγ taxa de saída

λ, l taxa média de chegada por unidade de tempo, μ esperança matemática da população

μ, m taxa média de serviço por Servidor por unidade de tempoρ autocorrelaçãoσ desvio padrão da populaçãoτ tempo entre chegadas

Modelagem e Simulação Discreta 3

Sumário

1 Introdução.............................................................................................................................171.1 Sistema...............................................................................................................................181.2 Modelo...............................................................................................................................191.3 Simulação...........................................................................................................................201.3.1 Simulação Contínua........................................................................................................211.3.2 Simulação Monte Carlo..................................................................................................211.3.3 Simulação de Eventos Discretos.....................................................................................211.3.4 Simulação de Trace.........................................................................................................221.4 Simulação Computacional.................................................................................................221.5 Etapas de um Estudo de Simulação...................................................................................231.6 Sistemas de Fila.................................................................................................................241.6.1 Notação de Kendall para Sistemas de Fila......................................................................261.6.2 Variáveis Aleatórias dos Sistemas de Fila.......................................................................281.6.3 Processos de Poisson.......................................................................................................311.6.4 Probabilidade de Estado para Processos Nascimento Morte..........................................331.6.5 Sistemas de Filas M/M/1.................................................................................................341.7 Outra Visão para Estudar Modelagem e Simulação...........................................................371.8 Recursos Didáticos Pedagógicos.......................................................................................411.9 Questões.............................................................................................................................441.10 Exercícios.........................................................................................................................442 Simulação de Sistemas de Fila..............................................................................................462.1 Modelo Conceitual de Sistemas de Fila.............................................................................472.1.1 Valores iniciais da Simulação..........................................................................................492.1.2 Cálculo de at....................................................................................................................502.1.3 Cálculo de bs...................................................................................................................502.1.4 Cálculo de es...................................................................................................................512.1.5 Estatísticas de Sistemas de Fila M/M/1..........................................................................512.1.5.1 Algoritmo para Calcular nq...........................................................................................522.1.5.2 Valores de E(ns)............................................................................................................542.1.5.3 Algoritmo para Calcular p0...........................................................................................552.1.5.4 Algoritmo para Calcular U...........................................................................................552.1.6 Resumo do Modelo de Sistemas de Filas M/M/1...........................................................562.2 Modelo Computacional de Sistemas de Fila M/M/1.........................................................582.2.1 Técnica para GeraR iat e st.............................................................................................592.2.2 Software QS.cpp.............................................................................................................612.3 Questões.............................................................................................................................692.4 Exercícios...........................................................................................................................702.5 Recursos Didáticos Pedagógicos.......................................................................................712.5.1 Classe clQS.....................................................................................................................712.5.2 Software QSTable.html...................................................................................................732.5.3 Software QSPlot.html.....................................................................................................752.5.4 Software Nq.html............................................................................................................793 Seleção de Distribuições de Probabilidade...........................................................................833.1 Independência de Observações..........................................................................................863.2 Distribuições de Probabilidade Úteis.................................................................................883.3 Estimação de Parâmetros...................................................................................................903.3.1 Método da Máxima Verossimilhança..............................................................................913.3.2 Método dos Mínimos Quadrados....................................................................................923.4 Estimativa dos Parâmetros das FDP..................................................................................94

Modelagem e Simulação Discreta 4

3.4.1 Estimativa dos parâmetros da fdp Beta...........................................................................943.4.2 Estimativa dos parâmetros da fdp Gamma.....................................................................953.4.3 Estimativa dos parâmetros da fdp Weibull......................................................................963.5 Identificação da Distribuição Estatística............................................................................963.5.1 Teste Chi-Quadrado (CQ)...............................................................................................973.5.2 Teste de Komolgorov-Smirnov (KS)............................................................................1003.5.3 Comparação entre os testes CQ e KS............................................................................1023.5.4 Testes CQ e KS para fdp Beta.......................................................................................1023.6 Modelos para Processos de Chegada...............................................................................1023.7 Gerando Processos de Chegada.......................................................................................1043.8 Testando Homogeneidade de Amostras...........................................................................1043.9 Questões...........................................................................................................................1073.10 Exercícios.......................................................................................................................1074 Geração de Números Aleatórios..........................................................................................1104.1 Geradores Congruentes Lineares (GCL)..........................................................................1114.2 GCL de uso geral..............................................................................................................1134.3 Números Aleatórios em GNU C.......................................................................................1144.4 Números Aleatórios em GNU C++..................................................................................1164.5 Composição de Geradores................................................................................................1174.6 Geradores Tausworthe......................................................................................................1174.7 Outros Geradores..............................................................................................................1184.8 Classe clGNA...................................................................................................................1184.9 Teste de Geradores de Números Aleatórios.....................................................................1204.9.1 Testes Empíricos...........................................................................................................1214.9.2 Testes Teóricos..............................................................................................................1234.10 Questões.........................................................................................................................1274.11 Exercícios.......................................................................................................................1275 Geração de Variáveis Aleatórias..........................................................................................1295.1 Métodos Gerais................................................................................................................1315.1.1 Método da Inversa da Função Densidade Acumulada..................................................1315.1.2 Método da Convolução.................................................................................................1325.1.3 Método da Composição................................................................................................1325.1.4 Método da Aceitação Rejeição......................................................................................1335.1.5 Transformação de Box-Muller......................................................................................1345.1.6 Qualidade na Geração de Variáveis Aleatórias.............................................................1355.2 Geração de Variáveis Aleatórias.......................................................................................1355.3 Relações entre as Distribuições de Probabilidade............................................................1395.4 Distribuições de Probabilidades da Linguagem ANSI C++11.........................................1405.5 Gerando Processos de Chegada......................................................................................1415.5.1 Geração de Variáveis Aleatórias da Distribuição Poisson.............................................1425.5.2 Geração de Variáveis Aleatórias da Distribuição Exponencial.....................................1425.6 Questões...........................................................................................................................1435.7 Exercícios.........................................................................................................................1436 Verificação e Validação de Modelos...................................................................................1456.1 Técnicas de Verificação de Modelos................................................................................1466.2 Técnicas de Validação de Modelo....................................................................................1486.3 Considerações Adicionais................................................................................................1496.4 Determinando o Nível de Detalhe de Modelos................................................................1496.5 Melhorando a Validade e Credibilidade de Modelos.......................................................1516.6 Questões...........................................................................................................................152

Modelagem e Simulação Discreta 5

6.7 Exercícios.........................................................................................................................1527 Análise de Resultados Simulados.......................................................................................1537.1 Tipos de Simulação com Relação à Análise da Saída......................................................1557.1.1 Remoção de Transientes................................................................................................1557.1.2 Critério de Parada..........................................................................................................1577.2 Análise Estatística de Simulações Finitas........................................................................1577.2.1 Análise de Simulação Terminal.....................................................................................1587.2.2 Método de Replicação Independente (MRI).................................................................1587.2.3 Análise Estatística de Parâmetros Estacionários...........................................................1607.2.3.1 Médias de Lotes.........................................................................................................1607.2.3.2 Replicações Independentes........................................................................................1627.3 Redução da variância.......................................................................................................1627.3.1 Números aleatórios comuns..........................................................................................1637.3.2 Variáveis antitéticas.......................................................................................................1647.3.3 Observações..................................................................................................................1647.4 Análise Estatística de Parâmetros Estacionários Cíclicos................................................1657.4.1 Modelos Sazonais.........................................................................................................1657.4.2 Modelos Não-lineares...................................................................................................1667.4.3 Análise Harmônica........................................................................................................1677.5 Estimação por Intervalos de Confiança...........................................................................1707.6 Métodos Estatísticos para Comparar Resultados Simulados...........................................1707.6.1 Teste para Média Zero...................................................................................................1717.6.2 Observações pareadas...................................................................................................1727.6.3 Observações não pareadas............................................................................................1737.6.4 Que Nível Estatística de Confiança Usar......................................................................1747.7 Comparação de Sistemas.................................................................................................1747.8 Testes de Hipótese............................................................................................................1757.9 Questões...........................................................................................................................1757.10 Exercícios.......................................................................................................................1757.11 Recursos Pedagógicos....................................................................................................1777.11.1 Software AH.html........................................................................................................1777.11.2 Software QS-RI.cpp....................................................................................................1817.11.3 Software QS-ML.cpp..................................................................................................1838 Simulação de Sistemas Computacionais.............................................................................1878.1 Modelo de Rede de Sistemas de Fila (QSN)....................................................................1898.2 Modelo Conceitual de Redes de Sistemas de Fila...........................................................1908.3 Valores iniciais da Simulação...........................................................................................1928.3.1 Cálculo de iat................................................................................................................1938.3.2 Cálculo de at, bs, es e idt...............................................................................................1938.3.3 Cálculo de nq................................................................................................................1948.4 Modelo Computacional de Redes de Sistemas de Filas...................................................1948.5 Simulação de Sistemas de Cliente/Servidor Web em Camadas.......................................2098.5.1 Sistema Cliente/SeRvidor Web em uma camada física................................................2098.5.2 Sistema Cliente/Sevidor Web em duas camadas físicas................................................2108.5.3 Sistema Cliente/Sevidor Web em três camadas físicas.................................................2118.6 Simulação de Sistemas de Hardware...............................................................................2138.7 Exercícios.........................................................................................................................2148.8 Recursos Didáticos Pedagógicos.....................................................................................2158.8.1 Software QSNPlot.html................................................................................................2159 Apêndice..............................................................................................................................221

Modelagem e Simulação Discreta 6

9.1 Representatividade no Processo de Amostragem.............................................................2219.2 Número de Classes...........................................................................................................2229.3 Gráfico de Extremos e Quartis ou Box-Plot....................................................................2229.4 Valores Extremos ou Outlier............................................................................................2239.5 Testes de Hipóteses e Significância.................................................................................2249.5.1 Decisão estatística.........................................................................................................2249.5.2 Nível de significância....................................................................................................2259.5.3 Testes envolvendo a distribuição normal......................................................................2259.5.4 Testes Unicaudal e bicaudal..........................................................................................2279.5.5 p-value...........................................................................................................................2289.6 Integração Numérica........................................................................................................2299.7 Quantis da Distribuição χ2................................................................................................2319.8 Quantis da Distribuição de KS.........................................................................................2339.9 Quantis da Distribuição Normal Unitária........................................................................2369.10 Quantis da Distribuição t (unilateral).............................................................................2389.11 Quantis da Distribuição t (bilateral)...............................................................................2409.12 Quantis da distribuição χ2 bilateral.................................................................................2429.13 Noções básicas de Teoria dos Números.........................................................................2449.13.1 Função Piso.................................................................................................................2459.13.2 Função Teto.................................................................................................................2459.13.3 Número Primo.............................................................................................................2469.13.4 Máximo Divisor Comum (mdc)..................................................................................2469.13.5 Divisibilidade..............................................................................................................2479.13.6 Operador mod.............................................................................................................2479.14 Intervalo de Confiança da Média...................................................................................24710 Referências........................................................................................................................251

Modelagem e Simulação Discreta 7

Índice de figuras

Figura 1 - Esquema dos principais tópicos do livro..................................................................15Figura 2 - Representação gráfica da relação sistema mundo real.............................................18Figura 3 - Circuito integrado TTL 7400 (fonte: pt.wikipedia.org/wiki/Porta_lógica)..............19Figura 4 - Representação gráfica da relação mundo real-sistema-modelo...............................19Figura 5 - Modelo do circuito integrado TTL 7400 (fonte: pt.wikipedia.org/wiki/Porta_lógica)..........................................................................................20Figura 6 - Representação gráfica da relação mundo real-sistema-modelo-simulação e de volta ao sistema do mundo real..........................................................................................................20Figura 7 - Representação gráfica dos Sistemas de Fila, sua estrutura, parâmetros básicos e inter-relações entre seus componentes (Jain, 1991)..................................................................25Figura 8 - Representação gráfica de Sistemas de Fila simples destacando sua estrutura, os processos de chegada e saída, a formação da Fila com tarefas em espera e o Servidor...........26Figura 9 - Variáveis aleatórias utilizadas na análise de Sistemas de Fila Simples, adaptado de Jain (1991).................................................................................................................................29Figura 10 - Relação entre os processos estocásticos.................................................................32Figura 11 - Diagrama de transição de estado de Processo Nascimento Morte.........................33Figura 12 - Diagrama de transição de estado de Sistemas de Fila M/M/1 destacando os valoresconstantes das taxas de transição λ e μ.....................................................................................34Figura 13 - Diagrama com as etapas em um estudo envolvendo modelagem e simulação segundo Freitas Filho (2008)....................................................................................................37Figura 14 - Resultados do modelo analítico de Sistema de Filas M/M/1 utilizando o software MM1Analitico.html..................................................................................................................44Figura 15 - Modelo de Sistemas de Filas M/M/1 (QS) e seus elementos constituintes: a Fila (Q), o Servidor (S) e as tarefas aguardando processamento (retângulos).................................47Figura 16 - Modelo Conceitual de Sistemas de Fila M/M/1 com seus processos, variáveis de entrada e saída, números, eventos e tempos em cinco níveis, adaptado de Jain (1991)...........48Figura 17 - Tarefa chegando em Sitemas de Fila: a) Servidor ocioso quando at[e] > es[e-1] e bs[e] = at[e]; b) Servidor ocupado quando at[e] ≤ es[e-1] e bs[e] = es[e-1].............................51Figura 18 - Valor de at da tarefa e em relação aos valores de es das tarefas anteriores, ilustrando as 5 tarefas na Fila, ou seja, at[e] < es[e-4] que é o mesmo que at[e] ≥ es[e-5]......54Figura 19 - Diagrama de classes do software QS.cpp...............................................................66Figura 20 - Diagrama de atividades do software QS.cpp.........................................................66Figura 21 - Resultados da execução do software QSTable.html (Algoritmo 2.9) com entradas N = 10, l = 0.167 e m = 0.191...................................................................................................75Figura 22 - Resultado da execução do software QSPlot.html...................................................79Figura 23 - Tabelas com os dados calculados pelo software Nq.html para N = 15, l = 1, m = 2...................................................................................................................................................81Figura 24 - Modelagem e análise matemática (Kroese & Chan, 2014)....................................83Figura 25 - Processo de gerar dados para simulação a partir de amostras de dados de um sistema computacional..............................................................................................................84

Modelagem e Simulação Discreta 8

Figura 26 - Gráficos de dispersão dos pontos (xi,xi+1) do Exemplo 3.2.................................88Figura 27 - Relacionamento entres as funções densidade de probabilidade, adaptado de Zwillinger & Kokoska (2000)...................................................................................................89Figura 28 - Regiões de probabilidade de aceitação (cinza) ou rejeição (vermelho) da hipótese H0 ao nível de significância α para o teste CQ.........................................................................98Figura 29 - Gráfico de dispersão para avaliar graficamente a independência dos números aleatórios.................................................................................................................................121Figura 30 - Gráficos de barra para avaliar a independência e a distribuição de números aleatórios.................................................................................................................................122Figura 31 - Classes de números aleatórios utilizando o Algoritmo 4.8 para n iguais a 500, 1000, 2000, 3000, 4000, 5000 e 10000...................................................................................127Figura 32 - Transformação de variáveis aleatórias U(0,1) em distribuições arbitrárias pelo método da inversa...................................................................................................................130Figura 33 - Ilustração do Método da Aceitação-Rejeição.......................................................133Figura 34 - Gráfico de f(t) = 2 exp(-t2/2)/(2π)1/2 e g(t) = e-t/2 para t ≥ 0.............................134Figura 35 - Relações entre distribuições discretas (Jain,1901)...............................................139Figura 36 - Relações entre distribuições contínuas (Jain,1901)..............................................140Figura 37 - Relação entre os conceitos de validação e verificação e o mundo real................145Figura 38 - Relação benefício/custo e a qualidade de modelos..............................................151Figura 39 - Indicação dos estados transiente e estacionário de uma simulação típica............154Figura 40 - Variância do número de tarefas na fila em função do tamanho de lote da simulaçãodo Sistema de Fila M/M/1 com ρ = 0,5...................................................................................157Figura 41 - Tempo de resposta do Exemplo 7.1......................................................................169Figura 42 - Teste para uma média zero, nos casos (a) e (b) os IC incluem zero e nos casos (c) e(d) os IC não incluem zero......................................................................................................171Figura 43 - Sistema computacional, servidor web conectado a rede internet por meio de um roteador....................................................................................................................................187Figura 44 - Modelo de um sistema computacional por meio de filas.....................................188Figura 45 - Diagrama de blocos do Sun Fire X4150 Server com Serial Attached SCSI – SAS (Sun Microsystems, 2016)......................................................................................................189Figura 46 - Rede de Sistemas de Fila indicando o fluxo de dados de entrada (iat - interarrival time) do primeiro Sistema de Fila e a sua saida (idt - inter departure time) como entrada para o próximo Sistema de Fila......................................................................................................190Figura 47 - Modelo conceitual de um Sistemas de Fila em rede............................................191Figura 48 - Esquema do estudo de caso de uma Rede de Sistemas de Fila............................191Figura 49 - Diagrama de classes do software QSN.cpp..........................................................201Figura 50 - Diagrama de atividades do software QSN.cpp.....................................................202Figura 51 - Sistema Cliente/Servidor Web em uma camada física.........................................210Figura 52 - A arquitetura do Sistema Cliente/Servidor Web da Figura 51..............................210Figura 53 - Sistema Cliente/Sevidor Web em duas camadas físicas.......................................211Figura 54 - A arquitetura do Sistema Cliente/Servidor Web da Figura 53..............................211Figura 55 - Sistema Cliente/Servidor Web em três camadas físicas.......................................212Figura 56 - A arquitetura do Sistema Cliente/Servidor Web da Figura 55..............................212Figura 57 - Sistema Cliente/Servidor Web do Exemplo 8.1...................................................213Figura 58 - Diagrama de blocos de parte do Sun Fire X4150 (Sun Microsystems, 2016).....214Figura 59 - Modelo de um Sistema de Fila da Figura 59........................................................214Figura 60 - Gráfico dos resultados do QSNPlot.html (Algoritmo 8.3)...................................220Figura 61 - Figura do Exemplo 9.2.........................................................................................223Figura 62 - Distribuição normal padrão com as regiões críticas de um teste bicaudal com α = 0,05..........................................................................................................................................226

Modelagem e Simulação Discreta 9

Figura 63 - Cálculo de valores críticos para testes unicaudal (a) à direita (a), (b) à esquerda e (c) bicaudal..............................................................................................................................228Figura 64 - Esquema do cálculo de KS(1-α;n) destacando o valor de x crítico para o Teste de Kolmogorov-Smirnov.............................................................................................................236

Índice de tabelas

Tabela 1 - Estágios da construção de modelos para simulação de sistemas.............................23Tabela 2 - Componentes dos Sistemas de Fila..........................................................................24Tabela 3 - Os seis parâmetros básicos dos Sistemas de Fila.....................................................25Tabela 4 - Descrição dos parâmetros da notação de Kendall para Sistemas de Fila.................26Tabela 5 - Valores dos parâmetros da notação de Kendall para Sistemas de Fila.....................27Tabela 6 - Disciplinas de filas de sistemas computacionais......................................................27Tabela 7 - Variáveis aleatórias fundamentais dos Sistemas de Fila Simples (Jain, 1991)........29Tabela 8 - Resultados analíticos de Sistemas de Fila M/M/1 segundo a Teoria das Filas (Jain, 1991).........................................................................................................................................30Tabela 9 - Descrição das etapas em um estudo envolvendo modelagem e simulação segundo Freitas Filho (2008)...................................................................................................................38Tabela 10 - Simulação de um Sistema de Fila M/M/1..............................................................49Tabela 11 - Valores das variáveis aleatórias dos Sistemas de Fila M/M/1 e seus valores médios...................................................................................................................................................52Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1.....................................................56Tabela 13 - Entrada, parâmetros, variáveis de estado e saída do Modelo Computacional de Sistemas de Fila M/M/1............................................................................................................56Tabela 14 - Entrada, parâmetros, variáveis de estado e saída do Modelo Computacional de Sistemas de Fila M/M/1............................................................................................................57Tabela 15 - Classe clQS do Modelo Computacional dos Sistemas de Fila M/M/1..................58Tabela 16 - Classe clQS do Modelo Computacional dos Sistemas de Fila M/M/1 para simulação com dados de entrada N, l e m.................................................................................61Tabela 17 - Variáveis utilizadas no software QS.cpp................................................................64Tabela 18 - Etapas para a aplicação de testes de aderência, adaptada de Jain (1991)..............85Tabela 19 - Funções densidade de probabilidade mais relevantes com seus parâmetros, média e variância (Forbes et al., 2011)................................................................................................89Tabela 20 - Definições da fdp Exponencial e seus parâmetros.................................................94Tabela 21 - Números aleatórios gerados a partir de xn = 6xn-1 + 5 mod 11 para x0 = 0, 1, ..., 14.............................................................................................................................................113Tabela 22 - Geradores de números aleatórios de uso geral.....................................................114Tabela 23 - As funções, a constante e as bibliotecas da linguagem C para gerar números aleatórios.................................................................................................................................114Tabela 24 - Aplicações do Método da Inversa da FDA onde u ~ U(0,1), Forbes et al. (2011).................................................................................................................................................132

Modelagem e Simulação Discreta 10

Tabela 25 - Categorias dos modelos relativa a implementação das hipóteses e realismo dos pressupostos............................................................................................................................146Tabela 26 - Técnicas para a Verificação de Modelos..............................................................146Tabela 27 - Métodos para a remoção de transientes...............................................................156Tabela 28 - Quadro com as b rodadas do Método de Replicação Independente, cada rodada com k eventos e suas respectivas médias................................................................................158Tabela 29 - Quadro do Método das Médias de Lotes com uma rodada com 24 eventos distribuídos em 4 lotes, cada lote com 6 eventos e suas respectivas médias..........................161Tabela 30 - Intervalo de confiança da média (μ), da variância (σ2) e do desvio padrão (σ) de amostras aleatórias de tamanho n de uma população normal, com nível de significância α e σ desconhecido...........................................................................................................................170Tabela 31 - Resultados da execução do Software AH.html do Algoritmo 7.1........................180Tabela 32 - Resultado da execução do software QS-RI.cpp descrito no Algoritmo 7.2, para a variável de estado r..................................................................................................................183Tabela 33 - Resultado de uma execução do software QS-ML.cpp descrito no Algoritmo 7.3.................................................................................................................................................186Tabela 34 - Valores iniciais de iat, at, bs, es e idt dos SF da primeira sequência S................192Tabela 35 - Classe clMM1 do Modelo Computacional dos Sistemas de Fila M/M/1............194Tabela 36 - Descrição das classes do Modelo Computacional dos Sistemas de Fila M/M/1. 195Tabela 37 - Variáveis utilizadas no software QSN.cpp...........................................................201Tabela 38 - Resultado da execução do software QSN.cpp descrito na Tabela 8.3..................202Tabela 39 - Testes de Hipótese e os Erros Tipo I e Tipo II.....................................................225Tabela 40 - Quantis da Distribuição Normal Unitária............................................................227Tabela 41 - Quantis da distribuição χ2....................................................................................231Tabela 42 - Quantis da Distribuição KS..................................................................................233Tabela 43 - Quantis da Distribuição Normal Unitária............................................................236Tabela 44 - Quantis da Distribuição t unilateral......................................................................238Tabela 45 - Quantis da Distribuição t bilateral........................................................................240Tabela 46 - Quantis da distribuição χ2 bilateral......................................................................242

Modelagem e Simulação Discreta 11

Modelagem e Simulação Discreta

Prefácio

Este livro tem como principal objetivo o de servir de texto para a disciplinaModelagem e Simulação do curso de Engenharia da Computação doColegiado de Engenharia da Computação da Universidade Federal do Valedo São Francisco.

Os grandes temas deste livro são: Sistemas de Fila, Geração de NúmerosAleatórios, Geração de Variáveis Aleatórias, Verifcação de Modelos,Validação de Modelos, Simulação de Sistemas de Fila e Análise deResultados Simulados.

A partir da Teoria de Filas e dos Modelos de Sistemas de Filas foramconstruídos os Modelos Conceituais de Sistemas de Fila e seus respectivosModelos Conceitual e Computacional. Estes modelos permitem tratar dostemas deste livro e são os eixos que dão suporte à teoria e às aplicaçõesda Modelagem e Simulação Discreta.

Modelagem e Simulação Discreta 12

O Modelo Conceitual de Sistemas de Fila e seu respectivo ModeloComputacional, apresentados neste livro, foi feito em duas parteas. Naprimeira foi tratado o processo de simulação e na segunda a análiseestatística dos resultados. Desta forma, são enfatizadas as variáveis dereal interesse para a simulação, tornando o modelo mais simples. Estaabordagem revelou-se assaz didática.

Os modelos computacionais foram implementados em C++, pelo rigor dalinguagem, e em Javascript com HTML5, para permitir a visualizaçãográfca e a dinâmica da simulação, viabilizando seu uso em diversos tiposde computadores, dispositivos móveis, navegadores e sistemasoperacionais. Esta implementação permite a avaliação gráfca docomportamento dos sistemas simulados, dando grande estímulo àaprendizagem, com resultados inspiradores.

Os algoritmos para a Geração de Variáveis Aleatórias também sãocontribuições relevantes, permitem gerar várias funções de distribuiçãoacumulada, discretas e contínuas, a partir de números aleatórios, dandosuporte à simulação computacional.

Outros algoritmos foram desenvolvidos, destinados aos tópicos relevantesda Simulação de Sistemas Simples de Fila, para Verifcação e Validação deModelos e também para a Análise de Resultados Simulados, com destaquepara os métodos de Replicação Independente e Lotes Médios.

O autor espera que tenha contribuído com o ensino destes conteúdos demodo a torná-los mais atraentes, visuais, dinâmicos e aplicados nasdiversas áreas de conhecimento, quando cabível. Na esperança de que osestudantes descubram a expressão racional que se descobriu no mundo eque os ajude a reinventá-lo.

Os softwares e material didáticos auxiliares foram incluídos no texto e temcomo fnalidade pedagógica, destinam-se a ilustrar os conceitos dadisciplina, estão sendo melhorados e otimizados e são de uso livre. Oautor não assume quaisquer responsabilidades pelo seu uso e, ou, pelasconsequências de seu uso.

Construindo a Modelagem e Simulação de Sistemas Computacionais

A Modelagem e Simulação de Sistemas Computacionais permitemrepresentar Sistemas Computacionais por meio de modelos de simulaçãoe reproduzir suas cadeias de causalidade, estimar e avaliar resultados esubsidiar o processo de tomada de decisões em nível de engenharia. A

Modelagem e Simulação Discreta 13

seguir são relacionados os principais conceitos que dão suporte àmodelagem e a simulação destes sistemas.

Teorias da Filas

Mais de um século de pesquisa em sistemas de flas permitemcompreender a organização dos sistemas computacionais eestabelecer suas relações físico-matemáticas sob a forma deModelos Analíticos. Os seus resultados teóricos e experimentaisatestam o sucesso desta abordagem

Estatística

Estatística é uma ferramenta usada quando não se sabe, ou éimpossível saber, totalmente as informações contidas em umsistema. Desta forma, ela trabalha melhor com incertezas aoquantifcá-las em níveis de confança. Seus conceitos, métodos etécnicas dão o suporte necessário para a validação e verifcaçãode experimentos envolvendo sistemas computacionais

Computadores, Linguagem e Técnicas Computacionais

Computadores, com sua capacidade e velocidades extremadas,dão o suporte para a simulação. As linguagens de programaçãopermitem escrever os softwares necessários para a simulação eanálise de resultados. As técnicas computacionais tais comoestruturas de dados, programação orientada a objetos, cálculonumérico e computação gráfca, dão suporte à simulação. Todo equalquer hardware ou software, os computadores e seuscomponentes bem como seus elementos de conexão são, elesmesmos, objetos de estudo

Geradores de Números Aleatórios e Geração de Variáveis Aleatórias

O acaso é um agente imprevisível e atua em todos os domínios daNatureza. Por ser um elemento explicativo nas ciências, énecessário introduzi-lo nos sistemas, o que é feito por meio denúmeros aleatórios. Os geradores de números aleatórios sãoessenciais para gerar variáveis aleatórias e suas distribuiçõesestatísticas, viabilizando a simulação computacional

Modelos Analíticosde Redes de Computadores

Os modelos de sistema computacionais tornaram possíveis acompreensão e a verifcação de resultados de simulação,extensíveis aos demais recursos de software e de hardware

Sistemas Computacionais

Os sistemas computacionais são transversais na vida das pessoas,das empresas e dos governos. Em todas as áreas, sua infuência émarcante. Sistemas de computação são recursos de software e dehardware, tomados em parte ou no todo, de modo isolado ou emrede e, para sua compreensão e seu uso adequado, é necessárioum conhecimento básico da terminologia da avaliação dedesempenho, seus princípios e suas técnicas

Matemática

Com sua concisão e ubiquidade, a matemática é a linguagem quepermite escrever o corpo teórico para a modelagem, simulação eanálise de resultados. As técnicas matemáticas, tais comoderivadas, integração e séries, são requeridas para qualifcar equantifcar as teorias deste livro e seus objetos de estudo

Cabe aqui uma ressalva, a de que variáveis aleatórias diferem dasvariáveis deterministas habituais (da ciência e engenharia) posto quevariáveis aleatórias permitem a atribuição de distribuição sistemática devalores de probabilidade para cada resultado possível.

Visão dos Tópicos Tratados no Livro

A maioria das simulações estocásticas têm a mesma estrutura básica:

Modelagem e Simulação Discreta 14

1. Identifcar uma variável aleatória de interesse X e desenvolver um software parasua simulação

2. Gerar uma amostra X1, ..., Xn independentes e igualmente distribuídas (iid) e coma mesma distribuição X

3. Estimar E[X] ou uma função de X (usando média de X) e avaliar a precisão daestimativa (usando um intervalo de confança)

A Figura 1 apresenta uma visão dos principais tópicos do livro. O temacentral é a simulação, ponto de convergência de quatro outros tópicos,discutidos abaixo:

Figura 1 - Esquema dos principais tópicos do livro.

fdp acrônimo de função densidade de probabilidade, são funções quebuscam replicar o comportamento de Sistemas de Fila, sãovalidadas por meio de testes de aderência de amostrasrepresentativas obtidas de Sistemas Computacionais

Teoria das Filas estabelece as relações físico-matemáticas dos sistemascomputacionais e permitem construir seus modelos analíticos,conceituais e computacionais

GVA acrônimo de gerador de variáveis aleatórias, permite gerar valorespara funções densidade de probabilidade a partir dos geradores denúmeros aleatórios (GNA)

Validação são técnicas para comprovar se a simulação representa o sistemareal com fdelidade sufciente para garantir a obtenção desoluções satisfatórias para o problema

Modelagem e Simulação Discreta 15

Simulação processo que permite parametrizar, construir e reproduzir ocomportamento de Sistemas de Fila por meio de computadores

Para a simulação de um sistema computacional o primeiro passo requer aconstrução de um modelo, neste caso utiliza-se modelos obtidos a partirda Teoria das Filas. Em seguida, obtém-se amostras estatísticas devariáveis aleatórias representativas de seu comportamento (em geral sãorequeridos poucos dados), estes dados fornecem os parâmetros quepermitem identifcar a função densidade de probabilidade (fdp) adequadapara a amostra utilizando testes de aderência. Uma vez identifcada a fdp,pode-se gerar inúmeras variáveis aleatórias para simular ocomportamento do sistema. Os resultados obtidos são valores médios eseus respectivos intervalos de confança.

A simulação é uma técnica reducionista e sua grande vantagem é que, apartir de uns poucos dados comportamentais de um sistema, ela permitegerar varáveis aleatórias em grande quantidade e que são capazes dereproduzir a dinâmica este sistema. Atendendo bem as necessidades dosengenheiros: fazer mais com menos atendendo aos critérios de qualidadeestabelecidos.

Modelagem e Simulação Discreta 16

1 INTRODUÇÃO

Os sistemas computacionais, tais como os dispositivos de hardware e asredes de computadores, prestam relevantes serviços compartilhandorecursos de software e de hardware. Tendo em vista a magnitude de suascontribuições em todos os níveis da nossa sociedade, é desnecessáriodestacar sua importância e o seu alcance espaço-temporal.

Uma característica destes sistemas é que um recurso pode atender, emgeral, apenas uma tarefa em dado intervalo de tempo e as outras tarefasque pretendem utilizá-lo devem esperar em uma fla. Este conceito,apesar da sua simplicidade, é a ideia primária para a compreensão domais simples ao mais complexo sistema computacional, da performancede uma CPU à grande rede mundial – a Internet, dos sistemas de hardwareaos de software.

Os modelos de flas são utilizados para a modelagem analítica, simulaçãoe avaliação do desempenho de sistemas computacionais, tanto em nívelde software quanto de hardware. Estes modelos permitem descrever oestado destes sistemas quantifcando suas variáveis de estado e suadinâmica temporal.

A simulação de sistemas computacionais pode ser vista como o estudo docomportamento de sistemas através de modelos de flas. Ela utiliza muitosoutros recursos teóricos, principalmente estatística, mas também númerosaleatórios, matemática discreta e teoria dos números, além de engenhariade software, cálculo numérico, técnicas de programação e computaçãográfca.

O uso da simulação pode oferecer vantagens quando é necessário estimardistribuição de variáveis aleatórias, testar hipóteses estatísticas, comparar

Modelagem e Simulação Discreta 17

cenários representando diferentes soluções de um problema, avaliar ocomportamento de uma solução analítica e avaliar um processo detomadas de decisão em tempo real.

A execução de modelos de simulação em computador tem potencial parafornecer resultados mais precisos sem a necessidade de interferir nossistemas reais, possibilitando gerar informações úteis na tomada dedecisões para a solução de problemas.

A simulação é uma área com grande potencial de aplicação comercial,pesquisa e consultoria, principalmente em sistemas de grande tráfego.Mas vai além, como banco de dados, sistemas operacionais, comunicação,sistemas embarcados e projetos de hardware e software.

1.1 SISTEMA

O termo sistema pode ser defnido como um conjunto estruturado decomponentes entre os quais pode-se defnir alguma relação defuncionalidade. O valor dos atributos dos seus componentes, variáveis deestado e parâmetros, em um dado instante de tempo, defne o estado dosistema, Figura 2.

Figura 2 - Representação gráfca da relação sistema mundo real.

Para os propósitos deste livro, os sistemas de interesse são os sistemascomputacionais que são recursos de software e de hardware, tomados emparte ou no todo, de modo isolado ou em conjunto. E, para suarepresentação, são utilizados sistemas de flas.

Exemplo 1.1: O circuito TTL 7400 da Figura 3 é um exemplo de um sistema, umdispositivo que contém quatro portas NAND de duas entradas cada. As portasapresentam funcionamento independente.

Modelagem e Simulação Discreta 18

Figura 3 - Circuito integrado TTL 7400 (fonte:pt.wikipedia.org/wiki/Porta_lógica)

1.2 MODELO

Modelos são descrições de um sistema, concebidos através de umaabstração da realidade, considerando seus aspectos relevantes, parapermitir uma análise simplifcada sem descartar aspectos importantes darealidade, de modo que possam ser utilizados com os propósitos decontrole e predição.

A construção de um modelo, em geral, busca viabilizar a solução de umproblema de um sistema, podendo existir um número variado de modelospara um mesmo sistema, cada um deles considerando aspectosespecífcos do mesmo. É muito comum ter vários modelos para resolver omesmo problema de um sistema.

A utilidade de um modelo está diretamente relacionada à sua capacidadede incorporar elementos reais de forma simples, contendo seus aspectosimportantes sem que a sua complexidade impossibilite a compreensão emanipulação do mesmo, Figura 4.

Figura 4 - Representação gráfca da relação mundo real-sistema-modelo.

Modelagem e Simulação Discreta 19

Para os propósitos deste livro, os modelos de interesse são os modelos defla, que são modelos matemáticos capazes de representar os processosde sistemas computacionais de modo geral, simular seu comportamento,descrever seus aspectos relevantes, permitir sua análise e fazer predição.

Exemplo 1.2: A Figura 5 é um modelo do circuito TTL 7400, com suas quatro portasNAND de duas entradas cada e seu funcionamento. Pode-se verifcar que os elementosdesnecessários do sistema da Figura 3 foram propositalmente abstraídos, restando tãosomente aqueles que são relevantes e úteis para os propósitos da eletrônica digital.

Figura 5 - Modelo do circuito integrado TTL 7400 (fonte:pt.wikipedia.org/wiki/Porta_lógica).

1.3 SIMULAÇÃO

Simulação consiste em manipular um modelo de um sistema, real ouhipotético, para compreender seu comportamento ou avaliar suaoperação, Figura 6.

Figura 6 - Representação gráfca da relação mundo real-sistema-modelo-simulação e de volta ao sistema do mundo real.

Uma das grandes utilidades da simulação é tornar possível fazerestimativas do comportamento de um sistema, além de estabelecer comomudanças no sistema, no todo ou em partes, podem afetar seucomportamento e desempenho, ou seja, a análise de sensibilidade demodelos.

Modelagem e Simulação Discreta 20

A simulação pode ser classifcada de várias maneiras, a mais comum usaquatro categorias: a) simulação contínua; b) simulação Monte Carlo; c)simulação de eventos discretos e d) simulação baseada em trace.

1.3.1 SIMULAÇÃO CONTÍNUA

Um processo pode ser de estado discreto ou contínuo. Se os valores quesuas variáveis de estado podem assumir é fnito e enumerável, o processoé chamado de processo de estado discreto. Por exemplo, o número detarefas em um sistema de fla pode ter valores discretos iguais a 1, 2, 3 eassim por diante, portanto, a formação de flas é um processo de estadodiscreto.

Por outro lado, se as variáveis de estado podem assumir qualquer valorreal ele é um processo de estado contínuo. O tempo de espera numa fla,teoricamente, pode assumir qualquer valor real e, portanto, é um processode estado contínuo.

A simulação contínua é utilizada para modelar sistemas cujo estado variacontinuamente no tempo, sendo comum a utilização de equaçõesdiferenciais.

1.3.2 SIMULAÇÃO MONTE CARLO

O Método de Monte Carlo é um método estatístico que utiliza amostragensaleatórias massivas para obter resultados numéricos, repetindo sucessivassimulações para calcular probabilidades. Tem sido utilizado como forma deobter aproximações numéricas de funções complexas, utilizando algumadistribuição de probabilidade e uma amostra para aproximar a função deinteresse.

Simulação de Monte Carlo é um modelo de simulação estática, apassagem do tempo é irrelevante.

1.3.3 SIMULAÇÃO DE EVENTOS DISCRETOS

Modelagem e Simulação Discreta 21

Um evento discreto acontece em um momento do tempo. Como o estadode um evento discreto permanece constante entre tempos de eventos,uma descrição completa do estado do sistema pode ser obtida avançandoo tempo de simulação.

Em simulação discreta, o estado do sistema só pode mudar nos tempos deeventos. Na simulação de sistemas computacionais, feita por meio demodelos de sistemas de flas, as tarefas entram na fla e são atendidaspelo servidor. Estes processos de chegada, início e fm do atendimento sãoeventos discretos que ocorrem em pontos isolados do tempo.

1.3.4 SIMULAÇÃO DE TRACE

Trace é um registro ordenado no tempo de eventos ocorridos em umsistema real, como um log de um servidor ou o registro de monitoramento.A simulação baseada em trace utiliza este registro como dados de entradae, assim, permite avaliar o comportado do sistema e avaliar modelos.

Traces são úteis para conhecer o comportamento de sistemascomputacionais, são fontes de dados para obtenção de funções dedistribuição de probabilidade de dados para uso em simulação. Como sãovalores medidos, podem também ser usados na validação e verifcação deresultados de simulações. Para serem úteis e ter valor estatístico, tracesdevem ser amostras representativas do comportamento do sistema.

1.4 SIMULAÇÃO COMPUTACIONAL

A simulação computacional faz uso de computadores para realizarsimulações. Ela utiliza linguagens de programação para implementar osmodelos matemáticos de sistemas computacionais em software eprocessá-los em computadores, fazendo uso das capacidades evelocidades extremadas destas máquinas.

No texto do livro, o termo simulação refere-se a simulação computacionalde sistemas discretos. Neste sentido, os modelos de Sistema de Filas serãoapresentados e implementados em C++ e Javascript, viabilizando a

Modelagem e Simulação Discreta 22

simulação em diversas tipos de computadores e dispositivos móveis,navegadores e sistemas operacionais.

1.5 ETAPAS DE UM ESTUDO DE SIMULAÇÃO

O processo de construção de modelos para representar sistemas pode serorganizado em uma sequência de estágios de forma a simplifcar, agilizare melhorar modelos. Considerando a estreita relação entre a simulação e aorientação a objetos, as técnicas de engenharia de software oferecemcontribuições relevantes no trabalho de projeto de modelos.

Neste contexto, na Tabela 1 estão apresentados em linhas gerais osestágios da construção de modelos para simulação de sistemas segundoJain (1991).

Tabela 1 - Estágios da construção de modelos para simulação de sistemas

Identificação do Problema

o problema é discutido no escopo do sistema real ou seu projeto.Uma vez identifcado o problema, pode-se avaliar a viabilidade douso da simulação para sua solução. Esta avaliação acontece emconsonância com os objetivos da simulação e dos seus usuáriosfnais

Formulação do Problema

após identifcado, o problema é então formulado com vistas àsimulação. Devido à natureza evolucionária da modelagem e dasimulação, a defnição do problema é um processo contínuo, queocorre em todos estes estágios

Objetivos consiste em identifcar claramente os resultados a serem alcançadoscom a simulação, defnir critérios para avaliação destes resultados eapresentar suas aplicações, restrições e limites das soluçõesencontradas para o problema. Em seguida são defnidos os objetivosespecífcos, para enumerar as características internas do sistemaque precisam ser representadas no modelo

Construção do Modelo Conceitual

o modelo conceitual consiste de uma descrição estática e de umadescrição dinâmica. A descrição estática defne os elementos dosistema e suas características. A descrição dinâmica defne o modocomo estes elementos interagem causando mudanças no seu estadono decorrer do tempo dos eventos. O modelador deve conhecer bema estrutura e as regras de operação do sistema e saber extrair oessencial do mesmo, sem incluir detalhes desnecessários. Aquantidade de detalhes incluída no modelo deve ser baseada nopropósito para o qual é construído

Determinação dos Dados de Entrada e Saída

geralmente os valores de entrada são, de início, hipotéticos oubaseados em alguma análise preliminar. Depende do objetivo domodelo, amostras representativas do sistema são requeridas e sãoúteis nos estágios posteriores do estudo da simulação. Dados da

Modelagem e Simulação Discreta 23

literatura, como datasheets e artigos, são fontes de dados usuais.

Construção do Modelo Computacional

é a tradução do modelo conceitual para uma forma reconhecida pelocomputador

Verificação consiste em determinar se o modelo conceitual é executado pelocomputador como esperado

Validação busca comprovar que ele representa o sistema real com fdelidadesufciente para garantir a obtenção de soluções satisfatórias para oproblema. Normalmente são utilizados cenários em que ocomportamento real já é conhecido previamente e que pode sercomparado com o comportamento obtido com a simulação. Tambémpode envolver uma comparação da estrutura do modelo e dosistema, e comparações do número de vezes que decisõesfundamentais ou tarefas dos subsistemas são realizadas. Outrosmodelos do mesmo sistema também podem ser utilizados navalidação

Plano de Tática e Estratégia

refere-se ao estabelecimento das ações para a execução dasimulação, o plano estratégico consiste em um cronograma deatividades efciente tanto para explicar as relações entre osresultados simulados e as variáveis controladas, quanto paradeterminar a combinação dos valores das variáveis controladas queminimizariam ou maximizariam a resposta simulada. Já o planotático consiste em determinar como cada simulação deve serrealizada para se obter as informações desejadas sobre os dados

Experimentaçãoe Análise dos Resultados

execução do modelo computacional, interpretação e análise dosresultados

Implementação dos Resultados

os resultados da simulação são implantados no sistema real

Documentação do Modelo

documentação do modelo utilizando os diagramas da UML ouequivalente

Relatório da Simulação

relatório técnico da simulação e memória de cálculo utilizandonormas técnicas ou equivalente

1.6 SISTEMAS DE FILA

Sistemas de Fila são compostos por Tarefas, uma ou mais Filas e umou mais Servidores, como exposto na Tabela 2.

Tabela 2 - Componentes dos Sistemas de Fila

Tarefa é a unidade que requer atendimentoFila representa as tarefas que esperam atendimento, não inclui as tarefas sendo

Modelagem e Simulação Discreta 24

atendidasServidor canal que realiza o atendimento da tarefa

O termo tarefa será a nomenclatura deste livro embora, dependendo docontexto, possam ser encontrados vários sinônimos ou termosequivalentes na literatura especializada

Sistemas de Fila podem ser descritos como tarefas chegando para seremprocessadas e saindo do sistema após serem atendidas. A formação de flaocorre quando a procura é maior do que a capacidade de atendimento doServidor. O fuxo temporal das tarefas nas Filas e no Servidor determina adinâmica do sistema.

A Figura 7 representa grafcamente a estrutura de um Sistema de Fila,nela pode-se ver os componentes, suas inter-relações e seus parâmetros.Nesta fgura pode-se identifcar seis parâmetros básicos dos Sistemas deFila, que são descritos na Tabela 3.

Figura 7 - Representação gráfca dos Sistemas de Fila, sua estrutura,parâmetros básicos e inter-relações entre seus componentes (Jain, 1991).

Tabela 3 - Os seis parâmetros básicos dos Sistemas de Fila

Parâmetro Descrição

1. Processo de chegada

o processo de chegada de tarefas ou entrada na fla do sistema, é medido em termos de número médio de chegadas por unidade de tempo (λ – taxa média de chegada) ou pelo tempo médio entre chegadas sucessivas

2. Distribuição do tempo de serviço

a distribuição do tempo de serviço é descrito pela taxa de serviço (μ – número de tarefas atendidas em um dado intervalo de tempo) ou pelo tempo de serviço

Modelagem e Simulação Discreta 25

3. Número de Servidores

número de servidores em paralelo que prestam serviços simultaneamente. Um sistema de flas pode apresentar um ou múltiplos canais de atendimento operando independentemente um do outro

4. Capacidade do Sistema

número máximo de tarefas permitidos no sistema ao mesmo tempo, tanto aquelas sendo atendidas quanto aquelas na fla

5. Tamanho da população

tamanho potencial da população de tarefas que demandam o sistema

6. Disciplina de Serviço

refere-se à maneira como as tarefas são escolhidas para entrar no servidor após uma fla ser formada

O modelo mais simples dos Sistemas de Fila é aquele que possui umaúnica Fila e apenas um Servidor, Figura 8. O modelo Fila+Servidor podeser usado para analisar os recursos individuais de sistemas decomputação como, por exemplo, se tarefas a serem processadas por umaCPU são mantidas em uma memória, a CPU pode ser modelada por umSistema de Fila simples, onde a memória é a Fila e a CPU é o Servidor dosistema.

Figura 8 - Representação gráfca de Sistemas de Fila simples destacandosua estrutura, os processos de chegada e saída, a formação da Fila comtarefas em espera e o Servidor.

O modelo Fila+Servidor é a unidade básica da simulação, embora possuaestrutura simples ele é bem estudado e tem sido bem-sucedido emrepresentar o comportamento dos sistemas computacionais. Estesmodelos podem ser associados em série e, ou, em paralelo para simularsistemas computacionais tais como circuitos integrados, componentes dehardware e rede de computadores.

1.6.1 NOTAÇÃO DE KENDALL PARA SISTEMAS DE FILA

De maneira geral, Sistemas de Fila podem ser descritos pela notação deKendall (A/B/c/K/m/Z), Tabela 4, com seus valores descritos na Tabela 5.

Tabela 4 - Descrição dos parâmetros da notação de Kendall para Sistemasde Fila

A distribuição estatística dos intervalos de tempo entre chegadasB distribuição estatística do tempo de serviço

Modelagem e Simulação Discreta 26

c número de servidores ou capacidade de atendimentoK número máximo de tarefas permitidas no sistemam tamanho da população de tarefasZ disciplina da fla

Tabela 5 - Valores dos parâmetros da notação de Kendall para Sistemas deFila

Símbolo Descrição Valores

A Distribuição de tempo entre chegadas

M – Processo MarkovianoD – DeterminísticaEδ – Erlang δ (δ = 1,2, ...)GI – Geral e Independente

B Distribuição de tempo de serviço M, D, Eδ, GI

c Número de servidores 1, 2, ..., ∞

K Capacidade do sistema 1, 2, ..., ∞

m Tamanho da população 1, 2, ..., ∞

Z Disciplina da fla

FIFO – primeiro que chega é o primeiro a ser atendidoLIFO – último que chega é o primeiroa ser atendidoSIRO – serviço com ordem aleatóriaPRI – prioridade

Assim, por exemplo, a notação M/E5/1/10/∞/FIFO indica um processo comchegadas Marcovianas (Exponencial Negativa ou Poisson), atendimentoErlang de quinto grau, um servidor, capacidade máxima do sistema igual a10 tarefas, população infnita e o primeiro que chega é o primeiro a sair dosistema.

A notação M/M/1 é o Sistema de Fila mais simples, com chegadas eatendimento Marcovianos, um servidor, capacidade do sistema infnita,população infnita e o primeiro que chega é o primeiro a sair do sistema, éa abreviação de M/M/1/∞/∞/FIFO, ou seja:

1.1

Em sistemas computacionais, principalmente em sistema que envolvehardware e sistemas de tempo real, o escalonamento das tarefas sãoutilizados para decidir que tarefa deve entrar em serviço. Além dasdisciplinas de flas já citadas, a Tabela 6 descreve as disciplinas de flamais comuns nestes sistemas computacionais.

Tabela 6 - Disciplinas de flas de sistemas computacionais

RR (round robin) uma tarefa escalonada é atendida por um intervalo de tempo

Modelagem e Simulação Discreta 27

M /M /1⇔M /M /1/∞/∞/FIFO

pequeno, um quantum. Se o serviço não é completado neste intervalo de tempo, ela é colocada no fnal da fla e outra tarefa é atendida até que esgote seu quantum ou termine o serviço

PS (process sharing) as tarefas dividem a capacidade do Servidor como se executassem em paralelo

IS (infinite server) não existe fla, as tarefas são atendidas assim que chegam no Sistema de Fila

PRTY (nonpreemptivepriority)

uma tarefa no Servidor não é afetada quando outra tarefa de maior prioridade chega no Sistema de Fila

PRTYPR (preemptive-resume priority)

a chegada de uma tarefa com maior prioridade no Sistema de Fila tira do Servidor a de menor prioridade

O desenvolvimento tanto teórico quanto computacional dos modelos deSistemas de Fila permitiram suas aplicações nas Ciências e Engenharias,revelando-se um rico manancial para simulações de sistemas do mundoreal.

1.6.2 VARIÁVEIS ALEATÓRIAS DOS SISTEMAS DE FILA

As variáveis de estado dos Sistemas de Fila podem assumir diferentesvalores numéricos para cada evento, conceitualmente são variáveisaleatórias em termos estatísticos. As variáveis aleatórias fundamentaisdos Sistemas de Fila estão representadas na Figura 9 e descritas na Tabela7.

Modelagem e Simulação Discreta 28

Figura 9 - Variáveis aleatórias utilizadas na análise de Sistemas de FilaSimples, adaptado de Jain (1991).

Tabela 7 - Variáveis aleatórias fundamentais dos Sistemas de Fila Simples(Jain, 1991)

Variável Descrição

τ tempo entre chegadas, isto é, o intervalo de tempo entre duas chegadas sucessivas

λ taxa média de chegada por unidade de tempo, λ= 1E[ τ]

s tempo de serviço, tempo requerido para processar tarefas ou tempo nos Servidores

μtaxa média de serviço por Servidor por unidade de tempo, μ= 1

E [s ], a taxa

total de serviço para c Servidores é cμ

n número de tarefas no Sistema, inclui as tarefas sendo atendidas e as que esperam na Fila

nq número de tarefas esperando na Fila ou comprimento da Filans número de tarefas nos Servidores ou número de tarefas sendo atendidas

r tempo de resposta ou tempo no Sistema, inclui tanto o tempo de espera para ser atendido quanto o tempo de atendimento

w tempo de espera na Fila, intervalo de tempo entre a chegada da tarefa e o início do seu atendimento

Condição de estabilidade:

• λ > cμ, c é o número de servidores, esta condição de estabilidade não se aplica à população fnita e aos sistemas de buffer fnito

• nos sistemas de população fnita, o comprimento da fla é sempre fnito, o sistema nunca pode se tornar instável

• sistemas de buffer fnito (K fnito) são sempre estáveis desde que as tarefas que chegam sejam descartados quando o número de tarefas no sistema exceda a capacidade do sistema

Número no Sistema x Número na Fila

• n=nq+ns , n, nq e ns são variáveis aleatórias

• E[n]=E[nq ]+E[ns] , o número médio de tarefas no sistema é igual à soma do número médio na fla e o número médio no servidor

• se a taxa de serviço de cada servidor é independente do número de tarefas na fla,tem-se que Cov(nq,ns) = 0 e V [n]=V [nq]+V [ns] . A variância do número de tarefas no sistema é igual à soma da variância do número de tarefas na fla e da variância do número de tarefas no servidor

Número no Sistema x Tempo no Sistema

• se tarefas não são perdidas devido à capacidade do sistema, o número médio de tarefas em um sistema está relacionado com seu tempo médio de resposta pela equação:

Modelagem e Simulação Discreta 29

1.21.3

• similarmente, o número médio de tarefas na Fila de um sistema está relacionado com seu tempo médio de espera pela equação:

1.41.5

• da mesma forma, o número médio de tarefas no Sistema de Fila está relacionado com seu tempo médio no sistema pela equação:

1.61.7

Estas equações são conhecidas como a Lei de Little. Em termos práticos,esta lei permite converter valores de tempo no Sistema em seusrespectivos valores de número no Sistema.

Em sistemas de buffer fnito estas leis podem ser usadas desde que sejausada a taxa de chegada efetiva, ou seja, a taxa de serviços querealmente entram no sistema e são atendidas pelo servidor.

Tempo no Sistema x Tempo na Fila

• r = w + s, o tempo que uma tarefa fca em um sistema de flas é igual à soma do tempo de espera na fla e do tempo de serviço, r, w e s são variáveis aleatórias

• E[r ]=E[w ]+E[s ] , o tempo médio no sistema é igual à soma do tempo médio de espera e o tempo médio de serviço

• se a taxa de serviço é independente do número de serviços na fla, tem-se que Cov(w,s) = 0 e V [r ]=V [w]+V [s] , a variância do tempo no sistema é igual à soma das variâncias do tempo de espera e do tempo de serviço

A Teoria de Filas, desenvolvido por A. K. Erlang em 1909, é utilizada paradescrever analiticamente Sistemas de Fila por meio de fórmulasmatemáticas. Seu uso permite determinar várias medidas da efetividadedestes sistemas, com a fnalidade de indicar seu desempenho. Na Tabela 8estão os resultados analíticos da Teoria das Filas aplicados em Sistemas deFila M/M/1.

Tabela 8 - Resultados analíticos de Sistemas de Fila M/M/1 segundo aTeoria das Filas (Jain, 1991)

1. Parâmetros

λ = taxa de chegada de tarefas porunidade de tempoμ = taxa de serviço por unidade detempo

2. Intensidade de tráfego ρ=λμ

3. Condição de estabilidade ρ<14. Probabilidade de zero tarefa no Sistema p0=(1−ρ)5. Probabilidade de n tarefas no Sistema pn=(1−ρ)ρn , n∈ℕ

Modelagem e Simulação Discreta 30

númeromédio de tarefasno Servidor=taxa dechegada× tempomédiode serviço

númeromédio de tarefasna Fila=taxa dechegada x tempomédiode esperana FilaE[nq ]=λ×E[w ]

E[ns]=λ×E[ s]

númeromédio noSistemade Fila=taxade chegada×tempomédio nosistemaE[n]=λ× E[r ]

6. Número médio de tarefas no Sistema E[n]= ρ1−ρ

7. Variância do número médio de tarefas no Sistema V [n]= ρ(1−ρ)2

8. Probabilidade de k tarefas na FilaP[nq=k ]=1−ρ2, k=0

P[nq=k ]=(1−ρ)ρk+1 , k>0

9. Número médio de tarefas na Fila E[nq ]=ρ2

1−ρ

10. Variância do número médio de tarefas na Fila V [nq]=ρ2(1+ρ−ρ2)(1−ρ)2

11. FDA do tempo de resposta F(r)=1−e−μ(1−ρ)r

12. Tempo médio de resposta E[r ]= 1μ(1−ρ)

13. Variância do tempo de resposta V [r ]= 1

μ2(1−ρ)2

14. Percentil q do tempo de resposta wq=E [r ] ln(100

100−q)

15. Percentil 90 do tempo de resposta w90=2,3 E[r ]16. FDA do tempo de espera F(w)=1−ρ e−μ (1−ρ)w

17. Tempo médio de espera E[w ]= ρμ(1−ρ)

=ρ E[r ]

18. Variância do tempo de espera V [w]=(2−ρ)ρμ2(1−ρ)2

19. Percentil q do tempo de espera max {0,E[w ]ρ ln(

100ρ100−q

)}

20. Percentil 90 do tempo de espera max {0,E[w ]ρ ln(10ρ)}

21. Probabilidade de n ou mais tarefas no Sistema ρn

22. Probabilidade de executar n tarefas no período ocupado

1n (2n−2

n−1 )ρn−1− 1

(1+ρ)2n−1

23. Número médio de tarefas executadas no período ocupado

11−ρ

24. Variância do número médio de tarefas executadas no período ocupado

ρ(1+ρ)(1−ρ)3

25. Duração média do período ocupado1

μ(1−ρ)

26. Variância da média do período ocupado1

μ2(1−ρ)3− 1

μ2(1−ρ)2

1.6.3 PROCESSOS DE POISSON

Dentro da hierarquia dos processos estocásticos, os Processos de Poissonsão casos particulares de Processos Nascimento Morte que, por sua vez,

Modelagem e Simulação Discreta 31

são casos particulares de Processos de Markov. A relação entre estesprocessos está representada grafcamente na Figura 10.

Figura 10 - Relação entre os processos estocásticos.

Os Processos de Markov nos quais as transições são discretas e restritasaos estados vizinhos são Processos Nascimento Morte. Eles são utilizadospara modelar sistemas nos quais as tarefas chegam uma de cada vez enão em lotes. Assim é possível representar os estados por númerosinteiros de tal forma que um processo no estado n pode mudar apenaspara o estado n+1 ou n-1. Por exemplo, o número de tarefas em uma Filacom um único Servidor e chegadas individuais (e não em lotes) pode serrepresentada como um Processo Nascimento Morte. Uma chegada na Fila(nascimento) faz com que o estado mude parar n+1 e uma partida da Fila(morte), faz com que o estado mude para n-1.

Um Processo Markov de estado discreto é chamado de Cadeia de Markov.Estes nomes são em homenagem a A. A. Markov, que os defniu e osanalisou em 1907.

Nos Processo de Markov os estados futuros de um processo sãoindependentes do passado e dependem apenas do presente, isto é, para se t > 0 então P(X > s+t | X > s) = P(X > t). Esta propriedade dosProcessos de Markov torna-os mais fácil de analisar já que não énecessário considerar sua trajetória passada, conhecer seu estado atual ésufciente.

Os Sistemas de Fila M/M/m podem ser modeladas através de Processos deMarkov. O atendimento dos Servidores nestes sistemas é um Processo deMarkov e a chegada de tarefas na Fila é uma Cadeia de Markov.

Se os tempos entre chegadas são independentes e igualmente distribuídos(iid) e exponencialmente distribuídos, o número de chegadas n em umdeterminado intervalo (t,t+Δx) tem uma distribuição de Poisson, oprocesso de chegada é referido como um Processo de Poisson e tem asseguintes propriedades:

Modelagem e Simulação Discreta 32

• fusão de k Processos de Poisson com taxa λi resulta em um Processo de Poisson

com taxa média λ dada por λ=1k∑ λi

• um Processo de Poisson com taxa média λ pode ser divido em n processos com

• λ=∑i=1

n

piλ i , em que ∑i=1

n

pi=1

• a saída de um sistema de flas M/M/1 em que λ < μ é um Processo de Poisson• a saída de um sistema de flas M/M/m com taxas de serviços μ1, μ2, ..., μn, em que

λ<∑i=1

n

μi , são Processos de Poisson

1.6.4 PROBABILIDADE DE ESTADO PARA PROCESSOS NASCIMENTO MORTE

A Figura 11 apresenta o diagrama de transição de estado de um ProcessoNascimento Morte. Este é o sistema mais simples de fla no qual as tarefaschegam de acordo com um Processo de Poisson em um sistema deServidor único. O modelo também assume capacidade infnita do sistema,as tarefas são provenientes de uma população infnita e a disciplina da flaé FIFO.

Figura 11 - Diagrama de transição de estado de Processo NascimentoMorte.

Quando o sistema estiver no estado n, os novos processos chegam a taxaλn-1 e partem com taxa de serviço μn. Assumindo que os intervalos entrechegadas e os tempos de serviço são exponencialmente distribuídos, aprobabilidade de estado estacionário de um processo nascimento mortede estar no estado n é dada pelo Teorema 1.1.

Teorema 1.1 A probabilidade do estado estacionário pn de um processonascimento morte estar no estado n é dada pela Equação 1.8

pn= p0

λ0λ1λ2⋯λn−2λn−1μ1μ1μ2μ3⋯μn−1μn

1.8

em que p0 é a probabilidade da Fila estar vazia, n = 0.

Modelagem e Simulação Discreta 33

Esta expressão para pn também se aplica aos Sistemas de Fila M/M/c/K/m,para todos os valores de c, K e m, e pode também ser utilizada paraanalisá-los.

1.6.5 SISTEMAS DE FILAS M/M/1

O Sistema de Fila M/M/1 é o mais simples, constituído por uma Fila e umServidor, em que as tarefas chegam de acordo com um Processo dePoisson e o tempo para atendê-las é distribuído exponencialmente. Umavez que neste sistema pode-se aumentar ou diminuir, no máximo, umatarefa de cada vez, é um Processo Nascimento Morte com taxashomogêneas de nascimento λ e de morte μ. O diagrama de estado dastaxas de transição de Sistemas de Fila M/M/1 é mostrado na Figura 12.

Figura 12 - Diagrama de transição de estado de Sistemas de Fila M/M/1destacando os valores constantes das taxas de transição λ e μ.

O estado dessa fla é dado pelo seu número de tarefas n, teoricamente n∈ [0,∞). Para λi= λ e μi+1= μ, i ∈ [0,n), o Teorema 1.1 nos dá a seguinteexpressão para a probabilidade de n tarefas do sistema:

1.9

A quantidade λ/μ é chamada de intensidade de tráfego e é indicada pelosímbolo ρ. Assim,

pn=p0ρn 1.10

ρ=λμ 1.11

Uma vez que a soma de todas probabilidades deve ser igual a 1, tem-se aseguinte expressão para a probabilidade de zero tarefas na Fila dosistema:

1.12

Modelagem e Simulação Discreta 34

pn=p0λn

μn

p0=1−ρ

Demonstração:

∑i=0

pi=1⇒∑i=0

p0ρi=1⇒ p0∑

i=0

ρi=1⇒ p0=1

∑i=0

ρi= 1

1+∑i=1

ρi= 1

1+ ρ1−ρ

=1−ρ

Nota: ∑n=1

xn= x1−x

,|x|<1 , soma da progressão geométrica infnita (Polyanin &

Manzhirov, 2007, pag. 357).

Substituindo p0 em pn, obtém-se:

pn=(1−ρ)ρn 1.13

Pode-se derivar as propriedades das flas M/M/1 que foram apresentadasna Tabela 8. Por exemplo, a Utilização do Servidor é dada pelaprobabilidade de se ter uma ou mais tarefas no sistema:

U=1−p0=ρ 1.14

O número médio de tarefas no sistema é dado por:

E[n]=∑n=1

n pn=∑n=1

n(1−ρ)ρn=ρ

1−ρ 1.15

Demonstração (Mor, 2013, p. 145):

Jain (1991) apresenta uma demostração baseada no Processo Nascimento Morte que émuito mais interessante.

A variância do número de tarefas no sistema é

V [n]=E[n2]−(E [n ])2=∑n=1

n2(1−ρ)ρn−(E [n])2=ρ

(1−ρ)21.16

A probabilidade de n ou mais tarefas no sistema é

P(k≥n)=∑k=n

(1−ρ)ρk=ρn 1.17

O tempo médio de resposta pode ser calculado usando a Lei de Little, queestabelece que

númeromédio de tarefasno sistema=taxadechegada×tempomédio deresposta 1.18

isto é

Modelagem e Simulação Discreta 35

∑n=1

n (1−ρ)ρn=(1−ρ)∑n=1

nρn=(1−ρ)∑n=1

ρdρn

d ρ=(1−ρ)ρ

d∑n=1

ρn

dρ=(1−ρ)ρ

d ( ρ1−ρ

)

dρ=

ρ1−ρ

E[n]=λ E [r ]⇔E [r ]=E[n]λ ⇔E[r ]=

ρ(1−ρ)λ

⇔E[r ]= 1(1−ρ)μ

1.19

A função de distribuição acumulada (FDA) do tempo de resposta é

F(r)=1−e−μ(1−ρ)r 1.20

Note-se que o tempo de resposta é distribuído exponencialmente. A partirda qual pode-se calcular seus percentis. Por exemplo, o q-percentil dotempo de resposta pode ser calculado por

F(rq)=q

100⇔1−e−μ(1−ρ)rq= q

100⇔rq=

1μ(1−ρ)

ln( 100100−q

) 1.21

Da mesma forma, a FDA do tempo de espera é dado por

F(w)=1−ρ e−μ (1−ρ)w 1.22

Trata-se de uma distribuição exponencial truncada. Seu q-percentil é dadopor

wq=1

μ(1−ρ)ln(

100ρ100−q

) 1.23

Esta fórmula se aplica somente se q é maior do que 100(1-ρ) sendo osdemais percentis não nulos. Isto pode ser indicado pela equação:

wq=max {0,E [w ]ρ ln (10ρ)} 1.24

O número médio de tarefas na Fila é dado por

E[nq ]=∑n=1

(n−1) pn=∑n=1

(n−1)(1−ρ)ρn= ρ2

1−ρ1.25

Quando não há serviços no sistema, o servidor é considerado ocioso; casocontrário, o servidor está ocupado. O intervalo de tempo entre doissucessivos intervalos ociosos é chamado de período ocupado.

O seguinte exemplo ilustra a aplicação destes resultados na modelagemde um gateway de rede, extraído de Jain (1991).

Exemplo 1.3: Em um gateway de uma rede, medições mostraram que os pacoteschegavam a uma taxa média de 125 pacotes por segundo (pps) e o gateway leva cercade 2 milissegundos para transmiti-los. Usando um modelo M/M/1, analise o gateway.Qual é a probabilidade de estouro de buffer se o tamanho do buffer do gateway for iguala 13? Qual a tamanho do buffer para que a perda de pacotes seja menor do que umpacote por milhão?

Modelagem e Simulação Discreta 36

Taxa de chegada λ = 125 pps

Taxa de serviço µ = 1/0,002 = 500 pps

Intensidade do tráfego no gateway ρ = λ/μ = 0,25

Probabilidade de n pacotes no gateway = (1-ρ)ρn = 0,75(0,25)n

Número médio de pacotes no gateway = ρ/(1-ρ)= 0,25/0,75 = 0,33

Tempo médio gasto no gateway = (1/µ)/(1-ρ)= (1/500)/(1-0,25)=2,66 ms

Probabilidade de estouro de buffer = P(n > 13 pacotes no gateway) = ρn = 0,2513=1,49x10-8 ≈ 15 pacotes por bilhões de pacotes

Para limitar a probabilidade de perda de pacotes para menos de 1x10 -6, ρn < 1x10-6 ou n> ln(1x10-6)/ln(0,25) = 9,96. O tamanho do buffer deve ser igual a 10.

Os dois últimos resultados sobre estouro de buffer são aproximados. Estritamentefalando, o gateway deve ser modelado como uma fla M/M/1/B. No entanto, uma vez quea utilização é baixa e o tamanho do buffer está acima do comprimento médio da fla,estes resultados são boas aproximações.

1.7 OUTRA VISÃO PARA ESTUDAR MODELAGEM E SIMULAÇÃO

Freitas Filho (2008), no capítulo 1 – Modelagem e Simulação de Sistemas,discute uma outra visão do processo de Formulação de um EstudoEnvolvendo Modelagem e Simulação, tomada das principais fontes sobre oassunto. Ele cita os textos clássicos de Banks, Law e Kelton, Pegden eKelton e Sadow Ski e destaca que as etapas apresentadas na Figura 13estão presentes em quase todos os livros e trabalhos gerais sobre oprocesso para solucionar problemas usando modelagem e simulação. Asetapas desta fgura são descritas na Tabela 9.

Figura 13 - Diagrama com as etapas em um estudo envolvendomodelagem e simulação segundo Freitas Filho (2008).

Modelagem e Simulação Discreta 37

Tabela 9 - Descrição das etapas em um estudo envolvendo modelagem esimulação segundo Freitas Filho (2008)

Formulação e Análise do Problema

um estudo de simulação inicia com a formulação do problema. Ospropósitos e objetivos do estudo devem ser claramente defnidos.Devem ser respondidas questões do tipo:

1. Por que o problema está sendo estudado?2. Quais serão as respostas que o estudo espera alcançar?3. Quais são os critérios para avaliação da performance do

sistema?4. Quais são as hipóteses e pressupostos?5. Que restrições e limites são esperados das soluções obtidas?

Planejamento do Projeto

pretende-se ter a certeza de que se possuem recursos sufcientes noque diz respeito a pessoal, suporte, gerência, hardware e softwarepara realização do trabalho proposto. Além disso, o planejamentodeve incluir um a descrição dos vários cenários que serãoinvestigados e um cronograma temporal das atividades que serãodesenvolvidas, indicando os custos e necessidades relativas aosrecursos citados.

Formulação do Modelo Conceitual

traçar um esboço do sistema, de forma gráfca (fuxograma, porexemplo) ou algorítmica (pseudocódigo), defnindo componentes,descrevendo as variáveis e interações lógicas que constituem osistema. É recomendado que o modelo inicie de forma simplifcada evá crescendo até alcançar algo mais complexo, contemplando todasas suas peculiaridades e características. O usuário deve participarintensamente desta etapa. Algumas das questões que devem serrespondidas:

1. Qual a estratégia de modelagem? Discreta? Contínua? Umacombinação?

2. Que quantidade de detalhes deve ser incorporada ao modelo?3. Como o modelo reportará os resultados? Quais são os

relatórios pós-simulação?4. Que nível de personalização de cenários e recursos deve ser

implementado?5. Que nível de agregação dos processos (ou de alguns) deve

ser implementado?6. Como os dados serão colocados no modelo? Manualmente?

Leitura de arquivos?

Coleta de MacroInformaçõesColeta de Dados

macro-informações são fatos, informações e estatísticasfundamentais, derivados de observações, experiências pessoais oude arquivos históricos. Em geral, macro-informações servem paraconduzir os futuros esforços de coleta de dados voltados aalimentação de parâmetros do sistema modelado. Algumas questõesque se apresentam são:

1. Quais são as relações e regras que conduzem a dinâmica dosistema? O uso de diagramas de fuxos é comum para facilitar

Modelagem e Simulação Discreta 38

a compreensão destas inter-relações.2. Quais são as fontes dos dados necessários a alimentação do

modelo?3. Os dados já se encontram na forma desejada? O mais comum

é os dados disponíveis encontrarem-se de maneira agregada(na forma de médias, por exemplo), o que pode não serinteressante para a simulação.

4. E quanto aos dados relativos a custos e fnanças? Incorporarelementos de custos em um projeto torna sua utilizaçãomuito mais efetiva. Custos de espera, custos de utilização,custos de transporte etc., quando empregados, tornam osmodelos mais envolventes e com maior credibilidade e valor.

Tradução do Modelo

codifcar o modelo numa linguagem de simulação apropriada.Embora hoje os esforços de condução desta etapa tenham sidominimizados em função dos avanços em hardware e, principalmente,nos softwares de simulação, algum as questões básicas devem serpropriamente formuladas e respondidas:

1. Quem fará a tradução do modelo conceitual para a linguagemde simulação? É fundamental a participação do usuário seeste não for o responsável direto pelo código.

2. Como será realizada a comunicação entre os responsáveispela programação e a gerência do projeto?

3. E a documentação? Os nomes de variáveis e atributos estãoclaramente documentados? Outros, que não o programadorresponsável, podem entender o programa?

Verificação e Validação do Modelo

confrmar que o modelo opera de acordo com a intenção do analista(sem erros de sintaxe e lógica) e que os resultados por ele fornecidospossuam crédito e sejam representativos dos resultados do modeloreal. Nesta etapa as principais questões são:

1. O modelo gera informações que satisfazem os objetivos doestudo?

2. As informações geradas são confáveis?3. A aplicação de testes de consistência e outros confrma que o

modelo está isento de erros de programação?

Projeto Experimental

projetar um conjunto de experimentos que produza a informaçãodesejada, determinando como cada um dos testes devem serrealizado. O principal objetivo é obter mais informações com menosexperimentações. As principais questões são:

1. Quais os principais fatores associados aos experimentos?2. Em que níveis devem ser os fatores variados de forma que se

possa melhor avaliar os critérios de desempenho?3. Qual o projeto experimental mais adequado ao quadro de

respostas desejadas?

Experimentação executar as simulações para a geração dos dados desejados e para arealização das análises de sensibilidade.

Interpretação e Análise Estatística dos Resultados

traçar inferências sobre os resultados alcançados pela simulação.Estimativas para as medidas de desempenho nos cenáriosplanejados são efetuadas. As análises poderão resultar nanecessidade de um maior número de execuções (replicações) domodelo para que se possa alcançar a precisão estatística sobre osresultados desejados. Algumas questões que devem ser

Modelagem e Simulação Discreta 39

apropriadamente respondidas:

1. O sistema modelado é do tipo terminal ou não-terminal?2. Quantas replicações são necessárias?3. Qual deve ser o período simulado para que se possa alcançar

o estado de regime?4. E o período de warm-up1?

Comparação de Sistemas e Identificação das Melhores Doluções

muitas vezes o emprego da técnica de simulação visa a identifcaçãode diferenças existentes entre diversas alternativas de sistemas. Emalgumas situações, o objetivo é comparar um sistema existente ouconsiderado como padrão, com propostas alternativas. Em outras, aideia é a comparação de todas as propostas entre si com o propósitode identifcar a melhor ou mais adequada delas. As questõespróprias deste tipo de problema são?

1. Como realizar este tipo de análise?2. Como proceder para comparar alternativas com um padrão?3. Como proceder para comparar todas as alternativas entre si?4. Como identifcar a melhor alternativa de um conjunto?5. Como garantir estatisticamente os resultados?

Documentação

a documentação do modelo é sempre necessária. Primeiro paraservir como um guia para que alguém, familiarizado ou não com omodelo e os experimentos realizados, possa fazer uso do mesmo edos resultados já produzidos. Segundo, porque se forem necessáriasfuturas modifcações no modelo, toda a documentação existentevem a facilitar e muito os novos trabalhos. A implementação bem-sucedida de um modelo depende, fundamentalmente, de que oanalista, com a maior participação possível do usuário, tenhaseguido os passos que, sumariamente, aqui foram relatados. Osresultados das análises devem ser reportados de forma clara econsistente, também como parte integrante da documentação dosistema. Como linhas gerais pode-se dizer que os seguinteselementos devem constar de uma documentação fnal de um projetode simulação:

1. Descrição dos objetivos e hipóteses levantadas;2. Conjunto de parâmetros de entrada utilizados (incluindo a

descrição das técnicas adotadas para adequação de curvasde variáveis aleatórias);

3. Descrição das técnicas e métodos empregados na verifcaçãoe na validação do modelo;

4. Descrição do projeto de experimentos e do modelo fatorial deexperimentação adotado;

5. Resultados obtidos e descrição dos métodos de análiseadotados;

6. Conclusões e recomendações. Nesta última etapa éfundamental tentar descrever os ganhos obtidos na formamonetária.

Apresentação dos Resultados e Implementação

a apresentação dos resultados do estudo de simulação deve serrealizada por toda a equipe participante. Os resultados do projetodevem refetir os esforços coletivos e individuais realizados,considerando os seus diversos aspectos, isto é, levantamento doproblema, coleta de dados, construção do modelo etc. Durante todoo desenvolvimento e implementação do projeto, o processo decomunicação, entre a equipe e os usuários fnais, deve ser total e,

1 - transição

Modelagem e Simulação Discreta 40

portanto, durante a apresentação fnal não devem ocorrer surpresasde última hora. Os itens abaixo devem estar presentes como formade encaminhamento das questões técnicas, operacionais efnanceiras no que diz respeito aos objetivos da organização:

1. Restabelecimento e confrmação dos objetivos do projeto2. Quais problemas foram resolvidos3. Rápida revisão da metodologia4. Benefícios alcançados com a(s) solução (ões) proposta(s)5. Considerações sobre o alcance e precisão dos resultados6. Alternativas rejeitadas e seus motivos7. Estabelecimento de conexões entre o processo e os

resultados alcançados com o modelo simulado e outrosprocessos de reengenharia ou de reformulação do negócio

8. Assegurar que os responsáveis pelo estabelecimento demudanças organizacionais ou processuais tenhamcompreendido a abordagem utilizada e seus benefícios

9. Tentar demonstrar que a simulação é uma espécie de ponteentre a ideia e sua implementação

1.8 RECURSOS DIDÁTICOS PEDAGÓGICOS

O modelo analítico do Sistema de Filas M/M/1, apresentado na Tabela 8, foiimplementado em Javascript, Algoritmo 1.1, com dados de entrada λ (taxamédia de chegada), μ (taxa média de serviço), n (número de tarefas) e q(percentil). O valor de n é requerido para os cálculos de probabilidades,como no item 5, e valor de q para os cálculos de percentis, como no item14 da Tabela 8.

Para fns de codifcação, a letras λ, μ e ρ foram trocadas por l, m e r,respectivamente.

Na Figura 14 estão os resultados do Algoritmo 1.1 para λ = 0.100 s, μ =0.400 s, n = 10 e q = 10.

Algoritmo 1.1: Software em Javascript do modelo analítico de Sistemas deFila M/M/1

1. <!doctype html>2. <html>3. <head>4. <meta charset="utf-8">5. <title>Modelo Analítico de Sistemas de Fila M/M/1</title>

Modelagem e Simulação Discreta 41

6. <style>7. body,input,table { font-family: Arial; font-size: 22px }8. </style>9. <script>10. function clMM1Analitico(){11. this.f = function(n){12. var p = 1;13. for( var i = n; i > 1; i-- )14. p *= i;15. return p;16. }17. this.C = function(n,p){18. return this.f(n)/this.f(n-p)/this.f(p);19. }20. this.Calculate = function(l,m,n,q){21. var r = l/m, P = [27];22. for( var i = 0; i < 27; i++ )23. P[i] = -1.0; 24. P[2] = r; 25. P[3] = "r >= 1"; 26. if( r < 1.0 ){ 27. P[ 3] = "r < 1"; 28. P[ 4] = 1-r; 29. P[ 5] = (1-r)*Math.pow(r,n); 30. P[ 6] = r/(1-r); 31. P[ 7] = r/Math.pow(1-r,2); 32. P[ 8] = n > 0 ? (1-r)*Math.pow(r,n+1) : 1-r*r; 33. P[ 9] = r*r/(1-r); 34. P[10] = r*r*(1+r-r*r)/Math.pow(1-r,2); 35. P[11] = 1-Math.exp(-m*r*(1-r)); 36. P[12] = (1/m)/(1-r); 37. P[13] = (1/Math.pow(m,2))/Math.pow(1-r,2); 38. P[14] = (1/m)/(1-r)*Math.log(100/(100-q)); 39. P[15] = 2.3*(1/m)/(1-r); 40. P[16] = 1-r*Math.exp(-m*r*(1-r)); 41. P[17] = r*(1/m)/(1-r); 42. P[18] = (2-r)*r/(m*m*(1-r)*(1-r)); 43. P[19] = (P[17]/r)*Math.log(100*r/(100-q));44. P[20] = (P[17]/r)*Math.log(10*r); 45. P[21] = Math.pow(r,n); 46. P[22] = (1/n)*this.C(2*n-2,n-1)*Math.pow(r,n-1)/Math.pow(1+r,2*n-

1);47. P[23] = 1/(1-r); 48. P[24] = r*(1+r)/Math.pow(1-r,3); 49. P[25] = 1/(m*(1-r)); 50. P[26] = 1/(m*m*Math.pow(1-r,3))-1/(m*m*(1-r)*(1-r)); 51. if( P[19] < 0 ) P[19] = 0;52. if( P[20] < 0 ) P[20] = 0;53. } 54. return P; 55. } 56. }57. function MM1AnaliticoTeste(){58. var MM1Analitico = new clMM1Analitico();59. var l, m, n, q, P = [];60. l = parseFloat(document.getElementById("l").value);61. m = parseFloat(document.getElementById("m").value);62. n = parseFloat(document.getElementById("n").value);63. q = parseFloat(document.getElementById("q").value);64. P = MM1Analitico.Calculate(l,m,n,q);65. for( var i = 2; i < 27; i++ ){66. var vlr = document.getElementById( i.toString() );67. if( P[2] < 1.0 ){68. if( i != 3 ) vlr.value = P[i].toFixed(6);69. else vlr.value = P[i];70. }71. else{72. if( i == 3 ) vlr.value = P[i];

Modelagem e Simulação Discreta 42

73. else vlr.value = "-";74. }75. }76. }77. </script>78. </head>79. <body> Modelo Analítico de Sistemas de Fila M/M/180. <table border="1" cellpadding="0" cellspacing="0">81. <tbody>82. <tr>83. <td>1. Parâmetros84. <td><input size="10" id="l" value="0.100" type="text"><br>85. <input size="10" id="m" value="0.400" type="text"><br>86. <input size="10" id="n" value="10" type="text"><br>87. <input size="10" id="q" value="10" type="text">88. <button type="button" onclick="MM1AnaliticoTeste()">>></button>89. <tr><td>2. Intensidade de tráfego90. <td><input id="2" value="." type="text">91. <tr><td>3. Condição de estabilidade92. <td><input id="3" value="." type="text">93. <tr><td>4. Probabilidade de zero tarefa no sistema94. <td><input id="4" value="." type="text">95. <tr><td>5. Probabilidade de n tarefas no sistema96. <td><input id="5" value="." type="text">97. <tr><td>6. Número médio de tarefas no sistema98. <td><input id="6" value="." type="text">99. <tr><td>7. Variância do número médio de tarefas no sistema100. <td><input id="7" value="." type="text">101. <tr><td>8. Probabilidade de n tarefas na fila102. <td><input id="8" value="." type="text">103. <tr><td>9. Número médio de tarefas na fila104. <td><input id="9" value="." type="text">105. <tr><td>10. Variância do número médio de tarefas na fila106. <td><input id="10" value="." type="text">107. <tr><td>11. Função de distribuição acumulada do tempo de resposta108. <td><input id="11" value="." type="text">109. <tr><td>12. Tempo médio de resposta110. <td><input id="12" value="." type="text">111. <tr><td>13. Variância do tempo de resposta112. <td><input id="13" value="." type="text">113. <tr><td>14. q-Percentil do tempo de resposta114. <td><input id="14" value="." type="text">115. <tr><td>15. 90-Percentil do tempo de resposta116. <td><input id="15" value="." type="text">117. <tr><td>16. Função de distribuição acumulada do tempo de espera118. <td><input id="16" value="." type="text">119. <tr><td>17. Tempo médio de espera120. <td><input id="17" value="." type="text">121. <tr><td>18. Variância do tempo de espera122. <td><input id="18" value="." type="text">123. <tr><td>19. q-Percentil do tempo de espera124. <td><input id="19" value="." type="text">125. <tr><td>20. 90-Percentil do tempo de espera126. <td><input id="20" value="." type="text">127. <tr><td>21. Probabilidade de encontrar n ou mais tarefas no sistema128. <td><input id="21" value="." type="text">129. <tr><td>22. Probabilidade de executar n tarefas no período ocupado130. <td><input id="22" value="." type="text">131. <tr><td>23. Número médio de tarefas executadas no período ocupado132. <td><input id="23" value="." type="text">133. <tr><td>24. Variância do número de tarefas executadas no período ocupado134. <td><input id="24" value="." type="text">135. <tr><td>25. Duração média do período ocupado136. <td><input id="25" value="." type="text">137. <tr><td>26. Variância do período ocupado138. <td><input id="26" value="." type="text">139. </tbody>140. </table></body></html>

Modelagem e Simulação Discreta 43

Figura 14 - Resultados do modelo analítico de Sistema de Filas M/M/1utilizando o software MM1Analitico.html.

1.9 QUESTÕES

1) Discuta as maneiras de se estudar um sistema.2) Compare a Tabela 1 com a Tabela 9 e faça uma síntese das duas.3) Caracterize e diferencie sistemas de fla, fla e atendimento.4) Qual sistema de fla proporcionaria melhor desempenho: um sistema

M/M/3/300/100 ou um sistema M/M/3/100/100?5) Qual a razão para se considerar a tamanho da população infnita?

1.10 EXERCÍCIOS

Modelagem e Simulação Discreta 44

1) Durante um intervalo de 1 hora, observou-se que um servidor de um sistemadistribuído recebeu 10.800 solicitações. O tempo de resposta médio destespedidos foi igual a um terço de segundo. Qual é o número médio de consultas noservidor? Os processos deste sistema são Poisson?

1) Eventos que chegam em um Sistema de Fila M/M/1 com intervalo entre chegadasiat = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 } e tempos de serviço st = { 11, 10, 9, 12, 9,11, 14, 8, 9, 10 }, calcule os resultados analíticos deste sistema conforme a Tabela1.7.

2) Em um Sistema de Fila M/M/1 tem-se iat = {3, 5, 4, 3, 8, 5, 9, 8, 7, 6 } e st ={ 12, 12, 10, 9, 2, 2, 1, 3, 2, 5 }. Calcule os resultados analíticos deste sistemaconforme a Tabela 1.7.

3) Repita o Exemplo 1.1 para:

a) λ = 250 pps e µ = 500 ppsb) λ = 350 pps e µ = 500 ppsc) λ = 450 pps e µ = 500 pps

4) Compare os resultados analíticos do exercício 4.a, 4.b e 4.c.

Modelagem e Simulação Discreta 45

2 SIMULAÇÃO DE SISTEMAS DE FILA

O modelos de Sistemas de Fila A/B/c/K/m/Z podem ser simulados porcomputador. Para isso é necessário desenvolver os modelos conceituais econceituais destes sistemas. Inicialmente, por uma questão desimplicidade, será desenvolvida uma metodologia para realizar simulaçãode Sistemas de Fila M/M/1.

A Figura 15 ilustra a representação gráfca de Sistemas de Fila M/M/1 eseus elementos constituintes: o Sistema de Fila (QS - Queue System), umaFila (Q - Queue) e um Servidor (S - Server). As tarefas chegam na Fila, umapor vez, o Servidor as atendem também uma por vez. Uma tarefaaguardará na Fila se o Servidor estiver ocupado, caso contrário, seráenviada para atendimento. Uma vez atendida, a tarefa deixa o Sistema deFila.

Modelagem e Simulação Discreta 46

Figura 15 - Modelo de Sistemas de Filas M/M/1 (QS) e seus elementosconstituintes: a Fila (Q), o Servidor (S) e as tarefas aguardandoprocessamento (retângulos).

A partir do Sistema de Fila M/M/1 pode-se derivar modelos dos demaisSistemas de Fila M/M/c/K/m. Embora simples, os Sistemas de Fila M/M/1fornecem informações úteis sobre o desempenho de sistemas reais.

Primeiramente será apresentado e discutido o modelo conceitual dosSistemas de Fila M/M/1 e, em seguida, o seu modelo computacional seráapresentado e implementado em C++ e Javascript. Por fm, será simuladoe apresentado seus resultados na forma de tabela. A dinâmica temporaldos resultados também será apresentada em HTML5, permitindo oacompanhamento gráfco de suas variáveis de entrada, de estado, desaída e suas estatísticas.

2.1 MODELO CONCEITUAL DE SISTEMAS DE FILA

Conforme representadas na Figura 9 e descritas na Tabela 7 (capítuloanterior), as variáveis aleatórias fundamentais dos Sistemas de Fila deinteresse no Modelo Conceitual dos Sistemas de Fila são seus eventosdiscretos: chegada na Fila, inicio do serviço e fm do serviço; e asestimativas dos valores a eles associados: tempo entre chegadas e otempo de serviço.

As tarefas chegam nos Sistemas de Fila uma por vez e são processadasem um Servidor igualmente uma por vez. As tarefas não chegam em lotesnem são processadas em lotes. Desta forma, os Sistemas de Fila possuemduas variáveis básicas:

1. taxa de chegada (λ) ou intervalo entre chegadas (iat - interarrival time), a relaçãoentre elas é λ = 1/E[iat]

2. taxa de serviço (μ) ou tempo de serviço (st - service time), a relação entre elas éμ = 1/E[st]

O símbolo E(x) é a esperança matemática ou valor esperado da variávelaleatória x. Dada uma fdp f(x) ou p(x i), E(x) pode ser calculada pelasEquações 2.1 e 2.2, respectivamente.

Modelagem e Simulação Discreta 47

E(X)=∫−∞

+∞

x f (x )dx , X∈ℝ 2.1

E(X)=∑i=1

n

xi p(x i) , X∈ℕ 2.2

Se o Servidor for mais rápido do que a taxa de chegada de tarefas noSistema de Fila, não há formação de Fila, ela sempre estará vazia poistoda tarefa que chega, imediatamente é processada e, em seguida, sai dosistema. Em termos matemáticos, se st ≥ iat não forma Fila no sistema;por outro lado, se st < iat, forma-se Fila no sistema.

A Figura 16 ilustra o Modelo Conceitual de Sistemas de Fila M/M/1adaptado de Jain (1991) e nela pode-se destacar cinco níveis:

1. nível superior, tem-se os processos que podem ocorrem nestes sistemas, achegada (arrival), a espera (waiting), o serviço (service) e a saída (departure)

2. no nível abaixo, destacam-se as taxas de chegada (λ) e de serviço (μ)3. nível intermediário, estão os números do sistema, nq, ns e n, número de tarefas na

Fila (Q), no Servidor (S) e no Sistema de Fila (QS), respectivamente. Os valores quens pode assumir são 0 ou 1, Servidor livre ou ocupado, respectivamente, nq

podendo assumir qualquer valor natural, nq ∈ [0,∞), e n = nq+ ns

4. no próximo nível, estão os eventos discretos do sistema, a saber, chegada (at -arrival time), início do serviço (bs - begin service) e fm do serviço (es - endservice). As variáveis at, bs e es, são as variáveis de estado do sistema

5. no último nível estão os tempos do sistema, w, s e r, tempo de espera na Fila,tempo de serviço e tempo no Sistema de Fila, respectivamente, sendo r = w+ s. Ointervalo entre chegadas também está nele indicado.

Figura 16 - Modelo Conceitual de Sistemas de Fila M/M/1 com seusprocessos, variáveis de entrada e saída, números, eventos e tempos emcinco níveis, adaptado de Jain (1991).

Modelagem e Simulação Discreta 48

O Exemplo 2.1 ilustra uma aplicação do Modelo Conceitual de Sistemas deFila M/M/1 com suas entradas (iat e st), suas variáveis de estado (at, bs ees) e a dinâmica do sistema obtida a partir dos seus eventos (chegada,início do serviço e fm do serviço). A partir dos valores destas variáveis épossível calcular os indicadores do Sistema de Fila e avaliar seucomportamento.

Exemplo 2.1: Sejam N = 10 eventos que chegam em um Sistema de Fila M/M/1 comintervalo entre chegadas iat = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 } e tempos de serviço st= { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 }, iat e st em unidades de tempo (tu - time unit). Asimulação do sistema é feita conforme mostrado na Tabela 10.

Tabela 10 - Simulação de um Sistema de Fila M/M/1

e iat st at bs es1 8 11 8 8 192 5 10 13 19 293 12 9 25 29 384 15 12 40 40 525 8 9 48 52 616 11 11 59 61 727 9 14 68 72 868 10 8 78 86 949 7 9 85 94 103

10 6 10 91 103 113Os eventos (e), seus intervalos entre chegadas (iat) e tempos de serviço (st) sãoorganizados segundo a ordem de chegada a partir do tempo zero, e = 1, 2, ..., N. ATabela 10 é preenchida calculando os valores das quatro variáveis a seguir:

• at - tempo da chegada da tarefa na Fila (arrival time)• bs - tempo da chegada da tarefa no Servidor• es - tempo da saída da tarefa do Servidor

A partir destas variáveis é possível calcular os indicadores do Sistema de Fila, conformeserá apresentado mais adiante.

2.1.1 VALORES INICIAIS DA SIMULAÇÃO

O estado inicial do Sistema de Fila é de Fila vazia e Servidor ocioso. Parainiciar a contagem do tempo o cronômetro é zerado (tu – time unit, tu = 0). No Exemplo 2.1, após 8 tu chega a primeira tarefa (e = 1, iat = 8, st =11), ela chega na fla em at = 8 tu. Como o servidor está ocioso, elerecebe a tarefa em bs = 8 tu e demora 11 tu para processá-la, assim es= 8+11 = 19.

Modelagem e Simulação Discreta 49

Generalizando, os seguintes comandos resumem os valores iniciais dasvariáveis do Sistemas de Fila para e =1:

1. at[1] = bs[1] = iat[1]2. es[1] = at[1] + st[1]

O estado inicial do Sistema de Fila para o início da simulação (Fila vazia,Servidor ocioso, cronômetro zerado) é de ordem prática e buscacontornar as condições iniciais reais do sistema.

Como consequência, a simulação apresenta grande variabilidade nosresultados iniciais, denominado período transiente, no qual observa-sefortes futuações nos valores simulados com tendência de crescimento.Em seguida, o comportamento da simulação apresentam futuaçõesmenores e em torno de valores médios, é o denominado períodoestacionário.

2.1.2 CÁLCULO DE AT

Quando a segunda tarefa chega na Fila do sistema no Exemplo 2.1 (e = 2,iat = 5 tu, st = 10 tu), o tempo transcorrido é a soma dos iat doseventos anteriores, neste caso são 8+5 = 13 tu. Esta soma é armazenadaem at, logo at[2] = iat[2] + iat[1] = 8 + 5 = 11 tu.

Generalizando, at[e] = iat[e] + at[e-1], e ∈ [2,N].

2.1.3 CÁLCULO DE BS

Quando a segunda tarefa chega no Sistema de Fila no Exemplo 2.1, oServidor pode estar ocioso ou ocupado. Se ele estiver ocioso, ele recebe atarefa e o valor de bs é igual ao de at, ambos do segundo evento, Figura17.a. Se ele estiver ocupado, esta situação perdurará até o tempo es doevento anterior e, assim, bs é igual ao valor de es do evento anterior,Figura 17.b.

Modelagem e Simulação Discreta 50

Desta forma, para o cálculo de bs[e], e ∈ [2,N], é necessário considerarduas alternativas, a saber:

1. at[e] > es[e-1] então bs[e] = at[e], o Servidor está ocioso e a tarefa é enviada aele (Figura 17.a)

2. at[e] ≤ es[e-1] então bs[e] = es[e-1], a tarefa aguarda na Fila e será enviada aoServidor assim que ele fnalizar a tarefa anterior (Figura 17.b)

Figura 17 - Tarefa chegando em Sitemas de Fila: a) Servidor ocioso quandoat[e] > es[e-1] e bs[e] = at[e]; b) Servidor ocupado quando at[e] ≤ es[e-1] e bs[e] = es[e-1].

Vale destacar que bs[e] ≥ at[e], ∀e ∈ [1,N].

2.1.4 CÁLCULO DE ES

Quando a segunda tarefa sai do Servidor do Sistema de Fila no Exemplo2.1 o tempo transcorrido é igual ao valor de bs acrescido de st, ambos dosegundo evento.

Generalizando, es[e] = bs[e] + st[e], e ∈ [1,N].

2.1.5 ESTATÍSTICAS DE SISTEMAS DE FILA M/M/1

As variáveis aleatórias dos Sistemas de Fila M/M/1, suas equações ou seusvalores esperados estão listadas nas Tabela 11, adaptado de Chung(2004). Estas equações podem ser adaptadas para Sistemas de FilasA/B/c/K/m/Z.

Modelagem e Simulação Discreta 51

Tabela 11 - Valores das variáveis aleatórias dos Sistemas de Fila M/M/1 eseus valores médios

VA Descrição Estatística EquaçãoT tempo da simulação T=es [N ] 2.3w[e] tempo de espera da tarefa e na Fila w [e]=bs [e]−at [e] 2.4s[e] tempo de serviço da tarefa e no Servidor s [e ]=es [e ]−bs [e ] 2.5r[e] tempo de espera da tarefa e no Sistema de Fila r [e ]=es [e ]−at [e ] 2.6

E(nq) número médio de tarefas na Fila E(nq)=1N∑e=1

N

nq [e ] 2.7

E(ns) número médio de tarefas no Servidor E(ns)=1N∑e=1

N

ns[e] 2.8

E(n) número médio de tarefas no Sistema de Fila E(n)= 1N∑e=1

N

n[e ] 2.9

E(w) tempo médio de espera de tarefas na Fila E(w)= 1N∑e=1

N

w [e] 2.10

E(s) tempo médio de tarefas no Servidor E(s)= 1N∑e=1

N

s [e] 2.11

E(r) tempo médio de tarefas no Sistema de Fila E(r )= 1N∑e=1

N

r [e] 2.12

p0 probabilidade de Servidor ocioso p0=1T∑e=1

N

(1−ns [e ])s [e] 2.13

U utilização do Servidor U= 1T∑e=1

N

s[e ] 2.14

Tempo da Simulação ou Duração da Simulação (T) é igual ao último valorsimulado de es, Equação 2.3. Este valor corresponde ao intervalo detempo compreendido entre o início da simulação (at[0] = 0) e o seu fnal,o tempo que a última tarefa sai do sistema, es[N].

As Tarefas no Sistema incluem as que estiverem na Fila e também a queestiver no Servidor. As Tarefas na Fila excluem a que estiver no Servidor.As Tarefas no Servidor excluem as que estiverem na Fila.

2.1.5.1 Algoritmo para Calcular nq

Para calcular o valor de nq é necessário comparar os valores de at de umdado evento com os de es dos eventos anteriores. Considerando oServidor inicialmente ocioso, tem-se:

Modelagem e Simulação Discreta 52

• a tarefa e = 1, a primeira a chegar no Sistema de Fila, vai diretamente para o Servidor, isto é nq[1] = 0

• quando a segunda tarefa (e = 2) chegar no sistema, o Servidor pode estar ocioso ou ocupado. Se o Servidor estiver ocioso, não há tarefa na Fila, então at[2] ≥ es[1] e nq[2] = 0. Se o Servidor estiver ocupado então at[2] < es[1] e nq[2] = 1

• a terceira tarefa, ao chegar no Servidor, se (e = 3) at[3] ≥ es[2] então o Servidor está ocioso e nq[3] = 0, caso contrário nq[3] = 1, pelo menos a tarefa 2 está na Fila. Se at[3] < es[1] então a primeira tarefa ainda está na Fila e nq[3] = 2.

Generalizando, quando a e-ésima tarefa chega no Sistema de Fila, otamanho da Fila nq[e] será igual à contagem dos casos em que at[e] <es[c], c ∈ [1,e-1], Equação 2.15 e Figura 18.

nq [e ]=∑c=1

e−1

1,at [e ]<es [c ] 2.15

A função void Nq( int ), Algoritmo 2.1, implementa a Equação 2.15 paracalcular nq dos eventos simulados.

Algoritmo 2.1: Código em C++ para calcular nq de Sistemas de Fila M/M/1

1. void Nq( int e ){2. nq[e] = 0;3. for( int c = 0; c < e-1; c++ )4. if( at[e] < es[c] ) nq[e] += 1;1. }

O Algoritmo 2.2 calcula nq de forma mais efciente do que o Algoritmo 2.1.

Algoritmo 2.2: Função para calcular nq de forma mais efciente

1. void Nq( int e ){1. int c = e-1;2. nq[e] = 0;3. while( at[e] < es[c] ){4. nq[e] += 1;5. c--;6. }7. }

A Figura 18 mostra 5 eventos na reta do tempo na qual são destacadosseus valores de at, bs e es. Ao sair do Sistema, a tarefa e-4 dá lugar aoprocessamento da tarefa e-3 e, sequencialmente, chegam as tarefas e-2,e-1 e e. Como o valor de at[e] é menor do que es[e-1], es[e-2] e es[e-3],o valor de nq[e] é igual a 3.

Modelagem e Simulação Discreta 53

Figura 18 - Valor de at da tarefa e em relação aos valores de es dastarefas anteriores, ilustrando as 5 tarefas na Fila, ou seja, at[e] < es[e-4]que é o mesmo que at[e] ≥ es[e-5].

2.1.5.2 Valores de E(ns)

O Servidor de um Sistema de Fila M/M/1 pode estar ocioso ou ocupado e,assim, ns[e] poder ser igual a 1 ou igual 0, Equação 2.16.

ns[e]={0, Servidor ocioso1, Servidor ocupado} 2.16

Desta forma, o valor de E(ns), Equação 2.17, pode ser estimado pela somado tempo em que o Servidor fcou ocupado dividido pelo tempo dasimulação, logo é igual à Utilização do Servidor (U) ou seja, E(ns) = U.Considerando a Equação 2.16, o produto ns[e]s[e] indicado na Equação2.17 é igual ao próprio s[e] quando o Servidor estiver ocupado e 0(zero)caso contrário.

E[ns]=1T∑e=1

N

ns[e ]s [e] 2.17

A Probabilidade de Servidor Ocioso é a razão entre o tempo que o Servidorfca ocioso e o tempo da simulação, Equação 2.18. Considerando aEquação 2.16, o produto (1-ns[e])s[e] é igual ao próprio s[e] quando oServidor estiver ocioso e 0 (zero) em caso contrário.

p0=1T∑e=1

N

(1−ns [e ])s [e] 2.18

A Utilização do Servidor é a razão entre o tempo que o Servidor fcaocupado e o tempo da simulação, Equação 2.19, que é igual aocomplemento de p0, Equação 2.20.

Modelagem e Simulação Discreta 54

U= 1T∑e=1

N

ns[e] s[e ]=1T∑e=1

N

s [e ] 2.19

U=1−p0 2.20

2.1.5.3 Algoritmo para Calcular p0

No início da simulação, o Servidor está ocioso e permanece neste estadodurante o tempo bs[1], ou seja, até que chegue uma tarefa no sistema.Para os demais eventos, o Servidor fcará ocioso quando at[e] > es[e-1] eo tempo que ele fca ocioso é at[e]–es[e-1], vale destacar que at[e] ≥es[e-1], ∀e ∈ [2,N). Sendo assim, p0 pode ser estimado pela Equação2.21.

p0=bs [1]+∑

e=2

N

(at [e ]−es[e−1])

T,at [e ]>es [e−1]

2.21

O algoritmo Algoritmo 2.3 implementa a Equação 2.21 para calcular p0 eU.

Algoritmo 2.3: Código em C++ para calcular p0 de Sistemas de Fila M/M/1

1. T = es[N-1];2. p0 = bs[0];3. for( int e = 1; e < N; e++ )4. if( at[e] > es[e-1] ) p0 += at[e]-es[e-1];5. p0 /= T;

2.1.5.4 Algoritmo para Calcular U

O tempo que o Servidor fca ocupado durante a simulação igual a somados valores de st durante todo processo e U pode ser estimada pelaEquação 2.22. E p0 pode ser estimado a partir de U, Equação 2.23.

U= 1T∑e=1

N

(es [e]−bs [e ])= 1T∑e=1

N

st [e ] 2.22

p0=1−U 2.23

Modelagem e Simulação Discreta 55

O algoritmo Algoritmo 2.4 implementa a Equação 2.22 para calcular U edaí calcular p0.

Algoritmo 2.4: Código em C++ para calcular U e p0 de Sistemas de FilaM/M/1

1. T = es[N-1];2. Sx = 0;3. for( int e = 0; e < N; e++ )4. Sx += st[e];5. U = Sx/T;6. p0 = 1.0-U;

2.1.6 RESUMO DO MODELO DE SISTEMAS DE FILAS M/M/1

As Tabela 12, Tabela 13 e Tabela 14 resumem o Modelo Conceitual dosSistemas de Fila M/M/1.

Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1

Símbolo Descrição ValoresA Distribuição de tempo entre chegadas M - Processo de Poisson (Markoviano)B Distribuição de tempo de serviço M - Processo de Poisson (Markoviano)c Número de canais de serviços 1K Capacidade do sistema ∞m Tamanho da população ∞

Z Disciplina da fla FIFO – primeiro que chega é o primeiro a ser atendido

Tabela 13 - Entrada, parâmetros, variáveis de estado e saída do ModeloComputacional de Sistemas de Fila M/M/1

Entrada iat e st ou λ = 1/E[iat] e μ = 1/E[st]Parâmetros M/M/1/∞/∞/FIFO e NVariáveis de Estado at, bs, esSaída T, Enq, Ens, En, Ew, Es, Er, p0, U, Vnq, Vns, Vn, Vw, Vs, Vr

em que E é a esperança matemática (média aritmética) e V é a variância.A variância da variável aleatória x é dada pela Equação 2.24.

Modelagem e Simulação Discreta 56

V (x )=E(x2)−[E(x )]2 2.24

Tabela 14 - Entrada, parâmetros, variáveis de estado e saída do ModeloComputacional de Sistemas de Fila M/M/1

e = 1 at[1] = bs[1] = iat[1]es[1] = at[1] + st[1]

2 ≤ e ≤ Nat[e] = iat[e] + at[e-1]at[e] > es[e-1] então bs[e] = at[e] senão bs[e] = es[e-1]es[e] = bs[e] + st[e]

Exemplo 2.2: No Sistema de Fila M/M/1 simulado abaixo, com N = 10 eventos, iat = {3,5, 4, 3, 8, 5, 9, 8, 7, 6 } e st = { 12, 12, 10, 9, 2, 2, 1, 3, 2, 5 }:

e iat st at bs es nq w p0 es-at1 3 12 3 3 15 0 0 3 122 5 12 8 15 27 1 7 0 193 4 10 12 27 37 2 15 0 254 3 9 15 37 46 2 22 0 315 8 2 23 46 48 3 23 0 256 5 2 28 48 50 3 20 0 227 9 1 37 50 51 3 13 0 148 8 3 45 51 54 4 6 0 99 7 2 52 54 56 1 2 0 410 6 5 58 58 63 0 0 2 5∑ 58 58 19 108 5 166

Tem-se que T = es[10] = 63 tu.

Será calculado o valor de nq[8] a título de exemplo, neste caso nq[8] = 4:

• a tarefa 8 chegou na Fila no tempo at[8] = 45 tu e entrará no Servidor no tempo es[7] = 51 tu, ou seja no tempo 51 tu ela está na Fila pois at[8] < es[7]

• a tarefa 7 chegou na Fila no tempo at[7] = 37 tu e entrará no Servidor no tempo es[6] = 50 tu, ou seja no tempo 37 tu ela está na Fila pois at[7] < es[6]

• a tarefa 6 chegou na Fila no tempo at[6] = 28 tu e entrará no Servidor no tempo es[5] = 48 tu, ou seja no tempo 28 tu ela está na Fila pois at[6] < es[5]

• a tarefa 5 chegou na Fila no tempo at[5] = 23 tu e entrará no Servidor no tempo es[4] = 46 tu, ou seja no tempo 23 tu ela está na Fila pois at[5] < es[4]

• a tarefa 4 chegou na Fila no tempo at[4] = 15 tu e entrará no Servidor no tempo es[3] = 37 tu, ou seja no tempo 15 tu ela não está na Fila pois at[7] > es[3]

• os eventos anteriores já foram processados em es[7] = 51 tu.

Os outros valores de nq são calculados da mesma forma.

O tempo de espera na Fila é dada por w[e] = bs[e]-at[e]. Os valores de w estãocalculados na tabela acima, logo E[w] = ∑w[e]/N = 108/10 = 10,8 tu.

O tamanho médio da Fila é Enq = ∑w[e]/T = 108/63 = 1,7.

O cálculo de p0, está indicado na tabela acima, p0 = 5/63 = 0,079.

O cálculo de U = 1-p0 = 1-0,079 = 0,921 ou U = 92,1%.

O cálculo de Es = ∑st[e]/N = 58/10 = 5,8 tu.

O tempo médio no sistema Er = ∑(es[e]-at[e])/N = 166/10 = 16,6 tu.

Modelagem e Simulação Discreta 57

2.2 MODELO COMPUTACIONAL DE SISTEMAS DE FILA M/M/1

O Modelo Computacional de Sistemas de Fila M/M/1 está representadopela classe clQS (Queue System) da Tabela 15 e pelo (Algoritmo 2.5 emC++. Esta classe encapsula os dados de estrada nos vetores iat e st, asvariáveis de estado nos vetores at, bs e es, e o parâmetro N, simulações aserem realizadas.

Tabela 15 - Classe clQS do Modelo Computacional dos Sistemas de FilaM/M/1.

clQSN, iat[N], st[N], at[N], bs[N], es[N]Event = function(e)Simulate = function(N, iat[N], st[N])

A classe clQS possui o parâmetro N, os dados de entrada iat e st, e asvariáveis de estado at, bs e es. Ela possui o construtor clQS e os métodosEvent e Simulate, conforme a Tabela 15, estas variáveis, exceto N, sãovetores de tamanho N.

O método Simulate inicia a simulação com os valores de N, iat e st,confgura o estado inicial do Sistema de Fila (at[0], bs[0] e es[0]) e executaN-1 vezes o método Event para calcular as e-ésimas variáveis de estadoat[e], bs[e] e es[e], e = 1, 2, …, N-1.

Na função main estão declaradas e atribuídos os valores de N, iat e st, oobjeto QS é criado e recebe como parâmetros a variável N e os vetores iate st e atribui os valores recebidos às suas respectivas variáveis globais doobjeto criado. Em seguida executa o método Simulate que atribui osvalores de at, bs e es do primeiro evento e, por fm, executa o métodoEvent para os segundo, terceiro, ..., N-ésimo eventos, calculando osvalores de at, bs e es evento a evento.

Algoritmo 2.5: Código básico em C++ para simulação de eventos discretosde Sistemas de Fila M/M/1

1. #include <vector>2. using namespace std;3. class clQS{

Modelagem e Simulação Discreta 58

4. private:5. int N;6. vector<double> iat, st, at, bs, es;7. public:8. clQS ( int, vector<double>, vector<double> );9. void Event ( int );10. void Simulate( void );11. };12. clQS::clQS( int N, vector<double> iat, vector<double> st ){13. this->N = N;14. this->iat = iat;15. this->st = st;16. at.resize(N);17. bs.resize(N);18. es.resize(N);19. }20. void clQS::Event( int e ){21. at [e] = iat[e] + at[e-1];22. bs [e] = at [e] > es[e-1] ? at[e] : es[e-1];23. es [e] = bs [e] + st[e];24. }25. void clQS::Simulate( void ){26. at[0] = iat[0];27. bs[0] = iat[0];28. es[0] = bs [0] + st[0];29. for( int e = 1; e < N; e++ )30. Event(e);31. }32. int main( void ){33. int N = 10;34. vector<double> iat = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 },35. st = { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 };36. clQS *QS = new clQS(N,iat,st);37. QS->Simulate();38. delete QS;39. return 0;40. }

No Modelo Conceitual de Sistemas de Fila e ∊ [1,N] pois tem o sentido decontagem dos eventos. No correspondente Modelo Computacional e ∊[0,N-1], tem o sentido de ordem dos eventos. Isto se deve àscaracterísticas das linguagens utilizadas, C++ e Javascript.

2.2.1 TÉCNICA PARA GERAR IAT E ST

Até agora estamos utilizando os valores medidos de iat e de stdiretamente nos modelos mas, para simular um número de eventos maiordo que o número de dados observados, é necessário gerar variáveisaleatórias:

• iat a partir de λ

Modelagem e Simulação Discreta 59

• st a partir de μ

A geração de variáveis é feita a partir dos valores médios de dadosmedidos ou estimados. Para isso, é usada uma função distribuição deprobabilidade exponencial para gerar variáveis aleatórias a partir dosvalores médios. As técnicas para gerar variáveis aleatórias (GVA) a partirde geradores de números aleatórios (GNA) serão estudadas nos próximoscapítulos.

O Algoritmo 2.6 é uma função em C++ para gerar variáveis aleatórias dafunção distribuição de probabilidade exponencial utilizando a bibliotecapara gerar números aleatórios. Ela requer o parâmetro p (valor médio dosdados observados ou estimados).

Algoritmo 2.6 - Função C++ geradora de variáveis aleatórias para a funçãodistribuição de probabilidade exponencial

1. double F( double p ){2. double u = (rand()+1.0)/(RAND_MAX+2.0); // u in (0,1)3. return -p*log(u);4. }

Os termos srand(), rand(), RAND_MAX fazem parte da biblioteca denúmeros aleatórios das linguagens C e C++ e serão estudados nospróximos capítulos.

O comando iat[e] = F(l) faz com que F(p=l) gere um valor de iat queoscilará em torno de l devido à aleatoriedade na geração de u.Similarmente, st [e] = F(m), F(p=m) gera um valor de st que oscilará emtorno de m.

Os valores iat e st gerados pela função F variam para cada simulação quefor realizada pois são obtidas a partir de u, que é gerado aleatoriamente.Desta forma são gerados valores de iat e de st em torno de uma médiaconhecida.

Podem ser usadas outras funções além da exponencial, basta incluir afunção inversa de interesse, que será visto mais adiante.

No Modelo Computacional temos ainda que:

• l é o intervalo médio entre chegadas de tarefas na Fila• m é o tempo médio de serviço de tarefas do Servidor• l é usado em lugar de λ, sendo l = 1/E[iat] em que iat são dados medidos ou

estimados

Modelagem e Simulação Discreta 60

• m é usado em lugar de μ, sendo m = 1/E[st] em que st são dados medidos ou estimados

Neste sentido pode-se reescrever a Tabela 15 para a classe clQS comdados de entrada N, l e m e as variáveis de estado iat, st, at, bs e es e osmétodos Event e Simulate, Tabela 16.

Tabela 16 - Classe clQS do Modelo Computacional dos Sistemas de FilaM/M/1 para simulação com dados de entrada N, l e m

clQSN, l, m, iat[N], st[N], at[N], bs[N], es[N]Event = function(e)Simulate = function(N,l,m)

2.2.2 SOFTWARE QS.CPP

O código completo em C++ para simulação de eventos discretos deSistemas de Fila M/M/1 pode ser visto no Algoritmo 2.7, neste algoritmoforam feitas mudanças na sua estrutura e organização interna quandocomparado com os códigos anteriores, a saber:

• os dados de entrada agora são N, l e m• iat e st deixaram de ser dados de entrada e agora são calculados a partir de l e m,

respectivamente, utilizando a função F• o vetor E para os valores médios de iat, st, nq, w, s e r• o vetor V para os valores da variância de iat, st, nq, w, s e r• as variáveis T, U e p0

No Algoritmo 2.7, as variáveis de estado são calculados pelos métodos F,Start, Event, Simulate e Nq. Os indicadores são calculados pelosmétodos Statistic e Summary. O relatório fnal é feito pelos métodosTable, Summary e Legend. Os médodos do Algoritmo 2.7 estão descritosabaixo:

• F calcula variáveis aleatórias utilizando uma distribuição exponencial• Start calcula os valores de iat, st, at, bs, es e nq do primeiro evento• Event calcula os valores de iat, st, at, bs e es dos demais eventos• Simulate calcula as variáveis de estado de cada evento simulado

sequencialmente, do primeiro ao último• Nq calcula o valor de nq de cada evento• Statistic calcula as médias e variâcias de iat, st, at, bs, es e nq• Table escreve os valores calculados dos eventos iat, st, at, bs, es e nq, do primeiro

ao último, em uma string no formato html

Modelagem e Simulação Discreta 61

• Summary calcula os valores de T, U e p0 e faz um resumo das médias e variâncias dos dados calculados em uma string no formato html

• Legend escreve uma legenda das variáveis utilizadas no software em uma string no formato html

Algoritmo 2.7: Código completo em C++ para simulação de eventosdiscretos de Sistemas de Fila M/M/1

1. #include <cstdlib>2. #include <cmath>3. #include <ctime>4. #include <string>5. #include <vector>6. #include <algorithm>7. #include <fstream>8. #include <sstream>9. using namespace std;10. class clQS{11. private:12. int N;13. double l, m, E[6], V[6];14. vector<int> nq;15. vector<double> iat, st, at, bs, es;16. public:17. clQS ( int, double, double );18. double F ( double );19. void Start ( void );20. void Event ( int );21. void Simulate ( void );22. void Nq ( int );23. void Statistic( void );24. string Table ( void );25. string Summary ( void );26. string Legend ( void );27. };28. clQS::clQS( int N, double l, double m ){29. this->N = N;30. this->l = l;31. this->m = m;32. iat.resize(N);33. st .resize(N);34. at .resize(N);35. bs .resize(N);36. es .resize(N);37. nq .resize(N);38. srand(time(NULL));39. }40. double clQS::F( double p ){41. double u = (rand()+1.0)/(RAND_MAX+2.0); // u in (0,1)42. return -p*log(u);43. }44. void clQS::Start( void ){45. iat[0] = F(l);46. st [0] = F(m);47. at [0] = iat[0];48. bs [0] = at[0];49. es [0] = at[0] + st[0];50. nq [0] = 0;51. }52. void clQS::Event( int e ){53. iat[e] = F(l);54. st [e] = F(m);55. at [e] = iat[e] + at[e-1];56. bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];57. es [e] = bs[e] + st[e];58. Nq(e);59. }

Modelagem e Simulação Discreta 62

60. void clQS::Simulate( void ){61. Start();62. for( int e = 1; e < N; e++ )63. Event(e);64. Statistic();65. }66. void clQS::Nq( int e ){67. int c = e-1;68. nq[e] = 0;69. while( at[e] < es[c] ){70. nq[e] += 1;71. c--;72. }73. }74. void clQS::Statistic( void ){75. double Sx[6], Sxx[6];76. for( int c = 0; c < 6; c++ )77. Sx[c] = Sxx[c] = 0.0;78. for( int e = 0; e < N; e++ ){79. double w = bs[e]-at[e],80. s = es[e]-bs[e],81. r = es[e]-at[e];82. Sx[0] += iat[e]; Sxx[0] += iat[e]*iat[e];83. Sx[1] += st[e] ; Sxx[1] += st[e]*st[e];84. Sx[2] += w ; Sxx[2] += w*w;85. Sx[3] += s ; Sxx[3] += s*s;86. Sx[4] += r ; Sxx[4] += r*r;87. Sx[5] += nq[e] ; Sxx[5] += nq[e]*nq[e];88. }89. for( int c = 0; c < 6; c++ ){90. E[c] = Sx [c]/N;91. V[c] = Sxx[c]/N-E[c]*E[c];92. }93. }94. string clQS::Table( void ){95. stringstream str;96. str << fixed;97. str.precision(3);98. str << "Simulacao de Sistema de Fila M/M/1<hr>"99. << "Table<hr>"100. << "<table border='1'>"101. << "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";102. for( int e = 0; e < N; e++ ){103. str << "<tr><td>" << e+1104. << "<td>" << iat[e]105. << "<td>" << st [e]106. << "<td>" << at [e]107. << "<td>" << bs [e]108. << "<td>" << es [e]109. << "<td>" << nq [e];110. }111. str << "</table><br><br><br>";112. return str.str();113. }114. string clQS::Summary( void ){115. double T = es[N-1], U = E[1]*N/T, p0 = 1.0-U;116. stringstream str;117. str << fixed;118. str.precision(3);119. str << "Summary<hr>"120. << "<table>"121. << "<tr><td> l <td>=<td>" << l122. << "<tr><td> m <td>=<td>" << m123. << "<tr><td> N <td>=<td>" << N124. << "<tr><td> T <td>=<td>" << T125. << "<tr><td> E(iat) <td>=<td>" << E[0]126. << "<tr><td> E(st) <td>=<td>" << E[1]127. << "<tr><td> E(w) <td>=<td>" << E[2]

Modelagem e Simulação Discreta 63

128. << "<tr><td> E(s) <td>=<td>" << E[3]129. << "<tr><td> E(r) <td>=<td>" << E[4]130. << "<tr><td> E(nq) <td>=<td>" << E[5]131. << "<tr><td> V(iat) <td>=<td>" << V[0]132. << "<tr><td> V(st) <td>=<td>" << V[1]133. << "<tr><td> V(w) <td>=<td>" << V[2]134. << "<tr><td> V(s) <td>=<td>" << V[3]135. << "<tr><td> V(r) <td>=<td>" << V[4]136. << "<tr><td> V(nq) <td>=<td>" << V[5]137. << "<tr><td> U <td>=<td>" << U138. << "<tr><td> p0 <td>=<td>" << p0139. << "</table><br><br><br>";140. return str.str();141. }142. string clQS::Legend( void ){143. stringstream str;144. str << "Legend<hr>"145. << "<table>"146. << "<tr><td> l <td>=<td> intervalo médio de chegada de tarefas na

Fila"147. << "<tr><td> m <td>=<td> tempo médio de serviço do Servidor"148. << "<tr><td> N <td>=<td> número de eventos simulados"149. << "<tr><td> e <td>=<td> ordem dos eventos"150. << "<tr><td> iat <td>=<td> intervalo entre chegadas de tarefas na

Fila"151. << "<tr><td> st <td>=<td> tempo de serviço do Servidor"152. << "<tr><td> at <td>=<td> tempo de chegada da tarefa na Fila"153. << "<tr><td> bs <td>=<td> tempo de chegada da tarefa no Servidor"154. << "<tr><td> es <td>=<td> tempo de saída da tarefa do Servidor"155. << "<tr><td> nq <td>=<td> comprimento da Fila"156. << "<tr><td> w <td>=<td> tempo na Fila"157. << "<tr><td> s <td>=<td> tempo no Servidor"158. << "<tr><td> r <td>=<td> tempo no Sistema de Fila"159. << "<tr><td> E <td>=<td> média aritmética"160. << "<tr><td> V <td>=<td> variância"161. << "<tr><td> T <td>=<td> duração da simulação"162. << "<tr><td> U <td>=<td> utilização do Servidor"163. << "<tr><td> p0 <td>=<td> probabilidade do Servidor ocioso"164. << "</table><br><br>";165. return str.str();166. }167. int main( void ){168. int N = 10 ;169. double l = 0.2,170. m = 0.1;171. clQS QS(N,l,m);172. QS.Simulate();173. string str = QS.Table() + QS.Summary() + QS.Legend();174. ofstream file;175. file.open("QS-Simulate.out.html");176. replace(str.begin(), str.end(),'.',',');177. file << str;178. file.close();179. return 0;180. }

As variáveis utilizadas no software QS.cpp estão sumarizadas na Tabela 17e seus diagramas de classes e atividades são mostrados na Figura 19 e naFigura 20, respectivamente.

Tabela 17 - Variáveis utilizadas no software QS.cpp

Nome DescriçãoEntradas

N número de eventos simulados

Modelagem e Simulação Discreta 64

l intervalo médio de chegadas na Filam tempo médio de serviço do Servidor

Variáveisiat intervalo entre chegadas de tarefas na Filast tempo de serviço no Servidorat tempo de chegada de tarefa na Filabs tempo de chegada da tarefa no Servidores tempo de saída da tarefa do Servidornq comprimento da Filaw tempo na Filas tempo no Servidorr tempo do Sistema de FilaT duração da simulaçãop0 probabilidade de Servidor ociosoU utilização do Servidor

ModificadoresE[var] Esperança da variável [var]V[var] Variância da variável [var]

Modelagem e Simulação Discreta 65

Figura 19 - Diagrama de classes do software QS.cpp

Figura 20 - Diagrama de atividades do software QS.cpp.

Exemplo 2.3: Foi executado Algoritmo 2.7, com entradas N = 10, l = 0.167 e m = 0.191,com os resultados apresentados abaixo:

e iat st at bs es nq w s r

0 0,16 0,76 0,16 0,16 0,92 0 0,00 0,76 0,76

1 0,10 0,10 0,26 0,92 1,02 1 0,66 0,10 0,76

2 0,12 0,04 0,38 1,02 1,06 2 0,64 0,04 0,68

3 0,02 0,05 0,40 1,06 1,11 3 0,66 0,05 0,71

4 0,40 0,03 0,80 1,11 1,14 4 0,31 0,03 0,35

5 0,01 0,06 0,80 1,14 1,21 5 0,34 0,06 0,41

6 0,76 0,23 1,56 1,56 1,79 0 0,00 0,23 0,23

7 0,07 0,02 1,63 1,79 1,81 1 0,16 0,02 0,18

8 0,03 0,07 1,66 1,81 1,88 2 0,15 0,07 0,22

9 0,02 0,11 1,68 1,88 1,99 3 0,21 0,11 0,31

Summary

N 10

T 1,991

Modelagem e Simulação Discreta 66

Eiat 0,168

Viat 0,057

Est 0,148

Vst 0,050

Enq 2,100

Vnq 2,767

Ew 0,313

Vw 0,067

Es 0,148

Vs 0,050

Er 0,461

Vr 0,058

p0 0,257

U 0,743

Valores de iat gerados

Ao receber p = l = λ = 0.167 como parâmetro, são gerados os N = 10 valores de iat apartir de F(p) conforme listados na tabela acima. O gráfco de iat versus e estão nográfco abaixo. A linha λ (em cor preta) é constante e as colunas de iat (em cor verde)varia ora acima ora abaixo do valor de λ, o que denota a aleatoriedade do método.

Valores de st gerados

Ao receber p = m = μ = 0.191 como parâmetro, são gerados os N = 10 valores de st apartir de F(p) conforme listados na tabela acima. O gráfco de st versus e estão nográfco abaixo. A linha μ (em cor preta) é constante e a coluna de st (em cor laranja)varia em torno de μ e denota a aleatoriedade do método.

Modelagem e Simulação Discreta 67

Os valores de iat e st das fguras acima variam para cada simulação que for realizadapois são obtidas a partir de u, que é gerado aleatoriamente. Desta forma são geradosvalores de iat e de st em torno de uma média conhecida.

Valores de at, bs e es simulados

Os valores de at (verde), bs (laranja) e es (azul) versus e estão no gráfco abaixo.Quando a coluna de at tem o mesmo valor que a de bs signifca que a tarefa nãoesperou na Fila, chegou e foi direto para o Servidor. Quanto maior a diferença entre at ebs maior será o tempo de espera na Fila. Quanto maior a diferença entre as colunas es ebs maior será o tempo de serviço.

Valores de w, s e r simulados

Os valores de w (verde), s (laranja) e r (azul) versus e estão no gráfco abaixo. A tarefa e= 0 tem w = 0 porque não espera na Fila, ao chegar, vai direto para o Servidor. A tarefae = 6 também não espera na Fila. Quanto maiores os valores das colunas maiores serão

Modelagem e Simulação Discreta 68

a duração dos eventos.

Valores de nq simulados

Os valores de nq (cinza) versus e está no gráfco abaixo. Para e = 0 e e = 6 não temtarefa na Fila. Quanto maior o valor das colunas maior será o tamanha da Fila.

2.3 QUESTÕES

1. Quais as diferenças entre os modelos de Sistemas de Fila M/M/1 e M/M/5.2. Como um sistema CPU+Memória pode ser simulado pelo Sistemas de Fila M/M/1

se a memória não tem tamanho infnito?

Modelagem e Simulação Discreta 69

3. Compare as estimativas dos indicadores obtidos pelos modelos de simulação eanalíticos dos Sistemas de Fila M/M/1 dos exemplos 2.1 e 2.2.

4. Porque o Algoritmo 2.2 é mais efciente do que o Algoritmo 2.1?

2.4 EXERCÍCIOS

1. Mensagens chegam em um servidor na taxa de 500 pps. O processamento é feito nataxa de 700 pps. Simule este sistema para 5000 e-mail. Compare os indicadores obtidospor simulação com os do correspondente modelo analítico.2. Durante um intervalo de 1 hora, observou-se que um servidor de um sistemadistribuído recebeu 10.800 solicitações. O tempo de resposta médio destes pedidos foiobservado como sendo igual a um terço de segundo. Simule este sistema para 100, 200 e300 solicitações. Qual é o efeito do número de eventos simulados nos indicadoresestimados? Compare os indicadores, médias e variâcia, obtidos por simulação com os docorrespondente modelo analítico.3. Eventos que chegam em um Sistema de Fila M/M/1 com intervalo entre chegadas iat ={ 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 } e tempos de serviço st = { 11, 10, 9, 12, 9, 11, 14, 8, 9,10 }, simule 10 vezes e calcule a média e a variância dos nos indicadores estimados?Compare os indicadores obtidos por simulação com os do correspondente modeloanalítico.4. Repita o Exercício 1 para:

a) λ = 250 pps e µ = 500 ppsb) λ = 350 pps e µ = 500 ppsc) λ = 450 pps e µ = 500 pps

5. Compare os indicadores simulados dos exercícios 4.a, 4.b e 4.c com seus respectivosresultados analíticos .6. Tarefas chegam em um Sistema de Fila M/M/1 com intervalo entre chegadas (iat) etempo de serviço (st) - considere nq, w, s e r os indicadores e o índice erp(%) = 100 (a-b)/b para comparação tomando b como base:iat (tps) = { 5,7 7,8 8,0 7,7 5,0 6,1 8,0 2,6 3,2 3,4 7,7 7,6 7,2 3,2 7,6 3,3 6,8 6,8 }st(tps) = { 4,4 5,2 4,5 5,5 4,1 6,9 7,9 5,1 3,7 5,3 3,3 4,1 5,7 5,6 4,4 7,1 4,1 7,2 }

a. discuta a variação da média e da variância dos indicadores para 1000, 2000 e 4000 simulaçõesb. compare e discuta os resultados obtidos nas simulações do item 6.a com os correspondentes do modelo analíticoc. discuta o comportamento analítico da média e da variância dos indicadores quando iat e st, ambos e simultaneamente, variam de ±20% e ±10% (tome 0% como base de comparação)

7. Repita o exercício 6 para as séries de dados:

a) iat(tps) = { 22 22 31 13 12 29 32 19 17 20 13 23 13 20 27 18 22 1 20 14 19 6 22 17 27 24 } e st(tps) = { 33 44 13 19 28 24 35 36 34 27 14 30 23 17 23 5 20 39 37 35 23 34 22 28 42 27 }

b) iat(tps) = { 24 28 20 24 28 15 24 24 23 16 28 28 32 23 22 21 19 27 28 23 36 24 } e st(tps) = { 19 14 18 9 29 9 25 17 30 19 12 15 9 22 22 31 19 12 12 16 30 2 }

Modelagem e Simulação Discreta 70

2.5 RECURSOS DIDÁTICOS PEDAGÓGICOS

Os softwares descritos abaixo utilizam o arquivo jquery.fot.js da bibliotecagráfca fot (www.fotcharts.org) que faz uso da biblioteca jquery.js.

Chart.js 2.6.0 http://www.chartjs.org/ "Chart.js

Flot é uma biblioteca JavaScript para produzir gráfcos com foco nautilização simples, aparência atraente e funcionalidades interactivas. Aversão aqui utilizada foi a 0.8.3. Neste sítio estão disponíveis muitosexemplos que podem ser utilizados como fonte de aprendizagem.

2.5.1 CLASSE CLQS

O Modelo Computacional de Sistemas de Fila M/M/1 foi implementado emuma classe Javascript, denominada clQS.js, Algoritmo 2.8. Para fns decodifcação, a letras λ e μ foram trocadas por l e m, respectivamente.

Uma instância da classe clQS recebe os valores de l e m. Inicialmente ométodo Start é executado para calcular os valores iniciais da simulação, oevento discreto de ordem zero. Na sequência, o método Event éexecutado N-1 vezes. Por fm, Statistic deve executado. Os demaismétodos foram desenvolvidos para prover dados para geração de gráfcose tabelas, conforme descritos abaixo. Vale destacar que os valores de iat est são calculados pelos métodos Start e Event utilizando funçõesexponenciais com parâmetros l e m, respectivamente, e números geradosaleatoriamente pela função random(). A técnica de geração de númerosaleatórios será vista no capítulo 4 deste livro.

Algoritmo 2.8: Classe clQS.js do Modelo Computacional de Sistemas de FilaM/M/1 em Javascript

1. function clQS(l,m){2. var N = 0, iat = [], st = [], at = [], bs = [], es = [], nq = [];3. var Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0, U, T;4.5. this.F = function(a){6. return -a*Math.log(Math.random());7. }8. this.Start = function(){9. iat[0] = this.F(l);

Modelagem e Simulação Discreta 71

10. st [0] = this.F(m);11. at [0] = bs[0] = iat[0];12. es [0] = at[0] + st[0];13. }14. this.Event = function(e){15. N = e+1;16. iat[e] = this.F(l);17. st [e] = this.F(m);18. at [e] = iat[e] + at[e-1];19. bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];20. es [e] = bs[e] + st[e];21. }22. this.Statistics = function(){23. Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr = p0 = U = T = nq[0] = 0.0;24. for( var e = 1; e < N; e++ ){25. nq[e] = 0;26. for( var c = 0; c < e; c++ )27. if( at[e] < es[c] ) nq[e] += 1;28. }29. for( var e = 0; e < N; e++ ){30. Enq += nq[e];31. Ew += bs[e]-at[e];32. Es += es[e]-bs[e];33. Er += es[e]-at[e];34. }35. Enq /= N;36. Ew /= N;37. Es /= N;38. Er /= N;39.40. for( var e = 0; e < N; e++ ){41. Vnq += Math.pow(nq[e] - Enq, 2.0);42. Vw += Math.pow(bs[e]-at[e] - Ew , 2.0);43. Vs += Math.pow(es[e]-bs[e] - Es , 2.0);44. Vr += Math.pow(es[e]-at[e] - Er , 2.0);45. }46. Vnq /= (N-1);47. Vw /= (N-1);48. Vs /= (N-1);49. Vr /= (N-1);50.51. T = es[N-1];52. p0 = bs[0];53. for( var e = 1; e < N; e++ )54. if(at[e] > es[e-1]) p0 += at[e]-es[e-1];55. p0 /= T;56. U = 1.0-p0;57. }58. this.Summary = function(){59. var html;60. html = "<br><table border='1' cellpadding='0' cellspacing='0'>";61. html += "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";62. for( var e = 0; e < N; e++ ){63. html += "<tr>";64. html += "<td>" + e .toFixed(0);65. html += "<td>" + iat[e].toFixed(3);66. html += "<td>" + st [e].toFixed(3);67. html += "<td>" + at [e].toFixed(3);68. html += "<td>" + bs [e].toFixed(3);69. html += "<td>" + es [e].toFixed(3);70. html += "<td>" + nq [e].toFixed(0);71. }72. html += "</table><br>";73. html += "<br> N = " + N .toFixed(0) ;74. html += "<br> T = " + T .toFixed(3) ;75. html += "<br> Enq = " + Enq.toFixed(3) ;76. html += "<br> Vnq = " + Vnq.toFixed(3) ;77. html += "<br> Ew = " + Ew .toFixed(3) ;

Modelagem e Simulação Discreta 72

78. html += "<br> Vw = " + Vw .toFixed(3) ;79. html += "<br> Es = " + Es .toFixed(3) ;80. html += "<br> Vs = " + Vs .toFixed(3) ;81. html += "<br> Er = " + Er .toFixed(3) ;82. html += "<br> Vr = " + Vr .toFixed(3) ;83. html += "<br> p0 = " + p0 .toFixed(3) ;84. html += "<br> U = " + U .toFixed(3) ;85. return html + this.Legend();86. }87. this.Legend = function(){88. var html;89. html = "<br><br><br>Legend";90. html += "<hr>";91. html += " N - número de eventos simulados no Sistema de Fila

M/M/1<br>";92. html += " e - ordem dos eventos<br>";93. html += " iat - intervalo entre chegadas de tarefas na Fila

(interarrival time)<br>";94. html += " st - tempo de serviço do Servidor (service time)<br>";95. html += " at - tempo de chegada da tarefa na Fila (arrival

time)<br>";96. html += " bs - tempo de chegada da tarefa no Servidor (begin

service)<br>";97. html += " es - tempo de saída da tarefa do Servidor (end

service)<br>";98. html += " nq - comprimento da Fila<br>";99. html += " w - tempo na Fila<br>";100. html += " s - tempo no Servidor<br>";101. html += " r - tempo no Sistema de Fila<br>";102. html += " T - duração da simulacao<br>";103. html += " E - média<br>";104. html += " V - variância<br>";105. html += " p0 - probabilidade do Servidor ocioso<br>";106. html += " U - utilização do Servidor (1-p0)<br>";107. return html;108. }109. }

2.5.2 SOFTWARE QSTABLE.HTML

O software QSTable.html tem entradas N = 10, l = 0.167 e m = 0.191,Algoritmo 2.9. nele é criada uma instância da classe clQS (Algoritmo 2.8),executa uma vez o método Start e N-1 vezes o método Event, calcula asestatísticas e gera a tabela de resultados utilizando os métodos Summarye Legend. Os resultados são apresentados na Figura 21.

Algoritmo 2.9: Software QSTable.html do modelo conceitual de Sistemasde Fila M/M/1

1. <!doctype html>2. <html>3. <head>4. <meta charset="UTF-8"><html>5. <style>6. body { font-family: Arial; font-size: 12px }

Modelagem e Simulação Discreta 73

7. table{ font-family: Arial; font-size: 12px }8. </style>9. <script src="clQSEvento.js"></script>10. <script>11. function QSEventoTeste(){12. var N = 10,13. l = 0.167,14. m = 0.191;15. var QSEvento = new clQSEvento(l,m);16. document.write( "<br> Analise de Sistemas de Fila M/M/1 Evento");17. QSEvento.Start();18. for( var e = 1; e < N; e++ )19. QSEvento.Event(e);20. QSEvento.Statistic();21. document.write(QSEvento.Summary());22. }23. </script>24. </head>25. <body onload="QSEventoTeste()">26. </body>27. </html>

Modelagem e Simulação Discreta 74

Figura 21 - Resultados da execução do software QSTable.html (Algoritmo2.9) com entradas N = 10, l = 0.167 e m = 0.191.

2.5.3 SOFTWARE QSPLOT.HTML

Modelagem e Simulação Discreta 75

Foi desenvolvido o software QSPlot.html para visualização gráfca e adinâmica dos resultados do Modelo Computacional de Sistemas de FilaM/M/1 utilizando a classe clQS e a biblioteca gráfca flot, Algoritmo 2.10.

Algoritmo 2.10: Software QSPlot.html do modelo computacional deSistemas de Fila M/M/1 em HTML5 e Javascript

1. <!doctype html>2. <html>3. <head>4. <meta charset="UTF-8">5. <title>Análise de Sistemas de Fila M/M/1 Gráfico de Eventos</title>6. <script type="text/javascript" src="jquery.js" ></script>7. <script type="text/javascript" src="jquery.flot.js"></script>8. <script>9. function clQS(l,m){10. var iat = [],11. st = [],12. at = [],13. bs = [],14. es = [],15. nq = [];16. var Eiat, Viat, Est, Vst, Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0;17. Eiat = Viat = Enq = Est = Vst = Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr =

p0 = 0.0;18.19. this.F = function(x){20. var u = Math.random();21. return -x*Math.log(u);22. }23. this.Start = function(){24. iat[0] = this.F( l );25. st [0] = this.F( m );26. at [0] = iat[0];27. bs [0] = at [0];28. es [0] = at [0] + st[0];29. nq [0] = 0;30. p0 = bs[0];31. }32. this.Event = function(e){33. iat[e] = this.F( l );34. st [e] = this.F( m );35. at [e] = at[e-1] + iat[e];36. bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];37. es [e] = bs[e] + st[e];38. }39. this.Nq = function(e){40. nq[e] = 0;41. for( var c = 0; c < e; c++ )42. if( at[e] < es[c] ) nq[e] += 1;43. }44. this.getMean = function(e){45. var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];46. M[0] = Eiat /e;47. M[1] = Est /e;48. M[2] = Ew /e;49. M[3] = Es /e;50. M[4] = Er /e;51. M[5] = Enq /e;52. M[6] = p0 /es[e]; // T;53. M[7] = 1.0-M[6]; // 1-p0;54. return M;55. }56. this.getVariance = function(e){57. var V = [0.0,0.0,0.0,0.0,0.0,0.0];58. if( e > 1 ){

Modelagem e Simulação Discreta 76

59. V[0] = Viat/(e-1);60. V[1] = Vst /(e-1);61. V[2] = Vw /(e-1);62. V[3] = Vs /(e-1);63. V[4] = Vr /(e-1);64. V[5] = Vnq /(e-1);65. }66. return V;67. }68. this.Calculate = function(e){69. Eiat += iat[e];70. Est += st [e];71. Enq += nq [e];72. Ew += bs [e] - at[e];73. Es += es [e] - bs[e];74. Er += es [e] - at[e];75.76. if( at[e] > es[e-1] ) p0 += at[e] - es[e-1];77.78. Viat += Math.pow( iat[e] - Eiat/e, 2.0);79. Vst += Math.pow( st [e] - Est /e, 2.0);80. Vnq += Math.pow( nq [e] - Enq /e, 2.0);81. Vw += Math.pow( bs [e]-at[e] - Ew /e, 2.0);82. Vs += Math.pow( es [e]-bs[e] - Es /e, 2.0);83. Vr += Math.pow( es [e]-at[e] - Er /e, 2.0);84. }85. }86.87. function clQSTeste(){88. var l = 0.2,89. m = 0.1,90. e = 1 ,91. d00 = [],92. d01 = [],93. d02 = [],94. d03 = [],95. d04 = [],96. d05 = [],97. d06 = [],98. d07 = [],99. d08 = [],100. d09 = [],101. d10 = [],102. d11 = [],103. d12 = [],104. d13 = [],105. G = [];106.107. var QS = new clQS(l,m);108. QS.Start();109.110. $(function(){111. var datasets = {112. "Eiat": { label: "Eiat", data: d00 },113. "Est" : { label: "Est ", data: d01 },114. "Ew" : { label: "Ew " , data: d02 },115. "Es" : { label: "Es " , data: d03 },116. "Er" : { label: "Er " , data: d04 },117. "Enq" : { label: "Enq ", data: d05 },118. "Viat": { label: "Viat", data: d06 },119. "Vst" : { label: "Vst ", data: d07 },120. "Vw" : { label: "Vw " , data: d08 },121. "Vs" : { label: "Vs " , data: d09 },122. "Vr" : { label: "Vr " , data: d10 },123. "Vnq" : { label: "Vnq ", data: d11 },124. "p0" : { label: "p0 " , data: d12 },125. "U" : { label: "U " , data: d13 },126. };

Modelagem e Simulação Discreta 77

127. var choiceContainer = $("#choices");128. $.each(datasets, function( key,val )

{ choiceContainer.append("<br><input type='checkbox' name='" + key + "' checked='checked' id='id" + key + "'></input>" + "<label for='id" + key + "'>" + val.label + "</label>"); });

129. var i = 0;130. $.each(datasets, function(key,val){ val.color = i; ++i; });131. choiceContainer.find("input").click(plotAccordingToChoices);132. function plotAccordingToChoices(){ var data = [];

choiceContainer.find("input:checked").each( function(){ var key = $(this).attr("name"); if( key && datasets[key] ){ data.push(datasets[key]); } }); if( data.length > 0 ){ $.plot("#placeholder", data, { yaxis: { min: 0.0 }, xaxis:{ tickDecimals: 0.0 } }); } }

133. var timer = setInterval(function(n){134. QS.Event(e);135. QS.Nq(e);136. QS.Calculate(e);137.138. G = QS.getMean(e);139. d00[e] = []; d00[e][0] = e; d00[e][1] = G[0]; //"Eiat"140. d01[e] = []; d01[e][0] = e; d01[e][1] = G[1]; //"Est "141. d02[e] = []; d02[e][0] = e; d02[e][1] = G[2]; //"Ew "142. d03[e] = []; d03[e][0] = e; d03[e][1] = G[3]; //"Es "143. d04[e] = []; d04[e][0] = e; d04[e][1] = G[4]; //"Er "144. d05[e] = []; d05[e][0] = e; d05[e][1] = G[5]; //"Enq "145. d12[e] = []; d12[e][0] = e; d12[e][1] = G[6]; //"p0 "146. d13[e] = []; d13[e][0] = e; d13[e][1] = G[7]; //"U "147.148. G = QS.getVariance(e);149. d06[e] = []; d06[e][0] = e; d06[e][1] = G[0]; //"Viat"150. d07[e] = []; d07[e][0] = e; d07[e][1] = G[1]; //"Vst "151. d08[e] = []; d08[e][0] = e; d08[e][1] = G[2]; //"Vw "152. d09[e] = []; d09[e][0] = e; d09[e][1] = G[3]; //"Vs "153. d10[e] = []; d10[e][0] = e; d10[e][1] = G[4]; //"Vr "154. d11[e] = []; d11[e][0] = e; d11[e][1] = G[5]; //"Vnq "155.156. e++;157. plotAccordingToChoices();158. },200);159. $("#footer").prepend("Flot " + $.plot.version + " Copyright: Brauliro

G Leal, 2014" );160. });161. }162. </script>163. </head>164. <body>165. <h4>Análise de Sistemas de Fila M/M/1 Gráfico de Eventos</h4>166. <hr>167. <input type="button" value=" QS Teste >>> " onclick="clQSTeste()"/>168. <hr>169. <div id="placeholder" style="float:left; height: 450px; width:875px;"></div>170. <p id="choices" style="float:left; height: 450px; width:135px;"></p>171. <div id="footer" style="margin-top: 490px;"></div>172. </body></html>

A Figura 22 apresenta a software QSPlot.html sendo executado, os cálculossão atualizados a cada 200 ms e as curvas são exibidas evento a evento.Este software permite exibir/ocultar as curvas da variáveis Eiat, Viat, Enq,Est, Vst, Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0 e U.

Modelagem e Simulação Discreta 78

Figura 22 - Resultado da execução do software QSPlot.html.

2.5.4 SOFTWARE NQ.HTML

Foi desenvolvido o software Nq.html para visualização gráfca do númerode eventos na Fila do Modelos Computacional de Sistemas de Fila M/M/1,Algoritmo 2.11.

Algoritmo 2.11: Software Nq.html do Modelo Computacional de Sistemasde Fila M/M/1 em HTML5 e Javascript

1. <!doctype html>2. <html>3. <head>4. <meta charset="UTF-8">5. <title>Análise de Sistemas de Fila M/M/1 Cálculo de nq</title>6. <script>7. function clNq(l,m){8. var N = 0, iat = [], st = [], at = [], bs = [], es = [], nq = [];9. this.F = function(p){10. return Math.ceil(-p*Math.log(Math.random()));11. }12. this.Start = function(){

Modelagem e Simulação Discreta 79

13. iat[0] = this.F(l);14. st [0] = this.F(m);15. at [0] = bs[0] = iat[0];16. es [0] = at[0] + st[0];17. }18. this.Event = function(e){19. N = e+1;20. iat[e] = this.F(l);21. st [e] = this.F(m);22. at [e] = iat[e] + at[e-1];23. bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];24. es [e] = bs[e] + st[e];25. }26. this.Calculate = function(){27. for( var e = 0; e < N; e++ ){28. nq[e] = 0;29. for( var c = 0; c < e; c++ )30. if( at[e] < es[c] ) nq[e] += 1;31. }32. }33. this.Html = function(){34. var html;35. html = "<html><style> table {font-size:20px;}</style><body>";36. html += "<br>Sistema de Fila M/M/1 - Cálculo de nq";37. html += "<br><table border='1' cellpadding='0' cellspacing='0'>";38. html += "<tr><td>e/t";39. for( var i = 1; i <= es[N-1]; i++ )40. html += "<td>" + i;41. for( var e = 0; e < N; e++ ){42. html += "<tr>";43. html += "<td>" + e;44. for( var i = 0 ; i < at[e] ; i++ )45. html += "<td>&nbsp;";46. for( var i = at[e]; i < bs[e] ; i++ )47. html += "<td style='background-color:#FFA500'>w";48. for( var i = bs[e]; i < es[e] ; i++ )49. html += "<td style='background-color:#98FB98'>s";50. for( var i = es[e]; i < es[N-1]; i++ )51. html += "<td>&nbsp;";52. }53. html += "</table><br><br><br>";54. html += "<br><table border='1' cellpadding='0' cellspacing='0'>";55. html += "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";56. for( var e = 0; e < N; e++ ){57. html += "<tr>";58. html += "<td>" + e;59. html += "<td>" + iat[e];60. html += "<td>" + st [e];61. html += "<td>" + at [e];62. html += "<td>" + bs [e];63. html += "<td>" + es [e];64. html += "<td>" + nq [e];65. }66. html += "</table><br>";67. return html;68. }69. }70.71. function nqTeste(){72. var N = 15, l = 1, m = 2;73. var Nq = new clNq(l,m);74. Nq.Start();75. for( var e = 1; e < N; e++ )76. Nq.Event(e);77. Nq.Calculate();78. document.write( Nq.Html());79. }80. </script>

Modelagem e Simulação Discreta 80

81. </head>82. <body onLoad="nqTeste()">83. <input type="button" value=">>>" onclick="nqTeste()" />84. </body></html>

A Figura 23 apresenta o software Nq.html sendo executado. Nesta fgura,as linhas representam os eventos e as colunas o tempo, as letras s e wrepresentam eventos na Fila e no Servidor do sistema, respectivamente.

Figura 23 - Tabelas com os dados calculados pelo software Nq.html para N= 15, l = 1, m = 2

e\t 01 02 03 04 05 06 07 08 09 101112 13 14 15 16 17 18 19 20 21 22 23 24 25 26 270 s s1 w s s s s2 w w s s3 w w s s4 w w w s5 w w w s6 w w w s s7 w w w w s s8 w w w w w s s s9 w w w w w w s s s

10 w w w w w s s s s

e iat st at bs es nq w s r0 1 2 1 1 3 0 0 2 21 1 4 2 3 7 1 1 4 52 3 2 5 7 9 1 2 2 43 2 2 7 9 11 1 2 2 44 1 1 8 11 12 2 3 1 45 1 1 9 12 13 2 3 1 46 1 2 10 13 15 3 3 2 57 1 2 11 15 17 3 4 2 68 1 3 12 17 20 3 5 3 89 2 3 14 20 23 3 6 3 9

10 4 4 18 23 27 2 5 4 9

Na fgura acima a linhas são eventos (e) e a colunas são unidades detempo (ut). Colunas brancas (vazias) a esquerda referem-se aos valoresque a tarefa demorou para chegar na Fila. O primeiro quadrado colorido dacoluna (verde ou laranja) refere-se ao valor de at; por exemplo at[0] = 3ut e at[4] = 9 ut. O número de quadrados verdes na linha refere-se aotempo no servidor s; por exemplo s[0] = 2 ut e s[4] = 1 ut. Os quadrados

Modelagem e Simulação Discreta 81

laranja referem-se ao tempo de espera na fla w; Por exemplo w[0] = 0 ute w[4] = 3 ut.

Quando não há quadrado laranja numa linha é porque a tarefacorrespondente não espera na Fila. Por outro lado, o número de quadradoslaranjas numa linha é igual à quantidade de unidade de tempo que atarefa correspondente espera na Fila.

O valor de nq de um evento é igual ao número de quadrados laranjas nacoluna do quadrado referente a at, caso exista. Por exemplo, a tarefa e =4 chega na Fila em at[4] = 9 ut e nesta coluna tem 2 quadrados laranja,logo nq[4] = 2.

Modelagem e Simulação Discreta 82

3 SELEÇÃO DE DISTRIBUIÇÕES DE PROBABILIDADE

A estrutura conceitual para a modelagem e análise estatística de umsistema é esboçado na Figura 24. O ponto de partida de um problema é omundo real e um conjunto correspondente de dados do problema, aamostra. O segundo passo consiste em encontrar um modelo matemáticoestocástico ou probabilístico para os dados. Este modelo deve conter oque se sabe sobre o mundo real. O modelo permite realizar cálculos eanálises que levam a conclusões sobre a amostra. Finalmente, asconclusões sobre o modelo são convertidas para conclusões sobre omundo real. Desta forma, a partir da amostra pode-se fazer afrmaçõessobre o mundo real fazendo-se uso de modelos.

Figura 24 - Modelagem e análise matemática (Kroese & Chan, 2014).

A Estatística usa a teoria da probabilidade e outros ramos da matemáticapara estudar dados amostrais. Em particular, os dados são vistos comoaplicações de variáveis aleatórias cuja distribuição conjunta é previamenteespecifcada. A partir daí, a análise matemática atua puramente sobre omodelo e seus parâmetros (Kroese & Chan, 2014).

A noção de probabilidade é a de um experimento aleatório cujo resultadonão pode ser previamente determinado mas que pode ser analisado. Oobjetivo da probabilidade é entender o comportamento de experimentosaleatórios através da análise matemática. Dado um modelo matemático

Modelagem e Simulação Discreta 83

para um experimento aleatório, pode-se calcular as quantidades deinteresse, como probabilidades e valores esperados. Além disso, essesmodelos matemáticos podem ser implementados em computador, assimtorna-se possível simular experimentos (Kroese & Chan, 2014).

Para identifcar uma distribuição de probabilidade que represente ocomportamento de uma variável aleatória é necessário uma amostra emétodos estatísticos que proporcionem a ligação entre modelosmatemáticos estocásticos e o mundo real.

Teste de aderência são métodos estatísticos que permitem avaliar o ajustede uma distribuição de probabilidades aos dados de uma variávelaleatória, o que permite descrever seu comportamento.

A Figura 25 ilustra o processo de gerar dados representativos parasimulação a partir de amostras de dados de um sistema computacional.

Figura 25 - Processo de gerar dados para simulação a partir de amostrasde dados de um sistema computacional.

Modelagem e Simulação Discreta 84

A Tabela 18 descreve as cinco etapas necessárias para se obter umadistribuição de probabilidades capaz de representar o comportamentouma variável aleatória (Jain, 1991).

Tabela 18 - Etapas para a aplicação de testes de aderência, adaptada deJain (1991).

1. Processo de amostragem

1. a amostragem é um conjunto de dadosmedidos que represente o comportamento dosistema

2. amostras representativas permitem queresultados obtidos por meio delas sejamestendidos à população, isto é, podem sergeneralizados

3. resultados obtidos através de amostras nãorepresentativas do comportamento do sistemanão podem ser generalizados

2. Tratamento dos dados

4. valores extremos da amostra devem seridentifcados e eliminados

5. deve-se agrupar os valores amostrados emclasses

6. gráfcos de valores amostrados permitemavaliação visual dos mesmos

7. gráfco box-plot dos valores amostradoscomplementam a avaliação visual dos mesmos

3. Identificação da distribuição estatística

8. uma ou mais distribuições de probabilidade quese adequem aos dados amostrados devem seridentifcadas, gráfcos permitem fazê-la demodo rápido e com bastante precisão

4. Estimação dos parâmetros da distribuição identificada

9. os parâmetros da distribuição ou distribuiçõesde probabilidades identifcadas devem serobtidos a partir dos dados amostrados

5. Testes de aderência10. deve-se testar o ajuste dos dados amostrados à

distribuição ou distribuições de probabilidadesidentifcadas por meio de testes de aderência

A simulação computacional de Sistemas de Fila requer duas amostras. Aprimeira amostra se refere ao processo de chegada de tarefas na Fila dosistema, os dados amostrados são intervalos de tempo entre chegadas detarefas. A segunda amostra diz respeito ao processamento das tarefaspelo Servidor do sistema, os dados amostrados são tempos de serviço.Para cada uma destas amostras deve-se ajustar uma distribuição deprobabilidade e ambas são utilizadas para representar o comportamentodo sistema.

Modelagem e Simulação Discreta 85

A partir de pouco dados medidos pode-se estimar uma fdp docomportamento e variáveis do sistema e, a partir desta fdp, pode-segerar novos dados destas variáveis, quantos forem necessários,representativos do sistema.

A obtenção de dados experimentais pode ter custo elevado e estametodologia estatística permite fazer mais com menos: gerar muitosdados do sistema computacional a partir de poucos dados medidos erepresentativos.

Com poucos dados não se pode fazer simulação confável. Este processoviabiliza a simulação ao permitir gerar incontáveis dados que, emborasejam gerados por modelos matemáticos, representam o comportamentodo sistema e levam a conclusões válidas do mundo real.

3.1 INDEPENDÊNCIA DE OBSERVAÇÕES

Qualquer estado de um Processo de Markov é independente dos seusestados passados e, sendo assim, as amostras de um Processo de Markovdevem ser independentes.

A autocorrelação é uma estatística que informa o quanto o valor de umavariável aleatória é capaz de infuenciar seus vizinhos à distância k, k > 1.Os valores que a autocorrelação podem assumir variam de -1 a 1, aausência de correlação é indicada por 0, ou seja, as observações daamostra são independentes.

Uma variável aleatória Xi discreta, com média da população μ = E(X) evariância σ2 = E[(X-μ)2], tem autocorrelação ρ(k) defnida por:

Modelagem e Simulação Discreta 86

ρ(k )=E[(X i−μ)(X i+k−μ)]

σ 23.1

ρ(k )= 1(n−k )σ2∑

i=1

n−k

(X i−μ)(X i+ k−μ)= nn−k

∑i=1

n−k

(X i−μ)(X i+k−μ)

∑i=1

n

(X i−μ)2

3.2

Exemplo 3.1: Calcule ρ(1) e ρ(2) dos dados referente a ciclos de leitura de 5 unidades dememória: x = {37,0 54,2 55,1 28,1 24,0}.

n = 5

Cálculo da média amostral m: m = (37,0+54,2+55,1+28,1+24,0)/5 = 198,4/5 = 39,7

Cálculo da variância da amostra s2: s2 = [(37,0-39,7)2+(54,2-39,7)2+(55,1-39,7)2+(28,1-39,7)2+(24,0-39,7)2]/(5-1) = 835,7/4 = 208,9

Cálculo de ρ(1) = [(37,0-39,7)x(54,2-39,7) + (54,2-39,7)x(55,1-39,7) + (55,1-39,7)x(28,1-39,7) + (28,1-39,7)x(24,0-39,7)]/(5-1)/208,9 = (188,0/4)/208,9 = 47,0/208,9= 0,225.

Este valor indica que os dados estão pouco correlacionados.

Cálculo de ρ(2) = [(37,0-39,7)x(55,1-39,7) + (54,2-39,7)x(28,1-39,7) + (55,1-39,7)x(24,0-39,7)]/3/208,9 = (-451,3/3)/208,9 = -150,4/208,9 = -0,72.

Memória de cálculo:i xi xi-m (xi-m)x(xi+1-m) (xi-m)x(xi+2-m)1 37,0 37,0-39,7 (37,0-39,7)x(54,2-39,7) = -2,7 (37,0-39,7)x(55,1-39,7) = -41,32 54,2 54,2-39,7 (54,2-39,7)x(55,1-39,7) = 14,5 (54,2-39,7)x(28,1-39,7) = -168,13 55,1 55,1-39,7 (55,1-39,7)x(28,1-39,7) = 15,4 (55,1-39,7)x(24,0-39,7) = -241,84 28,1 28,1-39,7 (28,1-39,7)x(24,0-39,7) = -11,65 24,0 24,0-39,7∑ 198,4 15,7 -451,3m39,7s 14,5

Uma forma de avaliar visualmente a independência dos dados de umaamostra é o gráfco de dispersão, que é feito pelos pares ordenados(Xi,Xi+k) em um plano cartesiano. Quando eles são independentes estãodispersos aleatoriamente, caso contrário estão próximos de uma reta.

Exemplo 3.2: Faça o gráfco de dispersão dos pares ordenados (xi,xi+1) em um planocartesiano para x = {37,0 54,2 55,1 28,1 24,0}.

Modelagem e Simulação Discreta 87

Figura 26 - Gráfcos de dispersão dos pontos (xi,xi+1) do Exemplo 3.2.

3.2 DISTRIBUIÇÕES DE PROBABILIDADE ÚTEIS

As funções densidade de probabilidade (fdp) são inúmeras e bemdiversifcadas embora relacionadas. Leemis (2015) e Zwillinger & Kokoska(2000) apresentam fguras ilustrando a relação entres as diversas fdp. AFigura 27 ilustra o relacionamento entres funções densidade deprobabilidade, adaptado de Zwillinger & Kokoska (2000).

Modelagem e Simulação Discreta 88

Figura 27 - Relacionamento entres as funções densidade de probabilidade,adaptado de Zwillinger & Kokoska (2000).

A Tabela 19 apresenta as funções densidade de probabilidade maisrelevantes para simulação.

Tabela 19 - Funções densidade de probabilidade mais relevantes com seusparâmetros, média e variância (Forbes et al., 2011)

fdp FDP f(x) Parâmetros E(x) V(x)

Betaxa−1(1−x)b−1

B(a ,b), x∈[0,1] a > 0

b > 0aa+b

ab

(a+b)2(a+b+1)

Modelagem e Simulação Discreta 89

Erlang-mλm xm−1 e−λ x

(m−1)!, x≥0 λ > 0 m

λm

λ2

Exponencial ae−ax , x>0 a > 01a

1

a2

Gamma xa−1 e− xb

baΓ(a), x>0

a > 0b > 0 ab ab2

Normal 1σ√2 π

e−( x−μ)2

2σ 2

, x∈ℝμ ∊ (-∞,∞)σ > 0 μ σ2

Poissonλxe−λ

x !, x≥0 λ > 0 λ λ

Uniforme1

b−a, x∈[a ,b] a < b

a+b2

(b−a)2

12

Weibull bxb−1 e−( xa)b

ab, x≥0

a > 0b > 0 aΓ( b+1

b) a2[Γ ( b+2

b)−Γ2( b+1

b)]

em que Γ(a)=∫0

xa−1 e−xdx e B (a ,b)=Γ(a)Γ(b)Γ (a+b)

.

Em Processos de Markov os eventos passados não infuem nos eventospresentes, ou seja, para s e t > 0 então P( X > s+t | X > s ) = P( X > t ),usualmente denominados processos sem memória.

A distribuição Exponencial, f(x) = λe-λx, é sem memória (Kroese & Chan,2014).

Demonstração:P(X > s+t | X > s) = P(X > s+t, X > s)/P(X > s) = P(X > s+t)/P(X > s) = = e-λ(s+t)/e-λs = e-λt = P( X > t ) c.q.d.

A função densidade acumulada (FDA) F(x) = P(X ≤ x ) = ∫0

x

f (x)dx = 1-e-λx

∴ P(X > x ) = 1-P(X ≤ x ) = e-λx

3.3 ESTIMAÇÃO DE PARÂMETROS

Modelagem e Simulação Discreta 90

O método de máxima verossimilhança, assim como o método de mínimosquadrados, permitem a estimação dos parâmetros de modelosmatemáticos. O grande obstáculo para sua utilização consiste nafrequente incapacidade de se obter uma solução explícita para osproblemas em questão.

3.3.1 MÉTODO DA MÁXIMA VEROSSIMILHANÇA

Uma amostra aleatória (X1, X2, ..., Xn) retirada de uma população com umafunção de densidade de probabilidade f(x,θ), em que θ é um vetor deparâmetros, tem uma função densidade de probabilidade conjunta, afunção de verossimilhança L(x,θ), defnida pelo produto das funçõesdensidade de cada uma das observações.

L(x ,θ)=∏i=1

n

f (x i ,θ) 3.3

O problema consiste em obter o vetor θ que maximiza L(x,θ), o que é feitoigualando a zero as derivadas parciais da função de verossimilhança emrelação ao vetor θ

∂L(x ,θ)∂θ =

∂∏i=1

n

f ( xi ,θ)

∂ θ =03.4

Na maioria dos casos é recomendável utilizar logaritmo natural da funçãode verossimilhança (lnL), pois maximizar o logaritmo natural de umafunção é, em geral mais simples, e produz os mesmos resultados damaximização da função original.

∂ ln L(x ,θ)∂θ =

∂ ln∏i=1

n

f (x i ,θ)

∂θ =03.5

Exemplo 3.3: Seja determinar o parâmetro β da fdp Exponencial pelo método da MáximaVerossimilhança a partir de uma amostra aleatória (X1, X2, ..., Xn).

∂L(x ,θ)∂θ =0

f (x ,β)=1β e

− xβ e θ={β}

Modelagem e Simulação Discreta 91

L(x ,β)=∏i=1

n1β e

−X i

β

L(x ,β)=1

βn(e

−X 1

β +e−X 2

β +⋯+e−X n

β )=1

βne−1β (X 1+X 2+⋯+X n)

=1

βne−1β∑

i=1

n

X i

ln L(x ,β)=ln(1

βne−1β∑

i=1

n

Xi)=ln(

1

βn)+ln (e

−1β∑

i=1

n

Xi)=−ln (βn)−

1β∑

i=1

n

X i=−n ln(β)−1β∑i=1

n

X i

∂ ln L(x ,β)∂β =

∂[−n ln(β)−1β∑

i=1

n

X i]

∂β =−n∂ ln(β)∂β −∑

i=1

n

X i

∂1β

∂β =1β2∑

i=1

n

X i−nβ=0

1β2∑

i=1

n

X i=nβ⇔β=1

n∑i=1

n

X i

3.3.2 MÉTODO DOS MÍNIMOS QUADRADOS

O método de estimação por mínimos quadrados (MMQ) permite estimar osvalores dos parâmetros de uma função a partir de dados observados queminimiza o quadrado do somatório dos erros entre valores observados eestimados.

Uma amostra aleatória (fo1, fo2, ..., fon) com função densidade deprobabilidade fe(x,θ), em que θ é um vetor de m parâmetros pk, k ∈ [1,m],tem uma função de densidade de probabilidade dada por fo i=fe(xi,θ)+εi, i∈ [1,n].

O erro (ε) entre valores observado e estimado é dado pela Equação 3.6 e asomatória do quadrado dos erros (E) é expresso pela Equação 3.7.

e i=fo(x i)−f (xi ,θ) 3.6

E=∑i=1

n

ei2=∑

i=1

n

[ fo(x i)−f (x i ,θ)]2 3.7

Como E possui mínimo, a solução do sistema de m equações ∂E/∂pk = 0permite calcular o valor do vetor θ que minimiza E. A solução geral é dadapela Equação 3.8.

Modelagem e Simulação Discreta 92

∂E∂θ =

∂∑i=1

n

ei2

∂θ =∂∑i=1

n

[ fo (xi)−f (x i ,θ)]2

∂θ =−∑i=1

n

{[ fo(x i)−f (x i ,θ)]∂ f (xi ,θ)

∂ θ }=03.8

Conhecidos os valores observados fo(xi) nos pontos xi, i ∈ [1,n], pode-sesubstituir estes valores na Equação 3.8 e calcular θ.

Exemplo 3.4: Seja determinar o parâmetro β da fdp Exponencial pelo método dosMínimos Quadrados a partir de uma amostra aleatória (X1, X2, ..., Xn).

f (x ,β)=1β e

− xβ e θ={β}

∂∑i=1

n

εi2

∂θ =0

∂∑i=1

n

(X i−1β e

−X i

β )2

∂β =∑i=1

n ∂(X i−1β e

−X i

β )2

∂β =2∑i=1

n

(X i−1β e

−X i

β )∂(X i−

1β e

−X i

β )

∂β =⋯

⋯=2∑i=1

n

(X i−1β e

−Xiβ )(

1

β2 e−X i

β −X i

β3 e−Xiβ )=2∑

i=1

n

(X i−1β e

−Xiβ )

1

β2 e−Xiβ (1−

X i

β )=0

∑i=1

n

e−Xiβ (X i−

1β e

−Xiβ )(1−

X i

β )=0 não tem solução analítica, o valor de β por ser obtido

por métodos numéricos.

Exemplo 3.5: Seja determinar o parâmetro p da fdp Poisson pelo método dos MínimosQuadrados a partir de uma amostra aleatória (X1, X2, ..., Xn).

f (x ,λ)=λxe−λ

x !,θ={λ}

∂∑i=1

n

εi2

∂θ =0

∂∑i=1

n

(X i−λX i e−λ

X i!)

2

∂λ =∑i=1

n ∂(X i−λXi e−λ

X i !)

2

∂λ =2∑i=1

n

(X i−λXi e−λ

X i !)∂(X i−

λXi e−λ

X i !)

∂ λ =0

∑i=1

n

(X i−λ Xi e−λ

X i!) 1X i !

(λ Xi e−λ−λX i−1X ie−λ)=0 , neste caso o valor de λ por ser obtido

por métodos numéricos.

Modelagem e Simulação Discreta 93

3.4 ESTIMATIVA DOS PARÂMETROS DAS FDP

As estimativas dos parâmetros de uma distribuição de probabilidade, porvezes, não é de obtenção imediata. Os parâmetros das distribuiçõesExponencial, Normal e Poisson, dentre aquelas listadas na Tabela 19, sãocalculados a partir da média e desvio padrão da amostra.

A fdp Exponencial pode ser defnida como f (x)= 1ae− xa ou como

f (x)=be−bx , com parâmetros a=E[ x ] e b= 1E [x ]

, respectivamente,

Tabela 20.

Tabela 20 - Defnições da fdp Exponencial e seus parâmetros

fdp parâmetro

f (x)= 1ae− xa a=E[ x ]=1

n∑xi

f (x)=be−bx b= 1E [x ]

= n

∑x i

O cálculo dos parâmetros das fdp Beta, Gamma e Weibull são ilustradosabaixo.

3.4.1 ESTIMATIVA DOS PARÂMETROS DA FDP BETA

Segundo Leite e Virgens Filho (2011), os parâmetros p e q da distribuição

Beta f (x)= 1b−a

Γ( p+q)Γ ( p)Γ(q)

( x−ab−a

)p−1

(1− x−ab−a

)q−1

, para X = { x1, x2, ..., xn}, são

estimados pelos procedimentos e equações:

1. calcular V ={ v1, v2, ..., vn } sendo v i=x i−ab−a

em que a = min{X} e b = max{X}

2. calcular m1=1n∑i=1

n

vi

3. calcular m2=1n∑i=1

n

vi2

4. calcular p=m1

m1−m2

m2−m12

Modelagem e Simulação Discreta 94

5. calcular q=p1−m1

m1

Desta forma, a distribuição Beta é adimensionalizada para o intervalo [0,1], resultando na

nova função f (v )=Γ( p+q)Γ( p)Γ(q)

v p−1(1−v )q−1=v p−1(1−v )q−1

B ( p ,q)de parâmetros p e q.

Os cálculos dos testes CQ e KS devem utilizar o vetor V.

Exemplo 3.6: Calcular os parâmetros da fdp Beta para a amostra X: { 6,91 1,61 4,99 9,119,03 9,71 0,05 5,98 5,20 9,83 }

Os dados serão ordenados como se segue.i 1 2 3 4 5 6 7 8 9 10 m1 m2

xi 0,05 1,61 4,99 5,2 5,98 6,91 9,03 9,11 9,71 9,83vi 0,000 0,159 0,503 0,524 0,603 0,698 0,914 0,922 0,983 0,995 0,630vi

2 0,000 0,025 0,253 0,274 0,364 0,487 0,835 0,849 0,966 0,990 0,504

a = 0,05

b = 9,83

p = 0,630*(0,630-0,504)/(0,504-0,630*0,630) = 0,736

q = (1-0,630)*0,736/0,630 = 0,433

Logo os parâmetros da fdb Beta são p = 0,736 e q = 0,433.

3.4.2 ESTIMATIVA DOS PARÂMETROS DA FDP GAMMA

Se X = { x1, x2, ..., xn } formam um conjunto de n valores, as estimativas

dos parâmetros da distribuição Gamma f (x)=xa−1 e

− xb

baΓ(a)são feitas pelas

equações (Thom, 1958; Catalunha et al., 2012):

a=1+√1+ 4 A

34 A

, b=xma

, A=ln(xm)−1n∑i=1

n

ln(xi) e xm=1n∑i=1

n

x i .

Exemplo 3.7: Calcular os parâmetros da fdp Gamma para a amostra X: { 6,91 1,61 4,999,11 9,03 9,71 0,05 5,98 5,20 9,83 }i 1 2 3 4 5 6 7 8 9 10 ∑ xm

xi 0,05 1,61 4,99 5,2 5,98 6,91 9,03 9,11 9,71 9,83 62,42 6,242ln(xi) -2,996 0,476 1,607 1,649 1,788 1,933 2,201 2,209 2,273 2,285 13,425

n = 10

xm = (6,91 + 1,61 + 4,99 + 9,11 + 9,03 + 9,71 + 0,05 + 5,98 + 5,20 + 9,83)/10 = 6,24

∑ln(x) = ln(6,91) + ln(1,61) + ln(4,99) + ln(9,11) + ln(9,03) + ln(9,71) + ln(0,05) +ln(5,98) + ln(5,20) + ln(9,83) = 13,43

A = ln(6,24) - 13,43/10 = 0,489

Modelagem e Simulação Discreta 95

a = [1+(1+4x0,489/3)1/2]/(4x0,489) = [1+(1+0,651)1/2]/1,956 = (1+1,28)/1,956 = 1,17

b = 6,24/1,17 = 5,34

Logo os parâmetros da fdb Gamma são a =1,17 e b = 5,34.

3.4.3 ESTIMATIVA DOS PARÂMETROS DA FDP WEIBULL

Segundo Hirata(2004), a estimativa dos parâmetros da distribuição de

Weibull f (x)=b xb−1 e

−( xa)b

abpara X = { x1, x2, ..., xn}, um conjunto n valores,

são feitas pelas equações:

b=( sm)−1,086

e a= m

Γ(1+1b)

em que m e s são a média aritmética e o desvio

padrão de X, respectivamente.

Exemplo 3.8: Calcular os parâmetros da fdp Weibull para a amostra X: { 6,91 1,61 4,999,11 9,03 9,71 0,05 5,98 5,20 9,83 }

i 1 2 3 4 5 6 7 8 9 10 ∑ m sxi 0,05 1,61 4,99 5,2 5,98 6,91 9,03 9,11 9,71 9,83 62,42 6,242 3,397b = (s/m)-1,086 = (3,397/6,242)-1,086 = (0,544)-1,086 = 1,936

a = m/Γ(1+1/b) = 6,242/Γ(1+1/1,936) = 6,242/Γ(1,516) = 6,242/0,887 = 7,038

Logo os parâmetros da fdb Weibull são a = 7,038 e b = 1,936.

3.5 IDENTIFICAÇÃO DA DISTRIBUIÇÃO ESTATÍSTICA

Para fns de simulação é necessário identifcar a distribuição deprobabilidade Fe que melhor represente o comportamento do sistema.Para quantifcar o grau de associação de uma amostra de variáveisaleatórias X = (X1, X2, ..., Xn) à distribuição Fe é utilizado testes deaderência.

Testes de aderência fazem uso do teste de hipótese de ajuste àdistribuição:

Modelagem e Simulação Discreta 96

• Hipótese H0: X são observações da distribuição Fe• Hipótese Ha: X não são observações da distribuição Fe

Etapas de um teste de hipóteses2:

1. formular o modelo estatístico para os dados2. defnir as hipóteses3. defnir uma margem de erro ()) em geral, adota-se ) = 5%4. selecionar a estatística de teste5. calcular a estatística de teste1. calcular a probabilidade limite (p-value)2. decidir o teste: aceitar ou rejeitar H0 a partir do p-value

Vantagens:

• é uma forma automática de identifcar diferenças grosseiras entre distribuições teórica e observada, diferenças não provocadas pela futuação dos dados

• não depende do julgamento do avaliador

Desvantagens:

• quando se tem poucos dados, o teste é pouco sensível (deixa de perceber diferenças, aceitando distribuições com ajuste ruim)

• quando se tem muitos dados, as chances de se rejeitar todas as distribuições teóricas aumentam

• o teste de hipótese permite fxar a confança 1-) em rejeitar uma distribuição, masnada afrma quanto a confança em aceitá-la

Dentre as principais estatísticas de teste de aderência, destacam-se o deChi-Quadrado e o de Kolmogorov-Smirnov.

3.5.1 TESTE CHI-QUADRADO (CQ)

O teste CQ é usado para testar se uma distribuição de frequênciaobservada se ajusta a uma distribuição específca, como a normal,exponencial ou outra qualquer. Ou seja, este teste permite determinar sedados observados atendem a uma determinada distribuição deprobabilidade de p parâmetros. Sua aplicação consiste em:

• preparar um histograma com k classes para a obtenção da frequência de ocorrência observada Oi em cada intervalo i = 1, ..., k

• determinar a frequência de ocorrências esperadas Ei para cada intervalo i obtida a partir da distribuição que está sendo testada

2Veja no apêndice notas sobre teste de hipóteses.

Modelagem e Simulação Discreta 97

• calcular a estatística D=∑i=1

k (Oi−Ei)2

Eique tem distribuição χ2 com k-1-p graus

de liberdade• se D < χ2(1-);k-1-p) não se pode rejeitar a hipótese H0 ao nível de signifcância ),

caso contrário rejeita-se a hipótese H0.

A distribuição χ2 permite obter o valor de χ2(1-),gl) com signifcância ) e glgraus de liberdade.

O teste CQ:

• funciona melhor se os intervalos do histograma são escolhidos de tal forma que osvalores de Ei sejam iguais

• uma solução aproximada é agrupar um intervalo com Ei pequeno com algum intervalo vizinho

• no caso da distribuição uniforme, basta utilizar um histograma com intervalos de mesmo tamanho

A probabilidade limite do teste CQ é o termo técnico p-value = ) ecorresponde ao valor χ2

crítico = χ2(1-);k-1-p).

Na Figura 28 a região hachurada em vermelho indica a probabilidade dese rejeitar a hipótese H0 ao nível de signifcância ), isto é, D ≥ χ2

crítico. Emcinza, é a região de probabilidade em que não se pode rejeitar a hipóteseH0 ao nível de signifcância ), ou seja, D < χ2

crítico.

Figura 28 - Regiões de probabilidade de aceitação (cinza) ou rejeição(vermelho) da hipótese H0 ao nível de signifcância ) para o teste CQ.

Passo a passo do teste CQ:

1. Dada uma amostra X={x i}i=1n

2. Classifcar os dados da amostra X em k classes, Oi, i ∈ [1,k]3. Calcula-se os parâmetros da amostra7. Calcula-se pi, i ∈ [1,k], a partir da fdp desejada (pode requer integração numérica)8. Calcula-se Ei, i ∈ [1,k]9. Calcula-se D

Modelagem e Simulação Discreta 98

10. Obtém-se o valor de χ2crítico para p-value a partir do Anexo e decide-se o teste

A frequência da classe i (fi), pode ser calculada pelo produto do númerode observações (n = ∑ni) pela probabilidade de ocorrência de cada classe(fi = n × pi), i ∈ [1,k]. Para calcular o valor de pi basta integrar a fdpdesejada considerando os limites da classe.

Exemplo 3.9: Deseja-se verifcar se o número de falhas (NF) de um sistema mudaconforme o dia da semana. O número de falhas (NF) observadas para cada dia de umasemana escolhida aleatoriamente foram:

Dia da Semana NF Observadas (Oi)segunda-feira 35terça-feira 20quarta-feira 30quinta-feira 15sexta-feira 10sabado 10domingo 20

Hipóteses a serem testadas:

• H0: o número de falhas não muda conforme o dia da semana• Ha: pelo menos um dos dias da semana tem número de falhas diferente dos

demais

Se pi representa a probabilidade de ocorrência de falhas no i-ésimo dia da semana:

• H0: pi = 1/7, ∀i ∊ {1, 2, …, 7}• Ha: pi ≠ 1/7 para algum valor de i

Total de falhas na semana: n = 140, Logo, se H0 for verdadeira, Ei = 140 × 1/7 = 20

Dia da Semana NF Observadas (Oi) NF Esperadas (Ei)segunda-feira 35 20terça-feira 20 20quarta-feira 30 20quinta-feira 15 20sexta-feira 10 20sábado 10 20domingo 20 20

Cálculo de D = (35-20)2/20 +(20-20)2/20 + ... + (20-20)2/20 = 27,5

Regra de decisão: se, para ) fxado obtemos D > χ2(1-);gl), rejeita-se a hipótese H0,caso contrário aceita-se a hipótese H0.

No caso da distribuição uniforme entre 0 e 1 nenhum parâmetro precisa ser estimado, p

Modelagem e Simulação Discreta 99

= 0

Da tabela do Anexo: χ2(0,95;6) = 12,59.

Neste caso, χ2(0,95;6) = 12,59 e D > χ2(0,95;6), isto é, 27,5 > 12,59.

Rejeita-se H0 e conclui-se que, pelo menos, um dos dias tem número de falhas diferentedos demais.

Conclusão: Pelo menos um dos valores medidos do tempo entre falhas do sistema diferedos demais segundo o Teste de CQ com 95% de confança.

3.5.2 TESTE DE KOMOLGOROV-SMIRNOV (KS)

O teste de KS permite determinar se dados observados atendem a umadeterminada distribuição de probabilidade e independe do número deparâmetros da mesma. Dadas uma amostra aleatória X = (X1, X2, ..., Xn) eas funções densidade de probabilidade fo(observada) e fe(esperada,teórica). A estatística de Kolmogorov-Smirnov (Dn) é baseada na maiordiferença entre os valores das funções distribuição de probabilidadeacumulada Fo e Fe, em que a função distribuição de probabilidadeacumulada Fo(xi) é o percentual de observações com valor menor ou iguala xi. Se Dn > KS(1-);n) rejeita-se a hipótese H0 ao nível de signifcância ).

A estatística Dn = max{ D+; D- }

em que: D+= sup| Fo(xi)-Fe(xi) | e D-= sup| Fo(xi)-Fe(xi-1) |

Hipóteses:

• H0: Fo(x) = Fe(x) para todo valor de x• Ha: Fo(x) ≠ Fe(x) para, pelo menos, um valor de x

Estatística de teste: Dn

Regra de decisão: Rejeita H0 se a estatística de teste Dn é maior do queo quantil 1-) do teste de Kolmogorov-Sminorv, Dn > KS(n,1-)), veja atabela no Anexo.

Passo a passo do teste de Kolmogorov-Sminorv:

1. Dada uma amostra X={x i}i=1n

2. Ordena-se os dados X em ordem crescente3. Calcula-se S = ∑xi,

Modelagem e Simulação Discreta 100

4. Calcula-se fo(xi) = xi/S5. Calcula-se Fo como os valores acumulados de fo6. Calcula-se os parâmetros da fdp com os dados da amostra7. Calcula-se Fe(xi) a partir da FDA desejada (pode requer integração numérica)8. Calcula-se D+e D-, observe que o primeiro valor de D- é o valor do primeiro Fo9. Calcula-se Dn10. Obtém-se o valor KS(1-);n) a partir do Anexo e decide-se o teste

Exemplo 3.10: Deseja-se verifcar a normalidade dos dados abaixo referentes a mediçãodo tempo entre falhas de um sistema, em anos:

{ 1,90642, 2,10288, 1,52229, 2,61826, 1,42738, 2,22488, 1,69742, 3,15435, 1,98492,1,99568 }

Ordena-se os dados, calcula-se S = ∑xi, calcula-se fo(xi) = xi/S. Fo são os valoresacumulados de fo. Calcula-se a média (m) e o desvio padrão amostral (s) e utiliza-os paracalcular Fe(xi) com a FDA Normal N(m,s), requer integração numérica. Calcula-se D+e D-,observe que o primeiro valor de D- é o valor do primeiro Fo.

i x fo Fo Fe D+ D-

1 1.42738 0,06917 0,06917 0,10847 0,03930 0,069172 1.52229 0,07377 0,14295 0,14667 0,00372 0,034483 1.69742 0,08226 0,22521 0,23849 0,01328 0,078544 1.90642 0,09239 0,31760 0,38008 0,06248 0,079115 1.98492 0,09619 0,41379 0,43933 0,02553 0,033716 1.99568 0,09672 0,51051 0,44759 0,06292 0,071187 2.10288 0,10191 0,61242 0,53056 0,08186 0,164838 2.22488 0,10782 0,72024 0,62321 0,09704 0,189699 2.61826 0,12689 0,84713 0,85945 0,01231 0,2239310 3.15435 0,15287 1.00000 0,98266 0,01734 0,14055

n = 10

) = 5%

1-) = 95%

m = 2,06345

s = 0,51557

D+ = 0,09704

D- = 0,22393

Dn = max{ D+; D- } = max{0,097; 0,224 } = 0,224

Da tabela do Anexo: K(0,95;10)= 0,409.

Dn < K(0,95;10), ou seja, 0,224 < 0,409.

Aceita-se H0: o tempo entre falhas do sistema tem fdp Normal.

Conclusão: Os valores medidos do tempo entre falhas do sistema estão distribuídosconforme a distribuição normal segundo o Teste de KS com 95% de confança.

Exemplo 3.11: Deseja-se verifcar se o número de falhas de um sistema muda conforme odia da semana. O número de falhas (NF) observadas para cada dia de uma semanaescolhida aleatoriamente foram:

Dia da Semana Oi Ei fo(x) fe(x) Fo(x) Fe(x) D+ D-

segunda-feira 35 20 0,250 0,143 0,250 0,143 0,107 0,250

Modelagem e Simulação Discreta 101

terça-feira 20 20 0,143 0,143 0,393 0,286 0,107 0,250quarta-feira 30 20 0,214 0,143 0,607 0,429 0,178 0,321quinta-feira 15 20 0,107 0,143 0,714 0,571 0,142 0,285sexta-feira 10 20 0,071 0,143 0,786 0,714 0,070 0,213sabado 10 20 0,071 0,143 0,857 0,857 0,002 0,141domingo 20 20 0,143 0,143 1,000 1,000 0,002 0,141Soma 140 140Supremo 0,178 0,321

n = 7

) = 5%

1-) = 95%

D+ = 0,178

D- = 0,312

KS(0,95;7) = 0,483

Dn = max{ D+, D- } = max{0,178; 0,312 } = 0,312 < K(0,95;7).

Aceita-se H0: o número de falhas não muda conforme o dia da semana.

Conclusão: Os valores medidos do número de falhas não muda conforme o dia dasemana segundo o Teste de KS com 95% de confança.

3.5.3 COMPARAÇÃO ENTRE OS TESTES CQ E KS

• o teste CQ é mais apropriado para distribuições discretas e amostras grandes• o teste KS foi projetado para distribuições contínuas e amostras pequenas• o teste KS compara as distribuições acumuladas (teórica e observada), enquanto o

teste CQ compara as densidades de probabilidades• o teste CQ faz agrupamento de observações• o teste KS não faz agrupamento de observações, neste sentido ele faz melhor uso

dos dados• a escolha dos tamanhos dos intervalos é um problema do teste CQ pois pode

afetar o resultado e o método não defne regras para quantifcá-los• o teste CQ é aproximado• o teste KS é exato

3.5.4 TESTES CQ E KS PARA FDP BETA

Os testes de CQ e KS para aderência de amostras à função Beta devemser feitos com os dados adimensionalizados para o intervalo [0,1].

3.6 MODELOS PARA PROCESSOS DE CHEGADA

Modelagem e Simulação Discreta 102

O processo de chegadas de clientes numa fla é, em geral, estocástico.Para estudá-lo é necessário identifcar a distribuição de probabilidade dotempo entre chegadas que, em geral, é exponencial.

Processos de chegada são ditos estacionários quando a distribuição deprobabilidade que o descreve não varia com o tempo (independente dotempo), caso contrário são ditos processos não estacionários. Quando ostempos entre chegadas são identicamente distribuídos, a taxa de chegadaé igual à λ com média 1/λ.

A distribuição de Poisson é usada para encontrar a probabilidade deocorrência de eventos por unidade de intervalo. São condições para suaaplicação:

• deve existir apenas dois resultados mutuamente exclusivos {ocorre, não ocorre}• os eventos devem ser independentes• o número médio de ocorrências por unidade de intervalo deve permanecer

constante

A distribuição de Poisson, Poi(λ), é apropriada para modelar eventosdiscretos independentes e com taxa de ocorrência constante.

Um exemplo clássico é a representação do número de chegadas emSistemas de Filas. Este número tem uma distribuição de Poisson se a taxamédia de chegada não variar ao longo do tempo e se os tempos entrechegadas são exponencialmente distribuídos.

Na prática, as taxas de chegada podem variar de acordo com a hora dodia ou do ano, mas um modelo de Poisson deve ser usado para períodosque são razoavelmente homogêneos. Nesta distribuição a média e avariância são iguais e podem ser estimados pela observação dascaracterísticas da amostra.

A distribuição de Poisson é de grande importância para a Teoria de Filas epara a área de Confabilidade. Ela permite estudar um grande número defenômenos observáveis como, por exemplo, a chegada de tarefas em flas,falhas de sistemas, requisição de tarefas em servidores, falhas e, de modogeral, eventos que ocorrem por unidade de área ou de tempo.

Quando a taxa λ não varia com o tempo, a probabilidade de que haja a

ocorrência de k eventos no intervalo (0,T] é dada por f (k ,λ)=(λT )k e−λ T

k !.

Uma generalização importante desse tipo de processo é quando se

Modelagem e Simulação Discreta 103

considera que λ varia no tempo, λ(t). Nesse caso, tem-se um ProcessoPoisson não-estacionário e o número de chegadas m(T) é estimado pela

integração de λ(t) para t variando de 0 a T, m(T )=∫0

T

λ( t)dt .

3.7 GERANDO PROCESSOS DE CHEGADA

Um Processo de Poisson com parâmetro λ é aquele cujo intervalos entrechegadas tem distribuição exponencial do mesmo parâmetro λ. Seja t i oinstante no qual a i-ésima tarefa chega, o instante que a próxima tarefachega, ti+1, é dada por ti+1 = ti+Xi sendo Xi ~ Exp(λ). Esta abordagem éutilizada nos softwares deste livro.

Uma outra abordagem para gerar N chegadas de Poisson durante um dadointervalo de tempo de duração T, é usar o fato que estas N chegadas sãouniformemente distribuídas ao longo deste intervalo. Para gerar chegadasde Poisson no intervalo [0,T] faz-se:

1. gerar N números aleatórios (chegadas) de acordo com a distribuição de Poissoncom parâmetro λT

2. gerar N números aleatórios distribuídos uniformemente correspondentes aosinstantes t1, ..., tN, no intervalo [0,T]

3. ordenar os N instantes em ordem cronológica: t1 < ... < tN

3.8 TESTANDO HOMOGENEIDADE DE AMOSTRAS

Amostras de dados de um mesmo processo medidos em diferentesperíodos podem apresentar diferenças estatísticas. Por exemplo, aquantidade de serviços que chegam em um sistema pode depender dahora do dia.

O método de Kruskal-Wallis é um teste não paramétrico que pode serusado para determinar se três ou mais amostras independentes foramselecionadas de populações que possuem a mesma distribuição.

Modelagem e Simulação Discreta 104

As hipóteses nula e alternativa para o teste de Kruskal-Wallis são asseguintes:

• H0: não há diferença na função distribuição de probabilidade das amostras• Ha: há diferença na função distribuição de probabilidade das amostras

Segundo Spiegel et al. (2013), as duas condições para se usar o teste deKruskal-Wallis são que cada amostra deve ser selecionada aleatoriamentee que o tamanho de cada amostra deve ser no mínimo 5. Se essascondições são alcançadas, a distribuição de amostragem para o testeKruskal-Wallis é aproximada por uma distribuição χ2 com graus deliberdade k-1, onde k é o número de amostras. Seja xij a j-ésimaobservação da amostra i, a estatística de teste do teste de Kruskal-Wallis écalculada pela equação:

T= 12n(n+1)∑i=1

k Ri2

n i−3(n+1) 3.9

em que n=∑i=1

k

ni , Ri=∑j=1

ni

R (x ij) , ni é o número de observações da i-ésima

amostra, R(xij) é o rank da observação ij sendo i ∈ [1,k] e j ∈ [1,ni].

O teste de Kruskal-Wallis consiste em combinar e classifcar a informaçãoda amostra, as somas dos ranks de cada amostra são calculadas e usadaspara calcular a estatística T, que é uma aproximação das variâncias dassomas dos ranks. Se as amostras são selecionadas de populações quepossuem a mesma distribuição, as somas dos ranks serãoaproximadamente iguais e, se T < χ2(1-);k−1) H0 não pode ser rejeitadaao nível de confança 1-).

Exemplo 3.12: Verifque se as amostras A, B e C, referentes aos tempos de respostas deum circuito integrado, possuem a mesma distribuição de probabilidade para ) = 5%.

A B C6,5 3,4 2,67,3 4,1 6,28,5 5,1 5,19,9 5,6 5,81,8 6,0 8,89,5 8,3 9,26,9 9,4 7,39,8 6,45,5

Solução: O cálculo do Rank pode ser feito por interpolação linear:x1 1 x−xn

x1−xn=Rank−n

x1−xn⇒ Rank=(1−n)

x−xnx1−xn

+nx Rankxn n

Modelagem e Simulação Discreta 105

Para n = 24, x1= 1,8 e xn= 9,9 tem-se os valores de Rank:i,j A,B,C Rank1 1,8 12 2,6 3,33 3,4 5,54 4,1 7,55 5,1 10,46 5,1 10,47 5,5 11,58 5,6 11,89 5,8 12,410 6 12,911 6,2 13,512 6,4 14,113 6,5 14,314 6,9 15,515 7,3 16,616 7,3 16,617 8,3 19,518 8,5 2019 8,8 20,920 9,2 2221 9,4 22,622 9,5 22,923 9,8 23,724 9,9 24

j A ARank B BRank C CRank

1 6,5 14,3 3,4 3,5 2,6 3,32 7,3 16,6 4,1 7,5 6,2 13,53 8,5 20,0 5,1 10,4 5,1 10,44 9,9 24,0 5,6 11,8 5,8 12,45 1,8 1,0 6 12,9 8,8 20,96 9,5 22,9 8,3 19,3 9,2 22,97 6,9 15,5 9,4 22,6 7,3 16,68 9,8 23,7 6,4 14,19 5,5 11,5∑ 149,5 102,1 100,0

A B C ∑n 9 8 7 24R 149,5 102,1 100R2/n 2483,36 1303,05 1428,57 5214,98

T = 12*5214,98/[24(24+1)]-3(24+1) = 29,3

χ2(1-);k-1) = χ2(95%,2) = 5,99

Como T > χ2(95%,2), ou seja, 29,3 > 5,99, rejeita-se a hipótese de que as amostras

Modelagem e Simulação Discreta 106

possuem a mesma distribuição de probabilidade com 95% de confança.

Conclusão: as amostras possuem a mesma distribuição de probabilidade com 95% deconfança segundo o teste de Kruskal-Wallis.

3.9 QUESTÕES

1. Quais as propriedades matemáticas de uma fdp?2. Qual a importância das fdp na simulação?3. Que cuidados devem ser tomados ao usar fdp em simulação?4. Compare as distribuições de probabilidades apresentadas no texto.5. Quando usar e quando não usar as distribuições de probabilidades apresentadas notexto.6. Que condições devem ser seguidas ao aplicar distribuições de probabilidade?7. Relacione os parâmetros de fdp com os parâmetros de modelos de simulação. Faça umestude caso.8. Qual o signifcado matemático de E(x) e V(x). Como eles se relacionam com osparâmetros da fdp? Como eles são calculados?9. Qual o signifcado de autocorrelação? Qual seu uso?10. Qual o signifcado estatístico das hipóteses H0 e Ha?11. Qual o signifcado gráfco das hipóteses H0 e Ha?12. Qual o signifcado matemático das hipóteses H0 e Ha?13. Quando se deve usar o teste CQ? Qual o procedimento para sua aplicação?14. Quando se deve usar o teste KS? Qual o procedimento para sua aplicação?15. O que é nível de signifcância? Qual sua importância prática? Qual seu signifcadográfco?16. Relacione matematicamente o nível de signifcância com a hipótese H0?17. Relacione grafcamente o nível de signifcância com hipótese H0?18. Compare os testes CQ e KS.19. Dado o conjunto de valores {ai} estabeleça os passos necessários para verifcar seestes dados se ajustam a uma fdp qualquer utilizando o teste KS.20. Dado o conjunto de valores {ai} estabeleça os passos necessários para verifcar seestes dados se ajustam a uma fdp qualquer utilizando o teste CQ.21. Qual o signifcado matemático de D no teste CQ?22. Qual o signifcado estatístico de D no teste CQ?23. Qual o signifcado gráfco de D no teste CQ?24. Qual a relação entre D, teste CQ, ) e gl?25. Como se relacionam processo de chegada, flas, estatística, amostragem esimulação?26. Porque é necessário organizar dados em classes? Qual sua importância estatística?Qual sua explicação matemática?27. Discuta as aplicações do teste de Kruskal-Wallis.28. Proponha outras maneiras de calcular o Rank do teste de Kruskal-Wallis.

3.10 EXERCÍCIOS

Modelagem e Simulação Discreta 107

1. Avaliar a normalidade dos dados referente aos ciclos de leitura de 15 unidades dememória pelos testes CQ e KS: X = {37 54,2 55,1 28,1 24 67,9 29,7 22,9 61,8 42,9 83,519,5 31,6 14 79,6}2. Seja avaliar a normalidade dos dados referente a medição de 10 execuções de umbenchmark utilizando o teste KS: X = {1,9064 2,1029 1,5223 2,6183 1,4274 2,22491,6974 3,1544 1,9849 1,9957}3. Obtenha os parâmetros das fdp estudadas pelos métodos da máxima verossimilhançae mínimos quadrados.4. Supondo a média de chegada de e-mail diários seja 100, qual a probabilidade derecebermos pelo menos 50 e-mail num dia qualquer?5. Se pacotes numa rede chegam com taxa λ = 4 pps, qual a probabilidade de chegar 8pacotes no próximo segundo?6. A experiência indica que, em média, 20 clientes por hora param numa agência paraacessar terminais de computador.

a) Qual é a probabilidade de 10 clientes pararem a qualquer hora?b) Qual é a probabilidade de 10 clientes ou menos pararem em qualquer hora?c) Qual é o valor esperado, a média, e o desvio padrão para esta distribuição?

7. Encontre a melhor fdp que se ajusta aos dados dos exercícios 1 e 2.8. Verifque se as amostras A, B e C são homogêneas, ou seja, possuem a mesmadistribuição de probabilidade.

A B C70,2 76,5 66,792,8 101,2 88,218,6 20,3 17,796,1 104,8 91,353,4 58,2 50,82,0 2,1 1,915,9 17,4 15,135,1 38,3 33,496,4 105,1 91,640,9 44,697,7 106,549,8 54,362,341,44,2

9. Foram medidos valores de iat e st de um sistema que utiliza um Xbee Pro, abaixorelacionados.

iat(tps): 22 22 31 13 12 29 32 19 17 20 13 23 13 20 27 18 22 1 20 14 19 6 22 17 27 24st(tps): 33 44 13 19 28 24 35 36 34 27 14 30 23 17 23 5 20 39 37 35 23 34 22 28 42 27

a) Elimine os dados com valores extremos das séries iat e st.b) Verifque se as séries iat e st são representativas da população.c) Verifque se as séries iat e st são independentes.d) Faça os gráfcos de barra das séries iat e st e interprete-os.e) Faça os gráfcos box-plot das séries iat e st e interprete-os.f) Calcule os valores da média e desvio padrão das séries iat e st.g) Ajuste uma distribuição de probabilidade para a série iat por meio de testes de aderência.h) Ajuste uma distribuição de probabilidade para a série st por meio de testes de aderência.

10. Faça os testes de CQ e de KS para os dados de iat e st da série de dados abaixoconsiderando as fdp Beta, Weibull, Gamma, Poisson e Exponencial.

Modelagem e Simulação Discreta 108

iat(tps): 24 28 20 24 28 15 24 24 23 16 28 28 32 23 22 21 19 27 28 23 36 24st(tps): 19 14 18 9 29 9 25 17 30 19 12 15 9 22 22 31 19 12 12 16 30 2

11. Faça os testes de CQ e de KS para os dados das séries de dados abaixo considerandoas fdp Beta, Weibull, Gamma e Normal.

a) iat (tps): 43 11 16 2 5 28 3 2 20 19 8 30 33 22 7 6 10 20 30 14 7 14 33 18 13 14 17 38 28 st (tps): 7 12 16 19 5 15 18 10 25 14 19 16 7 7 12 13 17 4 15 16 19 20 2 21 19 16b) iat (tps): 30 33 27 6 37 15 1 27 15 17 19 19 5 15 18 10 25 16 19 20 2 21 19 st (tps): 9 22 22 31 19 12 12 16 30 14 33 18 13 14 17 8 30 33 22 7 6

Modelagem e Simulação Discreta 109

4 GERAÇÃO DE NÚMEROS ALEATÓRIOS

Desde que, em 1859, Darwin e Maxwell introduziram o acaso comoelemento explicativo nas ciências, esse agente imprevisível revelou-seatuante em todos os domínios da Natureza, da vida e invadiu as ciências.Uma maneira de usar esta propriedade dos sistemas é fazer uso denúmeros aleatórios.

A abordagem preferida para a geração de números aleatórios emcomputadores envolve a utilização de fórmulas de recorrência que podemser implementadas de forma simples e rápida.

Em estatística, um número aleatório é um número que pertence a umasérie numérica e que não pode ser previsto a partir dos seus membrosanteriores (Jain,1991).

Séries numéricas que podem ser previstas conhecendo-se o número inicialsão denominadas pseudoaleatórias é podem ser geradas por algoritmos(GNA - Gerador de Número Aleatório).

As propriedades dos elementos de uma série de números pseudo-aleatórios, quer sejam bits ou números, são:

• uniformemente distribuídos• estatisticamente independente• não repetição para um comprimento desejado• reprodutível• rápida obtenção de modo a poupar recursos computacionais para as simulações

em si

Modelagem e Simulação Discreta 110

Algoritmos geram apenas números pseudoaleatórios.O sítio www.random.org trata deste assunto extensivamente.A denominação número aleatório neste texto refere-se, em geral, anúmero pseudo-aleatório.

4.1 GERADORES CONGRUENTES LINEARES (GCL)

Geradores de números pseudoaleatórios uniforme estão incorporados emmuitas linguagens de programação e programas. Em geral, eles usam oGerador Congruente Linear (GCL) que produz uma sequência de númerosinteiros {0, ..., m-2}. O GCL é dado pela relação recursiva dada pelaEquação 4.1.

xn+1=(a xn+c)modm 4.1

em que a é a constante multiplicadora, c é o incremento e m é o módulo.O valor inicial x0 é denominado semente.

Embora o GCL possa ser obtido de forma recursiva, estes mesmos valorestambém podem ser calculados de forma explícita por meio da Equação 4.2(Hull & Dobell, 1962; Krishnan, 2006 pag 264; Severance, 2001 pag 85).

xn=(an x0+c

an−1a−1

)modm 4.2

Isto demonstra a natureza determinista dos números pseudoaleatóriosgerados por um GCL. E isto não é uma desvantagem deste método umavez que ele é compatível com o princípio da reprodutibilidade dosexperimentos científcos. No entanto, seu uso requer a seleção adequadada semente, que pode ser conseguido utilizando o valor da semente comosendo igual ao momento atual como, por exemplo, a função time(NULL) dalinguagem C que pode fornecer sementes obtidas a partir do número desegundos desde 01/01/1970 00:00.

A existência de ciclos é comum nas sequências da forma geral xn+1= f(xn).Os parâmetros a, c e m do GCL afetam a média, a variância e a duraçãodo ciclo das sequências (sequência sem repetição). Para produzir séries denúmeros aleatórios com período máximo, ciclo de tamanho igual a m,

Modelagem e Simulação Discreta 111

deve-se selecionar os valores de a, c e m conforme estabelece o Teoremade Hull-Dobell (Hull & Dobell, 1962).

Teorema de Hull-Dobell: O método congruente linear tem período m-1 se, e somente se, as seguintes três condições são válidas (Hull & Dobell, 1962; Severance, 2001 pag 86):

1. c e m são primos entre si, mdc(c,m) = 12. (a-1) é múltiplo de q, para todo fator primo q de m3. se m é múltiplo de 4 então (a-1) é múltiplo de 4

Buscando produzir séries de números aleatórios com período máximo,pode-se ainda considerar Bandyopadhyay e Bhattacharya (2014) queestabelece que os parâmetros a, c e m podem ser relacionados nestescasos:

1. se m = 2b e c ≠ 0 então o comprimento máximo do ciclo será igual a m para c e mprimos entre si e também a e m primos entre si com a = 1+4k, k inteiro.

2. se m = 2b e c = 0 então o comprimento máximo do ciclo será igual a 2b-2 com a =3+8k ou a = 5+8k, k inteiro.

3. se m é um número primo e c = 0 então o comprimento máximo do ciclo será iguala m-1 com ak-1 divisível por m, onde k = m–1.

Exemplo 4.1: A série gerada a partir de m = 231-1, a = 75 e c = 0 tem um ciclo igual 231-1,aproximadamente uma sequência de 2,1×109 números sem repetição, sufcientementegrande para simulações dos sistemas mais simples.

A função Un= xn/m é a distribuição uniforme contínua correspondente àsequência de números pseudoaleatórios, denominada U(0,1), U deuniforme.

Exemplo 4.2: A sequência xn = 6xn-1 + 5 mod 11 tem período igual a 10. Para x0 = 0, asequência gerada é { 0, 5, 2, 6, 8, 9, 4, 7, 3, 1 }. Dividindo estes valores por 11, obtêm-seU = { 0,0000 0,4545 0,1818 0,5455 0,7273 0,8182 0,3636 0,6364 0,2727 0,0909 }.

Uma observação importante sobre este exemplo é que a função xn é determinística. Dadaa semente, podemos predizer, com certeza, os números da sequência. No entanto, osnúmeros são aleatórios no sentido de que eles passariam por testes estatísticos paraaleatoriedade.

Modelagem e Simulação Discreta 112

Exemplo 4.3: A sequência xn = 6xn-1 + 5 mod 11 tem período igual a 10. Na Tabela 21estão os números aleatórios gerados por esta sequência para vários valores de x0.

Tabela 21 - Números aleatórios gerados a partir de xn = 6xn-1 + 5 mod 11 para x0 = 0,1, ..., 14

x0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

x1 5 0 6 1 7 2 8 3 9 4 10 5 0 6 1

x2 2 5 8 0 3 6 9 1 4 7 10 2 5 8 0

x3 6 2 9 5 1 8 4 0 7 3 10 6 2 9 5

x4 8 6 4 2 0 9 7 5 3 1 10 8 6 4 2

x5 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6

x6 4 9 3 8 2 7 1 6 0 5 10 4 9 3 8

x7 7 4 1 9 6 3 0 8 5 2 10 7 4 1 9

x8 3 7 0 4 8 1 5 9 2 6 10 3 7 0 4

x9 1 3 5 7 9 0 2 4 6 8 10 1 3 5 7

x10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3

A análise dos valores gerados apresentados na Tabela 21 permitem as seguintesconclusões:

• as sequências geradas têm os mesmos valores, são os números de 0 a 9, o que muda é a ordem destes números em cada sequência gerada

• a semente x0 determina a ordem da sequência e m determina os valores gerados• o ciclo deste gerador é igual a 10 e sua sequência é { x0, x1, x2, ..., x9 }• a partir de x10 a sequência é reiniciada, um novo ciclo igual ao anterior• para x0 = 0, 1, 2, ..., 9, os números da sequência não se repetem• para x0 = 10, ou seja, x0 = m-1, todos valores gerados são iguais a 10, ou seja, m-

1, uma sequência de pouca utilidade• para x0 = m, m+1, ..., a sequência gerada é reiniciada• para x0 = 0, m, 2m, 3m, ..., as sequências geradas são iguais• para x0 = 1, m+1, 2m+1, 3m+1, ..., as sequências geradas são iguais• generalizando, x0 = k, m+k, 2m+k, 3m+k, ..., para k = 0, 1, 2, ..., m-2, geram as

mesmas sequêcias• para x0 = 10, m+10, 2m+10, 3m+10, ..., as sequências geradas são iguais e os

valores gerados são iguais a m-1, portanto são sequências inválidas

Nota: denomina-se GCL misto se c = 0 e GCL multiplicativo se c ≠ 0.

4.2 GCL DE USO GERAL

Modelagem e Simulação Discreta 113

Na Tabela 22 estão algumas linguagens de programação e seus GNA GCL.Estes GCL possuem período máximo e igual a m.

Pode-se destacar nesta tabela o GCC, utilizado na linguagem deprogramação C/C++ 32 b, ele é um GCL misto com a recorrência dadapela fórmula: xn+1 = (1103515245 xn+12345) mod 231, que é capaz deproduzir uma sequência de números inteiros no conjunto { 0, 1, 2, 3, ...,231-1 = 2147483647 ≈ 2,1×109}.

O GCL MMIX de 64 b com um ciclo de 1,8x1019 e também o GCL Java de 48b com um ciclo de 2,8×1014.

Tabela 22 - Geradores de números aleatórios de uso geral

Fonte m a cNumerical Recipes 231 1664525 1013904223Borland C/C++ 231 22695477 1GCC 231 1103515245 12345Borland Delphi, Pascal 231 134775813 1Microsoft Visual C/C++ 231 214013 2531011Microsoft Visual Basic 224 1140671485 12820163Apple CarbonLib 231-1 16807 0MMIX (Donald Knuth) 264 6364136223846793005 1442695040888963407RANDU 231 65539 0VAX 231 69069 1Java 248 25214903917 11Forth 231-5 232-333333333 0

4.3 NÚMEROS ALEATÓRIOS EM GNU C

A linguagem C (GNU GCC e G++) possui duas funções e uma constantepara gerar números aleatórios com seu GCL (Tabela 22), a saber:

Tabela 23 - As funções, a constante e as bibliotecas da linguagem C paragerar números aleatórios

Recurso DescriçãoRAND_MAX constante inteira e igual 32767void srand(unsigned) atribui semente para o CGL, em geral srand(time(0))int rand(void) retorna um número pseudoaleatório com valor em [0, RAND_MAX]stdlib.h, time.h bibliotecas da linguagem C

O Algoritmo 4.1 gera um número pseudoaleatório com valor em (0,1)tendo como semente time(0) que o número de segundos decorridos desde01/01/1970 00:00:00 (tempo universal).

Modelagem e Simulação Discreta 114

Algoritmo 4.1: Programa em C para gerar números pseudoaleatórios comvalor em (0,1)

1. #include <stdlib.h>2. #include <time.h>3. double gna( void ){4. return (rand()+1.0)/(RAND_MAX+2.0); // intervao (0,1)5. }6. int main( void ){7. srand(time(0));8. printf( " %f ", gna() );9. return 0;10. }

Para gerar números pseudoaleatórios no intervalo [0,1] deve ser usada a Equação 4.3.

rand ()RANDMAX

∈[0,1] 4.3

Para gerar números pseudoaleatórios no intervalo (0,1) deve ser usada a Equação 4.4.

rand ()+1RANDMAX+2

∈(0,1) 4.4

Para gerar números pseudoaleatórios no intervalo [a,b] deve ser usada a Equação 4.5 sendo u ∊ [0,1].

a+(b−a)u∈[a ,b] 4.5

Para gerar números pseudoaleatórios no intervalo (a,b) deve ser usada a Equação 4.6 sendo v ∊ (0,1).

a+(b−a)v∈(a ,b) 4.6

Modelagem e Simulação Discreta 115

4.4 NÚMEROS ALEATÓRIOS EM GNU C++

A Linguagem ANSI C++11 implementou a biblioteca <random> e ampliouconsideravelmente o número de Geradores de Números Aleatórios, asaber (Brown, 2013; cppreference, 2013):

• Linear congruential engines: minstd_rand0, minstd_rand• Mersenne twister engines: mt19937, mt19937_64• Subtract with carry engines: ranlux24_base, ranlux48_base• Discard block engines: ranlux24, ranlux48• Shufe order engine: knuth_b

Um exemplo de código é apresentado no Algoritmo 4.2 utilizando oGerador Mersenne Twister 64 b:

Algoritmo 4.2: Código em C++ 11 utilizando o Gerador Mersenne Twister64 b

1. #include <random>2. #include <iostream>3. #include <stdio.h>4. #include <time.h>5.6. using namespace std;7.8. double gna( double a, double b ){9. static mt19937_64 eng(time(NULL));10. static uniform_real_distribution<double> uniform_real(a,b);11. return uniform_real(eng);12. }13.14. int main( void ){15. for( int i = 0; i < 10; i++ )16. cout << "Numero aleatorio:" << gna(0.0,1.0) << endl;17. cout << endl;18.19. for( int i = 0; i < 10; i++ )20. printf("\nDistribuicao Uniforme: %21.18f", gna(0.0,1.0) );21.22. return (0);23. }

Outro exemplo de código é apresentado no Algoritmo 4.3 utilizando oGerador Mersenne Twister 32 b:

Algoritmo 4.3: Código em C++ 11 utilizando o Gerador Mersenne Twister32 b

24. #include <random>25. #include <iostream>26. int main( void ){

Modelagem e Simulação Discreta 116

27. std::random_device rd;28. std::mt19937 gen(rd());29. std::uniform_int_distribution<> dis(1,6);30. for( int n = 0; n < 100; ++n )31. std::cout << dis(gen) << ' ';32. }

4.5 COMPOSIÇÃO DE GERADORES

A combinação de geradores resulta numa sequências de valores commelhores propriedades estatísticas e com períodos mais longos emcomparação com aqueles gerados a partir de um único gerador. Umexemplo é o gerador Zn apresentado abaixo.

An=(a0 An−1+a1 An−2)modma

Bn=(b0Bn−1+b1Bn−2)mod mb

Zn=(An+Bn)modm4.7

Exemplo 4.4: O gerador recursivo combinado L’Ecuyer's, referido como MRG32k3a,combina dois geradores recursivos e tem período igual a 2191 (3,1×1057), sufcientementelongo para a maioria das simulações, talvez para todas elas (L’Ecuyer's, 2007):

xi = ( a1 xi-1 + a2 xi-2 + a3 xi-3 ) mod m1

yi = ( b1 yi-1 + b2 yi-2 + b3 yi-3 ) mod m2

zi = ( xi-yi ) mod m1

ui = zi/m1

em que:

zi, ui, i = 1, 2, ... é a sequência desejada,

a1 = 0, a2 = 1403580, a3 = 810728, m1 = 232-209,

b1 = 527612, b2 = 0, b3 = 1370589 e m2 = 232-22853

4.6 GERADORES TAUSWORTHE

Modelagem e Simulação Discreta 117

Os geradores Tausworthe operam diretamente sobre bits. Uma sequênciade dígitos binários é defnida pela recorrência bi = (c1bi-1 + c2bi-2 + ∙∙∙ +cqbi-q) mod 2, onde c1, ..., cq são constantes binárias.

Neste caso, um ciclo é defnido como uma sequência de valores bináriosque se repetem continuamente. Portanto, como os q bits anteriores sãoutilizados, o período pode chegar a 2q - 1. De modo geral, os geradoresTausworthe são da forma bi = (bi-r+ bi-q) mod 2 sendo r, q ∈ N e 0 < r < q.

4.7 OUTROS GERADORES

O Gerador Mersenne Twister (MT) foi desenvolvido por Makoto Matsumotoe Takuji Nishimura. Seu ciclo é muito longo, com período de 219937-1, comsequência iid. Seu código em C está disponível no arquivo mt19937.c(Mersenne Twister, 2011). Este gerador já está disponível em C++ na suabiblioteca random.

4.8 CLASSE CLGNA

A classe clGNA escrita em Javascript está descrita no Algoritmo 4.4. Nestaclasse a semente (x0) é obtida do tempo do navegador, dado emmilissegundos desde 01/01/1970. Por exemplo, para a data 22/05/2015 às11h20min a semente é igual a 1400757600.

O valor de m adotado é 231 mas pode-se adaptar a classe para outrosvalores de m. A valor de x0 é corrigido se x0 > m e se x0 < 0. A funçãosetX0 é executada quando se instancia um objeto da classe. As funçõesgna, gna1, gna2, ..., gna7, geram números aleatórios no intervalo [0,1].

Modelagem e Simulação Discreta 118

Algoritmo 4.4: Classe clGNA em Javascript para os GCL’s da Tabela 22

1. function clGNA(){2. var x0, x, m;3. this.gna = function(){ // Javascript4. return Math.random();5. }6. this.gna1 = function(){ //Numerical Recipes7. x = (1664525*x+1013904223)%m;8. return (x/m);9. }10. this.gna2 = function(){ // Borland C/C++11. x = (22695477*x+1)%m;12. return (x/m);13. }14. this.gna3 = function(){ //GCC15. x = (1103515245*x+12345)%m;16. return (x/m);17. }18. this.gna4 = function(){ //Borland Delphi, Pascal19. x = (134775813*x+1)%m;20. return (x/m);21. }22. this.gna5 = function(){ //Microsoft Visual C/C++23. x = (214013*x+2531011)%m;24. return (x/m);25. }26. this.gna6 = function(){ //RANDU27. x = (65539*x)%m;28. return (x/m);29. }30. this.gna7 = function(){ //VAX31. x = (69069*x+1)%m;32. return (x/m);33. }34. this.setX0 = function(){35. x0 = (new Date()).getTime();36. m = Math.pow(2,31)-1;37. if( x0 < 0 ) x0 = -x0;38. if( x0 > m ) x0 = x0 % m;39. x = x0;40. }41. this.getX0 = function(){ return x0;}42. this.getM = function(){ return m; }43. this.setX0();44. }

Exemplo 4.5: Faça um programa em C++ para gerar números aleatórios AppleCarbonLib.

O GNA Apple CarbonLib tem m = 231-1, a = 16807 e c = 0, a função gnacl abaixo geradados deste GNA com semente obtida do tempo do sistema.

O software abaixo gera 10 números aleatórios Apple CarbonLib.

45. #include <iostream>46. #include <cmath>47. #include <ctime>48.49. using namespace std;

Modelagem e Simulação Discreta 119

50.51. double gnacl( void ){52. static long x = time(NULL), 53. m = pow(2,31)-1;54. x = (16807*x)%m;55. return double(x)/m;56. }57. int main(void){58. for( int i = 0; i < 10; i++ )59. cout << gnacl() << endl;60. return 0;61. }

4.9 TESTE DE GERADORES DE NÚMEROS ALEATÓRIOS

É uma boa prática verifcar estatisticamente os valores de um gerador denúmeros pseudoaleatório antes de usá-lo. O comportamento estatístico deum gerador de números aleatórios pode ser infuenciado pela suaimplementação em uma linguagem de programação bem como pelohardware utilizado. Existe uma grande variedade de testes parasequências de números aleatórios, dentre eles destacam-se os seguintestestes estatísticos:

• Teste de frequência• Teste de serial• Teste de autocorrelação• Teste runs• Teste de chi-quadrado

Também existe muita controvérsia sobre quais são os melhores, se testesteóricos são mais defnitivos que os empíricos. Se a amostra utilizada emum teste empírico for muito pequena, o resultado pode corresponderapenas a um pequeno fragmento do ciclo. Por outro lado, um teste queleva em conta um ciclo inteiro pode não ser compatível com fragmentosdeste mesmo ciclo.

Nenhuma quantidade de testes pode determinar que um gerador é omelhor em todos os casos. Portanto, a recomendação é que os testessejam consistentes com o uso que será dado ao gerador. Se os númerosserão utilizados aos pares, por exemplo, deve-se examinar ocomportamento de pares e, neste caso, talvez com um teste serial seja omais apropriado.

Modelagem e Simulação Discreta 120

Assim, deve-se escolher com cuidado o teste do gerador se a simulação éonerosa, requer alta precisão ou é um componente crítico de um estudo.

Muitos testes estatísticos úteis podem ser encontradas em NIST (2010). Ossítios a seguir possuem suítes para testar sequências de númerosaleatórios:

• Dieharder: A Random Number Test Suite - http://www.phy.duke.edu/~rgb/General/dieharder.php

• The Marsaglia Random Number CDROM including the Diehard Battery of Tests of Randomness - http://i.cs.hku.hk/~diehard/cdrom/

• TestU01: A C Library for Empirical Testing of Random Number Generators - http://www.iro.umontreal.ca/~lecuyer/myftp/papers/testu01.pdf

4.9.1 TESTES EMPÍRICOS

O gráfco dos pares (xi,xi+1) de números aleatórios permite avaliar aindependência do gerador de números aleatórios. Quando números dasequência são independentes eles fcam dispersos aleatoriamente semtendência, caso contrário estão próximos de uma reta. Pode-se notar naFigura 29 a falta de tendência na distribuição dos 500 pontos gerados,evidenciando grafcamente a independência dos dados amostrados.

Figura 29 - Gráfco de dispersão para avaliar grafcamente aindependência dos números aleatórios.

A Figura 29 foi gerada pelo Algoritmo 4.5.

Algoritmo 4.5 - O gráfco dos pares de números aleatórios em Javascript.

Modelagem e Simulação Discreta 121

1. <!doctype html>2. <html>3. <title>Dispersao de Numeros Aleatorios</title>4. <head>5. <script>6. function Plot(){7. var cnv = document.getElementById("canvas"),8. ctx = cnv.getContext("2d"),9. w = parseInt(cnv.getAttribute("width" )),10. h = parseInt(cnv.getAttribute("height")),11. d = 8,12. N = 500,13. x = [];14. ctx.fillStyle = "rgb(10,70,200)";15. for( var i = 0; i < N; i++ )16. x[i] = Math.random();17. for( var i = 0; i < N-1; i++ )18. ctx.fillRect(x[i]*(w-d),x[i+1]*(h-d),d,d);19. }20. window.onload = Plot;21. </script>22. </head>23. <body>24. Grafico de Dispersao de Numeros Aleatorios<br><br>25. <canvas id="canvas" width="300" height="300"></canvas><br>26. </body></html>

As Figura 30 é um gráfco de barra que é útil para avaliar grafcamente aindependência e a distribuição dos números aleatórios gerados.

Figura 30 - Gráfcos de barra para avaliar a independência e a distribuiçãode números aleatórios.

A Figura 30 foi gerada pelo Algoritmo 4.6 escrito em Javascript, que fazuso da biblioteca gráfca fot (www.fotcharts.org), utilizando as bibliotecasjquery.js e jquery.fot.js.

Algoritmo 4.6: Código Javascript para gerar gráfcos de barra de númerosaleatórios

1. <!doctype html>2. <html>

Modelagem e Simulação Discreta 122

3. <title>Grafico de Barra de Numero Aleatorio</title>4. <head>5. <script src="jquery.js"> </script>6. <script src="jquery.flot.js"></script>7. <script>8. function Plot(){9. var q = 10,10. n = 0,11. d = new Array(q),12. sum = new Array(q);13. for( var i = 0; i < q; i++ )14. sum[i] = 0;15. var timer = setInterval(function(){16. $(function(){17. for( var i = 0; i < q; i++ ){18. var r = Math.floor(Math.random()*q);19. sum[r]+= 1;20. d[i] = d.push([i+1,sum[r]]);21. n++;22. }23. document.getElementsByName('valor')[0].value = n;24. $.plot($("#graph"),[{data:d,bars:{ show:true,barWidth:0.3}}]);25. });26. },200);27. }28. window.onload = Plot;29. </script>30. </head>31. <body>32. <h3>Grafico de Barra de Gerador de Numero Aleatorio</h3>33. <div id="graph" style="width: 400px; height: 400px;"></div>34. <input type="text" value="0" name="valor" size="12"> 35. </body></html>

4.9.2 TESTES TEÓRICOS

O Algoritmo 4.7, escrito em Javascript, ilustra alguns dos mais testesteóricos mais usuais: autocorrelação, teste de CQ e custo computacional.

A função Calculate gera x[N] números aleatórios e os classifca em v[CLS]classes. A função gna permite gerar números aleatórios utilizando afunção Math.random(). A função Autocorrelacao calcula a autocorrelaçãode x[N] com k = 1. A função CQ faz o teste de CQ de v[CLS]. A funçãoCusto estima o tempo médio para se gerar um milhão de númerosaleatórios.

Modelagem e Simulação Discreta 123

No Firefox 48.0 a autocorrelação obtida foi de 2.980e-2, indicandoindependência dos números gerados; o Teste de CQ foi: “a distribuição doGNA é uniforme (16.37 < 36.19) com 99% de confançaa, indicando que asequência de números aleatórios gerada é iid U(0,1); e o custo unitário doGNA medido foi de 2.960e-6 s, sufcientemente pequeno.

Algoritmo 4.7: Código Javascript para calcular a autocorrelação denúmeros aleatórios

1. <!DOCTYPE>2. <html>3. <head>4. <meta charset="UTF-8">5. <style>6. body { font-family: Arial; font-size: 20px }7. table{ font-family: Arial; font-size: 15px } 8. </style>9. <script src="clGna.js"></script>10. <script>11. var CLASSE = 20, NUMERO = 1000000, CUSTO = 9000000,12. X9 = 21.67, // CQ(1%, gl = 9)13. X19 = 36.19; // CQ(1%, gl = 19)14.15. function Autocorrelacao( x ){16. var k = 1, m = 0.0, num = 0.0, s2 = 0.0;17.18. for( var n = 0; n < NUMERO; n++ )19. m += x[n];20. m /= NUMERO;21.22. for( var n = 0; n < NUMERO; n++ )23. s2 += (x[n]-m)*(x[n]-m);24. s2 = s2/(NUMERO-1); 25.26. for( var n = 0; n < NUMERO-k; n++ )27. num += (x[n]-m)*(x[n+k]-m);28.29. return "autocorrelação = " + (num/s2/(NUMERO-k)).toFixed(5); 30. }31. function CQ( fo ){32. var D = 0.0, CQ;33. for( var n = 0; n < CLASSE; n++ ){34. var fe = 1.0/CLASSE;35. D += Math.pow( fo[n] - fe, 2.0 )/fe;36. }37. if( D < X19 ) CQ = " CQ: Ho não pode ser rejeitada, a distribuição é

uniforme (" + D.toFixed(5) + " < " + X19 + ") com 99% de confiança";38. else CQ = "CQ: Ho é rejeitada (" + D.toFixed(5) + " >= " + X19 + ") com

99% de confiança";39. return CQ;40. }41.42. function Custo(){43. var gna = new clGNA(), 44. inicio = (new Date()).getTime(),45. fim;46. for( var n = 0; n < CUSTO; n++ )47. var a = gna.gna1();48. fim = (new Date()).getTime();49. return "custo unitário = " + ((fim-inicio)/CUSTO).toExponential(4) + "

s";

Modelagem e Simulação Discreta 124

50. }51. function prn(fo,v){52. var str = "<br><table border='1'><tr><td>i<td>v[i]<td>fo[i]<td>fe[i]";;53. for( var i = 0; i < CLASSE; i++ )54. str += "<tr><td>" 55. + i + "<td>" 56. + v[i] + "<td>" 57. + fo[i].toFixed(4) + "<td>" 58. + 1.0/CLASSE;59. str += "</table>";60. return str;61. }62. function Calculate(){63. var gna = new clGNA(), 64. x = [], 65. v = [], 66. fo = [], str = "";67.68. for( var i = 0; i < CLASSE; i++ )69. v[i] = fo[i] = 0.0;70.71. for( var n = 0; n < NUMERO; n++ ){72. x[n] = gna.gna1();73. v[Math.floor(CLASSE*x[n])] += 1;74. }75. 76. for( var i = 0; i < CLASSE; i++ )77. fo[i] = v[i]/NUMERO;78.79. str += "<p> " + prn(fo,v);80. str += "<p>1. " + Autocorrelacao(x);81. str += "<p>2. " + CQ(fo);82. str += "<p>3. " + Custo();83. return str;84. }85. function tstGNA(){86. var txt = document.getElementById("tst"),87. cnc = "<p> Conclusão: GNA estatisticamente independentes (1),"88. + " uniformemente distribuídos (2) e "89. + "de baixo custo computacional (3).";90. txt.innerHTML = "<p>Testes Teóricos para Geradores de Números Aleatórios"91. + Calculate() + cnc;92. }93. </script>94. </head>95. <body onLoad="tstGNA()">96. <div id="tst"></div>97.98. </body>99. </html>

É importante que o GNA utilizado no processo de simulação sejaigualmente distribuído porque garante que, independente dos dadosiniciais e de quem as façam ou quando as façam, as simulações que outilizarem apresentaram resultados similares. Esta é uma conclusão deordem operacional, que assegura confabilidade à simulação enquantotécnica e embasa seu uso e aplicações.

Devido à Lei dos Grandes Números, poucos dados gerados por um GNAsão mal distribuídos. Porém, ao gerar grandes quantidades de dados por

Modelagem e Simulação Discreta 125

meio de um GNA, pode-se observar que tendem a serem igualmentedistribuídos.

Daí surge uma pergunta, quantos eventos devem ser simulados?Experimentalmente, pode-se observar que a partir de 3.000 (três mil)valores gerados de um GNA já se obtém-se uma boa uniformidade nadistribuição dos dados, são razoavelmente uniformes. A partir daí já seobserva variações devido ao acaso, à aleatoriedade dos processos e dossistemas, construídos ou não pelo homem.

Esta não é ainda nossa resposta porque a simulação vai além do GNA,mas já é um bom começo.

O Algoritmo 4.8 gera números aleatórios e os classifca em 10 (dez) decis,ele foi executado para n iguais a 500, 1000, 2000, 3000, 4000, 5000 e10000, estes resultados podem ser vistos na Figura 31. Quanto maisnúmeros são gerados melhor a distribuição entre os decis.

Algoritmo 4.8: Código Javascript para gerar e exibir números aleatóriosclassifcados em 10 decis.

1. <!doctype html>2. <html>3. <title>Classificação de Números Aleatórios</title>4. <head>5. <script>6. var q = 10, n = 0, sum = new Array(q);7. function Random(){8. for( var i = 0; i < q; i++ )9. sum[i] = 0;10. setInterval(Vetor,5);11. }12. function Vetor(){13. var r = Math.floor(Math.random()*q),14. wnd = document.getElementById("txt"),15. txt;16. sum[r] = sum[r]+1;17. n++;18. txt = "<table border='1'><tr>";19. for( var i = 0; i < q; i++ ){20. txt += "<td>" + (sum[i]/n).toFixed(3);21. }22. txt += "</table>";23. wnd.innerHTML = " numeros gerados = " + n + txt;24. }25. window.onload = Random;26. </script>27. <body><div id="txt"></div></body>28. </html>

números gerados = 500

Modelagem e Simulação Discreta 126

0.104 0.100 0.108 0.106 0.092 0.102 0.092 0.088 0.102 0.106

números gerados = 10000.095 0.111 0.106 0.116 0.093 0.100 0.099 0.092 0.083 0.105

números gerados = 20000.098 0.113 0.107 0.104 0.096 0.106 0.086 0.099 0.084 0.109

números gerados = 30000.098 0.112 0.104 0.104 0.092 0.109 0.087 0.096 0.088 0.110

números gerados = 40000.098 0.109 0.104 0.106 0.092 0.106 0.090 0.097 0.089 0.108

números gerados = 50000.100 0.109 0.101 0.105 0.096 0.105 0.090 0.098 0.090 0.106

números gerados = 100000.096 0.104 0.102 0.103 0.095 0.103 0.096 0.101 0.097 0.104

Figura 31 - Classes de números aleatórios utilizando o Algoritmo 4.8 para niguais a 500, 1000, 2000, 3000, 4000, 5000 e 10000.

4.10 QUESTÕES

1. Quais as diferenças entre número aleatório e número pseudoaleatório?2. O que é ciclo de um GNA? Qual sua importância na simulação?3. Como avaliar a qualidade de um GNA?4. Discuta os GNA’s propostos por L’Ecuyer. Faça uma pesquisa na Internet sobre ele.5. Qual é o período do GCL com m = 231, a = 314159269 e b = 453806245?

4.11 EXERCÍCIOS

1. Gerar 10.000 números usando a semente x0 = 1 do gerador xn = 75xn-1 mod (231-1). Classifcar os números em 10 células de tamanhos iguais e teste auniformidade pelo teste CQ com confança de 95 e 99%.

2. Gerar 15 números usando a semente x0 = 1 no gerador xn = (5xn-1+1) mod 16.Verifque se a sequência passa no teste KS em um nível de confança de 95 e 99%.

Modelagem e Simulação Discreta 127

3. Teste os geradores apresentados no texto em um nível de confança de 95% e99%.

4. Trinta números aleatórios foram gerados usando o GCL xn = 3xn-1 mod 31 comsemente de x0 = 15. Os números foram: 14, 11, 2, 6, 18, 23, 7, 21, 1, 3, 9, 27, 19,26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28, 22, 4, 12, 5, 15. Verifque se eles sãoiid.

5. Teste a fórmula recursiva de Krishnan para os GCL's GCC, JAVA e MMIX, para assementes 0, 1, 31, 35 e 1000.

6. Refaça a Tabela 4.1 para xn+1 = (5xn+ 1) mod 24 e discuta seus resultados.7. Qual é o período dos GCL:

a) xn+1 = 5xn mod 25b) xn+1 = 7xn mod 25

8. Considere os casos descritos por Bandyopadhyay e Bhattacharya para propor etestar um gerador de números aleatórios para um hardware com palavra de:

a) 8 bitsb) 11 bitsc) 14 bits

Modelagem e Simulação Discreta 128

5 GERAÇÃO DE VARIÁVEIS ALEATÓRIAS

As atividades de pesquisa e desenvolvimento em engenharia fazem usoextensivo de simulação em computadores. Como grande parte dossistemas físicos são afetados por fenômenos físicos aleatórios, éimportante que essas simulações sejam capazes de reproduzi-los. Emgeral, essas simulações utilizam variáveis aleatórias e gerá-los constituiuma importante etapa destas atividades.

Uma variável aleatória é uma função que mapeia os eventos defnidos emum espaço amostral no conjunto de valores [0,1]. Diferentes variáveisaleatórias podem ser associadas a um experimento, o que permiteexpressar tanto a sua complexidade quanto a variação do seucomportamento através das mais diversas funções densidade deprobabilidade, tornando possível sua simulação.

Segundo Gentle (2004), em estatística computacional, a geração devariáveis aleatórias normalmente é feita em duas etapas:

1. a geração de variáveis aleatórias independentes e identicamente distribuídos Ucom a distribuição uniforme no intervalo (0,1)

2. aplicar transformações a estas variáveis aleatórias iid U(0,1) para derivar variáveisaleatórias de distribuições arbitrárias, Figura 32

Modelagem e Simulação Discreta 129

Figura 32 - Transformação de variáveis aleatórias U(0,1) em distribuiçõesarbitrárias pelo método da inversa.

Essas duas etapas são essencialmente independentes. O passo 1 é obtidopor meio geradores de números aleatórios (GNA) e o passo 2 é resolvidopelo método da inversa, Figura 32.

Em princípio, a maneira mais simples de gerar variáveis aleatória X comfunção de distribuição F a partir de U(0,1) variáveis aleatórias U é aplicar ainversa F a U:

X = F-1(U) ≡ min{x | F(x) ≥ U}

Este é o método da inversa. É fácil verifcar que X tem a distribuiçãodesejada: P[ X ≤ x ] = P[ F-1(U) ≤ x ] = P[ U ≤ F(x) ] = F(x).

Ou seja, gerar variáveis aleatórias Xi de uma função densidade deprobabilidade f(x) é resolver a equação Xi = F-1(ui) em que F(x) é a funçãodensidade de probabilidade acumulada e ui ∼ U(0,1).

Nem sempre x = F-1(u) tem solução analítica, devendo ser considerado osseguintes fatores para seleção do método de geração de variáveisaleatórias:

Modelagem e Simulação Discreta 130

• exatidão - deve-se usar sempre métodos exatos e utilizar métodos baseados em aproximação em último caso

• efciência - dentre os diversos métodos exatos deve-se sempre escolher o mais efciente

• simplicidade - em geral é preferível utilizar métodos simples

5.1 MÉTODOS GERAIS

Os métodos gerais de se gerar variáveis aleatórias X de uma funçãodensidade de probabilidade f(x) são apresentados a seguir.

5.1.1 MÉTODO DA INVERSA DA FUNÇÃO DENSIDADE ACUMULADA

O Método da Inversa da Função Distribuição Acumulada (FDA) é um dosmétodos mais simples de geração de variáveis aleatórias de umadistribuição F contínua e estritamente crescente. Nessas condições pode-se gerar uma variável aleatória utilizando o seguinte algoritmo:

1. Gerar u ~ U(0,1)2. Calcular x = F-1(u), onde F-1(u) é o valor de x quando F(x) = u

Exemplo 5.1: Obtenha a fórmula para a geração de variáveis aleatórias com distribuiçãoWeibull pelo método da transformação inversa.

A fdp de uma variável aleatória x com distribuição Weibull é dada por

f (x)= abaxa−1e

−( xb)a

e F( x)=1−e−( xb)a

.

Resolvendo F(x) = u, obtêm-se:

u=1−e−( xb)a

⇔1−u=e−( xb)a

⇔ ln(1−u)=−( xb)a

⇔ a√−ln(1−u)= xb⇔ x=b a√−ln (1−u)

Como (1-u) ~ U(0,1) e u ~ U(0,1), elas são intercambiáveis, assim tem-se que:

x=b a√−ln(1−u)⇔ x=b a√−ln(u)

Logo x=b a√−ln(u) gera variáveis aleatórias x com distribuição Weibull de parâmetrosa e b usando números aleatórios com distribuição uniforme.

Modelagem e Simulação Discreta 131

Uma grande desvantagem deste método é o fato de seu uso estar limitadoa distribuições que possuem FDA inversível como, por exemplo, asdistribuições Exponencial, Weibull, Gumbel ou Valores Extremos, Logísticae Pareto. A Tabela 24 ilustra a aplicação deste método.

Tabela 24 - Aplicações do Método da Inversa da FDA onde u ~ U(0,1),Forbes et al. (2011)

Distribuição F(x) x

Exponencial 1−e− xa −aln(u)

Valores Extremos 1−e−ex−ab a+bln[ ln (u)]

Geométrica 1−(1−p)x ⌈ln(u)

ln (1−u)⌉

Logística 1− 1

1+e−(x−μ)

bμ−b ln (1

u−1)

Pareto 1− 1

xa1a√u

Weibull 1−e−( xa)b

a b√−ln(u)

5.1.2 MÉTODO DA CONVOLUÇÃO

Para várias distribuições estatísticas importantes, a variável aleatóriadesejada X pode ser expressa como a soma de outras variáveis aleatórias,cuja geração pode ser feita de maneira mais rápida do que geração diretade X. Supõe-se que X seja a soma de m variáveis aleatórias iid da forma X= Y1 + Y2 + ... + Ym. Pode-se utilizar o seguinte algoritmo:

1. Gerar Y1, Y2 , ..., Ym, cuja distribuição de probabilidade é Y2. Retornar X = Y1 + Y2 + ... + Ym.

Este método pode ser aplicado para todas as distribuições que são a somade variáveis aleatórias.

5.1.3 MÉTODO DA COMPOSIÇÃO

A variável aleatória desejada X pode ser expressa como uma combinaçãolinear X = c1Y1 + c2Y2 + ... + cnYn onde Σci=1. Pode-se utilizar o seguintealgoritmo:

Modelagem e Simulação Discreta 132

1. Gerar as distribiuições de probabilidade Y1, Y2 , ..., Yn

2. Obter ou gerar c1, c2, ..., cn tal Σci=13. Retornar Y = ΣciYi

5.1.4 MÉTODO DA ACEITAÇÃO REJEIÇÃO

Assumindo que uma distribuição F, contínua, possui fdp f(x), deve-seencontrar uma distribuição alternativa G cuja fdp g(x) englobe o maisperfeitamente possível f(x), ou seja, que seja majoritária sobre ela, Figura33, a função G é também chamada de função envelope.

Figura 33 - Ilustração do Método da Aceitação-Rejeição

Um dos possíveis algoritmos que descrevem o Método da AceitaçãoRejeição é descrito a seguir:

1. Gerar u ~ U(0,1)2. Gerar uma variável Y com distribuição G independente de u3. Se u ≤ f(Y)/[cg(Y)] então ao faça x = Y (Y é aceito), caso contrário, volte ao passo 1 (Yé rejeitado)4. x é uma variável aleatória com distribuição F

A Figura 33 ilustra as funções envolvidas no algoritmo apresentado acima.Nela, pontos são gerados dentro do intervalo de g(x). Desses pontos,aqueles que caem dentro dos limites de f(x) são aceitos, e os que caemfora são rejeitados.

Exemplo 5.2: Obtenha o algoritmo para a geração de variáveis aleatórios Normais padrãopelo método da Método da Aceitação Rejeição.

A fdp de uma variável aleatória Z com distribuição z ~ N(0,1) é dada por f(z) = 2 exp(-z2/2)/(2π)1/2. Será utilizada a função exponencial g(x) = e-x/2 para majorar f(z), com f, g:R→R. A Figura 33 ilustra o comportamento destas funções para valores positivos dasabscissas.

Modelagem e Simulação Discreta 133

Figura 34 - Gráfco de f(t) = 2 exp(-t2/2)/(2π)1/2 e g(t) = e-t/2 para t ≥ 0.

Fazendo f(x)/g(x) = exp(-x2/2)/(2π)1/2/e-x/2 = exp(x/2-x2/2)/(2π)1/2.

Para resolver a equação c = max[f(x)/g(x)] basta derivar f(x)/g(x) em relação a x eigualar a zero (d[f(x)/g(x)]/dx=0).

Verifcar que para x = 1 a razão f(x)/g(x) é máxima, logo c = f(1)/g(1) = 2/(2π)1/2

Neste caso, f(x)/[c*g(x)] = exp(x/2-x2/2) e pode-se escrever o seguinte algoritmo:

1. gerar dois números aleatórios u1 e u2,

2. gerar uma variável aleatória G = 2*ln(u1),

3. se u2 < exp(G/2-G2/2) então faça x = G senão retorna ao procedimento 1

4. retornar x

Este algoritmo gera apenas valores positivos da fdp Normal, útil para gerar grandezastemporais.

Sobre o procedimento 2: como g é exponencial será utilizado o método da Inversa.Recomenda-se que a função envelope seja do tipo x = F−1(u), tenha inversa analítica.

5.1.5 TRANSFORMAÇÃO DE BOX-MULLER

A transformação de Box-Muller consiste na geração de pares de amostrasaleatórias independentes com distribuição normal a partir de númerosaleatórios uniformemente distribuídos. Sejam u, v ~ U(0,1) e x, y ~U(µ,σ2), tem-se que:

• x=μ+σ cos(2 πu)√−2 ln(v )• y=μ+σ sin(2πu)√−2 ln(v)

Trata de um método estatístico muito simples.

Modelagem e Simulação Discreta 134

5.1.6 QUALIDADE NA GERAÇÃO DE VARIÁVEIS ALEATÓRIAS

É importante fazer testes nas amostras geradas para verifcar a qualidadeda sequência aleatória, como os testes de uniformidade e de aderência àdistribuição de interesse. Neste sentido, recomenda-se os testes CQ e KScomo testes de aderência.

5.2 GERAÇÃO DE VARIÁVEIS ALEATÓRIAS

A classe clGVA(), Algoritmo 5.1,implementa em Javascript funções paragerar variáveis aleatórias das principais FDA de uso em simulação. Ela fazuso de clGNA para gerar números aleatórios.

Algoritmo 5.1: Classe clGVA() em Javascript possui funções para gerarvariáveis aleatórias das principais fda de uso em simulação

1. function clGVA(){2. var GNA = new clGNA();3. this.Beta = function(a,b){4. var x = this.Gamma(a,1.0),5. y = this.Gamma(b,1.0);6. return x/(x+y); //Law(2007)7. }8. this.Erlang = function(b,m){9. var p = 1.0;10. for( var i = 0; i < m; i++ ){11. var u = GNA.gna();12. p *= u;13. }14. return -b*Math.log(p)/m; //Law(2007)15. }16. this.Exponencial = function(a){17. var u = GNA.gna();18. return -a*Math.log(u); //Law(2007)19. }20. this.Gamma = function(alfa,beta){21. if( alfa > 1.0 ){22. var a = 1.0/Math.sqrt(2*alfa-1.0),23. b = alfa-Math.log(4.0),24. q = alfa+1.0/a,25. teta = 4.5,26. d = 1.0+Math.log(teta), u1, u2, V, Y, Z, W;27. do{28. u1 = GNA.gna();29. u2 = GNA.gna();30. V = a*Math.log(u1/(1.0-u1));31. Y = alfa*Math.exp(V);32. Z = u1*u1*u2;33. W = b+q*V-Y;34. if( !(W+d-teta*Z < 0.0) ) break;

Modelagem e Simulação Discreta 135

35. }while( W < Math.log(Z) );36. }37. else{38. var u1, u2, P, b, Y, b = (Math.exp(1.0)+alfa)/Math.exp(1.0);39. do{40. u1 = GNA.gna();41. P = b*u1;42. if( P > 1.0 ){43. Y = -Math.log((b-P)/alfa);44. u2 = GNA.gna();45. }46. else{47. Y = Math.pow(P,1.0/alfa);48. u2 = GNA.gna();49. if( u2 > Math.exp(-Y) ) continue;50. else break;51. }52. }while( u2 > Math.pow(Y,alfa-1.0) );53. }54. return beta*Y; //Law(2007)55. }56. this.Logistica = function(m,b){57. var u = GNA.gna();58. return m-b*Math.log(1.0/u-1.0);59. }60. this.LogNormal = function(m,s){61. var x = this.Normal(m,s);62. return Math.exp(x); //Law(2007)63. }64. this.Normal = function(m,s){65. var x1, x2, Y, W;66. do{67. var u1 = GNA.gna();68. u2 = GNA.gna();69. V1 = 2.0*u1-1.0;70. V2 = 2.0*u2-1.0;71. W = Math.sqrt(V1*V1+V2*V2);72. }while( W > 1.0 );73. Y = Math.sqrt(-2.0*Math.log(W)/W );74. x1 = V1*Y;75. x2 = V2*Y;76. // return m+s*x1; ou77. return m+s*x2; //Law(2007)78. }79. this.Normal2 = function(m,s){80. var u1 = GNA.gna(),81. u2 = GNA.gna();82. // return m+s*Math.cos(2.0*PI*u1)*Math.sqrt(-2.0*Math.log(u2));83. // ou84. return m+s*Math.sin(2.0*PI*u1)*Math.sqrt(-2.0*Math.log(u2));85. }86. this.Pareto = function(a){87. var u = GNA.gna();88. return 1.0/Math.pow(u,1.0/a);89. }90. this.Poisson = function(l){91. var i = 0, a = Math.exp(-l), b = 1.0;92. do{93. u = GNA.gna();94. b *= u;95. if( b < a ) return i;96. i++;97. }while(1); //Law(2007)98. }99. this.Poisson2 = function(l){100. var k = 0, a = Math.exp(-l), p = 1.0;101. do{102. k++;

Modelagem e Simulação Discreta 136

103. u = GNA.gna();104. p *= u;105. }while(p > a);106. return k-1; // http://en.wikipedia.org/wiki/Poisson_distribution107. }

108. this.Poisson3 = function(l){ // x=min { n

∏j=0

n

u j

⩽e⁻λ}

109. var L = Math.exp(-l), t = GNA.gna(), x = 0;110. while( t > L ){111. t *= GNA.gna();112. x++;113. }114. return x; // Chen(2015) pag. 49115. }116. this.UniformeContinua = function(a,b){117. var u = GNA.gna();118. return a+(b-a)*u; //Law(2007)119. }120. this.UniformeDiscreta = function(i,j){121. var u = GNA.gna();122. return i+Math.floor((j-i+1)*u); // floor() = piso() Law(2007)123. }124. this.ValoresExtremos = function(a,b){125. var u = GNA.gna();126. return a+b*Math.log(-Math.log(u));127. }128. this.Weibull = function(a,b){129. var u = GNA.gna();130. return b*Math.pow(-Math.log(u),1.0/a); //Law(2007)131. }132. }

Exemplo 5.3: Faça um programa em C++ para gerar variáveis aleatórias da fdp Paretoutilizando o GNA Apple CarbonLib.

O GNA Apple CarbonLib tem m = 231-1, a = 16807 e c = 0. A função gnacl gera dadosdeste GNA com semente obtida do tempo do sistema.

A função Pareto gera variáveis aleatórias da fdp Pareto de parâmetro a e faz uso do GNAApple CarbonLib gnacl.

Por fm, tomando a = 3.0 como exemplo, são geradas 10 variáveis aleatórias da fdpPareto fazendo uso do GNA Apple CarbonLib.

1. #include <iostream>2. #include <cmath>3. #include <ctime>4.5. using namespace std;6.7. double gnacl( void ){8. static long x = time(NULL), 9. m = pow(2,31)-1;10. x = (16807*x)%m;11. return double(x)/m;12. }13. double Pareto( double a ){

Modelagem e Simulação Discreta 137

14. double u = gnacl();15. return 1.0/pow(u,1.0/a);16. }17. int main(void){18. double a = 3.0;19. for( int i = 0; i < 10; i++ ){20. cout << Pareto(a) << endl;21. }22. return 0;23. }

Exemplo 5.4: Faça um programa em C++ para gerar variáveis aleatórias da fdp Normalutilizando o GNA Vax.

O GNA Vax tem m = 231, a = 69069 e c = 1. A função gnavax gera dados deste GNA comsemente obtida do tempo do sistema.

A função Normal2 gera variáveis aleatórias da fdp Normal de parâmetros m e s e faz usodo GNA Vax.

Por fm, tomando m = 3.0 e s =2.0 como exemplo, são geradas 10 variáveis aleatóriasda fdp Normal fazendo uso do GNA Vax.

1. #include <iostream>2. #include <cmath>3. #include <ctime>4.5. using namespace std;6.7. #define PI 3.14159265358979323848.9. double gnavax( void ){10. static long x = time(NULL),11. m = pow(2,31);12. x = (69069*x+1)%m;13. return double(x)/m;14. }15. double Normal2( double m, double s ){ 16. double u1 = gnavax(),17. u2 = gnavax();18. return m+s*sin(2.0*PI*u1)*sqrt(-2.0*log(u2));19. }20. int main(void){21. double m = 3.0, s = 2.0;22. for( int i = 0; i < 10; i++ )23. cout << Normal2(m,s) << endl;

Modelagem e Simulação Discreta 138

24. return 0;25. }

5.3 RELAÇÕES ENTRE AS DISTRIBUIÇÕES DE PROBABILIDADE

As Figura 35 e Figura 36 resumem as relações entre as várias distribuiçõesde probabilidades discretas e contínuas, respectivamente. Nestas fguras,as relações são indicados ao lado das setas entre as distribuições. Umsímbolo x é utilizado para designar variáveis da distribuição onde a setacomeça. Assim, por exemplo, a condição Σx ao lado da seta do Bernoullipara a distribuição binomial na Figura 35 indica que a soma de variáveisBernoulli tem uma distribuição Binomial. Da mesma forma, quando aprobabilidade p tende a zero, a distribuição Binomial tende para umadistribuição Poisson, que para λ > 9 pode ser aproximada por umadistribuição Normal, e assim por diante. Distribuição Normal, embora nãoseja uma distribuição discreta, foi incluída na Figura 35 para fornecer umaligação entre as distribuições discretas da Figura 35 5.4 e as distribuiçõescontínuas da Figura 36.

Figura 35 - Relações entre distribuições discretas (Jain,1901).

Modelagem e Simulação Discreta 139

Figura 36 - Relações entre distribuições contínuas (Jain,1901).

5.4 DISTRIBUIÇÕES DE PROBABILIDADES DA LINGUAGEM ANSI C++11

A Linguagem ANSI C++11 implementou a biblioteca <random> e ampliouconsideravelmente sua capacidade de gerar variáveis aleatórias, a saber(cppreference, 2013):

• Uniform distributions: uniform_int_distribution, uniform_real_distribution, generate_canonical

Modelagem e Simulação Discreta 140

• Bernoulli distributions:vbernoulli_distribution, binomial_distribution, negative_binomial_distribution, geometric_distribution

• Poisson distributions: poisson_distribution, exponential_distribution, gamma_distribution, weibull_distribution,extreme_value_distribution

• Normal distributions: normal_distribution, lognormal_distribution, chi_squared_distribution, cauchy_distribution, fsher_f_distribution, student_t_distribution

• Sampling distributions: discrete_distribution, piecewise_constant_distribution, piecewise_linear_distribution

Exemplo 5.5: Elabore um programa para gerar variáveis aleatórias com distribuiçãouniforme em C++11.

Algoritmo 5.2: Programa para gerar variáveis aleatórias com distribuiçãouniforme em C++11

1. #include <random>2. #include <iostream>3.4. int main( void ){5. std::random_device rd;6. std::mt19937 gen(rd());7. std::uniform_int_distribution<> dis(1, 6);8. for( int n = 0; n < 10; ++n )9. std::cout << dis(gen) << ' ';10. std::cout << '\n';11. return 0;12. }

fonte: <http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution>

5.5 GERANDO PROCESSOS DE CHEGADA

Conhecendo-se os parâmetros da função densidade de probabilidade quegoverna o processo de chegada, deve-se gerar quantas variáveisaleatórias forem necessárias para processar os eventos de chegada.

Se a função for Poisson, o intervalo médio entre chegadas é o parâmetronecessário para se gerar os processos de chegada.

Os parâmetros de uma função podem ser calculados por meio deestatísticas obtidas a partir de amostras do processo e, embora ele sejadiscreto, deve-se buscar ajustar a melhor função densidade deprobabilidade, quer seja discreta ou contínua, dentre as disponíveis.

Modelagem e Simulação Discreta 141

5.5.1 GERAÇÃO DE VARIÁVEIS ALEATÓRIAS DA DISTRIBUIÇÃO POISSON

A distribuição de Poisson, estima a probabilidade de ocorrência de xsucessos em um dado intervalo de tempo, por meio da seguinte funçãodensidade de probabilidade:

p(x) = p(X = x ) = e-λλx/x!, x ≥ 0, λ > 0.

em que λ é o valor esperado do número de ocorrências por unidade detempo.

Os procedimentos computacionais para a geração de uma variávelaleatória Poisson, pelo método da Aceitação/Rejeição, são os seguintes:

1. fazer n = 0 e p =1,2. gerar um número aleatório un+1 e fazer p = p∗un+1,3. se p < e-λ então aceitar X = n senão fazer n = n+1 e retornar ao procedimento 24. retornar X.

5.5.2 GERAÇÃO DE VARIÁVEIS ALEATÓRIAS DA DISTRIBUIÇÃO EXPONENCIAL

A fdp de uma variável aleatória x com distribuição exponencial é dada por:

p(x) = λe-λx, x ≥ 0, λ > 0.

O parâmetro λ é o número médio de ocorrências por unidade de tempo e arazão 1/λ expressa o tempo médio entre as ocorrências.

Ao aplicar o método da transformação inversa para a obtenção de umavariável aleatória x com distribuição exponencial é necessário:

1. obter a distribuição cumulativa de probabilidade F(x) = P(X ≤ x), o que resulta em F(x)= 1-e-λx,2. gerar um número aleatório u e fazer F(x) = u,3. resolver u = 1-e-λx para x, o que resulta em x = -λln(1-u),4. como 1-u e u possuem distribuição uniforme no intervalo [0,1], pode-se substituir (1-u)por u

Modelagem e Simulação Discreta 142

5. logo x = -λln(u) é uma variável aleatória x com distribuição exponencial de parâmetroλ.

5.6 QUESTÕES

1. Discutir as fda das Figura 35 e Figura 36.

2. Identifcar as fda deste capítulo que podem ter variáveis aleatóriasgeradas pelos métodos da:

• transformação inversa• rejeição• composição• convolução

5.7 EXERCÍCIOS

1. Gere variáveis aleatórias utilizando os algoritmos propostos nestecapítulo e verifque sua aderência à distribuição com os testes CQ e KS.Faça o teste para 50, 100 e 200 valores gerados com confança de 95 e99%.

2. Compare os resultados de variáveis aleatórias geradas pelos algoritmospropostos neste capítulo com os do C++11. Faça o teste para 50, 100 e200 valores gerados com confança de 95 e 99%.

3. Implemente um algoritmo para a geração de variáveis aleatóriasNormais padrão f(z) pelo Método da Aceitação-Rejeição utilizando a funçãoexponencial g(t) = e-t/k para majorar f(z) com z ≥ 0 e k = 3, 4, 5, 10.

4. Implemente, em C++11, o algoritmo desenvolvido no Exercício 3 ecompare o número de execuções para k = 2, 3, 5 e 10.

Modelagem e Simulação Discreta 143

5. Gere 100 variáveis aleatórias Exponential em C++11 e verifque suaaderência a esta distribuição com os testes CQ e KS com confança de99%.

6. Gere 100 variáveis aleatórias Poisson em C++11 e verifque suaaderência a esta distribuição com os testes CQ e KS com confança de99%.

Modelagem e Simulação Discreta 144

6 VERIFICAÇÃO E VALIDAÇÃO DE MODELOS

Deve-se garantir a implementação correta de modelos computacionaispara fns de simulação para que eles possam representar sistemas domundo real. A avaliação da qualidade da simulação é medida pelaproximidade dos resultados de um modelo comparados com dados desistemas do mundo real.

Uma vez que uma série de suposições sobre o comportamento desistemas do mundo real são feitas no desenvolvimento de modelos, háduas etapas para medir sua qualidade:

• Verifcação - verifca a correção da implementação, se o modelo computacional implementa as suposições corretamente

• Validação - valida a representatividade dos pressupostos no modelo conceitual, se as premissas são razoáveis

Como pode ser visto na Figura 37, validação e verifcação são conceitosdiferentes. A verifcação também pode ser chamada de depuração, ouseja, avalia se o modelo computacional realiza o que se espera do modeloconceitual. A validação permite ajustar o comportamento do modeloconceitual ao sistema do mundo real.

Figura 37 - Relação entre os conceitos de validação e verifcação e omundo real.

Modelagem e Simulação Discreta 145

Um modelo pode estar em qualquer uma das quatro categorias possíveisrelativa a implementação das hipóteses e realismo dos pressupostosconforme a Tabela 25.

Apenas os modelos válidos e verifcados podem ser capazes derepresentar sistemas do mundo real.

Tabela 25 - Categorias dos modelos relativa a implementação dashipóteses e realismo dos pressupostos.

Implementação dasHipóteses

Pressupostosrealistas não realistas

correta validado e verifcado validado e não verifcadoincorreta não validado e verifcado não validado e não verifcado

6.1 TÉCNICAS DE VERIFICAÇÃO DE MODELOS

A verifcação consiste em assegurar que o modelo computacionalimplementa corretamente o modelo conceitual. A verifcação de modelosde simulação é equivalente a retirar os bugs de programas (debugging).Ela também busca identifcar elementos que possam ocasionar o malfuncionamento do modelo computacional.

A qualidade dos dados de entrada também é de extrema importância.Estes dados podem ser utilizados com três fnalidades básicas: construçãodo modelo conceitual, validação de resultados e experimentação. Destaforma, se os dados de entrada do modelo estão incorretos, não há comomelhorar o modelo ou mesmo gerar resultados corretos.

As técnicas para a Verifcação de Modelos podem ser vistas na Tabela 26.

Tabela 26 - Técnicas para a Verifcação de Modelos

Antibugging

consiste em incluir verifcações adicionais e saídas no programapara apontar os erros, se houver. Por exemplo, se asprobabilidades de determinados eventos devem somar 1, oprograma pode verifcar isso e imprimir uma mensagem de errose a soma não estiver dentro de um limite de tolerânciaespecifcado. Outro exemplo é o de contar as entidades geradase atendidas

Walk-Through consiste em explicar o código para outra pessoa ou um grupo. O

Modelagem e Simulação Discreta 146

Structured

desenvolvedor do código explica o que cada instrução faz podeser muito útil. Mesmo que os ouvintes não entendam o modelo,desenvolvedores descobrem erros simplesmente lendo o códigocuidadosamente, tentando explicá-lo e verifcando se o códigocorresponde exatamente à expectativa

Modelos Determinísticos

o problema-chave na depuração de modelos de simulação é aaleatoriedade das variáveis. É óbvio que um programadeterminístico é mais fácil de depurar que um programa comvariáveis aleatórias. A técnica consiste em especifcardistribuições constantes (determinísticas) para que o usuáriopossa facilmente determinar variáveis de saída e, assim,depurar o software, ou seja, eliminar a aleatoriedade

Executar Casos Simplificados

o modelo pode ser executado com casos simples como, porexemplo, apenas uma tarefa. Estes casos podem ser facilmenteanalisados e os resultados da simulação podem ser comparadoscom os modelos analíticos. É claro, um modelo que funcionapara casos simples não é garantido que funcione para os casosmais complexos. Portanto, os testes devem ser tão complexosquanto puderem ser analisados sem simulação

Rastreio (Trace)

um rastreio consiste de uma lista ordenada de eventos detempo e suas variáveis associadas. Eles podem serapresentados em vários níveis de detalhe: eventos derastreamento, procedimento trace ou rastreio de variáveis. Assaídas de rastreio são úteis na depuração de modelos

Gráficos On-Line

simulações levam muito tempo para serem executadas. Gráfcoson-line podem exibir resultados para ajudar a manter o usuárioinformado sobre o estado da simulação. Eles também são úteispara tornar a simulação mais interessante e vender seusresultados para terceiros

Teste de Continuidade

consistem em executar a simulação várias vezes para valoresligeiramente diferentes dos parâmetros de entrada. Paraqualquer parâmetro, uma pequena mudança na entrada devegeralmente produzir apenas uma ligeira alteração na saída.Toda mudança repentina na saída deve ser investigada. Muitasvezes, eles são devidos a erros de modelagem

Testes de Degenerescência

consistem em verifcar se o modelo funciona para valoresextremos (menores ou maiores permitidos) do sistema,confguração, ou parâmetros de carga de trabalho. Por exemplo,modelo de estação de trabalho com multiprocessador e váriosdiscos deve ser capaz de simular também uma única CPU semdisco (diskless) mesmo que estas confgurações não sejamválidas para o sistema

Testes de Consistência

verifcam se o modelo produz resultados semelhantes paravalores de parâmetros de entrada semelhantes. Por exemplo,dois processos com taxa de chegada de 100 pacotes porsegundo cada um deve exigir de uma rede aproximadamente domesmo nível que quatro processos com uma taxa de chegadade 50 pacotes por segundo cada. Se a saída do modelo mostrauma diferença signifcativa, ele pode ser explicável ou pode serdevido a erros de programação

Independência da Semente

as sementes utilizadas na geração de números aleatórios nãodeve afetar o resultado fnal. Assim, o modelo deverá produzirresultados semelhantes para diferentes valores de sementes, oque deve ser verifcado

Modelagem e Simulação Discreta 147

6.2 TÉCNICAS DE VALIDAÇÃO DE MODELO

Validação consiste em assegurar que os pressupostos utilizados, assimplifcações adotadas, o nível de detalhamento e o escopo do modeloconceitual estão de acordo e representam adequadamente o sistema a sersimulado e que, se implementado corretamente, o modelo computacionaltenha comportamento e produza resultados semelhantes àquelasobservados nos sistemas do mundo real.

As técnicas de validação dependem dos pressupostos e, portanto, dosistema que está sendo modelado. Assim, ao contrário de técnicas deverifcação que são de aplicação geral, as técnicas de validação utilizadasna simulação de um modelo podem não se aplicar a outro.

Validação do modelo consiste em validar os três aspectos-chave domodelo:

• Suposições• Valores dos parâmetros de entrada e distribuições• Valores de saída e conclusões

Cada um destes três aspectos pode ser submetido a um teste de validade,comparando-a com o obtido a partir das seguintes possíveis três fontes:

Intuição doEspecialista

é a forma mais prática e comum para validar um modelo.Os pressupostos do modelo devem ser validados porespecialistas. Os valores de entrada e distribuição devemser discutidos e validados durante o desenvolvimento domodelo. A saída deve ser validada, logo que existir umexecutável do modelo

MedidasReais doSistema

comparação com sistemas do mundo real é a maneira maisconfável e preferida para validar um modelo de simulação.Suposições, valores de entrada, valores de saída, cargas detrabalho, confgurações e comportamento do sistemadevem ser comparados com os observados no mundo realutilizando técnicas estatísticas

ResultadosTeóricos

em alguns casos, é possível resolver analiticamente omodelo do sistema sob hipóteses simplifcadoras. Tambémpode ser possível determinar analiticamente asdistribuições de entrada. Nesses casos, a semelhança de

Modelagem e Simulação Discreta 148

resultados teóricos e os resultados da simulação é usadapara validar o modelo de simulação

Isto leva a nove testes de validação possíveis. Claro, pode não ser viável autilização de algumas dessas possibilidades. Por exemplo, medições reaisdo sistema podem estar disponíveis ou não, resultados teóricos podemestar disponíveis ou não. O analista deve, pelo menos, validar o modelopara confgurações simples.

6.3 CONSIDERAÇÕES ADICIONAIS

A verifcação e validação é de fundamental importância para o sucesso deum estudo de simulação. Acredita-se que este processo deve ser contínuo,acompanhando todo o ciclo de vida do projeto para a obtenção demelhores resultados.

Outras técnicas para a Validação de Modelos podem ainda seremadotadas:

• análise de sensibilidade à variação dos parâmetros• comparar com sistema similar• dados da literatura

6.4 DETERMINANDO O NÍVEL DE DETALHE DE MODELOS

Há um consenso na comunidade de simulação de que um modelo simplesé sempre mais preferível a um modelo complexo. De fato, o dizer "modelesimples - pense complicado" é um dos princípios de modelagem emsimulação pois o modelo, tanto para o analista (criador do modelo) comopara o usuário, deve ser simples. Modelos simples são mais fáceis decompreender e também mais efcientes de se mudar, implementar e

Modelagem e Simulação Discreta 149

analisar. Há autores que chegam a afrmar que a simplifcação é aessência da simulação. Ainda apontam uma outra vantagem de ummodelo simples: a facilidade de descartá-lo e começar novamente. Umavez que um modelo complicado é criado, é difícil se livrar dele (é muitomais difícil de admitir uma falha em um modelo extremamente custoso doque em um modelo simples e barato).

Na grande maioria dos casos, a redução de um modelo ocorre depois dasua análise, quando se faz um estudo de sensibilidade a fm de verifcar arelevância de seus parâmetros e variáveis. Por isto, acredita-se que, aodesenvolver uma técnica adequada de redução de modelos, logo naprimeira fase do ciclo de vida (concepção), tenha se uma reduçãosignifcativa na duração deste ciclo, especialmente nas etapas deimplementação e análise, mesmo que haja um aumento de tempo naetapa ou fase de concepção do modelo.

Além das vantagens descritas anteriormente, tendo-se um modelo maissimples, a probabilidade de ocorrência de erros nas fases deimplementação e análise é menor, o que indiretamente pode levar,também, à redução do tempo total do ciclo.

Na realidade, a motivação para reduzir a complexidade de modelos desimulação parece que mudou ao longo do tempo. A motivação principalpara a redução de modelos na década de 70 era a restriçãocomputacional. Na década de 80, a motivação principal para a redução erao entendimento. Pode-se afrmar que, na década de 90 e no novo milênio,as motivações principais para a redução de modelos são o entendimentoe, também, o tempo de desenvolvimento (a necessidade de se reduzir otempo de um estudo de simulação) buscando melhorar a relaçãobenefício/custo, conforme pode ser vista na Figura 38.

Modelagem e Simulação Discreta 150

Figura 38 - Relação benefício/custo e a qualidade de modelos.

Modelos muito simples podem ser de baixo custo mas podem nãodescrever adequadamente o comportamento dos sistemas do mundo real.Por outro lado, modelos muito complexos podem ser de alto custo maspodem descrever adequadamente o comportamento dos sistemas domundo real. A qualidade de modelos não pode ser deixada de lado poispode levar à perda de investimento.

Há que considerar que o incremento da qualidade obedece a Lei dosRendimentos Decrescentes, já os custos crescem exponencialmente. Naacademia deve-se buscar a melhor qualidade e ela é feita de modo rápido.No mundo dos negócios há que buscar um meio termo, o de fazer maiscom menos, a qualidade é conquistada e incorporada no processo passo-a-passo, assim é comum ouvir de gestores que "o bom é inimigo doótimo".

6.5 MELHORANDO A VALIDADE E CREDIBILIDADE DE MODELOS

As vantagens de representar o modelo de simulação de forma que sejammais fáceis de serem comunicados são:

Modelagem e Simulação Discreta 151

• fornecer melhor entendimento sobre a lógica de operação dos sistemas e interações entre seus componentes

• aumentar a efciência do desenvolvimento do modelo de simulação computacional• assegurar uma validação mais apropriada do modelo de simulação• servir como um meio de comunicação entre o analista e o usuário

Dentre as técnicas para melhorar a validade e a credibilidade dos modelospode-se destacar:

• análise de sensibilidade• as técnicas já vistas para validação de modelos• as técnicas já vistas para verifcação de modelos

6.6 QUESTÕES

1. Proponha uma metodologia para validar o Modelo Conceitual de Sistemas de FilasM/M/1 apresentado anteriormente.2. Proponha uma metodologia para verifcar o Modelo Computacional de Sistemas de FilasM/M/1 apresentado anteriormente.3. Proponha uma metodologia para a análise do o Modelo Conceitual de Sistemas de FilasM/M/1 apresentado anteriormente.4. O que signifca "modele simples - pense complicado" na prática de modelagem. Façaum estudo de caso.4. O que signifca "o incremento da qualidade obedece a Lei dos RendimentosDecrescentes, já os custos crescem exponencialmente" na prática de modelagem. Façaum estudo de caso.

6.7 EXERCÍCIOS

1. Faça testes de continuidade, de degenerescência e de consistência nos execícios doCapítulo 2.2. Faça o teste da independência da semente nos execícios do Capítulo 2.

Modelagem e Simulação Discreta 152

7 ANÁLISE DE RESULTADOS SIMULADOS

A simulação de modelos matemáticos de sistemas computacionais podeapresentar erros de diferentes fontes. A começar pelos próprios modelosque, por construção, são representações simplifcadas de sistemas domundo real. Os erros inerentes ao processo da amostragem também estãopresentes nos parâmetros de entrada dos modelos. Os valores utilizadosnos modelos são estimativas dos parâmetros reais e também são fontesde erros. Ao simular estes modelos matemáticos em computadores,fazendo uso de números aleatórios, são introduzidas variabilidadeestatística nos resultados. Em resumo, não há como controlar estas fontesde erros. Vale ressaltar que, apesar de tudo isso, ainda assim a simulaçãodá bons resultados e pode ser utilizada de modo confável.

Neste capítulo serão apresentadas técnicas estatísticas que permitemavaliar resultados de simulações, sua qualidade e pertinência e assegurarseu uso.

A análise de saída é um dos aspectos mais importantes de qualquerestudo de simulação adequado e completo. Como os processos de entradada simulação são variáveis aleatórias, notadamente tempos entrechegadas e tempos de serviços, deve-se considerar a saída da simulaçãotambém como aleatória. Assim, simulações resultam apenas emestimativas de medidas do desempenho do sistema. Esses estimadoressão, eles mesmos, variáveis aleatórias sujeitos ao erro amostral, e o erroamostral deve ser levado em conta para se fazer inferências válidas emrelação aos valores dos resultados simulados.

A simulação pode não produzir resultados que sejam dados normais e iid.Por exemplo, os tempos de espera de serviços consecutivos em umsistema de fla:

Modelagem e Simulação Discreta 153

• não são independentes - de modo típico, eles são serialmente correlacionados; se um serviço numa rede espera em uma fla por um longo tempo, então é provável que o próximo serviço também espere também um longo tempo

• não são identicamente distribuídos - os serviços que são solicitados de madrugadaem geral esperam menos do que os que aqueles solicitados pouco antes do fnal do expediente

• não são distribuídos normalmente - eles são usualmente assimétricos

Na maioria dos sistemas simulados, os valores iniciais das suas variáveisde estado e de saída podem apresentar grandes variações, esta parteinicial é chamada de estado transiente, após o que o sistema pode atingirum estado estável, denominado estado estacionário, Figura 39. Hásimulações cujo foco é o estado transiente e há outras cujo interesse é oestado estacionário, há ainda aquelas que buscam estudar ambosestados. Há também sistemas simulados que apresentam oscilaçõescíclicas, periódicas ou não. Sistemas de comportamento caótico oudivergente são de pouco interesse prático em sistemas computacionais.

Figura 39 - Indicação dos estados transiente e estacionário de umasimulação típica.

1 - séries caóticas e séries aleatórias são parecidas no sentido de que não possuem regularidade2 - series estocásticas, como o ruído branco, são aleatórias3 - series caóticas são determinísticas, são geradas a partir de sistemas dinâmicos4 - a característica que identifca o comportamento caótico é a sua dependência das condiçõesiniciais, o que inviabiliza a repetibilidade bem como a previsibilidade do comportamento dosistema, já que condições iniciais indistinguíveis podem gerar comportamentos imprevisíveis

Modelagem e Simulação Discreta 154

7.1 TIPOS DE SIMULAÇÃO COM RELAÇÃO À ANÁLISE DA SAÍDA

Pode-se identifcar dois tipos de simulação em relação à análise da saída:simulações terminais e de estado estacionário.

• Simulações terminais ou transientes - neste caso, a natureza do problema defne explicitamente o número de eventos a serem simulados. Por exemplo, pode-se estar interessados na simulação de um sistema que é executado em um horário específco a cada dia, como backup.

• Simulações não-terminais ou de estado estacionário - neste caso estuda-se o comportamento a longo prazo do sistema. Presumivelmente, esse comportamentode estado estacionário é independente das condições iniciais da simulação. Um exemplo são os hardwares de modo geral, que fcam disponíveis continuamente, para a qual há interesse em alguma medida de desempenho a longo prazo.

As técnicas para analisar saídas de simulações terminais se baseiam nométodo de replicações independentes.

Problemas adicionais surgem para simulações de estado estacionário e asseguintes etapas na execução da simulação também devem consideradas:

• remoção de transientes - quantos eventos iniciais devem ser descartadas paragarantir que a simulação chegue a um estado de equilíbrio?

• critério de parada – Quantos eventos serão necessários para executar asimulação?

7.1.1 REMOÇÃO DE TRANSIENTES

Antes que uma simulação possa ser executada, devem-se defnir valoresiniciais para suas variáveis de estado. Como, em princípio, os valoresiniciais apropriados destas variáveis de estado não são conhecidos, essesvalores devem ser escolhidos arbitrariamente, utilizando-se de algunscritérios como, por exemplo, iniciar uma Fila vazia e seu Servidor ociosopor questões de conveniência. As condições iniciais de uma simulação

Modelagem e Simulação Discreta 155

podem ter uma infuência signifcativa nos seus resultados, podendo levara erros na análise da saída de estado estacionário.

Na maioria das simulações, apenas o desempenho em estadoestacionário, isto é, o desempenho depois que o sistema tenha atingidoum estado estável, é de interesse. Nesses casos, os resultados da parteinicial da simulação não devem ser incluídos nos cálculos fnais. Essa parteinicial é também chamada de estado transiente, Figura 39.

O problema de identifcar o fm do regime transiente é chamado deremoção de transientes e sua principal difculdade é que não é possíveldefnir exatamente o que constitui o estado transiente e quando eletermina. Todos os métodos para a remoção de transientes são, portanto,heurísticas. Há seis métodos, a saber:

Tabela 27 - Métodos para a remoção de transientes

Execuções longas

o primeiro método é simplesmente usar execuções muito longas, ouseja, execuções que são sufcientemente longas para garantir que apresença de condições iniciais não afetará o resultado. Há duasdesvantagens neste método. Primeira, ele desperdiça recursos, se osrecursos são caros, uma simulação não deve ser executada por maistempo do que o absolutamente necessário. Segunda, é difícil garantirque o comprimento da execução escolhido é sufciente

Inicialização adequada

inicialização adequada requer iniciar a simulação em um estadopróximo do estado esperado estável. Por exemplo, uma simulação deescalonamento da CPU pode começar com algumas tarefas na Fila emvez da Fila vazia. O número de tarefas pode ser determinado a partirde simulações anteriores ou por simples análise. Este método resultaem uma redução na duração dos períodos transientes para que hajapouco efeito sobre a computação em geral

Truncamento

este e todos os métodos subsequentes são baseados no pressupostode que a variabilidade durante o estado de equilíbrio é menor do quedurante o estado transiente, o que geralmente é verdade. No métodode truncamento, a variabilidade é medida em termos de alcancemínimo e máximo de observações. Se uma trajetória mostrandoobservações sucessivas em um gráfco, um intervalo de observaçõespode ser visto quando a simulação estabilizar e entrar na faseestacionária

Eliminação de dados iniciais

a exclusão de dados iniciais requer estudar a média global depois quealguns dos resultados iniciais são excluídas da amostra. Durante oestado estacionário, a média não muda muito quando observações sãoexcluídas. No entanto, a aleatoriedade nas observações faz com que asmédias possam mudar um pouco, mesmo durante o estadoestacionário. Para reduzir o efeito de aleatoriedade, o método requerprimeiro, o cálculo uma média através de várias repetições. Cadarepetição consiste em uma série completa da simulação, sem qualqueralteração nos valores dos parâmetro de entrada. As repetições diferemapenas nos valores de semente utilizada nos geradores de númerosaleatórios. A média dos resultados das repetições é uma trajetóriasuave

Média móvel de replicações

este método é semelhante à exclusão de dados inicial. A principaldiferença é que este método requer calcular a média sobre uma janela

Modelagem e Simulação Discreta 156

independentes que se deslocam a intervalos de tempo em vez da média geral

Média de Lotes

este método requer a execução de uma simulação muito longa edividi-la em várias partes de igual tamanho. Cada parte é chamada delote ou subamostra. A média de observações em cada lote é chamadamédia de lote . Este método permite estudar a variação destas médiasem função do tamanho do lote

7.1.2 CRITÉRIO DE PARADA

O critério de parada pela estimativa da variância utiliza o conceito detamanho de amostras, segue-se que a simulação deve ser executada atéque o intervalo de confança para a resposta média se restrinja a umintervalo desejado, Figura 40. Se a média da amostra é m e sua variânciaé V(m), o intervalo de confança para a média é dada por m∓z1−α

2V (m)

em que ∓z1−α2

é o 1−α2

quantil de uma variável normal unitária.

Figura 40 - Variância do número de tarefas na fla em função do tamanhode lote da simulação do Sistema de Fila M/M/1 com ρ = 0,5.

7.2 ANÁLISE ESTATÍSTICA DE SIMULAÇÕES FINITAS

Modelagem e Simulação Discreta 157

7.2.1 ANÁLISE DE SIMULAÇÃO TERMINAL

A simulação terminal é feita em um horizonte de tempo fnito. Suponhaque uma saída de simulação discreta tenha gerado o conjunto de n dados{x1, x2, ..., xn} onde n pode ser constante ou uma variável aleatória. Porexemplo, o experimentador pode especifcar a simulação de n tempos deespera de serviços de um modelo. Ou n pode denotar o número aleatóriode tarefas simuladas durante um período de tempo especifcado [0,T]. A

média amostral das observações é m=1n∑i=1

n

x i .

Embora m seja um estimador não viesado para a média da população,uma análise estatística adequada exige que seja encontrada também umaestimativa de V(m). Como os xi não são necessariamente variáveis

aleatórias iid, a variância amostral s2= 1n−1

∑i=1

n

(xi−m)2 pode ser um

estimador viesado. Uma maneira de contornar este problema é usar oMétodo de Replicação Independente (MRI).

7.2.2 MÉTODO DE REPLICAÇÃO INDEPENDENTE (MRI)

O MRI estima V(m) através da realização de b rodadas de simulaçãoindependentes (replicações) do modelo do sistema, em que cadareplicação consiste em k eventos simulados. Para fazer replicaçõesindependentes, por exemplo, pode-se reiniciar cada replicação com umasemente diferente.

Seja z i=1k∑j=1

k

x i , j a média amostral da replicação i, onde xi,j é a observação

j da replicação i, para i ∈ [1, b] e j ∈ [1, k].

A Tabela 28 apresenta um quadro com as b rodadas do Método deReplicação Independentes organizadas em linhas, cada rodada com keventos organizados por coluna; num total de k x b eventos. As médiassão das rodadas e são calculadas por linha.

Tabela 28 - Quadro com as b rodadas do Método de ReplicaçãoIndependente, cada rodada com k eventos e suas respectivas médias

Rodada (i)Evento (j)

Média1 2 ... j ... k

Modelagem e Simulação Discreta 158

1 x1,1 x1,2 ... x1,j ... x1,k z1

2 x2,1 x2,2 ... x2,j ... x2,k z2

... ... ... ... ... ... ... ...

i xi,1 xi,2 ... xi,j ... xi,k zi

... ... ... ... ... ... ... ...

b xb,1 xb,2 ... xb,j ... xb,k zb

Se cada rodada se inicia com as mesmas condições operacionais (comoflas vazias e servidores ociosos), então as médias amostrais dasreplicações {z1, z2, ..., zb} são variáveis aleatórias iid e, então, o estimador

de V(m) é V R=1b−1

∑i=1

b

(zi−mb)2 em que mb=

1b∑i=1

b

zi . Como as médias

amostrais das replicações são iid, VR, em geral, é muito menos viesado doque s2/n para estimar V(m), desta forma VR/b é um estimador razoávelpara V(mb). Além disso, se o número de observações por replicação, k, ésufcientemente grande, o Teorema Central do Limite afrma que asmédias amostrais das replicações são aproximadamente normais e iid.

Assim, a estatística básica fornece um intervalo de confança (IC) bilateralaproximado de 100(1-))% de confança para a amostra da população, μ, μ

∈ mb∓t α2, b−1√V R

b.

Exemplo 7.1: Calcule o Intervalo de Confança bilateral da média da população a partirdas Replicações Independente abaixo, ) = 5%:

RodadaEvento

Média1 2 3 4 5 6

1 12,2 14,3 9,7 11,4 13,1 11,3 12,0

2 11,4 10,2 9,3 13,1 12,0 11,8 11,3

3 10,7 11,1 13,0 10,4 11,3 11,4 11,3

4 13,2 10,4 10,7 11,5 9,2 10,2 10,9

b = 4

k = 6

Cálculo dos zi:

z1 = (12,2 + 14,3 + 9,7 + 11,4 + 13,1 + 11,3)/6 = 72,0/6 = 12,0

z2 = (11,4 + 10,2 + 9,3 + 13,1 + 12,0 + 11,8)/6 = 67,8/6 = 11,3

z3 = (10,7 + 11,1 + 13,0 + 10,4 + 11,3 + 11,4)/6 = 67,9/6 = 11,3

z4 = (13,2 + 10,4 + 10,7 + 11,5 + 9,2 10,2)/6 = 65,2/6 = 10,9

Cálculo de mb:

mb = (12,0 + 11,3 + 11,3 + 10,9)/4 = 45,48/4 = 11,4

Modelagem e Simulação Discreta 159

Cálculo de VR:

VR = [(12,0-11,4)2 + (11,3-11,4)2 + (11,3-11,4)2 + (10,9-11,4)2]/3 =(0,396+0,005+0,003+0,254)/3 = 0,658/3 = 0,219

Cálculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)

Cálculo do IC:

IC = 3,1824 x (0,219/4)1/2 = 3,1824 x 0,230 = 0,750

Conclusão: média da população μ ∈ [10,6;12,12].

7.2.3 ANÁLISE ESTATÍSTICA DE PARÂMETROS ESTACIONÁRIOS

Suponha que se tenha uma saída de simulação de estado estacionário {x1,x2, ..., xn} de algum parâmetro de interesse como, por exemplo, o númerode tarefas numa fla. Como no caso de simulações terminais, uma boaanálise estatística deve fornecer o valor de qualquer estimadorjuntamente com uma medida de sua variância.

Várias metodologias têm sido propostas na literatura para avaliar a saídade estado estacionário, dentre elas, médias de lotes, replicaçõesindependentes, séries temporais, análise espectral e regeneração. Serãoapresentadas as duas mais populares, a saber, médias de lotes ereplicações independentes.

7.2.3.1 Médias de Lotes

Em geral, o Método de Médias de Lotes é usado para se estimar avariância ou calcular ICs para a média μ de processos de estadoestacionário. Ele consiste em dividir uma longa rodada de simulação emum número de lotes contíguos e utilizar o Teorema Central do Limite parasupor que as médias de lotes sejam aproximadamente normais e iid.

Suponha que se particione {x1, x2, ..., xn} em b lotes contíguos, disjuntos,cada um com k observações, sendo n = bk. Assim, o i-ésimo lote, i ∈ [1,b], consiste nas variáveis aleatórias x(i-1)k+1, x(i-1)k+2, ..., xik. A média do i-

ésimo lote é zi=1k∑j=1

k

x(i−1)k + j , a média amostral das k observações do lote

i.

Modelagem e Simulação Discreta 160

A Tabela 29 ilustra o Método das Médias de Lotes para uma rodada com 24eventos distribuídos (n = 24) em 4 lotes contíguos (b = 4), cada lote com6 observações (k = 6) e suas respectivas médias.

Tabela 29 - Quadro do Método das Médias de Lotes com uma rodada com24 eventos distribuídos em 4 lotes, cada lote com 6 eventos e suasrespectivas médias

Rodada x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24

Lote 1 2 3 4Média z1 z2 z3 z4

Defnindo o estimador V B=1b−1

∑i=1

b

(zi−mb)2 para as médias dos lotes,

mb=1b∑i=1

b

zi . Se k é grande, então as médias dos lotes são

aproximadamente normais e iid. O valor de IC aproximado para μ com

100(1-))% de confança é mb∓t α2, b−1√V B

b.

Essa equação é muito semelhante à as replicações independentes, vistoanteriormente. A diferença aqui é que as médias de lotes dividem umalonga rodada em um número de lotes, enquanto as replicaçõesindependentes usam um número de rodadas mais curtas e independentes.

O uso da média de lotes pode resultar intervalos de confança de baixacobertura se os xi não forem estacionários, como se estiver presente umviés de condições iniciais signifcativos; se as médias dos lotes não foremnormais ou se as médias dos lotes não forem independentes.

Para melhorar o problema do viés da iniciação, pode-se truncar alguns dosdados ou fazer uma longa rodada. Além disso, a falta de independência oude normalidade das médias dos lotes pode ser contornada pelo aumentodo tamanho do lote, k.

Exemplo 7.2: Calcule o Intervalo de Confança bilateral da média da população a partirdas Médias de Lotes abaixo, ) = 5%:

Rodada 13,4 9,8 11,6 10,8 9,2 12,0 13,6 9,9 8,9 9,7 10,3 13,0 11,0 12,4 8,8 11,4Lote 1 2 3 4Média 11,4 11,2 10,5 10,9

b = 4

k = 4

Cálculo dos zi:

z1 = (13,4 + 9,8 + 11,6 + 10,8)/4 = 11,4

Modelagem e Simulação Discreta 161

z2 = (9,2 + 12,0 + 13,6 + 9,9)/4 = 11,2

z3 = (8,9 + 9,7 + 10,3 + 13,0)/4 = 10,5

z4 = (11,0 + 12,4 + 8,8 + 11,4)/4 = 10,9

Cálculo de mb:

mb = (11,4 + 11,2 + 10,5 + 10,9)/4 = 32,6/4 = 11,0

Cálculo de VR:

VR = [(11,4-11,0)2 + (11,2-11,0)2 + (10,5-11,0)2 + (10,9-11,0)2]/3 = 0,159

Cálculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)

Cálculo do IC:

IC = 3,1824 x (0,159/4)1/2 = 3,1824 x 0,199 = 0,634

Conclusão: média da população μ ∈ [10,4;11,6].

7.2.3.2 Replicações Independentes

Entre as difculdades encontradas ao se usar a média de lotes, a maispreocupante deve ser a possibilidade de correlação entre as médias doslotes. Esse problema é explicitamente evitado pelo método de RI, descritono contexto de simulações terminais. De fato, as médias de replicaçõessão independentes por construção. Infelizmente, como cada uma das breplicações deve ser iniciada apropriadamente, o viés das condiçõesiniciais apresenta mais problemas quando se usa RI do que quando se usamédia de lotes. A recomendação usual, no contexto da análise de estadoestacionário, é usar as médias de lotes preferencialmente às RI por causado possível viés das condições iniciais em cada uma das replicações.

7.3 REDUÇÃO DA VARIÂNCIA

A qualidade da estimativa é medida através da largura do intervalo deconfança. Este último depende da variância e do número de observações

N, no entanto o fator de redução deste último é 1

√N, seria oneroso

diminuir um intervalo de confança apenas aumentando N. As técnicas deredução de variância foram desenvolvidas para esta fnalidade. Estastécnicas são métodos estatísticos sofsticados que são muito delicados demanusear e aplicar. Mal aplicado, este tipo de técnica pode até mesmoproduzir o efeito oposto (Chen, 2015).

Modelagem e Simulação Discreta 162

7.3.1 NÚMEROS ALEATÓRIOS COMUNS

Esta técnica é utilizado principalmente na comparação de dois sistemassemelhantes, o cenário a seguir ilustra seu princípio. Seja comparar otempo de permanência médio (D) de duas flas A e B, A é do tipo FIFO e Bdo tipo LIFO (Chen, 2015).

O método de números aleatórios comuns (MNAC) consiste em enviar amesma sequência de chegada para as duas flas, com o mesmo tempo deserviço. Supor que foram executadas N simulações destes sistemas, a i-ésima simulação de A produz uma estimativa para E[D] que é denotadopor Di,A, similarmente Di,B é a estimativa para E[D] para a simulação de B.

Ao fnal destas N repetições, a média (DA) e a variância (s2A) da amostra A,

são dadas pelas fórmulas clássicas:

DA=1N∑i=1

N

Di , A 7.1

s A2 = 1

N−1∑i=1

N

(Di , A−DA)2

7.2

Similarmente, as fórmulas para a amostra B que são DB e s2B:

DB=1N∑i=1

N

Di , B 7.3

sB2= 1

N−1∑i=1

N

(Di , B−DB)2

7.4

A comparação entre A e B consiste em calcular a diferença Δ=DA-DB, que éum estimador de E[DA]-E[DB]. Como estas as estimativas são variáveisaleatórias, Δ é também uma variável aleatória. O método MNAC nospermite reduzir sua variância, ou seja:

Var [Δ]=Var [DA]+Var [DB]−2Cov [DA ,DB] 7.5

Se forem executadas duas simulações separadamente, ou seja, comdiferentes instantes de chegada e tempos de serviço (que obedecem, noentanto, as mesmas distribuições de chegada e de serviço), os resultadosserão independentes e, portanto, Cov[DA,DB] = 0.

Modelagem e Simulação Discreta 163

Com o MANC as duas simulações são correlacionadas. Esta correlação épositiva pois um aumento do tráfego levará a um aumento no número detarefas, tanto para A quanto para B e, assim, provoca um aumento noE[DA] e E[DB]. Assim, Var [Δ] é menor no caso das simulações serem feitascom uma sequência comum do que no caso de simulações independentes.A verdadeira diferença entre E[DA] e E[DB] é então melhor avaliado devidoa esta técnica.

7.3.2 VARIÁVEIS ANTITÉTICAS

O princípio deste método é simples e fácil de entender. Para estimar E[X]de alguma variável aleatória denotado por X.

Seja m1 uma estimativa de E[X], obtida de uma sequência de observaçõesgeradas a partir de uma sequência de variáveis aleatórias uniforme U(0,1),{ui} i = 1, …, L.

Seja m2 uma segunda estimativa de E[X], obtida de uma sequência deobservações geradas a partir de uma sequência de variáveis aleatóriasuniforme complementar {vi = 1-ui} i = 1, …, L.

Estas duas sequências, {u} e {v} estão negativamente correlacionados.Tem-se duas variáveis aleatória, m1 e m2, defnindo m = (m1+m2)/2. É claroque E[m] = E[X] e a variância de m é dada por:

Var [m ]=Var [m1]+Var [m2]+2Cov [m1 ,m2]

4=Var [X ]+Cov [m1 ,m2 ]

27.6

Como m1 e m2 são, por construção, negativamente correlacionados, avariância seria reduzida (Chen, 2015).

7.3.3 OBSERVAÇÕES

Pode-se destacar que um estudo por simulação é principalmente umestudo estatístico (ao passo que a construção de um modelo de simulaçãoé principalmente relevante para programação de computador). Assim, énecessário respeitar as regras e práticas da estatística. Uma precauçãoparticular a ser tomada em uma simulação, em comparação com um

Modelagem e Simulação Discreta 164

problema estatística clássica (por exemplo, uma pesquisa de opinião), éque a simulação lida com processos estocásticos e que é necessárioassegurar a estacionariedade e eliminar o período transitório a partir dele.Além disso, os resultados não podem ser considerados independentes.

Assim, é necessário escolher uma duração adequada da simulação, bemcomo um método adequado para obtenção dos dados. A orientação é paraobter estimativas das quantidades físicas (muitas vezes sob a forma devalores médios) com qualidade (medido através do intervalo deconfança), compatível com os objetivos do estudo.

7.4 ANÁLISE ESTATÍSTICA DE PARÂMETROS ESTACIONÁRIOS CÍCLICOS

As técnicas para avaliação de parâmetros estacionários cíclicos sãoaquelas aplicadas aos modelos sazonais de séries temporais como, porexemplo, modelos não-lineares, séries e transformadas de Fourrier, análiseharmônica, análise de componentes principais, análise espectral, modelosARIMA. Dentre estas, serão apresentadas os modelos sazonais, modelosnão-lineares e análise harmônica que são obtidas a partir de séries etransformadas de Fourrier.

7.4.1 MODELOS SAZONAIS

A análise de séries cíclicas, incluindo no modelo de regressão tanto atendência como o efeito sazonal, permite estimar seus efeitos emseparado. Mas, mesmo com este cuidado, a regressão de mínimosquadrados ainda pode apresentar problemas em razão de resíduosaleatórios. O modelo de regressão apresenta em suas equações umacomponente de tendência (T) e outra sazonal (S). Dada uma da amostrade n pontos {(t1,x1), (t2,x2), ..., (tn,xn)}, pode-se estabelecer os modelossazonais:

f (xi , ti)=T (xi ,t i)×S (x i , t i)+ϵi , modelo multiplicativo

Modelagem e Simulação Discreta 165

f (xi , ti)=T (xi ,t i)+S(x i , ti)+ϵi , modelo aditivo

Em que i ∈ [1,n] e ε é uma componente aleatória com média zero eserialmente não correlacionada.

As componentes sazonais e não sazonais são assumidas como sendocombinações lineares de variáveis fxadas e, portanto, o método dosmínimos quadrados com inclusão de variáveis sazonais (MMQ-VS) éutilizado para se obter os parâmetros de tendência e sazonalidade. Estemétodo é útil para séries que apresentam sazonalidade determinísticasem que os resíduos decorram de períodos prévios.

Os métodos de médias móveis multiplicativas ou aditivas são utilizadospara a dessazonalizarão de séries temporais fazendo o alisamento da sérieoriginal. Os modelos multiplicativos ou aditivos são selecionados emfunção do relacionamento entre as variáveis. Um teste simples para seconfrmar qual modelo é o mais adequado (multiplicativo ou aditivo) é aconstrução de um gráfco da amplitude sazonal em função da tendência.Assim, por exemplo, a plotagem pode apresentar as características dográfco a seguir:

• a reta ajustada apresenta pequena declividade - o que indica que não existe uma dependência da sazonalidade sobre a tendência, o que confrma a utilização de um modelo aditivo

• a reta ajustada apresenta declividade acentuada - o que indica uma dependência da sazonalidade sobre a tendência e confrmando a adequabilidade de um modelo multiplicativo para o relacionamento dos componentes da série

7.4.2 MODELOS NÃO-LINEARES

A regressão polinomial apresenta-se como uma ferramenta importante naidentifcação e modelagem da relação entre variáveis, o que é muito útilpara descrever fenômenos por meio de modelos matemáticos a partir dedados amostrais. A análise de regressão é uma técnica estatísticaamplamente utilizada para ajustar dados à funções matemáticas.

Os modelos matemáticos de regressão fundamentam-se em trêspressupostos estatísticos:

1. a relação entre as variáveis dependente e independente é determinística ao invésde estocástica

Modelagem e Simulação Discreta 166

2. os erros de medida são aleatórios, com distribuição normal, média zero e variânciaconstante

3. as variáveis explicativas não apresentam correlação entre si

O erro ou resíduo é a diferença entre os valores previstos pelo modelo deregressão para a variável dependente e os valores observados.

O método de estimação por mínimos quadrados pode ser usado para obteruma função aproximadora para um conjunto de pontos a partir de seusvalores. Considerando um conjunto de pontos {(t1,x1), (t2,x2), ..., (tn,xn)},pode-se utilizar um polinômio de grau p, f(t), como função aproximadorapara estes pontos, equações abaixo. Neste caso, o erro do modelo deregressão para cada ponto do conjunto de dados é calculado por εi.

f (t)=∑k=0

p

ak t k

εi = xi-yi, i ∈ [1, n] em que yi = f(ti).

Os coefcientes ak que minimizam o erro da função aproximadora f(t),podem ser calculados solucionando o sistema de equações obtido a partirde ∂ξ/∂ak= 0 em que ξ = Σεi

2 = Σ(xi-yi)2.

7.4.3 ANÁLISE HARMÔNICA

A análise harmônica permite representar funções como a sobreposição deondas chamadas de harmônicas a partir da generalização das séries deFourier e transformadas de Fourier. Devido às propriedades das sériesajustadas, a análise harmônica é útil na identifcação das frequências e nacaracterização da dinâmica do comportamento de um sistema.

Dada uma da amostra de n pontos {(t1,x1), (t2,x2), ..., (tn,xn)}, pode-seencontrar uma função harmônica que passa em cada um dos pontosutilizando uma série de n/2 funções harmônicas:

y i=a0+∑k=1

n/2

[akcos (wk ti)+bk sen (w k ti)] ou y i=a0+∑k=1

n/2

[ Ak cos (w k t i−φ k)] , i ∈ [1, n].

Modelagem e Simulação Discreta 167

em que, a0=1n∑i=1

n

x i , ak=2n∑i=1

n

yi cos(wk t i) , bk=2n∑i=1

n

y i sen(w k t i) e

n número de pares de dados (t,x) na amostran/2 número de harmônicos da série analisada

a0coefciente independente da série de Fourrier, conhecido por harmônico fundamental,

ak, bk coefcientes das séries de Fourrierωk frequência angular da onda de x, ωk = 2πk/nT período da onda de x, T = nti ordenação numérica dos tempos das medidas de xAk amplitude do k-ésimo harmônico, Ak= (ak

2+bk2)1/2

φk φk= tan-1(bk/ak)yi valor estimado para a medida de xi

A qualidade do ajuste da série harmônica deve ser avaliada como, porexemplo, pelos erros relativos percentuais (erp), coefciente de correlação(r) e índice de concordância de Willmot (icw):

erp=1n∑i=1

n y i− ymym

r=∑i=1

n

(x i−xm)( y i− ym)

√∑i=1

n

(x i−xm)2∑i=1

n

( y i− ym)2

icw=∑i=1

n

(x i− y i)2

∑i=1

n

(|x i−xm|+|y i− ym|)2

Exemplo 7.3: Ajustar uma série harmônica para as amostras de um sistema a partir dosdados: {(1,25,20), (2;24,3), (3;24,3), (4;21,4), (5;19,8), (6;17), (7;17,2), (8;17,6),(9;20,2), (10;21,6), (11;22,5), (12;24)}.

Analise Harmônica:

n = 12

n/2 = 6

T = 12

Modelagem e Simulação Discreta 168

a0 = 21.258333

k a[k] b[k] w[k] A[k] f[k]

1 3.2861 2.0632 0.5236 3.8801 0.5607

2 -0.6000 -0.1443 1.0472 0.6171 0.2361

3 0.0167 0.2000 1.5708 0.2007 1.4877

4 0.1167 0.1732 2.0944 0.2088 0.9780

5 0.1973 0.1868 2.6180 0.2717 0.7582

6 -0.5500 0.0000 3.1416 0.5500 -0.0000

i t[i] x[i] y[i]

1 1.0000 25.2000 25.4750

2 2.0000 24.3000 24.0250

3 3.0000 24.3000 24.5750

4 4.0000 21.4000 21.1250

5 5.0000 19.8000 20.0750

6 6.0000 17.0000 16.7250

7 7.0000 17.2000 17.4750

8 8.0000 17.6000 17.3250

9 9.0000 20.2000 20.4750

10 10.0000 21.6000 21.3250

11 11.0000 22.5000 22.7750

12 12.0000 24.0000 23.7250

Figura 41 - Tempo de resposta do Exemplo 7.1.

Modelagem e Simulação Discreta 169

7.5 ESTIMAÇÃO POR INTERVALOS DE CONFIANÇA

Se X = { x1, x2, ..., xn } são elementos de uma amostra aleatória, retiradada população, que possui o parâmetro φ, desconhecido. O intervalodefnido por (Li,Ls), em que Li e Ls são os limites inferior e superior dointervalo, é denominado intervalo de confança de ) com 1-) deprobabilidade de contê-lo, isto é, P[Li < φ < Ls]=1-). Os valores de Li e Lssão calculados a partir das observações X da amostra, 1-) é o nível deconfança associado ao intervalo e ) é o nome de nível de signifcânciaassociado ao teste de hipóteses. A Tabela 29 estabelece o intervalo deconfança para a média, variância e desvio padrão e suas estatísticascorrespondentes.

Tabela 30 - Intervalo de confança da média (μ), da variância (σ2) e dodesvio padrão (σ) de amostras aleatórias de tamanho n de uma populaçãonormal, com nível de signifcância ) e σ desconhecido

Parâmetro Li Ls Estatísticaμ -t)/2,n-1s/n1/2 t)/2,n-1s/n1/2 T = (xm- μ)/(s/n1/2) ∽ t-Student com gl = n-1σ2 (n-1)s2/χ2

)/2,n-1 (n-1)s2/χ21-)/2,n-1 Q = (n-1)s2/χ2 ∽ χ2 com gl = n-1

σ [(n-1)s2/χ2)/2,n-1]1/2 [(n-1)s2/χ2

1-)/2,n-1]1/2 Q = (n-1)s2/χ2 ∽ χ2 com gl = n-1

em que:

• t)/2,n-1: ponto crítico da distribuição t-Student, com n-1 graus de liberdade, à direita do qual se encontra a probabilidade (área) )/2

• χ2)/2,n-1: ponto crítico da distribuição χ2 com n-1 graus de liberdade à esquerda do

primeiro ponto de área )/2• χ2

1-)/2,n-1: ponto crítico da distribuição χ2 com n-1 graus de liberdade à direita do primeiro ponto de área )/2

7.6 MÉTODOS ESTATÍSTICOS PARA COMPARAR RESULTADOS SIMULADOS

A maioria dos projetos de análise de desempenho exigem comparar doisou mais sistemas e encontrar o melhor entre eles. A presente discussão,no entanto, será limitada a uma comparação de apenas dois sistemas decargas de trabalho muito semelhantes. Se houver mais do que doissistemas ou se os volumes de trabalho são signifcativamente diferentes, aanálise técnicas destes projetos experimental está além do escopo destetexto. O procedimento para número de observações pareadas e nãopareaedas são diferentes. Estes termos e os procedimentos

Modelagem e Simulação Discreta 170

correspondentes estão descritos a seguir iniciando com o teste para médiazero.

7.6.1 TESTE PARA MÉDIA ZERO

Um uso comum de intervalos de confança é para verifcar se um valormedido é signifcativamente diferente de zero. Ao comparar uma mediçãoaleatória com zero, as instruções têm de ser feitas probabilisticamente,isto é, a um nível desejado de confança. Se o valor medido passa no testede diferença, com uma probabilidade maior ou igual ao nível de confançaespecifcado, 100(1-))%, então o valor é signifcativamente diferente dezero.

O ensaio consiste na determinação de um intervalo de confança esimplesmente verifcar se o intervalo inclui zero, isto é, intercepta o eixo X.As quatro possibilidades são mostradas na Figura 42, onde IC é usadocomo uma abreviação para intervalo de confança. O IC é mostrado poruma linha vertical vermelha que se estende entre os limites de confançainferiores e superiores. A média da amostra é indicado por um círculo azul.Nos casos (a) e (b), o intervalo de confança inclui o zero, e, porconseguinte, os valores de medição não são signifcativamente diferentesde zero. Nos casos em (c) e (d), o intervalo de confança não inclui o zero,e, por conseguinte, o valor medido é signifcativamente diferente de zero.

Figura 42 - Teste para uma média zero, nos casos (a) e (b) os IC incluemzero e nos casos (c) e (d) os IC não incluem zero.

Exemplo 7.4: A diferença entre os tempos de processamento de duas diferentesimplementações do mesmo algoritmo foi medida em sete cargas de trabalho

Modelagem e Simulação Discreta 171

semelhantes. As diferenças entre elas são: {1,5 2,6 -1,8 1,3 -0,5 1,7 2,4}. Podemos dizercom confança de 99% que uma aplicação é melhor do que a outra?

Tamanho da amostra: n = 7

Média: 7,20/7 = 1,03

Variância da amostra: 2,57

Desvio padrão da amostra: 2.571/2= 1,60

Intervalo de confança: 1.03∓t×1.60/71/2 = 1.03 ∓ 0.605 t

100(1-)) = 99, ) = 0,01, 1-)/2 = 0,995

Do Anexo, o valor de t com seis graus de liberdade é t0,995;6 = 3,707.

O intervalo de confança com 99% = (-1,21; 3,27).

O intervalo de confança inclui o zero. Portanto, não podemos dizer com confança de99% que existem diferenças entre as aplicações.

O procedimento para o teste de média zero se aplica igualmente bem aqualquer outro conjunto de valores. Por exemplo, para testar se a média éigual a um dado valor m, um intervalo de confança é construída comoantes, e se o intervalo inclui m a hipótese de que a média é igual a m nãopode ser rejeitada para o dado nível de confança. O exemplo a seguirilustra esta extensão do teste.

Exemplo 7.5: Considere novamente os dados do Exemplo 7.4. Para testar se a diferença éigual a 1 com nível de confança de 99%, o intervalo de confança, tal como determinadono exemplo que é (-1,21; 3,27). O intervalo inclui 1. Assim, uma diferença igual a 1também é aceita a este nível de confança.

7.6.2 OBSERVAÇÕES PAREADAS

Se conduzir n experimentos em dois sistemas A e B de tal forma queexista uma correspondência de um-para-um entre a amostra de ordem ido sistema A a amostra de ordem i do sistema B, as observações sãochamados pareadas. Por exemplo, se xi e yi representam o desempenho i-ésima da carga de trabalho, as observações são chamados emparelhadas.Se não há correspondência entre as duas amostras, as observações sãochamadas não pareadas.

A análise de observações pareadas é simples. As duas amostras sãotratadas como uma única amostra de n pares. Para cada par, a diferençano desempenho é calculada. Um intervalo de confança pode serconstruída para a diferença. Se o intervalo de confança inclui o zero, ossistemas não são signifcativamente diferentes.

Exemplo 7.6: Seis cargas de trabalho semelhantes foram utilizados em dois sistemas. Asobservações são {(5,4;19,1) (16,6;3,5) (0,6;3,4) (1,4;2,5) (0,6;3,6) (7,3;1,7)}. Umsistema é melhor do que o outro?

Modelagem e Simulação Discreta 172

As diferenças de desempenho constitui uma amostra de seis observações, {-13,7 13,1-2,8 -1,1 -3,0 5,6}.

Média: -0,32

Variância da amostra: 81,62

Desvio padrão da amostra: 9,03

Intervalo de confança: -0,32 ∓ t(81,62/6)1/2=-0,32 ∓ 3,69 t

O 0,95 quantil de uma variável t com cinco graus de liberdade é 2,015

IC com intervalo de confança de 95%: -0,32 ∓ (2,015)(3,69)=(-7,75;7,11)

O intervalo de confança inclui o zero. Portanto, os dois sistemas não são diferentes.

7.6.3 OBSERVAÇÕES NÃO PAREADAS

Dadas duas amostras A e B de tamanhos na e nb, respectivamente. Asobservações são não pareadas no sentido em que não há correspondênciaentre os valores das amostras. Os passos para determinar o intervalo deconfança para a diferença entre as médias das duas amostras requerfazer a estimativa da variância e do número efetivo de graus de liberdadede cada amostra. O procedimento é o seguinte:

1. Cálculo das médias das amostras (ma e mb): ma = 1/na ∑ xai i ∈[1, na] e mb = 1/nb ∑xbi i ∈[1, nb]

2. Cálculo dos desvios padrão das amostras (sa e sb): sa = 1/(na-1)∑(xai-ma)2 e sb = 1/(nb-1)∑(xbi-mb)2

3. Cálculo da diferença entre as médias: ma-mb

4. Cálculo do desvio padrão da diferença das médias: s = (sa2/na + sb

2/nb)1/2

5. Cálcule do número efetivo de graus de liberdade: v = (sa2/na + sb

2/nb)2/[ (sa2/na)2/

(na+1)+(sb2/nb)2/(nb+1)] - 2

6. Cálculo do intervalo de confança ) para a diferença média: ma-mb∓t1-)/2,vs

Se o intervalo de confança inclui o zero, a diferença não é signifcativa a100(1-))% de confança. Se o intervalo de confança não inclui o zero,então o sinal da diferença média indica qual o sistema é melhor.

Exemplo 7.7: O tempo de processamento requerido para executar uma tarefa foi medidoem dois sistemas. O tempo no sistema A foi {5,36, 16,57, 0,62, 1,41, 0,64, 7,26}. Ostempos no sistema B foram {19,12, 3,52, 3,38, 2,50, 3,60, 1,74}. Os dois sistemas sãosignifcativamente diferentes?

Para o sistema A: ma = 5,31, sa2 = 37,92, na = 6

Para o sistema B: mb = 5,31, sb2 = 37,92, nb = 6

A diferença entre as médias: -0,33

Desvio padrão da diferença das médias = 3,698

Número efetivo de graus de liberdade v = 11,921

0,95 quantil da variável t, com 12 graus de liberdade = 1,71

Modelagem e Simulação Discreta 173

Intervalo de confança de 90% para a diferença de médias = (-6,92, 6,26)

O intervalo de confança inclui o zero. Portanto, a este nível de confança os doissistemas não são diferentes.

7.6.4 QUE NÍVEL ESTATÍSTICA DE CONFIANÇA USAR

Tem sido usado o nível de confança estatística de 95%. Isso não develevar a conclusão que os níveis de confança devem ser sempre altos. Aescolha do nível de confança baseia-se na relação entre a perda se oparâmetro está fora do intervalo e o ganho se o parâmetro está dentro dointervalo. Se a perda é alta em comparação com o ganho, os níveis deconfança devem ser elevados. Se a perda é insignifcante em comparaçãocom o ganho, um nível de confança menor é sufciente.

Ao se deparar com um parâmetro que é signifcativo apenas no nível deconfança de 50%, não deve ser assumido automaticamente que aconfança é baixa e que não se deve tomar decisões com base nesseparâmetro. Da mesma forma, mesmo que um parâmetro seja signifcativoao nível de confança de 99%, é possível que o nível de confança não sejasufcientemente elevado se a perda devida à decisão errada for enorme.

O valor do nível de confança deve ser contextualizado para cada caso.

7.7 COMPARAÇÃO DE SISTEMAS

Um dos usos mais importantes da análise de saída de simulação dizrespeito à comparação de sistemas competidores ou de confguraçõesalternativas de sistemas.

Neste caso, a simulação é muito bem equipada para analisar e comparardiferentes confgurações de sistemas computacionais. Dentre as técnicasdisponíveis para a comparação de sistemas tem-se o Intervalo deConfança da estatística clássica, já visto, os Números AleatóriosAntitéticos e os Teste de Hipóteses que são de uso geral.

Modelagem e Simulação Discreta 174

7.8 TESTES DE HIPÓTESE

Em algumas aplicações de simulação, o objetivo é decidir se umaafrmação feita sobre um parâmetro é falsa ou verdadeira. Por exemplo,pode-se avaliar as mudanças no tempo de espera em uma fla ao variar ataxa de chegada. Estas comparações são às vezes realizadas usandotestes de hipóteses, que devem levar em consideração a variação naturaldas medidas em simulação.

7.9 QUESTÕES

1. Como os métodos RI e ML tratam os transientes?2. Qual a utilidade de combinar os métodos RI e remoção de transientes?3. Qual a utilidade de combinar os métodos ML e remoção de transientes?

7.10 EXERCÍCIOS

1. Foram realizadas 4 rodadas de simulação, cada uma com 10 eventos. Os dados de Enq,Es e p0 estão listados abaixo. Calcule:

a) Intervalo de Confança da média (μ) de Enq, Es e U para ) = 10%, ) = 5% e ) = 1%.b) Intervalo de Confança da variância (σ2) de Enq, Es e p0 para ) = 10%, ) = 5% e ) = 1%.

Enq

i/j 1 2 3 4 5 6 7 8 9 101 4 3 2 2 3 3 3 4 3 22 7 5 4 5 5 4 4 7 4 43 12 18 7 2 8 8 6 9 10 64 20 3 13 5 4 12 9 7 8 9

Esi/j 1 2 3 4 5 6 7 8 9 101 1.83 1.83 1.83 1.71 1.83 1.98 1.86 1.83 1.71 1.742 2.13 2.04 2.01 2.16 2.13 1.86 2.07 2.07 1.98 2.073 2.40 2.52 2.4 2.34 2.34 2.31 2.46 2.25 2.46 2.404 2.64 2.94 2.58 2.88 2.70 2.55 2.85 2.55 2.79 2.58

p0

Modelagem e Simulação Discreta 175

i/j 1 2 3 4 5 6 7 8 9 101 0.373 0.346 0.385 0.374 0.362 0.347 0.397 0.340 0.408 0.4752 0.256 0.252 0.341 0.264 0.275 0.355 0.330 0.231 0.322 0.3743 0.181 0.108 0.200 0.171 0.216 0.230 0.197 0.195 0.149 0.2784 0.116 0.008 0.165 0.033 0.022 0.134 0.078 0.116 0.031 0.190

2. Foi realizada uma rodadas de simulação com 300 eventos de tempo no sistema, abaixorelacionados. Calcule:

a) Intervalo de Confança da média (μ) de s para ) = 10%, ) = 5% e ) = 1%.b) Intervalo de Confança da variância (σ2) de s para ) = 10%, ) = 5% e ) = 1%.

e s e s e s e s e s e s1 0,404 51 4,476 101 0,018 151 0,016 201 0,017 251 1,3212 1,955 52 0,017 102 3,169 152 3,266 202 0,408 252 0,7163 0,271 53 0,015 103 1,342 153 0,720 203 1,203 253 0,0174 0,829 54 1,373 104 0,362 154 0,309 204 0,018 254 0,3785 0,499 55 1,720 105 0,961 155 0,013 205 0,036 255 6,4786 0,208 56 2,215 106 0,225 156 1,066 206 1,989 256 0,1647 2,173 57 0,281 107 0,548 157 0,012 207 0,205 257 0,2128 2,431 58 0,432 108 0,017 158 0,898 208 0,101 258 0,0579 2,904 59 0,059 109 0,301 159 0,067 209 0,012 259 1,73710 0,033 60 0,391 110 3,862 160 0,189 210 2,285 260 0,82011 3,395 61 0,011 111 0,090 161 0,037 211 0,913 261 6,07812 0,026 62 0,123 112 5,624 162 1,260 212 0,259 262 0,09713 0,127 63 0,160 113 1,156 163 0,092 213 0,554 263 0,12614 0,059 64 2,769 114 0,044 164 0,009 214 0,090 264 0,13715 0,098 65 2,005 115 0,082 165 0,038 215 0,045 265 0,77816 2,198 66 1,549 116 1,832 166 1,421 216 3,903 266 0,49117 0,024 67 0,030 117 0,018 167 0,075 217 0,037 267 0,02918 0,010 68 0,058 118 0,018 168 0,051 218 0,014 268 0,44619 0,130 69 0,015 119 0,729 169 0,042 219 0,891 269 0,96020 0,300 70 0,016 120 0,049 170 0,362 220 0,114 270 0,10121 0,145 71 0,053 121 0,132 171 0,809 221 0,332 271 0,05622 0,792 72 0,136 122 0,456 172 0,015 222 0,245 272 2,13823 0,019 73 2,812 123 0,112 173 0,046 223 0,236 273 3,33924 5,175 74 4,056 124 0,112 174 5,506 224 0,094 274 1,14325 0,038 75 0,010 125 0,390 175 3,050 225 2,759 275 0,01726 0,256 76 0,883 126 0,014 176 3,730 226 0,475 276 6,55627 1,411 77 1,156 127 0,602 177 0,559 227 6,327 277 0,02628 0,023 78 0,074 128 2,128 178 0,010 228 0,010 278 0,33629 0,155 79 4,526 129 1,431 179 2,912 229 3,210 279 1,25130 0,195 80 0,026 130 1,960 180 0,143 230 0,081 280 1,00631 4,262 81 0,088 131 0,764 181 0,359 231 0,061 281 3,18332 1,030 82 0,010 132 5,004 182 6,021 232 0,052 282 0,09133 3,494 83 0,053 133 0,093 183 0,236 233 0,582 283 0,03634 3,851 84 0,014 134 0,430 184 0,009 234 0,016 284 0,91735 0,285 85 4,128 135 1,163 185 0,128 235 0,013 285 0,01336 5,334 86 0,190 136 2,220 186 0,055 236 0,537 286 0,02637 0,110 87 0,092 137 1,041 187 1,142 237 0,018 287 0,41038 0,023 88 0,081 138 0,011 188 0,023 238 5,487 288 0,00939 0,747 89 0,352 139 2,125 189 2,876 239 0,018 289 0,12640 2,567 90 0,901 140 0,014 190 0,055 240 2,864 290 0,02241 0,100 91 3,335 141 4,777 191 2,458 241 3,516 291 0,00942 2,170 92 3,692 142 6,056 192 0,429 242 4,778 292 0,01643 0,186 93 0,129 143 0,081 193 0,016 243 5,460 293 0,05744 2,922 94 0,033 144 0,418 194 5,417 244 1,292 294 0,02245 1,588 95 0,016 145 0,146 195 0,126 245 0,507 295 0,42246 0,049 96 0,010 146 0,526 196 0,223 246 4,404 296 2,82947 0,492 97 1,631 147 0,365 197 0,468 247 0,035 297 0,364

Modelagem e Simulação Discreta 176

48 1,356 98 0,304 148 0,021 198 0,230 248 0,115 298 0,02049 0,353 99 0,775 149 0,052 199 0,022 249 0,029 299 0,02850 0,400 100 0,045 150 0,252 200 0,125 250 0,804 300 0,242

3. Utilize o software QS-RI.cpp descrito no Anexo para realizar B rodadas de simulação,cada uma com M eventos e calcule os Intervalos de Confança da média (μ) e davariância (σ2) de nq, es, r e s para ) = 10%, ) = 5% e ) = 1% nos casos:

a) B = 10 e M = 1000b) B = 10 e M = 10000c) B = 10 e M = 100000

Compare estes resultados.4. Modifque o software QS-RI.cpp descrito no Anexo para realizar B rodadas desimulação, cada uma com M eventos e calcule os Intervalos de Confança da média (μ) eda variância (σ2) de p0 para ) = 10%, ) = 5% e ) = 1% nos casos:

a) B = 10 e M = 1000b) B = 10 e M = 10000c) B = 10 e M = 100000

Compare estes resultados.5. Utilize o software QS-ML.cpp descrito no Anexo para realizar rodadas de simulação comN eventos e calcule os Intervalos de Confança da média (μ) e da variância (σ2) de iat, st,nq, p0, w e r para ) = 10%, ) = 5% e ) = 1% nos casos:

a) N = 1000b) N = 10000c) N = 100000

Compare estes resultados.

7.11 RECURSOS PEDAGÓGICOS

7.11.1 SOFTWARE AH.HTML

Foi desenvolvido o software AH.html para realizar a Análise Harmônica deum conjunto de amostras ordenadas no tempo, {(t i,xi)}, i = 1, 2, ..., m,descrito no Algoritmo 7.1, a Tabela 31 apresenta os resultados da suaexecução.

Algoritmo 7.1: Software AH.html que faz a Análise Harmônica em HTML5 eJavascript

Modelagem e Simulação Discreta 177

1. <!doctype html>2. <html>3. <head>4. <meta charset="UTF-8">5. <title>Modelagem e Simulacao :: Analise Harmonica</title>6. <style>7. body { font-family: Arial; font-size: 32px }8. table{ font-family: Arial; font-size: 32px }9. </style>10. <script>11. //---------------------------------------------------------------------------

-12. // {(ti,xi)} - amostras das medidas ordenadas no tempo, i = 1, 2, ..., m13. // xe = a0 + Σ[ancos(nωti)+bansen(nωti) ] ou por x = a0 + Σ[Ancos(nωti-φn)],

n = 1, 2, 3, ..., m.14. // m - número de pares de dados (t,x) na amostra15. // n - número de harmônicos das séries analisadas, n = m/2 se m par e n = (m-

1)/2 se m ímpar16. // a0 - coeficiente das séries de Fourrier, conhecido por harmônico

fundamental, a0 = 1/mΣxi,17. // an, bn - coeficientes das séries de Fourrier, an = 2/nΣxicos(nωti) e bn =

2/nΣxisen(nωti)18. // w - frequência angular da onda de x, ω = 2π/T19. // T - período da onda de x, T = m20. // ti - ordenação numérica dos tempos das medidas de x, i = 0, 1, ..., T-121. // An - amplitude do n-ésimo harmônico, An= (an2+bn2)1/222. // fi fin = tan-1(bn/an)23. //---------------------------------------------------------------------------

-24. function clAH(){25. var n, T;26. var t = [], x = [], y = [], w = [], A = [], fi = [], a0, a = [], b = [];27. this.load = function(){28. t[ 0] = 1; x[ 0] = 25.8;29. t[ 1] = 2; x[ 1] = 23.3;30. t[ 2] = 3; x[ 2] = 24.3;31. t[ 3] = 4; x[ 3] = 22.4;32. t[ 4] = 5; x[ 4] = 19.8;33. t[ 5] = 6; x[ 5] = 15.1;34. t[ 6] = 7; x[ 6] = 17.2;35. t[ 7] = 8; x[ 7] = 15.6;36. t[ 8] = 9; x[ 8] = 20.2;37. t[ 9] = 10; x[ 9] = 21.6;38. t[10] = 11; x[10] = 22.5;39. t[11] = 12; x[11] = 24.0;40. n = 12;41. }42. this.analise = function(){43. T = n;44. a0 = 0.0;45. for( var i = 0; i < n; i++ )46. a0 += x[i];47. a0 = a0/n;48. for( var k = 0; k < n/2; k++ ){49. a[k] = b[k] = 0.0;50. w[k] = 2.0*Math.PI*(k+1)/n;51. for( var i = 0; i < n; i++ ){52. a[k] += x[i]*Math.cos( w[k]*t[i] );53. b[k] += x[i]*Math.sin( w[k]*t[i] );54. }55. a[k] *= 2.0/n;56. b[k] *= 2.0/n;57. A[k] = Math.sqrt(a[k]*a[k]+b[k]*b[k]);58. fi[k] = Math.atan(b[k]/a[k]);59. }60. for( var i = 0; i < n; i++ ){61. y[i] = a0;62. for( var k = 0; k < n/2; k++ )

Modelagem e Simulação Discreta 178

63. y[i] += a[k]*Math.cos(w[k]*t[i]) + b[k]*Math.sin(w[k]*t[i]);64. }65. }66. this.prn = function(){67. var html = "<br> Dados de Entrada";68. html += "<table border='1'>";69. html += "<tr><td>i<td>t[i]<td>x[i]";70. for( var i = 0; i < n; i++ )71. html += "<tr><td>" + (i+1) + "<td>" + t[i] + "<td>" + x[i];72. html += "</table>";73. html += "<br> Analise Harmonica";74. html += "<br> n = " + n ;75. html += "<br> n/2 = " + n/2;76. html += "<br> T = " + T ;77. html += "<br> a0 = " + a0.toFixed(5);78. html += "<table border='1'>";79. html += "<tr><td>k<td>a[k]<td>b[k]<td>w[k]<td>A[k]<td>fi[k]";80. for( var k = 0; k < n/2; k++ ){81. html += "<tr><td>" + (k+1) + "<td>" + a[k].toFixed(5) 82. + "<td>" + b[k].toFixed(5) + "<td>" 83. + w[k].toFixed(5) + "<td>" 84. + A[k].toFixed(5) + "<td>" + fi[k].toFixed(5);85. }86. html += "</table>";87. html += "<br> Dados de entrada (t,x) e valores estimados(y)";88. html += "<table border='1'>";89. html += "<tr><td>i<td>t[i]<td>x[i]<td>y[i]";90. for( var i = 0; i < n; i++ )91. html += "<tr><td>" + (i+1) + "<td>" + t[i] + "<td>" + x[i] +

"<td>" + y[i].toFixed(5);92. html += "</table>";93. return html;94. }95. this.erros = function(){96. var sum, erp, num, den1, den2, xm, ym, html = "";97. sum = erp = xm = ym = 0.0;98. for( var i = 0; i < n; i++ ){99. erp += (y[i]-x[i])/x[i];100. sum += y[i]-x[i];101. xm += x[i];102. ym += y[i];103. }104. if( n > 0 ) xm /= n;105. if( n > 0 ) ym /= n;106. html += "<br> Erros";107. html += "<br> sum = " + sum.toFixed(5);108. html += "<br> erp(%) = " + (erp*100.0).toFixed(5);109. num = den1 = den2 = 0.0;110. for( var i = 0; i < n; i++ ){111. num += (x[i]-xm)*(y[i]-ym);112. den1 += Math.pow(x[i]-xm,2.0);113. den2 += Math.pow(y[i]-ym,2.0);114. }115. html += "<br> r = " + (num/Math.sqrt(den1*den2)).toFixed(5);116. num = den = 0.0;117. for( var i = 0; i < n; i++ ){118. num += Math.pow(y[i]-x[i],2.0);119. den += Math.pow(Math.abs(y[i]-ym)+Math.abs(x[i]-xm),2.0);120. }121. html += "<br> icw = " + (1.0-num/den).toFixed(5);122. return html;123. }124. }125. function AHTeste(){126. var AH = new clAH();127.128. document.write( "<br> Analise Harmonica " );129. AH.load();

Modelagem e Simulação Discreta 179

130. AH.analise();131. document.write( AH.prn() );132. document.write( AH.erros() );133. }134. </script>135. </head>136. <body onLoad="AHTeste()"> </body>137. </html>

Tabela 31 - Resultados da execução do Software AH.html do Algoritmo 7.1

Analise HarmonicaDados de Entradai t[i] x[i]1 1 25.8

2 2 23.3

3 3 24.3

4 4 22.4

5 5 19.8

6 6 15.1

7 7 17.2

8 8 15.6

9 9 20.2

10 10 21.6

11 11 22.5

12 12 24

Analise Harmonican = 12n/2 = 6T = 12a0 = 20.98333k a[k] b[k] w[k] A[k] f[k]

1 3.68935 2.40187 0.52360 4.40230 0.57710

2 -0.70000 -0.63509 1.04720 0.94516 0.73681

3 0.33333 0.30000 1.57080 0.44845 0.73282

4 -0.08333 0.83716 2.09440 0.84130 -1.47158

5 0.42732 -0.05187 2.61799 0.43046 -0.12079

6 -1.30000 0.00000 3.14159 1.30000 -0.00000

Dados de entrada (t,x) e valores estimados(y)i t[i] x[i] y[i]

1 1 25.8 26.45000

2 2 23.3 22.65000

3 3 24.3 24.95000

4 4 22.4 21.75000

Modelagem e Simulação Discreta 180

5 5 19.8 20.45000

6 6 15.1 14.45000

7 7 17.2 17.85000

8 8 15.6 14.95000

9 9 20.2 20.85000

10 10 21.6 20.95000

11 11 22.5 23.15000

12 12 24 23.35000

Errossum = -0.00000erp(%) = -1.51749r = 0.98344icw = 0.99092

7.11.2 SOFTWARE QS-RI.CPP

Foi desenvolvido o software QS-RI.cpp para gerar dados para o Método deReplicações Independentes, descrito no Algoritmo 7.2. O método Simulateé executado B vezes. O método Start é executado juntamente comSimulate e nele é está o comando srand( time(NULL)/b) que inicia ogerador de números aleatórios com uma nova semente devido à divisãopor b que muda a cada execução de Simulate. O método RI formata umarquivo csv que pode ser manipulado por planilhas. Os dados de entradasão B (tamanho da amostra), M (numero de repeticao), l e m. Os dados dasaída devem ser escolhido pelo usuário. A Tabela 32 apresenta osresultados da sua execução para a variável de estado r.

Algoritmo 7.2: Software QS-RI.cpp para gerar dados para o Método deReplicações Independentes

1. #include <cstdlib>2. #include <cmath>3. #include <ctime>4. #include <string>5. #include <vector>6. #include <algorithm>7. #include <iomanip>8. #include <fstream>9. #include <sstream>10. #include <iomanip>11.12. using namespace std;13.14. class clQS{15. private:16. int M, B;17. double l, m;18. vector<int> nq;19. vector<double> iat, st, at, bs, es;20.

Modelagem e Simulação Discreta 181

21. public:22. clQS ( int, int, double, double );23. double F ( double );24. void Start ( int );25. void Event ( int );26. void Simulate( int );27. void Nq ( void );28. string RI ( void );29. };30.31. clQS::clQS( int M, int B, double l, double m ){32. this->M = M;33. this->B = B;34. this->l = l;35. this->m = m;36.37. iat.resize(M);38. st .resize(M);39. at .resize(M);40. bs .resize(M);41. es .resize(M);42. nq .resize(M);43. }44.45. double clQS::F( double p ){46. double u = (rand()+1.0)/(RAND_MAX+2.0);47. return exp(-u/p)/p;48. }49.50. void clQS::Start( int b ){51. srand(time(NULL)/b);52.53. iat[0] = F(l);54. st [0] = F(m);55. at [0] = bs[0] = iat[0];56. es [0] = at[0] + st[0];57. }58.59. void clQS::Event( int e ){60. iat[e] = F(l);61. st [e] = F(m);62. at [e] = iat[e] + at[e-1];63. bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];64. es [e] = bs[e] + st[e];65. }66.67. void clQS::Simulate( int b ){68. Start(b);69. for( int e = 1; e < M; e++ )70. Event(e);71. Nq();72. }73.74. void clQS::Nq( void ){75. nq[0] = 0;76. for( int e = 1; e < M; e++ ){77. int c = e-1;78. nq[e] = 0;79. while( at[e] < es[c] ){80. nq[e] += 1;81. c--;82. }83. }84. }85.86. string clQS::RI( void ){87. stringstream csv;88. csv << setprecision(4);

Modelagem e Simulação Discreta 182

89. csv << fixed;90.91. csv << "Replicação Independente da variável de estado r" << endl;92.93. csv << "e;";94. for( int m = 0; m < M; m++ )95. csv << m+1 << ";";96. csv << endl;97.98. for( int b = 0; b < B; b++ ){99. csv << b+1 << ";";100. Simulate(b+1);101. for( int m = 0; m < M; m++ ){102. double r = es[m]-at[m];103. csv << r << ";";104. }105. csv << endl;106. }107. return csv.str();108. }109.110. int main( void ){111. int M = 10, // tamanho da amostra112. B = 10; // numero de repeticao113. double l = 0.120,114. m = 0.150;115. string str;116.117. clQS *Q = new clQS(M,B,l,m);118. str = Q->RI();119.120. ofstream file;121. file.open("QS.RI.C++.out.csv");122. replace(str.begin(), str.end(),'.',',');123. file << str;124. file.close();125.126. delete Q;127. return 0;128. }

Tabela 32 - Resultado da execução do software QS-RI.cpp descrito noAlgoritmo 7.2, para a variável de estado r.

b/m 1 2 3 4 5 6 7 8 9 101 0,22050,4658 0,6764 3,5684 1,4313 0,1118 0,0137 0,4166 1,1554 2,28132 0,05890,0683 0,0192 3,8030 3,6830 1,4185 2,9933 2,2738 0,0358 0,29323 1,55682,4875 0,0605 0,5135 0,7012 0,3493 0,2714 0,9894 3,8098 4,10764 0,01020,2565 3,0170 8,0925 8,1072 5,6588 5,7686 5,8997 5,9111 3,24325 0,10330,5454 0,0106 0,0273 0,0678 0,0951 0,2516 2,2037 0,9182 0,69146 0,05240,1010 0,2584 0,3056 1,4460 0,0875 0,0989 0,1097 0,4098 0,54257 1,45690,6872 0,5965 0,5232 0,7389 3,2410 3,1811 2,1061 5,9367 5,97668 0,35470,7720 0,0718 4,6308 4,6328 2,5152 0,5294 0,3758 6,2829 2,88099 0,07270,0487 0,0647 0,2770 0,0142 0,5122 0,7547 5,0301 2,7159 2,869910 0,01351,3452 1,4016 1,3126 1,7056 2,3530 2,1318 2,8878 2,3025 2,6071

7.11.3 SOFTWARE QS-ML.CPP

Foi desenvolvido o software QS-ML.cpp para gerar dados para o Método deMédias de Lotes, descrito no Algoritmo 7.3. O método ML formata um

Modelagem e Simulação Discreta 183

arquivo csv que pode ser manipulado por planilhas. Os dados de entradasão N, l e m. Os dados da saída são e, iat, st, at, bs, es, nq, p0, w e r. ATabela 33 apresenta os resultados da sua execução.

Algoritmo 7.3: Software QS-ML.cpp para gerar dados para o Método deMédias de Lotes em C++

129. //---------------------------------------------------------------------------130. #include <iostream>131. #include <cmath>132. #include <ctime>133. #include <string>134. #include <vector>135. #include <algorithm>136. #include <fstream>137. #include <sstream>138. //---------------------------------------------------------------------------139. using namespace std;140. //---------------------------------------------------------------------------141. class clEvent{142. public:143. int nq;144. double iat, st, at, bs, es;145. };146. class clQS{147. public:148. double l, m, U, E[6], V[6];149. vector<clEvent> Event;150. void Start ( double, double );151. void Simulate ( int );152. void Statistic( int, int );153. private:154. double F ( double );155. void Events ( void );156. void Nq ( void );157. };158. double clQS::F( double x ){159. double u = (rand()+1.0)/(RAND_MAX+2.0); // u in (0,1)160. return -x*log(u);161. }162. void clQS::Start( double l, double m ){163. srand(time(NULL));164. this->l = l;165. this->m = m;166. clEvent X;167. X.iat = F(l);168. X.st = F(m);169. X.at = X.iat;170. X.bs = X.at;171. X.es = X.at + X.st;172. Event.push_back(X);173. Nq();174. }175. void clQS::Events( void ){176. clEvent X, Xa = Event[Event.size()-1];177. X.iat = F(l);178. X.st = F(m);179. X.at = Xa.at + X.iat;180. X.bs = X.at > Xa.es ? X.at : Xa.es;181. X.es = X.bs + X.st;182. Event.push_back(X);183. Nq();184. }185. void clQS::Nq( void ){186. size_t e = Event.size()-1, c = e-1;187. Event[e].nq = 0;

Modelagem e Simulação Discreta 184

188. while( Event[e].at < Event[c].es ){189. Event[e].nq += 1;190. c--;191. }192. }193. void clQS::Simulate( int N ){194. for( int e = 0; e < N; e++ )195. Events();196. }197. void clQS::Statistic( int Ni, int Nf ){198. double x[6], Sx[6], Sxx[6];199. for( int s = 0; s < 6; s++ )200. Sx[s] = Sxx[s] = 0.0;201. for( size_t e = Ni; e < Nf; e++ ){202. clEvent X = Event[e];203. x[0] = X.iat ;204. x[1] = X.st ;205. x[2] = X.nq ;206. x[3] = X.bs-X.at; //w207. x[4] = X.es-X.bs; //s208. x[5] = X.es-X.at; //r209. for( int s = 0; s < 6; s++ ){210. Sx [s] += x[s];211. Sxx[s] += x[s]*x[s];212. }213. }214. for( int s = 0; s < 6; s++ ){215. int n = Nf-Ni;216. E[s] = Sx [s]/n;217. V[s] = Sxx[s]/n-E[s]*E[s];218. }219. U = Sx[1]/(Event[Nf-1].es-Event[Ni].bs);220. }221. string ML( void ){222. int B = 10, // lote223. K = 50, // eventos por lote224. N = 5000; // total de eventos225. double l = 0.070,226. m = 0.045;227. stringstream str;228. clQS QS;229. str << fixed;230. str.precision(3);231. str << "<html><body>"232. << "</table>"233. << "<br><br><table border='1' cellpadding='0' cellspacing='0'>"234. << "<tr><td>b<td>T"235. << "<td>E[iat]<td>E[st]<td>E[nq]<td>E[w]<td>E[s]<td>E[r]"236. << "<td>U<td>p0";237. QS.Start(l,m);238. QS.Simulate(N);239. for( int b = 0; b < B; b++ ){240. int Ni = N-(b+1)*K, Nf = N-b*K;241. cout << "Lote: " << b+1 << endl;242. QS.Statistic(Ni,Nf);243. str << "<tr><td>" << b+1244. << "<td>" << QS.Event[Nf-1].es-QS.Event[Ni].bs245. << "<td>" << QS.E[0] << "<td>" << QS.E[1] << "<td>" << QS.E[2]246. << "<td>" << QS.E[3] << "<td>" << QS.E[4] << "<td>" << QS.E[5]247. << "<td>" << QS.U248. << "<td>" << 1.0-QS.U;249. }250. str << "</table>";251. return str.str();252. }253. int main( void ){254. string str = ML();255. ofstream file;

Modelagem e Simulação Discreta 185

256. file.open("QS-ML-C++.out.html");257. replace(str.begin(), str.end(),'.',',');258. file << str;259. file.close();260. return 0;261. }

Tabela 33 - Resultado de uma execução do software QS-ML.cpp descrito noAlgoritmo 7.3

B T E[iat] E[st] E[nq] E[w] E[s] E[r] U p0

1 3,524 0,078 0,047 2,720 0,152 0,047 0,199 0,672 0,3282 3,182 0,056 0,045 1,460 0,066 0,045 0,111 0,711 0,2893 3,402 0,068 0,041 2,400 0,099 0,041 0,140 0,609 0,3914 2,577 0,054 0,049 7,380 0,350 0,049 0,399 0,946 0,0545 4,001 0,078 0,043 1,540 0,073 0,043 0,116 0,537 0,4636 3,629 0,073 0,039 0,740 0,033 0,039 0,073 0,543 0,4577 4,072 0,087 0,037 0,660 0,029 0,037 0,066 0,456 0,5448 3,146 0,064 0,049 3,520 0,187 0,049 0,236 0,784 0,2169 2,867 0,059 0,037 1,760 0,062 0,037 0,098 0,638 0,36210 4,202 0,086 0,051 1,040 0,051 0,051 0,101 0,601 0,399

Por meio de planilha pode-se calcular os valores da média (m), desviopadrão (s), índice de confança (IC) para ) = 5% e n = 10 e a covariância(Cov) dos resultados da Tabela 33, conforme descrito abaixo, e interpretarseus resultados.

E[iat] E[st] E[nq] E[w] E[s] E[r] U p0

m 0,070 0,044 2,322 0,110 0,044 0,154 0,650 0,350s 0,012 0,005 1,993 0,098 0,005 0,101 0,140 0,140IC 0,009 0,004 1,426 0,070 0,004 0,073 0,100 0,100Cov (%) 17,057 11,829 85,847 89,216 11,829 65,878 21,515 39,904

Modelagem e Simulação Discreta 186

8 SIMULAÇÃO DE SISTEMAS COMPUTACIONAIS

São diversos os sistemas computacionais, a Figura 43 representa umexemplo simples de um sistema de computação, constituido por umServidor Web conectado à Internet por meio de um Roteador. Nestesistema, mensagens da Internet são recebidas pelo Roteador que as enviapara o Servidor Web. O Servidor Web recebe estas mensagens, processa-as, e as enviam de volta para o Roteador. O Roteador recebe asmensagens do Servidor Web e as envia de volta à Internet.

Tendo em vista a grande variedade dos sistemas computacionais, seráadotado o termo tarefa para indicar uma solicitação feita a um elementodestes sistemas.

Considerando o sistema computacional da Figura 43, se a taxa de serviçosde chegada no Roteador for menor ou igual que sua capacidade deprocessamento então ele enviará os serviços ao Servidor Web num fuxocontínuo senão serviços serão armazenados na memória do roteador paraposterior processamento. Neste caso, diz-se que os serviços estão sendocolocados em uma fla do Roteador. Semelhante raciocínio é válido para osdemais elementos do sistema.

Figura 43 - Sistema computacional, servidor web conectado a rede internetpor meio de um roteador.

Modelagem e Simulação Discreta 187

O sistema computacional da Figura 43 pode ser modelado por doissistemas de flas em série como mostrado na Figura 44, o primeiro para oprocesso de chegada no Roteador e o segundo para o Servidor Web. Ataxa de entrada de serviços do Roteador é a que chega da Internet. Apósprocessar os serviços, o Roteador os envia para o Servidor Web. A taxa deentrada de serviços no Servidor Web é a taxa de saída do Roteador. Apósprocessar os serviços, o Servidor Web os envia para o Roteador. A taxa deentrada de serviços no Roteador é a mesma que sai do Servidor Web. Porfm, após processar os serviços, o Roteador os envia para a Internet.

Figura 44 - Modelo de um sistema computacional por meio de flas.

Pode-se modelar os elementos de sistemas computacionais por meio deuma rede de sistemas de flas, um sistema de flas para cada elemento.

A arquitetura de um sistema de hardware é mostrado na Figura 45, umdiagrama de blocos de nível de sistema do Sun Fire X4150 Server comSerial Attached SCSI – SAS. Estes servidores foram projetados parafornecer o melhor desempenho com alta confabilidade e baixo consumode energia. Eles possuim múltiplos processadores que se conectam a umcontrolador de memória Northbridge Hub (MCH) que, por sua vez, seconecta a um Southbridge I/O (IOH) e seus subsistemas (SunMicrosystems, 2016).

Modelagem e Simulação Discreta 188

Figura 45 - Diagrama de blocos do Sun Fire X4150 Server com SerialAttached SCSI – SAS (Sun Microsystems, 2016).

A simulação de sistemas computacionais permite estudar seucomportamento de modo detalhado e fazer previsões sobre o mesmo.

8.1 MODELO DE REDE DE SISTEMAS DE FILA (QSN)

Os modelos de Rede de Sistemas de Fila (QSN - Queue System Network)representa sistemas computacionais por meio de Sistemas de Filas (QS -Queue System) interconectadas e com topologia bem defnida. As QSN'sA/B/c/K/m/Z podem ser simuladas por computador e, inicialmente seráapresentado o modelo conceitual de uma QSN com QS M/M/1 e, emseguida, o seu modelo computacional será discutido e implementado emC++ e Javascript. A dinâmica temporal de uma QSN típica seráapresentada em HTML, permitindo o acompanhamento gráfco de suasvariáveis de entrada, de estado e de saída.

No Capítulo 2 foi apresentado os Modelos Conceitual e Computacional deSistemas de Fila M/M/1. A diferença principal entre os modelos de uma

Modelagem e Simulação Discreta 189

simples QS e QSN's é que, por haver mais de um QS, o primeiro QS terádados de entrada e, a partir do segundo QS, os dados de entrada serão osdados de saída dos QS anteriores, Figura 46.

Figura 46 - Rede de Sistemas de Fila indicando o fuxo de dados de entrada(iat - interarrival time) do primeiro Sistema de Fila e a sua saida (idt - interdeparture time) como entrada para o próximo Sistema de Fila.

8.2 MODELO CONCEITUAL DE REDES DE SISTEMASDE FILA

Um Modelo Conceitual de uma QSN de Filas M/M/1 será apresentado ediscutido e, a partir dele, Modelos Conceituais de QSN's de Filas M/M/c/K/mpodem ser derivados dele.

As tarefas chegam uma por vez e são processadas igualmente uma porvez nos Sistemas de Fila das RSF's. Desta forma, os Sistemas de Fila deuma RSF possuem três variáveis básicas:

1. taxa de chegada (λ) ou intervalo entre chegadas (iat - interarrival time) em que λ= 1/E[iat]

2. taxa de serviço (μ) ou tempo de serviço (st - service time) com μ = 1/E[st]3. taxa de saida (γ) ou intervalo entre saidas (idt - inter departure time) sendo γ =

1/E[idt]

A Figura 47 ilustra o Modelo Conceitual de um Sistemas de Fila M/M/1 deuma QSN. Conforme enfatizado, a saída dos QS's torna-se importante nocaso de QSN's.

Modelagem e Simulação Discreta 190

Figura 47 - Modelo conceitual de um Sistemas de Fila em rede.

Numa Rede de Sistemas de Filas (QSN) as tarefas deve ser processadosem cada um dos Sistemas de Filas, sequencialmente, de acordo com aarquitetura da rede. A saída do Servidor anterior serve de entrada para aFila do próximo Sistema de Fila. Os dados de entrada da Rede de Filas sãoos intervalos entre chegadas na primeira Fila e os dados de saída de cadaServidor do Sistema de Filas. Os parâmetros da Rede de Filas são:

• número de QS, qs• os valores de A/B/c/K/m/Z de cada QS• sequência dos eventos, S• número de elementos da sequência S, s• número de eventos a serem simulados, N• iat do primeiro QS• st de cada QS

Será utilizado o estudo de caso da Figura 48 para apresentar o modeloconceitual de Redes de Sistemas de Filas tendo em vista que há muitascombinações possíveis de Sistemas de Filas. A partir de deste estudo decaso, pode-se generalizar o modelo proposto e adaptá-lo a outras redes.

Figura 48 - Esquema do estudo de caso de uma Rede de Sistemas de Fila.

Modelagem e Simulação Discreta 191

A QSN da Figura 48 possui 4 QS, numeradas de 0 a 3, QS0, QS1, QS2 eQS3. Os parâmetros desta rede são:

• qs = 4• os QS da RSF são M/M/1• sequência dos eventos: 0 → 1, 1 → 2, 2 →1, 1→ 3, logo S = [ 0, 1, 2, 1, 3 ] e s = 5• número de eventos, N (defnido pelo usuário)• D = [ iat0, st0, st1, st2, st3 ]

Em resumo, os parâmetrso da QSN da Figura 48, para 2000 eventos são:qs = 4, s = 5, S = [ 0, 1, 2, 1, 3 ], N = 2000, D = [ iat0, st0, st1, st2, st3 ].

Nota sobre a sequência de eventos numa QSN

O nível de detalhes do modelo de sequência dos eventos é a visão de piorcaso. A trajetória de uma tarefa numa rede pode variar com a natureza daprópria tarefa e da rede, assim há várias sequências possíveis para astarefas. Visando uma modelagem simples, adotou-se o critério do piorcaso: todas tarefas seguem a maior sequência possível na rede.Esta abordagem simplifca:

• a compreensão do problema• o modelo conceitual• o modelo computacional

Esta abordagem também é a favor da segurança da solução uma vez quesuperestima os resultados.

8.3 VALORES INICIAIS DA SIMULAÇÃO

Inicialmente, o cronômetro é zerado, as Filas estão vazias e os Servidoresestão ociosos. Na Tabela 34 estão apresentados os valores inciais de iat,at, bs, es e idt de cada QS para S = [ 0, 1, 2, 1, 3 ]. Os cálculos levam emconta as equações abaixo:

• at[1] = bs[1] = iat[1]• es[1] = at[1] + st[1]

Tabela 34 - Valores iniciais de iat, at, bs, es e idt dos SF da primeirasequência S

Modelagem e Simulação Discreta 192

e qs iat at bs es idt1 0 iat0 at0 = iat0 bs0 = at0 es0 = bs0+st0 idt0 = es0

1 1 iat1 = idt0 at1 = iat1 bs1 = at1 es1 = bs1+st1 idt1 = es1

1 2 iat2 = idt1 at2 = iat2 bs2 = at2 es2 = bs2+st2 idt2 = es2

2 1 iat1 = idt2 at1 = iat1+at1 bs1 = at1 > es2 ? at1 : es2 es1 = bs1+st1 idt1 = es1[2] - es1[1]1 3 iat3 = idt1 at3 = iat3 bs3 = at3 es3 = at3+st3 idt1 = es1

Como pode ser observado na Tabela 34, os valores de QS0, QS1, QS2 e QS3

são calculados para e = 0 conforme as equações dos valores iniciais mas,devido à sequência S, 0 → 1 → 2 →1→ 3, QS3 também requer os cálculosreferentes a e = 1. Para e = 1, QS2 antecede QS1 e, neste caso, os valorescalculados para de QS1 devem levar em conta os valores de QS2, emparticular bs1 depende de at1 e es2. O cálculo de idt de QS1 para e = 1,idt1[1], leva em conta seus valores de es, ou seja, idt1[1] = es1[2] -es1[1].

Os valores iniciais dependem intrinsecamente da sequência, ela determinaa inter-relação dos valores iniciais. O número de eventos iniciais tambémdependem da sequência, QS1 teve dois eventos iniciais e os demaisapenas um evento cada.

8.3.1 CÁLCULO DE IAT

Os valores de iat de QS0 são dados de entrada, para os demais QS, osvalores de iat são iguais ao idt do QS anterior da sequência. Como foivisto, apenas QS0 requer dados de iat, os valores de iat demais SF's sãocalculados a partir dos valores de at.

8.3.2 CÁLCULO DE AT, BS, ES E IDT

Tomando i ∈ [0,qs) como índice de QS na sequência, tem-se:

• ati[e] = iati[e] + ati[e-1]• bsi[e] = ati[e] > esi[e-1] ? ati[e] : esi-1[e-1]• esi[e] = bsi[e] + sti[e]• idti[e] = bsi[e] + bsi[e-1]

Exceto idt, os demais valores são calculados de forma semelhante aoSistema de Fila Simples, já descritos no Capítulo 2.

Modelagem e Simulação Discreta 193

8.3.3 CÁLCULO DE NQ

O cálculo de nq de cada QS é feito de forma semelhante ao Sistema deFila Simples.

8.4 MODELO COMPUTACIONAL DE REDES DE SISTEMAS DE FILAS

O modelo computacional de QNS de Sistemas de Fila M/M/1 pode ser vistona Tabela 35. Ele é constituído por três classes, a saber: clEvent, clQS eclQSN. A classe clQSN possui um vetor de classes clQS que, por sua vez,possui um vetor de classes clEvent. O método Confg, confgura os dadosda RSF, Start permite calcular os valores iniciais, Simulate executa assimulações fazendo uso de Open (para rede aberta) ou Close (para redefechada). Por fm, Nq calcula os valores de nq de cada QS. O cálculo dasestatísticas não está implementado.

Tabela 35 - Classe clMM1 do Modelo Computacional dos Sistemas de FilaM/M/1

clEvent iat st at bs es idt nq

clQS l m clEvent Event[]

clQSN s, S[] clQS QS[] Confg(qs, D[], s, S[]) F() Start(i, f) Open(i, f) Close(i, f) Nq() Simulate()

Modelagem e Simulação Discreta 194

Veja mais detalhes a seguir:

Tabela 36 - Descrição das classes do Modelo Computacional dos Sistemasde Fila M/M/1

clEvent eventos dos QS com as variáveis de estado iat, ts, at, bs, idt e nq

clQS são os QS da QSN, com os parâmetros l (em substituição a λ) e m (em substituição a μ) além do vetor de eventos Event[]

clQSN

representa a QSN, com os parâmetros s, o vetor S[], além do vetor de QS[] e os métodos:

• Confg(qs,D[],s,S[]) para confgurar a rede, defnindo o número de QS, os valores de l e m para QS0 e de m para os demais QS, o vetor sequência e o seu tamanho, s

• F() para calcular os valores de l e m dos eventos simulados• Start(i,f) para calcular os valores iniciais da simulação em que QSi é

anterior a QSf

• Open(i,f) simula um evento de uma RSF fechada, em que QSi é anteriora QSf

• Close(i,f) simula um evento de uma RSF aberta, em que QSi é anterior a QSf

• Nq() calcula os valores do tamanho da fla dos QS• Simulate() simula a sequência de eventos de uma RSF aberta ou

fechada

O software QSN.cpp, escrito em C++, implementa o modelocomputacional de um QNS M/M/1 e pode ser visto no Algoritmo 8.1. Osresultados sa simulação do software QSN.cpp estão apresentados naTabela 38. Devido ao uso de números aleatórios, a execução do QSN.cpppode variar a cada execução.

Nota sobre as funções Open e Close de QSN.cpp:

O algoritmo QSN.cpp não é preciso devido às funções Open e Close. Estasfunções simulam corretamente os processos as tarefas visitam uma únicavez cada QS do sistema.

Quando há mais de uma visita em uma QS pode ocorrer que uma a tarefaanterior chegue entre as visitas de cada ciclo, neste caso as funções Opennão funcionam corretamente pois elas foram codifcadas para consideraros valores da última visita do ciclo.

Estas incertezas não inviabilizam o uso do QSN.cpp e elas podem serminimizadas utilizando os valores médios de repetições independentes.

Esta abordagem, embora tenham erros, tem grande valor pedagógico pois

Modelagem e Simulação Discreta 195

permite a compreensão dos processos de sistema de flas de modo maissimples.

Algoritmo 8.1: Software QSN.cpp para simulação uma Rede de Sistemasde Fila M/M/1

1. #include <cstdlib>2. #include <cmath>3. #include <ctime>4. #include <string>5. #include <vector>6. #include <algorithm>7. #include <iomanip>8. #include <fstream>9. #include <sstream>10. #include <iomanip>11.12. using namespace std;13.14. class clEvent{15. public:16. int nq;17. double iat, st, at, bs, es, idt;18. };19.20. class clQS{21. public:22. double l, m;23. double T, Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, 24. Ew, Vw, Es, Vs, Er, Vr, p0, U;25. vector<clEvent> Event;26. };27.28. class clQSN{29. private:30. vector<clQS> QS;31. int s, *S;32. double F ( double );33. void Start( int, int );34. void Open ( int, int );35. void Close( int, int );36. public:37. void Config ( int, double*, int, int* );38. void Nq ( void );39. void Simulate ( void );40. void Calculate( void );41. string Html ( void );42. };43. void clQSN::Config( int q, double *D, int s, int *S ){44. this->s = s;45. this->S = S;46. QS.clear();47. for( int i = 0; i < q; i++ ){48. clQS x;49. x.l = 0.0;50. if( i == 0 ) x.l = D[i];51. x.m = D[i+1];52. QS.push_back(x);53. }54. for( int i = 1; i < s; i++ ){55. Start(S[i-1],S[i]);

Modelagem e Simulação Discreta 196

56. }57. srand( time(NULL) );58. }59. double clQSN::F( double x ){60. double u = double(rand()+1)/(RAND_MAX+2.0);61. return -x*log(u);62. }63.64. void clQSN::Start( int i, int f ){65. clEvent e, b, a;66. if( i == 0 ){67. e.iat = F( QS[i].l );68. e.st = F( QS[i].m );69. e.at = e.iat;70. e.bs = e.at;71. e.es = e.at + e.st;72. e.idt = e.es;73. e.nq = 0;74. QS[i].Event.push_back(e);75. }76. b = QS[i].Event[ QS[i].Event.size()-1 ];77. e.iat = b.es;78. e.st = F( QS[f].m );79. e.at = b.es;80. e.bs = e.at > b.es ? e.at : b.es;81. e.es = e.bs + e.st;82.83. int n = QS[f].Event.size();84.85. if( n > 0 ){86. b = QS[f].Event[n-1];87. e.idt = e.es - b.es;88. }89. else e.idt = e.es;90. e.nq = 0;91. QS[f].Event.push_back(e);92. }93. void clQSN::Open( int i, int f ){94. clEvent e, b;95. b = QS[i].Event[ QS[i].Event.size()-1 ];96.97. if( i == 0 ){98. e.iat = F( QS[i].l );99. e.st = F( QS[i].m );100. e.at = b.at + e.iat;101. e.bs = e.at > b.es ? e.at : b.es;102. e.es = e.bs + e.st;103. e.idt = e.es - b.es;104. QS[i].Event.push_back(e);105. }106.107. e.iat = b.idt;108. e.st = F( QS[f].m );109.110. b = QS[f].Event[ QS[f].Event.size()-1 ];111. e.at = b.at + e.iat;112. e.bs = e.at > b.es ? e.at : b.es;113. e.es = e.bs + e.st;114. e.idt = e.es - b.es;115. QS[f].Event.push_back(e);116. }117. void clQSN::Close( int i, int f ){118. clEvent e, b;119. b = QS[i].Event[ QS[i].Event.size()-1 ];120. e.iat = b.idt;121. e.st = F( QS[f].m );122.123. b = QS[f].Event[ QS[f].Event.size()-1 ];

Modelagem e Simulação Discreta 197

124. e.at = b.at + e.iat;125. e.bs = e.at > b.es ? e.at : b.es;126. e.es = e.bs + e.st;127. e.idt = e.es - b.es;128. QS[f].Event.push_back(e);129. }130.131. void clQSN::Nq( void ){132. for( int q = 0; q < QS.size(); q++ )133. for( int e = 1; e < QS[q].Event.size(); e++ ){134. QS[q].Event[e].nq = 0;135. for( int c = 0; c < e; c++ )136. if( QS[q].Event[e].at < QS[q].Event[c].es )137. QS[q].Event[e].nq += 1;138. }139. }140. void clQSN::Simulate( void ){141. for( int i = 1; i < s; i++ ){142. Open(S[i-1],S[i]);143. //Close(S[i-1],S[i]);144. }145. }146. void clQSN::Calculate( void ){147. for( int q = 0; q < QS.size(); q++ ){148. int N = QS[q].Event.size();149. double Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw,150. Es, Vs, Er, Vr, p0, U, T;151. Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Vnq = Ew = Vw =152. Es = Vs = Er = Vr = p0 = U = T = 0.0;153.154. for( int e = 0; e < QS[q].Event.size(); e++ ){155. Eiat += QS[q].Event[e].iat;156. Est += QS[q].Event[e].st;157. Eidt += QS[q].Event[e].idt;158. Enq += QS[q].Event[e].nq;159. Ew += QS[q].Event[e].bs-QS[q].Event[e].at;160. Es += QS[q].Event[e].es-QS[q].Event[e].bs;161. Er += QS[q].Event[e].es-QS[q].Event[e].at;162. }163. Eiat /= N;164. Est /= N;165. Eidt /= N;166. Enq /= N;167. Ew /= N;168. Es /= N;169. Er /= N;170.171. for( int e = 0; e < QS[q].Event.size(); e++ ){172. Viat += pow(QS[q].Event[e].iat - Eiat,2.0);173. Vst += pow(QS[q].Event[e].st - Est ,2.0);174. Vidt += pow(QS[q].Event[e].idt - Eidt,2.0);175. Vnq += pow(QS[q].Event[e].nq - Enq ,2.0);176. Vw += pow(QS[q].Event[e].bs-QS[q].Event[e].at - Ew ,2.0);177. Vs += pow(QS[q].Event[e].es-QS[q].Event[e].bs - Es ,2.0);178. Vr += pow(QS[q].Event[e].es-QS[q].Event[e].at - Er ,2.0);179. }180.181. Viat /= (N-1);182. Vst /= (N-1);183. Vidt /= (N-1);184. Vnq /= (N-1);185. Vw /= (N-1);186. Vs /= (N-1);187. Vr /= (N-1);188.189. T = QS[q].Event[N-1].es;190. p0 = QS[q].Event[0].bs;191. for( int e = 1; e < N; e++ )

Modelagem e Simulação Discreta 198

192. if( QS[q].Event[e].at > QS[q].Event[e-1].es )193. p0 += QS[q].Event[e].at-QS[q].Event[e-1].es;194. p0 /= T;195. U = 1.0-p0;196.197. QS[q].T = T;198. QS[q].Eiat = Eiat;199. QS[q].Viat = Viat;200. QS[q].Est = Est;201. QS[q].Vst = Vst;202. QS[q].Eidt = Eidt;203. QS[q].Vidt = Vidt;204. QS[q].Enq = Enq;205. QS[q].Vnq = Vnq;206. QS[q].Ew = Ew ;207. QS[q].Vw = Vw ;208. QS[q].Es = Es ;209. QS[q].Vs = Vs ;210. QS[q].Er = Er ;211. QS[q].Vr = Vr ;212. QS[q].p0 = p0 ;213. QS[q].U = U ;214. }215. }216.217. string clQSN::Html( void ){218. stringstream htm;219. htm << setprecision(4);220. htm << fixed;221.222. htm << "<html><style> table {font-size:20px;}</style><body>";223. htm << "<br> QSN Table";224. htm << "<br> QS Number: " << QS.size();225. htm << "<br> Sequence: ";226.227. for( int i = 1; i < s; i++ ){228. htm << S[i-1] << " - " << S[i] << "; ";229. }230.231. htm << "<br><table border='1' cellpadding='0' cellspacing='0'>";232. htm << "<tr><td>QS<td>l<td>m";233. for( int qs = 0; qs < QS.size(); qs++ ){234. htm << "<tr>"235. << "<td>" << qs236. << "<td>" << QS[qs].l237. << "<td>" << QS[qs].m;238. }239. htm << "</table><br><br>";240.241. for( int qs = 0; qs < QS.size(); qs++ ){242. htm << "<br> QS: " << qs;243. htm << "<br><table border='1' cellpadding='0' cellspacing='0'>";244. htm << "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>idt<td>nq";245. for( int e = 0; e < QS[qs].Event.size(); e++ ){246. htm << "<tr>"247. << "<td>" << e248. << "<td>" << QS[qs].Event[e].iat249. << "<td>" << QS[qs].Event[e].st250. << "<td>" << QS[qs].Event[e].at251. << "<td>" << QS[qs].Event[e].bs252. << "<td>" << QS[qs].Event[e].es253. << "<td>" << QS[qs].Event[e].idt254. << "<td>" << QS[qs].Event[e].nq;255. }256. htm << "</table>";257.258. htm << "<br>Summary<br>"259. << "<br> QS = " << qs

Modelagem e Simulação Discreta 199

260. << "<br> N = " << QS.size()261. << "<br> T = " << QS[qs].T262. << "<br> Eiat = " << QS[qs].Eiat263. << "<br> Viat = " << QS[qs].Viat264. << "<br> Est = " << QS[qs].Est265. << "<br> Vst = " << QS[qs].Vst266. << "<br> Eidt = " << QS[qs].Eidt267. << "<br> Vidt = " << QS[qs].Vidt268. << "<br> Enq = " << QS[qs].Enq269. << "<br> Vnq = " << QS[qs].Vnq270. << "<br> Ew = " << QS[qs].Ew271. << "<br> Vw = " << QS[qs].Vw272. << "<br> Es = " << QS[qs].Es273. << "<br> Vs = " << QS[qs].Vs274. << "<br> Er = " << QS[qs].Er275. << "<br> Vr = " << QS[qs].Vr276. << "<br> p0 = " << QS[qs].p0277. << "<br> U = " << QS[qs].U278. << "<br><br><br>";279. }280. htm << "</html>";281. return htm.str();282. }283. int main( void ){284. int N = 10, qs = 4;285. int s = 6, S[] = { 0, 1, 2, 1, 2, 3 };286. double D[] = { 0.010, 0.040, 0.060, 0.080, 0.100 };287. string str;288.289. clQSN QSN;290. QSN.Config(qs,D,s,S);291. for( int e = 0; e < N; e ++ )292. QSN.Simulate();293. QSN.Nq();294. QSN.Calculate();295.296. str = QSN.Html();297.298. ofstream file;299. file.open("QSN-Basico.C++.out.html");300. replace(str.begin(), str.end(),'.',',');301. file << str;302. file.close();303.304. return 0;305. }

A arquitetura do sistema é defnida pelas variáveis qs, D, s e S. A primeiraindica o número de elementos da arquitetura e a segunda o desempenhodeles, descrevendo assim a parte física da arquitetura. As duas últimasvariáveis, por sua vez, indicam o caminho percorrido por cada pacotedentro a arquitetura física defnida.

Vale ressaltar o primeiro elemento do vetor de visitas deve ser 0, e que,em caso de redes abertas (confguração padrão), não podem haver maisvisitas ao mesmo.

Modelagem e Simulação Discreta 200

As variáveis utilizadas no software QSN.cpp está sumarizada na Tabela 37e os seus diagramas de classes e atividades são mostrados na Figura 49 ena Figura 50, respectivamente.

Tabela 37 - Variáveis utilizadas no software QSN.cpp

Nome DescriçãoEntradas

N Número de eventosl Média do intervalo entre entradas m Média do tempo de serviço (st)qs Número de elementos da arquiteturaD iat do sistema seguido dos tempos de serviço dos qs elementoss Número de visitas por pacoteS Ondem das visitas do pacote, onde cada elemento i segue a

regra i∈ [0,qs )∨i∈N , onde o elemento 0 é o nó de entrada da arquitetura

Variáveisiat Intervalo entre chegadas de tarefas na flast Tempo de serviço no servidorat Tempo da chegada da tarefa na flabs Tempo da chegada da tarefa no servidores Tempo da saída da tarefa no servidoridt Intervalo entre saídas de tarefas na flanq Comprimento da flaw Tempo na flas Tempo no servidorr Tempo do sistema de flaT Duração da simulaçãop0 Probabilidade de servidor ociosoU Utilização do servidor

ModificadoresE[var] Média da variável [var]V[var] Variância da variável [var]

Figura 49 - Diagrama de classes do software QSN.cpp

Modelagem e Simulação Discreta 201

Figura 50 - Diagrama de atividades do software QSN.cpp

Tabela 38 - Resultado da execução do software QSN.cpp descrito na Tabela8.3

QSN TableQS Number: 4Sequence: 0 - 1; 1 - 2; 2 - 1; 1 - 2; 2 – 3;

QS l m0 0,0100 0,04001 0,0000 0,06002 0,0000 0,08003 0,0000 0,1000

QS: 0e iat st at bs es idt nq0 0,0668 0,0229 0,0668 0,0668 0,0898 0,0898 01 0,0029 0,0411 0,0698 0,0898 0,1308 0,0411 12 0,0058 0,0186 0,0756 0,1308 0,1494 0,0186 23 0,0097 0,0386 0,0853 0,1494 0,1880 0,0386 34 0,0000 0,0860 0,0853 0,1880 0,2740 0,0860 45 0,0071 0,0203 0,0924 0,2740 0,2943 0,0203 46 0,0009 0,0354 0,0933 0,2943 0,3298 0,0354 57 0,0010 0,0745 0,0943 0,3298 0,4043 0,0745 68 0,0104 0,0326 0,1047 0,4043 0,4369 0,0326 79 0,0068 0,0394 0,1114 0,4369 0,4763 0,0394 810 0,0094 0,0055 0,1209 0,4763 0,4818 0,0055 9

Modelagem e Simulação Discreta 202

Summary

QS = 0N = 4T = 0,4818Eiat = 0,0110Viat = 0,0004Est = 0,0377Vst = 0,0006Eidt = 0,0438Vidt = 0,0008Enq = 4,4545Vnq = 8,2727Ew = 0,1673Vw = 0,0161Es = 0,0377Vs = 0,0006Er = 0,2050Vr = 0,0160p0 = 0,1387U = 0,8613

QS: 1e iat st at bs es idt nq0 0,0898 0,0986 0,0898 0,0898 0,1884 0,1884 01 0,2054 0,0322 0,2054 0,2054 0,2375 0,0492 02 0,0898 0,0487 0,2951 0,2951 0,3439 0,1063 03 0,0998 0,0478 0,3949 0,3949 0,4427 0,0989 04 0,0411 0,0218 0,4360 0,4427 0,4646 0,0218 15 0,0563 0,1231 0,4923 0,4923 0,6154 0,1509 06 0,0186 0,0118 0,5109 0,6154 0,6272 0,0118 17 0,0699 0,0351 0,5808 0,6272 0,6623 0,0351 28 0,0386 0,0293 0,6194 0,6623 0,6916 0,0293 29 0,1566 0,0680 0,7760 0,7760 0,8441 0,1525 010 0,0860 0,1284 0,8620 0,8620 0,9904 0,1464 011 0,0455 0,1077 0,9075 0,9904 1,0981 0,1077 112 0,0203 0,0369 0,9278 1,0981 1,1350 0,0369 213 0,1446 0,1442 1,0724 1,1350 1,2793 0,1442 214 0,0354 0,0323 1,1078 1,2793 1,3115 0,0323 215 0,0968 0,1114 1,2046 1,3115 1,4229 0,1114 216 0,0745 0,0315 1,2791 1,4229 1,4544 0,0315 317 0,0028 0,0235 1,2819 1,4544 1,4779 0,0235 318 0,0326 0,0860 1,3145 1,4779 1,5638 0,0860 319 0,0889 0,0716 1,4034 1,5638 1,6354 0,0716 420 0,0394 0,0077 1,4427 1,6354 1,6431 0,0077 421 0,0149 0,0372 1,4576 1,6431 1,6803 0,0372 4

Summary

QS = 1N = 4T = 1,6803Eiat = 0,0703Viat = 0,0025Est = 0,0607Vst = 0,0017Eidt = 0,0764Vidt = 0,0030Enq = 1,6364Vnq = 2,0519

Modelagem e Simulação Discreta 203

Ew = 0,0824Vw = 0,0057Es = 0,0607Vs = 0,0017Er = 0,1431Vr = 0,0054p0 = 0,2057U = 0,7943

QS: 2e iat st at bs es idt nq0 0,1884 0,0170 0,1884 0,1884 0,2054 0,2054 01 0,2375 0,0587 0,2375 0,2375 0,2963 0,0909 02 0,1063 0,0522 0,3439 0,3439 0,3961 0,0998 03 0,0989 0,1305 0,4427 0,4427 0,5733 0,1772 04 0,0218 0,0563 0,4646 0,5733 0,6296 0,0563 15 0,1509 0,0516 0,6154 0,6296 0,6812 0,0516 16 0,0118 0,0699 0,6272 0,6812 0,7511 0,0699 27 0,0351 0,0162 0,6623 0,7511 0,7673 0,0162 28 0,0293 0,1566 0,6916 0,7673 0,9239 0,1566 29 0,1525 0,0509 0,8441 0,9239 0,9748 0,0509 110 0,1464 0,0298 0,9904 0,9904 1,0203 0,0455 011 0,1077 0,2852 1,0981 1,0981 1,3834 0,3631 012 0,0369 0,1446 1,1350 1,3834 1,5279 0,1446 113 0,1442 0,0040 1,2793 1,5279 1,5319 0,0040 214 0,0323 0,0968 1,3115 1,5319 1,6287 0,0968 315 0,1114 0,2081 1,4229 1,6287 1,8367 0,2081 316 0,0315 0,0028 1,4544 1,8367 1,8396 0,0028 417 0,0235 0,0330 1,4779 1,8396 1,8725 0,0330 518 0,0860 0,0889 1,5638 1,8725 1,9614 0,0889 419 0,0716 0,1156 1,6354 1,9614 2,0770 0,1156 420 0,0077 0,0149 1,6431 2,0770 2,0919 0,0149 521 0,0372 0,0202 1,6803 2,0919 2,1121 0,0202 6

Summary

QS = 2N = 4T = 2,1121Eiat = 0,0849Viat = 0,0041Est = 0,0774Vst = 0,0052Eidt = 0,0960Vidt = 0,0075Enq = 2,0909Vnq = 3,6104Ew = 0,1622Vw = 0,0241Es = 0,0774Vs = 0,0052Er = 0,2397Vr = 0,0241p0 = 0,1933U = 0,8067

QS: 3e iat st at bs es idt nq0 0,2963 0,1049 0,2963 0,2963 0,4012 0,4012 01 0,1772 0,0211 0,4735 0,4735 0,4946 0,0934 0

Modelagem e Simulação Discreta 204

2 0,0516 0,0283 0,5251 0,5251 0,5533 0,0587 03 0,0162 0,2003 0,5413 0,5533 0,7536 0,2003 14 0,0509 0,3328 0,5922 0,7536 1,0864 0,3328 15 0,3631 0,0777 0,9553 1,0864 1,1641 0,0777 16 0,0040 0,0149 0,9592 1,1641 1,1790 0,0149 27 0,2081 0,0153 1,1673 1,1790 1,1943 0,0153 18 0,0330 0,4062 1,2003 1,2003 1,6065 0,4122 09 0,1156 0,0520 1,3159 1,6065 1,6585 0,0520 110 0,0202 0,1005 1,3361 1,6585 1,7589 0,1005 2

Summary

QS = 3N = 4T = 1,7589Eiat = 0,1215Viat = 0,0152Est = 0,1231Vst = 0,0181Eidt = 0,1599Vidt = 0,0232Enq = 0,8182Vnq = 0,5636Ew = 0,1031Vw = 0,0157Es = 0,1231Vs = 0,0181Er = 0,2262Vr = 0,0293p0 = 0,2302U = 0,7698

A classe clQSN.js, escrita em Javascript, também implementa o modelocomputacional de um QNS M/M/1 e pode ser visto no Algoritmo 8.2.

Algoritmo 8.2: clQSN.js - classe Javascript para simulação de Rede deSistemas de Fila M/M/1

1. function clQSN(qs,D,S){2. var QS = [];3. this.F = function(x){4. var u = Math.random();5. return -x*Math.log(u);6. }7. this.Start = function(i,f){8. var n, e = [], b;9. if( i == 0 ){10. e.iat = this.F( QS[i].l );11. e.st = this.F( QS[i].m );

Modelagem e Simulação Discreta 205

12. e.at = e.iat;13. e.bs = e.at;14. e.es = e.at + e.st;15. e.idt = e.es;16. e.nq = 0;17. QS[i].Event.push(e);18. }19. e = [];20. b = QS[i].Event[ QS[i].Event.length-1 ];21. e.iat = b.es;22. e.st = this.F( QS[f].m );23. e.at = b.es;24. e.bs = e.at > b.es ? e.at : b.es;25. e.es = e.bs + e.st;26.27. n = QS[f].Event.length;28. if( n > 0 ){29. b = QS[f].Event[n-1];30. e.idt = e.es - b.es;31. }32. else e.idt = e.es;33. e.nq = 0;34. QS[f].Event.push(e);35. }36. this.Config = function(){37. for( var i = 0; i < qs; i++ ){38. var Q = [];39. Q.l = 0.0;40. if( i == 0 ) Q.l = D[i];41. Q.m = D[i+1];42. Q.Event = [];43. QS.push(Q);44. }45. for( var i = 1; i < S.length; i++ ){46. this.Start(S[i-1],S[i]);47. }48. }49. this.Open = function(i,f){50. var e = [], b;51. b = QS[i].Event[ QS[i].Event.length-1 ];52. if( i == 0 ){53. e.iat = this.F( QS[i].l );54. e.st = this.F( QS[i].m );55. e.at = b.at + e.iat;56. e.bs = e.at > b.es ? e.at : b.es;57. e.es = e.bs + e.st;58. e.idt = e.es - b.es;59. e.nq = 0;60. QS[i].Event.push(e);61. }62. e = [];63. e.iat = b.idt;64. e.st = this.F( QS[f].m );65. b = QS[f].Event[ QS[f].Event.length-1 ];66. e.at = b.at + e.iat;67. e.bs = e.at > b.es ? e.at : b.es;68. e.es = e.bs + e.st;69. e.idt = e.es - b.es;70. e.nq = 0;71. QS[f].Event.push(e);72. }73. this.Close = function(i,f){74. var e = [], b;75. b = QS[i].Event[ QS[i].Event.length-1 ];76. e.iat = b.idt;77. e.st = this.F( QS[f].m );78. b = QS[f].Event[ QS[f].Event.length-1 ];79. e.at = b.at + e.iat;

Modelagem e Simulação Discreta 206

80. e.bs = e.at > b.es ? e.at : b.es;81. e.es = e.bs + e.st;82. e.idt = e.es - b.es;83. e.nq = 0;84. QS[f].Event.push(e);85. }86. this.Nq = function(){87. for( var q = 0; q < QS.length; q++ )88. for( var e = 1; e < QS[q].Event.length; e++ ){89. QS[q].Event[e].nq = 0;90. for( var c = 0; c < e; c++ )91. if( QS[q].Event[e].at < QS[q].Event[c].es )

QS[q].Event[e].nq += 1;92. }93. }94. this.Simulate = function(){95. for( var i = 1; i < S.length; i++ ){96. this.Open(S[i-1],S[i]);97. //this.Close(S[i-1],S[i]);98. }99. this.Nq();100. this.Calculate();101. }102. this.Calculate = function(){103. for( var q = 0; q < QS.length; q++ ){104. var N = QS[q].Event.length;105. var Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw, Es, Vs,

Er, Vr, p0, U, T;106. Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Enq = Vnq = Ew = Vw

= Es = Vs = Er = Vr = p0 = U = T = 0.0;107. for( var e = 0; e < QS[q].Event.length; e++ ){108. Eiat += QS[q].Event[e].iat;109. Est += QS[q].Event[e].st;110. Eidt += QS[q].Event[e].idt;111. Enq += QS[q].Event[e].nq;112. Ew += QS[q].Event[e].bs-QS[q].Event[e].at;113. Es += QS[q].Event[e].es-QS[q].Event[e].bs;114. Er += QS[q].Event[e].es-QS[q].Event[e].at;115. }116. Eiat /= N;117. Est /= N;118. Eidt /= N;119. Enq /= N;120. Ew /= N;121. Es /= N;122. Er /= N;123.124. for( var e = 0; e < QS[q].Event.length; e++ ){125. Viat += Math.pow(QS[q].Event[e].iat -

Eiat,2.0);126. Vst += Math.pow(QS[q].Event[e].st - Est ,

2.0);127. Vidt += Math.pow(QS[q].Event[e].idt -

Eidt,2.0);128. Vnq += Math.pow(QS[q].Event[e].nq - Enq ,

2.0);129. Vw += Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at - Ew ,

2.0);130. Vs += Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs - Es ,

2.0);131. Vr += Math.pow(QS[q].Event[e].es-QS[q].Event[e].at - Er ,

2.0);132. }133. Viat /= (N-1);134. Vst /= (N-1);135. Vidt /= (N-1);136. Vnq /= (N-1);137. Vw /= (N-1);

Modelagem e Simulação Discreta 207

138. Vs /= (N-1);139. Vr /= (N-1);140.141. T = QS[q].Event[N-1].es;142. p0 = QS[q].Event[0].bs;143. for( var e = 1; e < N; e++ )144. if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=

QS[q].Event[e].at-QS[q].Event[e-1].es;145. p0 /= T;146. U = 1.0-p0;147.148. QS[q].T = T ;149. QS[q].Eiat = Eiat;150. QS[q].Viat = Viat;151. QS[q].Est = Est ;152. QS[q].Vst = Vst ;153. QS[q].Eidt = Eidt;154. QS[q].Vidt = Vidt;155. QS[q].Enq = Enq ;156. QS[q].Vnq = Vnq ;157. QS[q].Ew = Ew ;158. QS[q].Vw = Vw ;159. QS[q].Es = Es ;160. QS[q].Vs = Vs ;161. QS[q].Er = Er ;162. QS[q].Vr = Vr ;163. QS[q].p0 = p0 ;164. QS[q].U = U ;165. }166. }167. this.Html = function(){168. var html = "";169. html += "<html><style> table {font-size:20px;}</style><body>"170. + "<br> QSN Table"171. + "<br> QS Number: " + QS.length;172.173. html += "<br> Sequence: ";174. for( var i = 1; i < S.length; i++ ){175. html += S[i-1] + " - " + S[i] + "; ";176. }177.178. html += "<br><table border='1' cellpadding='0' cellspacing='0'>";179. html += "<tr><td>QS<td>l<td>m";180. for( var q = 0; q < QS.length; q++ )181. html += "<tr><td>" + q182. + "<td>" + QS[q].l .toFixed(3)183. + "<td>" + QS[q].m .toFixed(3);184. html += "</table><br><br>";185. for( var q = 0; q < QS.length; q++ ){186. html += "<br> QS: " + (q+1)187. + "<br><table border='1' cellpadding='0' cellspacing='0'>"188. + "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>idt<td>nq";189.190. for( var e = 0; e < QS[q].Event.length; e++ ){191. html += "<tr>"192. + "<td>" + e193. + "<td>" + QS[q].Event[e].iat.toFixed(3)194. + "<td>" + QS[q].Event[e].st .toFixed(3)195. + "<td>" + QS[q].Event[e].at .toFixed(3)196. + "<td>" + QS[q].Event[e].bs .toFixed(3)197. + "<td>" + QS[q].Event[e].es .toFixed(3)198. + "<td>" + QS[q].Event[e].idt.toFixed(3)199. + "<td>" + QS[q].Event[e].nq .toFixed(0);200. }201. html += "</table>"202. + "<br>Summary<br>"203. + "<br> N = " + QS[q].Event.length.toFixed(0)204. + "<br> T = " + QS[q].T .toFixed(3)

Modelagem e Simulação Discreta 208

205. + "<br> Eiat = " + QS[q].Eiat.toFixed(3)206. + "<br> Viat = " + QS[q].Viat.toFixed(3)207. + "<br> Est = " + QS[q].Est .toFixed(3)208. + "<br> Vst = " + QS[q].Vst .toFixed(3)209. + "<br> Eidt = " + QS[q].Eidt.toFixed(3)210. + "<br> Vidt = " + QS[q].Vidt.toFixed(3)211. + "<br> Enq = " + QS[q].Enq .toFixed(3)212. + "<br> Vnq = " + QS[q].Vnq .toFixed(3)213. + "<br> Ew = " + QS[q].Ew .toFixed(3)214. + "<br> Vw = " + QS[q].Vw .toFixed(3)215. + "<br> Es = " + QS[q].Es .toFixed(3)216. + "<br> Vs = " + QS[q].Vs .toFixed(3)217. + "<br> Er = " + QS[q].Er .toFixed(3)218. + "<br> Vr = " + QS[q].Vr .toFixed(3)219. + "<br> p0 = " + QS[q].p0 .toFixed(3)220. + "<br> U = " + QS[q].U .toFixed(3)221. + "<br><br><br>";222. }223. html += "</html>";224. return html;225. }226. }

8.5 SIMULAÇÃO DE SISTEMAS DE CLIENTE/SERVIDOR WEB EM CAMADAS

8.5.1 SISTEMA CLIENTE/SERVIDOR WEB EM UMA CAMADA FÍSICA

Um Sistema Cliente/Sevidor Web em uma camada física é ilustrada naFigura 51 8.5, com 3 QS, numeradas de 0 a 2, QS0, QS1 e QS2. Aarquitetura desta rede está mostrada na Figura 52. É uma rede abertacom os parâmetros:

• qs = 3• os QS deste sistema são M/M/1• sequência dos eventos: 0 → 1, 1 → 2, 2 →1 e 1→ 0, S = [ 0, 1, 2, 1, 0 ] e s = 5• número de eventos, N (defnido pelo usuário)• D = [ iat0, st0, st1, st2 ]

Modelagem e Simulação Discreta 209

Figura 51 - Sistema Cliente/Servidor Web em uma camada física.

Figura 52 - A arquitetura do Sistema Cliente/Servidor Web da Figura 51.

Em resumo, os parâmetros da QSN da Figura 51, para simulação de 2000eventos são: qs = 3, s = 5, S = [ 0, 1, 2, 1, 0 ], N = 2000, D = [ iat0, st0,st1, st2, st3 ]. Os valores de iat e st devem ser fornecidos pelo usuário.

8.5.2 SISTEMA CLIENTE/SEVIDOR WEB EM DUAS CAMADAS FÍSICAS

Um Sistema Cliente/Sevidor Web em duas camadas físicas é ilustrada naFigura 53, com 4 QS, numeradas de 0 a 3, QS0, QS1, QS2 e QS3. Aarquitetura desta rede está mostrada na Figura 54. É uma rede abertacom os parâmetros:

• qs = 4• os QS deste sistema são M/M/1• sequência dos eventos: 0 → 1, 1 → 2, 2 → 1, 1 → 3, 3 → 1, 1 → 2, 2 → 1, 1 → 0, S = [

0, 1, 2, 1, 3, 1, 2, 1, 0 ] e s = 9• número de eventos, N (defnido pelo usuário)• D = [ iat0, st0, st1, st2, st3]

Modelagem e Simulação Discreta 210

Figura 53 - Sistema Cliente/Sevidor Web em duas camadas físicas.

Figura 54 - A arquitetura do Sistema Cliente/Servidor Web da Figura 53.

Em resumo, os parâmetrso da QSN da Figura 53, para simulação de 2000eventos são: qs = 4, s = 9, S = [ 0, 1, 2, 1, 3, 1, 2, 1, 0 ], N = 2000, D =[ iat0, st0, st1, st2, st3 ]. Os valores de iat e st devem ser fornecidos pelousuário.

8.5.3 SISTEMA CLIENTE/SEVIDOR WEB EM TRÊS CAMADAS FÍSICAS

Um Sistema Cliente/Servidor Web em três camadas físicas é ilustrada naFigura 55, com 5 QS, numeradas de 0 a 4, QS0, QS1, QS2, QS3 e QS4. Aarquitetura desta rede está mostrada na Figura 56. É uma rede abertacom os parâmetros:

• qs = 5• os QS deste sistema são M/M/1• sequência dos eventos: 0 → 1, 1 → 2, 2 → 1, 1 → 3, 3 → 1, 1 → 4, 4 → 1, 1 → 2, 2 →

1, 1 → 0, S = [ 0, 1, 2, 1, 3, 1, 4, 1, 2, 1, 0 ] e s = 11• número de eventos, N (defnido pelo usuário)

Modelagem e Simulação Discreta 211

• D = [ iat0, st0, st1, st2, st3, st4 ]

Figura 55 - Sistema Cliente/Servidor Web em três camadas físicas.

Figura 56 - A arquitetura do Sistema Cliente/Servidor Web da Figura 55.

Em resumo, os parâmetros da QSN da Figura 55, para simulação de 2000eventos são: qs = 5, s = 11, S = [ 0, 1, 2, 1, 3, 1, 4, 1, 2, 1, 0 ], N = 2000,D = [ iat0, st0, st1, st2, st3, st4]. Os valores de iat e st devem serfornecidos pelo usuário.

Exemplo 8.1: Considere a rede abaixo, constituída pelos componentes também abaixorelacionados, com demanda de 5 milhões de pacotes por hora, considere o pacote comosendo de 200 KB.

Modelagem e Simulação Discreta 212

Figura 57 - Sistema Cliente/Servidor Web do Exemplo 8.1.

Componente no ModelosMenor Desempenho st(s)

Maior Desempenho st(s)

S 0 Cisco SF300-08/SG300-28MP 2.69E-3 7.50E-5Sw 1 Apache 2.4.1/Nginx 1.0.12 5.29E-4 2.96E-4Sad 2 PostGree/MySql 1.44E-3 4.90E-4São 3 QS, qs = 3, S = [0, 1, 0, 2, 0, 1, 0] e s = 7. Com uma demanda de 5 milhões depacotes por hora, tem-se 5E6/3600 = 1388,89 pacotes por segundo. Logo, iat =1/1388,89 = 0,00072 = 7,2E-4 s-1 ou iat = 7,2E-4 pps.

Tomando os valores de st de menor desempenho, obtém-se D = [7.2E-4, 2.69E-3, 5.29E-3, 1.44E-3].

Os parâmetros desta QSN, para uma simulação de 2000 eventos são: qs = 3, S = [0, 1,0, 2, 0, 1, 0], s = 7, N = 2000 e D = [7.2E-4, 2.69E-3, 5.29E-3, 1.44E-3].

8.6 SIMULAÇÃO DE SISTEMAS DE HARDWARE

A simulação sistema de hardware mostrado na Figura 45 é complexa eextrapola o nível deste texto mas pode-se simular partes do mesmo eavaliar seu comportamento. Tomando uma parte desta arquitetura, comomostrado na Figura 58. (Sun Microsystems, 2016).

Modelagem e Simulação Discreta 213

Figura 58 - Diagrama de blocos de parte do Sun Fire X4150 (SunMicrosystems, 2016).

Uma alternativa simples é considerar que dados chegam da memória pormeio da ponte norte (MCH) e são processados na CPU. Neste caso, pode-se considerar a MCH como a Fila e a CPU como o Servidor, Figura 58, tem-se então uma rede aberta com os parâmetros:

• qs = 1• o QS é M/M/1• número de eventos, N (defnido pelo usuário)• D = [ iat0, st0 ]

Figura 59 - Modelo de um Sistema de Fila da Figura 59.

8.7 EXERCÍCIOS

1. Simule o Exemplo 8.1 com o software QSN.cpp e calcule:

a) o tempo de simulaçãob) os maiores valores de nq de componente

2. Simule o Exemplo 8.1 com o software QSN.cpp e, considerando os valores de st demaior desempenho, calcule:

a) o tempo de simulação

Modelagem e Simulação Discreta 214

b) os maiores valores de nq de componente

3) Compare os resultados dos exercícios 1 e 2.

8.8 RECURSOS DIDÁTICOS PEDAGÓGICOS

8.8.1 SOFTWARE QSNPLOT.HTML

Foi desenvolvido o software QSNPlot.html para visualização gráfca edinâmica dos resultados de Sistemas de Fila de fla M/M/1 utilizando aclasse clQSN e a biblioteca gráfca fot, Algoritmo 8.3. A Figura 60apresenta o software QSNPlot.html sendo executado, os cálculos sãoatualizados a cada 200 ms e as curvas são exibidas evento a evento. Estesoftware permite exibir/ocultar as curvas da variáveis Eiat, Est, Ew, Es, Er,Eidt, Enq, p0, U, Viat, Vst, Vw, Vs, Vr, Vidt, Vnq.

Algoritmo 8.3: Software QSNPlot.html para visualização gráfca dosresultados de Sistemas de Fila de fla M/M/1

1. <!doctype html>2. <html lang="pt-br">3. <head>4. <meta charset="UTF-8">5. <title>Análise de Rede de Sistemas de Fila M/M/1</title>6. <script src="jquery.js"> </script>7. <script src="jquery.flot.js"></script>8. <script>9. function clQSN(qs,D,S){10. var QS = [];11. this.F = function(x){12. var u = Math.random();13. return -x*Math.log(u);14. }15. this.Start = function(i,f){16. var n, e = [], b;17. if( i == 0 ){18. e.iat = this.F( QS[i].l );19. e.st = this.F( QS[i].m );20. e.at = e.iat;21. e.bs = e.at;22. e.es = e.at + e.st;23. e.idt = e.es;24. e.nq = 0;25. QS[i].Event.push(e);26. }27. e = [];28. b = QS[i].Event[ QS[i].Event.length-1 ];29. e.iat = b.es;30. e.st = this.F( QS[f].m );

Modelagem e Simulação Discreta 215

31. e.at = b.es;32. e.bs = e.at > b.es ? e.at : b.es;33. e.es = e.bs + e.st;34.35. n = QS[f].Event.length;36. if( n > 0 ){37. b = QS[f].Event[n-1];38. e.idt = e.es - b.es;39. }40. else e.idt = e.es;41. e.nq = 0;42. QS[f].Event.push(e);43. }44. this.Config = function(){45. for( var i = 0; i < qs; i++ ){46. var Q = [];47. Q.l = 0.0;48. if( i == 0 ) Q.l = D[i];49. Q.m = D[i+1];50. Q.Event = [];51. QS.push(Q);52. }53. for( var i = 1; i < S.length; i++ ){54. this.Start(S[i-1],S[i]);55. }56. }57. this.Open = function(i,f){58. var e = [], b;59. b = QS[i].Event[ QS[i].Event.length-1 ];60. if( i == 0 ){61. e.iat = this.F( QS[i].l );62. e.st = this.F( QS[i].m );63. e.at = b.at + e.iat;64. e.bs = e.at > b.es ? e.at : b.es;65. e.es = e.bs + e.st;66. e.idt = e.es - b.es;67. e.nq = 0;68. QS[i].Event.push(e);69. }70. e = [];71. e.iat = b.idt;72. e.st = this.F( QS[f].m );73. b = QS[f].Event[ QS[f].Event.length-1 ];74. e.at = b.at + e.iat;75. e.bs = e.at > b.es ? e.at : b.es;76. e.es = e.bs + e.st;77. e.idt = e.es - b.es;78. e.nq = 0;79. QS[f].Event.push(e);80. }81. this.Close = function(i,f){82. var e = [], b;83. b = QS[i].Event[ QS[i].Event.length-1 ];84. e.iat = b.idt;85. e.st = this.F( QS[f].m );86. b = QS[f].Event[ QS[f].Event.length-1 ];87. e.at = b.at + e.iat;88. e.bs = e.at > b.es ? e.at : b.es;89. e.es = e.bs + e.st;90. e.idt = e.es - b.es;91. e.nq = 0;92. QS[f].Event.push(e);93. }94. this.Nq = function(){95. for( var q = 0; q < QS.length; q++ )96. for( var e = 1; e < QS[q].Event.length; e++ ){97. QS[q].Event[e].nq = 0;98. for( var c = 0; c < e; c++ )

Modelagem e Simulação Discreta 216

99. if( QS[q].Event[e].at < QS[q].Event[c].es ) QS[q].Event[e].nq += 1;

100. }101. }102. this.Simulate = function(){103. for( var i = 1; i < S.length; i++ ){104. this.Open(S[i-1],S[i]);105. //this.Close(S[i-1],S[i]);106. }107. this.Nq();108. this.Calculate();109. }110. this.getMean = function(){111. var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0];112. for( var q = 0; q < QS.length; q++ ){113. M[0] += QS[q].Eiat;114. M[1] += QS[q].Est ;115. M[2] += QS[q].Ew ;116. M[3] += QS[q].Es ;117. M[4] += QS[q].Er ;118. M[5] += QS[q].Eidt;119. M[6] += QS[q].Enq ;120. M[7] *= QS[q].p0 ;121. M[8] *= QS[q].U ;122. }123. return M;124. }125. this.getVariance = function(){126. var V = [0.0,0.0,0.0,0.0,0.0,0.0,0.0];127. for( var q = 0; q < QS.length; q++ ){128. V[0] += QS[q].Viat;129. V[1] += QS[q].Vst ;130. V[2] += QS[q].Vw ;131. V[3] += QS[q].Vs ;132. V[4] += QS[q].Vr ;133. V[5] += QS[q].Vidt;134. V[6] += QS[q].Vnq ;135. }136. return V;137. }138. this.Calculate = function(){139. for( var q = 0; q < QS.length; q++ ){140. var N = QS[q].Event.length;141. var Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw, Es, Vs,

Er, Vr, p0, U, T;142. Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Enq = Vnq = Ew = Vw

= Es = Vs = Er = Vr = p0 = U = T = 0.0;143. for( var e = 0; e < QS[q].Event.length; e++ ){144. Eiat += QS[q].Event[e].iat;145. Est += QS[q].Event[e].st;146. Eidt += QS[q].Event[e].idt;147. Enq += QS[q].Event[e].nq;148. Ew += QS[q].Event[e].bs-QS[q].Event[e].at;149. Es += QS[q].Event[e].es-QS[q].Event[e].bs;150. Er += QS[q].Event[e].es-QS[q].Event[e].at;151. }152. Eiat /= N;153. Est /= N;154. Eidt /= N;155. Enq /= N;156. Ew /= N;157. Es /= N;158. Er /= N;159.160. for( var e = 0; e < QS[q].Event.length; e++ ){161. Viat += Math.pow(QS[q].Event[e].iat - Eiat ,

2.0);162. Vst += Math.pow(QS[q].Event[e].st - Est ,

Modelagem e Simulação Discreta 217

2.0);163. Vidt += Math.pow(QS[q].Event[e].idt - Eidt ,

2.0);164. Vnq += Math.pow(QS[q].Event[e].nq - Enq ,

2.0);165. Vw += Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at- Ew ,

2.0);166. Vs += Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs- Es ,

2.0);167. Vr += Math.pow(QS[q].Event[e].es-QS[q].Event[e].at- Er ,

2.0);168. }169. Viat /= (N-1);170. Vst /= (N-1);171. Vidt /= (N-1);172. Vnq /= (N-1);173. Vw /= (N-1);174. Vs /= (N-1);175. Vr /= (N-1);176.177. T = QS[q].Event[N-1].es;178. p0 = QS[q].Event[0].bs;179. for( var e = 1; e < N; e++ )180. if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=

QS[q].Event[e].at-QS[q].Event[e-1].es;181. p0 /= T;182. U = 1.0-p0;183. QS[q].T = T ;184. QS[q].Eiat = Eiat;185. QS[q].Viat = Viat;186. QS[q].Est = Est ;187. QS[q].Vst = Vst ;188. QS[q].Eidt = Eidt;189. QS[q].Vidt = Vidt;190. QS[q].Enq = Enq ;191. QS[q].Vnq = Vnq ;192. QS[q].Ew = Ew ;193. QS[q].Vw = Vw ;194. QS[q].Es = Es ;195. QS[q].Vs = Vs ;196. QS[q].Er = Er ;197. QS[q].Vr = Vr ;198. QS[q].p0 = p0 ;199. QS[q].U = U ;200. }201. }202. }203.204. function clQSNTeste(){205. var e = 1 ,206. d00 = [],207. d01 = [],208. d02 = [],209. d03 = [],210. d04 = [],211. d05 = [],212. d06 = [],213. d07 = [],214. d08 = [],215. d09 = [],216. d10 = [],217. d11 = [],218. d12 = [],219. d13 = [],220. d14 = [],221. d15 = [],222. G = [];223.

Modelagem e Simulação Discreta 218

224. var qs = 4,225. D = [ 0.020, 0.010, 0.010, 0.010, 0.010 ],226. S = [ 0, 1, 2, 1, 2, 3 ];227. var QSN = new clQSN(qs,D,S);228. QSN.Config();229.230. $(function() {231. var datasets = {232. "Eiat": { label: "Eiat", data: d00 },233. "Est" : { label: "Est ", data: d01 },234. "Ew" : { label: "Ew " , data: d02 },235. "Es" : { label: "Es " , data: d03 },236. "Er" : { label: "Er " , data: d04 },237. "Eidt": { label: "Eidt", data: d05 },238. "Enq" : { label: "Enq ", data: d06 },239. "p0" : { label: "p0 " , data: d07 },240. "U" : { label: "U " , data: d08 },241. "Viat": { label: "Viat", data: d09 },242. "Vst" : { label: "Vst ", data: d10 },243. "Vw" : { label: "Vw " , data: d11 },244. "Vs" : { label: "Vs " , data: d12 },245. "Vr" : { label: "Vr " , data: d13 },246. "Vidt": { label: "Vidt", data: d14 },247. "Vnq" : { label: "Vnq ", data: d15 }248. };249. // insert checkboxes250. var choiceContainer = $("#choices");251. $.each(datasets, function(key,val)

{ choiceContainer.append("<br><input type='checkbox' name='" + key + "' checked='checked' id='id" + key + "'></input>" + "<label for='id" + key + "'>" + val.label + "</label>"); });

252. var i = 0;253. $.each(datasets, function(key,val){ val.color = i; ++i; });254. choiceContainer.find("input").click(plotAccordingToChoices);255.256. function plotAccordingToChoices(){ var data = [];

choiceContainer.find("input:checked").each(function (){ var key = $(this).attr("name"); if(key && datasets[key]){ data.push(datasets[key]); } }); if(data.length > 0){ $.plot("#placeholder", data, { yaxis: { min: 0.0 }, xaxis: {tickDecimals: 0.0 } });} }

257. var timer = setInterval(function(n){258. QSN.Simulate();259. G = QSN.getMean();260. d00[e] = []; d00[e][0] = e; d00[e][1] = G[0]; //"Eiat"261. d01[e] = []; d01[e][0] = e; d01[e][1] = G[1]; //"Est "262. d02[e] = []; d02[e][0] = e; d02[e][1] = G[2]; //"Ew "263. d03[e] = []; d03[e][0] = e; d03[e][1] = G[3]; //"Es "264. d04[e] = []; d04[e][0] = e; d04[e][1] = G[4]; //"Er "265. d05[e] = []; d05[e][0] = e; d05[e][1] = G[5]; //"Eidt"266. d06[e] = []; d06[e][0] = e; d06[e][1] = G[6]; //"Enq "267. d07[e] = []; d07[e][0] = e; d07[e][1] = G[7]; //"p0 "268. d08[e] = []; d08[e][0] = e; d08[e][1] = G[8]; //"U "269. G = QSN.getVariance();270. d09[e] = []; d09[e][0] = e; d09[e][1] = G[0]; //"Viat"271. d10[e] = []; d10[e][0] = e; d10[e][1] = G[1]; //"Vst "272. d11[e] = []; d11[e][0] = e; d11[e][1] = G[2]; //"Vw "273. d12[e] = []; d12[e][0] = e; d12[e][1] = G[3]; //"Vs "274. d13[e] = []; d13[e][0] = e; d13[e][1] = G[4]; //"Vr "275. d14[e] = []; d14[e][0] = e; d14[e][1] = G[5]; //"Vidt"276. d15[e] = []; d15[e][0] = e; d15[e][1] = G[6]; //"Vnq "277. e++;278. plotAccordingToChoices();279. },200);280. $("#footer").prepend("Flot " + $.plot.version + " Copyright: Brauliro G

Leal, 2014" );281. });282. }283. </script>

Modelagem e Simulação Discreta 219

284. </head>285. <body>286. <h4>Análise de Rede de Sistemas de Fila M/M/1 Médias dos Eventos</h4><hr>287. <hr>288. <input type="button" value=" QSN Teste >>> " onclick="clQSNTeste()"/>289. <hr>290. <div id="placeholder" style="float:left; height: 450px; width:875px;"></div>291. <p id="choices" style="float:left; height: 450px; width:135px;"></p>292. <div id="footer" style="margin-top: 490px;"></div>293. </body></html>

Figura 60 - Gráfco dos resultados do QSNPlot.html (Algoritmo 8.3).

Modelagem e Simulação Discreta 220

9 APÊNDICE

9.1 REPRESENTATIVIDADE NO PROCESSO DE AMOSTRAGEM

A palavra-chave nas questões de amostragem é representatividade. Umaamostra deve ter o tamanho sufciente, nr, para que seja representativa dapopulação; se for menor nada pode ser concluído da população a partirdela. Se for maior ou igual, suas estatísticas são extensíveis à população.Na medição de dados de sistemas de flas, recomenda-se a equaçãoabaixo pois é um processo exponencial.

9.1

em que:z = 1,96 (valor Normal padronizado para um nível de confança de 95%)σ = desvio-padrão da populaçãoμ = média da populaçãoe0 = nível de confança da média, em geral toma-se e0 = 0,20 (80% de confança)

Exemplo 9.1: A seguinte sequência refere-se ao número de span medidos em um e-maildurante um dia: { 73 42 56 63 80 81 76 87 76 90 81 44 98 58 }. O número de dados daamostra representa a população?

Calculando µ = 71,79, σ = 16,26 e n = 14.

nr = [(1,96*16,26)/(0,20*71,79)]2 = (31,87/14,36)2 = (2,22)2 = 5

A amostra é representativa da população pois n > nr, logo pode-se assumir a igualdadeestatística entre:

Modelagem e Simulação Discreta 221

nr=(zσe0μ

)2

• a média da amostra e a média da população• a desvio padrão da amostra e o desvio padrão da população

E ainda, o que é mais importante, os resultados e conclusões obtidos a partir da amostrasão extensíveis à população.

9.2 NÚMERO DE CLASSES

Uma vez obtidos os dados, eles devem ser organizados em classes e seuslimites para a montagem de uma tabela de distribuição de frequências. Onúmero de classes k depende principalmente do número de observações(n) e da dispersão entre eles. Para estimar k classes são apresentadas asregras abaixo.

(Regra de Sturges) 9.2

(Regra da Raiz) 9.3

9.3 GRÁFICO DE EXTREMOS E QUARTIS OU BOX-PLOT

Em estatística descritiva, diagrama de caixa, ou box-plot, permite localizare analisar a variação de uma amostra a partir dos seus valores mínimos,quartil inferior, mediana, quartil superior e máximo. São quatrosegmentos, cada um com 25% valores observados. O gráfco é uma caixaonde se localiza a mediana, tendo como base da caixa o quartil inferior e otopo da caixa o quartil superior. A caixa, portanto, representa 50% dosvalores observados, concentrados na tendência central dos valores,eliminando os 25% menores valores e 25% maiores valores. Um segmentode reta vertical conecta o topo da caixa ao maior valor observado e outrosegmento conecta a base da caixa ao menor valor observado.

Em resumo, o diagrama de caixa identifca onde estão localizados 50%dos valores mais prováveis, a mediana e os valores extremos: os pontosde {mínimo, Q1, M, Q3, máximo} correspondendo a [25%, 25%, 25%, 25%]dos dados em ordem crescente.

Exemplo 9.2: Faça o box-plot da amostra x = { 44 56 58 63 73 76 80 81 82 83 87 90 }.

Modelagem e Simulação Discreta 222

k=√nk=1+3,22 ln(n)

Utilizando o site http://www.alcula.com/calculators/statistics/box-plot com estes dadosobtemos:

Figura 61 - Figura do Exemplo 9.2.

A análise do box-plot indica uma assimetria na distribuição dos dados, embora tenha 6dados acima e 6 dados baixo da mediana, em termos nominais, temos que mediana-minimo > maximo-mediana (78-44=34 > 90-78=12), pode-se concluir que, em termosde amplitude, ela é maior abaixo da mediana o que indica que dados obtidos de outrasamostram tendem a ser menores que a mediana.

9.4 VALORES EXTREMOS OU OUTLIER

Em estatística, os pontos de dados de observações com valores extremossão chamados outliers, particularmente se eles estão longe da maioria dosoutros pontos. Outliers podem ter um efeito signifcativo sobre os valoresmáximos ou mínimos (ou na média e na variância) dos valoresobservados. Existem vários métodos de identifcação de outliers, um delesé por meio de z-scores, isto é, os valores z-padronizados dos dados.

Serão valores extremos os valores de z que se encontrar numa distânciamaior que:

• ±2,5 z para conjunto de dados com tamanho n < 50• ±3,3 z para conjunto de dados grandes, 50 ≤ n < 1.000

Para conjuntos de dados muito grande ( n ≥ 1.000) os valores extremospodem ser considerados dados normais e não outliers.

Modelagem e Simulação Discreta 223

A identifcação de valores extremos de uma amostra {x i} para i = 1, 2, ...,n, é feita seguindo as seguintes etapas:

1. calcular a média (m) e o desvio padrão (s) da mostra

2. calcular {zi} em que zi=x i−ms

3. se n < 50 então os valores xi correspondentes aos de |zi| > 2.5 são valoresextremos

4. se 50 ≤ n < 1000 então os valores xi correspondentes aos de |zi| > 3,3 são valoresextremos

5. se n ≥ 1000 então os valores de xi não são considerados valores extremos

Exemplo 9.3: Verifque se a amostra x: { 6,91 1,61 4,99 9,11 9,03 9,71 0,05 5,98 5,209,83 } possui valores extremos pelo método de z-scores:

A distribuição possui média m = 6,24, desvio padrão s = 3,40 e n = 10 dados. Os valoresde {zi = (xi-m)/s} estão dispostos na tabela abaixo:i xi zi

1 6,91 0,202 1,61 -1,363 4,99 -0,374 9,11 0,855 9,03 0,826 9,71 1,027 0,05 -1,828 5,98 -0,089 5,20 -0,3110 9,83 1,06

Conclusão: a amostra não contém valores extremos uma vez que n < 50 e {|zi| < 2.5}.

9.5 TESTES DE HIPÓTESES E SIGNIFICÂNCIA

9.5.1 DECISÃO ESTATÍSTICA

Muitas vezes é necessário tomar decisões sobre as populações com baseem informações de uma amostra. Tais decisões são chamados decisõesestatísticas.

Na tentativa de se chegar a decisões, é útil fazer suposições sobre aspopulações envolvidas, estes pressupostos, que pode ou não serverdadeiros, são chamados de hipóteses estatísticas e, em geral, sãodeclarações sobre as distribuições de probabilidade da população. Estas

Modelagem e Simulação Discreta 224

hipóteses estatísticas são chamadas de hipóteses nulas e são denotadospor H0. Qualquer hipótese que difere de uma dada hipótese nula échamada hipótese alternativa, denotada por Ha. Por exemplo, se ahipótese nula é p = 0,6, possíveis hipóteses alternativas são p = 0,7, p ≠0,6, ou p > 0,6.

Procedimentos que nos permitam decidir se aceitar ou rejeitar hipótesesou para determinar se as amostras observadas diferem signifcativamentedos resultados esperados são chamados testes de hipóteses, testes designifcância, ou regras de decisão.

Para que os testes de hipóteses ou regras de decisão sejam úteis, estesdevem ser concebidos de forma a minimizar os erros de decisão. Serejeita-se a hipótese quando ela é verdadeira, diz-se que um Erro Tipo I foicometido. Se, por outro lado, aceitar uma hipótese, quando ela deveria serrejeitada, diz-se que um Erro Tipo II foi cometido, Tabela 39. Em qualquerdos casos ocorreu uma decisão errada ou erro de julgamento.

Tabela 39 - Testes de Hipótese e os Erros Tipo I e Tipo II

Valor Lógico Aceita H0 Aceita Ha

H0 é Verdade Decisão Correta Erro Tipo IHa é Verdade Erro Tipo II Decisão Correta

9.5.2 NÍVEL DE SIGNIFICÂNCIA

Ao testar uma determinada hipótese, a probabilidade máxima com a qualse dispõem a arriscar um Erro Tipo I é chamado o nível de signifcância ())do teste. Em geral, um nível de signifcância de ) = 0,05 (5%) ou ) = 0,01(1%) é o usual, embora outros valores sejam utilizados.

Se ) é nível de signifcância de um teste de uma hipótese, isto representa:

1. cerca de ) chances em 100 que se rejeite a hipótese; em tais casos, diz-se que ahipótese foi rejeitada em um nível de signifcância de 0,05, o que signifca quepoderia estar errado com probabilidade de 0,05

2. sempre que a hipótese de nulidade for verdadeira, há cerca de (100-))% deconfança de que será tomada a decisão correta

9.5.3 TESTES ENVOLVENDO A DISTRIBUIÇÃO NORMAL

Modelagem e Simulação Discreta 225

Suponha que sob uma dada hipótese a distribuição amostral de umaestatística S seja uma distribuição normal com média μS e desvio padrãoσS. A distribuição da variável padronizada z = (S-μS)/σS é a distribuiçãonormal padrão (média de 0, variância 1) mostrada na Figura 62, e valoresextremos de z levaria à rejeição da hipótese.

Figura 62 - Distribuição normal padrão com as regiões críticas de um testebicaudal com ) = 0,05.

Como indicado na Figura 62, se a hipótese for verdadeira, pode-se ter 95%de certeza que a pontuação z de uma estatística da amostra S vai situar-se entre -1,96 e 1,96, uma vez que a área sob a curva normal entre estesvalores é 0,95.

Por outro lado, se a hipótese dada for verdadeira e esta mesma pontuaçãoz se encontrar fora da faixa -1,96 a 1,96, pode-se concluir que um eventocomo esse pode acontecer com a probabilidade de 0,05 (área sombreadatotal na fgura). Assim, diz-se que esta pontuação z diferesignifcativamente do que seria esperado sob a hipótese, e tende-se arejeitar a hipótese.

A área total sombreada igual a 0,05 é o nível de signifcância do teste. Elerepresenta a probabilidade de se estar errado em rejeitar a hipótese, ouseja, a probabilidade de cometer um Erro de Tipo I. Portanto, pode-se dizerque a hipótese é rejeitada em um nível de signifcância de 0,05 ou que apontuação z da estatística da amostra é signifcativa a um nível designifcância de 0,05.

O conjunto de escores z fora da faixa -1,96 a 1,96 constitui o que échamado de região crítica ou região de rejeição da hipótese ou da regiãode signifcância. O conjunto de escores z dentro da faixa -1,96 a 1,96pode-se, então, ser chamada a região de aceitação da hipótese ou daregião de não signifcância.

Modelagem e Simulação Discreta 226

Com base nestas observações, pode-se formular a seguinte regra dedecisão:

1. rejeitar a hipótese a um nível de signifcância de 0,05, se a pontuação z daestatística S encontra-se fora da faixa -1,96 a 1,96 (isto é, seja z > 1.96 ou z <1,96). Isto equivale a estatística da amostra observada é signifcativa ao nível de0,05

2. aceitar a hipótese (pode-se ainda optar por nada decidir) de outra forma.

Deve notar-se que outros níveis de signifcância podem ser usados. Porexemplo, se for utilizado um nível de 0,01 deve substituir 1,96 por 2,58 notexto acima ( Tabela 40).

9.5.4 TESTES UNICAUDAL E BICAUDAL

No teste da Figura 62 foi utilizado extremos da estatística S ou a suacorrespondente pontuação z em ambos os lados da média, isto é, emambas as caudas da distribuição. Por esta razão, tais testes são chamadostestes bicaudais ou testes de dois lados. Em tais casos, as regiões críticassituam-se nos dois lados da distribuição, com área total igual ao nível designifcância.

Muitas vezes, no entanto, pode-se estar interessado apenas em valoresextremos de um lado da média, ou seja, em uma cauda da distribuição,como, por exemplo, quando se estão a testar a hipótese de que umprocesso é melhor do que o outro (o que é diferente de testar se umprocesso é melhor ou pior do que o outro). Tais testes são chamados detestes de uma cauda ou testes unilaterais. Em tais casos, a região crítica éuma região de um dos lados da distribuição, com área igual ao nível designifcância.

A Tabela 40 apresenta os valores críticos de z tanto para testes de umacauda e para testes bicaudais para vários níveis de signifcância. Osvalores críticos de z para outros níveis de signifcância são encontradaspelo uso da tabela de áreas da curva normal padrão ou unitária.

Tabela 40 - Quantis da Distribuição Normal Unitária

Nível de signifcância ) 0,100 0,050 0,010 0,005 0,002

Valores críticos de z – Teste Unicaudal -1,28 ou 1,28 -1,65 ou 1,65 -2,33 ou 2,33 -2,58 ou 2,58 -2,88 ou 2,88

Valores críticos de z – Teste Bicaudal -1,65 e 1,65 -1,96 e 1,96 -2,58 e 2,58 -2,81 e 2,81 3,08 e 3,08

Modelagem e Simulação Discreta 227

9.5.5 P-VALUE

Na maioria dos testes estatísticos, considera-se que a hipótese nula H0 éuma afrmação de que um parâmetro de população tem um valor defnidoe a hipótese alternativa Ha é uma das seguintes afrmações:

1. O parâmetro é maior do que o valor defnido (teste de cauda direita, Figura 63a)2. O parâmetro é menor do que o valor defnido (teste de cauda esquerda, Figura

63b)3. O parâmetro é maior ou menor do que o valor defnido (teste de duas caudas,

Figura 63c)

Nos casos (1) e (2), Ha tem um único sentido em relação ao parâmetro e,no caso (3), Ha é bidirecional.

∫−∞

x c

f (x)dx=1−α ∫xc

+∞

f (x )dx=1−α ∫x1

x2

f (x)dx=1−α

(a) (b) (c)

Figura 63 - Cálculo de valores críticos para testes unicaudal (a) à direita(a), (b) à esquerda e (c) bicaudal.

Após o teste ser feito e a estatística do teste S for calculada, o p-value doteste é a probabilidade de um valor de S na direção (s) de Ha seja tãoextremo como o que ocorreria se H0 fosse verdadeira.

Exemplo 9.4: Suponha que o desvio padrão de uma população normal é conhecido (σ =3) e que H0 afrme que a média desta população seja μ = 12 (média da população). Umaamostra aleatória de tamanho = 36 foi obtida da população e seu valor médio estimado ém = 12,95 (média da amostra). A estatística de teste, neste caso, é

Z=m−12σ /√n

=m−120,5

e que, se H0 é verdadeira então a variável aleatória é normal. O

valor calculado do teste é Z = (12,95-12)/0,5 = 1,9. O p-value do teste depende dahipótese alternativa Ha como se segue:

1. Ha: μ > 12 - caso (1), o p-value é a probabilidade de que uma amostra aleatória detamanho 36 tenha média amostral igual a 12,95 ou mais, se a média da populaçãofor igual a 12, isto é, P(Z ≥ 1,9) = 0,029. Ou seja, as chances são cerca de 3 em100 para m > 12,95 se μ = 12

2. Ha: μ < 12 - caso (2), o p-value é a probabilidade de que uma amostra aleatória detamanho 36 tenha média igual a 12,95 ou menos, se a média da população for

Modelagem e Simulação Discreta 228

igual a 12, ou seja, P(Z ≤ 1,9) = 0,97, ou as chances são cerca de 97 em 100 param ≤ 12,95 se μ = 12

3. Ha: μ ≠ 12 - caso (3), o p-value é a probabilidade de que uma amostra aleatória detamanho 36 tenha média amostral igual a 12 mais ou menos 0,95, ou seja, m ≥12,95 e m ≤ 11,05 se μ = 12. Neste caso, p-value é P(Z ≥ 1,9)+P(Z ≤ -1,9) =0,057, as chances são cerca de 6 em 100 para |m-12| ≥ 0,95 se μ = 12

Valores pequenos de p-value fornecem evidências para se rejeitar a hipótese nula emfavor da hipótese alternativa. Por outro lado, grandes valores de p-value fornecemevidências para não se rejeitar a hipótese nula em favor da hipótese alternativa.

• No caso 1, p-value = 0,029 é pequeno e indicado fortemente que a média da população é superior a 12

• No caso 2, p-value = 0,97 é grande e sugere fortemente que H0: μ = 12 não deve ser rejeitado em favor de Ha: μ < 12

• No caso 3, p-value = 0,057 fornece evidência para rejeitar H0 em favor da Ha: m ≠ 12, mas não tanto para rejeitar H0 em favor de Ha: μ > 12.

Deve-se ter em mente que o valor p-value e o nível de signifcância nãofornecem critérios para rejeitar ou não rejeitar a hipótese nula e sim pararejeitar ou não rejeitar a hipótese nula em favor da hipótese alternativa.

Como no exemplo anterior ilustra, os resultados de testes idênticos comiguais níveis de signifcância podem levar a conclusões diferentes sobre amesma hipótese nula em relação a diferentes hipóteses alternativas(Spiegel, et al., 2013, pg 215).

9.6 INTEGRAÇÃO NUMÉRICA

A função I(a,b) calcula numericamente a integral de f(x) no intervalo [a,b]utilizando o método de Simpson Composta. A precisão de I(a,b) dependede f(x) e de n, desta forma é recomendável fazer um teste para ajustar onúmero de pontos do intervalo de integração (Epperson, 2013).

I=∫a

b

f (x)dx 9.4

I (a ,b)=h3[ f (a)+2 ∑

j=1

n /2−1

f (x2 j)+4∑j=1

n /2

f (x2 j−1)+ f (b)] 9.5

Em que n ∈ N, n > 1 e h= b−a2n

.

Modelagem e Simulação Discreta 229

O Algoritmo 9.1 implementa a função I(a,b) em Javascript. Para usá-lo énecessário escrever o código da função f(x) e chamar I(a,b,n) para queretornar sua integração numérica, adaptado de Epperson (2013).

Algoritmo 9.1: Função Javascript para a integral de f(x) no intervalo [a,b]utilizando o método de Simpson Composta

1. function f(x){2. return f(x);3. }4. function I(a,b,n){5. var Si = 0.0, Sp = 0.0, h = (b-a)/(2.0*n), dx = 2.0*h, x;6. x = a+h;7. while( x < b ) {8. Si += f(x);9. x += dx;10. }11. x = a+dx;12. while( x < b-h ) {13. Sp += f(x);14. x += dx;15. }16. return (f(a)+f(b)+4.0*Si+2.0*Sp)*h/3.0;17. }

O Algoritmo 9.2 é uma outra implementação da função I(a,b) em C++.

Algoritmo 9.2: Função C++ para a integral de f(x) no intervalo [a,b]utilizando o método de Simpson Composta

1. double f(x){2. return f(x);3. }4.5. double I( double a, double b ){6. int n = 10;7. double h = (b-a)/n,8. s1 = f(a + h/2.0),9. s2 = 0.0;10. for( int i = 1; i < n; i++ ){11. s1 += f(a + h*i + h/2.0);12. s2 += f(a + h*i);13. }14. return (f(a) + f(b) + 4.0*s1 + 2.0*s2)*h/6.0;15. }

Combinando as anteriores tem-se uma outra implementação da funçãoI(a,b) em C++, Algoritmo 9.3.

Algoritmo 9.3: Outra função C++ para a integral de f(x) no intervalo [a,b]utilizando o método de Simpson Composta

1. double f(x){2. return f(x);3. }4. double I( double a, double b ){5. int n = 100;6. double S2 = 0.0, S4 = 0.0, h = (b-a)/n;7. for( int i = 1; i < n; i += 2 )8. S4 += f(a+i*h);

Modelagem e Simulação Discreta 230

9. for( int i = 2; i < n-1; i += 2 )10. S2 += f(a+i*h);11. return h*(f(a)+f(b)+2*S2+4*S4)/3;12. }

9.7 QUANTIS DA DISTRIBUIÇÃO Χ2

A função densidade de probabilidade χ2 com n graus de liberdade é

defnida por f (x ,n)=xn2−1e− x

2

2n2 Γ( n

2)

, sendo Γ(a)=∫0

xa−1 e−xdx ,a>0 a função

Gamma. A Tabela 41 lista os quantis χ2(p;n), p = 1-). Por exemplo, o valorχ2(0,90;13) requerido pelo teste CQ com 90% de nível de confança e 13graus de liberdade é 19,81.

Tabela 41 - Quantis da distribuição χ2

n\p 0,80 0,85 0,90 0,95 0,99 n\p 0,80 0,85 0,90 0,95 0,99 n\p 0,80 0,85 0,90 0,95 0,99

1 - - - - - 31 37,36 39,12 41,42 44,99 52,19 61 70,05 72,44 75,51 80,23 89,59

2 3,22 3,79 4,61 5,99 9,21 32 38,47 40,26 42,58 46,19 53,49 62 71,13 73,53 76,63 81,38 90,80

3 4,65 5,32 6,26 7,85 11,65 33 39,57 41,39 43,75 47,40 54,78 63 72,20 74,62 77,75 82,53 92,01

4 5,99 6,74 7,78 9,49 13,28 34 40,68 42,51 44,90 48,60 56,06 64 73,28 75,72 78,86 83,68 93,22

5 7,29 8,12 9,24 11,07 15,08 35 41,78 43,64 46,06 49,80 57,34 65 74,35 76,81 79,97 84,82 94,42

6 8,56 9,45 10,64 12,59 16,81 36 42,88 44,76 47,21 51,00 58,62 66 75,42 77,90 81,09 85,96 95,63

7 9,80 10,75 12,02 14,07 18,48 37 43,98 45,89 48,36 52,19 59,89 67 76,50 78,99 82,20 87,11 96,83

8 11,03 12,03 13,36 15,51 20,09 38 45,08 47,01 49,51 53,38 61,16 68 77,57 80,08 83,31 88,25 98,03

9 12,24 13,29 14,68 16,92 21,67 39 46,17 48,13 50,66 54,57 62,43 69 78,64 81,17 84,42 89,39 99,23

10 13,44 14,53 15,99 18,31 23,21 40 47,27 49,24 51,81 55,76 63,69 70 79,71 82,26 85,53 90,53 100,43

11 14,63 15,77 17,28 19,68 24,72 41 48,36 50,36 52,95 56,94 64,95 71 80,79 83,34 86,64 91,67 101,62

12 15,81 16,99 18,55 21,03 26,22 42 49,46 51,47 54,09 58,12 66,21 72 81,86 84,43 87,74 92,81 102,82

13 16,98 18,20 19,81 22,36 27,69 43 50,55 52,59 55,23 59,30 67,46 73 82,93 85,52 88,85 93,95 104,01

14 18,15 19,41 21,06 23,68 29,14 44 51,64 53,70 56,37 60,48 68,71 74 84,00 86,60 89,96 95,08 105,20

15 19,31 20,60 22,31 25,00 30,58 45 52,73 54,81 57,51 61,66 69,96 75 85,07 87,69 91,06 96,22 106,39

16 20,47 21,79 23,54 26,30 32,00 46 53,82 55,92 58,64 62,83 71,20 76 86,13 88,77 92,17 97,35 107,58

17 21,61 22,98 24,77 27,59 33,41 47 54,91 57,03 59,77 64,00 72,44 77 87,20 89,86 93,27 98,48 108,77

18 22,76 24,16 25,99 28,87 34,81 48 55,99 58,14 60,91 65,17 73,68 78 88,27 90,94 94,37 99,62 109,96

19 23,90 25,33 27,20 30,14 36,19 49 57,08 59,24 62,04 66,34 74,92 79 89,34 92,02 95,48 100,75 111,14

20 25,04 26,50 28,41 31,41 37,57 50 58,16 60,35 63,17 67,50 76,15 80 90,41 93,11 96,58 101,88 112,33

21 26,17 27,66 29,62 32,67 38,93 51 59,25 61,45 64,30 68,67 77,39 81 91,47 94,19 97,68 103,01 113,51

22 27,30 28,82 30,81 33,92 40,29 52 60,33 62,55 65,42 69,83 78,62 82 92,54 95,27 98,78 104,14 114,70

23 28,43 29,98 32,01 35,17 41,64 53 61,41 63,65 66,55 70,99 79,84 83 93,60 96,35 99,88 105,27 115,88

24 29,55 31,13 33,20 36,42 42,98 54 62,50 64,76 67,67 72,15 81,07 84 94,67 97,43 100,98 106,40 117,06

25 30,68 32,28 34,38 37,65 44,31 55 63,58 65,86 68,80 73,31 82,29 85 95,73 98,51 102,08 107,52 118,24

26 31,79 33,43 35,56 38,89 45,64 56 64,66 66,95 69,92 74,47 83,51 86 96,80 99,59 103,18 108,65 119,41

27 32,91 34,57 36,74 40,11 46,96 57 65,74 68,05 71,04 75,62 84,73 87 97,86 100,67104,28 109,77 120,59

28 34,03 35,72 37,92 41,34 48,28 58 66,82 69,15 72,16 76,78 85,95 88 98,93 101,75105,37 110,90 121,77

29 35,14 36,85 39,09 42,56 49,59 59 67,89 70,25 73,28 77,93 87,17 89 99,99 102,83106,47 112,02 122,94

30 36,25 37,99 40,26 43,77 50,89 60 68,97 71,34 74,40 79,08 88,38 90 101,05 103,90107,57 113,15 124,12

Modelagem e Simulação Discreta 231

A Tabela 41 foi elaborada resolvendo numericamente

∫0

χ2

xn2−1e− x

2

2n2 Γ( n

2)dx=p=1−α , para n variando de 2 a 90 e com p igual a 0,80;

0,90, 0,95 e 0,99, conforme o algoritmo abaixo.

Algoritmo 9.4: Gerador dos quantis da distribuição χ2 (Tabela 41) para nvariando de 2 a 90 e com p igual a 0,80; 0,90, 0,95 e 0,99

1. #include <stdio.h>2. #include <stdlib.h>3. #include <cmath>4. #include <string>5. #include <vector>6. #include <sstream>7. #include <fstream>8. //-----------------------------------------------------------9. using namespace std;10. //-----------------------------------------------------------11. double G( double z ){12. return tgamma(z);13. }14. double f( double x, double gl ){15. return 1.0/(pow(2.0,gl/2)*G(gl/2.0))*pow(x,gl/2.0-1.0)*exp(-x/2.0);16. }17. double I( double a, double b, int gl ){18. double Si=0.0, Sp=0.0, N=100, h=(b-a)/N, dx=2.0*h, x;19. x = a+h;20. while( x < b ){21. Si += f(x,gl);22. x += dx;23. }24. x = a+dx;25. while( x < b-h ){26. Sp += f(x,gl);27. x += dx;28. }29. return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;30. }31.32. double Q( double q, int gl ){33. double x = 1.0, erro;34. do{35. erro = q-I(0.0,x,gl);36. x += 5.0*erro;37. }while( fabs(erro) > 1.0E-7 );38. return x;39. }40. string Tabela( void ){41. stringstream str;42. str << "<table border='1'>";43. str << "<tr><td>";44. for( int q = 80; q < 100; q++ )45. str << "<td>" << q/100.0;46.47. for( int gl = 1; gl < 101; gl++ ){48. str << "<tr><td>" << gl;49. for( int n = 80; n < 100; n++ ){50. double q = n/100.0;51. str << "<td>" << Q(q,gl);52. }53. }54. str << "</table>";

Modelagem e Simulação Discreta 232

55. return str.str();56. }57. int main( void ){58. string htm = "<br>Tabela CQ<br>";59. htm += Tabela();60. ofstream file;61. file.open("CQ-Quantis-out.html");62. file << htm;63. file.close();64. return 0;65. }

Segundo Bussab & Morettin (2002), os valores de χ2(p;n) para n > 120podem ser aproximados pelos seus equivalentes da distribuição normal.

9.8 QUANTIS DA DISTRIBUIÇÃO DE KS

A Tabela 42 lista os valores de KS(p;n), p = 1-). Por exemplo, KS(0,99;12)requerido para o teste de KS com 99% de nível de confança é 1,4521.

Tabela 42 - Quantis da Distribuição KS

n\p 0,90 0,95 0,99 n\p 0,90 0,95 0,99 n\p 0,90 0,95 0,991 0,9500 0,9750 0,9950 31 0,2141 0,2379 0,2853 61 0,1539 0,1709 0,20512 0,7764 0,8419 0,9293 32 0,2108 0,2342 0,2809 62 0,1526 0,1696 0,20343 0,6360 0,7076 0,8290 33 0,2077 0,2308 0,2768 63 0,1514 0,1682 0,20184 0,5652 0,6239 0,7342 34 0,2047 0,2274 0,2728 64 0,1503 0,1669 0,20035 0,5094 0,5633 0,6685 35 0,2018 0,2242 0,2690 65 0,1491 0,1657 0,19886 0,4680 0,5193 0,6166 36 0,1991 0,2212 0,2653 66 0,1480 0,1644 0,19737 0,4361 0,4834 0,5758 37 0,1965 0,2183 0,2618 67 0,1469 0,1632 0,19588 0,4096 0,4543 0,5418 38 0,1939 0,2154 0,2584 68 0,1459 0,1620 0,19449 0,3875 0,4300 0,5133 39 0,1915 0,2127 0,2552 69 0,1448 0,1609 0,193010 0,3687 0,4092 0,4889 40 0,1891 0,2101 0,2521 70 0,1438 0,1597 0,191711 0,3524 0,3912 0,4677 41 0,1869 0,2076 0,2490 71 0,1428 0,1586 0,190312 0,3381 0,3754 0,4490 42 0,1847 0,2052 0,2461 72 0,1418 0,1576 0,189013 0,3255 0,3614 0,4325 43 0,1826 0,2028 0,2433 73 0,1409 0,1565 0,187814 0,3142 0,3489 0,4176 44 0,1805 0,2006 0,2406 74 0,1399 0,1554 0,186515 0,3040 0,3376 0,4042 45 0,1786 0,1984 0,2380 75 0,1390 0,1544 0,185316 0,2947 0,3273 0,3920 46 0,1766 0,1963 0,2354 76 0,1381 0,1534 0,184117 0,2863 0,3180 0,3809 47 0,1748 0,1942 0,2330 77 0,1372 0,1524 0,182918 0,2785 0,3094 0,3706 48 0,1730 0,1922 0,2306 78 0,1364 0,1515 0,181719 0,2714 0,3014 0,3612 49 0,1713 0,1903 0,2283 79 0,1355 0,1505 0,180620 0,2647 0,2941 0,3524 50 0,1696 0,1884 0,2260 80 0,1347 0,1496 0,179521 0,2586 0,2872 0,3443 51 0,1680 0,1866 0,2239 81 0,1339 0,1487 0,178422 0,2528 0,2809 0,3367 52 0,1664 0,1848 0,2217 82 0,1330 0,1478 0,177323 0,2475 0,2749 0,3295 53 0,1648 0,1831 0,2197 83 0,1323 0,1469 0,176324 0,2424 0,2693 0,3229 54 0,1633 0,1814 0,2177 84 0,1315 0,1460 0,175225 0,2377 0,2640 0,3166 55 0,1619 0,1798 0,2157 85 0,1307 0,1452 0,174226 0,2332 0,2591 0,3106 56 0,1604 0,1782 0,2138 86 0,1300 0,1444 0,173227 0,2290 0,2544 0,3050 57 0,1591 0,1767 0,2120 87 0,1292 0,1435 0,172228 0,2250 0,2499 0,2997 58 0,1577 0,1752 0,2102 88 0,1285 0,1427 0,171329 0,2212 0,2457 0,2947 59 0,1564 0,1737 0,2084 89 0,1278 0,1419 0,170330 0,2176 0,2417 0,2899 60 0,1551 0,1723 0,2067 90 0,1271 0,1412 0,1694

Modelagem e Simulação Discreta 233

Marsaglia et al. (2015) desenvolveu a função double K(int,double) paraestimar KS(p;n), este Algoritmo 9.5 foi utilizado para gerar a Tabela 42,ilustrado pela Figura 64. Simard & L’Ecuyer (2015) propuseram a funçãodouble KScdf (int,double), disponível emhttp://www.iro.umontreal.ca/~simardr/ksdir, que também pode gerar aTabela 42.

Algoritmo 9.5: Gerador dos quantis da Distribuição KS (Tabela 42) do Testede Kolmogorov-Smirnov

1. #include <stdlib.h>2. #include <math.h>3. #include <string>4. #include <sstream>5. #include <fstream>6.7. using namespace std;8.9. void mMultiply( double *A, double *B, double *C, int m ){10. int i , j, k;11. double s;12. for( i = 0; i < m; i++ )13. for( j = 0; j < m; j++ ){14. s=0.;15. for( k = 0; k < m; k++ )16. s += A[i*m+k]*B[k*m+j];17. C[i*m+j] = s;18. }19. }20.21. void mPower( double *A,int eA,double *V,int *eV,int m,int n){22. double *B;23. int eB, i;24. if( n == 1){25. for( i = 0; i < m*m; i++ )26. V[i] = A[i];27. *eV = eA;28. return;29. }30. mPower(A,eA,V,eV,m,n/2);31. B = (double*)malloc((m*m)*sizeof(double));32. mMultiply(V,V,B,m);33. eB = 2*(*eV);34. if( n%2 == 0 ){35. for( i = 0; i < m*m; i++ )36. V[i]=B[i]; *eV=eB;37. }38. else{39. mMultiply(A,B,V,m);40. *eV=eA+eB;41. }42. if( V[(m/2)*m+(m/2)] > 1.0e140 ){43. for( i = 0; i < m*m; i++ )44. V[i] = V[i]*1.0e-140;45. *eV += 140;46. }47. free(B);48. }49. double K( int n, double d ){50. int k, m, i, j, g, eH, eQ;51. double h, s, *H, *Q;52. s = d*d*n;53. if( s > 7.24 || ( s > 3.76 && n > 99 ) ) return 1.0-2.0*exp(-

(2.000071+.331/sqrt(n)+1.409/n)*s);

Modelagem e Simulação Discreta 234

54. k = (int)(n*d)+1;55. m = 2*k-1;56. h = k-n*d;57. H =(double*)malloc((m*m)*sizeof(double));58. Q =(double*)malloc((m*m)*sizeof(double));59. for( i = 0; i < m; i++ )60. for( j = 0; j < m; j++ )61. if(i-j+1<0 ) H[i*m+j]=0;62. else H[i*m+j]=1;63. for( i = 0; i < m; i++ ){64. H[i*m] -= pow(h,i+1);65. H[(m-1)*m+i] -= pow(h,(m-i));66. }67. H[(m-1)*m] += ( 2.0*h-1.0 > 0.0 ? pow(2.0*h-1.0,m) : 0.0 );68. for( i = 0; i< m; i++ )69. for( j = 0; j < m; j++ )70. if( i-j+1 > 0 ) for( g = 1; g <= i-j+1; g++ )71. H[i*m+j] /= g;72. eH = 0;73. mPower(H,eH,Q,&eQ,m,n);74. s = Q[(k-1)*m+k-1];75. for( i = 1; i <= n; i++ ){76. s = s*i/n;77. if( s < 1.0e-140 ){78. s *= 1.0e140;79. eQ -= 140;80. }81. }82. s *= pow(10.,eQ);83. free(H);84. free(Q);85. return s;86. }87. double KS( int n, double a ){88. double x = 1.0, erro, I = 1.0-a;89. do{90. erro = I-K(n,x);91. x += erro/5.0;92. }while( fabs(erro) > 1.0E-7 );93. return x;94. }95. string Tabela( void ){96. stringstream str;97. str << "<table border='1' >";98. str << "<tr><td>n<td>0.90<td>0.95<td>0.99";99. for( int l = 1; l < 91; l++ ){100. str << "<tr><td>" << l;101. str << "<td>" << KS(l,0.10);102. str << "<td>" << KS(l,0.05);103. str << "<td>" << KS(l,0.01);104. }105. str << "</table>";106. return str.str();107. }108. int main( void ){109. string htm = "<br>Tabela KS<br>";110. htm += Tabela();111.112. ofstream file;113. file.open( "KS-Quantis.out.html" );114. file << htm;115. file.close();116. return 0;117. }

Modelagem e Simulação Discreta 235

Figura 64 - Esquema do cálculo de KS(1-);n) destacando o valor de xcrítico para o Teste de Kolmogorov-Smirnov.

Segundo Bussab & Morettin (2002), os valores de KS(p;n) podem ser

aproximados pela equação KS( p ,n)=−ln( p)√n

para n > 30.

9.9 QUANTIS DA DISTRIBUIÇÃO NORMAL UNITÁRIA

A Tabela 43 lista os valores de z para dado q da fdp Normal Unitária N(0,1)

dada por f (z)= 1√2π

e− z

2

2 . Por exemplo, para o intervalo de confança

unilateral de 95%, ) = 0.05 e q = 1-) = 0.95. A linha da coluna 0.9 ecoluna 0.05 tem o valor z = 1.645.

Tabela 43 - Quantis da Distribuição Normal Unitária

q 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.090.5 0.00000 0.02507 0.05015 0.07527 0.10043 0.12566 0.15097 0.17637 0.20189 0.227540.6 0.25335 0.27932 0.30548 0.33185 0.35846 0.38532 0.41246 0.43991 0.46770 0.495850.7 0.52440 0.55338 0.58284 0.61281 0.64335 0.67449 0.70630 0.73885 0.77219 0.806420.8 0.84162 0.87790 0.91537 0.95417 0.99446 1.03643 1.08032 1.12639 1.17499 1.226530.9 1.28155 1.34076 1.40507 1.47579 1.55477 1.64485 1.75069 1.88079 2.05375 2.32635

Modelagem e Simulação Discreta 236

A Tabela 43 foi elaborada resolvendo numericamente

∫0

z1

√2πe− z

2

2 dx=q−0.5=0.5−α , para q variando de 0.5 a 0.99, conforme o

Algoritmo 9.6.

Algoritmo 9.6: Gerador dos quantis da distribuição Normal unitária

1. #include <stdio.h>2. #include <stdlib.h>3. #include <cmath>4. #include <string>5. #include <vector>6. #include <sstream>7. #include <fstream>8. #include <iomanip>9. #define PI 3.141592653589793238L10.11. using namespace std;12.13. double f( double x ){14. return exp(-x*x/2.0)/sqrt(2.0*PI);15. }16.17. double I( double a, double b ){18. double Si = 0.0, Sp = 0.0, N = 100, h = (b-a)/N, dx = 2.0*h, x;19. x = a+h;20. while( x < b ){21. Si += f(x);22. x += dx;23. }24. x = a+dx;25. while( x < b-h ){26. Sp += f(x);27. x += dx;28. }29. return (f(a)+f(b)+4.0*Si+2.0*Sp)*h/3.0;30. }31. double Q( double q ){32. double x = 1.0, erro;33. do{34. erro = q-I(0.0,x)-0.5;35. x += 5.0*erro;36. }while( fabs(erro) > 1.0E-7 );37. return x;38. }39.40. string Tabela( void ){41. stringstream str;42. str << setprecision(4);43. str << fixed;44.45. str << "<table cellpadding='2' cellspacing='0' border='1'>";46. str << "<tr><td>z";47. for( int c = 0; c < 10; c++ )48. str << "<td>" << c/100.0;49.50. for( int l = 5; l < 10; l++ ){51. str << "<tr><td>" << l/10.0;52. for( int c = 0; c < 10; c++ ){53. str << "<td>" << Q(l/10.0+c/100.0);54. }55. }56. str << "</table>";57. return str.str();58. }

Modelagem e Simulação Discreta 237

59.60. int main( void ){61. string htm = "<br>Tabela N-Quantis<br>";62. htm += Tabela();63.64. ofstream file;65. file.open("N-Quantis-out.html");66. file << htm;67. file.close();68.69. return 0;70. }

9.10 QUANTIS DA DISTRIBUIÇÃO T (UNILATERAL)

A função densidade de probabilidade t-Student com n graus de liberdade é

defnida por t (x , n)=Γ( n+1

2)

Γ(n2)√nπ

(1+x2

2)−(n+1

2)

, sendo Γ(x) a função Gamma. A

Tabela 44 lista os quantis t(q,n) unilateral, por exemplo, o valor t(0.90,13)requerido pelo teste t com 90% de nível de confança e 13 graus deliberade é 1.3502.

Tabela 44 - Quantis da Distribuição t unilateraln\q 0.900 0.925 0.950 0.975 0.990 n\q 0.900 0.925 0.950 0.975 0.990 n\q 0.900 0.925 0.950 0.975 0.9901 3.0777 4.1653 6.3138 12.7062 31.8763 31 1.3095 1.4761 1.6955 2.0395 2.4528 61 1.2956 1.4579 1.6702 1.9996 2.38902 1.8856 2.2819 2.9200 4.3027 6.9646 32 1.3086 1.4749 1.6939 2.0369 2.4487 62 1.2954 1.4576 1.6698 1.9990 2.38803 1.6377 1.9243 2.3534 3.1824 4.5407 33 1.3077 1.4738 1.6924 2.0345 2.4448 63 1.2951 1.4573 1.6694 1.9983 2.38704 1.5332 1.7782 2.1318 2.7764 3.7469 34 1.3070 1.4728 1.6909 2.0322 2.4411 64 1.2949 1.4570 1.6690 1.9977 2.38605 1.4759 1.6994 2.0150 2.5706 3.3649 35 1.3062 1.4718 1.6896 2.0301 2.4377 65 1.2947 1.4567 1.6686 1.9971 2.38516 1.4398 1.6502 1.9432 2.4469 3.1427 36 1.3055 1.4709 1.6883 2.0281 2.4345 66 1.2945 1.4565 1.6683 1.9966 2.38427 1.4149 1.6166 1.8946 2.3646 2.9980 37 1.3049 1.4701 1.6871 2.0262 2.4314 67 1.2943 1.4562 1.6679 1.9960 2.38338 1.3968 1.5922 1.8595 2.3060 2.8965 38 1.3042 1.4692 1.6860 2.0244 2.4286 68 1.2941 1.4560 1.6676 1.9955 2.38249 1.3830 1.5737 1.8331 2.2622 2.8214 39 1.3036 1.4685 1.6849 2.0227 2.4258 69 1.2939 1.4557 1.6672 1.9949 2.381610 1.3722 1.5592 1.8125 2.2281 2.7638 40 1.3031 1.4677 1.6839 2.0211 2.4233 70 1.2938 1.4555 1.6669 1.9944 2.380811 1.3634 1.5476 1.7959 2.2010 2.7181 41 1.3025 1.4670 1.6829 2.0195 2.4208 71 1.2936 1.4553 1.6666 1.9939 2.380012 1.3562 1.5380 1.7823 2.1788 2.6810 42 1.3020 1.4664 1.6820 2.0181 2.4185 72 1.2934 1.4551 1.6663 1.9935 2.379313 1.3502 1.5299 1.7709 2.1604 2.6503 43 1.3016 1.4657 1.6811 2.0167 2.4163 73 1.2933 1.4548 1.6660 1.9930 2.378514 1.3450 1.5231 1.7613 2.1448 2.6245 44 1.3011 1.4651 1.6802 2.0154 2.4141 74 1.2931 1.4546 1.6657 1.9925 2.377815 1.3406 1.5172 1.7531 2.1314 2.6025 45 1.3006 1.4645 1.6794 2.0141 2.4121 75 1.2929 1.4544 1.6654 1.9921 2.377116 1.3368 1.5121 1.7459 2.1199 2.5835 46 1.3002 1.4640 1.6787 2.0129 2.4102 76 1.2928 1.4542 1.6652 1.9917 2.376417 1.3334 1.5077 1.7396 2.1098 2.5669 47 1.2998 1.4635 1.6779 2.0117 2.4083 77 1.2926 1.4540 1.6649 1.9913 2.375818 1.3304 1.5037 1.7341 2.1009 2.5524 48 1.2994 1.4629 1.6772 2.0106 2.4066 78 1.2925 1.4538 1.6646 1.9908 2.375119 1.3277 1.5002 1.7291 2.0930 2.5395 49 1.2991 1.4625 1.6766 2.0096 2.4049 79 1.2924 1.4537 1.6644 1.9905 2.374520 1.3253 1.4970 1.7247 2.0860 2.5280 50 1.2987 1.4620 1.6759 2.0086 2.4033 80 1.2922 1.4535 1.6641 1.9901 2.373921 1.3232 1.4942 1.7207 2.0796 2.5176 51 1.2984 1.4615 1.6753 2.0076 2.4017 81 1.2921 1.4533 1.6639 1.9897 2.373322 1.3212 1.4916 1.7171 2.0739 2.5083 52 1.2980 1.4611 1.6747 2.0066 2.4002 82 1.2920 1.4531 1.6636 1.9893 2.372723 1.3195 1.4893 1.7139 2.0687 2.4999 53 1.2977 1.4607 1.6741 2.0057 2.3988 83 1.2918 1.4530 1.6634 1.9890 2.372124 1.3178 1.4871 1.7109 2.0639 2.4922 54 1.2974 1.4603 1.6736 2.0049 2.3974 84 1.2917 1.4528 1.6632 1.9886 2.371625 1.3163 1.4852 1.7081 2.0595 2.4851 55 1.2971 1.4599 1.6730 2.0040 2.3961 85 1.2916 1.4527 1.6630 1.9883 2.371026 1.3150 1.4834 1.7056 2.0555 2.4786 56 1.2969 1.4596 1.6725 2.0032 2.3948 86 1.2915 1.4525 1.6628 1.9879 2.370527 1.3137 1.4817 1.7033 2.0518 2.4727 57 1.2966 1.4592 1.6720 2.0025 2.3936 87 1.2914 1.4524 1.6626 1.9876 2.370028 1.3125 1.4801 1.7011 2.0484 2.4671 58 1.2963 1.4589 1.6716 2.0017 2.3924 88 1.2912 1.4522 1.6624 1.9873 2.369529 1.3114 1.4787 1.6991 2.0452 2.4620 59 1.2961 1.4585 1.6711 2.0010 2.3912 89 1.2911 1.4521 1.6622 1.9870 2.369030 1.3104 1.4774 1.6973 2.0423 2.4573 60 1.2958 1.4582 1.6706 2.0003 2.3901 90 1.2910 1.4519 1.6620 1.9867 2.3685

Modelagem e Simulação Discreta 238

A Tabela 44 foi elaborada resolvendo numericamente

∫0

z Γ( n+12

)

Γ(n2)√nπ

(1+x2

2)−(n+1

2)dx=q−0.5=0.5−α , para n variando de 1 a 90 e q

iguais a 0.900, 0.925, 0.950, 0.975 e 0.990, conforme o Algoritmo 9.7.Para n = 1 e n =2 a integração numérica não é tão precisa quanto para n> 2.

Algoritmo 9.7: Gerador dos quantis da distribuição t unilateral

1. #include <stdio.h>2. #include <stdlib.h>3. #include <cmath>4. #include <string>5. #include <vector>6. #include <sstream>7. #include <fstream>8. #include <iomanip>9. //------------------------------------------------------------------------10. #define PI 3.141592653589793238L11. //------------------------------------------------------------------------12. using namespace std;13. //------------------------------------------------------------------------14. double G( double z ){15. return tgamma(z);16. }17.18. double f( double x, int gl ){19. return G((gl+1.0)/2.0)*pow(1.0+x*x/gl,-(gl+1.0)/2.0)/ sqrt(gl*PI)/

G(gl/2.0);20. }21.22. double I( double a, double b, int gl ){23. double Si = 0.0, Sp = 0.0, N = 100, h = (b-a)/N, dx = 2.0*h, x;24. x = a+h;25. while( x < b ){26. Si += f(x,gl);27. x += dx;28. }29. x = a+dx;30. while( x < b-h ){31. Sp += f(x,gl);32. x += dx;33. }34. return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;35. }36.37. double Q( double q, int gl ){38. double x = 1.0, erro;39. do{40. erro = q-I(0.0,x,gl)-0.5;41. x += 2.0*erro;42. }while( fabs(erro) > 1.0E-9 );43. return x;44. }45.46. string Tabela( void ){47. stringstream str;48. str << setprecision(4);49. str << fixed;50.51. str << "<table cellpadding='2' cellspacing='0' border='1'>";52. str << "<tr><td>q<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990";

Modelagem e Simulação Discreta 239

53.54. for( int gl = 1; gl < 101; gl++ ){55. str << "<tr><td>" << gl;56. str << "<td>" << Q(0.900,gl);57. str << "<td>" << Q(0.925,gl);58. str << "<td>" << Q(0.950,gl);59. str << "<td>" << Q(0.975,gl);60. str << "<td>" << Q(0.990,gl);61. }62. str << "</table>";63. return str.str();64. }65.66. int main( void ){67. string htm = "<br>Tabela t-Quantis unilateral<br>";68. htm += Tabela();69.70. ofstream file;71. file.open("t-Quantis-out.html");72. file << htm;73. file.close();74.75. return 0;76. }

9.11 QUANTIS DA DISTRIBUIÇÃO T (BILATERAL)

A função densidade de probabilidade t-Student com n graus de liberdade é

defnida por t (x , n)=Γ( n+1

2)

Γ(n2)√nπ

(1+x2

n)−(n+1

2)

, sendo Γ(x) a função Gamma. A

Tabela 45 lista os quantis t(q,n) bilateral, pode-se verifcar que a fdp ésimétrica, ou seja, no geral t(1-)/2,n) = -t()/2,n).

Tabela 45 - Quantis da Distribuição t bilateral

n\q 0.005 0.010 0.025 0.050 0.100 0.900 0.925 0.950 0.975 0.990 0.9951 -52.5111 -28.7660 -12.1867 -6.1803 -3.0431 3.1130 4.2273 6.4529 13.2716 35.5999 80.80632 -9.9193 -6.9626 -4.3021 -2.9198 -1.8855 1.8857 2.2820 2.9202 4.3032 6.9666 9.93043 -5.8409 -4.5407 -3.1824 -2.3534 -1.6377 1.6377 1.9243 2.3534 3.1824 4.5407 5.84094 -4.6041 -3.7469 -2.7764 -2.1318 -1.5332 1.5332 1.7782 2.1318 2.7764 3.7469 4.60415 -4.0321 -3.3649 -2.5706 -2.0150 -1.4759 1.4759 1.6994 2.0150 2.5706 3.3649 4.03216 -3.7074 -3.1427 -2.4469 -1.9432 -1.4398 1.4398 1.6502 1.9432 2.4469 3.1427 3.70747 -3.4995 -2.9980 -2.3646 -1.8946 -1.4149 1.4149 1.6166 1.8946 2.3646 2.9980 3.49958 -3.3554 -2.8965 -2.3060 -1.8595 -1.3968 1.3968 1.5922 1.8595 2.3060 2.8965 3.35549 -3.2498 -2.8214 -2.2622 -1.8331 -1.3830 1.3830 1.5737 1.8331 2.2622 2.8214 3.249810 -3.1693 -2.7638 -2.2281 -1.8125 -1.3722 1.3722 1.5592 1.8125 2.2281 2.7638 3.169311 -3.1058 -2.7181 -2.2010 -1.7959 -1.3634 1.3634 1.5476 1.7959 2.2010 2.7181 3.105812 -3.0545 -2.6810 -2.1788 -1.7823 -1.3562 1.3562 1.5380 1.7823 2.1788 2.6810 3.054513 -3.0123 -2.6503 -2.1604 -1.7709 -1.3502 1.3502 1.5299 1.7709 2.1604 2.6503 3.012314 -2.9768 -2.6245 -2.1448 -1.7613 -1.3450 1.3450 1.5231 1.7613 2.1448 2.6245 2.976815 -2.9467 -2.6025 -2.1315 -1.7531 -1.3406 1.3406 1.5172 1.7531 2.1315 2.6025 2.946716 -2.9208 -2.5835 -2.1199 -1.7459 -1.3368 1.3368 1.5121 1.7459 2.1199 2.5835 2.920817 -2.8982 -2.5669 -2.1098 -1.7396 -1.3334 1.3334 1.5077 1.7396 2.1098 2.5669 2.898218 -2.8784 -2.5524 -2.1009 -1.7341 -1.3304 1.3304 1.5037 1.7341 2.1009 2.5524 2.878419 -2.8609 -2.5395 -2.0930 -1.7291 -1.3277 1.3277 1.5002 1.7291 2.0930 2.5395 2.8609

Modelagem e Simulação Discreta 240

20 -2.8453 -2.5280 -2.0860 -1.7247 -1.3253 1.3253 1.4970 1.7247 2.0860 2.5280 2.845321 -2.8314 -2.5177 -2.0796 -1.7207 -1.3232 1.3232 1.4942 1.7207 2.0796 2.5177 2.831422 -2.8188 -2.5083 -2.0739 -1.7171 -1.3212 1.3212 1.4916 1.7171 2.0739 2.5083 2.818823 -2.8073 -2.4999 -2.0687 -1.7139 -1.3195 1.3195 1.4893 1.7139 2.0687 2.4999 2.807324 -2.7969 -2.4922 -2.0639 -1.7109 -1.3178 1.3178 1.4871 1.7109 2.0639 2.4922 2.796925 -2.7874 -2.4851 -2.0595 -1.7081 -1.3163 1.3163 1.4852 1.7081 2.0595 2.4851 2.787426 -2.7787 -2.4786 -2.0555 -1.7056 -1.3150 1.3150 1.4834 1.7056 2.0555 2.4786 2.778727 -2.7707 -2.4727 -2.0518 -1.7033 -1.3137 1.3137 1.4817 1.7033 2.0518 2.4727 2.770728 -2.7633 -2.4671 -2.0484 -1.7011 -1.3125 1.3125 1.4801 1.7011 2.0484 2.4671 2.763329 -2.7564 -2.4620 -2.0452 -1.6991 -1.3114 1.3114 1.4787 1.6991 2.0452 2.4620 2.756430 -2.7500 -2.4573 -2.0423 -1.6973 -1.3104 1.3104 1.4774 1.6973 2.0423 2.4573 2.7500

A Tabela 45 foi elaborada resolvendo numericamente

∫0

z Γ( n+12

)

Γ(n2)√nπ

(1+x2

n)−(n+1

2)dx=q−0.5=0.5−α , para n variando de 1 a 30 e q

iguais a 0.005, 0.010, 0.025, 0.050, 0.100, 0.900, 0.925, 0.950, 0.975,0.990 e 0.995, conforme o Algoritmo 9.8. Para n = 1 e n = 2 a integraçãonumérica não é tão precisa quanto para n > 2.

Algoritmo 9.8: Gerador dos quantis da distribuição t bilateral

1. #include <stdio.h>2. #include <stdlib.h>3. #include <cmath>4. #include <string>5. #include <vector>6. #include <sstream>7. #include <fstream>8. #include <iomanip>9. #define PI 3.141592653589793238L10.11. using namespace std;12.13. double G( double z ){14. return tgamma(z);15. }16.17. double f( double x, int gl ){18. return G((gl+1.0)/2.0)*pow(1.0+x*x/gl,-(gl+1.0)/2.0)/ sqrt(gl*PI)/

G(gl/2.0);19. }20.21. double I( double a, double b, int gl ){22. double Si = 0.0, Sp = 0.0, N = 3000, h = (b-a)/N, dx = 2.0*h, x;23. x = a+h;24. while( x < b ){25. Si += f(x,gl);26. x += dx;27. }28. x = a+dx;29. while( x < b-h ){30. Sp += f(x,gl);31. x += dx;32. }33. return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;34. }35. double Q( double q, int gl ){36. double x = 0.0, erro, c = 0;37. do{ 38. erro = q-I(-300.0,x,gl);39. x += 5.0*erro;40. c++;

Modelagem e Simulação Discreta 241

41. }while( fabs(erro) > 1.0E-10 );42. printf("\n c = %f", c );43. return x;44. }45. string Tabela( void ){46. stringstream str;47. str << setprecision(4);48. str << fixed;49. str << "<table cellpadding='2' cellspacing='0' border='1'>";50. str << "<tr><td>q<td>0.005<td>0.010<td>0.025<td>0.050<td>0.100";51. str << "<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990<td>0.995";52.53. for( int gl = 1; gl < 31; gl++ ){54. str << "<tr><td>" << gl;55. str << "<td>" << Q(0.005,gl);56. str << "<td>" << Q(0.010,gl);57. str << "<td>" << Q(0.025,gl);58. str << "<td>" << Q(0.050,gl);59. str << "<td>" << Q(0.100,gl);60. str << "<td>" << Q(0.900,gl);61. str << "<td>" << Q(0.925,gl);62. str << "<td>" << Q(0.950,gl);63. str << "<td>" << Q(0.975,gl);64. str << "<td>" << Q(0.990,gl);65. str << "<td>" << Q(0.995,gl);66. }67. str << "</table>";68. return str.str();69. }70.71. int main( void ){72. string htm = "<br>Tabela t-Quantis bilateral<br>";73. htm += Tabela();74. ofstream file;75. file.open("t-Quantis.bilateral-out.html");76. file << htm;77. file.close();78.79. return 0;80. }

9.12 QUANTIS DA DISTRIBUIÇÃO Χ2 BILATERAL

A função densidade de probabilidade χ2 com n graus de liberdade é

defnida por f (x ,n)=xn2−1e− x

2

2n2 Γ( n

2)

, sendo Γ(x) a função Gamma. A Tabela 46

lista os quantis χ2(p;n), p = 1-).

Tabela 46 - Quantis da distribuição χ2 bilateral

n\p 0.005 0.010 0.025 0.050 0.100 0.900 0.925 0.950 0.975 0.990 0.9952 0.0100 0.0201 0.0506 0.1026 0.2107 4.6052 5.1805 5.9915 7.3778 9.2103 10.59663 0.0717 0.1148 0.2158 0.3518 0.5844 6.2518 6.9052 7.8157 9.3510 11.3534 12.85854 0.2070 0.2971 0.4844 0.7107 1.0636 7.7794 8.4963 9.4877 11.1433 13.2767 14.86035 0.4117 0.5543 0.8312 1.1455 1.6103 9.2364 10.0083 11.0705 12.8325 15.0863 16.7496

Modelagem e Simulação Discreta 242

6 0.6757 0.8721 1.2373 1.6354 2.2041 10.6446 11.4659 12.5916 14.4494 16.8119 18.54767 0.9893 1.2390 1.6899 2.1673 2.8331 12.0170 12.8834 14.0671 16.0128 18.4753 20.27778 1.3444 1.6465 2.1797 2.7326 3.4895 13.3616 14.2697 15.5073 17.5345 20.0902 21.95509 1.7349 2.0879 2.7004 3.3251 4.1682 14.6837 15.6309 16.9190 19.0228 21.6660 23.589410 2.1559 2.5582 3.2470 3.9403 4.8652 15.9872 16.9714 18.3070 20.4832 23.2093 25.188211 2.6032 3.0535 3.8157 4.5748 5.5778 17.2750 18.2942 19.6751 21.9200 24.7250 26.756812 3.0738 3.5706 4.4038 5.2260 6.3038 18.5493 19.6020 21.0261 23.3367 26.2170 28.299513 3.5650 4.1069 5.0088 5.8919 7.0415 19.8119 20.8966 22.3620 24.7356 27.6882 29.819514 4.0747 4.6604 5.6287 6.5706 7.7895 21.0641 22.1795 23.6848 26.1189 29.1412 31.319315 4.6009 5.2293 6.2621 7.2609 8.5468 22.3071 23.4522 24.9958 27.4884 30.5779 32.801316 5.1422 5.8122 6.9077 7.9616 9.3122 23.5418 24.7155 26.2962 28.8454 31.9999 34.267217 5.6972 6.4078 7.5642 8.6718 10.0852 24.7690 25.9705 27.5871 30.1910 33.4087 35.718518 6.2648 7.0149 8.2307 9.3905 10.8649 25.9894 27.2178 28.8693 31.5264 34.8053 37.156519 6.8440 7.6327 8.9065 10.1170 11.6509 27.2036 28.4581 30.1435 32.8523 36.1909 38.582320 7.4338 8.2604 9.5908 10.8508 12.4426 28.4120 29.6920 31.4104 34.1696 37.5662 39.996821 8.0337 8.8972 10.2829 11.5913 13.2396 29.6151 30.9200 32.6706 35.4789 38.9322 41.401122 8.6427 9.5425 10.9823 12.3380 14.0415 30.8133 32.1424 33.9244 36.7807 40.2894 42.795723 9.2604 10.1957 11.6886 13.0905 14.8480 32.0069 33.3597 35.1725 38.0756 41.6384 44.181324 9.8862 10.8564 12.4012 13.8484 15.6587 33.1962 34.5723 36.4150 39.3641 42.9798 45.558525 10.5197 11.5240 13.1197 14.6114 16.4734 34.3816 35.7803 37.6525 40.6465 44.3141 46.927926 11.1602 12.1981 13.8439 15.3792 17.2919 35.5632 36.9841 38.8851 41.9232 45.6417 48.289927 11.8076 12.8785 14.5734 16.1514 18.1139 36.7412 38.1840 40.1133 43.1945 46.9629 49.644928 12.4613 13.5647 15.3079 16.9279 18.9392 37.9159 39.3801 41.3371 44.4608 48.2782 50.993429 13.1211 14.2565 16.0471 17.7084 19.7677 39.0875 40.5727 42.5570 45.7223 49.5879 52.335630 13.7867 14.9535 16.7908 18.4927 20.5992 40.2560 41.7619 43.7730 46.9792 50.8922 53.6720

A Tabela 46 foi elaborada resolvendo numericamente

∫0

χ2

xn2−1e− x

2

2n2 Γ( n

2)dx=p=1−α , para n variando de 1 a 30 e p iguais a 0.005,

0.010, 0.025, 0.050, 0.100, 0.900, 0.925, 0.950, 0.975, 0.990 e 0.995,conforme o algoritmo abaixo. Para n = 1 a integração numérica não é tãoprecisa quanto para n > 1.

Algoritmo 9.9: Gerador dos quantis da distribuição χ2 bilateral

1. #include <stdio.h>2. #include <stdlib.h>3. #include <cmath>4. #include <string>5. #include <vector>6. #include <sstream>7. #include <fstream>8. #include <iomanip>9.10. using namespace std;11.12. double G( double z ){13. return tgamma(z);14. }15.16. double f( double x, double gl ){17. return 1.0/(pow(2.0,gl/2)*G(gl/2.0))*pow(x,gl/2.0-1.0)*exp(-x/2.0);18. }19.20. double I( double a, double b, int gl ){21. double Si = 0.0, Sp = 0.0, N = 1000,h = (b-a)/N, dx = 2.0*h, x;22. x = a+h;23. while( x < b ){24. Si += f(x,gl);25. x += dx;26. }27. x = a+dx;28. while( x < b-h ){29. Sp += f(x,gl);30. x += dx;31. }32. return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;

Modelagem e Simulação Discreta 243

33. }34.35. double Q( double q, int gl ){36. double x = 1.0, erro, c = 0;37. do{38. erro = q-I(0.0,x,gl);39. x += erro;40. c++;41. }while( fabs(erro) > 1.0E-12 );42. printf("\n c = %f", c );43. return x;44. }45.46. string Tabela( void ){47. stringstream str;48. str << setprecision(4);49. str << fixed;50.51. str << "<table cellpadding='2' cellspacing='0' border='1'>";52. str << "<tr><td>q<td>0.005<td>0.010<td>0.025<td>0.050<td>0.100";53. str << "<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990<td>0.995";54.55. for( int gl = 1; gl < 31; gl++ ){56. str << "<tr><td>" << gl;57. str << "<td>" << Q(0.005,gl);58. str << "<td>" << Q(0.010,gl);59. str << "<td>" << Q(0.025,gl);60. str << "<td>" << Q(0.050,gl);61. str << "<td>" << Q(0.100,gl);62.63. str << "<td>" << Q(0.900,gl);64. str << "<td>" << Q(0.925,gl);65. str << "<td>" << Q(0.950,gl);66. str << "<td>" << Q(0.975,gl);67. str << "<td>" << Q(0.990,gl);68. str << "<td>" << Q(0.995,gl);69. }70. str << "</table>";71. return str.str();72. }73.74. int main( void ){75. string htm = "<br>Tabela CQ-Quantis bilateral<br>";76. htm += Tabela();77.78. ofstream file;79. file.open("CQ-Quantis.bilateral-out.html");80. file << htm;81. file.close();82.83. return 0;84. }

Segundo Bussab & Morettin (2002), os valores de χ2(p;n) para n > 120podem ser aproximados pelos seus equivalentes da distribuição normal.

9.13 NOÇÕES BÁSICAS DE TEORIA DOS NÚMEROS

Modelagem e Simulação Discreta 244

9.13.1 FUNÇÃO PISO

A função piso ⌊x⌋ também chamada de função maior inteiro de x é umafunção cujo domínio é o conjunto dos Números Reais (R) e o contradomínioé o conjunto dos Números Inteiros (Z) que associa um número real x aointeiro n, isto é ⌊x⌋ = n, istoé ⌊x⌋ = max{n ∈ Z | n ≤ x}. As Linguagens C eC++ possuem a função int foor(double) para calcular a função piso denúmeros reais.

Se a função piso de x é o número inteiro n, temos que:

• ⌊x⌋ = n tal que n ≤ x < n+1• n = foor(x)

Exemplo 9.5:

2 = foor(2.3)

3 = foor(3.8)

-3 = foor(-2.3)

-4 = foor(-3.8).

9.13.2 FUNÇÃO TETO

A função teto ⌈x⌉ também chamada de função menor inteiro de x é umafunção cujo domínio é R e o contradomínio é Z e que associa um númeroreal x ao inteiro n, isto é ⌈x⌉ = n, ou seja ⌈x⌉ = min{n ∈ Z | n ≥ x}. Afunção int ceil(double) das Linguagens C e C++ calcula a função teto denúmeros reais.

Se a função teto de x é o número inteiro n, temos que:

• ⌈x⌉ = n tal que n−1 < x ≤ n• n = ceil(x)

Exemplo 9.6:

3 = ceil(2.3)

4 = ceil(3.8)

-2 = ceil(-2.3)

-3 = ceil(-3.8)

Modelagem e Simulação Discreta 245

9.13.3 NÚMERO PRIMO

Um número natural p > 1 é chamado primo se os únicos divisorespositivos de p são 1 e p. O Programa primo.c testa se um número é primo.

Algoritmo 9.10: Programa primo.c - Programa para testar os divisoresimpares até n1/2+1.

1. #include <stdio.h>2. int primo( int n ){3. int c, N;4. if( !(n % 2) ) return 0;5. N = sqrt(n)+1;6. for( c = 3; c < N; c += 2 )7. if( !(n % c) ) return 0;8. return 1;9. }10. int main (void){11. int n;12. for( n = 3; n < 100; n++ )13. if( primo(n) ) printf(" %d ::", n);14. return 0;15. }

9.13.4 MÁXIMO DIVISOR COMUM (MDC)

Dados dois números inteiros a e b com a ≠ 0 ou b ≠ 0, a cada um delespode-se associar seu conjunto de divisores positivos, Da e Dbrespectivamente, e a intersecção de tais conjuntos Da ∩ Db é fnita e nãovazia (já que 1 pertence à intersecção). Por ser fnito, Da ∩ Db possuielemento máximo, que é chamado de Máximo Divisor Comum (mdc) dosnúmeros a e b. Denotamos este número por mdc(a,b). Para a = b = 0convencionamos mdc(0,0) = 0. Quando mdc(a,b) = 1 dizemos que a e bsão primos entre si.

O algoritmo de Euclides para calacular o mdc(a,b) é um dos mais antigosainda em uso. O Programa mdc.c implementaeste algoritmo para númerosinteiros utilizando recursividade.

Algoritmo 9.11: Programa mdc.c - Programa para calcular recursivamenteo mdc de números inteiros utilizando o algoritmo de Euclides.

1. #include <stdio.h>2. int mdc( int a, int b){3. if( b == 0 ) return a;4. else return mdc(b,a%b);5. }6. int main( void ){7. int a = 156, b = 348; // mdc(156,348) = 12;8. printf( "mdc(%d,%d) = %d", a, b, mdc(a,b) );

Modelagem e Simulação Discreta 246

9. return 0;10. }

9.13.5 DIVISIBILIDADE

Dados dois inteiros d e a, dizemos que d divide a ou que d é um divisor dea ou ainda que a é um múltiplo de d e escrevemos d|a se existir q ∈ Z coma = qd. A divisibilidade defne uma relação binária B no conjunto dosnúmeros inteiros, B = {(a,b)|a divide b}. Nesses termos, quando (a,b) ∈ Bcostuma-se dizer que a está relacionado com b escrevendo-se aBb.

A relação de divisibilidade possui as seguintes propriedades, paraquaisquer (salvo indicação em contrário) inteiros a, b, c, d, r, s:

1 a|a refexividade2 a|b e b|c → a|c transitividade3 a|b e b|a → a=b ou a=-b anti-simetria4 c|a e c|b → c|ra + sb linearidade5 a|b e c|d → ac|bd6 a|b → ac|bc multiplicatividade7 ac|bc e c ≠ 0 → a|b lei do cancelamento8 1|a 1 divide todo número inteiro9 a|0 qualquer número divide zero10 0|a → a=0 zero só divide zero11 a|1 → a=∓1 os divisores de 1 são 1 e -112 a|b e b ≠ 0 → |a| ≤ |b| compatibilidade com a ordem ≤13 a|b e a ≠ 0 → (b/a)|b

9.13.6 OPERADOR MOD

Algoritmo da divisão de Euclides estabelece o Teorema: Se a e b sãonúmeros inteiros, e b ≠ 0, então existe um único par de números inteiros qe r, tais que a = bq+r, com 0 ≤ r < |b|. A função mod(a,b) = r.

O operador % das Linguagens C e C++ calcula mod(a,b) da forma a % b.

9.14 INTERVALO DE CONFIANÇA DA MÉDIA

Modelagem e Simulação Discreta 247

Não é possível obter uma estimativa única da média da população a partirde qualquer número fnito de amostras de tamanho fnito. Cada média daamostra é uma estimativa da média da população. Dadas k amostras,temos k estimativas, todas eles diferentes. É necessário obter uma únicaestimativa da média da população em relação às estimativas k.

O melhor que se pode fazer é obter limites probabilísticos. Assim, pode-seobter dois limites, Li e Ls, de tal forma que existe uma probabilidade de 1-)que a média da população está no intervalo (Li,Ls):

Probabilidade {Li ≤ xm ≤ Ls} = 1-).

O intervalo (Li, Ls) é chamado de intervalo de confança para a média dapopulação, ) é designado como nível de signifcância, 100(1-))% échamado o nível de confança, e 1-) é chamado o coefciente deconfança.

Definição de Intervalo de Confiança:

Sejam X1, X2, ..., Xn variáveis aleatórias com um conjunto de distribuiçãode acordo com um parâmetro θ ∈ Θ. Sejam T1 < T2 funções destes dadosmas não de θ. O intervalo aleatório (T1,T2) é chamado de intervalo deconfança estocástico para θ com confança 1-), se Pθ(T1 < θ < T2) ≥ 1-),para todo θ ∈ Θ. Se t1 e t2 são os valores observados de T1 e T2, o intervalo(t1,t2) é chamado de intervalo de confança numérico para θ com confança1-a.

Note-se que o nível de confança é tradicionalmente expressa como umapercentagem e é, tipicamente, perto de 100%, por exemplo, 90 ou 95%,enquanto que o nível de signifcância é expressa como uma fração de ume é, tipicamente, perto do zero, por exemplo, 0,05 ou 0,1.

Uma maneira de determinar o intervalo de confança de 90% seria autilização dos os limites entre o 5º e o 95º percentil da amostra. Porexemplo, poderíamos tomar k amostras, encontrar a média da amostra,separá-los em ordem crescente, e obter os [1+0,05(k-1)]º e o [1+0,95(1-k)]º elementos do conjunto após sua classifcação.

Felizmente, não é necessário recolher amostras em demasia. É possíveldeterminar o intervalo de confança a partir de apenas uma amostra. Istoé devido ao Teorema do Limite Central, que permite determinar adistribuição da média da amostra. Este teorema afrma que se as {x1,x2,..., xn} observações de uma amostra forem independentes, da mesmapopulação, com média μ e desvio padrão σ então a média da amostra para

Modelagem e Simulação Discreta 248

grandes amostras é aproximadamente normalmente distribuído commédia xm e desvio-padrão σ2: x~N(μ,σ).

O desvio padrão da média de amostras é chamado o erro padrão.Novamente, o erro padrão é diferente do desvio padrão da população. Seo desvio padrão da população é σ, o erro padrão é σn1/2. A partir destaexpressão pode-se concluir que medida que o tamanho da amostra naumenta, diminui o erro padrão.

Utilizando o teorema do limite central, o intervalo de confança 100(1-))%para a média da população é dada por (xm-z1-)/2s/n1/2, xm+z1-)/2s/n1/2).

Aqui, xm é a média da amostra, s é o desvio padrão da amostra, n é otamanho da amostra, e z1-)/2 é o valor (1-)/2) é o quantil de uma variávelnormal unitária. Uma vez que estes quantis são usados com muitafrequência, os seus valores estão tabelados no Anexo.

Exemplo 9.7: Para uma amostra com média xm = 3,90, desvio padrão s = 0,95 e n = 32:

(3,90-(1.645) 0,95/321/2,3,90+(1.645)0,95/321/2)

Com intervalo de confança de 90%, a média é (3,62,4,17).

Podemos afrmar com confança de 90% que a média da população está entre 3,62 e4,17. O erro nesta declaração é de 10%, isto é, se tomarmos 100 amostras ao acaso econstruir um intervalo de confança para cada amostra em 90 casos, o intervalo deveincluir a média da população e, em 10 casos, o intervalo não deve incluir a média dapopulação.

Do mesmo modo,

com intervalo de confança de 95%:(3,90∓(1.960) 0,95/321/2)=(3,57,4,23)

com intervalo de confança de 99%:(3,90∓(2.576) 0,95/321/2)=(3,46,4,33)

O intervalo de confança precedente aplica-se apenas para amostrasgrandes, isto é, para as amostras de tamanho maior do que 30. Paraamostras menores, os intervalos de confança podem ser construídossomente se as observações provenientes de população foremnormalmente distribuídos. Para as amostras com n ≤ 30, o valor de 100(1-))% intervalo de confança é dado por (xm-t1-)/2,n-1s/n1/2,x+t1-)/2,n-1s/n1/2)

Aqui, t1-)/2,n-1 é o (1-)/2) quantil de um variável t, com n-1 graus deliberdade. Estes quantis estão listados no Anexo. O intervalo é baseado nofato de que para as amostras a partir de uma população normal N(μ,σ2),(xm-μ)/(σ/n1/2) tem distribuição N(0,1) e (n-1)s/σ2 tem distribuição χ2-Quadrado com n-1 graus de liberdade, e, portanto, (xm-μ)/(s2/n)1/2 tem umadistribuição t com n-1 graus de liberdade.

Exemplo 9.8: Considere os dados de erro com distribuição normal: -0,04, -0,19, 0,14,

Modelagem e Simulação Discreta 249

-0,09, -0,14, 0,19, 0,04, e 0,09.

A média destes valores é zero e seu desvio padrão da amostra é 0,138.

O t0,95;7 a partir do Anexo é 1,895.

Assim, o intervalo de confança para a média de erro é 0∓1,895×0.138/81/2=0∓0,0926 =(-0,0926,0,0926).

Modelagem e Simulação Discreta 250

10 REFERÊNCIAS

Averill, M. L. Simulation Modeling and Analysis. Pearson Education, 2006.

Bandyopadhyay, Susmita; Bhattacharya, Ranjan. Discrete and ContinuousSimulation: Theory and Practice. CRC Press, 2014. 344p.

Brown, Walter E. Random Number Generation in C++11. 2013. Disponívelem: <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3551.pdf>. Acesso em: 20 Dez2013.

Bussab, W. O.; Morettin, P. A. Estatística Básica. 5ed. São Paulo: Saraiva,2002. 526p.

Catalunha, Márcio José; Sediyama, Gilberto Chohaku; Leal, BrauliroGonçalves; Soares, Carlos Pedro Boechat; Ribeiro, Aristides. Aplicação decinco funções densidade de probabilidade a séries de precipitação pluvialno Estado de Minas Gerais. Revista Brasileira de Agrometeorologia, v. 10,n. 01, p. 153-162, 2002.

Chen, Ken. Performance Evaluation by Simulation and Analysis withApplications to Computer Networks. John Wiley & Sons, 2015. 226p.

Chung, Christopher A. Simulation modeling handbook: a practicalapproach. Boca Raton, Florida: CRC Press LLC, 2004. 574p.

Modelagem e Simulação Discreta 251

cppreference. Pseudo-random number generation. Disponível em:<http://en.cppreference.com/w/cpp/numeric/random>. Acesso em: 20 Dez2013.

Epperson, James F. An introduction to numerical methods and analysis. 2nd

ed. Hoboken, New Jersey: John Wiley & Sons, Inc., 2013. 591p.

Forbes, Catherine; Evans, Merran; Hastings, Nicholas; Peacock, Brian.Statistical distributions. 4th ed. Hoboken, New Jersey: John Wiley & Sons,Inc., 2011. 212p.

Freitas Filho, Paulo José. Introdução à Modelagem e Simulação de Sistemascom Aplicações Arena. 2a ed. Florianópolis: Visual Books, 2008. 372p.

Gentle, J. E. Handbook of Computational Statistics. Heidelberg: Springer,2004. 900p. (ISBN/ASIN: 3540404643, ISBN13: 9783540404644).

Hennessy, John L., Patterson, David A., Computer Architecture: A Quantitative Approach. 5th ed, Amsterdam: Elsevier, 1998. 1357p.

Hines, W. W. et al. Estatística Aplicada e Probabilidade para Engenheiros.LTC, 2003.

Hirata, Miguel, H. Uma introdução ao aproveitamento da energia eólica.Rio de Janeiro, Brazil: Proceedings of ENCIT 2004, ABCM, 2004. Disponívelem <http://www.abcm.org.br/anais/encit/2004/artigos/invited/CIT04-IL14.pdf>. Acesso em: 19 Mai 2015.

Hull, T. E.; Dobell, A. R. Random Number Generators. SIAM Review, 1962,Vol. 4, No. 3: pp. 230-254. (Disponível em:<http://chagall.med.cornell.edu/BioinfoCourse/PDFs/Lecture4/random_number_generator.pdf>. Acesso em: 30 Dez 2014.

Jain, R. The Art of Computer Systems Performance Analysis: Techniques forExperimental Design, Measurement, Simulation, and Modeling. Wiley-Interscience, 1991.

Krishnan, Venkatarama. Probability and Random Processes. John Wiley &Sons, Inc: Hoboken, New Jersey, 2006. 723p.

Modelagem e Simulação Discreta 252

Kroese, Dirk P.; Chan, Joshua C. C. Statistical Modeling and Computation.Springer: New York, 2014.

L'Ecuyer. L'Ecuyer's Combined Recursive Generator, 2007. Disponível em:<http://www.democritos.it/activities/IT-MC/ACML-4.0.1/L_0027Ecuyer_0027s-Combined-Recursive-Generator.html>. Acessoem: 10 Mar 2011.

Larson, Ron; Farber, Betsy. Estatística Aplicada. 4ed. São Paulo: PearsonPrentice Hall, 2010, 637p.

Leemis, Larry. Univariate Distribution Relationships. Disponível em:<http://www.math.wm.edu/~leemis/chart/UDR/UDR.html>. Acesso em: 13Mai 2015.

Leite, Maysa Lima; Virgens Filho, Jorim Sousa. Ajuste de modelos dedistribuição de probabilidade a séries horárias de velocidade do ventopara o município de Ponta Grossa, Estado do Paraná. Acta Scientiarum.Technology Maringá, v.33, n.4, p.447-455, 2011.

Marsaglia, George; Tsang, Wai Wan; Wang, Jingbo. Evaluating Kolmogorov’sDistribution. Disponível em: <http://www.jstatsoft.org/v08/i18/paper?ev=pub_ext_btn_xdl>. Acesso em: 13 Mai 2015.

Mersenne Twister. What is Mersenne Twister (MT)?. Disponível em:<http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ewhat-is-mt.html>.Acesso em: 10 Mar 2011.

Mor, Harchol-Balter. Performance modeling and design of computersystems: queueing theory in action. Cambridge University Press, New York,2013. 574p.

NIST. NIST Special Publication 800-22 Revision 1a: A Statistical Test Suitefor Random and Pseudorandom Number Generators for CryptographicApplications. 2010. Disponível em:<http://csrc.nist.gov/publications/nistpubs/800-22-rev1a/SP800-22rev1a.pdf>. Acesso em: 20 Mai 2016.

Patterson, David A., Hennessy, John L. Computer organization and design: the hardware/soft ware interface. Amsterdam: Elsevier, 2012. 919p.

Modelagem e Simulação Discreta 253

Polyanin, Andrei D.; Manzhirov, Alexander V. Handbook of Mathematics forEngineers and Scientists. New York: Chapman & Hall/CRC, 2007. 1509p.

Ross, Sheldon M. Simulation. 5th ed. Elsevier: Amsterdam, 2013. 310p.

Severance, Frank L. System modeling and simulation: an introduction.Chichester: John Wiley & Sons Ltd, 2001. 506p.

Spiegel, Murray R., Schiller, John J, Srinivasan, R. Alu. Probability andstatistics. 4ed. New York: McGraw-Hill, 2013. 424p.

Simard, Richard; L’Ecuyer, Pierre. Computing the Two-Sided Kolmogorov-Smirnov Distribution. Disponível em:<http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf>. Acessoem: 04 Abr 2015.

Sun Microsystems. Sun Fire™ X4150, X4250, and X4450 Server Architecture. September 2008. Disponível: <http://www.qassociates.co.uk/pdf/X4150-X4250-X4450-server_architecture.pdf>. Acesso em: 02 Mai 2016.

Thom, H. C. S. A note on the gamma distribution. Monthly Weather Review,Washington, v.86, p.117-122, 1958.

Zwillinger, Daniel; Kokoska, Stephen. Standard probability and statisticstables and formulary - Student Edition. CRC Press: Boca Raton, 2000.215p.

Modelagem e Simulação Discreta 254