You are on page 1of 236

Copyright 2015 by Brauliro Gonalves Leal

O contedo deste livro eletrnico totalmente livre para uso de qualquer


natureza desde que citado a fonte. Toda e qualquer parte desta publicao
pode ser reproduzida, distribuda ou transmitida de qualquer forma ou por
qualquer meio, ou armazenada de qualquer forma ou em qualquer sistema
desde que reconhecida a autoria.
Atribuio-CompartilhaIgual - esta licena permite que outros
remixem, adaptem e criem a partir deste trabalho, mesmo
para fins comerciais, desde que lhe atribuam o devido crdito
e que licenciem as novas criaes sob termos idnticos
(creativecommons.org/licenses).

Sobre o autor
Professor do Colegiado de Engenharia da Computao
Universidade Federal do Vale do So Francisco
Avenida Antnio Carlos Magalhes, 510 Santo Antnio
48.902-300 Juazeiro - BA - Brasil
e-mail: brauliro.leal@univasf.edu.br
site: www.univasf.edu.br/~brauliro.leal
Primeira Edio Eletrnica: Abril de 2016
ISBN: a ser feito

Modelagem e Simulao Discreta

Tabela de Smbolos
Smbolo
Descrio
fdp, f, pdf
FDA, F, CDF
GVA
GNA
X
iid
E(X), m
IC
n
N

funo densidade de probabilidade (probability density function)


funo distribuio de acumulada (cumulative distribution function), F(x)=f(x)dx
geradores de variveis aleatrias
geradores de nmeros (pseudo)aleatrios
amostra X ={X1, X2, ..., Xn}
independente e igualmente distribudo
esperana matemtica de X, E(X) = X/n, mdia aritmtica ou valor esperado
usando um intervalo de confiana
nmero de elementos de uma amostra
nmero de eventos de uma simulao

Modelagem e Simulao Discreta

Sumrio
1 Introduo.............................................................................................................................17
1.1 Sistema...............................................................................................................................18
1.2 Modelo...............................................................................................................................19
1.3 Simulao............................................................................................................................20
1.3.1 Simulao Contnua.........................................................................................................20
1.3.2 Simulao Monte Carlo..................................................................................................21
1.3.3 Simulao de Eventos Discretos.....................................................................................21
1.3.4 Simulao de Trace.........................................................................................................21
1.4 Simulao Computacional.................................................................................................22
1.5 Etapas de um Estudo de Simulao...................................................................................22
1.6 Sistemas de Fila.................................................................................................................24
1.6.1 Notao de Kendall para Sistemas de Fila......................................................................25
1.6.2 Variveis Aleatrias dos Sistemas de Fila........................................................................27
1.6.3 Processos de Poisson........................................................................................................30
1.6.4 Probabilidade de Estado para Processos Nascimento Morte...........................................31
1.6.5 Sistemas de Filas M/M/1..................................................................................................32
1.7 Outra Viso para Estudar Modelagem e Simulao............................................................35
1.8 Recursos Didticos Pedaggicos.......................................................................................39
1.9 Questes.............................................................................................................................43
1.10 Exerccios..........................................................................................................................43
2 Simulao de Sistemas de Fila...............................................................................................45
2.1 Modelo Conceitual de Sistemas de Fila..............................................................................46
2.1.1 Valores iniciais da Simulao..........................................................................................48
2.1.2 Clculo de at....................................................................................................................49
2.1.3 Clculo de bs....................................................................................................................49
2.1.4 Clculo de es....................................................................................................................50
2.1.5 Estatsticas de Sistemas de Fila M/M/1..........................................................................50
2.1.5.1 Algoritmo para Calcular nq...........................................................................................51
2.1.5.2 Valores de E(ns)............................................................................................................52
2.1.5.3 Algoritmo para Calcular p0...........................................................................................52
2.1.6 Resumo do Modelo de Sistemas de Filas M/M/1............................................................53
2.2 Modelo Computacional de Sistemas de Fila M/M/1.........................................................54
2.2.1 Software QS.cpp.............................................................................................................57
2.3 Questes..............................................................................................................................67
2.4 Exerccios...........................................................................................................................67
2.5 Recursos Didticos Pedaggicos.......................................................................................68
2.5.1 Classe clQS.....................................................................................................................68
2.5.2 Software QSTable.html...................................................................................................71
2.5.3 Software QSPlot.html.....................................................................................................72
2.5.4 Software Nq.html............................................................................................................76
3 Seleo de Distribuies de Probabilidade............................................................................80
3.1 Independncia de Observaes..........................................................................................82
3.2 Distribuies de Probabilidade teis.................................................................................83
3.3 Estimao de Parmetros...................................................................................................85
3.3.1 Mtodo da Mxima Verossimilhana..............................................................................86
3.3.2 Mtodo dos Mnimos Quadrados....................................................................................87
3.4 Estimativa dos Parmetros das FDP..................................................................................88
3.4.1 Estimativa dos parmetros da fdp Beta...........................................................................89
3.4.2 Estimativa dos parmetros da fdp Gamma.....................................................................90
Modelagem e Simulao Discreta

3.4.3 Estimativa dos parmetros da fdp Weibull......................................................................90


3.5 Identificao da Distribuio Estatstica............................................................................91
3.5.1 Teste Chi-Quadrado (CQ)...............................................................................................91
1.1.1. Teste de Komolgorov-Smirnov (KS)..............................................................................94
3.5.2 Comparao entre os testes CQ e KS..............................................................................96
1.1.2. Testes CQ e KS para fdp Beta.........................................................................................96
3.6 Modelos para Processos de Chegada.................................................................................96
3.7 Gerando Processos de Chegada..........................................................................................97
3.8 Testando Homogeneidade entre Amostras.........................................................................98
3.9 Questes...........................................................................................................................100
3.10 Exerccios.......................................................................................................................101
4 Gerao de Nmeros Aleatrios.........................................................................................103
4.1 Geradores Congruentes Lineares (GCL)..........................................................................104
4.2 GCL de Algumas Linguagens de Programao...............................................................106
4.3 Nmeros Aleatrios em C................................................................................................107
4.4 Nmeros Aleatrios em C++............................................................................................108
4.5 Composio de Geradores...............................................................................................109
4.6 Geradores Tausworthe......................................................................................................110
4.7 Outros Geradores..............................................................................................................110
4.8 Classe clGNA...................................................................................................................110
4.9 Teste de Geradores de Nmeros Aleatrios.....................................................................112
4.9.1 Testes Empricos............................................................................................................112
4.9.2 Testes Tericos..............................................................................................................115
4.10 Questes.........................................................................................................................117
4.11 Exerccios.......................................................................................................................117
5 Gerao de Variveis Aleatrias...........................................................................................119
5.1 Mtodos Gerais................................................................................................................121
5.1.1 Mtodo da Inversa da Funo Densidade Acumulada..................................................121
5.1.2 Mtodo da Convoluo.................................................................................................122
5.1.3 Mtodo da Composio................................................................................................122
5.1.4 Mtodo da Aceitao Rejeio......................................................................................122
5.1.5 Transformao de Box-Muller......................................................................................124
5.1.6 Qualidade na Gerao de Variveis Aleatrias.............................................................124
5.2 Gerando Variveis Aleatrias...........................................................................................124
5.3 Relaes entre as Distribuies de Probabilidade............................................................127
5.4 Distribuies de Probabilidades da Linguagem ANSI C++11.........................................128
5.5 Gerando Processos de Chegada.......................................................................................129
5.5.1 Gerao de Variveis Aleatrias da Distribuio Poisson.............................................129
5.5.2 Gerao de Variveis Aleatrias da Distribuio Exponencial.....................................130
5.6 Questes...........................................................................................................................130
5.7 Exerccios.........................................................................................................................131
6 Verificao e Validao de Modelos...................................................................................132
6.1 Tcnicas de Verificao de Modelos................................................................................133
6.2 Tcnicas de Validao de Modelo....................................................................................134
6.3 Consideraes Adicionais................................................................................................135
1.2. Determinando o Nvel de Detalhe de Modelos................................................................136
6.4 Melhorando a Validade e Credibilidade de Modelos.......................................................137
6.5 Questes...........................................................................................................................138
6.6 Exerccios.........................................................................................................................138
7 Anlise de Resultados Simulados........................................................................................139
Modelagem e Simulao Discreta

7.1 Tipos de Simulao com Relao Anlise da Sada......................................................140


7.1.1 Remoo de Transientes................................................................................................141
7.1.2 Critrio de Parada...........................................................................................................142
7.2 Anlise Estatstica de Simulaes Finitas.........................................................................143
7.2.1 Anlise de Simulao Terminal......................................................................................143
7.2.2 Mtodo de Replicao Independente (MRI).................................................................143
7.2.3 Anlise Estatstica de Parmetros Estacionrios............................................................145
7.2.3.1 Mdias de Lotes.........................................................................................................145
7.2.3.2 Replicaes Independentes........................................................................................147
7.3 reduo dA varincia........................................................................................................147
7.3.1 nmeros aleatrios comuns...........................................................................................147
7.3.2 Variveis antitticas.......................................................................................................148
7.3.3 Observaes..................................................................................................................149
7.4 Anlise Estatstica de Parmetros Estacionrios Cclicos................................................149
7.4.1 Modelos Sazonais..........................................................................................................150
7.4.2 Modelos No-lineares...................................................................................................151
7.4.3 Anlise Harmnica.........................................................................................................151
7.5 Estimao por Intervalos de Confiana...........................................................................153
7.6 Mtodos Estatsticos para Comparar Resultados Simulados............................................154
7.6.1 Teste para Mdia Zero....................................................................................................154
7.6.2 Observaes pareadas....................................................................................................156
7.6.3 Observaes no pareadas.............................................................................................156
7.6.4 Que Nvel Estatstica de Confiana Usar.......................................................................157
7.7 Comparao de Sistemas.................................................................................................157
7.7.1 Testes de Hiptese..........................................................................................................158
7.8 Questes...........................................................................................................................158
7.9 Exerccios.........................................................................................................................158
7.10 Recursos Pedaggicos....................................................................................................160
7.10.1 Software AH.html........................................................................................................160
7.10.2 Software QS-RI.cpp.....................................................................................................164
7.10.3 Software QS-ML.cpp...................................................................................................167
8 Simulao de Sistemas Computacionais..............................................................................171
8.1 Modelo de Rede de Sistemas de Fila (QSN)....................................................................173
8.2 Modelo Conceitual de Redes de Sistemas de Fila...........................................................173
8.3 Valores iniciais da Simulao...........................................................................................175
8.3.1 Clculo de iat................................................................................................................176
8.3.2 Clculo de at, bs, es e idt...............................................................................................176
8.3.3 Clculo de nq................................................................................................................177
8.4 Modelo Computacional de Redes de Sistemas de Filas...................................................177
8.5 Simulao de Sistemas de Cliente/Servidor Web em Camadas.......................................192
8.5.1 Sistema Cliente/SeRvidor Web em uma camada fsica................................................193
8.5.2 Sistema Cliente/Sevidor Web em duas camadas fsicas.................................................193
8.5.3 Sistema Cliente/Sevidor Web em trs camadas fsicas.................................................194
8.6 Simulao de Sistemas de Hardware...............................................................................196
8.7 Exerccios.........................................................................................................................197
8.8 Recursos Didticos Pedaggicos.....................................................................................198
8.8.1 Software QSNPlot.html................................................................................................198
9 Apndice...............................................................................................................................204
9.1 Representatividade no Processo de Amostragem.............................................................204
9.2 Nmero de Classes...........................................................................................................205
Modelagem e Simulao Discreta

9.3 Grfico de Extremos e Quartis ou Box-Plot....................................................................205


9.4 Valores Extremos ou Outlier............................................................................................206
9.5 Testes de Hipteses e Significncia.................................................................................207
9.5.1 Deciso estatstica.........................................................................................................207
9.5.2 Nvel de significncia....................................................................................................208
9.5.3 Testes envolvendo a distribuio normal......................................................................208
9.5.4 Testes Unicaudal e bicaudal..........................................................................................209
9.5.5 p-value...........................................................................................................................210
9.6 Integrao Numrica........................................................................................................212
9.7 Quantis da Distribuio 2................................................................................................213
9.8 Quantis da Distribuio de KS.........................................................................................215
9.9 Quantis da Distribuio Normal Unitria........................................................................219
9.10 Quantis da Distribuio t (unilateral).............................................................................220
9.11 Quantis da Distribuio t (bilateral)...............................................................................223
9.12 Quantis da distribuio 2 bilateral.................................................................................225
9.13 Noes bsicas de Teoria dos Nmeros.........................................................................227
9.13.1 Funo Piso..................................................................................................................227
9.13.2 Funo Teto..................................................................................................................228
9.13.3 Nmero Primo..............................................................................................................228
9.13.4 Mximo Divisor Comum (mdc)...................................................................................229
9.13.5 Divisibilidade...............................................................................................................229
9.13.6 Operador mod..............................................................................................................230
9.14 Intervalo de Confiana da Mdia...................................................................................230
10 Referncias.........................................................................................................................233

Modelagem e Simulao Discreta

ndice de figuras
Figura 1 - Esquema dos principais tpicos do livro..................................................................12
Figura 2 - Representao grfica da relao sistema mundo real.............................................15
Figura 3 - Circuito integrado TTL 7400 (fonte: pt.wikipedia.org/wiki/Porta_lgica)..............15
Figura 4 - Representao grfica da relao mundo real-sistema-modelo...............................16
Figura 5 - Modelo do circuito integrado TTL 7400 (fonte:
pt.wikipedia.org/wiki/Porta_lgica)..........................................................................................17
Figura 6 - Representao grfica da relao mundo real-sistema-modelo-simulao..............17
Figura 7 - Representao grfica dos Sistemas de Fila, sua estrutura, parmetros bsicos e
inter-relaes entre seus componentes (Jain, 1991)..................................................................21
Figura 8 - Representao grfica de Sistemas de Fila simples destacando sua estrutura, os
processos de chegada e sada, a formao da Fila com tarefas em espera e o Servidor...........22
Figura 9 - Variveis aleatrias utilizadas na anlise de Sistemas de Fila Simples, adaptado de
Jain (1991).................................................................................................................................24
Figura 10 - Relao entre os processos estocsticos.................................................................27
Figura 11 - Diagrama de transio de estado de Processo Nascimento-Morte.........................29
Figura 12 - Diagrama de transio de estado de Sistemas de Fila M/M/1 destacando os valores
constantes das taxas de transio e .....................................................................................29
Figura 13 - Diagrama com as etapas em um estudo envolvendo modelagem e simulao
segundo Freitas Filho (2008)....................................................................................................33
Figura 14 - Resultados do modelo analtico de Sistema de Filas M/M/1 utilizando o software
MM1Analitico.html..................................................................................................................40
Figura 15 - Modelo de Sistemas de Filas M/M/1 e seus elementos constituintes: a a Fila, o
Servidor e as tarefas aguardando processamento......................................................................43
Figura 16 - Modelo Conceitual de Sistemas de Fila M/M/1 com seus processos, variveis de
entrada e sada, nmeros, eventos e tempos em cinco nveis, adaptado de Jain (1991)...........44
Figura 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].............................46
Figura 18 - Valor de at da tarefa e em relao 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]......49
Figura 19 - Diagrama de classes do software QS.cpp...............................................................59
Figura 20 - Diagrama de atividades do software QS.cpp.........................................................60
Figura 21 - Resultados da execuo do software QSTable.html (Algoritmo 2.7) com entradas
N = 10, l = 0.167 e m = 0.191...................................................................................................69
Figura 22 - Resultado da execuo do software QSPlot.html...................................................73
Figura 23 - Tabelas com os dados calculados pelo software Nq.html para N = 15, l = 1, m = 2
...................................................................................................................................................75
Figura 24 - Modelagem e anlise estatstica (Kroese & Chan, 2014).......................................77
Figura 25 - Grficos de disperso dos pontos (xi,xi+1) do Exemplo 3.2.................................80
Figura 26 - Relacionamento entres as funes densidade de probabilidade, adaptado de
Zwillinger & Kokoska (2000)...................................................................................................81
Figura 27 - Regies de probabilidade de aceitao (verde) ou rejeio (vermelho) da hiptese
H0 ao nvel de significncia ...................................................................................................89
Figura 28 - Grfico de disperso para avaliar graficamente a independncia dos nmeros
aleatrios.................................................................................................................................109
Figura 29 - Grficos de barra para avaliar a independncia de dados amostrais....................110
Figura 30 - Grfico de setores para avaliar a independncia de dados mostrais.....................111
Figura 31 - Transformao de variveis aleatrias U(0,1) em distribuies arbitrrias pelo
mtodo da inversa....................................................................................................................116
Figura 32 - Ilustrao do Mtodo da Aceitao-Rejeio.......................................................119
Modelagem e Simulao Discreta

Figura 33 - Grfico de f(t) = 2 exp(-t2/2)/(2)1/2 e g(t) = e-t/2 para t 0.............................119


Figura 34 - Relaes entre distribuies discretas (Jain,1901)...............................................123
Figura 35 - Relaes entre distribuies contnuas (Jain,1901)..............................................124
Figura 36 - Relao entre os conceitos de validao e verificao e o mundo real................128
Figura 37 - Relao benefcio/custo e a qualidade de modelos..............................................133
Figura 38 - Indicao dos estados transiente e estacionrio de uma simulao tpica............136
Figura 39 - Varincia do nmero de tarefas na fila em funo do tamanho de lote da simulao
do Sistema de Fila M/M/1 com = 0,5...................................................................................139
Figura 40 - Tempo de resposta do Exemplo 7.1......................................................................149
Figura 41 - Teste para uma mdia zero, nos casos (a) e (b) os IC incluem zero e nos casos (c) e
(d) os IC no incluem zero......................................................................................................151
Figura 42 - Sistema computacional, servidor web conectado a rede internet por meio de um
roteador....................................................................................................................................167
Figura 43 - Modelo de um sistema computacional por meio de filas.....................................168
Figura 44 - Diagrama de blocos do Sun Fire X4150 Server com Serial Attached SCSI SAS
(Sun Microsystems, 2016)......................................................................................................169
Figura 45 - 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 prximo Sistema de Fila......................................................................................................169
Figura 46 - Modelo conceitual de um Sistemas de Fila em rede............................................170
Figura 47 - Esquema do estudo de caso de uma Rede de Sistemas de Fila............................171
Figura 48 - Diagrama de classes do software QSN.cpp..........................................................181
Figura 49 - Diagrama de atividades do software QSN.cpp.....................................................181
Figura 50 - Sistema Cliente/Servidor Web em uma camada fsica.........................................189
Figura 51 - A arquitetura do Sistema Cliente/Servidor Web da Figura 50..............................189
Figura 52 - Sistema Cliente/Sevidor Web em duas camadas fsicas.......................................190
Figura 53 - A arquitetura do Sistema Cliente/Servidor Web da Figura 52..............................190
Figura 54 - Sistema Cliente/Servidor Web em trs camadas fsicas.......................................191
Figura 55 - A arquitetura do Sistema Cliente/Servidor Web da Figura 54..............................191
Figura 56 - Sistema Cliente/Servidor Web do Exemplo 8.1...................................................192
Figura 57 - Diagrama de blocos de parte do Sun Fire X4150 (Sun Microsystems, 2016).....193
Figura 58 - Modelo de um Sistema de Fila da Figura 58........................................................193
Figura 59 - Grfico dos resultados do QSNPlot.html (Algoritmo 8.3)...................................199
Figura 60 - Figura do Exemplo 9.2.........................................................................................202
Figura 61 - Distribuio normal padro com as regies crticas de um teste bicaudal com =
0,05..........................................................................................................................................204
Figura 62 - Clculo de valores crticos para testes unicaudal (a) direita (a), (b) esquerda e
(c) bicaudal..............................................................................................................................206
Figura 63 - Esquema do clculo de KS(1-;n) destacando o valor de x crtico para o Teste de
Kolmogorov-Smirnov.............................................................................................................214

Modelagem e Simulao Discreta

ndice de tabelas
Tabela 1 - Estgios da construo de modelos para simulao de sistemas segundo Jain (1991)
...................................................................................................................................................21
Tabela 2 - Componentes dos Sistemas de Fila..........................................................................23
Tabela 3 - Os seis parmetros bsicos dos Sistemas de Fila.....................................................23
Tabela 4 - Descrio dos parmetros da notao de Kendall para Sistemas de Fila.................24
Tabela 5 - Valores dos parmetros da notao de Kendall para Sistemas de Fila.....................25
Tabela 6 - Disciplinas de filas de sistemas computacionais......................................................25
Tabela 7 - Variveis aleatrias fundamentais dos Sistemas de Fila Simples (Jain, 1991)........26
Tabela 8 - Resultados analticos de Sistemas de Fila M/M/1 segundo a Teoria das Filas (Jain,
1991).........................................................................................................................................28
Tabela 9 - Descrio das etapas em um estudo envolvendo modelagem e simulao segundo
Freitas Filho (2008)...................................................................................................................35
Tabela 10 - Simulao de um Sistema de Fila M/M/1..............................................................47
Tabela 11 - Valores das variveis aleatrias dos Sistemas de Fila M/M/1 e seus valores mdios
...................................................................................................................................................49
Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1.....................................................52
Tabela 13 - Entrada, parmetros, variveis de estado e sada do Modelo Computacional de
Sistemas de Fila M/M/1............................................................................................................52
Tabela 14 - Entrada, parmetros, variveis de estado e sada do Modelo Computacional de
Sistemas de Fila M/M/1............................................................................................................52
Tabela 15 - Classe clQS do Modelo Computacional dos Sistemas de Fila M/M/1..................54
Tabela 16 - Variveis utilizadas no software QS.cpp................................................................60
Tabela 17 - Etapas para a aplicao de testes de aderncia, adaptada de Jain (1991)..............80
Tabela 18 - Funes densidade de probabilidade mais relevantes com seus parmetros, mdia
e varincia (Forbes et al., 2011)................................................................................................83
Tabela 19 - Definies da fdp Exponencial e seus parmetros.................................................87
Tabela 20 - Linguagens de programao e geradores de nmeros aleatrios.........................105
Tabela 21 - As funes, a constante e as bibliotecas da linguagem C para gerar nmeros
aleatrios.................................................................................................................................106
Tabela 22 - Aplicaes do Mtodo da Inversa da FDA onde u ~ U(0,1), Forbes et al. (2011)
.................................................................................................................................................119
Tabela 23 - Categorias dos modelos relativa a implementao das hipteses e realismo dos
pressupostos............................................................................................................................131
Tabela 24 - Tcnicas para a Verificao de Modelos..............................................................131
Tabela 25 - Mtodos para a remoo de transientes so.........................................................139
Tabela 26 - Quadro com as b rodadas do Mtodo de Replicao Independente, cada rodada
com k eventos e suas respectivas mdias................................................................................142
Tabela 27 - Quadro do Mtodo das Mdias de Lotes com uma rodada com 24 eventos
distribudos em 4 lotes, cada lote com 6 eventos e suas respectivas mdias..........................144
Tabela 28 - Intervalo de confiana da mdia (), da varincia (2) e do desvio padro () de
amostras aleatrias de tamanho n de uma populao normal, com nvel de significncia e
desconhecido...........................................................................................................................151
Tabela 29 - Resultados da execuo do Software AH.html do Algoritmo 7.1........................161
Tabela 30 - Resultado da execuo do software QS-RI.cpp descrito no Algoritmo 7.2, para a
varivel de estado r..................................................................................................................165
Tabela 31 - Resultado parcial da execuo do software QS-ML.cpp descrito no Algoritmo 7.3
.................................................................................................................................................168
Tabela 32 - Valores iniciais de iat, at, bs, es e idt dos SF da primeira sequncia S................174
Tabela 33 - Classe clMM1 do Modelo Computacional dos Sistemas de Fila M/M/1............175
Modelagem e Simulao Discreta

10

Tabela 34 - Descrio das classes do Modelo Computacional dos Sistemas de Fila M/M/1. 175
Tabela 35 - Variveis utilizadas no software QSN.cpp...........................................................182
Tabela 36 - Resultado da execuo do software QSN.cpp descrito na Tabela 8.3..................183
Tabela 37 - Testes de Hiptese e os Erros Tipo I e Tipo II.....................................................206
Tabela 38 - Quantis da Distribuio Normal Unitria............................................................208
Tabela 39 - Quantis da distribuio 2....................................................................................211
Tabela 40 - Quantis da Distribuio KS..................................................................................213
Tabela 41 - Quantis da Distribuio Normal Unitria............................................................217
Tabela 42 - Quantis da Distribuio t unilateral......................................................................219
Tabela 43 - Quantis da Distribuio t bilateral........................................................................221
Tabela 44 - Quantis da distribuio 2 bilateral......................................................................223

Modelagem e Simulao Discreta

11

Modelagem e Simulao Discreta

Prefcio
Este livro tem como principal objetivo o de servir de texto para a disciplina
Modelagem e Simulao do curso de Engenharia da Computao do
Colegiado de Engenharia da Computao da Universidade Federal do Vale
do So Francisco. Os grandes temas deste livro so: Sistemas de Fila,
Gerao de Nmeros Aleatrios, Gerao de Variveis Aleatrias,
Verificao de Modelos, Validao de Modelos, Simulao de Sistemas de
Fila e Anlise de Resultados Simulados.
A partir da Teoria de Filas e dos Modelos de Sistemas de Filas foram
construdos os Modelos Conceituais de Sistemas de Fila e seus respectivos
Modelos Conceitual e Computacional. Estes modelos permitem tratar dos
temas deste livro e so os eixos que do suporte teoria e s aplicaes
da Modelagem e Simulao Discreta.
O Modelo Conceitual de Sistemas de Fila e seu respectivo Modelo
Computacional, apresentados neste livro, separam o processo de
simulao da anlise estatstica dos resultados, enfatizando as variveis
de real interesse para a simulao, tornando o modelo mais simples. Esta
abordagem revelou-se assaz didtica.
Os modelos computacionais foram implementados em C++, pelo rigor da
linguagem, e em Javascript com HTML5, que permitir a visualizao
grfica e a dinmica da simulao, viabilizando seu uso em diversos tipos
de computadores, dispositivos mveis, navegadores e sistemas
operacionais. Esta implementao permite a avaliao grfica do
comportamento dos sistemas simulados, dando grande estmulo
aprendizagem, com resultados inspiradores.
Os algoritmos para a Gerao de Variveis Aleatrias tambm so
contribuies relevantes, permitem gerar vrias funes distribuio
acumulada, discretas e contnuas, a partir de nmeros aleatrios, dando
suporte simulao computacional.
Outros algoritmos foram desenvolvidos, destinados aos tpicos relevantes
da Simulao de Sistemas Simples de Fila, para Verificao e Validao de
Modelos e tambm para a Anlise de Resultados Simulados, com destaque
para os mtodos de Replicao Independente e Lotes Mdios.
O autor espera que tenha contribudo com o ensino destes contedos de
modo a torn-los mais atraentes, visuais, dinmicos e aplicados nas
diversas reas de conhecimento, quando cabvel. Na esperana de que os

Modelagem e Simulao Discreta

12

estudantes descubram a expresso racional que se descobriu no mundo e


que os ajude a reinvent-lo.
Os softwares e material didticos auxiliares foram includos no texto e tem
como finalidade pedaggica, destinam-se a ilustrar os conceitos da
disciplina, esto sendo melhorados e otimizados e so de uso livre. O
autor no assume quaisquer responsabilidades pelo seu uso e, ou, pelas
consequncias de seu uso.
Construindo a Modelagem e Simulao de Sistemas
Computacionais
A Modelagem e Simulao de Sistemas Computacionais permitem
representar Sistemas Computacionais por meio de modelos de simulao
e reproduzir suas cadeias de causalidade, estimar e avaliar resultados e
subsidiar o processo de tomada de decises em nvel de engenharia. A
seguir so relacionados os principais conceitos que do suporte
modelagem e a simulao destes sistemas.

Teorias da Filas

Mais de um sculo de pesquisa em sistemas de filas permitem


compreender a organizao dos sistemas computacionais e
estabelecer suas relaes fsico-matemticas sob a forma de
Modelos Analticos. Os seus resultados tericos e experimentais
atestam o sucesso desta abordagem

Estatstica

Estatstica uma ferramenta usada quando no se sabe, ou


impossvel saber, totalmente as informaes contidas em um
sistema. Desta forma, ela trabalha melhor com incertezas ao
quantific-las em nveis de confiana. Seus conceitos, mtodos e
tcnicas do o suporte necessrio para a validao e verificao
de experimentos envolvendo sistemas computacionais

Computadores,
Linguagem e
Tcnicas
Computacionais

Computadores, com sua capacidade e velocidades extremadas,


do o suporte para a simulao. As linguagens de programao
permitem escrever os softwares necessrios para a simulao e
anlise de resultados. As tcnicas computacionais tais como
estruturas de dados, programao orientada a objetos, clculo
numrico e computao grfica, do suporte simulao. Todo e
qualquer hardware ou software, os computadores e seus
componentes bem como seus elementos de conexo so, eles
mesmos, objetos de estudo

Geradores de
Nmeros
Aleatrios e
Gerao de
Variveis
Aleatrias

O acaso um agente imprevisvel e atua em todos os domnios da


Natureza. Por ser um elemento explicativo nas cincias,
necessrio introduzi-lo nos sistemas, o que feito por meio de
nmeros aleatrios. Os geradores de nmeros aleatrios so
essenciais para gerar variveis aleatrias e suas distribuies
estatsticas, viabilizando a simulao computacional

Modelos Analticos Os modelos de sistema computacionais tornaram possveis a


de Redes de
compreenso e a verificao de resultados de simulao,
Computadores
extensveis aos demais recursos de software e de hardware
Sistemas
Computacionais

Os sistemas computacionais so transversais na vida das pessoas,


das empresas e dos governos. Em todas as reas, sua influncia
marcante. Sistemas de computao so recursos de software e de
hardware, tomados em parte ou no todo, de modo isolado ou em
rede e, para sua compreenso e seu uso adequado, necessrio

Modelagem e Simulao Discreta

13

um conhecimento bsico da terminologia da avaliao de


desempenho, seus princpios e suas tcnicas

Matemtica

Com sua conciso e ubiquidade, a matemtica a linguagem que


permite escrever o corpo terico para a modelagem, simulao e
anlise de resultados. As tcnicas matemticas, tais como
derivadas, integrao e sries, so requeridas para qualificar e
quantificar as teorias deste livro e seus objetos de estudo

Cabe aqui uma ressalva, a de que variveis aleatrias diferem das


variveis deterministas habituais (da cincia e engenharia) posto que
variveis aleatrias permitem a atribuio de distribuio sistemtica de
valores de probabilidade para cada resultado possvel.
Viso dos Tpicos Tratados no Livro
A maioria das simulaes estocsticas tm a mesma estrutura bsica:
1. Identificar uma varivel aleatria de interesse X e desenvolver um software para
sua simulao
2. Gerar uma amostra X1, ..., Xn independentes e igualmente distribudas (iid) e com
a mesma distribuio X
3. Estimar E[X] ou uma funo de X (usando mdia de X) e avaliar a preciso da
estimativa (usando um intervalo de confiana)

A Figura 1 apresenta uma viso dos principais tpicos do livro. O tema


central a simulao, ponto de convergncia de quatro outros tpicos,
discutidos abaixo:

Modelagem e Simulao Discreta

14

Figura 1 - Esquema dos principais tpicos do livro.


fdp

acrnimo de funo densidade de probabilidade, so funes que


buscam replicar o comportamento de Sistemas de Fila, so
validadas por meio de testes de aderncia de amostras
representativas obtidas de Sistemas Computacionais

Teoria das Filas

estabelece as relaes fsico-matemticas dos sistemas


computacionais e permitem construir seus modelos analticos,
conceituais e computacionais

GVA

acrnimo de gerador de variveis aleatrias, permite gerar valores


para funes densidade de probabilidade a partir dos geradores de
nmeros aleatrios (GNA)

Validao

so tcnicas para comprovar se a simulao representa o sistema


real com fidelidade suficiente para garantir a obteno de
solues satisfatrias para o problema

Simulao

processo que permite parametrizar, construir e reproduzir o


comportamento de Sistemas de Fila por meio de computadores

Para a simulao de um sistema computacional o primeiro passo requer a


construo de um modelo, neste caso utiliza-se modelos obtidos a partir
da Teoria das Filas. Em seguida, obtm-se amostras estatsticas de
variveis aleatrias representativas de seu comportamento, estes dados
fornecem os parmetros que permitem identificar a funo densidade de
probabilidade (fdp) adequada para a amostra utilizando testes de
aderncia. Uma vez identificada a fdp, pode-se gerar variveis aleatrias
Modelagem e Simulao Discreta

15

para simular o comportamento do sistema. Os resultados obtidos so


valores mdios e seus respectivos intervalos de confiana.

Modelagem e Simulao Discreta

16

1 INTRODUO

Os sistemas computacionais, tais como os dispositivos de hardware e as


redes de computadores, prestam relevantes servios compartilhando
recursos de software e de hardware. Tendo em vista a magnitude de suas
contribuies em todos os nveis da nossa sociedade, desnecessrio
destacar sua importncia e o seu alcance espao-temporal.
Uma caracterstica destes sistemas que um recurso pode atender, em
geral, apenas uma tarefa em dado intervalo de tempo e as outras tarefas
que pretendem utiliz-lo devem esperar em uma fila. Este conceito,
apesar da sua simplicidade, a ideia primria para a compreenso do
mais simples ao mais complexo sistema computacional, da performance
de uma CPU grande rede mundial a Internet, dos sistemas de hardware
aos de software.
Os modelos de filas so utilizados para a modelagem analtica, simulao
e avaliao do desempenho de sistemas computacionais, tanto em nvel
de software quanto de hardware. Estes modelos permitem descrever o
estado destes sistemas quantificando suas variveis de estado e sua
dinmica temporal.
A simulao de sistemas computacionais pode ser vista como o estudo do
comportamento de sistemas atravs de modelos de filas. Ela utiliza muitos
outros recursos tericos, principalmente estatstica, mas tambm nmeros
aleatrios, matemtica discreta e teoria dos nmeros, alm de engenharia
de software, clculo numrico, tcnicas de programao e computao
grfica.
O uso da simulao pode oferecer vantagens quando necessrio estimar
distribuio de variveis aleatrias, testar hipteses estatsticas, comparar
cenrios representando diferentes solues de um problema, avaliar o
comportamento de uma soluo analtica e avaliar um processo de
tomadas de deciso em tempo real.

Modelagem e Simulao Discreta

17

A execuo de modelos de simulao em computador tem potencial para


fornecer resultados mais precisos sem a necessidade de interferir nos
sistemas reais, possibilitando gerar informaes teis na tomada de
decises para a soluo de problemas.
A simulao uma rea com grande potencial de aplicao comercial,
pesquisa e consultoria, principalmente em sistemas de grande trfego.
Mas vai alm, como banco de dados, sistemas operacionais, comunicao,
sistemas embarcados e projetos de hardware e software.

1.1 SISTEMA
O termo sistema pode ser definido como um conjunto estruturado
componentes entre os quais pode-se definir alguma relao
funcionalidade. O valor dos atributos dos seus componentes, variveis
estado e parmetros, em um dado instante de tempo, define o estado
sistema, Figura 2.

de
de
de
do

Figura 2 - Representao grfica da relao sistema mundo real.


Para os propsitos deste livro, os sistemas de interesse so os sistemas
computacionais que so recursos de software e de hardware, tomados em
parte ou no todo, de modo isolado ou em conjunto. E, para sua
representao, so utilizados sistemas de filas.
Exemplo 1.1: O circuito TTL 7400 da Figura 3 um exemplo de um sistema, um
dispositivo que contm quatro portas NAND de duas entradas cada. As portas
apresentam funcionamento independente.

Figura
3
Circuito
integrado
pt.wikipedia.org/wiki/Porta_lgica)
Modelagem e Simulao Discreta

TTL

7400

(fonte:

18

1.2 MODELO
Modelos so descries de um sistema, concebidos atravs de uma
abstrao da realidade, considerando seus aspectos relevantes, para
permitir uma anlise simplificada sem descartar aspectos importantes da
realidade, de modo que possam ser utilizados com os propsitos de
controle e predio.
A construo de um modelo, em geral, busca viabilizar a soluo de um
problema de um sistema, podendo existir um nmero variado de modelos
para um mesmo sistema, cada um deles considerando aspectos
especficos do mesmo. muito comum ter vrios modelos para resolver o
mesmo problema de um sistema.
A utilidade de um modelo est diretamente relacionada sua capacidade
de incorporar elementos reais de forma simples, contendo seus aspectos
importantes sem que a sua complexidade impossibilite a compreenso e
manipulao do mesmo, Figura 4.

Figura 4 - Representao grfica da relao mundo real-sistema-modelo.


Para os propsitos deste livro, os modelos de interesse so os modelos de
fila, que so modelos matemticos capazes de representar os processos
de sistemas computacionais de modo geral, simular seu comportamento,
descrever seus aspectos relevantes, permitir sua anlise e fazer predio.
Exemplo 1.2: A Figura 5 um modelo do circuito TTL 7400, com suas quatro portas
NAND de duas entradas cada e seu funcionamento. Pode-se verificar que os elementos
desnecessrios do sistema da Figura 3 foram propositalmente abstrados, restando to
somente aqueles que so relevantes e teis para os propsitos da eletrnica digital.

Modelagem e Simulao Discreta

19

Figura 5 - Modelo do circuito


pt.wikipedia.org/wiki/Porta_lgica).

integrado

TTL

7400

(fonte:

1.3 SIMULAO
Simulao consiste em manipular um modelo de um sistema, real ou
hipottico, para compreender seu comportamento ou avaliar sua
operao, Figura 6.

Figura 6 - Representao grfica da relao mundo real-sistema-modelosimulao.


Uma das grandes utilidades da simulao tornar possvel fazer
estimativas do comportamento de um sistema, alm de estabelecer como
mudanas no sistema, no todo ou em partes, podem afetar seu
comportamento e desempenho, ou seja, a anlise de sensibilidade de
modelos.
A simulao pode ser classificada de vrias maneiras, a mais comum usa
quatro categorias: a) simulao contnua; b) simulao Monte Carlo; c)
simulao de eventos discretos e d) simulao baseada em trace.

1.3.1

SIMULAO CONTNUA

Um processo pode ser de estado discreto ou contnuo. Se os valores que


suas variveis de estado podem assumir finito e enumervel, o processo
chamado de processo de estado discreto. Por exemplo, o nmero de
tarefas em um sistema de fila pode ter valores discretos iguais a 1, 2, 3 e
assim por diante, portanto, a formao de filas um processo de estado
discreto.
Por outro lado, se as variveis de estado podem assumir qualquer valor
real ele um processo de estado contnuo. O tempo de espera numa fila,
teoricamente, pode assumir qualquer valor real e, portanto, um processo
de estado contnuo.

Modelagem e Simulao Discreta

20

A simulao contnua utilizada para modelar sistemas cujo estado varia


continuamente no tempo, sendo comum a utilizao de equaes
diferenciais.

1.3.2

SIMULAO MONTE CARLO

O Mtodo de Monte Carlo um mtodo estatstico que utiliza amostragens


aleatrias massivas para obter resultados numricos, repetindo sucessivas
simulaes para calcular probabilidades. Tem sido utilizado como forma de
obter aproximaes numricas de funes complexas, utilizando alguma
distribuio de probabilidade e uma amostra para aproximar a funo de
interesse.
Simulao de Monte Carlo um modelo de simulao esttica, a
passagem do tempo irrelevante.

1.3.3

SIMULAO DE EVENTOS DISCRETOS

Um evento discreto acontece em um momento do tempo. Como o estado


de um evento discreto permanece constante entre tempos de eventos,
uma descrio completa do estado do sistema pode ser obtida avanando
o tempo de simulao.
Em simulao discreta, o estado do sistema s pode mudar nos tempos de
eventos. Na simulao de sistemas computacionais, feita por meio de
modelos de sistemas de filas, as tarefas entram na fila e so atendidas
pelo servidor. Estes processos de chegada, incio e fim do atendimento so
eventos discretos que ocorrem em pontos isolados do tempo.

1.3.4

SIMULAO DE TRACE

Trace um registro ordenado no tempo de eventos ocorridos em um


sistema real, como um log de um servidor ou o registro de monitoramento.
A simulao baseada em trace utiliza este registro como dados de entrada
e, assim, permite avaliar o comportado do sistema e avaliar modelos.
Traces so teis para conhecer o comportamento de sistemas
computacionais, so fontes de dados para obteno de funes de
distribuio de probabilidade de dados para uso em simulao. Como so
valores medidos, podem tambm ser usados na validao e verificao de

Modelagem e Simulao Discreta

21

resultados de simulaes. Para serem teis e ter valor estatstico, traces


devem ser amostras representativas do comportamento do sistema.

1.4 SIMULAO COMPUTACIONAL


A simulao computacional faz uso de computadores para realizar
simulaes. Ela utiliza linguagens de programao para implementar os
modelos matemticos de sistemas computacionais em software e
process-los em computadores, fazendo uso das capacidades e
velocidades extremadas destas mquinas.
No texto do livro, o termo simulao refere-se a simulao computacional
de sistemas discretos. Neste sentido, os modelos de Sistema de Filas sero
apresentados e implementados em C++ e Javascript, viabilizando a
simulao em diversas tipos de computadores e dispositivos mveis,
navegadores e sistemas operacionais.

1.5 ETAPAS DE UM ESTUDO DE SIMULAO


O processo de construo de modelos para representar sistemas reais
pode ser organizado em uma sequncia de estgios de forma a simplificar,
agilizar e melhorar modelos. Considerando a estreita relao entre a
simulao e a orientao a objetos, as tcnicas de engenharia de software
oferecem contribuies relevantes no trabalho de projeto de modelos.
Neste contexto, na Tabela 1 esto apresentados em linhas gerais os
estgios da construo de modelos para simulao de sistemas.
Tabela 1 - Estgios da construo de modelos para simulao de sistemas
segundo Jain (1991)
Identificao do
Problema

o problema discutido no escopo do sistema real ou seu projeto. Uma


vez identificado o problema, pode-se avaliar a viabilidade do uso da
simulao para sua soluo. Esta avaliao acontece em consonncia
com os objetivos da simulao e dos seus usurios finais

Formulao do
Problema

aps identificado, o problema ento formulado com vistas


simulao. Devido natureza evolucionria da modelagem e da
simulao, a definio do problema um processo contnuo, que
ocorre em todos estes estgios

Objetivos

consiste em identificar claramente os resultados a serem alcanados


com a simulao, definir critrios para avaliao destes resultados e
apresentar suas aplicaes, restries e limites das solues

Modelagem e Simulao Discreta

22

encontradas para o problema. Em seguida so definidos os objetivos


especficos, para enumerar as caractersticas internas do sistema que
precisam ser representadas no modelo
Construo do
Modelo
Conceitual

o modelo conceitual consiste de uma descrio esttica e de uma


descrio dinmica. A descrio esttica define os elementos do
sistema e suas caractersticas. A descrio dinmica define o modo
como estes elementos interagem causando mudanas no seu estado
no decorrer do tempo dos eventos. O modelador deve conhecer bem
a estrutura e as regras de operao do sistema e saber extrair o
essencial do mesmo, sem incluir detalhes desnecessrios. A
quantidade de detalhes includa no modelo deve ser baseada no
propsito para o qual construdo

Determinao
dos Dados de
Entrada e Sada

geralmente os valores de entrada so, de incio, hipotticos ou


baseados em alguma anlise preliminar. Depende do objetivo do
modelo, amostras representativas do sistema so requeridas e so
teis nos estgios posteriores do estudo da simulao. Dados da
literatura, como datasheets e artigos, so fontes de dados usuais.

Construo do
Modelo
Computacional

a traduo do modelo conceitual para uma forma reconhecida pelo


computador

Verificao

consiste em determinar se o modelo conceitual executado pelo


computador como esperado

Validao

busca comprovar que ele representa o sistema real com fidelidade


suficiente para garantir a obteno de solues satisfatrias para o
problema. Normalmente so utilizados cenrios em que o
comportamento real j conhecido previamente e que pode ser
comparado com o comportamento obtido com a simulao. Tambm
pode envolver uma comparao da estrutura do modelo e do sistema,
e comparaes do nmero de vezes que decises fundamentais ou
tarefas dos subsistemas so realizadas. Outros modelos do mesmo
sistema tambm podem ser utilizados na validao

Plano de Ttica e refere-se ao estabelecimento das aes para a execuo da


Estratgia
simulao, o plano estratgico consiste em um cronograma de
atividades eficiente tanto para explicar as relaes entre os
resultados simulados e as variveis controladas, quanto para
determinar a combinao dos valores das variveis controladas que
minimizariam ou maximizariam a resposta simulada. J o plano ttico
consiste em determinar como cada simulao deve ser realizada para
se obter as informaes desejadas sobre os dados
Experimentao
e Anlise dos
Resultados

execuo do modelo computacional, interpretao e anlise dos


resultados

Implementao
dos Resultados

os resultados da simulao so implantados no sistema real

Documentao
do Modelo

documentao do modelo utilizando os diagramas da UML ou


equivalente

Relatrio da
Simulao

relatrio tcnico da simulao e memria de clculo utilizando


normas tcnicas ou equivalente

Modelagem e Simulao Discreta

23

1.6 SISTEMAS DE FILA


Sistemas de Fila so compostos por Tarefas, uma ou mais Filas e um ou
mais Servidores, como exposto na Tabela 2. O termo tarefa ser a
nomenclatura deste livro embora, dependendo do contexto, possam ser
encontrados vrios sinnimos equivalentes na literatura especializada.
Tabela 2 - Componentes dos Sistemas de Fila
Tarefa
Fila
Servidor

a unidade que requer atendimento


representa as tarefas que esperam atendimento, no inclui as tarefas sendo
atendidas
canal que realiza o atendimento da tarefa

Sistemas de Fila podem ser descritos como tarefas chegando para serem
processadas e saindo do sistema aps serem atendidas. A formao de fila
ocorre quando a procura maior do que a capacidade de atendimento do
Servidor. O fluxo temporal das tarefas nas Filas e no Servidor determina a
dinmica do sistema.
A Figura 7 representa graficamente um Sistema de Fila, nela pode-se ver
ainda a estrutura destes modelos, seus parmetros e as inter-relaes
entre seus componentes. Nesta figura pode-se identificar seis parmetros
bsicos dos Sistemas de Fila, que so descritos na Tabela 3.

Figura 7 - Representao grfica dos Sistemas de Fila, sua estrutura,


parmetros bsicos e inter-relaes entre seus componentes (Jain, 1991).
Tabela 3 - Os seis parmetros bsicos dos Sistemas de Fila
Parmetro
1. Processo de
chegada

Descrio
o processo de chegada de tarefas ou entrada na fila do sistema,
medido em termos de nmero mdio de chegadas por unidade de
tempo ( taxa mdia de chegada) ou pelo tempo mdio entre
chegadas sucessivas

Modelagem e Simulao Discreta

24

2. Distribuio do
tempo de servio
3. Nmero de
Servidores
4. Capacidade do
Sistema
5. Tamanho da
populao
6. Disciplina de
Servio

a distribuio do tempo de servio descrito pela taxa de servio


( nmero de tarefas atendidas em um dado intervalo de tempo)
ou pelo tempo de servio
nmero de servidores em paralelo que prestam servios
simultaneamente. Um sistema de filas pode apresentar um ou
mltiplos canais de atendimento operando independentemente um
do outro
nmero mximo de tarefas permitidos no sistema ao mesmo
tempo, tanto aquelas sendo atendidas quanto aquelas na fila
tamanho potencial da populao de tarefas que demandam o
sistema
refere-se maneira como as tarefas so escolhidas para entrar no
servidor aps uma fila 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 pode ser
usado para analisar os recursos individuais de sistemas de computao
como, por exemplo, se tarefas a serem processadas por uma CPU so
mantidas em uma memria, a CPU pode ser modelada por um Sistema de
Fila simples, onde a memria a Fila e a CPU o Servidor do sistema.

Figura 8 - Representao grfica de Sistemas de Fila simples destacando


sua estrutura, os processos de chegada e sada, a formao da Fila com
tarefas em espera e o Servidor.
O modelo Fila+Servidor a unidade bsica da simulao, embora possua
estrutura simples ele bem estudado e tem sido bem-sucedido em
representar o comportamento dos sistemas computacionais. Estes
modelos podem ser associados em srie e, ou, em paralelo para simular
sistemas computacionais tais como circuitos integrados, componentes de
hardware e rede de computadores.

1.6.1

NOTAO DE KENDALL PARA SISTEMAS DE FILA

De maneira geral, Sistemas de Fila podem ser descritos pela notao de


Kendall (A/B/c/K/m/Z), Tabela 4, com seus valores descritos na Tabela 5.
Tabela 4 - Descrio dos parmetros da notao de Kendall para Sistemas
de Fila
A
B
c
K

distribuio estatstica dos intervalos de tempo entre chegadas


distribuio estatstica do tempo de servio
nmero de servidores ou capacidade de atendimento
nmero mximo de tarefas permitidas no sistema

Modelagem e Simulao Discreta

25

m
Z

tamanho da populao de tarefas


disciplina da fila

Tabela 5 - Valores dos parmetros da notao de Kendall para Sistemas de


Fila
Smb
Descrio
olo

B
c
K
m

Distribuio de
tempo entre
chegadas
Distribuio de
tempo de servio
Nmero de
servidores
Capacidade do
sistema
Tamanho da
populao

Disciplina da fila

Valores
M Processo de Poisson
(Markoviano)
D Determinstica
E Erlang ( = 1,2, ...)
GI Geral e Independente
M, D, E, GI
1, 2, ...,
1, 2, ...,
1, 2, ...,
FIFO primeiro que chega
o primeiro a ser atendido
LIFO ltimo que chega o
primeiro a ser atendido
SIRO servio com ordem
aleatria
PRI prioridade

Assim, por exemplo, a notao M/E5/1/10//FIFO indica um processo com


chegadas Marcovianas (Exponencial Negativa ou Poisson), atendimento
Erlang de quinto grau, um servidor, capacidade mxima do sistema igual a
10 tarefas, populao infinita e o primeiro que chega o primeiro a sair do
sistema.
A notao M/M/1 o sistema de fila mais simples, com chegadas e
atendimento Marcovianos, um servidor, capacidade do sistema infinita,
populao infinita e o primeiro que chega o primeiro a sair do sistema,
a abreviao de M/M/1///FIFO, ou seja:
M / M /1 M / M /1/// FIFO

1.1

Em sistemas computacionais, principalmente em sistema que envolve


hardware e sistemas de tempo real, o escalonamento das tarefas so
utilizados para decidir que tarefa deve entrar em servio. Alm das
disciplinas de filas j citadas, a Tabela 6 descreve as disciplinas de fila
mais comuns nestes sistemas computacionais.
Tabela 6 - Disciplinas de filas de sistemas computacionais
RR (round robin)

uma tarefa escalonada atendida por um intervalo de tempo


pequeno, um quantum. Se o servio no completado neste
intervalo de tempo, ela colocada no final da fila e outra tarefa

Modelagem e Simulao Discreta

26

atendida at que esgote seu quantum ou termine o servio


PS (process sharing)

as tarefas dividem a capacidade do Servidor como se


executassem em paralelo

IS (infinite server)

no existe fila, as tarefas so atendidas assim que chegam no


Sistema de Fila

PRTY (nonpreemptive
priority)

uma tarefa no Servidor no afetada quando outra tarefa de


maior prioridade chega no Sistema de Fila

PRTYPR (preemptiveresume priority)

a chegada de uma tarefa com maior prioridade no Sistema de


Fila tira do Servidor a de menor prioridade

O desenvolvimento tanto terico quanto computacional dos modelos de


Sistemas de Fila permitiram suas aplicaes nas Cincias e Engenharias,
revelando-se um rico manancial para simulaes de sistemas do mundo
real.

1.6.2

VARIVEIS ALEATRIAS DOS SISTEMAS DE FILA

As variveis de estado dos Sistemas de Fila podem assumir diferentes


valores numricos para cada evento, conceitualmente so variveis
aleatrias em termos estatsticos. As variveis aleatrias fundamentais
dos Sistemas de Fila esto representadas na Figura 9 e descritas na Tabela
7.

Modelagem e Simulao Discreta

27

Figura 9 - Variveis aleatrias utilizadas na anlise de Sistemas de Fila


Simples, adaptado de Jain (1991).
Tabela 7 - Variveis aleatrias fundamentais dos Sistemas de Fila Simples
(Jain, 1991)
Varivel

n
nq
ns
r
w

Descrio
tempo entre chegadas, isto , o tempo entre duas chegadas sucessivas
taxa mdia de chegada por unidade de tempo, = 1/E[]
tempo de servio, tempo requerido para processar tarefas
taxa mdia de servio por Servidor por unidade de tempo, = 1/E[s], a taxa
total de servio para m Servidores m
nmero de tarefas no Sistema, inclui as tarefas sendo atendidas e as que
esperam na Fila
nmero de tarefas esperando na Fila ou comprimento da Fila
nmero de tarefas sendo atendidas
tempo de resposta ou tempo no Sistema, inclui tanto o tempo de espera para
ser atendido quanto o tempo de atendimento
tempo de espera na Fila, intervalo de tempo entre a chegada e o incio do
atendimento da tarefa

Condio de estabilidade:

> c, c o nmero de servidores, esta condio de estabilidade no se aplica


populao finita e aos sistemas de buffer finito
nos sistemas de populao finita, o comprimento da fila sempre finito, o sistema
nunca pode se tornar instvel
sistemas de buffer finito (K finito) so sempre estveis desde que as tarefas que
chegam sejam descartados quando o nmero de tarefas no sistema exceda a
capacidade do sistema

Nmero no Sistema x Nmero na Fila

n = nq + ns, n, nq e ns so variveis aleatrias


E[n] = E[nq] + E[ns], o nmero mdio de tarefas no sistema igual soma do
nmero mdio na fila e o nmero mdio no servidor
se a taxa de servio de cada servidor independente do nmero de tarefas na fila,
tem-se que Cov(nq,ns) = 0 e V[n] = V[nq] + V[ns]. A varincia do nmero de tarefas
no sistema igual soma da varincia do nmero de tarefas na fila e da varincia
do nmero de tarefas no servidor

Nmero no Sistema x Tempo no Sistema

se tarefas no so perdidas devido capacidade do sistema, o nmero mdio de


tarefas em um sistema est relacionado com seu tempo mdio de resposta pela
equao:

nmero mdio de tarefas no Servidor=taxa de chegada tempo mdio de servio


E[n s ]= E[ s]

1.2
1.3

similarmente, o nmero mdio de tarefas na Fila de um sistema est relacionado


com seu tempo mdio de espera pela equao:

Modelagem e Simulao Discreta

28

nmero mdio de tarefas na Fila=taxa de chegada x tempo mdio de esperana Fila 1.4
E[nq ]= E[w ]
1.5

da mesma forma, o nmero mdio de tarefas no Sistema de Fila est relacionado


com seu tempo mdio no sistema pela equao:

nmero mdio no Sistema de Fila=taxa de chegada tempo mdio no sistema


E[n]= E[ r ]

1.6
1.7

Estas equaes so conhecidas como a Lei de Little.


Em sistemas de buffer finito estas leis podem ser usadas desde que seja
usada a taxa de chegada efetiva, ou seja, a taxa de servios que
realmente entram no sistema e so atendidas pelo servidor.
Tempo no Sistema x Tempo na Fila

r = w + s, o tempo que uma tarefa fica em um sistema de filas igual soma do


tempo de espera na fila e do tempo de servio, r, w e s so variveis aleatrias
E[r] = E[w] + E[s], o tempo mdio no sistema igual soma do tempo mdio de
espera e o tempo mdio de servio
se a taxa de servio independente do nmero de servios na fila, tem-se que
Cov(w,s) = 0 e V[r] = V[w] + V[s], a varincia do tempo no sistema igual soma
das varincias do tempo de espera e do tempo de servio

A Teoria de Filas, desenvolvido por A. K. Erlang em 1909, utilizada para


descrever analiticamente Sistemas de Fila por meio de frmulas
matemticas. Seu uso permite determinar vrias medidas da efetividade
destes sistemas, com a finalidade de indicar seu desempenho. Na Tabela 8
esto os resultados analticos da Teoria das Filas aplicados em Sistemas de
Fila M/M/1.
Tabela 8 - Resultados analticos de Sistemas de Fila M/M/1 segundo a
Teoria das Filas (Jain, 1991)
1. Parmetros
2. Intensidade de trfego
3. Condio de estabilidade
4. Probabilidade de zero tarefa no Sistema
5. Probabilidade de n tarefas no Sistema
6. Nmero mdio de tarefas no Sistema
7. Varincia do nmero mdio de tarefas no Sistema
8. Probabilidade de k tarefas na Fila
9. Nmero mdio de tarefas na Fila

Modelagem e Simulao Discreta

= taxa de chegada de tarefas por


unidade de tempo
= taxa de servio por unidade de
tempo

=
< 1
p0=(1)
pn=(1)n , n

E[n]=
1

V [n]=
(1)2
P[nq =k ]=12 , k =0
P[nq =k ]=(1)k+1 , k >0
2
E[nq ]=
1

29

2 (1+2 )
10. Varincia do nmero mdio de tarefas na Fila
V [nq ]=
(1)2
11. FDA do tempo de resposta
F( r)=1e(1)r
1
E[r ]=
12. Tempo mdio de resposta
(1)
1
V [r ]= 2
13. Varincia do tempo de resposta
(1)2
100
w q=E [r ] ln(
)
14. Percentil q do tempo de resposta
100q
w 90=2,3 E[r ]
15. Percentil 90 do tempo de resposta
(1)w
16. FDA do tempo de espera
F( w)=1 e

E[w ]=
= E[r ]
17. Tempo mdio de espera
(1)
(2)
V [w]= 2
18. Varincia do tempo de espera
(1)2
E[w ]
100
19. Percentil q do tempo de espera
max {0, ln(
)}
100q
E[w ]
20. Percentil 90 do tempo de espera
max {0, ln(10)}
21. Probabilidade de n ou mais tarefas no Sistema
n
1 2n2 n1
1
22. Probabilidade de executar n tarefas no perodo

ocupado
n n1
(1+)2 n1
1
23. Nmero mdio de tarefas executadas no perodo
ocupado
1
24. Varincia do nmero mdio de tarefas executadas (1+)
no perodo ocupado
(1)3
1
25. Durao mdia do perodo ocupado
(1)
1
1
2
26. Varincia da mdia do perodo ocupado
2
3
(1) (1)2

1.6.3

PROCESSOS DE POISSON

Dentro da hierarquia dos processos estocsticos, os Processos de Poisson


so casos particulares de Processos Nascimento Morte que, por sua vez,
so casos particulares de Processos de Markov. A relao entre estes
processos est representada graficamente na Figura 10.

Modelagem e Simulao Discreta

30

Figura 10 - Relao entre os processos estocsticos.


Os Processos de Markov nos quais as transies so discretas e restritas
aos estados vizinhos so Processos Nascimento Morte. Eles so utilizados
para modelar sistemas nos quais as tarefas chegam uma de cada vez e
no em lotes. Assim possvel representar os estados por nmeros
inteiros de tal forma que um processo no estado n pode mudar apenas
para o estado n+1 ou n-1. Por exemplo, o nmero de tarefas em uma fila
com um nico servidor e chegadas individuais (e no em lotes) pode ser
representada 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 so em homenagem a A. A. Markov, que os definiu e os
analisou em 1907.
Nos Processo de Markov os estados futuros de um processo so
independentes do passado e dependem apenas do presente, isto , para s
e t > 0 ento P(X > s+t | X > s) = P(X > t). Esta propriedade dos
Processos de Markov torna-os mais fcil de analisar j que no
necessrio considerar sua trajetria passada, conhecer seu estado atual
suficiente.
Os Sistemas de Fila M/M/m podem ser modeladas atravs de Processos de
Markov. O atendimento dos Servidores nestes sistemas um Processo de
Markov e a chegada de tarefas em Fila uma Cadeia de Markov.
Se os tempos entre chegadas so independentes e igualmente distribudos
(iid) e exponencialmente distribudos, o nmero de chegadas n em um
determinado intervalo (t,t+x) tem uma distribuio de Poisson, o
processo de chegada referido como um Processo de Poisson e tem as
seguintes propriedades:

fuso de k Processos de Poisson com taxa i resulta em um Processo de Poisson


com taxa mdia dada por =

k i

um Processo de Poisson com taxa mdia pode ser divido em n processos com
= p11 + p22 + ... + pnn, em que pi = 1
a sada de um sistema de filas M/M/1 em que < um Processo de Poisson
a sada de um sistema de filas M/M/m com taxas de servios 1, 2, ..., n, em que
< i, so Processos de Poisson

1.6.4
PROBABILIDADE DE ESTADO PARA PROCESSOS
NASCIMENTO MORTE
A Figura 11 apresenta o diagrama de transio de estado de um Processo
Nascimento-Morte. Este o sistema mais simples de fila no qual as tarefas
Modelagem e Simulao Discreta

31

chegam de acordo com um Processo de Poisson em um sistema de


servidor nico. O modelo tambm assume capacidade infinita do sistema,
as tarefas so provenientes de uma populao infinita e a disciplina da
fila FIFO.

Figura 11 - Diagrama de transio 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 servio n. Assumindo que os intervalos entre
chegadas e os tempos de servio so exponencialmente distribudos, a
probabilidade de estado estacionrio de um processo nascimento morte
de estar no estado n dada pelo Teorema 1.1.
Teorema 1.1 A probabilidade do estado estacionrio p n de um processo
nascimento morte estar no estado n dada pela Equao 1.8
n2 n1
pn= p0 01 11 22 3
n1 n

1.8

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


Esta expresso para pn tambm se aplica aos Sistemas de Fila M/M/c/K/m,
para todos os valores de c, K e m, e pode tambm ser utilizada para
analis-los.

1.6.5

SISTEMAS DE FILAS M/M/1

O Sistema de Fila M/M/1 o mais simples, constitudo por uma Fila e um


Servidor, em que as tarefas chegam de acordo com um Processo de
Poisson e o tempo para atend-las distribudo exponencialmente. Uma
vez que neste sistema pode-se aumentar ou diminuir, no mximo, uma
tarefa de cada vez, um Processo Nascimento-Morte com taxas
homogneas de nascimento e de morte . O diagrama de estado das
taxas de transio de Sistemas de Fila M/M/1 mostrado na Figura 12.

Modelagem e Simulao Discreta

32

Figura 12 - Diagrama de transio de estado de Sistemas de Fila M/M/1


destacando os valores constantes das taxas de transio e .
O estado dessa fila dado pelo seu nmero de tarefas n, teoricamente n
[0,). Para i= e i+1= , i [0,n), o Teorema 1.1 nos d a seguinte
expresso para a probabilidade de n tarefas do sistema:
n

pn= p0 n

1.9

A quantidade / chamada de intensidade de trfego e indicada pelo


smbolo . Assim,
pn= p0 n
em que

1.10

1.11

Uma vez que a soma de todas probabilidades deve ser igual a 1, tem-se a
seguinte expresso para a probabilidade de zero tarefas na Fila do
sistema:
p0=1

1.12

Demonstrao:

pi=1 p 0 i=1 p0 i=1 p 0=


i=0

i=0

i=0

i =0

1+

1+

i=1

=1
1

x
,|x|<1 , soma da progresso geomtrica infinita (Polyanin &
Nota: x =
1x
n=1
n

Manzhirov, 2007, pag. 357).

Substituindo p0 em pn, obtm-se:


pn=(1)n

1.13

Pode-se derivar as propriedades das filas M/M/1 que foram apresentadas


na Tabela 8. Por exemplo, a Utilizao do Servidor dada pela
probabilidade de se ter uma ou mais tarefas no sistema:
U=1p 0=

1.14

O nmero mdio de tarefas no sistema dado por:

n=1

n=1

E[n]= n pn= n(1)n=

Modelagem e Simulao Discreta

1.15

33

Demonstrao (Mor, 2013, p. 145):

d n
n
n
n
(1)
=(1)
n
=(1)

d =(1)
n=1
n=1
n=1

d
n=1

d(
=(1)

)
1

=
d
1

Jain (1991) apresenta uma demostrao baseada no Processo Nascimento-Morte que


muito mais interessante.

A varincia do nmero de tarefas no sistema

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


n=1

(1)2

1.16

A probabilidade de n ou mais tarefas no sistema

P(k n)= (1)k =n

1.17

k=n

O tempo mdio de resposta pode ser calculado usando a Lei de Little, que
estabelece que
nmero mdio de tarefas no sistema=taxa de chegadatempo mdio de resposta

1.18

isto
E[n]= E [r ] E[r ]=

E [n ]

E [r ]=
E [r ]=

(1)
(1)

1.19

A funo de distribuio acumulada (FDA) do tempo de resposta


(1)r

F( r)=1e

1.20

Note-se que o tempo de resposta distribudo exponencialmente. A partir


da qual pode-se calcular seus percentis. Por exemplo, o q-percentil do
tempo de resposta pode ser calculado por
F(r q )=

q
q
1
100
1e(1)r =
r q =
ln (
)
100
100
100q
(1)

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 distribuio exponencial truncada. Seu q-percentil dado


por

Modelagem e Simulao Discreta

34

w q=

100
1
ln(
)
(1)
100q

1.23

Esta frmula se aplica somente se q maior do que 100(1-) sendo os


demais percentis no nulos. Isto pode ser indicado pela equao:
E [w]
w q=max {0, ln (10 )}

1.24

O nmero mdio de tarefas na Fila dado por

n=1

n=1

E[nq ]= (n1) p n= (n1)(1)n=

2
1

1.25

Quando no h servios no sistema, o servidor considerado ocioso; caso


contrrio, o servidor est ocupado. O intervalo de tempo entre dois
sucessivos intervalos ociosos chamado de perodo ocupado.
O seguinte exemplo ilustra a aplicao destes resultados na modelagem
de um gateway de rede, extrado de Jain (1991).
Exemplo 1.3: Em um gateway de uma rede, medies mostraram que os pacotes
chegavam a uma taxa mdia de 125 pacotes por segundo (pps) e o gateway leva cerca
de 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 igual
a 13? Qual a tamanho do buffer para que a perda de pacotes seja menor do que um
pacote por milho?
Taxa de chegada = 125 pps
Taxa de servio = 1/0,002 = 500 pps
Intensidade do trfego no gateway = / = 0,25
Probabilidade de n pacotes no gateway = (1-)n = 0,75(0,25)n
Nmero mdio de pacotes no gateway = /(1-)= 0,25/0,75 = 0,33
Tempo mdio 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 bilhes de pacotes
Para limitar a probabilidade de perda de pacotes para menos de 1x10 -6, n < 1x10-6 ou n
> log (1x10-6)/log(0,25) = 9,96. O tamanho do buffer deve ser igual a 10.
Os dois ltimos resultados sobre estouro de buffer so aproximados. Estritamente
falando, o gateway deve ser modelado como uma fila M/M/1/B. No entanto, uma vez que
a utilizao baixa e o tamanho do buffer est acima do comprimento mdio da fila,
estes resultados so boas aproximaes.

1.7 OUTRA VISO PARA ESTUDAR MODELAGEM E


SIMULAO

Modelagem e Simulao Discreta

35

Freitas Filho (2008), no captulo 1 Modelagem e Simulao de Sistemas,


discute uma outra viso do processo de Formulao de um Estudo
Envolvendo Modelagem e Simulao, tomada das principais fontes sobre o
assunto. Ele cita os textos clssicos de Banks, Law e Kelton, Pegden e
Kelton e Sadow Ski e destaca que as etapas apresentadas na Figura 13
esto presentes em quase todos os livros e trabalhos gerais sobre o
processo para solucionar problemas usando modelagem e simulao. As
etapas desta figura so descritas na Tabela 9.

Figura 13 - Diagrama com as etapas em um estudo envolvendo


modelagem e simulao segundo Freitas Filho (2008).
Tabela 9 - Descrio das etapas em um estudo envolvendo modelagem e
simulao segundo Freitas Filho (2008)
Um estudo de simulao inicia com a formulao do problema. Os
propsitos e objetivos do estudo devem ser claramente definidos.
Devem ser respondidas questes do tipo:
Formulao e
Anlise do
Problema

Planejamento
do Projeto

Formulao do
Modelo
Conceitual

1. Por que o problema est sendo estudado?


2. Quais sero as respostas que o estudo espera alcanar?
3. Quais so os critrios para avaliao da performance do
sistema?
4. Quais so as hipteses e pressupostos?
5. Que restries e limites so esperados das solues obtidas?
pretende-se ter a certeza de que se possuem recursos suficientes no
que diz respeito a pessoal, suporte, gerncia, hardware e software para
realizao do trabalho proposto. Alm disso, o planejamento deve
incluir um a descrio dos vrios cenrios que sero investigados e um
cronograma temporal das atividades que sero desenvolvidas,
indicando os custos e necessidades relativas aos recursos citados.
Traar um esboo do sistema, de forma grfica (fluxograma, por
exemplo) ou algortmica (pseudocdigo), definindo componentes,
descrevendo as variveis e interaes lgicas que constituem o
sistema. recomendado que o modelo inicie de forma simplificada e
v crescendo at alcanar algo mais complexo, contemplando todas as
suas peculiaridades e caractersticas. O usurio deve participar
intensamente desta etapa. Algumas das questes que devem ser
respondidas:
1. Qual a estratgia de modelagem? Discreta? Contnua? Uma
combinao?
2. Que quantidade de detalhes deve ser incorporada ao modelo?
3. Como o modelo reportar os resultados? Quais so os relatrios

Modelagem e Simulao Discreta

36

ps-simulao?
4. Que nvel de personalizao de cenrios e recursos deve ser
implementado?
5. Que nvel de agregao dos processos (ou de alguns) deve ser
implementado?
6. Como os dados sero colocados no modelo? Manualmente?
Leitura de arquivos?
Macro-informaes so fatos, informaes e estatsticas fundamentais,
derivados de observaes, experincias pessoais ou de arquivos
histricos. Em geral, macro-informaes servem para conduzir os
futuros esforos de coleta de dados voltados a alimentao de
parmetros do sistema modelado. Algumas questes que se
apresentam so:

Coleta de Macro
Informaes
Coleta de
Dados

1. Quais so as relaes e regras que conduzem a dinmica do


sistema? O uso de diagramas de fluxos comum para facilitar a
compreenso destas inter-relaes.
2. Quais so as fontes dos dados necessrios a alimentao do
modelo?
3. Os dados j se encontram na forma desejada? O mais comum
os dados disponveis encontrarem-se de maneira agregada (na
forma de mdias, por exemplo), o que pode no ser
interessante para a simulao.
4. E quanto aos dados relativos a custos e finanas? Incorporar
elementos de custos em um projeto torna sua utilizao muito
mais efetiva. Custos de espera, custos de utilizao, custos de
transporte etc., quando empregados, tornam os modelos mais
envolventes e com maior credibilidade e valor.
Codificar o modelo numa linguagem de simulao apropriada. Embora
hoje os esforos de conduo desta etapa tenham sido minimizados
em funo dos avanos em hardware e, principalmente, nos softwares
de simulao, algum as questes bsicas devem ser propriamente
formuladas e respondidas:

Traduo do
Modelo

Verificao e
Validao do
Modelo

Projeto
Experimental

1. Quem far a traduo do modelo conceitual para a linguagem


de simulao? fundamental a participao do usurio se este
no for o responsvel direto pelo cdigo.
2. Como ser realizada a comunicao entre os responsveis pela
programao e a gerncia do projeto?
3. E a documentao? Os nomes de variveis e atributos esto
claramente documentados? Outros, que no o programador
responsvel, podem entender o programa?
Confirmar que o modelo opera de acordo com a inteno do analista
(sem erros de sintaxe e lgica) e que os resultados por ele fornecidos
possuam crdito e sejam representativos dos resultados do modelo
real. Nesta etapa as principais questes so:
1. O modelo gera informaes que satisfazem os objetivos do
estudo?
2. As informaes geradas so confiveis?
3. A aplicao de testes de consistncia e outros confirma que o
modelo est isento de erros de programao?
Projetar um conjunto de experimentos que produza a informao
desejada, determinando como cada um dos testes devem ser
realizado. O principal objetivo obter mais informaes com menos

Modelagem e Simulao Discreta

37

experimentaes. As principais questes so:


1. Quais os principais fatores associados aos experimentos?
2. Em que nveis devem ser os fatores variados de forma que se
possa melhor avaliar os critrios de desempenho?
3. Qual o projeto experimental mais adequado ao quadro de
respostas desejadas?
Experimentao

Interpretao e
Anlise
Estatstica dos
Resultados

Executar as simulaes para a gerao dos dados desejados e para a


realizao das anlises de sensibilidade.
Traar inferncias sobre os resultados alcanados pela simulao.
Estimativas para as medidas de desempenho nos cenrios planejados
so efetuadas. As anlises podero resultar na necessidade de um
maior nmero de execues (replicaes) do modelo para que se possa
alcanar a preciso estatstica sobre os resultados desejados. Algumas
questes que devem ser apropriadamente respondidas:
1. O sistema modelado do tipo terminal ou no-terminal?
2. Quantas replicaes so necessrias?
3. Qual deve ser o perodo simulado para que se possa alcanar o
estado de regime?
4. E o perodo de warm-up1?

Muitas vezes o emprego da tcnica de simulao visa a identificao


de diferenas existentes entre diversas alternativas de sistemas. Em
algumas situaes, o objetivo comparar um sistema existente ou
considerado como padro, com propostas alternativas. Em outras, a
Comparao de ideia a comparao de todas as propostas entre si com o propsito
de identificar a melhor ou mais adequada delas. As questes prprias
Sistemas e
deste tipo de problema so?
Identificao
das Melhores
1. Como realizar este tipo de anlise?
Dolues
2. Como proceder para comparar alternativas com um padro?
3. Como proceder para comparar todas as alternativas entre si?
4. Como identificar a melhor alternativa de um conjunto?
5. Como garantir estatisticamente os resultados?
Documentao

A documentao do modelo sempre necessria. Primeiro para servir


como um guia para que algum, familiarizado ou no com o modelo e
os experimentos realizados, possa fazer uso do mesmo e dos
resultados j produzidos. Segundo, porque se forem necessrias
futuras modificaes no modelo, toda a documentao existente vem a
facilitar e muito os novos trabalhos. A implementao bem-sucedida de
um modelo depende, fundamentalmente, de que o analista, com a
maior participao possvel do usurio, tenha seguido os passos que,
sumariamente, aqui foram relatados. Os resultados das anlises devem
ser reportados de forma clara e consistente, tambm como parte
integrante da documentao do sistema. Como linhas gerais pode-se
dizer que os seguintes elementos devem constar de uma
documentao final de um projeto de simulao:
1. Descrio dos objetivos e hipteses levantadas;
2. Conjunto de parmetros de entrada utilizados (incluindo a
descrio das tcnicas adotadas para adequao de curvas de
variveis aleatrias);
3. Descrio das tcnicas e mtodos empregados na verificao e
na validao do modelo;
4. Descrio do projeto de experimentos e do modelo fatorial de

1 - transio
Modelagem e Simulao Discreta

38

experimentao adotado;
5. Resultados obtidos e descrio dos mtodos de anlise
adotados;
6. Concluses e recomendaes. Nesta ltima etapa
fundamental tentar descrever os ganhos obtidos na forma
monetria.
A apresentao dos resultados do estudo de simulao deve ser
realizada por toda a equipe participante. Os resultados do projeto
devem refletir os esforos coletivos e individuais realizados,
considerando os seus diversos aspectos, isto , levantamento do
problema, coleta de dados, construo do modelo etc. Durante todo o
desenvolvimento e implementao do projeto, o processo de
comunicao, entre a equipe e os usurios finais, deve ser total e,
portanto, durante a apresentao final no devem ocorrer surpresas de
ltima hora. Os itens abaixo devem estar presentes como forma de
encaminhamento das questes tcnicas, operacionais e financeiras no
que diz respeito aos objetivos da organizao:
Apresentao
dos Resultados
e
Implementao

1.
2.
3.
4.
5.
6.
7.

Restabelecimento e confirmao dos objetivos do projeto


Quais problemas foram resolvidos
Rpida reviso da metodologia
Benefcios alcanados com a(s) soluo (es) proposta(s)
Consideraes sobre o alcance e preciso dos resultados
Alternativas rejeitadas e seus motivos
Estabelecimento de conexes entre o processo e os resultados
alcanados com o modelo simulado e outros processos de
reengenharia ou de reformulao do negcio
8. Assegurar que os responsveis pelo estabelecimento de
mudanas
organizacionais
ou
processuais
tenham
compreendido a abordagem utilizada e seus benefcios
9. Tentar demonstrar que a simulao uma espcie de ponte
entre a ideia e sua implementao

1.8 RECURSOS DIDTICOS PEDAGGICOS


O modelo analtico do Sistema de Filas M/M/1, apresentado na Tabela 8, foi
implementado em uma classe Javascript, denominada clMM1Analitico.js,
Algoritmo 1.1. Para fins de codificao, a letras , e foram trocadas por
l, m e r, respectivamente.
Algoritmo 1.1: Classe clMM1Analitico.js para o modelo analtico de
Sistemas de Fila M/M/1

Modelagem e Simulao Discreta

39

function clMM1Analitico(){
this.f = function(n){
var p = 1;
for( var i = n; i > 1; i-- )
p *= i;
return p;
}
this.C = function(n,p){
return this.f(n)/this.f(n-p)/this.f(p);
}
this.Calculate = function(l,m,n,q){
var r = l/m, P = [27];
for( var i = 0; i < 27; i++ )
P[i] = -1.0;
P[2] = r;
P[3] = "r >= 1";
if( r < 1.0 ){
P[ 3] = "r < 1";
P[ 4] = 1-r;
P[ 5] = (1-r)*Math.pow(r,n);
P[ 6] = r/(1-r);
P[ 7] = r/Math.pow(1-r,2);
P[ 8] = n > 0 ? (1-r)*Math.pow(r,n+1) : 1-r*r;
P[ 9] = r*r/(1-r);
P[10] = r*r*(1+r-r*r)/Math.pow(1-r,2);
P[11] = 1-Math.exp(-m*r*(1-r));
P[12] = (1/m)/(1-r);
P[13] = (1/Math.pow(m,2))/Math.pow(1-r,2);
P[14] = (1/m)/(1-r)*Math.log(100/(100-q));
P[15] = 2.3*(1/m)/(1-r);
P[16] = 1-r*Math.exp(-m*r*(1-r));
P[17] = r*(1/m)/(1-r);
P[18] = (2-r)*r/(m*m*(1-r)*(1-r));
P[19] = (P[17]/r)*Math.log(100*r/(100-q));
P[20] = (P[17]/r)*Math.log(10*r);
P[21] = Math.pow(r,n);
P[22] = this.C(2*n-2,n-1)*Math.pow(r,n-1)/n/Math.pow(1+r,2*n-1);
P[23] = 1/(1-r);
P[24] = r*(1+r)/Math.pow(1-r,3);
P[25] = 1/(m*(1-r));
P[26] = 1/(m*m*Math.pow(1-r,3))-1/(m*m*(1-r)*(1-r));
if( P[19] < 0 ) P[19] = 0;
if( P[20] < 0 ) P[20] = 0;
}
return P;
}
}

Tambm foi desenvolvido o software, MM1Analitico.html que utiliza


clMM1Analitico.js, Algoritmo 1.2, com dados de entrada (taxa mdia de
chegada), (taxa mdia de servio), n ( nmero de tarefas) e q (percentil).
O valor de n requerido para os clculos de probabilidades, como no item
5, e valor de q para os clculos de percentis, como no item 14 da Tabela 8.
Na Figura 14 esto os resultados do modelo analtico de Sistemas de Fila
M/M/1 utilizando o software MM1Analitico.html para = 0.100 s, = 0.400
s, n = 10 e q = 10.
Modelagem e Simulao Discreta

40

Algoritmo 1.2: Cdigo do software MM1Analitico.html


<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Modelagem e Simulacao:: Sistemas de Fila M/M/1 Modelo
Analtico</title>
<meta content="Brauliro Goncalves Leal" name="author">
<meta content="Texto da Disciplina Modelagem e Simulacao do Curso de
Engenharia da Computacao da Universidade Federal do Vale do Sao Francisco"
name="description">
<meta content="rede de computadores,sistema computacional,variaveis
aleatorias" name="keywords">
<style>
body,input,table { font-family: Arial; font-size: 22px }
</style>
<script src="clMM1Analitico.js"></script>
<script>
function MM1AnaliticoTeste(){
var MM1Analitico = new clMM1Analitico();
var l, m, n, q, P = [];
l = parseFloat(document.getElementById("l").value);
m = parseFloat(document.getElementById("m").value);
n = parseFloat(document.getElementById("n").value);
q = parseFloat(document.getElementById("q").value);
P = MM1Analitico.Calculate(l,m,n,q);
for( var i = 2; i < 27; i++ ){
var vlr = document.getElementById( i.toString() );
if( P[2] < 1.0 ){
if( i != 3 ) vlr.value = P[i].toFixed(6);
else vlr.value = P[i];
}
else{
if( i == 3 ) vlr.value = P[i];
else vlr.value = "-";
}
}
}
</script>
</head>
<body> Anlise de Fila M/M/1 - Modelo Analtico
<table border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>1. Parmetros
<td><input size="10" id="l" value="0.100" type="text"><br>
<input size="10" id="m" value="0.400" type="text"><br>
<input size="10" id="n" value="10" type="text"><br>
<input size="10" id="q" value="10" type="text">
<button type="button" onclick="MM1AnaliticoTeste()">>></button>
<tr><td>2. Intensidade de trfego
<td><input id="2" value="." type="text">
<tr><td>3. Condio de estabilidade
<td><input id="3" value="." type="text">
<tr><td>4. Probabilidade de zero tarefa no sistema
<td><input id="4" value="." type="text">
<tr><td>5. Probabilidade de n tarefas no sistema
<td><input id="5" value="." type="text">
<tr><td>6. Nmero mdio de tarefas no sistema
Modelagem e Simulao Discreta

41

<td><input id="6" value="." type="text">


<tr><td>7. Varincia do nmero mdio de tarefas no sistema
<td><input id="7" value="." type="text">
<tr><td>8. Probabilidade de n tarefas na fila
<td><input id="8" value="." type="text">
<tr><td>9. Nmero mdio de tarefas na fila
<td><input id="9" value="." type="text">
<tr><td>10. Varincia do nmero mdio de tarefas na fila
<td><input id="10" value="." type="text">
<tr><td>11. Funo de distribuio acumulada do tempo de resposta
<td><input id="11" value="." type="text">
<tr><td>12. Tempo mdio de resposta
<td><input id="12" value="." type="text">
<tr><td>13. Varincia do tempo de resposta
<td><input id="13" value="." type="text">
<tr><td>14. q-Percentil do tempo de resposta
<td><input id="14" value="." type="text">
<tr><td>15. 90-Percentil do tempo de resposta
<td><input id="15" value="." type="text">
<tr><td>16. Funo de distribuio acumulada do tempo de espera
<td><input id="16" value="." type="text">
<tr><td>17. Tempo mdio de espera
<td><input id="17" value="." type="text">
<tr><td>18. Varincia do tempo de espera
<td><input id="18" value="." type="text">
<tr><td>19. q-Percentil do tempo de espera
<td><input id="19" value="." type="text">
<tr><td>20. 90-Percentil do tempo de espera
<td><input id="20" value="." type="text">
<tr><td>21. Probabilidade de encontrar n ou mais tarefas no sistema
<td><input id="21" value="." type="text">
<tr><td>22. Probabilidade de executar n tarefas no perodo ocupado
<td><input id="22" value="." type="text">
<tr><td>23. Nmero mdio de tarefas executadas no perodo ocupado
<td><input id="23" value="." type="text">
<tr><td>24. Varincia do nmero de tarefas executadas no perodo ocupado
<td><input id="24" value="." type="text">
<tr><td>25. Durao mdia do perodo ocupado
<td><input id="25" value="." type="text">
<tr><td>26. Varincia do perodo ocupado
<td><input id="26" value="." type="text">
</tbody>
</table></body></html>

Modelagem e Simulao Discreta

42

Figura 14 - Resultados do modelo analtico de Sistema de Filas M/M/1


utilizando o software MM1Analitico.html.

1.9 QUESTES
1)
2)
3)
4)

Discuta as maneiras de se estudar um sistema.


Compare a Tabela 1 com a Tabela 9 e faa uma sntese das duas.
Caracterize e diferencie sistemas de fila, fila e atendimento.
Qual sistema de fila proporcionaria melhor desempenho:
M/M/3/300/100 ou um sistema M/M/3/100/100?

1.10
1)

1)

um

sistema

EXERCCIOS

Durante um intervalo de 1 hora, observou-se que um servidor de um sistema


distribudo recebeu 10.800 solicitaes. O tempo de resposta mdio destes
pedidos foi igual a um tero de segundo. Qual o nmero mdio de consultas no
servidor? Os processos deste sistema so Poisson?
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 servio st = { 11, 10, 9, 12, 9,
11, 14, 8, 9, 10 }, calcule os resultados analticos deste sistema conforme a Tabela
1.7.

Modelagem e Simulao Discreta

43

2)
3)

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 analticos deste sistema
conforme a Tabela 1.7.
Repita o Exemplo 1.1 para:
a) = 250 pps e = 500 pps
b) = 350 pps e = 500 pps
c) = 450 pps e = 500 pps

4)

Compare os resultados analticos do exerccio 4.a, 4.b e 4.c.

Modelagem e Simulao Discreta

44

2 SIMULAO DE SISTEMAS DE FILA

O modelos de Sistemas de Fila A/B/c/K/m/Z podem ser simulados por


computador. Para isso necessrio desenvolver os modelos conceituais e
conceituais destes sistemas. Inicialmente, por uma questo de
simplicidade, ser desenvolvida uma metodologia para realizar simulao
de Sistemas de Fila M/M/1.
Os Sistemas de Fila M/M/1, embora simples, fornecem informaes teis
sobre o desempenho de sistemas reais e, a partir deste modelo, pode-se
derivar modelos dos demais Sistemas de Fila M/M/c/K/m.
Primeiramente ser apresentado e discutido o modelo conceitual dos
Sistemas de Fila M/M/1 e, em seguida, o seu modelo computacional ser
apresentado, discutido e implementado em C++ e Javascript. Por fim, ser
simulado e apresentado seus resultados na forma de tabela. A dinmica
temporal dos resultados tambm ser apresentada em HTML5, permitindo
o acompanhamento grfico de suas variveis de entrada, de estado, de
sada e suas estatsticas.
A Figura 15 ilustra a representao grfica de Sistemas de Fila M/M/1 e
seus elementos constituintes: o Sistema de Fila (QS - Queue System), uma
Fila (Q - Queue) e um Servidor (S - Server). As tarefas chegam na Fila, uma
por vez, o Servidor as atendem tambm uma por vez. Uma tarefa
aguardar na Fila se o Servidor estiver ocupado, caso contrrio, ser
enviada para atendimento. Uma vez atendida, a tarefa deixa o Sistema de
Fila.

Modelagem e Simulao Discreta

45

Figura 15 - Modelo de Sistemas de Filas M/M/1 e seus elementos


constituintes: a a Fila, o Servidor e as tarefas aguardando processamento.

2.1 MODELO CONCEITUAL DE SISTEMAS DE FILA


Conforme representadas na Figura 9 e descritas na Tabela 7, as variveis
aleatrias fundamentais dos Sistemas de Fila de interesse no Modelo
Conceitual dos Sistemas de Fila so seus eventos discretos: chegada na
Fila, inicio do servio e fim do servio; e as estimativas dos valores a eles
associados: tempo entre chegadas e o tempo de servio.
As tarefas chegam nos Sistemas de Fila uma por vez e so processadas
em um Servidor igualmente uma por vez. As tarefas no chegam em lotes
nem so processadas em lotes. Desta forma, os Sistemas de Fila possuem
duas variveis bsicas:
As tarefas chegam nos Sistemas de Fila uma por vez e so processadas
em um Servidor igualmente uma por vez. As tarefas no chegam em lotes
nem so processadas em lotes. Desta forma, os Sistemas de Fila possuem
duas variveis bsicas:
1. taxa de chegada () ou intervalo entre chegadas (iat - interarrival time), a relao
entre elas = 1/E[iat]
2. taxa de servio () ou tempo de servio (st - service time), a relao entre elas
= 1/E[st]

O smbolo E(x) a esperana matemtica ou valor esperado da varivel


aleatria x. Dada uma fdp f(x) para o caso de variveis contnuas ou a
probabilidade p(xi) para o caso de variveis discretas, E(x) pode ser
calculada pelas Equaes 2.1 e 2.2, respectivamente.

Modelagem e Simulao Discreta

46

E( x )= f (x )dx

2.1

E( x )= p(x i )x i

2.2

i=1

Se o Servidor for mais rpido do que a taxa de chegada de tarefas no


Sistema de Fila, no h formao de Fila, ela sempre estar vazia pois
toda tarefa que chega, imediatamente processada e, em seguida, sai do
sistema. Em termos matemticos, se st iat no 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/1
adaptado de Jain (1991) e nela pode-se destacar cinco nveis:
1. nvel superior, tem-se os processos que ocorrem nestes sistemas, a chegada
(arrival), a espera (waiting), o servio (service) e a sada (departure)
2. no nvel abaixo, destacam-se as taxas de chegada () e de servio ()
3. nvel intermedirio, esto os nmeros do sistema, nq, ns e n, nmero de tarefas na
Fila (Q), no Servidor (S) e no Sistema de Fila (QS), respectivamente. Os valores que
ns pode assumir so 0 ou 1, Servidor livre ou ocupado, respectivamente, nq
podendo assumir qualquer valor natural, nq [0,), e n = nq+ ns
4. no prximo nvel, esto os os eventos discretos do sistema, a saber, chegada (at arrival time), incio do servio (bs - begin service) e fim do servio (es - end
service)
5. no ltimo nvel esto os tempos do sistema, w, s e r, tempo de espera na Fila,
tempo de servio e tempo no Sistema de Fila, respectivamente, sendo r = w+ s.
Os intervalos de chegada e de sada tambm esto nele indicados.

Figura 16 - Modelo Conceitual de Sistemas de Fila M/M/1 com seus


processos, variveis de entrada e sada, nmeros, eventos e tempos em
cinco nveis, adaptado de Jain (1991).

Modelagem e Simulao Discreta

47

Exemplo 2.1: Sejam N = 10 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 servio st
= { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 }, iat e st em unidades de tempo (tu - time unit). A
simulao do sistema feita conforme mostrado na Tabela 10.

Tabela 10 - Simulao de um Sistema de Fila M/M/1


e
iat
st
at
bs
es
1
8
11
8
8
19
2
5
10
13
19
29
3
12
9
25
29
38
4
15
12
40
40
52
5
8
9
48
52
61
6
11
11
59
61
72
7
9
14
68
72
86
8
10
8
78
86
94
9
7
9
85
94
103
10
6
10
91
103 113
Os eventos (e), seus intervalos entre chegadas (iat) e tempos de servio (st) so
organizados segundo a ordem de chegada a partir do tempo zero, e = 1, 2, ..., N. A
Tabela 10 preenchida calculando os valores das quatro variveis a seguir:

at - tempo da chegada da tarefa na Fila (arrival time)


bs - tempo da chegada da tarefa no Servidor
es - tempo da sada da tarefa do Servidor

A partir destas variveis possvel calcular os indicadores do Sistema de Fila, conforme


ser apresentado mais adiante.

2.1.1

VALORES INICIAIS DA SIMULAO

O estado inicial do Sistema de Fila de Fila vazia e Servidor ocioso. Para


iniciar a contagem do tempo o cronmetro zerado (tu time unit, tu = 0
). No Exemplo 2.1, aps 8 tu chega a primeira tarefa (e = 1, iat = 8, st =
11), ela chega na fila em at = 8 tu. Como o servidor est ocioso, ele
recebe a tarefa em bs = 8 tu e demora 11 tu para process-la, assim es
= 8+11 = 19.
Generalizando, os seguintes comandos resumem os valores iniciais das
variveis 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 incio da simulao (Fila vazia,


Servidor ocioso, cronmetro zerado) de ordem prtica e busca
contornar as condies iniciais reais do sistema.
Como consequncia, a simulao apresenta grande variabilidade nos
resultados iniciais, denominado perodo transiente, no qual observa-se
fortes flutuaes nos valores simulados com tendncia de crescimento.
Modelagem e Simulao Discreta

48

Em seguida, o comportamento da simulao apresentam flutuaes mas


em torno de valores mdios, o denominado perodo estacionrio.

2.1.2

CLCULO 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 dos
eventos anteriores, neste caso so 8+5 = 13 tu. Esta soma armazenada
em 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

CLCULO DE BS

Quando a segunda tarefa chega no Sistema de Fila no Exemplo 2.1, o


Servidor do sistema pode estar ocioso ou ocupado. Se ele estiver ocioso,
ele recebe a tarefa e o valor de bs igual ao de at, ambos do segundo
evento, Figura 17.a. Se ele estiver ocupado, esta situao perdurar at o
tempo es do evento anterior e, assim, bs igual ao valor de es do evento
anterior, Figura 17.b.
Desta forma, para o clculo de bs[e], e [2,N], necessrio considerar
duas alternativas, a saber:
1. at[e] > es[e-1] ento bs[e] = at[e], o Servidor est ocioso e a tarefa enviada a
ele (Figura 17.a)
2. at[e] es[e-1] ento bs[e] = es[e-1], a tarefa aguarda na Fila e ser enviada ao
Servidor assim que ele finalizar a tarefa anterior (Figura 17.b)

Figura 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[e1] e bs[e] = es[e-1].
Vale destacar que bs[e] at[e], e [1,N].

Modelagem e Simulao Discreta

49

2.1.4

CLCULO DE ES

Quando a segunda tarefa sai do Sevidor do Sistema de Fila no Exemplo 2.1


o tempo transcorrido igual ao valor de bs acrescido de st, ambos do
segundo evento.
Generalizando, es[e] = bs[e] + st[e], e [1,N].

2.1.5

ESTATSTICAS DE SISTEMAS DE FILA M/M/1

As variveis aleatrias dos Sistemas de Fila M/M/1, suas equaes ou seus


valores esperados esto listadas nas Tabela 11, adaptado de Chung
(2004). Estas equaes podem ser adaptadas para Sistemas de Filas
A/B/c/K/m/Z.
Tabela 11 - Valores das variveis aleatrias dos Sistemas de Fila M/M/1 e
seus valores mdios
VA
T
w[e]
s[e]
r[e]

Descrio
Estatstica
tempo da simulao
T =es [N ]
tempo de espera da tarefa e na Fila
w [ e]=bs [ e]at [e]
tempo de servio da tarefa e no Servidor
s [e ]=es [e ]bs [e ]
tempo de espera da tarefa e no Sistema de Fila r [e ]=es [e ]at[e ]

Equao
2.3
2.4
2.5
2.6

E(nq) nmero mdio de tarefas na Fila


E(ns) nmero mdio de tarefas no Servidor
E(n) nmero mdio de tarefas no Sistema de Fila
E(w) tempo mdio de espera de tarefas na Fila
E(s) tempo mdio de tarefas no Servidor
E(r)

tempo mdio de tarefas no Sistema de Fila

p0

probabilidade de Servidor ocioso

utilizao do Servidor

1
E(n q )= nq [e ]
N e=1
N
1
E(n s )= n s [e]
N e=1
N
1
E(n)= n[e ]
N e=1
N
1
E( w)= w [e]
N e=1
N
1
E( s)= s [e]
N e=1
N
1
E(r )= r [e]
N e=1
N
1
p0= (1ns [e ])r [e]
T e=1
N
1
U= n s [e]r [e ]
T e=1

2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14

Tempo da Simulao ou Durao da Simulao (T) igual ao ltimo valor


simulado de es, Equao 2.3. Este valor corresponde ao intervalo de

Modelagem e Simulao Discreta

50

tempo compreendido entre o incio da simulao (at[0] = 0) e o seu final,


o tempo que a ltima tarefa sai do sistema, es[N].
As Tarefas no Sistema incluem as que estiverem na Fila e tambm a que
estiver 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 necessrio comparar os valores de at de um


dado evento com os de es dos eventos anteriores. Considerando o
Servidor inicialmente ocioso, tem-se:
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, no h tarefa na Fila, ento at[2]
es[1] e nq[2] = 0. Se o Servidor estiver ocupado ento at[2] < es[1] e nq[2] = 1
a terceira tarefa, ao chegar no Servidor, se (e = 3) at[3] es[2] ento o Servidor
est ocioso e nq[3] = 0, caso contrrio nq[3] = 1, pelo menos a tarefa 2 est na
Fila. Se at[3] < es[1] ento a primeira tarefa ainda est na Fila e nq[3] = 2.

Generalizando, quando a e-sima tarefa chega no Sistema de Fila, o


tamanho da Fila nq[e] ser igual contagem dos casos em que at[e] <
es[c], c [1,e-1], Equao 2.15 e Figura 18.
e1

nq [e ]= 1, at[e ]<es [c ]

2.15

c=1

A Figura 18 mostra 5 eventos na reta do tempo na qual so destacados


seus valores de at, bs e es. Ao sair do Sistema, a tarefa e-4 d lugar ao
processamento 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 Simulao Discreta

51

Figura 18 - Valor de at da tarefa e em relao 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].
2.1.5.2

Valores de E(ns)

O Servidor de um Sistema de Fila pode estar ocioso ou ocupado e, assim,


ns[e] poder ser igual a 1 ou igual 0, Equao 2.16.

n s [e]= 0, Servidor ocioso


1, Servidor ocupado

2.16

Desta forma, o valor de E(ns), Equao 2.17, pode ser estimado pela soma
do tempo em que o Servidor ficou ocupado dividido pelo tempo da
simulao, logo igual Utilizao do Servidor (U) ou seja, E(ns) = U.
Considerando a Equao 2.16, o produto ns[e]s[e] indicado na Equao
2.17 igual ao prprio s[e] quando o Servidor estiver ocupado e 0
(zero)caso contrrio.
N

n s [e]s [e ]

E[n s ]= e=1

2.17

A Probabilidade de Servidor Ocioso a razo entre o tempo que o Servidor


fica ocioso e o tempo da simulao, Equao 2.18. Considerando a
Equao 2.16, o produto (1-ns[e])s[e] igual ao prprio s[e] quando o
Servidor estiver ocioso e 0 (zero) em caso contrrio.
N

(1n s [e])s [e]

p0= e=1

2.18

A Utilizao do Servidor a razo entre o tempo que o Servidor fica


ocupado e o tempo da simulao, Equao 2.19, que igual ao
complemento de p0, Equao 2.20.
N

n s [e] s [e ]

U= e=1

U=1p 0

2.1.5.3

2.19

T
2.20

Algoritmo para Calcular p0

Modelagem e Simulao Discreta

52

No incio da simulao, o Servidor est ocioso e permanece neste estado


durante o tempo bs[1], ou seja, at que chegue uma tarefa no sistema.
Para os demais eventos, o Servidor ficar ocioso quando at[e] > es[e-1] e
o tempo que ele fica ocioso at[e]es[e-1], vale destacar que at[e]
es[e-1], e [2,N). Sendo assim, p0 pode ser estimado pela Equao
2.21.
N

bs [1]+ (at[e ]es[e1])


e=2

p0=

2.21

, at [e ]>es [e1]

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 dos
Sistemas de Fila M/M/1.
Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1
Smbolo Descrio
A
Distribuio de tempo entre chegadas
B
Distribuio de tempo de servio
c
Nmero de canais de servios
K
Capacidade do sistema
m
Tamanho da populao
Z

Disciplina da fila

Valores
M - Processo de Poisson (Markoviano)
M - Processo de Poisson (Markoviano)
1

FIFO primeiro que chega o primeiro a


ser atendido

Tabela 13 - Entrada, parmetros, variveis de estado e sada do Modelo


Computacional de Sistemas de Fila M/M/1
Entrada
Parmetros
Variveis de Estado
Sada

iat e st ou = 1/E[iat] e = 1/E[st]


M/M/1///FIFO e N
at, bs, es
T, Enq, Ens, En, Ew, Es, Er, p0, U, Vnq, Vns, Vn, Vw, Vs, Vr

em que E a esperana matemtica (mdia aritmtica) e V a varincia.


A varincia da varivel aleatria x dada pela Equao 2.22.
2

V ( x )=E( x )[ E(x )]

2.22

Tabela 14 - Entrada, parmetros, variveis de estado e sada do Modelo


Computacional de Sistemas de Fila M/M/1
e=1
2eN

at[1] = bs[1] = iat[1]


es[1] = at[1] + st[1]
at[e] = iat[e] + at[e-1]
at[e] > es[e-1] ento bs[e] = at[e] seno bs[e] = es[e-1]
es[e] = bs[e] + st[e]

Modelagem e Simulao Discreta

53

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-at
1 3
12 3 3 15 0
0
3 12
2 5
12 8 15 27 1
7
0 19
3 4
10 12 27 37 2
15
0 25
4 3
9 15 37 46 2
22
0 31
5 8
2 23 46 48 3
23
0 25
6 5
2 28 48 50 3
20
0 22
7 9
1 37 50 51 3
13
0 14
8 8
3 45 51 54 4
6
0 9
9 7
2 52 54 56 1
2
0 4
10 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 ttulo 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 no est na Fila pois at[7] > es[3]
os eventos anteriores j foram processados em es[7] = 51 tu.

Os outros valores de nq so calculados da mesma forma.


O tempo de espera na Fila dada por w[e] = bs[e]-at[e]. Os valores de w esto
calculados na tabela acima, logo E[w] = w[e]/N = 108/10 = 10,8 tu.
O tamanho mdio da Fila Enq = w[e]/T = 108/63 = 1,7.
O clculo de p0, est indicado na tabela acima, p0 = 5/63 = 0,079.
O clculo de U = 1-p0 = 1-0,079 = 0,921 ou U = 92,1%.
O clculo de Es = st[e]/N = 58/10 = 5,8 tu.
O tempo mdio no sistema Er = (es[e]-at[e])/N = 166/10 = 16,6 tu.

2.2 MODELO COMPUTACIONAL DE SISTEMAS DE


FILA M/M/1
O Modelo Computacional de Sistemas de Fila M/M/1 est representado
pela classe clQS (Queue System) da Tabela 15 e pelo Algoritmo 2.1 em
Javascript. Esta classe encapsula os dados de estrada nos vetores iat e st,
as variveis de estado nos vetores at, bs e es, e o parmetro N,
simulaes a serem realizadas.
Modelagem e Simulao Discreta

54

O mtodo Simulate inicia a simulao com os valores de N, iat e st,


configura o estado inicial do Sistema de Fila (at[0], bs[0] e es[0]) e executa
N-1 vezes o mtodo Event para calcular as e-simas variveis de estado
at[e], bs[e] e es[e], e = 1, 2, , N-1.

No Modelo Conceitual de Sistemas de Fila e [1,N] e no correspondente


Modelo Computacional adquire o sentido de ordem de execuo dos
eventos em que e [0,N-1]. Isto se deve s caractersticas das
linguagens utilizadas, C++ e Javascript.

Tabela 15 - Classe clQS do Modelo Computacional dos Sistemas de Fila


M/M/1.
clQS
N, iat[N], st[N], at[N], bs[N], es[N]
Event = function(e)
Simulate = function(N, iat[N], st[N])

Algoritmo 2.1: Cdigo bsico em Javascript para simulao de eventos


discretos de Sistemas de Fila M/M/1
function clQS{
var N, iat = [], st = [], at = [], bs = [], es = [];
this.Event = function(e){
at[e] = iat[e] + at[e-1];
bs[e] = at [e] > es[e-1] ? at[e] : es[e-1];
es[e] = bs [e] + st[e];
}
this.Simulate = function(N,iat,st){
this.N
= N;
this.iat = iat;
this.st = st;
at[0] = bs[0] = iat[0];
es[0] = at[0] + st[0];
for( var e = 1; e < N; e++ )
this.Event(e);
}
}

O Modelo Computacional de Sistemas de Fila M/M/1 tambm foi


implementado em C++ (Algoritmo 2.2). A classe clQS possui o parmetro
N, os dados de entrada iat e st, e as variveis de estado at, bs e es. Ela
possui o construtor clQS e os mtodos Event e Simulate, conforme a
Tabela 15, estas variveis, exceto N, so vetores de tamanho N. Na funo
main esto declaradas e atribudos os valores de N, iat e st, o objeto QS
criado e recebe como parmetros a varivel N e os vetores iat e st e
atribui os valores recebidos s suas respectivas variveis globais do objeto
criado. Em seguida executa o mtodo Simulate que atribui os valores de
Modelagem e Simulao Discreta

55

at, bs e es do primeiro evento e, por fim, executa o mtodo Event para os


segundo, terceiro, ..., N-simo eventos, calculando os valores de at, bs e
es evento a evento.

Algoritmo 2.2: Cdigo bsico em C++ para simulao de eventos discretos


de Sistemas de Fila M/M/1
#include <vector>
using namespace std;
class clQS{
private:
int N;
vector<double>
public:
clQS
(
void Event
(
void Simulate(
};

iat, st, at, bs, es;


int, vector<double>, vector<double> );
int );
void );

clQS::clQS( int N, vector<double> iat, vector<double> st ){


this->N
= N;
this->iat = iat;
this->st = st;
at.resize(N);
bs.resize(N);
es.resize(N);
}
void clQS::Event( int
at [e] = iat[e] +
bs [e] = at [e] >
es [e] = bs [e] +
}

e ){
at[e-1];
es[e-1] ? at[e] : es[e-1];
st[e];

void clQS::Simulate( void ){


at[0] = bs[0] = iat[0];
es[0] = at[0] + st[0];
for( int e = 1; e < N; e++ )
Event(e);
}
int main( void ){
int N = 10;
vector<double> iat = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 },
st = { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 };
clQS *QS = new clQS(N,iat,st);
QS->Simulate();
delete QS;
return 0;
}

As estatsticas deve ser calculadas e no Algoritmo 2.3 esto os mtodos


Nq e Calculate escritos em Javascript. Nq calcula o tamanho da fila dos
eventos simulados e Simulate os valores de p0 e U, as mdias e
varincias de nq, w, s e r, indicadores dos Sistemas de Fila M/M/1.

Modelagem e Simulao Discreta

56

Algoritmo 2.3: Cdigo em Javascript para calcular os indicadores de


Sistemas de Fila M/M/1
this.Nq = function(){
nq[0] = 0.0;
for( var e = 1; e < N; e++ ){
nq[e] = 0;
for( var c = 0; c < e; c++ )
if( at[e] < es[c] ) nq[e] += 1;
}
}
this.Calculate = function(){
Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr = p0 = U = T = 0.0;
for( var e = 0; e < N; e++ ){
Enq += nq[e];
Ew += bs[e]-at[e];
Es += es[e]-bs[e];
Er += es[e]-at[e];
}
Enq /= N;
Ew /= N;
Es /= N;
Er /= N;
for( var e = 0; e < N; e++ ){
Vnq += Math.pow(nq[e]
Vw += Math.pow(bs[e]-at[e]
Vs += Math.pow(es[e]-bs[e]
Vr += Math.pow(es[e]-at[e]
}
Vnq /= (N-1);
Vw /= (N-1);
Vs /= (N-1);
Vr /= (N-1);

Enq,
Ew ,
Es ,
Er ,

2.0);
2.0);
2.0);
2.0);

T = es[N-1];
p0 = bs[0];
for( var e = 1; e < N; e++ )
if( at[e] > es[e-1] ) p0 += at[e]-es[e-1];
p0 /= T;
U
= 1.0-p0;

O Algoritmo 2.4 calcula nq de forma mais eficiente do que o do Algoritmo


2.3.
Algoritmo 2.4: Funo para calcular nq de forma mais eficiente
void Nq( void ){
nq[0] = 0;
for( int e = 1; e < N; e++ ){
int c = e-1;
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
Modelagem e Simulao Discreta

57

}
}

2.2.1

SOFTWARE QS.CPP

O cdigo completo em C++ para simulao de eventos discretos de


Sistemas de Fila M/M/1 pode ser visto no Algoritmo 2.5, neste algoritmo
foram feitas mudanas na sua estrutura e organizao interna quando
comparado com os cdigos anteriores, a saber:

os dados de entrada agora so N, l e m


l usado em lugar de = 1/E[iat]
m usado em lugar de = 1/E[st]
iat e st deixaram de ser dados de entrada e agora so calculados a partir de l e m,
respectivamente, utilizando a funo F

Os indicadores so calculados por Nq e Simulate. No Algoritmo 2.5 foram


introduzidos tambm os mtodos F, Start e Csv, a saber:

F calcula variveis aleatrias utilizando uma distribuio exponencial e geradores


de nmeros aleatrios (tcnicas a serem estudadas nos prximos captulos))
Start atribui os valores de iat, st, at, bs e es do primeiro evento
Csv permite gravar os valores calculados no formato csv que pode ser aberto por
planilhas ou editores de texto

As funes srand e rand so do prprio C++, e so usadas para gerar


nmeros aleatrios.
Algoritmo 2.5: Cdigo completo em C++ para simulao de eventos
discretos de Sistemas de Fila M/M/1
#include
#include
#include
#include
#include
#include
#include
#include
#include

<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>

using namespace std;


class clQS{
private:
int
N;
double l, m, Eiat, Viat, Est, Vst, Enq, Vnq, Ew, Vw,
Es, Vs, Er, Vr, p0, U, T;
vector<int> nq;
vector<double> iat, st, at, bs, es;
public:
clQS
( int, double, double );
double F
( double );
Modelagem e Simulao Discreta

58

void
void
void
void
void
void

Start
(
Event
(
Simulate (
Nq
(
Calculate(
Csv
(

void );
int );
void );
void );
void );
void );

};
clQS::clQS( int N, double l, double m ){
this->N = N;
this->l = l;
this->m = m;
iat.resize(N);
st .resize(N);
at .resize(N);
bs .resize(N);
es .resize(N);
nq .resize(N);
srand(time(NULL));
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0); // u in (0,1)
return -p*log(u);
}
void clQS::Start( void ){
iat[0] = F(l);
st [0] = F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
void clQS::Event( int e ){
iat[e] = F(l);
st [e] = F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at [e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs [e] + st[e];
}
void clQS::Simulate( void ){
Start();
for( int e = 1; e < N; e++ )
Event(e);
Nq();
Calculate();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < N; e++ ){
int c = e-1;
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
}
}
void clQS::Calculate( void ){
Eiat = Viat = Enq = Est = Vst = Enq = Vnq = Ew = Vw = Es = Vs =
Er = Vr = p0 = U = T = 0.0;
for( int e = 0; e < N; e++ ){
Eiat += iat[e];
Modelagem e Simulao Discreta

59

}
Eiat
Est
Enq
Ew
Es
Er

Est
Enq
Ew
Es
Er
/=
/=
/=
/=
/=
/=

+=
+=
+=
+=
+=

st
nq
bs
es
es

[e];
[e];
[e] - at[e];
[e] - bs[e];
[e] - at[e];

N;
N;
N;
N;
N;
N;

for( int e = 0; e
Viat += pow(
Vst += pow(
Vnq += pow(
Vw
+= pow(
Vs
+= pow(
Vr
+= pow(
}
Viat /= (N-1);
Vst /= (N-1);
Vnq /= (N-1);
Vw
/= (N-1);
Vs
/= (N-1);
Vr
/= (N-1);

< N; e++ ){
iat[e]
st [e]
nq [e]
bs [e]-at[e]
es [e]-bs[e]
es [e]-at[e]

Eiat,
Est ,
Enq ,
Ew ,
Es ,
Er ,

2.0);
2.0);
2.0);
2.0);
2.0);
2.0);

T = es[N-1];
p0 = bs[0];
for( int e = 1; e < N; e++ )
if( at[e] > es[e-1] ) p0 += at[e] - es[e-1];
p0 /= T;
U
= 1.0-p0;
}
void clQS::Csv( void ){
stringstream csv;
csv << "e;iat;st;at;bs;es;nq;w;s;r" << endl;
for( int e = 0; e < N; e++ ){
csv << e
<< ";"
<< iat[e] << ";"
<< st [e] << ";"
<< at [e] << ";"
<< bs [e] << ";"
<< es [e] << ";"
<< nq [e] << ";"
<< bs[e]-at[e] << ";"
<< es[e]-bs[e] << ";"
<< es[e]-at[e] << endl;
}
csv << "Summary;" << endl
<< "N;"
<< N
<< ";" << endl
<< "T;"
<< T
<< ";" << endl
<< "Eiat;" << Eiat << ";" << endl
<< "Viat;" << Viat << ";" << endl
<< "Est;" << Est << ";" << endl
<< "Vst;" << Vst << ";" << endl
<< "Enq;" << Enq << ";" << endl
<< "Vnq;" << Vnq << ";" << endl
<< "Ew;"
<< Ew
<< ";" << endl
Modelagem e Simulao Discreta

60

<< "Vw;"
<< Vw
<< ";" << endl
<< "Es;"
<< Es
<< ";" << endl
<< "Vs;"
<< Vs
<< ";" << endl
<< "Er;"
<< Er
<< ";" << endl
<< "Vr;"
<< Vr
<< ";" << endl
<< "p0;"
<< p0
<< ";" << endl
<< "U;"
<< U
<< ";" << endl;
string str = csv.str();
ofstream file;
file.open("QS.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();

}
int main( void ){
int
N = 100;
double l = 0.120,
m = 0.150;
clQS *QS = new clQS(N,l,m);
QS->Simulate();
QS->Csv();
delete QS;
return 0;
}

As variveis utilizadas no software QS.cpp esto sumarizadas na Tabela 16


e seus diagramas de classes e atividades so mostrados na Figura 19 e na
Figura 20, respectivamente.
Tabela 16 - Variveis utilizadas no software QS.cpp
Nome
N
l
m
iat
st
at
bs
es
nq
w
s
r
T
p0
U
E[var]
V[var]

Descrio

Entradas
nmero de eventos simulados
taxa de entrada
taxa de servio
Variveis
intervalo entre chegadas de tarefas na Fila
tempo de servio no Servidor
tempo de chegada de tarefa na Fila
tempo de chegada da tarefa no Servidor
tempo de sada da tarefa do Servidor
comprimento da Fila
tempo na Fila
tempo no Servidor
tempo do Sistema de Fila
durao da simulao
probabilidade de Servidor ocioso
utilizao do Servidor
Modificadores
Esperana da varivel [var]
Varincia da varivel [var]

Modelagem e Simulao Discreta

61

Figura 19 - Diagrama de classes do software QS.cpp

Modelagem e Simulao Discreta

62

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

No Algoritmo 2.5 foi utilizada a funo F(p), que gera o nmero aleatrio
u (0,1) e que retorna -p ln(u). O termo -p ln(u) a funo inversa da
exponencial e utilizada para gerar valores aleatrios de iat e st
distribudos exponencialmente (esta tcnica ser vista mais adiante).
Ao receber p = l como parmetro, F(p) gera um valor de iat que oscilar
em torno de l devido aleatoriedade na gerao de u. Similarmente, ao
receber p = m como parmetro, F(p) gera um valor de st que oscilar em
torno de m.
Os valores iat e st gerados pela funo F variam para cada simulao que
for realizada pois so obtidas a partir de u, que gerado aleatoriamente.
Desta forma so gerados valores de iat e de st em torno de uma mdia
conhecida.
Podem ser usadas outras funes alm da exponencial, basta incluir a
funo inversa de interesse, que ser visto mais adiante.

Modelagem e Simulao Discreta

63

Exemplo 2.3: Foi executado Algoritmo 2.5, com entradas N = 10, l = 0.167 e m = 0.191,
com os resultados apresentados abaixo:
e
0
1
2
3
4
5
6
7
8
9

iat
0,16
0,10
0,12
0,02
0,40
0,01
0,76
0,07
0,03
0,02

st
0,76
0,10
0,04
0,05
0,03
0,06
0,23
0,02
0,07
0,11

at
0,16
0,26
0,38
0,40
0,80
0,80
1,56
1,63
1,66
1,68

bs
0,16
0,92
1,02
1,06
1,11
1,14
1,56
1,79
1,81
1,88

es
0,92
1,02
1,06
1,11
1,14
1,21
1,79
1,81
1,88
1,99

nq
0,00
1,00
2,00
3,00
4,00
5,00
0,00
1,00
2,00
3,00

w
0,00
0,66
0,64
0,66
0,31
0,34
0,00
0,16
0,15
0,21

s
0,76
0,10
0,04
0,05
0,03
0,06
0,23
0,02
0,07
0,11

r
0,76
0,76
0,68
0,71
0,35
0,41
0,23
0,18
0,22
0,31

Summary
N
10
T
1,991
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 parmetro, so gerados os N = 10 valores de iat a
partir de F(p) conforme listados na tabela acima. O grfico de iat versus e esto no
grfico 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 mtodo.

Modelagem e Simulao Discreta

64

Valores de st gerados
Ao receber p = m = = 0.191 como parmetro, so gerados os N = 10 valores de st a
partir de F(p) conforme listados na tabela acima. O grfico de st versus e esto no
grfico abaixo. A linha (em cor preta) constante e a coluna de st (em cor laranja)
varia em torno de e denota a aleatoriedade do mtodo.

Os valores de iat e st das figuras acima variam para cada simulao que for realizada
pois so obtidas a partir de u, que gerado aleatoriamente. Desta forma so gerados
valores de iat e de st em torno de uma mdia conhecida.

Valores de at, bs e es gerados


Os valores de at (verde), bs (laranja) e es (azul) versus e esto no grfico abaixo.
Quando a coluna de at tem o mesmo valor que a de bs significa que a tarefa no
esperou na Fila, chegou e foi direto para o Servidor. Quanto maior a diferena entre at e
bs maior ser o tempo de espera na Fila. Quanto maior a diferena entre as colunas es e
bs maior ser o tempo de servio.

Modelagem e Simulao Discreta

65

Valores de w, s e r gerados
Os valores de w (verde), s (laranja) e r (azul) versus e esto no grfico abaixo. A tarefa e
= 0 tem w = 0 porque no espera na Fila, ao chegar, vai direto para o Servidor. A tarefa
e = 6 tambm no espera na Fila. Quanto maiores os valores das colunas maiores sero
a durao dos eventos.

Valores de nq gerados
Os valores de nq (cinza) versus e est no grfico abaixo. Para e = 0 e e = 6 no tem
tarefa na Fila. Quanto maior o valor das colunas maior ser o tamanha da Fila.

Modelagem e Simulao Discreta

66

2.3 QUESTES
1. Quais as diferenas entre os modelos de Sistemas de Fila M/M/1 e M/M/5.
2. Como um sistema CPU+Memria pode ser simulado pelo Sistemas de Fila M/M/1 se a
memria no tem tamanho infinito?
3. Compare as estimativas dos indicadores obtidos pelos modelos de simulao e
analticos dos Sistemas de Fila M/M/1 dos exemplos 2.1 e 2.2.

2.4 EXERCCIOS
1. Mensagens chegam em um servidor na taxa de 500 pps. O processamento feito na
taxa de 700 pps. Simule este sistema para 5000 e-mail. Compare os indicadores obtidos
por simulao com os do correspondente modelo analtico.
2. Durante um intervalo de 1 hora, observou-se que um servidor de um sistema
distribudo recebeu 10.800 solicitaes. O tempo de resposta mdio destes pedidos foi
observado como sendo igual a um tero de segundo. Simule este sistema para 100, 200 e
300 solicitaes. Qual o efeito do nmero de eventos simulados nos indicadores
estimados? Compare os indicadores, mdias e varicia, obtidos por simulao com os do
correspondente modelo analtico.
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 servio st = { 11, 10, 9, 12, 9, 11, 14, 8, 9,
10 }, simule 10 vezes e calcule a mdia e a varincia dos nos indicadores estimados?
Compare os indicadores obtidos por simulao com os do correspondente modelo
analtico.
4. Repita o Exerccio 1 para:
a) = 250 pps e = 500 pps
b) = 350 pps e = 500 pps
Modelagem e Simulao Discreta

67

c) = 450 pps e = 500 pps


5. Compare os indicadores simulados dos exerccios 4.a, 4.b e 4.c com seus respectivos
resultados analticos .
6. Tarefas chegam em um Sistema de Fila M/M/1 com intervalo entre chegadas (iat) e
tempo de servio (st) - considere nq, w, s e r os indicadores e o ndice erp(%) = 100 (ab)/b para comparao 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 variao da mdia e da varincia dos indicadores para 1000, 2000 e 4000
simulaes
b. compare e discuta os resultados obtidos nas simulaes do item 6.a com os
correspondentes do modelo analtico
c. discuta o comportamento analtico da mdia e da varincia dos indicadores quando iat
e st, ambos e simultaneamente, variam de 20% e 10% (tome 0% como base de
comparao)
7. Repita o exerccio 6 para as sries 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 }

2.5 RECURSOS DIDTICOS PEDAGGICOS


Os softwares descritos abaixo utilizam arquivos jquery.flot.js da biblioteca
grfica flot (www.flotcharts.org) que faz uso da biblioteca jquery.js.

Flot uma biblioteca JavaScript para produzir grficos com foco na


utilizao simples, aparncia atraente e funcionalidades interactivas. A
verso aqui utilizada foi a 0.8.3. Neste stio esto disponveis muitos
exemplos 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 em


uma classe Javascript, denominada clQS.js, Algoritmo 2.6. Para fins de
codificao, a letras e foram trocadas por l e m, respectivamente.
Uma instncia da classe clQS recebe os valores de l e m. Inicialmente o
mtodo Start executado para calcular os valores iniciais da simulao, o
evento discreto de ordem zero. Na sequncia, o mtodo Event
Modelagem e Simulao Discreta

68

executado N-1 vezes. Por fim, Statistic deve executado. Os demais


mtodos foram desenvolvidos para prover dados para gerao de grficos
e tabelas, conforme descritos abaixo. Vale destacar que os valores de iat e
st so calculados pelos mtodos Start e Event utilizando funes
exponenciais com parmetros l e m, respectivamente, e nmeros gerados
aleatoriamente pela funo random(). A tcnica de gerao de nmeros
aleatrios ser vista no captulo 4 deste livro.
Algoritmo 2.6: Classe clQS.js do Modelo Computacional de Sistemas de Fila
M/M/1 em Javascript
function clQS(l,m){
var N = 0, iat = [], st = [], at = [], bs = [], es = [], nq = [];
var Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0, U, T;
this.F = function(a){
return -a*Math.log(Math.random());
}
this.Start = function(){
iat[0] = this.F(l);
st [0] = this.F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
this.Event = function(e){
N = e+1;
iat[e] = this.F(l);
st [e] = this.F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
this.Statistics = function(){
Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr = p0 = U = T = nq[0] = 0.0;
for( var e = 1; e < N; e++ ){
nq[e] = 0;
for( var c = 0; c < e; c++ )
if( at[e] < es[c] ) nq[e] += 1;
}
for( var e = 0; e < N; e++ ){
Enq += nq[e];
Ew += bs[e]-at[e];
Es += es[e]-bs[e];
Er += es[e]-at[e];
}
Enq /= N;
Ew /= N;
Es /= N;
Er /= N;
for( var e = 0; e < N; e++ ){
Vnq += Math.pow(nq[e]
Vw += Math.pow(bs[e]-at[e]
Vs += Math.pow(es[e]-bs[e]
Vr += Math.pow(es[e]-at[e]
}
Vnq /= (N-1);
Vw /= (N-1);
Modelagem e Simulao Discreta

Enq,
Ew ,
Es ,
Er ,

2.0);
2.0);
2.0);
2.0);

69

Vs
Vr

/= (N-1);
/= (N-1);

T = es[N-1];
p0 = bs[0];
for( var e = 1; e < N; e++ )
if(at[e] > es[e-1]) p0 += at[e]-es[e-1];
p0 /= T;
U
= 1.0-p0;

}
this.Summary = function(){
var html;
html = "<br><table border='1' cellpadding='0' cellspacing='0'>";
html += "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";
for( var e = 0; e < N; e++ ){
html += "<tr>";
html += "<td>" + e
.toFixed(0);
html += "<td>" + iat[e].toFixed(3);
html += "<td>" + st [e].toFixed(3);
html += "<td>" + at [e].toFixed(3);
html += "<td>" + bs [e].toFixed(3);
html += "<td>" + es [e].toFixed(3);
html += "<td>" + nq [e].toFixed(0);
}
html += "</table><br>";
html += "<br> N
= " + N .toFixed(0) ;
html += "<br> T
= " + T .toFixed(3) ;
html += "<br> Enq = " + Enq.toFixed(3) ;
html += "<br> Vnq = " + Vnq.toFixed(3) ;
html += "<br> Ew = " + Ew .toFixed(3) ;
html += "<br> Vw = " + Vw .toFixed(3) ;
html += "<br> Es = " + Es .toFixed(3) ;
html += "<br> Vs = " + Vs .toFixed(3) ;
html += "<br> Er = " + Er .toFixed(3) ;
html += "<br> Vr = " + Vr .toFixed(3) ;
html += "<br> p0 = " + p0 .toFixed(3) ;
html += "<br> U
= " + U .toFixed(3) ;
return html + this.Legend();
}
this.Legend = function(){
var html;
html = "<br><br><br>Legend";
html += "<hr>";
html += " N - nmero de eventos simulados no Sistema de Fila
M/M/1<br>";
html += " e - ordem dos eventos<br>";
html += " iat - intervalo entre chegadas de tarefas na Fila
(interarrival time)<br>";
html += " st - tempo de servio do Servidor (service time)<br>";
html += " at - tempo de chegada da tarefa na Fila (arrival
time)<br>";
html += " bs - tempo de chegada da tarefa no Servidor (begin
service)<br>";
html += " es - tempo de sada da tarefa do Servidor (end
service)<br>";
html += " nq - comprimento da Fila<br>";
html += " w - tempo na Fila<br>";
html += " s - tempo no Servidor<br>";
html += " r - tempo no Sistema de Fila<br>";
html += " T - durao da simulacao<br>";
Modelagem e Simulao Discreta

70

html += " E - mdia<br>";


html += " V - varincia<br>";
html += " p0 - probabilidade do Servidor ocioso<br>";
html += " U - utilizao do Servidor (1-p0)<br>";
return html;

2.5.2

SOFTWARE QSTABLE.HTML

O software QSTable.html tem entradas N = 10, l = 0.167 e m = 0.191,


Algoritmo 2.7. nele criada uma instncia da classe clQS (Algoritmo 2.6),
executa uma vez o mtodo Start e N-1 vezes o mtodo Event, calcula as
estatsticas e gera a tabela de resultados utilizando os mtodos Summary
e Legend. Os resultados so apresentados na Figura 21.
Algoritmo 2.7: Software QSTable.html do modelo conceitual de Sistemas
de Fila M/M/1
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8"><html>
<title>Modelagem e Simulacao :: Analise de Sistemas de Fila M/M/1</title>
<meta content="Brauliro Goncalves Leal" name="author">
<meta content="Texto da Disciplina Modelagem e Simulacao do Curso de
Engenharia da Computacao da Universidade Federal do Vale do Sao Francisco"
name="description">
<meta content="rede de computadores,sistema computacional,variaveis
aleatorias" name="keywords">
<style>
body { font-family: Arial; font-size: 12px }
table{ font-family: Arial; font-size: 12px }
</style>
<script src="clQSEvento.js"></script>
<script>
function QSEventoTeste(){
var N = 10,
l = 0.167,
m = 0.191;
var QSEvento = new clQSEvento(l,m);
document.write( "<br> Analise de Sistemas de Fila M/M/1 Evento" );
QSEvento.Start();
for( var e = 1; e < N; e++ )
QSEvento.Event(e);
QSEvento.Statistic();
document.write(QSEvento.Summary());
}
</script>
</head>
<body onload="QSEventoTeste()">
</body>
</html>
Modelagem e Simulao Discreta

71

Figura 21 - Resultados da execuo do software QSTable.html (Algoritmo


2.7) com entradas N = 10, l = 0.167 e m = 0.191.

2.5.3

SOFTWARE QSPLOT.HTML

Modelagem e Simulao Discreta

72

Foi desenvolvido o software QSPlot.html para visualizao grfica e a


dinmica dos resultados do Modelo Computacional de Sistemas de Fila
M/M/1 utilizando a classe clQS e a biblioteca grfica flot, Algoritmo 2.8.
Algoritmo 2.8: Software QSPlot.html do modelo
Sistemas de Fila M/M/1 em HTML5 e Javascript

computacional

de

<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Anlise de Sistemas de Fila M/M/1 Grfico de Eventos</title>
<script type="text/javascript" src="jquery.js" ></script>
<script type="text/javascript" src="jquery.flot.js"></script>
<script>
function clQS(l,m){
var iat = [],
st = [],
at = [],
bs = [],
es = [],
nq = [];
var Eiat, Viat, Est, Vst, Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0;
Eiat = Viat = Enq = Est = Vst = Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr
= p0 = 0.0;
this.F = function(x){
var u = Math.random();
return -x*Math.log(u);
}
this.Start = function(){
iat[0] = this.F( l );
st [0] = this.F( m );
at [0] = iat[0];
bs [0] = at [0];
es [0] = at [0] + st[0];
nq [0] = 0;
p0
= bs[0];
}
this.Event = function(e){
iat[e] = this.F( l );
st [e] = this.F( m );
at [e] = at[e-1] + iat[e];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
this.Nq = function(e){
nq[e] = 0;
for( var c = 0; c < e; c++ )
if( at[e] < es[c] ) nq[e] += 1;
}
this.getMean = function(e){
var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
M[0] = Eiat /e;
M[1] = Est /e;
M[2] = Ew
/e;
M[3] = Es
/e;
M[4] = Er
/e;
M[5] = Enq /e;
Modelagem e Simulao Discreta

73

M[6] = p0
/es[e]; // T;
M[7] = 1.0-M[6];
// 1-p0;
return M;

}
this.getVariance = function(e){
var V = [0.0,0.0,0.0,0.0,0.0,0.0];
if( e > 1 ){
V[0] = Viat/(e-1);
V[1] = Vst /(e-1);
V[2] = Vw /(e-1);
V[3] = Vs /(e-1);
V[4] = Vr /(e-1);
V[5] = Vnq /(e-1);
}
return V;
}
this.Calculate = function(e){
Eiat += iat[e];
Est += st [e];
Enq += nq [e];
Ew
+= bs [e] - at[e];
Es
+= es [e] - bs[e];
Er
+= es [e] - at[e];
if( at[e] > es[e-1] ) p0 += at[e] - es[e-1];
Viat
Vst
Vnq
Vw
Vs
Vr
}

+=
+=
+=
+=
+=
+=

Math.pow(
Math.pow(
Math.pow(
Math.pow(
Math.pow(
Math.pow(

iat[e]
st [e]
nq [e]
bs [e]-at[e]
es [e]-bs[e]
es [e]-at[e]

Eiat/e,
Est /e,
Enq /e,
Ew /e,
Es /e,
Er /e,

2.0);
2.0);
2.0);
2.0);
2.0);
2.0);

function clQSTeste(){
var l
= 0.2,
m
= 0.1,
e
= 1 ,
d00 = [],
d01 = [],
d02 = [],
d03 = [],
d04 = [],
d05 = [],
d06 = [],
d07 = [],
d08 = [],
d09 = [],
d10 = [],
d11 = [],
d12 = [],
d13 = [],
G
= [];
var QS = new clQS(l,m);
QS.Start();
$(function(){
var datasets = {
Modelagem e Simulao Discreta

74

"Eiat":
"Est" :
"Ew" :
"Es" :
"Er" :
"Enq" :
"Viat":
"Vst" :
"Vw" :
"Vs" :
"Vr" :
"Vnq" :
"p0" :
"U"
:

{
{
{
{
{
{
{
{
{
{
{
{
{
{

label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:

"Eiat",
"Est ",
"Ew " ,
"Es " ,
"Er " ,
"Enq ",
"Viat",
"Vst ",
"Vw " ,
"Vs " ,
"Vr " ,
"Vnq ",
"p0 " ,
"U " ,

data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:

d00
d01
d02
d03
d04
d05
d06
d07
d08
d09
d10
d11
d12
d13

},
},
},
},
},
},
},
},
},
},
},
},
},
},

};
var choiceContainer = $("#choices");
$.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>"); });
var i = 0;
$.each(datasets, function(key,val){ val.color = i; ++i; });
choiceContainer.find("input").click(plotAccordingToChoices);
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 } }); } }
var timer = setInterval(function(n){
QS.Event(e);
QS.Nq(e);
QS.Calculate(e);
G = QS.getMean(e);
d00[e] = []; d00[e][0]
d01[e] = []; d01[e][0]
d02[e] = []; d02[e][0]
d03[e] = []; d03[e][0]
d04[e] = []; d04[e][0]
d05[e] = []; d05[e][0]
d12[e] = []; d12[e][0]
d13[e] = []; d13[e][0]

=
=
=
=
=
=
=
=

e;
e;
e;
e;
e;
e;
e;
e;

d00[e][1]
d01[e][1]
d02[e][1]
d03[e][1]
d04[e][1]
d05[e][1]
d12[e][1]
d13[e][1]

=
=
=
=
=
=
=
=

G[0];
G[1];
G[2];
G[3];
G[4];
G[5];
G[6];
G[7];

//"Eiat"
//"Est "
//"Ew "
//"Es "
//"Er "
//"Enq "
//"p0 "
//"U
"

G = QS.getVariance(e);
d06[e] = []; d06[e][0]
d07[e] = []; d07[e][0]
d08[e] = []; d08[e][0]
d09[e] = []; d09[e][0]
d10[e] = []; d10[e][0]
d11[e] = []; d11[e][0]

=
=
=
=
=
=

e;
e;
e;
e;
e;
e;

d06[e][1]
d07[e][1]
d08[e][1]
d09[e][1]
d10[e][1]
d11[e][1]

=
=
=
=
=
=

G[0];
G[1];
G[2];
G[3];
G[4];
G[5];

//"Viat"
//"Vst "
//"Vw "
//"Vs "
//"Vr "
//"Vnq "

e++;
plotAccordingToChoices();
},200);
$("#footer").prepend("Flot " + $.plot.version + " Copyright:
Brauliro G Leal, 2014" );
});
}
</script>
Modelagem e Simulao Discreta

75

</head>
<body>
<h4>Anlise de Sistemas de Fila M/M/1 Grfico de Eventos</h4>
<hr>
<input type="button" value=" QS Teste >>> " onclick="clQSTeste()"/>
<hr>
<div id="placeholder" style="float:left; height: 450px;
width:875px;"></div>
<p id="choices" style="float:left; height: 450px; width:135px;"></p>
<div id="footer" style="margin-top: 490px;"></div>
</body></html>

A Figura 22 apresenta a software QSPlot.html sendo executado, os clculos


so atualizados a cada 200 ms e as curvas so exibidas evento a evento.
Este software permite exibir/ocultar as curvas da variveis Eiat, Viat, Enq,
Est, Vst, Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0 e U.

Figura 22 - Resultado da execuo do software QSPlot.html.

2.5.4

SOFTWARE NQ.HTML

Foi desenvolvido o software Nq.html para visualizao grfica do nmero


de eventos na Fila do Modelos Computacional de Sistemas de Fila M/M/1,
Algoritmo 2.9.

Modelagem e Simulao Discreta

76

Algoritmo 2.9: Software Nq.html do Modelo Computacional de Sistemas de


Fila M/M/1 em HTML5 e Javascript
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Anlise de Sistemas de Fila M/M/1 Clculo de nq</title>
<script>
function clNq(l,m){
var N = 0, iat = [], st = [], at = [], bs = [], es = [], nq = [];
this.F = function(p){
return Math.ceil(-p*Math.log(Math.random()));
}
this.Start = function(){
iat[0] = this.F(l);
st [0] = this.F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
this.Event = function(e){
N = e+1;
iat[e] = this.F(l);
st [e] = this.F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
this.Calculate = function(){
for( var e = 0; e < N; e++ ){
nq[e] = 0;
for( var c = 0; c < e; c++ )
if( at[e] < es[c] ) nq[e] += 1;
}
}
this.Html = function(){
var html;
html = "<html><style> table {font-size:20px;}</style><body>";
html += "<br>Sistema de Fila M/M/1 - Clculo de nq";
html += "<br><table border='1' cellpadding='0' cellspacing='0'>";
html += "<tr><td>e/t";
for( var i = 1; i <= es[N-1]; i++ )
html += "<td>" + i;
for( var e = 0; e < N; e++ ){
html += "<tr>";
html += "<td>" + e;
for( var i = 0 ; i < at[e] ; i++ )
html += "<td>&nbsp;";
for( var i = at[e]; i < bs[e] ; i++ )
html += "<td style='background-color:#FFA500'>w";
for( var i = bs[e]; i < es[e] ; i++ )
html += "<td style='background-color:#98FB98'>s";
for( var i = es[e]; i < es[N-1]; i++ )
html += "<td>&nbsp;";
}
html += "</table><br><br><br>";
html += "<br><table border='1' cellpadding='0' cellspacing='0'>";
html += "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";
for( var e = 0; e < N; e++ ){
html += "<tr>";
Modelagem e Simulao Discreta

77

html
html
html
html
html
html
html

+=
+=
+=
+=
+=
+=
+=

"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"

+
+
+
+
+
+
+

e;
iat[e];
st [e];
at [e];
bs [e];
es [e];
nq [e];

}
html += "</table><br>";
return html;
}

function nqTeste(){
var N = 15, l = 1, m = 2;
var Nq = new clNq(l,m);
Nq.Start();
for( var e = 1; e < N; e++ )
Nq.Event(e);
Nq.Calculate();
document.write( Nq.Html());
}
</script>
</head>
<body onLoad="nqTeste()">
<input type="button" value=">>>" onclick="nqTeste()" />
</body></html>

A Figura 23 apresenta o software Nq.html sendo executado. Nesta figura,


as linhas representam os eventos e as colunas o tempo, as letras s e w
representam 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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
0
s s
1
w s s s s
2
w w s s
3
w w s s
4
w w w s
5
w w w s
6
w w w s s
7
w w w w s s
8
w w w w w s s s
9
w w w w w w s s s
10
w w w w w s s s s

e
0
1
2
Modelagem e Simulao Discreta

iat st at bs es nq w s
1 2 1 1 3 0 0 2
1 4 2 3 7 1 1 4
3 2 5 7 9 1 2 2

r
2
5
4
78

3
4
5
6
7
8
9
10

2
1
1
1
1
1
2
4

2
1
1
2
2
3
3
4

7
8
9
10
11
12
14
18

9
11
12
13
15
17
20
23

11
12
13
15
17
20
23
27

1
2
2
3
3
3
3
2

2
3
3
3
4
5
6
5

2
1
1
2
2
3
3
4

4
4
4
5
6
8
9
9

Na figura acima a linhas so eventos (e) e a colunas so unidades de


tempo (ut). Colunas brancas (vazias) a esquerda referem-se aos valores
que a tarefa demorou para chegar na Fila. O primeiro quadrado colorido da
coluna (verde ou laranja) refere-se ao valor de at; por exemplo at[0] = 3
ut e at[4] = 9 ut. O nmero de quadrados verdes na linha refere-se ao
tempo no servidor s; por exemplo s[0] = 2 ut e s[4] = 1 ut. Os quadrados
laranja referem-se ao tempo de espera na fila w; Por exemplo w[0] = 0 ut
e w[4] = 3 ut.
Quando no h quadrado laranja numa linha porque a tarefa
correspondente no espera na Fila. Por outro lado, o nmero de quadrados
laranjas numa linha igual quantidade de unidade de tempo que a
tarefa correspondente espera na Fila.
O valor de nq de um evento igual ao nmero de quadrados laranjas na
coluna 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 Simulao Discreta

79

3 SELEO DE DISTRIBUIES DE
PROBABILIDADE

A estrutura conceitual para a modelagem e anlise estatstica de um


sistema esboado na Figura 24. O ponto de partida de um problema o
mundo real e um conjunto correspondente de dados do problema, a
amostra. O segundo passo consiste em encontrar um modelo matemtico
estocstico ou probabilstico para os dados. Este modelo deve conter o
que se sabe sobre o mundo real. O modelo permite realizar clculos e
anlises que levam a concluses sobre a amostra. Finalmente, as
concluses sobre o modelo so convertidas para concluses sobre o
mundo real. Desta forma, a partir da amostra pode-se fazer afirmaes
sobre o mundo real fazendo-se uso de modelos.

Figura 24 - Modelagem e anlise matemtica (Kroese & Chan, 2014).


A Estatstica usa a teoria da probabilidade e outros ramos da matemtica
para estudar dados amostrais. Em particular, os dados so vistos como
aplicaes de variveis aleatrias cuja distribuio conjunta previamente
especificada. A partir da, a anlise matemtica atua puramente sobre o
modelo e seus parmetros (Kroese & Chan, 2014).
A noo de probabilidade a de um experimento aleatrio cujo resultado
no pode ser previamente determinado mas que pode ser analisado. O
objetivo da probabilidade entender o comportamento de experimentos
aleatrios atravs da anlise matemtica. Dado um modelo matemtico
para um experimento aleatrio, pode-se calcular as quantidades de
interesse, como probabilidades e valores esperados. Alm disso, esses
modelos matemticos podem ser implementados em computador, assim
torna-se possvel simular experimentos (Kroese & Chan, 2014).
Modelagem e Simulao Discreta

80

Para identificar uma distribuio de probabilidade que represente o


comportamento de uma varivel aleatria necessrio uma amostra e
mtodos estatsticos que proporcionem a ligao entre modelos
matemticos estocsticos e o mundo real.
Teste de aderncia so mtodos estatsticos que permitem ajustar uma
distribuio de probabilidades ao comportamento de uma varivel
aleatria. A Tabela 17 descreve as cinco etapas necessrias para se obter
uma
distribuio de
probabilidades capaz de representar o
comportamento uma varivel aleatria (Jain, 1991).
Tabela 17 - Etapas para a aplicao de testes de aderncia, adaptada de
Jain (1991).

1. Processo de
amostragem

1. a amostragem um conjunto de dados


medidos que represente o comportamento do
sistema
2. amostras
representativas
permitem
que
resultados obtidos por meio delas sejam
estendidos populao, isto , podem ser
generalizados
3. resultados obtidos atravs de amostras no
representativas do comportamento do sistema
no podem ser generalizados

2. Tratamento dos dados

4. valores extremos da amostra devem ser


identificados e eliminados
5. deve-se agrupar os valores amostrados em
classes
6. grficos de valores amostrados permitem
avaliao visual dos mesmos
7. grfico box-plot dos valores amostrados
complementam a avaliao visual dos mesmos

3. Identificao da
distribuio estatstica

8. uma ou mais distribuies de probabilidade que


se adequem aos dados amostrados devem ser
identificadas, grficos permitem faz-la de
modo rpido e com bastante preciso

4. Estimao dos
parmetros da
distribuio identificada

9. os parmetros da distribuio ou distribuies


de probabilidades identificadas devem ser
obtidos a partir dos dados amostrados

5. Testes de aderncia

10. deve-se testar o ajuste dos dados amostrados


distribuio ou distribuies de probabilidades
identificadas por meio de testes de aderncia

A simulao computacional de Sistemas de Fila requer duas amostras. A


primeira amostra se refere ao processo de chegada de tarefas na Fila do
sistema, os dados amostrados so intervalos de tempo entre chegadas de
tarefas. A segunda amostra diz respeito ao processamento das tarefas
pelo Servidor do sistema, os dados amostrados so tempos de servio.
Para cada uma destas amostras deve-se ajustar uma distribuio de
Modelagem e Simulao Discreta

81

probabilidade e ambas so utilizadas para representar o comportamento


do sistema.

3.1 INDEPENDNCIA DE OBSERVAES


Qualquer estado de um Processo de Markov independente dos seus
estados passados e, sendo assim, as amostras de um Processo de Markov
devem ser independentes.
A autocorrelao uma estatstica que informa o quanto o valor de uma
varivel aleatria capaz de influenciar seus vizinhos distncia k, k > 1.
Os valores que a autocorrelao podem assumir variam de -1 a 1, a
ausncia de correlao indicada por 0, ou seja, as observaes da
amostra so independentes.
Uma varivel aleatria Xi discreta, com mdia da populao = E(X) e
varincia 2 = E[(X-)2], tem autocorrelao (k) definida por:

(k )=

E[( X i)(X i +k )]
2
nk

1
n
(k )=
( X i )( X i+ k )=
2
nk
(nk ) i =1

3.1
nk

( X i)( X i+k)
i=1

3.2

( X i )

i=1

Exemplo 3.1: Calcule (1) e (2) dos dados referente a ciclos de leitura de 5 unidades de
memria: x = {37,0 54,2 55,1 28,1 24,0}.
n=5
Clculo da mdia amostral m: m = (37,0+54,2+55,1+28,1+24,0)/5 = 198,4/5 = 39,7
Clculo da varincia da amostra s 2: s2 = [(37,0-39,7)2+(54,2-39,7)2+(55,1-39,7)2+(28,139,7)2+(24,0-39,7)2]/(5-1) = 835,7/4 = 208,9
Clculo de (1) = [(37,0-39,7)x(54,2-39,7) + (54,2-39,7)x(55,1-39,7) + (55,139,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 esto pouco correlacionados.
Clculo de (2) = [(37,0-39,7)x(55,1-39,7) + (54,2-39,7)x(28,1-39,7) + (55,139,7)x(24,0-39,7)]/3/208,9 = (-451,3/3)/208,9 = -150,4/208,9 = -0,72.
Memria de clculo:
i xi

xi-m

(xi-m)x(xi+1-m)

Modelagem e Simulao Discreta

(xi-m)x(xi+2-m)

82

1 37,0
2 54,2
3 55,1
4 28,1
5 24,0
198,4
m39,7
s 14,5

37,0-39,7
54,2-39,7
55,1-39,7
28,1-39,7
24,0-39,7

(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)
15,7

=
=
=
=

-2,7
14,5
15,4
-11,6

(37,0-39,7)x(55,1-39,7) = -41,3
(54,2-39,7)x(28,1-39,7) = -168,1
(55,1-39,7)x(24,0-39,7) = -241,8
-451,3

Uma forma de avaliar visualmente a independncia dos dados de uma


amostra o grfico de disperso, que feito pelos pares ordenados
(Xi,Xi+k) em um plano cartesiano. Quando eles so independentes esto
dispersos aleatoriamente, caso contrrio esto prximos de uma reta.
Exemplo 3.2: Faa o grfico de disperso dos pares ordenados (x i,xi+1) em um plano
cartesiano para x = {37,0 54,2 55,1 28,1 24,0}.

Figura 25 - Grficos de disperso dos pontos (xi,xi+1) do Exemplo 3.2.

3.2 DISTRIBUIES DE PROBABILIDADE TEIS


As funes densidade de probabilidade (fdp) so inmeras e bem
diversificadas embora relacionadas. Leemis (2015) e Zwillinger & Kokoska
(2000) apresentam figuras ilustrando a relao entres as diversas fdp. A
Figura 26 ilustra o relacionamento entres funes densidade de
probabilidade, adaptado de Zwillinger & Kokoska (2000).

Modelagem e Simulao Discreta

83

Figura 26 - Relacionamento entres as funes densidade de probabilidade,


adaptado de Zwillinger & Kokoska (2000).
A Tabela 18 apresenta as funes densidade de probabilidade mais
relevantes para simulao.
Tabela 18 - Funes densidade de probabilidade mais relevantes com seus
parmetros, mdia e varincia (Forbes et al., 2011)
fdp
Beta
ok
Erlang-m

FDP f(x)

a1

Parmetros E(x)
b1

(1x)
B(a ,b)

, x [0,1]

m x m1 e x
, x0
(m1)!

Modelagem e Simulao Discreta

a>0
b>0
>0

a
a+b
m

V(x)

ab
(a+ b) ( a+b+ 1)
m
2
2

84

ok
Exponencial
ok
Gamma
ok
Normal
ok
Poisson
ok
Uniforme
ok

a x

ae

,x>0

1
2
a

1
a

a>0

x a1 e b
, x> 0
b a (a)

a>0
b>0

ab

ab2

(-,)
>0

>0

1
e
2

( x)
2
2

, x

e
, x0
x!
1
, x [a , b]
ba

a<b

a+b
2

a>0
b>0

a(

(ba)
12

Weibull

bx

ok

b 1

x
( )
a

ab

, x 0

a1 x
em que ( a)= x e dx e B (a , b)=
0

b+1
)
b

a2 [ (

b+2
b+1
)2 (
)]
b
b

(a)(b)
.
(a+b)

Em Processos de Markov os eventos passados no influem nos eventos


presentes, ou seja, para s e t > 0 ento P( X > s+t | X > s ) = P( X > t ),
usualmente denominados processos sem memria.
A distribuio Exponencial, f(x) = e -x, sem memria (Kroese & Chan,
2014).
Demonstrao:
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.
x

A funo densidade acumulada (FDA) F(x) = P(X x ) =

f ( x)dx

= 1-e-x

P(X > x ) = 1-P(X x ) = e-x

3.3 ESTIMAO DE PARMETROS


O mtodo de mxima verossimilhana, assim como o mtodo de mnimos
quadrados, permitem a estimao dos parmetros de modelos
matemticos. O grande obstculo para sua utilizao consiste na
frequente incapacidade de se obter uma soluo explcita para os
problemas em questo.

Modelagem e Simulao Discreta

85

3.3.1

MTODO DA MXIMA VEROSSIMILHANA

Uma amostra aleatria (X1, X2, ..., Xn) retirada de uma populao com uma
funo de densidade de probabilidade f(x,), em que um vetor de
parmetros, tem uma funo densidade de probabilidade conjunta, a
funo de verossimilhana L(x,), definida pelo produto das funes
densidade de cada uma das observaes.
n

L( x ,)= f ( x i , )

3.3

i=1

O problema consiste em obter o vetor que maximiza L(x,), o que feito


igualando a zero as derivadas parciais da funo de verossimilhana em
relao ao vetor
n

L( x ,)
=

f ( xi , )
i =1

3.4

=0

Na maioria dos casos recomendvel utilizar logaritmo natural da funo


de verossimilhana (lnL), pois maximizar o logaritmo natural de uma
funo , em geral mais simples, e produz os mesmos resultados da
maximizao da funo original.
n

ln L(x ,)
=

ln f (x i , )
i=1

3.5

=0

Exemplo 3.3: Seja determinar o parmetro da fdp Exponencial pelo mtodo da Mxima
Verossimilhana a partir de uma amostra aleatria (X1, X2, ..., Xn).

L( x ,)
=0

x
1
f ( x , )= e e ={}

Xi

1
L( x ,)= e
i=1

X1

X2

Xn

1
1 1 (X + X ++ X ) 1 X

L( x ,)= n (e +e ++ e )= n e
= ne

i=1

X
1 X
1

1
1
n
ln L(x ,)=ln( n e
)=ln( n )+ln (e
)=ln ( ) X i=n ln() X i

i=1
i=1
i

i=1

ln L(x ,)
=

i=1

1
[n ln() X i ]
i=1

Modelagem e Simulao Discreta

1
n

ln() n
1
n
=n X i = 2 X i =0
i=1
i =1

86

1
n
1
X i = = X i
2
n i=1
i=1

3.3.2

MTODO DOS MNIMOS QUADRADOS

O mtodo de estimao por mnimos quadrados (MMQ) permite estimar os


valores dos parmetros de uma funo a partir de dados observados que
minimiza o quadrado do somatrio dos erros entre valores observados e
estimados.
Uma amostra aleatria (fo1, fo2, ..., fon) com funo densidade de
probabilidade fe(x,), em que um vetor de m parmetros p k, k [1,m],
tem uma funo de densidade de probabilidade dada por fo i=fe(xi,)+i, i
[1,n].
O erro () entre valores observado e estimado dado pela Equao 3.6 e a
somatria do quadrado dos erros (E) expresso pela Equao 3.7.

e i=fo(x i )f ( x i , )
n

i=1

i=1

3.6

E= e2i = [ fo(x i )f (x i , )]2

3.7

Como E possui mnimo, a soluo do sistema de m equaes E/pk = 0


permite calcular o valor do vetor que minimiza E. A soluo geral dada
pela Equao 3.8.
n

2
i

E
i=1
= =

[fo( x i)f ( x i ,)] 2


i=1

= {[ fo( x i )f ( x i , )]
i=1

f (xi , )
}=0

3.8

Conhecidos os valores observados fo(xi) nos pontos xi, i [1,n], pode-se


substituir estes valores na Equao 3.8 e calcular .
Exemplo 3.4: Seja determinar o parmetro da fdp Exponencial pelo mtodo dos
Mnimos Quadrados a partir de uma amostra aleatria (X1, X2, ..., Xn).
x

1
f ( x , )= e e ={}

2i
i=1

=0
Xi

X
X
1 2
1 2
1
( X i e )
X
n ( X i e
)
n
( X i e )

i=1
=
=2 (X i e )
=

i=1
i=1
i

Modelagem e Simulao Discreta

87

X
X
X
n
X
X
X
1 1 Xi
1 1
=2 ( X i e )( 2 e 3 e )=2 ( X i e ) 2 e (1 i )=0

i=1
i=1
n

Xi

i=1

Xi

X
1
( X i e )(1 i )=0 no tem soluo analtica, o valor de por ser obtido

por mtodos numricos.

Exemplo 3.5: Seja determinar o parmetro p da fdp Poisson pelo mtodo dos Mnimos
Quadrados a partir de uma amostra aleatria (X1, X2, ..., Xn).
x

f (x , )=

e
, ={}
x!

2i
i=1

=0
n

X i 2

i=1

Xi 2

Xi

e
e
e
)
)
(X i
)
n ( X i
n
X
Xi!
Xi !
Xi !
e
=
=2 (X i
)
=0

Xi !
i=1
i=1

( X i

Xi

( X i Xe!
i=1

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

por mtodos numricos.

3.4 ESTIMATIVA DOS PARMETROS DAS FDP


As estimativas dos parmetros de uma distribuio de probabilidade, por
vezes, no de obteno imediata. Os parmetros das distribuies
Exponencial, Normal e Poisson, dentre aquelas listadas na Tabela 18, so
calculados a partir da mdia e desvio padro da amostra.
x

fdp

Exponencial
bx

f ( x)=be

com

pode

ser

definida

como

parmetros a=E[ x ] e b=

1
f (x)= e a ou
a

1
,
E [x]

respectivamente,

Tabela 19.
Tabela 19 - Definies da fdp Exponencial e seus parmetros
fdp

Modelagem e Simulao Discreta

como

parmetro

88

1
x
n i
1
n
b=
=
E [x ] x i

1
f (x)= e a
a

a=E[ x ]=

f (x)=bebx

O clculo dos parmetros das fdp Beta, Gamma e Weibull so ilustrados


abaixo.

3.4.1

ESTIMATIVA DOS PARMETROS DA FDP BETA

Segundo Leite e Virgens Filho (2011), os parmetros p e q da distribuio


1 ( p+q) xa p 1
xa q 1
Beta f ( x)=
, para X = { x1, x2, ..., xn},
(
) (1
)
ba ( p) (q) ba
ba
so estimados pelos procedimentos e equaes:
1. calcular V ={ v1, v2, ..., vn } sendo

v i=

x ia
em que a = min{X} e b = max{X}
ba

2. calcular
3. calcular
4. calcular
5. calcular

1
m 1= v i
n i=1
n
1
m2= v 2i
n i=1
m m 2
p=m1 1
2
m2m 1
1m1
q= p
m1

Desta forma, a distribuio Beta adimensionalizada para o intervalo [0,1], resultando na


p1

nova funo

f (v )=

q1

( p+ q) p 1
v (1v )
v (1v )q1=
( p)(q)
B ( p , q)

de parmetros p e q.

Os clculos dos testes CQ e KS devem utilizar o vetor V.


Exemplo 3.6: Calcular os parmetros da fdp Beta para a amostra X: { 6,91 1,61 4,99 9,11
9,03 9,71 0,05 5,98 5,20 9,83 }
Os dados sero 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,83
vi 0,000 0,159 0,503 0,524 0,603 0,698 0,914 0,922 0,983 0,995 0,630
vi2 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 parmetros da fdb Beta so p = 0,736 e q = 0,433.

Modelagem e Simulao Discreta

89

3.4.2

ESTIMATIVA DOS PARMETROS DA FDP GAMMA

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


a1

dos parmetros da distribuio Gamma f ( x)=

x
b

x e
so feitas pelas
ba ( a)

equaes (Thom, 1958; Catalunha et al., 2012):

1+ 1+
a=

4A
3

4A

n
n
xm
1
1
, b=
, A=ln (x m ) ln ( x i) e x m= x i .
n i=1
n i=1
a

Exemplo 3.7: Calcular os parmetros da fdp Gamma para a amostra X: { 6,91 1,61 4,99
9,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,242
ln(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
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 parmetros da fdb Gamma so a =1,17 e b = 5,34.

3.4.3
ESTIMATIVA DOS PARMETROS DA FDP
WEIBULL
Segundo Hirata(2004), a estimativa dos parmetros da distribuio de
b

Weibull f (x)=

bx

b1

x
( )
a

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


a
so feitas pelas equaes:
s 1,086
e
)
m

em que m e s so a mdia aritmtica e o desvio


1
(1+ )
b
padro de X, respectivamente.
b=(

a=

Exemplo 3.8: Calcular os parmetros da fdp Weibull para a amostra X: { 6,91 1,61 4,99
9,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
s
xi 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,397
b = (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

Modelagem e Simulao Discreta

90

Logo os parmetros da fdb Weibull so a = 7,038 e b = 1,936.

3.5 IDENTIFICAO DA DISTRIBUIO


ESTATSTICA
Para fins de simulao necessrio identificar a distribuio de
probabilidade Fe que melhor represente o comportamento do sistema.
Para quantificar o grau de associao de uma amostra de variveis
aleatrias X = (X1, X2, ..., Xn) distribuio Fe utilizado testes de
aderncia.
Testes de aderncia fazem uso do teste de hiptese de ajuste
distribuio:

Hiptese H0: X so observaes da distribuio Fe


Hiptese Ha: X no so observaes da distribuio Fe

Etapas de um teste de hipteses2:


1.
2.
3.
4.
5.
6.
7.

formular o modelo estatstico para os dados


definir as hipteses
definir uma margem de erro () em geral, adota-se = 5%
selecionar a estatstica de teste
calcular a estatstica de teste
calcular a probabilidade limite (p-value)
decidir o teste: aceitar ou rejeitar H0 a partir do p-value

Vantagens:

uma forma automtica de identificar diferenas grosseiras entre distribuies


terica e observada, diferenas no provocadas pela flutuao dos dados
no depende do julgamento do avaliador

Desvantagens:

quando se tem poucos dados, o teste pouco sensvel (deixa de perceber


diferenas, aceitando distribuies com ajuste ruim)
quando se tem muitos dados, as chances de se rejeitar todas as distribuies
tericas aumentam
o teste de hiptese permite fixar a confiana 1- em rejeitar uma distribuio, mas
nada afirma quanto a confiana em aceit-la

Dentre as principais estatsticas de teste de aderncia, destacam-se o de


Chi-Quadrado e o de Kolmogorov-Smirnov.

2Veja no apndice notas sobre teste de hipteses.


Modelagem e Simulao Discreta

91

3.5.1

TESTE CHI-QUADRADO (CQ)

O teste CQ usado para testar se uma distribuio de frequncia


observada se ajusta a uma distribuio especfica, como a normal,
exponencial ou outra qualquer. Ou seja, este teste permite determinar se
dados observados atendem a uma determinada distribuio de
probabilidade de p parmetros. Sua aplicao consiste em:

preparar um histograma com k classes para a obteno da frequncia de


ocorrncia observada Oi em cada intervalo i = 1, ..., k
determinar a frequncia de ocorrncias esperadas E i para cada intervalo i obtida a
partir da distribuio que est sendo testada

(O iEi )2
calcular a estatstica D=
que tem distribuio 2 com k-1-p graus
Ei
i=1
k

de liberdade
se D < 2(1-;k-1-p) no se pode rejeitar a hiptese H0 ao nvel de significncia ,
caso contrrio rejeita-se a hiptese H0.

A distribuio 2 permite obter o valor de 2(1-,gl) com significncia e gl


graus de liberdade.
O teste CQ:

funciona melhor se os intervalos do histograma so escolhidos de tal forma que os


valores de Ei sejam iguais
uma soluo aproximada agrupar um intervalo com Ei pequeno com algum
intervalo vizinho
no caso da distribuio uniforme, basta utilizar um histograma com intervalos de
mesmo tamanho

A probabilidade limite do teste CQ o termo tcnico p-value = 2(1-;k-1p). Na Figura 27 a regio hachurada em vermelho indica a probabilidade
de se rejeitar a hiptese H 0 ao nvel de significncia , isto , P(D pvalue). Em cinza, a regio de probabilidade em que no se pode rejeitar
a hiptese H0 ao nvel de significncia , ou seja, P(D < p-value).

Figura 27 - Regies de probabilidade de aceitao (cinza) ou rejeio


(vermelho) da hiptese H0 ao nvel de significncia .
Passo a passo do teste CQ:
1. Dada uma amostra

n
X ={x i }i=1

Modelagem e Simulao Discreta

92

2. Classificar os dados da amostra X em k classes, Oi, i [1,k]


3. Calcula-se os parmetros da amostra
7. Calcula-se pi, i [1,k], a partir da fdp desejada (pode requer integrao numrica)
8. Calcula-se Ei, i [1,k]
9. Calcula-se D
10. Obtm-se o valor de p-value a partir do Anexo e decide-se o teste

A frequncia da classe i (fi), pode ser calculada pelo produto do nmero


de observaes (n = ni) pela probabilidade de ocorrncia de cada classe
(fi = n pi), i [1,k]. Para calcular o valor de pi basta integrar a fdp
desejada considerando os limites da classe.

Exemplo 3.9: Deseja-se verificar se o nmero de falhas (NF) de um sistema muda


conforme o dia da semana. O nmero de falhas (NF) observadas para cada dia de uma
semana escolhida aleatoriamente foram:
Dia da Semana NF Observadas (Oi)
segunda-feira
35
tera-feira
20
quarta-feira
30
quinta-feira
15
sexta-feira
10
sabado
10
domingo
20
Hipteses a serem testadas:
H0: o nmero de falhas no muda conforme o dia da semana
Ha: pelo menos um dos dias da semana tem nmero de falhas diferente dos demais
Se pi representa a probabilidade de ocorrncia 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
20
tera-feira
20
20
quarta-feira
30
20
quinta-feira
15
20
sexta-feira
10
20
sbado
10
20
domingo
20
20
Clculo de D = (35-20)2/20 +(20-20)2/20 + ... + (20-20)2/20 = 27,5
Regra de deciso: se, para fixado obtemos D > 2(1-;gl), rejeita-se a hiptese H 0,
caso contrrio aceita-se a hiptese H0.
No caso da distribuio uniforme entre 0 e 1 nenhum parmetro precisa ser estimado, p
=0
Da tabela do Anexo: 2(0,95;6) = 12,59.
Modelagem e Simulao Discreta

93

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 nmero de falhas diferente
dos demais.
Concluso: Pelo menos um dos valores medidos do tempo entre falhas do sistema difere
dos demais segundo o Teste de CQ com 95% de confiana.

1.1.1.

TESTE DE KOMOLGOROV-SMIRNOV (KS)

O teste de KS permite determinar se dados observados atendem a uma


determinada distribuio de probabilidade e independe do nmero de
parmetros da mesma. Dadas uma amostra aleatria X = (X1, X2, ..., Xn) e
as funes densidade de probabilidade fo(observada) e fe(esperada,
terica). A estatstica de Kolmogorov-Smirnov (Dn) baseada na maior
diferena entre os valores das funes distribuio de probabilidade
acumulada Fo e Fe, em que a funo distribuio de probabilidade
acumulada Fo(xi) o percentual de observaes com valor menor ou igual
a xi. Se Dn > KS(1-;n) rejeita-se a hiptese H0 ao nvel de significncia .
A estatstica Dn = max{ D+; D- }
em que: D+= sup| Fo(xi)-Fe(xi) | e D-= sup| Fo(xi)-Fe(xi-1) |
Hipteses:

H0: Fo(x) = Fe(x) para todo valor de x


Ha: Fo(x) Fe(x) para, pelo menos, um valor de x

Estatstica de teste: Dn
Regra de deciso: Rejeita H0 se a estatstica de teste Dn maior do que
o quantil 1- do teste de Kolmogorov-Sminorv, Dn > KS(n,1-), veja a
tabela no Anexo.
Passo a passo do teste de Kolmogorov-Sminorv:
n

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


2. Ordena-se os dados X em ordem crescente
3. Calcula-se S = xi,
4. Calcula-se fo(xi) = xi/S
5. Calcula-se Fo como os valores acumulados de fo
6. Calcula-se os parmetros da fdp com os dados da amostra
7. Calcula-se Fe(xi) a partir da FDA desejada (pode requer integrao numrica)
8. Calcula-se D+e D-, observe que o primeiro valor de D- o valor do primeiro Fo
9. Calcula-se Dn
10. Obtm-se o valor KS(1-;n) a partir do Anexo e decide-se o teste

Exemplo 3.10: Deseja-se verificar a normalidade dos dados abaixo referentes a medio

Modelagem e Simulao Discreta

94

do 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 = x i, calcula-se fo(xi) = xi/S. Fo so os valores
acumulados de fo. Calcula-se a mdia (m) e o desvio padro amostral (s) e utiliza-os para
calcular Fe(xi) com a FDA Normal N(m,s), requer integrao numrica. Calcula-se D +e D-,
observe que o primeiro valor de D- o valor do primeiro Fo.
i
x
fo
Fo
Fe
D+
D1 1.42738 0,06917 0,06917 0,10847 0,03930 0,06917
2 1.52229 0,07377 0,14295 0,14667 0,00372 0,03448
3 1.69742 0,08226 0,22521 0,23849 0,01328 0,07854
4 1.90642 0,09239 0,31760 0,38008 0,06248 0,07911
5 1.98492 0,09619 0,41379 0,43933 0,02553 0,03371
6 1.99568 0,09672 0,51051 0,44759 0,06292 0,07118
7 2.10288 0,10191 0,61242 0,53056 0,08186 0,16483
8 2.22488 0,10782 0,72024 0,62321 0,09704 0,18969
9 2.61826 0,12689 0,84713 0,85945 0,01231 0,22393
10 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.
Concluso: Os valores medidos do tempo entre falhas do sistema esto distribudos
conforme a distribuio normal segundo o Teste de KS com 95% de confiana.

Exemplo 3.11: Deseja-se verificar se o nmero de falhas de um sistema muda conforme o


dia da semana. O nmero de falhas (NF) observadas para cada dia de uma semana
escolhida aleatoriamente foram:
Dia da Semana Oi
Ei
fo(x) fe(x) Fo(x) Fe(x) D+
Dsegunda-feira 35 20
0,250 0,143 0,250 0,143 0,107 0,250
tera-feira
20 20
0,143 0,143 0,393 0,286 0,107 0,250
quarta-feira
30 20
0,214 0,143 0,607 0,429 0,178 0,321
quinta-feira
15 20
0,107 0,143 0,714 0,571 0,142 0,285
sexta-feira
10 20
0,071 0,143 0,786 0,714 0,070 0,213
sabado
10 20
0,071 0,143 0,857 0,857 0,002 0,141
domingo
20 20
0,143 0,143 1,000 1,000 0,002 0,141
Soma
140 140
Supremo
0,178 0,321
n=7
= 5%
1- = 95%
D+ = 0,178
D- = 0,312
KS(0,95;7) = 0,483
Modelagem e Simulao Discreta

95

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


Aceita-se H0: o nmero de falhas no muda conforme o dia da semana.
Concluso: Os valores medidos do nmero de falhas no muda conforme o dia da
semana segundo o Teste de KS com 95% de confiana.

3.5.2

COMPARAO ENTRE OS TESTES CQ E KS

o teste CQ mais apropriado para distribuies discretas e amostras grandes


o teste KS foi projetado para distribuies contnuas e amostras pequenas
o teste KS compara as distribuies acumuladas (terica e observada), enquanto o
teste CQ compara as densidades de probabilidades
o teste CQ faz agrupamento de observaes
o teste KS no faz agrupamento de observaes, 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 mtodo no define regras para quantific-los
o teste CQ aproximado
o teste KS exato

1.1.2.

TESTES CQ E KS PARA FDP BETA

Os testes de CQ e KS para aderncia de amostras funo Beta devem


ser feitos com os dados adimensionalizados para o intervalo [0,1].

3.6 MODELOS PARA PROCESSOS DE CHEGADA


O processo de chegadas de clientes numa fila , em geral, estocstico.
Para estud-lo necessrio identificar a distribuio de probabilidade do
tempo entre chegadas que, em geral, exponencial.
Processos de chegada so ditos estacionrios quando a distribuio de
probabilidade que o descreve no varia com o tempo (independente do
tempo), caso contrrio so ditos processos no estacionrios. Quando os
tempos entre chegadas so identicamente distribudos, a taxa de chegada
igual com mdia 1/.
A distribuio de Poisson usada para encontrar a probabilidade de
ocorrncia de eventos por unidade de intervalo. So condies para sua
aplicao:

deve existir apenas dois resultados mutuamente exclusivos {ocorre, no ocorre}


os eventos devem ser independentes

Modelagem e Simulao Discreta

96

o nmero mdio de ocorrncias por unidade de intervalo deve permanecer


constante

A distribuio de Poisson, Poi(), apropriada para modelar eventos


discretos independentes e com taxa de ocorrncia constante.
Um exemplo clssico a representao do nmero de chegadas em
Sistemas de Filas. Este nmero tem uma distribuio de Poisson se a taxa
mdia de chegada no variar ao longo do tempo e se os tempos entre
chegadas so exponencialmente distribudos.
Na prtica, as taxas de chegada podem variar de acordo com a hora do
dia ou do ano, mas um modelo de Poisson deve ser usado para perodos
que so razoavelmente homogneos. Nesta distribuio a mdia e a
varincia so iguais e podem ser estimados pela observao das
caractersticas da amostra.
A distribuio de Poisson de grande importncia para a Teoria de Filas e
para a rea de Confiabilidade. Ela permite estudar um grande nmero de
fenmenos observveis como, por exemplo, a chegada de tarefas em filas,
falhas de sistemas, requisio de tarefas em servidores, falhas e, de modo
geral, eventos que ocorrem por unidade de rea ou de tempo.
Quando a taxa no varia com o tempo, a probabilidade de que haja a
( T )k e T
ocorrncia de k eventos no intervalo (0,T] dada por f (k , )=
.
k!
Uma generalizao importante desse tipo de processo quando se
considera que varia no tempo, (t). Nesse caso, tem-se um Processo
Poisson no-estacionrio e o nmero de chegadas m(T) estimado pela
T

integrao de (t) para t variando de 0 a T, m(T )= ( t) dt .


0

3.7 GERANDO PROCESSOS DE CHEGADA


Um Processo de Poisson com parmetro
chegadas tem distribuio exponencial do
instante no qual a i-sima tarefa chega, o
chega, ti+1, dada por ti+1 = ti+Xi sendo Xi
utilizada nos softwares deste livro.

aquele cujo intervalos entre


mesmo parmetro . Seja t i o
instante que a prxima tarefa
~ Exp(). Esta abordagem

Uma outra abordagem para gerar N chegadas de Poisson durante um dado


intervalo de tempo de durao T, usar o fato que estas N chegadas so
uniformemente distribudas ao longo deste intervalo. Para gerar chegadas
de Poisson no intervalo [0,T] faz-se:

Modelagem e Simulao Discreta

97

1. gerar N nmeros aleatrios (chegadas) de acordo com a distribuio de Poisson


com parmetro T
2. gerar N nmeros aleatrios distribudos uniformemente correspondentes aos
instantes t1, ..., tN, no intervalo [0,T]
3. ordenar os N instantes em ordem cronolgica: t1 < ... < tN

3.8 TESTANDO HOMOGENEIDADE DE AMOSTRAS


Amostras de dados de um mesmo processo medidos em diferentes
perodos podem apresentar diferenas estatsticas. Por exemplo, a
quantidade de servios que chegam em um sistema pode depender da
hora do dia.
O mtodo de Kruskal-Wallis um teste no paramtrico que pode ser
usado para determinar se trs ou mais amostras independentes foram
selecionadas de populaes que possuem a mesma distribuio.
As hipteses nula e alternativa para o teste de Kruskal-Wallis so as
seguintes:

H0: no h diferena na funo distribuio de probabilidade das amostras


Ha: h diferena na funo distribuio de probabilidade das amostras

Segundo Spiegel et al. (2013), as duas condies para se usar o teste de


Kruskal-Wallis so que cada amostra deve ser selecionada aleatoriamente
e que o tamanho de cada amostra deve ser no mnimo 5. Se essas
condies so alcanadas, a distribuio de amostragem para o teste
Kruskal-Wallis aproximada por uma distribuio 2 com graus de
liberdade k-1, onde k o nmero de amostras. Seja x ij a j-sima
observao da amostra i, a estatstica de teste do teste de Kruskal-Wallis
calculada pela equao:
2

k
Ri
12
T=
3(n+1)

n(n+1) i=1 n i
k

ni

i=1

j=1

3.9

em que n= ni , Ri= R ( x ij ) , ni o nmero de observaes da i-sima


amostra, R(xij) o rank da observao ij sendo i [1,k] e j [1,ni].
O teste de Kruskal-Wallis consiste em combinar e classificar a informao
da amostra, as somas dos ranks de cada amostra so calculadas e usadas
para calcular a estatstica T, que uma aproximao das varincias das
somas dos ranks. Se as amostras so selecionadas de populaes que
possuem a mesma distribuio, as somas dos ranks sero

Modelagem e Simulao Discreta

98

aproximadamente iguais e, se T < 2(1-;k1) H0 no pode ser rejeitada


ao nvel de confiana 1-.

Modelagem e Simulao Discreta

99

Exemplo 3.12: Verifique se as amostras A, B e C, referentes aos tempos de respostas de


um circuito integrado, possuem a mesma distribuio de probabilidade para = 5%.
A
B
C
6,5 3,4 2,6
7,3 4,1 6,2
8,5 5,1 5,1
9,9 5,6 5,8
1,8 6,0 8,8
9,5 8,3 9,2
6,9 9,4 7,3
9,8 6,4
5,5
Soluo: O clculo do Rank pode ser feito por interpolao linear:
x1
1
xx n Rank n
xx n
x
Rank
=
Rank=(1n)
+n
x 1x n
x1x n
x 1x n
xn
n
Para n = 24, x1= 1,8 e xn= 9,9 tem-se os valores de Rank:
i,j A,B,C Rank
1 1,8
1
2 2,6
3,3
3 3,4
5,5
4 4,1
7,5
5 5,1
10,4
6 5,1
10,4
7 5,5
11,5
8 5,6
11,8
9 5,8
12,4
10 6
12,9
11 6,2
13,5
12 6,4
14,1
13 6,5
14,3
14 6,9
15,5
15 7,3
16,6
16 7,3
16,6
17 8,3
19,5
18 8,5
20
19 8,8
20,9
20 9,2
22
21 9,4
22,6
22 9,5
22,9
23 9,8
23,7
24 9,9
24
j
1
2
3
4
5
6
7
8
9

n
Modelagem e Simulao Discreta

A
6,5
7,3
8,5
9,9
1,8
9,5
6,9
9,8
5,5

A
9

ARank
14,3
16,6
20,0
24,0
1,0
22,9
15,5
23,7
11,5
149,5
B
8

B
3,4
4,1
5,1
5,6
6
8,3
9,4
6,4

BRank
3,5
7,5
10,4
11,8
12,9
19,3
22,6
14,1
102,1
C
7

C
2,6
6,2
5,1
5,8
8,8
9,2
7,3

CRank
3,3
13,5
10,4
12,4
20,9
22,9
16,6
100,0

24
100

R
R2/n

149,5
102,1
100
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 hiptese de que as amostras
possuem a mesma distribuio de probabilidade com 95% de confiana.
Concluso: as amostras possuem a mesma distribuio de probabilidade com 95% de
confiana segundo o teste de Kruskal-Wallis.

3.9 QUESTES
1. Quais as propriedades matemticas de uma fdp?
2. Qual a importncia das fdp na simulao?
3. Que cuidados devem ser tomados ao usar fdp em simulao?
4. Compare as distribuies de probabilidades apresentadas no texto.
5. Quando usar e quando no usar as distribuies de probabilidades apresentadas no
texto.
6. Que condies devem ser seguidas ao aplicar distribuies de probabilidade?
7. Relacione os parmetros de fdp com os parmetros de modelos de simulao. Faa um
estude caso.
8. Qual o significado matemtico de E(x) e V(x). Como eles se relacionam com os
parmetros da fdp? Como eles so calculados?
9. Qual o significado de autocorrelao? Qual seu uso?
10. Qual o significado estatstico das hipteses H0 e Ha?
11. Qual o significado grfico das hipteses H0 e Ha?
12. Qual o significado matemtico das hipteses H0 e Ha?
13. Quando se deve usar o teste CQ? Qual o procedimento para sua aplicao?
14. Quando se deve usar o teste KS? Qual o procedimento para sua aplicao?
15. O que nvel de significncia? Qual sua importncia prtica? Qual seu significado
grfico?
16. Relacione matematicamente o nvel de significncia com a hiptese H 0?
17. Relacione graficamente o nvel de significncia com hiptese H 0?
18. Compare os testes CQ e KS.
19. Dado o conjunto de valores {a i} estabelea os passos necessrios para verificar se
estes dados se ajustam a uma fdp qualquer utilizando o teste KS.
20. Dado o conjunto de valores {a i} estabelea os passos necessrios para verificar se
estes dados se ajustam a uma fdp qualquer utilizando o teste CQ.
21. Qual o significado matemtico de D no teste CQ?
22. Qual o significado estatstico de D no teste CQ?
23. Qual o significado grfico de D no teste CQ?
24. Qual a relao entre D, teste CQ, e gl?
25. Como se relacionam processo de chegada, filas, estatstica, amostragem e
simulao?
26. Porque necessrio organizar dados em classes? Qual sua importncia estatstica?
Qual sua explicao matemtica?
27. Discuta as aplicaes do teste de Kruskal-Wallis.
28. Proponha outras maneiras de calcular o Rank do teste de Kruskal-Wallis.

Modelagem e Simulao Discreta

101

3.10

EXERCCIOS

1. Avaliar a normalidade dos dados referente aos ciclos de leitura de 15 unidades de


memria 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,5
19,5 31,6 14 79,6}
2. Seja avaliar a normalidade dos dados referente a medio de 10 execues de um
benchmark utilizando o teste KS: X = {1,9064 2,1029 1,5223 2,6183 1,4274 2,2249
1,6974 3,1544 1,9849 1,9957}
3. Obtenha os parmetros das fdp estudadas pelos mtodos da mxima verossimilhana
e mnimos quadrados.
4. Supondo a mdia de chegada de e-mail dirios seja 100, qual a probabilidade de
recebermos pelo menos 50 e-mail num dia qualquer?
5. Se pacotes numa rede chegam com taxa = 4 pps, qual a probabilidade de chegar 8
pacotes no prximo segundo?
6. A experincia indica que, em mdia, 20 clientes por hora param numa agncia para
acessar 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 mdia, e o desvio padro para esta distribuio?
7. Encontre a melhor fdp que se ajusta aos dados dos exerccios 1 e 2.
8. Verifique se as amostras A, B e C so homogneas, ou seja, possuem a mesma
distribuio de probabilidade.
A
70,2
92,8
18,6
96,1
53,4
2,0
15,9
35,1
96,4
40,9
97,7
49,8
62,3
41,4
4,2

B
76,5
101,2
20,3
104,8
58,2
2,1
17,4
38,3
105,1
44,6
106,5
54,3

C
66,7
88,2
17,7
91,3
50,8
1,9
15,1
33,4
91,6

9. Foram medidos valores de iat e st de um sistema que utiliza um Xbee Pro, abaixo
relacionados.
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
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
a) Elimine os dados com valores extremos das sries iat e st.
b) Verifique se as sries iat e st so representativas da populao.
c) Verifique se as sries iat e st so independentes.
d) Faa os grficos de barra das sries iat e st e interprete-os.
e) Faa os grficos box-plot das sries iat e st e interprete-os.
f) Calcule os valores da mdia e desvio padro das sries iat e st.
g) Ajuste uma distribuio de probabilidade para a srie iat por meio de testes de
aderncia.
h) Ajuste uma distribuio de probabilidade para a srie st por meio de testes de
aderncia.

Modelagem e Simulao Discreta

102

10. Faa os testes de CQ e de KS para os dados de iat e st da srie de dados abaixo


considerando as fdp Beta, Weibull, Gamma, Poisson e Exponencial.
iat(tps): 24 28 20 24 28 15 24 24 23 16 28 28 32 23 22 21 19 27 28 23 36 24
st(tps): 19 14 18 9 29 9 25 17 30 19 12 15 9 22 22 31 19 12 12 16 30 2
11. Faa os testes de CQ e de KS para os dados das sries de dados abaixo considerando
as 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 16

b) 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 Simulao Discreta

103

4 GERAO DE NMEROS ALEATRIOS

Desde que, em 1859, Darwin e Maxwell introduziram o acaso como


elemento explicativo nas cincias, esse agente imprevisvel revelou-se
atuante em todos os domnios da Natureza, da vida e invadiu as cincias.
Uma maneira de usar esta propriedade dos sistemas fazer uso de
nmeros aleatrios.
A abordagem preferida para a gerao de nmeros aleatrios em
computadores envolve a utilizao de frmulas de recorrncia que podem
ser implementadas de forma simples e rpida.
Em estatstica, um nmero aleatrio um nmero que pertence a uma
srie numrica e que no pode ser previsto a partir dos seus membros
anteriores (Jain,1991).
Sries numricas que podem ser previstas conhecendo-se o nmero inicial
so denominadas pseudo-aleatrias podem ser geradas por algoritmos
(GNA - Gerador de Nmero Aleatrio).
As propriedades dos elementos de uma srie de nmeros pseudoaleatrios, quer sejam bits ou nmeros, so:

uniformemente distribudos
estatisticamente independente
no repetio para um comprimento desejado
reprodutvel
rpida obteno de modo a poupar recursos computacionais para as simulaes
em si

Algoritmos geram apenas nmeros pseudo-aleatrios.


O stio www.random.org trata deste assunto extensivamente.
A denominao nmero aleatrio neste texto refere-se, em geral, a
nmero pseudo-aleatrio.
Modelagem e Simulao Discreta

104

4.1 GERADORES CONGRUENTES LINEARES (GCL)


Geradores de nmeros pseudo-aleatrios uniforme esto incorporados em
muitas linguagens de programao e programas. Em geral, eles usam o
Gerador Congruente Linear (GCL) que produz uma sequncia de nmeros
inteiros {0, ..., m-2}. O GCL dado pela relao recursiva dada pela
Equao 4.1.
x n+1=(a x n +c)mod m

4.1

em que a a constante multiplicadora, c o incremento e m o mdulo.


O valor inicial x0 denominado semente.
Embora o GCL possa ser obtido de forma recursiva, estes mesmos valores
tambm podem ser calculados de forma explcita por meio da Equao 4.2
(Hull & Dobell, 1962; Krishnan, 2006 pag 264; Severance, 2001 pag 85).
x n=(an x 0+ c

an 1
) mod m
a1

4.2

Isto demonstra a natureza determinista dos nmeros pseudoaleatrios


gerados por um GCL. E isto no uma desvantagem deste mtodo uma
vez que ele compatvel com o princpio da reprodutibilidade dos
experimentos cientficos. No entanto, seu uso requer a seleo adequada
da semente, que pode ser conseguido utilizando o valor da semente como
sendo igual ao momento atual como, por exemplo, a funo time(NULL) da
linguagem C que pode fornecer sementes obtidas a partir do nmero de
segundos desde 01/01/1970 00:00.
A existncia de ciclos comum nas sequncias da forma geral x n+1= f(xn).
Os parmetros a, c e m do GCL afetam a mdia, a varincia e a durao
do ciclo das sequncias (sequncia sem repetio). Para produzir sries de
nmeros aleatrios com perodo mximo, ciclo de tamanho igual a m,
deve-se selecionar os valores de a, c e m conforme estabelece o Teorema
de Hull-Dobell (Hull & Dobell, 1962).
Teorema de Hull-Dobell: O mtodo congruente linear tem perodo m-1
se, e somente se, as seguintes trs condies so vlidas (Hull & Dobell,
1962; Severance, 2001 pag 86):
1. c e m so primos entre si, mdc(c,m) = 1
2. (a-1) mltiplo de q, para todo fator primo q de m
3. se m mltiplo de 4 ento (a-1) mltiplo de 4

Modelagem e Simulao Discreta

105

Buscando produzir sries de nmeros aleatrios com perodo mximo,


pode-se ainda considerar Bandyopadhyay e Bhattacharya (2014) que
estabelece que os parmetros a, c e m podem ser relacionados nestes
casos:
1. se m = 2b e c 0 ento o comprimento mximo do ciclo ser igual a m para c e m
primos entre si e tambm a e m primos entre si com a = 1+4k, k inteiro.
2. se m = 2b e c = 0 ento o comprimento mximo do ciclo ser igual a 2 b-2 com a =
3+8k ou a = 5+8k, k inteiro.
3. se m um nmero primo e c = 0 ento o comprimento mximo do ciclo ser igual
a m-1 com ak-1 divisvel por m, onde k = m1.

Exemplo 4.1: A srie gerada a partir de m = 231-1, a = 75 e c = 0 tem um ciclo igual 2 31-1,
aproximadamente uma sequncia de 2,110 9 nmeros sem repetio, suficientemente
grande para simulaes dos sistemas mais simples.

A funo Un= xn/m a distribuio uniforme contnua correspondente


sequncia de nmeros pseudo-aleatrios, denominada U(0,1), U de
uniforme.

Exemplo 4.2: A sequncia xn = 6xn-1 + 5 mod 11 tem perodo igual a 10. Para x0 = 0, a
sequncia gerada { 0, 5, 2, 6, 8, 9, 4, 7, 3, 1 }. Dividindo estes valores por 11, obtm-se
U = { 0,0000 0,4545 0,1818 0,5455 0,7273 0,8182 0,3636 0,6364 0,2727 0,0909 }.
Uma observao importante sobre este exemplo que a funo x n determinstica. Dada
a semente, podemos predizer, com certeza, os nmeros da sequncia. No entanto, os
nmeros so aleatrios no sentido de que eles passariam por testes estatsticos para
aleatoriedade.
Exemplo 4.3: A sequncia xn = 6xn-1 + 5 mod 11 tem perodo igual a 10. Na Tabela 20
esto os nmeros aleatrios gerados por esta sequncia para vrios valores de x 0.
Tabela 20 - Nmeros aleatrios gerados a partir de x n = 6xn-1 + 5 mod 11 para x 0 = 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

Modelagem e Simulao Discreta

106

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 anlise dos valores gerados apresentados na
concluses:

Tabela 20 permitem as seguintes

as sequncias geradas tm os mesmos valores, so os nmeros de 0 a 9, o que


muda a ordem destes nmeros em cada sequncia gerada
a semente x0 determina a ordem da sequncia e m determina os valores gerados
o ciclo deste gerador igual a 10 e sua sequncia { x0, x1, x2, ..., x9 }
a partir de x10 a sequncia iniciada um novo ciclo
para x0 = 0, 1, 2, ..., 9, as sequncias no se repetem
para x0 = 10, ou seja, x0 = m-1, todos valores gerados so iguais a 10, ou seja, m1, uma sequncia de pouca utilidade
para x0 = m, m+1, ..., a sequncia gerada reiniciada
para x0 = 0, m, 2m, 3m, ..., as sequncias geradas so iguais
para x0 = 1, m+1, 2m+1, 3m+1, ..., as sequncias geradas so iguais
generalizando, x0 = k, m+k, 2m+k, 3m+k, ..., para k = 0, 1, 2, ..., m-2, geram as
mesmas sequcias
para x0 = 10, m+10, 2m+10, 3m+10, ..., as sequncias geradas so iguais e os
valores gerados so iguais a m-1, portanto so sequncias invlidas

Nota: denomina-se GCL misto se c = 0 e GCL multiplicativo se c 0.

4.2 GCL DE USO GERAL


Na Tabela 21 esto algumas linguagens de programao e seus GNA GCL.
Estes GCL possuem perodo mximo e igual a m.
Pode-se destacar nesta tabela o GCC, utilizado na linguagem de
programao C/C++ 32 b, ele um GCL misto com a recorrncia dada
pela frmula: xn+1 = (1103515245 xn+ 12345) mod 231, que capaz de
produzir uma sequncia de nmeros inteiros no conjunto { 0, 1, 2, 3, ...,
231-1 = 2147483647 2,1109}.
O GCL MMIX de 64 b com um ciclo de 1,8x10 19 e tambm o GCL Java de 48
b com um ciclo de 2,81014.
Tabela 21 - Geradores de nmeros aleatrios de uso geral
Fonte
Numerical Recipes
Borland C/C++
Modelagem e Simulao Discreta

m
231
231

a
1664525
22695477

c
1013904223
1
107

GCC
Borland Delphi, Pascal
Microsoft Visual C/C++
Microsoft Visual Basic
Apple CarbonLib
MMIX (Donald Knuth)
RANDU
VAX
Java
Forth

231
231
231
224
231-1
264
231
231
248
231-5

1103515245
134775813
214013
1140671485
16807
6364136223846793005
65539
69069
25214903917
232-333333333

12345
1
2531011
12820163
0
1442695040888963407
0
1
11
0

4.3 NMEROS ALEATRIOS EM GNU C


A linguagem C (GNU GCC e G++) possui duas funes e uma constante
para gerar nmeros aleatrios com seu GCL (Tabela 21), a saber:
Tabela 22 - As funes, a constante e as bibliotecas da linguagem C para
gerar nmeros aleatrios
Recurso
RAND_MAX
void srand(unsigned)
int rand(void)
stdlib.h, time.h

Descrio
constante inteira e igual 32767
atribui semente para o CGL, em geral srand(time(0))
retorna um nmero pseudoaleatrio com valor em [0, RAND_MAX]
bibliotecas da linguagem C

O Algoritmo 4.1 gera um nmero pseudoaleatrio com valor em (0,1)


tendo como semente time(0) que o nmero de segundos decorridos desde
01/01/1970 00:00:00 (tempo universal).

Algoritmo 4.1: Programa em C para gerar nmeros pseudoaleatrios com


valor em (0,1)
#include <stdlib.h>
#include <time.h>
double gna( void ){
return (rand()+1.0)/(RAND_MAX+2.0); // intervao (0,1)
}
int main( void ){
srand(time(0));
printf( " %f ", gna() );
return 0;
}

Modelagem e Simulao Discreta

108

Para gerar nmeros pseudoaleatrios no intervalo [0,1] deve ser usada a


Equao 4.3.
rand ()
[0,1]
RAND MAX

4.3

Para gerar nmeros pseudoaleatrios no intervalo (0,1) deve ser usada a


Equao 4.4.
rand ()+1
(0,1)
RAND MAX +2

4.4

Para gerar nmeros pseudoaleatrios no intervalo [a,b] deve ser usada a


Equao 4.5 sendo u [0,1].

a+(ba)u [a , b]

4.5

Para gerar nmeros pseudoaleatrios no intervalo (a,b) deve ser usada a


Equao 4.6 sendo v [0,1].
a+(ba)v (a ,b)

4.6

4.4 NMEROS ALEATRIOS EM GNU C++


A Linguagem ANSI C++11 implementou a biblioteca <random> e ampliou
consideravelmente o nmero de Geradores de Nmeros Aleatrios, a
saber (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
Shuffle order engine: knuth_b

Um exemplo de cdigo apresentado no Algoritmo 4.2 utilizando o


Gerador Mersenne Twister 64 b:
Algoritmo 4.2: Cdigo em C++ 11 utilizando o Gerador Mersenne Twister
64 b
#include
#include
#include
#include

<random>
<iostream>
<stdio.h>
<time.h>

Modelagem e Simulao Discreta

109

using namespace std;


double gna( double a, double b ){
static mt19937_64 eng(time(NULL));
static uniform_real_distribution<double> uniform_real(a,b);
return uniform_real(eng);
}
int main( void ){
for( int i = 0; i < 10; i++ )
cout << "Numero aleatorio:" << gna(0.0,1.0) << endl;
cout << endl;
for( int i = 0; i < 10; i++ )
printf("\nDistribuicao Uniforme: %21.18f", gna(0.0,1.0) );
return (0);
}

Outro exemplo de cdigo apresentado no Algoritmo 4.3 utilizando o


Gerador Mersenne Twister 32 b:

Algoritmo 4.3: Cdigo em C++ 11 utilizando o Gerador Mersenne Twister


32 b
#include <random>
#include <iostream>
int main( void ){
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1,6);
for( int n = 0; n < 100; ++n )
std::cout << dis(gen) << ' ';
}

4.5 COMPOSIO DE GERADORES


A combinao de geradores resulta numa sequncias de valores com
melhores propriedades estatsticas e com perodos mais longos em
comparao com aqueles gerados a partir de um nico gerador. Um
exemplo o gerador Zn apresentado abaixo.

A n=(a 0 A n1+a1 A n2)mod m a


B n=(b0 B n1+ b1 Bn2 )mod mb
Z n =( A n+ Bn ) mod m

Modelagem e Simulao Discreta

4.7

110

Exemplo 4.4: O gerador recursivo combinado LEcuyer's, referido como MRG32k3a,


combina dois geradores recursivos e tem perodo igual a 2 191 (3,11057), suficientemente
longo para a maioria das simulaes, talvez para todas elas (LEcuyer'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 sequncia desejada,
a1 = 0, a2 = 1403580, a3 = 810728, m1 = 232-209,
b1 = 527612, b2 = 0, b3 = 1370589 e m2 = 23222853

4.6 GERADORES TAUSWORTHE


Os geradores Tausworthe operam diretamente sobre bits. Uma sequncia
de dgitos binrios definida pela recorrncia b i = (c1bi-1 + c2bi-2 + +
cqbi-q) mod 2, onde c1, ..., cq so constantes binrias.
Neste caso, um ciclo definido como uma sequncia de valores binrios
que se repetem continuamente. Portanto, como os q bits anteriores so
utilizados, o perodo pode chegar a 2q - 1. De modo geral, os geradores
Tausworthe so 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 Matsumoto
e Takuji Nishimura. Seu ciclo muito longo, com perodo de 2 19937-1, com
sequncia iid. Seu cdigo em C est disponvel no arquivo mt19937.c
(Mersenne Twister, 2011). Este gerador j est disponvel em C++ na sua
biblioteca random.

4.8 CLASSE CLGNA


A classe clGNA escrita em Javascript est descrita no Algoritmo 4.4. Nesta
classe a semente (x0) obtida do tempo do navegador, dado em

Modelagem e Simulao Discreta

111

milissegundos desde 01/01/1970. Por exemplo, para a data 22/05/2015 s


11h20min a semente igual a 1400757600.
O valor de m adotado 231 mas pode-se adaptar a classe para outros
valores de m. A valor de x 0 corrigido se x0 > m e se x0 < 0. A funo
setX0 executada quando se instancia um objeto da classe. As funes
gna, gna1, gna2, ..., gna7, geram nmeros aleatrios no intervalo [0,1].
Algoritmo 4.4: Classe clGNA em Javascript para os GCLs da Tabela 21
function clGNA(){
var x0, x, m;
this.gna = function(){ // Javascript
return Math.random();
}
this.gna1 = function(){ //Numerical Recipes
x = (1664525*x+1013904223)%m;
return (x/m);
}
this.gna2 = function(){ // Borland C/C++
x = (22695477*x+1)%m;
return (x/m);
}
this.gna3 = function(){ //GCC
x = (1103515245*x+12345)%m;
return (x/m);
}
this.gna4 = function(){ //Borland Delphi, Pascal
x = (134775813*x+1)%m;
return (x/m);
}
this.gna5 = function(){ //Microsoft Visual C/C++
x = (214013*x+2531011)%m;
return (x/m);
}
this.gna6 = function(){ //RANDU
x = (65539*x)%m;
return (x/m);
}
this.gna7 = function(){ //VAX
x = (69069*x+1)%m;
return (x/m);
}
this.setX0 = function(){
x0 = (new Date()).getTime();
m = Math.pow(2,31)-1;
if( x0 < 0 ) x0 = -x0;
if( x0 > m ) x0 = x0 % m;
x = x0;
}
this.getX0 = function(){ return x0;}
this.getM = function(){ return m; }
this.setX0();
}

Modelagem e Simulao Discreta

112

4.9 TESTE DE GERADORES DE NMEROS


ALEATRIOS
uma boa prtica verificar estatisticamente os valores de um gerador de
nmeros pseudoaleatrio antes de us-lo. O comportamento estatstico de
um gerador de nmeros aleatrios pode ser influenciado pela sua
implementao em uma linguagem de programao bem como pelo
hardware utilizado. Existe uma grande variedade de testes para
sequncias de nmeros aleatrios, dentre eles destacam-se os seguintes
testes estatsticos:

Teste
Teste
Teste
Teste
Teste

de frequncia
de serial
de autocorrelao
runs
de chi-quadrado

Tambm existe muita controvrsia sobre quais so os melhores, se testes


tericos so mais definitivos que os empricos. Se a amostra utilizada em
um teste emprico for muito pequena, o resultado pode corresponder
apenas a um pequeno fragmento do ciclo. Por outro lado, um teste que
leva em conta um ciclo inteiro pode no ser compatvel com fragmentos
deste mesmo ciclo.
Nenhuma quantidade de testes pode determinar que um gerador o
melhor em todos os casos. Portanto, a recomendao que os testes
sejam consistentes com o uso que ser dado ao gerador. Se os nmeros
sero utilizados aos pares, por exemplo, deve-se examinar o
comportamento de pares e, neste caso, talvez com um teste serial seja o
mais apropriado.
Assim, deve-se escolher com cuidado o teste do gerador se a simulao
onerosa, requer alta preciso ou um componente crtico de um estudo.
Muitos testes estatsticos teis podem ser encontradas em NIST (2010). Os
stios a seguir possuem sutes para testar sequncias de nmeros
aleatrios:

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 EMPRICOS

Modelagem e Simulao Discreta

113

O grfico dos pares (xi,xi+1) permite avaliar a independncia dos dados


amostrais.
Quando
eles
so
independentes
esto
dispersos
aleatoriamente, caso contrrio esto prximos de uma reta, Figura 28.

Figura 28 - Grfico de disperso


independncia dos nmeros aleatrios.

para

avaliar

graficamente

Pode-se notar na Figura 28 a falta de tendncia na distribuio dos 500


pontos gerados, evidenciando graficamente a independncia dos dados
amostrados.
A Figura 28 foi gerada pelo wxMaxima 14.12.1, com Maxima 5.35.1. SBCL
1.2.1, para windows, com o cdigo do Algoritmo 4.5.
Algoritmo 4.5 - O grfico dos pares de nmeros aleatrios em wxMaxima.
semente: make_random_state(true)$
set_random_state(semente)$
i : 500$
plot2d([discrete,makelist([random(1.0),random(1.0)],k,1,i)],
[style,points], [point_type,diamond], [color,blue]
);

As Figura 29 e Figura 30 so grficos de barra e de setores,


respectivamente, para avaliar graficamente a independncia dos nmeros
aleatrios gerados.

Modelagem e Simulao Discreta

114

Figura 29 - Grficos de barra para avaliar a independncia de dados


amostrais.
A Figura 29 foi gerada pelo Algoritmo 4.6 escrito em Javascript, que faz
uso da biblioteca grfica flot (www.flotcharts.org), utilizando as bibliotecas
jquery.js e jquery.flot.js.
Algoritmo 4.6: Cdigo Javascript para gerar grficos de barra de nmeros
aleatrios
function GraficoBarra(){
var q = 10,
n = 0,
d = new Array(q),
sum = new Array(q),
gna = new clGNA();
for( var i = 0; i < q; i++ )
sum[i] = 0;
var timer = setInterval(function(){
$(function(){
for( var i = 0; i < q; i++ ){
var r = Math.floor( Math.random()*q );
sum[r] = sum[r]+1;
d[i] = d.push([i,sum[r]]);
n++;
}
$.plot($("#graph"),[{data:d,bars:{show:true,barWidth:0.3}}]);
});
},200);
}

Figura 30 - Grfico de setores para avaliar a independncia de dados


mostrais.
A Figura 30 foi gerada pelo Algoritmo 4.7 escrito em Javascript, que faz
uso da biblioteca grfica flot (www.flotcharts.org), utilizando as bibliotecas
jquery.js, jquery.flot.js e jquery.flot.pie.js.

Modelagem e Simulao Discreta

115

Algoritmo 4.7: Cdigo Javascript para gerar grficos de setores de


nmeros aleatrios
function GraficoSetores(){
var q = 10,
n = 0,
data = new Array(q),
sum = new Array(q);
for( var i = 0; i < q; i++ ) sum[i] = 0;
var timer = setInterval(function(){
$(function(){
for( var i = 0; i < q; i++ ){
var r = Math.floor(Math.random()*q );
sum[r] = sum[r]+1;
data[i] = { label: i, data: sum[i] };
n++;
}
$.plot($("#graph"), data, { series:{
pie:{ show: true, radius: 1,label:{ show: true, radius: 0.8,
formatter: function(label, series){
return '<div style="font-size:8pt;text-align: center; padding:
2px;color: white;">'
+ label + ' :: ' + Math.round(10*series.percent)/10 + '%</div>';
}, background: { opacity: 0.8 }}}},
legend:{show: false }});});
},200);
}

4.9.2

TESTES TERICOS

Pode-se utilizar a autocorrelao com deslocamento k, (k), para detectar


no-aleatoriedade. O Algoritmo 4.8, escrito em Javascript, calcula a
autocorrelao de N nmeros aleatrios gerados pelo navegador web,
funo Math.random(), com k = 1. No Firefox 38.0.1 a autocorrelao
obtida foi de 0,00047, indicando independncia dos nmeros gerados.
Algoritmo 4.8: Cdigo Javascript para calcular a autocorrelao de
nmeros aleatrios
function Autocorrelacao(){
var k = 1, m = 0.0, num = 0.0, s2 = 0.0, x = [], N = 1000000;
for( var n = 0; n < N; n++ ){
x[n] = Math.random();
m += x[n];
}
m /= N;
for( var n = 0; n < N; n++ )
s2 += (x[n]-m)*(x[n]-m);
s2 = s2/(N-1);
for( var n = 0; n < N-k; n++ )
num += (x[n]-m)*(x[n+k]-m);
return "autocorrelao = " + (num/s2/(N-k)).toFixed(5);
Modelagem e Simulao Discreta

116

Pode-se tambm utilizar os testes CQ e KS para avaliar se uma sequncia


de nmeros aleatrios gerada iid U(0,1). O Algoritmo 4.9, escrito em
Javascript, faz o teste CQ do GNA do browser. No Firefox 38.0.1 o resultado
foi "Ho no pode ser rejeitada, a distribuio uniforme (18.05025 <
36.19) com 99% de confiana".
Algoritmo 4.9: Cdigo Javascript para o Teste CQ de nmeros aleatrios
function CQ( m ){
var num = 0.0, den = 0.0, tstCQ,
CQ119 = 36.19; // CQ(1%,gl=19),
CLASSE = 20;
for( var n = 0; n < CLASSE; n++ ){
num += Math.pow( m[n] - 1.0/CLASSE, 2.0 );
den += 1.0/CLASSE;
}
if( num/den < CQ119 )
tstCQ = "Ho no pode ser rejeitada, a distribuio uniforme ("
+ (num/den).toFixed(5) + " < " + CQ119 + ") com 99% de confiana";
else tstCQ = "Ho rejeitada (" + (num/den).toFixed(5)
+ " >= " + CQ119 + ") com 99% de confiana";
return tstCQ;
}
function Calculate(){
var v = [], m = [], CLASSE = 20, NUMERO = 1000000;
for( var n = 0; n < CLASSE; n++ )
v[n] = m[n] = 0.0; // gera numeros aleatrios e classifica
for( var n = 0; n < NUMERO; n++ ){
var x = Math.random();
v[Math.floor(x*CLASSE)] += 1;
}
for( var n = 0; n < CLASSE; n++ )
m[n] = CLASSE*v[n]/NUMERO;
document.write( CQ(m) );
}

O custo computacional pode ser estimado pelo tempo mdio para se gerar
nmeros aleatrios de uma grande amostra. O Algoritmo 4.10, escrito em
Javascript, calcula o custo computacional do gerador do browser. No
Firefox 38.0.1 o custo unitrio do GNA medido foi de 2,4e-5 s ou 24 ms.
Algoritmo 4.10: Cdigo Javascript para calcular o custo computacional de
gerar nmeros aleatrios
function Custo(){
var N = 1000000, inicio = (new Date()).getTime(), fim;
for( var n = 0; n < N; n++ )
var a = Math.random();
fim = (new Date()).getTime();
return "custo unitrio = " + ((fim-inicio)/N).toExponential(4) + " s";
}
Modelagem e Simulao Discreta

117

4.10

QUESTES

1. Quais as diferenas entre nmero aleatrio e nmero pseudoaleatrio?


2. O que ciclo de um GNA? Qual sua importncia na simulao?
3. Como avaliar a qualidade de um GNA?
4. Discuta os GNAs propostos por LEcuyer. Faa uma pesquisa na Internet
sobre ele.
5. Qual o perodo do GCL com m = 231, a = 314159269 e b =
453806245?

4.11

EXERCCIOS

1. Gerar 10.000 nmeros usando a semente x 0 = 1 do gerador xn = 75xn-1 mod (2311). Classificar os nmeros em 10 clulas de tamanhos iguais e teste a
uniformidade pelo teste CQ com confiana de 95 e 99%.
2. Gerar 15 nmeros usando a semente x 0 = 1 no gerador xn = (5xn-1+1) mod 16.
Verifique se a sequncia passa no teste KS em um nvel de confiana de 95 e 99%.
3. Teste os geradores apresentados no texto em um nvel de confiana de 95% e
99%.
4. Trinta nmeros aleatrios foram gerados usando o GCL x n = 3xn-1 mod 31 com
semente de x0 = 15. Os nmeros 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. Verifique se eles so
iid.
5. Teste a frmula recursiva de Krishnan para os GCL's GCC, JAVA e MMIX, para as
sementes 0, 1, 31, 35 e 1000.
6. Refaa a Tabela 4.1 para xn+1 = (5xn+ 1) mod 24.
7. Qual o perodo dos GCL:
a) xn+1 = 5xn mod 25
b) xn+1 = 7xn mod 25
8. Considere os casos descritos por Bandyopadhyay e Bhattacharya para propor e
testar um gerador de nmeros aleatrios para um hardware com palavra de:
a)
b)
c)

8 bits
11 bits
14 bits

Modelagem e Simulao Discreta

118

5 GERAO DE VARIVEIS ALEATRIAS

As atividades de pesquisa e desenvolvimento em engenharia fazem uso


extensivo de simulao em computadores. Como grande parte dos
sistemas fsicos so afetados por fenmenos fsicos aleatrios,
importante que essas simulaes sejam capazes de reproduzi-los. Em
geral, essas simulaes utilizam variveis aleatrias e ger-los constitui
uma importante etapa destas atividades.
Uma varivel aleatria uma funo que mapeia os eventos definidos em
um espao amostral no conjunto de valores [0,1]. Diferentes variveis
aleatrias podem ser associadas a um experimento, o que permite
expressar tanto a sua complexidade quanto a variao do seu
comportamento atravs das mais diversas funes densidade de
probabilidade, tornando possvel sua simulao.
Segundo Gentle (2004), em estatstica computacional, a gerao de
variveis aleatrias normalmente feita em duas etapas:
1. a gerao de variveis aleatrias independentes e identicamente distribudos U
com a distribuio uniforme no intervalo (0,1)
2. aplicar transformaes a estas variveis aleatrias iid U(0,1) para derivar variveis
aleatrias de distribuies arbitrrias, Figura 31

Modelagem e Simulao Discreta

119

Figura 31 - Transformao de variveis aleatrias U(0,1) em distribuies


arbitrrias pelo mtodo da inversa.
Essas duas etapas so essencialmente independentes. O passo 1 obtido
por meio geradores de nmeros aleatrios (GNA) e o passo 2 resolvido
pelo mtodo da inversa, Figura 31.
Em princpio, a maneira mais simples de gerar variveis aleatria X com
funo de distribuio F a partir de U(0,1) variveis aleatrias U aplicar a
inversa F a U:
X = F-1(U) min{x | F(x) U}
Este o mtodo da inversa. fcil verificar que X tem a distribuio
desejada: P[ X x ] = P[ F-1(U) x ] = P[ U F(x) ] = F(x).
Ou seja, gerar variveis aleatrias Xi de uma funo densidade de
probabilidade f(x) resolver a equao Xi = F-1(ui) em que F(x) a funo
densidade de probabilidade acumulada e ui U(0,1).
Nem sempre x = F-1(u) tem soluo analtica, devendo ser considerado os
seguintes fatores para seleo do mtodo de gerao de variveis
aleatrias:

exatido - deve-se usar sempre mtodos exatos e utilizar mtodos baseados em


aproximao em ltimo caso
eficincia - dentre os diversos mtodos exatos deve-se sempre escolher o mais
eficiente
simplicidade - em geral prefervel utilizar mtodos simples

Modelagem e Simulao Discreta

120

5.1 MTODOS GERAIS


Os mtodos gerais de se gerar variveis aleatrias X de uma funo
densidade de probabilidade f(x) so apresentados a seguir.

5.1.1
MTODO DA INVERSA DA FUNO DENSIDADE
ACUMULADA
O Mtodo da Inversa da Funo Distribuio Acumulada (FDA) um dos
mtodos mais simples de gerao de variveis aleatrias de uma
distribuio F contnua e estritamente crescente. Nessas condies podese gerar uma varivel aleatria 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 frmula para a gerao de variveis aleatrias com distribuio
Weibull pelo mtodo da transformao inversa.
A fdp de uma varivel aleatria x com distribuio Weibull dada por
x

( )
( )
a
f ( x)= a x a1 e b e F( x)=1e b .
b

Resolvendo F(x) = u, obtm-se:


a

x
( )
b

u=1e

x
( )
b

1u=e

x
a
x
a
ln(1u)=( ) ln(1u)= x=b ln (1u)
b
b

Como (1-u) ~ U(0,1) e u ~ U(0,1), elas so intercambiveis, assim tem-se que:


a

x=b ln (1u) x=b ln (u)


a

Logo x=b ln(u) gera variveis aleatrias x com distribuio Weibull de parmetros
a e b usando nmeros aleatrios com distribuio uniforme.

Uma grande desvantagem deste mtodo o fato de seu uso estar limitado
a distribuies que possuem FDA inversvel como, por exemplo, as
distribuies Exponencial, Weibull, Gumbel ou Valores Extremos, Logstica
e Pareto. A Tabela 23 ilustra a aplicao deste mtodo.
Tabela 23 - Aplicaes do Mtodo da Inversa da FDA onde u ~ U(0,1),
Forbes et al. (2011)
Distribuio
Exponencial
ok
Valores Extremos
??
Geomtrica
??
Modelagem e Simulao Discreta

F(x)
1e

x
x

1e

aln(u)
xa
b

a+ bln[ln (u)]
x

1(1 p)

ln(u)

ln (1u)
121

Logstica
??
Pareto
??
Weibull
ok

5.1.2

1+e
1
1 a
x

(x)
b

1
b ln ( 1)
u
1
u
a

x
( )
a

1e

a ln(u)

MTODO DA CONVOLUO

Para vrias distribuies estatsticas importantes, a varivel aleatria


desejada X pode ser expressa como a soma de outras variveis aleatrias,
cuja gerao pode ser feita de maneira mais rpida do que gerao direta
de X. Supe-se que X seja a soma de m variveis aleatrias iid da forma X
= Y1 + Y2 + ... + Ym. Pode-se utilizar o seguinte algoritmo:
1. Gerar Y1, Y2 , ..., Ym, cuja distribuio de probabilidade Y
2. Retornar X = Y1 + Y2 + ... + Ym.

Este mtodo pode ser aplicado para todas as distribuies que so a soma
de variveis aleatrias.

5.1.3

MTODO DA COMPOSIO

A varivel aleatria desejada X pode ser expressa como uma combinao


linear X = c1Y1 + c2Y2 + ... + cnYn onde ci=1. Pode-se utilizar o seguinte
algoritmo:
1. Gerar as distribiuies de probabilidade Y1, Y2 , ..., Yn
2. Obter ou gerar c1, c2, ..., cn tal ci=1
3. Retornar Y = ciYi

5.1.4

MTODO DA ACEITAO REJEIO

Assumindo que uma distribuio F, contnua, possui fdp f(x), deve-se


encontrar uma distribuio alternativa G cuja fdp g(x) englobe o mais
perfeitamente possvel f(x), ou seja, que seja majoritria sobre ela, Figura
32, a funo G tambm chamada de funo envelope.

Modelagem e Simulao Discreta

122

Figura 32 - Ilustrao do Mtodo da Aceitao-Rejeio


Um dos possveis algoritmos que descrevem o Mtodo da Aceitao
Rejeio descrito a seguir:
1. Gerar u ~ U(0,1)
2. Gerar uma varivel Y com distribuio G independente de u
3. Se u f(Y)/[cg(Y)] ento ao faa x = Y (Y aceito), caso contrrio, volte ao passo 1 (Y
rejeitado)
4. x uma varivel aleatria com distribuio F

A Figura 32 ilustra as funes envolvidas no algoritmo apresentado acima.


Nela, pontos so gerados dentro do intervalo de g(x). Desses pontos,
aqueles que caem dentro dos limites de f(x) so aceitos, e os que caem
fora so rejeitados.
Exemplo 5.2: Obtenha o algoritmo para a gerao de variveis aleatrios Normais padro
pelo mtodo da Mtodo da Aceitao Rejeio.
A fdp de uma varivel aleatria Z com distribuio z ~ N(0,1) dada por f(z) = 2 exp(z2/2)/(2)1/2. Ser utilizada a funo exponencial g(x) = e -x/2 para majorar f(z), com f, g:
RR. A Figura 32 ilustra o comportamento destas funes para valores positivos das
abscissas.

Figura 33 - Grfico de f(t) = 2 exp(-t2/2)/(2)1/2 e g(t) = e-t/2 para t 0.


Fazendo f(x)/g(x) = 2 exp(-x2/2)/(2)1/2/e-x/2 = 2 exp(x/2-x2/2)/(2)1/2.
Para resolver a equao c = max[f(x)/g(x)] basta derivar f(x)/g(x) em relao a x e
igualar a zero (d[f(x)/g(x)]/dx=0).
Verificar que para x = 1 a razo f(x)/g(x) mxima, logo c = f(1)/g(1) = 2/(2) 1/2

Modelagem e Simulao Discreta

123

Neste caso, f(x)/[c*g(x)] = exp(x/2-x2/2) e pode-se escrever o seguinte algoritmo:


1. gerar dois nmeros aleatrios u1 e u2,
2. gerar uma varivel aleatria G = 2*ln(u1),
3. se u2 < exp(G/2-G2/2) ento faa x = G seno retorna ao procedimento 1
4. retornar x
Este algoritmo gera apenas valores positivos, til para gerar grandezas temporais.
Sobre o procedimento 2: como g exponencial ser utilizado o mtodo da Inversa.
Recomenda-se que a funo envelope seja do tipo x = F 1(u), tenha inversa analtica.

5.1.5

TRANSFORMAO DE BOX-MULLER

A transformao de Box-Muller consiste na gerao de pares de amostras


aleatrias independentes com distribuio normal a partir de nmeros
aleatrios uniformemente distribudos. 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 mtodo estatstico muito simples.

5.1.6
QUALIDADE NA GERAO DE VARIVEIS
ALEATRIAS
importante fazer testes nas amostras geradas para verificar a qualidade
da sequncia aleatria, como os testes de uniformidade e de aderncia
distribuio de interesse. Neste sentido, recomenda-se os testes CQ e KS
como testes de aderncia.

5.2 GERAO DE VARIVEIS ALEATRIAS


A classe clGVA(), Algoritmo 5.1,implementa em Javascript funes para
gerar variveis aleatrias das principais FDA de uso em simulao. Ela faz
uso de clGNA para gerar nmeros aleatrios.
Algoritmo 5.1: Classe clGVA() em Javascript possui funes para gerar
variveis aleatrias das principais fda de uso em simulao
function clGVA(){

Modelagem e Simulao Discreta

124

var GNA = new clGNA();


this.Beta = function(a,b){
var x = this.Gamma(a,1.0),
y = this.Gamma(b,1.0);
return x/(x+y); //Law(2007)
}
this.Erlang = function(b,m){
var p = 1.0;
for( var i = 0; i < m; i++ ){
var u = GNA.gna();
p *= u;
}
return -b*Math.log(p)/m; //Law(2007)
}
this.Exponencial = function(a){
var u = GNA.gna();
return -a*Math.log(u); //Law(2007)
}
this.Gamma = function(alfa,beta){
if( alfa > 1.0 ){
var a = 1.0/Math.sqrt(2*alfa-1.0),
b = alfa-Math.log(4.0),
q = alfa+1.0/a,
teta = 4.5,
d = 1.0+Math.log(teta), u1, u2, V, Y, Z, W;
do{
u1 = GNA.gna();
u2 = GNA.gna();
V = a*Math.log(u1/(1.0-u1));
Y = alfa*Math.exp(V);
Z = u1*u1*u2;
W = b+q*V-Y;
if( !(W+d-teta*Z < 0.0) ) break;
}while( W < Math.log(Z) );
}
else{
var u1, u2, P, b, Y, b = (Math.exp(1.0)+alfa)/Math.exp(1.0);
do{
u1 = GNA.gna();
P = b*u1;
if( P > 1.0 ){
Y = -Math.log((b-P)/alfa);
u2 = GNA.gna();
}
else{
Y = Math.pow(P,1.0/alfa);
u2 = GNA.gna();
if( u2 > Math.exp(-Y) ) continue;
else break;
}
}while( u2 > Math.pow(Y,alfa-1.0) );
}
return beta*Y; //Law(2007)
}
this.Logistica = function(m,b){
var u = GNA.gna();
return m-b*Math.log(1.0/u-1.0);
}
this.LogNormal = function(m,s){
var x = this.Normal(m,s);
Modelagem e Simulao Discreta

125

return Math.exp(x); //Law(2007)


}
this.Normal = function(m,s){
var x1, x2, Y, W;
do{
var u1 = GNA.gna();
u2 = GNA.gna();
V1 = 2.0*u1-1.0;
V2 = 2.0*u2-1.0;
W = Math.sqrt(V1*V1+V2*V2);
}while( W > 1.0 );
Y = Math.sqrt(-2.0*Math.log(W)/W );
x1 = V1*Y;
x2 = V2*Y;
// return m+s*x1; ou
return m+s*x2; //Law(2007)
}
this.Normal2 = function(m,s){
var u1 = GNA.gna(),
u2 = GNA.gna();
// return m+s*Math.cos(2.0*PI*u1)*Math.sqrt(-2.0*Math.log(u2));
// ou
return m+s*Math.sin(2.0*PI*u1)*Math.sqrt(-2.0*Math.log(u2));
}
this.Pareto = function(a){
var u = GNA.gna();
return 1.0/Math.pow(u,1.0/a);
}
this.Poisson = function(l){
var i = 0, a = Math.exp(-l), b = 1.0;
do{
u = GNA.gna();
b *= u;
if( b < a ) return i;
i++;
}while(1); //Law(2007)
}
this.Poisson2 = function(l){
var k = 0, a = Math.exp(-l), p = 1.0;
do{
k++;
u = GNA.gna();
p *= u;
}while(p > a);
return k-1; // http://en.wikipedia.org/wiki/Poisson_distribution
}
this.Poisson3 = function(l){ //

x=min {

e }

uj
j=0

var L = Math.exp(-l), t = GNA.gna(), x = 0;


while( t > L ){
t *= GNA.gna();
x++;
}
return x; // Chen(2015) pag. 49

}
this.UniformeContinua = function(a,b){
var u = GNA.gna();
return a+(b-a)*u; //Law(2007)
Modelagem e Simulao Discreta

126

}
this.UniformeDiscreta = function(i,j){
var u = GNA.gna();
return i+Math.floor((j-i+1)*u); // floor() = piso() Law(2007)
}
this.ValoresExtremos = function(a,b){
var u = GNA.gna();
return a+b*Math.log(-Math.log(u));
}
this.Weibull = function(a,b){
var u = GNA.gna();
return b*Math.pow(-Math.log(u),1.0/a); //Law(2007)
}

5.3 RELAES ENTRE AS DISTRIBUIES DE


PROBABILIDADE
As Figura 34 e Figura 35 resumem as relaes entre as vrias distribuies
de probabilidades discretas e contnuas, respectivamente. Nestas figuras,
as relaes so indicados ao lado das setas entre as distribuies. Um
smbolo x utilizado para designar variveis da distribuio onde a seta
comea. Assim, por exemplo, a condio x ao lado da seta do Bernoulli
para a distribuio binomial na Figura 34 indica que a soma de variveis
Bernoulli tem uma distribuio Binomial. Da mesma forma, quando a
probabilidade p tende a zero, a distribuio Binomial tende para uma
distribuio Poisson, que para > 9 pode ser aproximada por uma
distribuio Normal, e assim por diante. Distribuio Normal, embora no
seja uma distribuio discreta, foi includa na Figura 34 para fornecer uma
ligao entre as distribuies discretas da Figura 34 5.4 e as distribuies
contnuas da Figura 35.

Modelagem e Simulao Discreta

127

Figura 34 - Relaes entre distribuies discretas (Jain,1901).

Figura 35 - Relaes entre distribuies contnuas (Jain,1901).

5.4 DISTRIBUIES DE PROBABILIDADES DA


LINGUAGEM ANSI C++11
A Linguagem ANSI C++11 implementou a biblioteca <random> e ampliou
consideravelmente sua capacidade de gerar variveis aleatrias, a saber
(cppreference, 2013):

Uniform distributions: uniform_int_distribution, uniform_real_distribution,


generate_canonical
Bernoulli distributions:vbernoulli_distribution, binomial_distribution,
negative_binomial_distribution, geometric_distribution

Modelagem e Simulao Discreta

128

Poisson distributions: poisson_distribution, exponential_distribution,


gamma_distribution, weibull_distribution,extreme_value_distribution
Normal distributions: normal_distribution, lognormal_distribution,
chi_squared_distribution, cauchy_distribution, fisher_f_distribution,
student_t_distribution
Sampling distributions: discrete_distribution, piecewise_constant_distribution,
piecewise_linear_distribution

Exemplo 5.3: Elabore um programa para gerar variveis aleatrias com distribuio
uniforme em C++11.

Algoritmo 5.2: Programa para gerar variveis aleatrias com distribuio


uniforme em C++11
#include <random>
#include <iostream>
int main( void ){
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 6);
for( int n = 0; n < 10; ++n )
std::cout << dis(gen) << ' ';
std::cout << '\n';
return 0;
}
fonte: <http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution>

5.5 GERANDO PROCESSOS DE CHEGADA


Conhecendo-se os parmetros da funo densidade de probabilidade que
governa o processo de chegada, deve-se gerar quantas variveis
aleatrias forem necessrias para processar os eventos de chegada.
Se a funo for Poisson, o intervalo mdio entre chegadas o parmetro
necessrio para se gerar os processos de chegada.
Os parmetros de uma funo podem ser calculados por meio de
estatsticas obtidas a partir de amostras do processo e, embora ele seja
discreto, deve-se buscar ajustar a melhor funo densidade de
probabilidade, quer seja discreta ou contnua, dentre as disponveis.

5.5.1
GERAO DE VARIVEIS ALEATRIAS DA
DISTRIBUIO POISSON

Modelagem e Simulao Discreta

129

A distribuio de Poisson, estima a probabilidade de ocorrncia de x


sucessos em um dado intervalo de tempo, por meio da seguinte funo
densidade de probabilidade:
p(x) = p(X = x ) = e-x/x!, x 0, > 0.
em que o valor esperado do nmero de ocorrncias por unidade de
tempo.
Os procedimentos computacionais para a gerao de uma varivel
aleatria Poisson, pelo mtodo da Aceitao/Rejeio, so os seguintes:
1.
2.
3.
4.

fazer n = 0 e p =1,
gerar um nmero aleatrio un+1 e fazer p = pun+1,
se p < e- ento aceitar X = n seno fazer n = n+1 e retornar ao procedimento 2
retornar X.

5.5.2
GERAO DE VARIVEIS ALEATRIAS DA
DISTRIBUIO EXPONENCIAL
A fdp de uma varivel aleatria x com distribuio exponencial dada por:
p(x) = e-x, x 0, > 0.
O parmetro o nmero mdio de ocorrncias por unidade de tempo e a
razo 1/ expressa o tempo mdio entre as ocorrncias.
Ao aplicar o mtodo da transformao inversa para a obteno de uma
varivel aleatria x com distribuio exponencial necessrio:
1. obter a distribuio cumulativa de probabilidade F(x) = P(X x), o que resulta em F(x)
= 1-e-x,
2. gerar um nmero aleatrio 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 distribuio uniforme no intervalo [0,1], pode-se substituir (1-u)
por u
5. logo x = -ln(u) uma varivel aleatria x com distribuio exponencial de parmetro
.

5.6 QUESTES
1. Discutir as fda das Figura 34 e Figura 35.
2. Identificar as fda deste captulo que podem ter variveis aleatrias
geradas pelos mtodos da:
Modelagem e Simulao Discreta

130

a. transformao inversa
b. rejeio
c. composio
d. convoluo

5.7 EXERCCIOS
1. Gere variveis aleatrias utilizando os algoritmos propostos neste
captulo e verifique sua aderncia distribuio com os testes CQ e KS.
Faa o teste para 50, 100 e 200 valores gerados com confiana de 95 e
99%.
2. Compare os resultados de variveis aleatrias geradas pelos algoritmos
propostos neste captulo com os do C++11. Faa o teste para 50, 100 e
200 valores gerados com confiana de 95 e 99%.
3. Implemente um algoritmo para a gerao de variveis aleatrias
Normais padro f(z) pelo Mtodo da Aceitao-Rejeio utilizando a funo
exponencial 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 Exerccio 3 e
compare o nmero de execues para k = 2, 3, 5 e 10.
5. Gere 100 variveis aleatrias Exponential em C++11 e verifique sua
aderncia a esta distribuio com os testes CQ e KS com confiana de
99%.
6. Gere 100 variveis aleatrias Poisson em C++11 e verifique sua
aderncia a esta distribuio com os testes CQ e KS com confiana de
99%.

Modelagem e Simulao Discreta

131

6 VERIFICAO E VALIDAO DE
MODELOS

Deve-se garantir a implementao correta de modelos computacionais


para fins de simulao para que eles possam representar sistemas do
mundo real. A avaliao da qualidade da simulao medida pela
proximidade dos resultados de um modelo comparados com dados de
sistemas do mundo real.
Uma vez que uma srie de suposies sobre o comportamento de
sistemas do mundo real so feitas no desenvolvimento de modelos, h
duas etapas para medir sua qualidade:

Verificao - verifica a correo da implementao, se o modelo computacional


implementa as suposies corretamente
Validao - valida a representatividade dos pressupostos no modelo conceitual, se
as premissas so razoveis

Como pode ser visto na Figura 36, validao e verificao so conceitos


diferentes. A verificao tambm pode ser chamada de depurao, ou
seja, avalia se o modelo computacional realiza o que se espera do modelo
conceitual. A validao permite ajustar o comportamento do modelo
conceitual ao sistema do mundo real.

Figura 36 - Relao entre os conceitos de validao e verificao e o


mundo real.
Um modelo pode estar em qualquer uma das quatro categorias possveis
relativa a implementao das hipteses e realismo dos pressupostos
conforme a Tabela 24.

Modelagem e Simulao Discreta

132

Apenas os modelos vlidos e verificados podem ser capazes de


representar sistemas do mundo real.
Tabela 24 - Categorias dos modelos relativa a implementao das
hipteses e realismo dos pressupostos.
Pressupostos

Implementao das
Hipteses

realistas
validado e verificado
no validado e verificado

correta
incorreta

no realistas
validado e no verificado
no validado e no verificado

6.1 TCNICAS DE VERIFICAO DE MODELOS


A verificao consiste em assegurar que o modelo computacional
implementa corretamente o modelo conceitual. A verificao de modelos
de simulao equivalente a retirar os bugs de programas (debugging).
Ela tambm busca identificar elementos que possam ocasionar o mal
funcionamento do modelo computacional.
A qualidade dos dados de entrada tambm de extrema importncia.
Estes dados podem ser utilizados com trs finalidades bsicas: construo
do modelo conceitual, validao de resultados e experimentao. Desta
forma, se os dados de entrada do modelo esto incorretos, no h como
melhorar o modelo ou mesmo gerar resultados corretos.
As tcnicas para a Verificao de Modelos podem ser vistas na Tabela 25.
Tabela 25 - Tcnicas para a Verificao de Modelos

Antibugging

consiste em incluir verificaes adicionais e sadas no programa


para apontar os erros, se houver. Por exemplo, se as
probabilidades de determinados eventos devem somar 1, o
programa pode verificar isso e imprimir uma mensagem de erro
se a soma no estiver dentro de um limite de tolerncia
especificado. Outro exemplo o de contar as entidades geradas
e atendidas

Walk-Through
Structured

consiste em explicar o cdigo para outra pessoa ou um grupo. O


desenvolvedor do cdigo explica o que cada instruo faz pode
ser muito til. Mesmo que os ouvintes no entendam o modelo,
desenvolvedores descobrem erros simplesmente lendo o cdigo
cuidadosamente, tentando explic-lo e verificando se o cdigo
corresponde exatamente expectativa

Modelos
Determinsticos

o problema-chave na depurao de modelos de simulao a


aleatoriedade das variveis. bvio que um programa
determinstico mais fcil de depurar que um programa com
variveis aleatrias. A tcnica consiste em especificar
distribuies constantes (determinsticas) para que o usurio
possa facilmente determinar variveis de sada e, assim,

Modelagem e Simulao Discreta

133

depurar o software, ou seja, eliminar a aleatoriedade

Executar Casos
Simplificados

o modelo pode ser executado com casos simples como, por


exemplo, apenas uma tarefa. Estes casos podem ser facilmente
analisados e os resultados da simulao podem ser comparados
com os modelos analticos. claro, um modelo que funciona
para casos simples no garantido que funcione para os casos
mais complexos. Portanto, os testes devem ser to complexos
quanto puderem ser analisados sem simulao

Rastreio (Trace)

um rastreio consiste de uma lista ordenada de eventos de


tempo e suas variveis associadas. Eles podem ser
apresentados em vrios nveis de detalhe: eventos de
rastreamento, procedimento trace ou rastreio de variveis. As
sadas de rastreio so teis na depurao de modelos

Grficos On-Line

simulaes levam muito tempo para serem executadas. Grficos


on-line podem exibir resultados para ajudar a manter o usurio
informado sobre o estado da simulao. Eles tambm so teis
para tornar a simulao mais interessante e vender seus
resultados para terceiros

Teste de
Continuidade

consistem em executar a simulao vrias vezes para valores


ligeiramente diferentes dos parmetros de entrada. Para
qualquer parmetro, uma pequena mudana na entrada deve
geralmente produzir apenas uma ligeira alterao na sada.
Toda mudana repentina na sada deve ser investigada. Muitas
vezes, eles so devidos a erros de modelagem

Testes de
Degenerescncia

consistem em verificar se o modelo funciona para valores


extremos (menores ou maiores permitidos) do sistema,
configurao, ou parmetros de carga de trabalho. Por exemplo,
modelo de estao de trabalho com multiprocessador e vrios
discos deve ser capaz de simular tambm uma nica CPU sem
disco (diskless) mesmo que estas configuraes no sejam
vlidas para o sistema

Testes de
Consistncia

verificam se o modelo produz resultados semelhantes para


valores de parmetros de entrada semelhantes. Por exemplo,
dois processos com taxa de chegada de 100 pacotes por
segundo cada um deve exigir de uma rede aproximadamente do
mesmo nvel que quatro processos com uma taxa de chegada
de 50 pacotes por segundo cada. Se a sada do modelo mostra
uma diferena significativa, ele pode ser explicvel ou pode ser
devido a erros de programao

Independncia da
Semente

as sementes utilizadas na gerao de nmeros aleatrios no


deve afetar o resultado final. Assim, o modelo dever produzir
resultados semelhantes para diferentes valores de sementes, o
que deve ser verificado

6.2 TCNICAS DE VALIDAO DE MODELO


Validao consiste em assegurar que os pressupostos utilizados, as
simplificaes adotadas, o nvel de detalhamento e o escopo do modelo
conceitual esto de acordo e representam adequadamente o sistema a ser
Modelagem e Simulao Discreta

134

simulado e que, se implementado corretamente, o modelo computacional


tenha comportamento e produza resultados semelhantes quelas
observados nos sistemas do mundo real.
As tcnicas de validao dependem dos pressupostos e, portanto, do
sistema que est sendo modelado. Assim, ao contrrio de tcnicas de
verificao que so de aplicao geral, as tcnicas de validao utilizadas
na simulao de um modelo podem no se aplicar a outro.
Validao do modelo consiste em validar os trs aspectos-chave do
modelo:

Suposies
Valores dos parmetros de entrada e distribuies
Valores de sada e concluses

Cada um destes trs aspectos pode ser submetido a um teste de validade,


comparando-a com o obtido a partir das seguintes possveis trs fontes:

a forma mais prtica e comum para validar um modelo.


Os pressupostos do modelo devem ser validados por
Intuio
do especialistas. Os valores de entrada e distribuio devem
Especialista
ser discutidos e validados durante o desenvolvimento do
modelo. A sada deve ser validada, logo que existir um
executvel do modelo

Medidas
Reais
Sistema

Resultados
Tericos

comparao com sistemas do mundo real a maneira mais


confivel e preferida para validar um modelo de simulao.
Suposies, valores de entrada, valores de sada, cargas de
do
trabalho, configuraes e comportamento do sistema
devem ser comparados com os observados no mundo real
utilizando tcnicas estatsticas
em alguns casos, possvel resolver analiticamente o
modelo do sistema sob hipteses simplificadoras. Tambm
pode
ser
possvel
determinar
analiticamente
as
distribuies de entrada. Nesses casos, a semelhana de
resultados tericos e os resultados da simulao usada
para validar o modelo de simulao

Isto leva a nove testes de validao possveis. Claro, pode no ser vivel a
utilizao de algumas dessas possibilidades. Por exemplo, medies reais
do sistema podem estar disponveis ou no, resultados tericos podem
estar disponveis ou no. O analista deve, pelo menos, validar o modelo
para configuraes simples.

Modelagem e Simulao Discreta

135

6.3 CONSIDERAES ADICIONAIS


A verificao e validao de fundamental importncia para o sucesso de
um estudo de simulao. Acredita-se que este processo deve ser contnuo,
acompanhando todo o ciclo de vida do projeto para a obteno de
melhores resultados.
Outras tcnicas para a Validao de Modelos podem ainda serem
adotadas:

anlise de sensibilidade variao dos parmetros


comparar com sistema similar
dados da literatura

6.4 DETERMINANDO O NVEL DE DETALHE DE


MODELOS
H um consenso na comunidade de simulao de que um modelo simples
sempre mais prefervel a um modelo complexo. De fato, o dizer "modele
simples - pense complicado" um dos princpios de modelagem em
simulao pois o modelo, tanto para o analista (criador do modelo) como
para o usurio, deve ser simples. Modelos simples so mais fceis de
compreender e tambm mais eficientes de se mudar, implementar e
analisar. H autores que chegam a afirmar que a simplificao a
essncia da simulao. Ainda apontam uma outra vantagem de um
modelo simples: a facilidade de descart-lo e comear novamente. Uma
vez que um modelo complicado criado, difcil se livrar dele ( muito
mais difcil de admitir uma falha em um modelo extremamente custoso do
que em um modelo simples e barato).
Na grande maioria dos casos, a reduo de um modelo ocorre depois da
sua anlise, quando se faz um estudo de sensibilidade a fim de verificar a
relevncia de seus parmetros e variveis. Por isto, acredita-se que, ao
desenvolver uma tcnica adequada de reduo de modelos, logo na
primeira fase do ciclo de vida (concepo), tenha se uma reduo
significativa na durao deste ciclo, especialmente nas etapas de
implementao e anlise, mesmo que haja um aumento de tempo na
etapa ou fase de concepo do modelo.
Alm das vantagens descritas anteriormente, tendo-se um modelo mais
simples, a probabilidade de ocorrncia de erros nas fases de
implementao e anlise menor, o que indiretamente pode levar,
tambm, reduo do tempo total do ciclo.

Modelagem e Simulao Discreta

136

Na realidade, a motivao para reduzir a complexidade de modelos de


simulao parece que mudou ao longo do tempo. A motivao principal
para a reduo de modelos na dcada de 70 era a restrio
computacional. Na dcada de 80, a motivao principal para a reduo era
o entendimento. Pode-se afirmar que, na dcada de 90 e no novo milnio,
as motivaes principais para a reduo de modelos so o entendimento
e, tambm, o tempo de desenvolvimento (a necessidade de se reduzir o
tempo de um estudo de simulao) buscando melhorar a relao
benefcio/custo, conforme pode ser vista na Figura 37.

Figura 37 - Relao benefcio/custo e a qualidade de modelos.


Modelos muito simples podem ser de baixo custo mas podem no
descrever adequadamente o comportamento dos sistemas do mundo real.
Por outro lado, modelos muito complexos podem ser de alto custo mas
podem descrever adequadamente o comportamento dos sistemas do
mundo real. A qualidade de modelos no pode ser deixada de lado pois
pode levar perda de investimento.
H que considerar que o incremento da qualidade obedece a Lei dos
Rendimentos Decrescentes, j os custos crescem exponencialmente. Na
academia deve-se buscar a melhor qualidade e ela feita de modo rpido.
No mundo dos negcios h que buscar um meio termo, o de fazer mais
com menos, a qualidade conquistada e incorporada no processo passoa-passo, assim comum ouvir de gestores que "o bom inimigo do
timo".

Modelagem e Simulao Discreta

137

6.5 MELHORANDO A VALIDADE E CREDIBILIDADE


DE MODELOS
As vantagens de representar o modelo de simulao de forma que sejam
mais fceis de serem comunicados so:

fornecer melhor entendimento sobre a lgica de operao dos sistemas e


interaes entre seus componentes
aumentar a eficincia do desenvolvimento do modelo de simulao computacional
assegurar uma validao mais apropriada do modelo de simulao
servir como um meio de comunicao entre o analista e o usurio

Dentre as tcnicas para melhorar a validade e a credibilidade dos modelos


pode-se destacar:

anlise de sensibilidade
as tcnicas j vistas para validao de modelos
as tcnicas j vistas para verificao de modelos

6.6 QUESTES
1. Proponha uma metodologia para validar o Modelo Conceitual de Sistemas de Filas
M/M/1 apresentado anteriormente.
2. Proponha uma metodologia para verificar o Modelo Computacional de Sistemas de Filas
M/M/1 apresentado anteriormente.
3. Proponha uma metodologia para a anlise do o Modelo Conceitual de Sistemas de Filas
M/M/1 apresentado anteriormente.
4. O que significa "modele simples - pense complicado" na prtica de modelagem. Faa
um estudo de caso.
4. O que significa "o incremento da qualidade obedece a Lei dos Rendimentos
Decrescentes, j os custos crescem exponencialmente" na prtica de modelagem. Faa
um estudo de caso.

6.7 EXERCCIOS
1. Faa testes de continuidade, de degenerescncia e de consistncia nos execcios do
Captulo 2.
2. Faa o teste da independncia da semente nos execcios do Captulo 2.

Modelagem e Simulao Discreta

138

7 ANLISE DE RESULTADOS SIMULADOS

A simulao de modelos matemticos de sistemas computacionais pode


apresentar erros de diferentes fontes. A comear pelos prprios modelos
que, por construo, so representaes simplificadas de sistemas do
mundo real. Os erros inerentes ao processo da amostragem tambm esto
presentes nos parmetros de entrada dos modelos. Os valores utilizados
nos modelos so estimativas dos parmetros reais e tambm so fontes
de erros. Ao simular estes modelos matemticos em computadores,
fazendo uso de nmeros aleatrios, so introduzidas variabilidade
estatstica nos resultados. Em resumo, no h como controlar estas fontes
de erros. Vale ressaltar que, apesar de tudo isso, ainda assim a simulao
d bons resultados e pode ser utilizada de modo confivel.
Neste captulo sero apresentadas tcnicas estatsticas que permitem
avaliar resultados de simulaes, sua qualidade e pertinncia e assegurar
seu uso.
A anlise de sada um dos aspectos mais importantes de qualquer
estudo de simulao adequado e completo. Como os processos de entrada
da simulao so variveis aleatrias, notadamente tempos entre
chegadas e tempos de servios, deve-se considerar a sada da simulao
tambm como aleatria. Assim, simulaes resultam apenas em
estimativas de medidas do desempenho do sistema. Esses estimadores
so, eles mesmos, variveis aleatrias sujeitos ao erro amostral, e o erro
amostral deve ser levado em conta para se fazer inferncias vlidas em
relao aos valores dos resultados simulados.
A simulao pode no produzir resultados que sejam dados normais e iid.
Por exemplo, os tempos de espera de servios consecutivos em um
sistema de fila:

no so independentes - de modo tpico, eles so serialmente correlacionados; se


um servio numa rede espera em uma fila por um longo tempo, ento provvel
que o prximo servio tambm espere tambm um longo tempo

Modelagem e Simulao Discreta

139

no so identicamente distribudos - os servios que so solicitados de madrugada


em geral esperam menos do que os que aqueles solicitados pouco antes do final
do expediente
no so distribudos normalmente - eles so usualmente assimtricos

Na maioria dos sistemas simulados, os valores iniciais das suas variveis


de estado e de sada podem apresentar grandes variaes, esta parte
inicial chamada de estado transiente, aps o que o sistema pode atingir
um estado estvel, denominado estado estacionrio, Figura 38. H
simulaes cujo foco o estado transiente e h outras cujo interesse o
estado estacionrio, h ainda aquelas que buscam estudar ambos
estados. H tambm sistemas simulados que apresentam oscilaes
cclicas, peridicas ou no. Sistemas de comportamento catico ou
divergente so de pouco interesse prtico em sistemas computacionais.

Figura 38 - Indicao dos estados transiente e estacionrio de uma


simulao tpica.

1 - sries caticas e sries aleatrias so parecidas no sentido de que no possuem regularidade


2 - series estocsticas, como o rudo branco, so aleatrias
3 - series caticas so determinsticas, so geradas a partir de sistemas dinmicos
4 - a caracterstica que identifica o comportamento catico a sua dependncia das condies
iniciais, o que inviabiliza a repetibilidade bem como a previsibilidade do comportamento do
sistema, j que condies iniciais indistinguveis podem gerar comportamentos imprevisveis

7.1 TIPOS DE SIMULAO COM RELAO


ANLISE DA SADA
Modelagem e Simulao Discreta

140

Pode-se identificar dois tipos de simulao em relao anlise da sada:


simulaes terminais e de estado estacionrio.

Simulaes terminais ou transientes - neste caso, a natureza do problema define


explicitamente o nmero de eventos a serem simulados. Por exemplo, pode-se
estar interessados na simulao de um sistema que executado em um horrio
especfico a cada dia, como backup.
Simulaes no-terminais ou de estado estacionrio - neste caso estuda-se o
comportamento a longo prazo do sistema. Presumivelmente, esse comportamento
de estado estacionrio independente das condies iniciais da simulao. Um
exemplo so os hardwares de modo geral, que ficam disponveis continuamente,
para a qual h interesse em alguma medida de desempenho a longo prazo.

As tcnicas para analisar sadas de simulaes terminais se baseiam no


mtodo de replicaes independentes.
Problemas adicionais surgem para simulaes de estado estacionrio e as
seguintes etapas na execuo da simulao tambm devem consideradas:

remoo de transientes - quantos eventos iniciais devem ser descartadas para


garantir que a simulao chegue a um estado de equilbrio?
critrio de parada Quantos eventos sero necessrios para executar a
simulao?

7.1.1

REMOO DE TRANSIENTES

Antes que uma simulao possa ser executada, devem-se definir valores
iniciais para suas variveis de estado. Como, em princpio, os valores
iniciais apropriados destas variveis de estado no so conhecidos, esses
valores devem ser escolhidos arbitrariamente, utilizando-se de alguns
critrios como, por exemplo, iniciar uma Fila vazia e seu Servidor ocioso
por questes de convenincia. As condies iniciais de uma simulao
podem ter uma influncia significativa nos seus resultados, podendo levar
a erros na anlise da sada de estado estacionrio.
Na maioria das simulaes, apenas o desempenho em estado
estacionrio, isto , o desempenho depois que o sistema tenha atingido
um estado estvel, de interesse. Nesses casos, os resultados da parte
inicial da simulao no devem ser includos nos clculos finais. Essa parte
inicial tambm chamada de estado transiente, Figura 38.
O problema de identificar o fim do regime transiente chamado de
remoo de transientes e sua principal dificuldade que no possvel
definir exatamente o que constitui o estado transiente e quando ele
termina. Todos os mtodos para a remoo de transientes so, portanto,
heursticas. H seis mtodos, a saber:
Tabela 26 - Mtodos para a remoo de transientes
Execues

o primeiro mtodo simplesmente usar execues muito longas, ou

Modelagem e Simulao Discreta

141

longas

Inicializao
adequada

Truncamento

Eliminao de
dados iniciais

Mdia mvel de
replicaes
independentes

Mdia de Lotes

7.1.2

seja, execues que so suficientemente longas para garantir que a


presena de condies iniciais no afetar o resultado. H duas
desvantagens neste mtodo. Primeira, ele desperdia recursos, se os
recursos so caros, uma simulao no deve ser executada por mais
tempo do que o absolutamente necessrio. Segunda, difcil garantir
que o comprimento da execuo escolhido suficiente
inicializao adequada requer iniciar a simulao em um estado
prximo do estado esperado estvel. Por exemplo, uma simulao de
escalonamento da CPU pode comear com algumas tarefas na Fila em
vez da Fila vazia. O nmero de tarefas pode ser determinado a partir
de simulaes anteriores ou por simples anlise. Este mtodo resulta
em uma reduo na durao dos perodos transientes para que haja
pouco efeito sobre a computao em geral
este e todos os mtodos subsequentes so baseados no pressuposto
de que a variabilidade durante o estado de equilbrio menor do que
durante o estado transiente, o que geralmente verdade. No mtodo
de truncamento, a variabilidade medida em termos de alcance
mnimo e mximo de observaes. Se uma trajetria mostrando
observaes sucessivas em um grfico, um intervalo de observaes
pode ser visto quando a simulao estabilizar e entrar na fase
estacionria
a excluso de dados iniciais requer estudar a mdia global depois que
alguns dos resultados iniciais so excludas da amostra. Durante o
estado estacionrio, a mdia no muda muito quando observaes so
excludas. No entanto, a aleatoriedade nas observaes faz com que as
mdias possam mudar um pouco, mesmo durante o estado
estacionrio. Para reduzir o efeito de aleatoriedade, o mtodo requer
primeiro, o clculo uma mdia atravs de vrias repeties. Cada
repetio consiste em uma srie completa da simulao, sem qualquer
alterao nos valores dos parmetro de entrada. As repeties diferem
apenas nos valores de semente utilizada nos geradores de nmeros
aleatrios. A mdia dos resultados das repeties uma trajetria
suave
este mtodo semelhante excluso de dados inicial. A principal
diferena que este mtodo requer calcular a mdia sobre uma janela
que se deslocam a intervalos de tempo em vez da mdia geral
este mtodo requer a execuo de uma simulao muito longa e
dividi-la em vrias partes de igual tamanho. Cada parte chamada de
lote ou subamostra. A mdia de observaes em cada lote chamada
mdia de lote . Este mtodo permite estudar a variao destas mdias
em funo do tamanho do lote

CRITRIO DE PARADA

O critrio de parada pela estimativa da varincia utiliza o conceito de


tamanho de amostras, segue-se que a simulao deve ser executada at
que o intervalo de confiana para a resposta mdia se restrinja a um
intervalo desejado, Figura 39. Se a mdia da amostra m e sua varincia
V(m), o intervalo de confiana para a mdia dada por m z 1-/2V(m)
em que z1-/2 o 1-/2 quantil de uma varivel normal unitria.

Modelagem e Simulao Discreta

142

Figura 39 - Varincia do nmero de tarefas na fila em funo do tamanho


de lote da simulao do Sistema de Fila M/M/1 com = 0,5.

7.2 ANLISE ESTATSTICA DE SIMULAES


FINITAS

7.2.1

ANLISE DE SIMULAO TERMINAL

A simulao terminal feita em um horizonte de tempo finito. Suponha


que uma sada de simulao discreta tenha gerado o conjunto de n dados
{x1, x2, ..., xn} onde n pode ser constante ou uma varivel aleatria. Por
exemplo, o experimentador pode especificar a simulao de n tempos de
espera de servios de um modelo. Ou n pode denotar o nmero aleatrio
de tarefas simuladas durante um perodo de tempo especificado [0,T]. A
mdia amostral das observaes m = xi/n.
Embora m seja um estimador no-viesado para a mdia da populao,
uma anlise estatstica adequada exige que seja encontrada tambm uma
estimativa de V(m). Como os xi no so necessariamente variveis
aleatrias iid, a varincia amostral s 2 = (xi-m)2/(n-1) pode ser um
estimador viesado. Uma maneira de contornar este problema usar o
Mtodo de Replicao Independente (MRI).

7.2.2

MTODO DE REPLICAO INDEPENDENTE (MRI)

Modelagem e Simulao Discreta

143

O MRI estima V(m) atravs da realizao de b rodadas de simulao


independentes (replicaes) do modelo do sistema, em que cada
replicao consiste em k eventos simulados. Para fazer replicaes
independentes, por exemplo, pode-se reiniciar cada replicao com uma
semente diferente.
Seja zi = xi,j/k a mdia amostral da replicao i, onde x i,j a observao j
da replicao i, para i [1, b] e j [1, k].
A Tabela 27 apresenta um quadro com as b rodadas do Mtodo de
Replicao Independentes organizadas em linhas, cada rodada com k
eventos organizados por coluna; num total de k x b eventos. As mdias
so das rodadas e so calculadas por linha.
Tabela 27 - Quadro com as b rodadas do Mtodo de Replicao
Independente, cada rodada com k eventos e suas respectivas mdias
Evento (j)

Rodada (i)

Mdia

...

...

x1,1

x1,2

...

x1,j

...

x1,k

z1

x2,1

x2,2

...

x2,j

...

x2,k

z2

...

...

...

...

...

...

...

...

xi,1

xi,2

...

xi,j

...

xi,k

zi

...

...

...

...

...

...

...

...

xb,1

xb,2

...

xb,j

...

xb,k

zb

Se cada rodada se inicia com as mesmas condies operacionais (como


filas vazias e servidores ociosos), ento as mdias amostrais das
replicaes {z1, z2, ..., zb} so variveis aleatrias iid e, ento, o estimador
V(m) VR = (zi-mb)2/(b-1) em que mb = zi/b. Como as mdias amostrais
das replicaes so iid, VR, em geral, muito menos viesado do que s 2/n
para estimar V(m), desta forma VR/b um estimador razovel para V(m b).
Alm disso, se o nmero de observaes por replicao, k,
suficientemente grande, o Teorema Central do Limite afirma que as
mdias amostrais das replicaes so aproximadamente normais e iid.
Assim, a estatstica bsica fornece um intervalo de confiana (IC) bilateral
aproximado de 100(1-)% de confiana para a amostra da populao, ,
mb t/2,b-1(VR/b)1/2.
Exemplo 7.1: Calcule o Intervalo de Confiana bilateral da mdia da populao a partir
das Replicaes Independente abaixo, = 5%:
Rodada

Evento

Mdia

12,2

14,3

9,7

11,4

13,1

11,3

12,0

11,4

10,2

9,3

13,1

12,0

11,8

11,3

10,7

11,1

13,0

10,4

11,3

11,4

11,3

Modelagem e Simulao Discreta

144

13,2

10,4

10,7

11,5

9,2

10,2

b=4
k=6
Clculo 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
Clculo de mb:
mb = (12,0 + 11,3 + 11,3 + 10,9)/4 = 45,48/4 = 11,4
Clculo de VR:
VR = [(12,0-11,4)2 + (11,3-11,4)2 + (11,3-11,4)2 +
(0,396+0,005+0,003+0,254)/3 = 0,658/3 = 0,219
Clculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)
Clculo do IC:
IC = 3,1824 x (0,219/4)1/2 = 3,1824 x 0,230 = 0,750
Concluso: mdia da populao [10,6;12,12].

10,9

(10,9-11,4)2]/3

7.2.3
ANLISE ESTATSTICA DE PARMETROS
ESTACIONRIOS
Suponha que se tenha uma sada de simulao de estado estacionrio {x 1,
x2, ..., xn} de algum parmetro de interesse como, por exemplo, o nmero
de tarefas numa fila. Como no caso de simulaes terminais, uma boa
anlise estatstica deve fornecer o valor de qualquer estimador
juntamente com uma medida de sua varincia.
Vrias metodologias tm sido propostas na literatura para avaliar a sada
de estado estacionrio, dentre elas, mdias de lotes, replicaes
independentes, sries temporais, anlise espectral e regenerao. Sero
apresentadas as duas mais populares, a saber, mdias de lotes e
replicaes independentes.
7.2.3.1

Mdias de Lotes

Em geral, o Mtodo de Mdias de Lotes usado para se estimar a


varincia ou calcular ICs para a mdia de processos de estado
estacionrio. Ele consiste em dividir uma longa rodada de simulao em
um nmero de lotes contguos e utilizar o Teorema Central do Limite para
supor que as mdias de lotes sejam aproximadamente normais e iid.
Suponha que se particione {x 1, x2, ..., xn} em b lotes contguos, disjuntos,
cada um com k observaes, sendo n = bk. Assim, o i-simo lote, i [1,
b], consiste nas variveis aleatrias x(i-1)k+1, x(i-1)k+2, ..., xik. A mdia do i-

Modelagem e Simulao Discreta

145

simo lote zi = x(i-1)k+j/k, j [1, k], a mdia amostral das k observaes


do lote i.
A Tabela 28 ilustra o Mtodo das Mdias de Lotes para uma rodada com 24
eventos distribudos (n = 24) em 4 lotes contguos (b = 4), cada lote com
6 observaes (k = 6) e suas respectivas mdias.
Tabela 28 - Quadro do Mtodo das Mdias de Lotes com uma rodada com
24 eventos distribudos em 4 lotes, cada lote com 6 eventos e suas
respectivas mdias
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
4
Mdia
z1
z2
z3
z4

Definindo o estimador VB = (zi-mb)2/(b-1) para as mdias dos lotes, m b=


zi/b. Se k grande, ento as mdias dos lotes so aproximadamente
normais e iid. O valor de IC aproximado para com 100(1-)% de
confiana mb t/2,b-1(VB/b)1/2.
Essa equao muito semelhante as replicaes independentes, visto
anteriormente. A diferena aqui que as mdias de lotes dividem uma
longa rodada em um nmero de lotes, enquanto as replicaes
independentes usam um nmero de rodadas mais curtas e independentes.
O uso da mdia de lotes pode resultar intervalos de confiana de baixa
cobertura se os xi no forem estacionrios, como se estiver presente um
vis de condies iniciais significativos; se as mdias dos lotes no forem
normais ou se as mdias dos lotes no forem independentes.
Para melhorar o problema do vis da iniciao, pode-se truncar alguns dos
dados ou fazer uma longa rodada. Alm disso, a falta de independncia ou
de normalidade das mdias dos lotes pode ser contornada pelo aumento
do tamanho do lote, k.
Exemplo 7.2: Calcule o Intervalo de Confiana bilateral da mdia da populao a partir
das Mdias de Lotes abaixo, = 5%:
Rodada
Lote
Mdia

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,4
1
2
3
4
11,4
11,2
10,5
10,9

b=4
k=4
Clculo dos zi:
z1 = (13,4 + 9,8 + 11,6 + 10,8)/4 = 11,4
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
Clculo de mb:
mb = (11,4 + 11,2 + 10,5 + 10,9)/4 = 32,6/4 = 11,0

Modelagem e Simulao Discreta

146

Clculo 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
Clculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)
Clculo do IC:
IC = 3,1824 x (0,159/4)1/2 = 3,1824 x 0,199 = 0,634
Concluso: mdia da populao [10,4;11,6].

7.2.3.2

Replicaes Independentes

Entre as dificuldades encontradas ao se usar a mdia de lotes, a mais


preocupante deve ser a possibilidade de correlao entre as mdias dos
lotes. Esse problema explicitamente evitado pelo mtodo de RI, descrito
no contexto de simulaes terminais. De fato, as mdias de replicaes
so independentes por construo. Infelizmente, como cada uma das b
replicaes deve ser iniciada apropriadamente, o vis das condies
iniciais apresenta mais problemas quando se usa RI do que quando se usa
mdia de lotes. A recomendao usual, no contexto da anlise de estado
estacionrio, usar as mdias de lotes preferencialmente s RI por causa
do possvel vis das condies iniciais em cada uma das replicaes.

7.3 REDUO DA VARINCIA


A qualidade da estimativa medida atravs da largura do intervalo de
confiana. Este ltimo depende da varincia e do nmero de observaes
1
N, no entanto o fator de reduo deste ltimo
, seria oneroso
N
diminuir um intervalo de confiana apenas aumentando N. As tcnicas de
reduo de varincia foram desenvolvidas para esta finalidade. Estas
tcnicas so mtodos estatsticos sofisticados que so muito delicados de
manusear e aplicar. Mal aplicado, este tipo de tcnica pode at mesmo
produzir o efeito oposto (Chen, 2015).

7.3.1

NMEROS ALEATRIOS COMUNS

Esta tcnica utilizado principalmente na comparao de dois sistemas


semelhantes, o cenrio a seguir ilustra seu princpio. Seja comparar o
tempo de permanncia mdio (D) de duas filas A e B, A do tipo FIFO e B
do tipo LIFO (Chen, 2015).
O mtodo de nmeros aleatrios comuns (MNAC) consiste em enviar a
mesma sequncia de chegada para as duas filas, com o mesmo tempo de
Modelagem e Simulao Discreta

147

servio. Supor que foram executadas N simulaes destes sistemas, a isima simulao de A produz uma estimativa para E[D] que denotado
por Di,A, similarmente Di,B a estimativa para E[D] para a simulao de B.
Ao final destas N repeties, a mdia (D A) e a varincia (s 2A) da amostra A,
so dadas pelas frmulas clssicas:
N

D A=

1
D
N i=1 i , A

7.1

1
s =
(Di , A D A )2

N 1 i=1
2
A

7.2

Similarmente, as frmulas para a amostra B que so DB e s2B:


N

1
DB = Di , B
N i=1
s 2B =

7.3

1
(D D B)2
N 1 i=1 i , B

7.4

A comparao entre A e B consiste em calcular a diferena =DA-DB, que


um estimador de E[DA]-E[DB]. Como estas as estimativas so variveis
aleatrias, tambm uma varivel aleatria. O mtodo MNAC nos
permite reduzir sua varincia, ou seja:
Var []=Var [ D A ]+Var [D B ]2 Cov [D A , D B ]

7.5

Se forem executadas duas simulaes separadamente, ou seja, com


diferentes instantes de chegada e tempos de servio (que obedecem, no
entanto, as mesmas distribuies de chegada e de servio), os resultados
sero independentes e, portanto, Cov[DA,DB] = 0.
Com o MANC as duas simulaes so correlacionadas. Esta correlao
positiva pois um aumento do trfego levar a um aumento no nmero de
tarefas, tanto para A quanto para B e, assim, provoca um aumento no
E[DA] e E[DB]. Assim, Var [] menor no caso das simulaes serem feitas
com uma sequncia comum do que no caso de simulaes independentes.
A verdadeira diferena entre E[DA] e E[DB] ento melhor avaliado devido
a esta tcnica.

7.3.2

VARIVEIS ANTITTICAS

O princpio deste mtodo simples e fcil de entender. Para estimar E[X]


de alguma varivel aleatria denotado por X.

Modelagem e Simulao Discreta

148

Seja m1 uma estimativa de E[X], obtida de uma sequncia de observaes


geradas a partir de uma sequncia de variveis aleatrias uniforme U(0,1),
{ui} i = 1, , L.
Seja m2 uma segunda estimativa de E[X], obtida de uma sequncia de
observaes geradas a partir de uma sequncia de variveis aleatrias
uniforme complementar {vi = 1-ui} i = 1, , L.
Estas duas sequncias, {u} e {v} esto negativamente correlacionados.
Tem-se duas variveis aleatria, m1 e m2, definindo m = (m1+m2)/2. claro
que E[m] = E[X] e a varincia de m dada por:
Var [m]=

Var [m1 ]+Var [m2 ]+2 Cov [m1 , m2 ] Var [ X ]+Cov [m1 , m2 ]
=
4
2

7.6

Como m1 e m2 so, por construo, negativamente correlacionados, a


varincia seria reduzida (Chen, 2015).

7.3.3

OBSERVAES

Pode-se destacar que um estudo por simulao principalmente um


estudo estatstico (ao passo que a construo de um modelo de simulao
principalmente relevante para programao de computador). Assim,
necessrio respeitar as regras e prticas da estatstica. Uma precauo
particular a ser tomada em uma simulao, em comparao com um
problema estatstica clssica (por exemplo, uma pesquisa de opinio),
que a simulao lida com processos estocsticos e que necessrio
assegurar a estacionariedade e eliminar o perodo transitrio a partir dele.
Alm disso, os resultados no podem ser considerados independentes.
Assim, necessrio escolher uma durao adequada da simulao, bem
como um mtodo adequado para obteno dos dados. A orientao para
obter estimativas das quantidades fsicas (muitas vezes sob a forma de
valores mdios) com qualidade (medido atravs do intervalo de
confiana), compatvel com os objetivos do estudo.

7.4 ANLISE ESTATSTICA DE PARMETROS


ESTACIONRIOS CCLICOS
As tcnicas para avaliao de parmetros estacionrios cclicos so
aquelas aplicadas aos modelos sazonais de sries temporais como, por
exemplo, modelos no-lineares, sries e transformadas de Fourrier, anlise
Modelagem e Simulao Discreta

149

harmnica, anlise de componentes principais, anlise espectral, modelos


ARIMA. Dentre estas, sero apresentadas os modelos sazonais, modelos
no-lineares e anlise harmnica que so obtidas a partir de sries e
transformadas de Fourrier.

7.4.1

MODELOS SAZONAIS

A anlise de sries cclicas, incluindo no modelo de regresso tanto a


tendncia como o efeito sazonal, permite estimar seus efeitos em
separado. Mas, mesmo com este cuidado, a regresso de mnimos
quadrados ainda pode apresentar problemas em razo de resduos
aleatrios. O modelo de regresso apresenta em suas equaes uma
componente de tendncia (T) e outra sazonal (S). Dada uma da amostra
de n pontos {(t1,x1), (t2,x2), ..., (tn,xn)}, pode-se estabelecer os modelos
sazonais:
f(xi,ti) = T(xi,ti) x S(xi,ti) + i, modelo multiplicativo
f(xi,ti) = T(xi,ti) + S(xi,ti) + i, modelo aditivo
Em que i [1,n] e uma componente aleatria com mdia zero e
serialmente no correlacionada.
As componentes sazonais e no sazonais so assumidas como sendo
combinaes lineares de variveis fixadas e, portanto, o mtodo dos
mnimos quadrados com incluso de variveis sazonais (MMQ-VS)
utilizado para se obter os parmetros de tendncia e sazonalidade. Este
mtodo til para sries que apresentam sazonalidade determinstica
sem que os resduos decorram de perodos prvios.
Os mtodos de mdias mveis multiplicativas ou aditivas so utilizados
para a desazonalizao de sries temporais fazendo o alisamento da srie
original. Os modelos multiplicativos ou aditivos so selecionados em
funo do relacionamento entre as variveis. Um teste simples para se
confirmar qual modelo o mais adequado (multiplicativo ou aditivo) a
construo de um grfico da amplitude sazonal em funo da tendncia.
Assim, por exemplo, a plotagem pode apresentar as caractersticas do
grfico a seguir:

a reta ajustada apresenta pequena declividade - o que indica que no existe uma
dependncia da sazonalidade sobre a tendncia, o que confirma a utilizao de
um modelo aditivo
a reta ajustada apresenta declividade acentuada - o que indica uma dependncia
da sazonalidade sobre a tendncia e confirmando a adequabilidade de um modelo
multiplicativo para o relacionamento dos componentes da srie

Modelagem e Simulao Discreta

150

7.4.2

MODELOS NO-LINEARES

A regresso polinomial apresenta-se como uma ferramenta importante na


identificao e modelagem da relao entre variveis, o que muito til
para descrever fenmenos por meio de modelos matemticos a partir de
dados amostrais. A anlise de regresso uma tcnica estatstica
amplamente utilizada para ajustar dados funes matemticas.
Os modelos matemticos
pressupostos estatsticos:

de

regresso

fundamentam-se

em

trs

1. a relao entre as variveis dependente e independente determinstica ao invs


de estocstica
2. os erros de medida so aleatrios, com distribuio normal, mdia zero e varincia
constante
3. as variveis explicativas no apresentam correlao entre si

O erro ou resduo a diferena entre os valores previstos pelo modelo de


regresso para a varivel dependente e os valores observados.
O mtodo de estimao por mnimos quadrados pode ser usado para obter
uma funo aproximadora para um conjunto de pontos a partir de seus
valores. Considerando um conjunto de pontos {(t 1,x1), (t2,x2), ..., (tn,xn)},
pode-se utilizar um polinmio de grau p, f(t), como funo aproximadora
para estes pontos, equaes abaixo. Neste caso, o erro do modelo de
regresso para cada ponto do conjunto de dados calculado por i.
f(t) = aktk, k [0, p]
i = xi-yi, i [1, n] em que yi = f(ti).
Os coeficientes ak que minimizam o erro da funo aproximadora f(t),
podem ser calculados solucionando o sistema de equaes obtido a partir
de /ak= 0 em que = i2 = (xi-yi)2.

7.4.3

ANLISE HARMNICA

A anlise harmnica permite representar funes como a sobreposio de


ondas chamadas de harmnicas a partir da generalizao das sries de
Fourier e transformadas de Fourier. Devido s propriedades das sries
ajustadas, a anlise harmnica til na identificao das frequncias e na
caracterizao da dinmica do comportamento de um sistema.
Dada uma da amostra de n pontos {(t 1,x1), (t2,x2), ..., (tn,xn)}, pode-se
encontrar uma funo harmnica que passa em cada um dos pontos
utilizando uma srie de n/2 funes harmnicas:

Modelagem e Simulao Discreta

151

yi = a0 + [akcos(kti)+bksen(kti)] ou yi = a0 + [Akcos(kti-k)], k [1,


n/2] e i [1, n].
em que,
n
n/2
a0
ak, bk
k
T
ti
Ak
k
yi

nmero de pares de dados (t,x) na amostra


nmero de harmnicos da srie analisada
coeficiente independente da srie de Fourrier, conhecido por harmnico
fundamental, a0 = 1/nxi
coeficientes das sries de Fourrier, ak = 2/nyicos(kti) e bk = 2/nyisen(kti)
frequncia angular da onda de x, k = 2k/n
perodo da onda de x, T = n
ordenao numrica dos tempos das medidas de x
amplitude do k-simo harmnico, Ak= (ak2+bk2)1/2
k= tan-1(bk/ak)
valor estimado para a medida de xi

A qualidade do ajuste da srie harmnica deve ser avaliada como, por


exemplo, pelos erros relativos percentuais (erp), coeficiente de correlao
(r) e ndice de concordncia de Willmot (icw):
erp = [(yi-xi)/xi]
r = (xi-xm)(yi-ym)/[(xi-xm)2(yi-ym)2]1/2
icw = (yi-xi)2/(|yi-ym|+|xi-xm|)2
Exemplo 7.3: Ajustar uma srie harmnica para as amostras de um sistema a partir dos
dados: {(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 Harmnica:
n = 12
n/2 = 6
T = 12
a0 = 21.258333

k a[k] b[k] w[k] A[k] fi[k]


1
2
3
4
5
6

3.2861 2.0632 0.5236 3.8801 0.5607


-0.6000 -0.1443 1.0472 0.6171 0.2361
0.0167 0.2000 1.5708 0.2007 1.4877
0.1167 0.1732 2.0944 0.2088 0.9780
0.1973 0.1868 2.6180 0.2717 0.7582
-0.5500 0.0000 3.1416 0.5500 -0.0000

i t[i] x[i] y[i]

Modelagem e Simulao Discreta

152

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 40 - Tempo de resposta do Exemplo 7.1.

7.5 ESTIMAO POR INTERVALOS DE CONFIANA


Se X = { x1, x2, ..., xn } so elementos de uma amostra aleatria, retirada
da populao, que possui o parmetro , desconhecido. O intervalo
definido por (Li,Ls), em que Li e Ls so os limites inferior e superior do
intervalo, denominado intervalo de confiana de com 1- de
probabilidade de cont-lo, isto , P[Li < < Ls]=1-. Os valores de Li e Ls
so calculados a partir das observaes X da amostra, 1- o nvel de
confiana associado ao intervalo e o nome de nvel de significncia
associado ao teste de hipteses. A Tabela 28 estabelece o intervalo de
confiana para a mdia, varincia e desvio padro e suas estatsticas
correspondentes.
Tabela 29 - Intervalo de confiana da mdia (), da varincia ( 2) e do
desvio padro () de amostras aleatrias de tamanho n de uma populao
normal, com nvel de significncia e desconhecido
Modelagem e Simulao Discreta

153

Parmetro Li
Ls

-t/2,n-1s/n1/2
t/2,n-1s/n1/2
2
2
2

(n-1)s / /2,n-1
(n-1)s2/21-/2,n-1
2
2
1/2

[(n-1)s / /2,n-1] [(n-1)s2/21-/2,n-1]1/2

Estatstica
T = (xm- )/(s/n1/2) t-Student com gl = n-1
Q = (n-1)s2/2 2 com gl = n-1
Q = (n-1)s2/2 2 com gl = n-1

em que:

t/2,n-1: ponto crtico da distribuio t-Student, com n-1 graus de liberdade, direita
do qual se encontra a probabilidade (rea) /2
2/2,n-1: ponto crtico da distribuio 2 com n-1 graus de liberdade esquerda do
primeiro ponto de rea /2
21-/2,n-1: ponto crtico da distribuio 2 com n-1 graus de liberdade direita do
primeiro ponto de rea /2

7.6 MTODOS ESTATSTICOS PARA COMPARAR


RESULTADOS SIMULADOS
A maioria dos projetos de anlise de desempenho exigem comparar dois
ou mais sistemas e encontrar o melhor entre eles. A presente discusso,
no entanto, ser limitada a uma comparao de apenas dois sistemas de
cargas de trabalho muito semelhantes. Se houver mais do que dois
sistemas ou se os volumes de trabalho so significativamente diferentes, a
anlise tcnicas destes projetos experimental est alm do escopo deste
texto. O procedimento para nmero de observaes pareadas e no
pareaedas so diferentes. Estes termos e os procedimentos
correspondentes esto descritos a seguir iniciando com o teste para mdia
zero.

7.6.1

TESTE PARA MDIA ZERO

Um uso comum de intervalos de confiana para verificar se um valor


medido significativamente diferente de zero. Ao comparar uma medio
aleatria com zero, as instrues tm de ser feitas probabilisticamente,
isto , a um nvel desejado de confiana. Se o valor medido passa no teste
de diferena, com uma probabilidade maior ou igual ao nvel de confiana
especificado, 100(1-)%, ento o valor significativamente diferente de
zero.
O ensaio consiste na determinao de um intervalo de confiana e
simplesmente verificar se o intervalo inclui zero, isto , intercepta o eixo X.
As quatro possibilidades so mostradas na Figura 41, onde IC usado
como uma abreviao para intervalo de confiana. O IC mostrado por
uma linha vertical vermelha que se estende entre os limites de confiana
inferiores e superiores. A mdia da amostra indicado por um crculo azul.
Modelagem e Simulao Discreta

154

Nos casos (a) e (b), o intervalo de confiana inclui o zero, e, por


conseguinte, os valores de medio no so significativamente diferentes
de zero. Nos casos em (c) e (d), o intervalo de confiana no inclui o zero,
e, por conseguinte, o valor medido significativamente diferente de zero.

Figura 41 - Teste para uma mdia zero, nos casos (a) e (b) os IC incluem
zero e nos casos (c) e (d) os IC no incluem zero.
Exemplo 7.4: A diferena entre os tempos de processamento de duas diferentes
implementaes do mesmo algoritmo foi medida em sete cargas de trabalho
semelhantes. As diferenas entre elas so: {1,5 2,6 -1,8 1,3 -0,5 1,7 2,4}. Podemos dizer
com confiana de 99% que uma aplicao melhor do que a outra?
Tamanho da amostra: n = 7
Mdia: 7,20/7 = 1,03
Varincia da amostra: 2,57
Desvio padro da amostra: 2.571/2= 1,60
Intervalo de confiana: 1.03t1.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 confiana com 99% = (-1,21; 3,27).
O intervalo de confiana inclui o zero. Portanto, no podemos dizer com confiana de
99% que existem diferenas entre as aplicaes.

O procedimento para o teste de mdia zero se aplica igualmente bem a


qualquer outro conjunto de valores. Por exemplo, para testar se a mdia
igual a um dado valor m, um intervalo de confiana construda como
antes, e se o intervalo inclui m a hiptese de que a mdia igual a m no
pode ser rejeitada para o dado nvel de confiana. O exemplo a seguir
ilustra esta extenso do teste.
Exemplo 7.5: Considere novamente os dados do Exemplo 7.4. Para testar se a diferena
igual a 1 com nvel de confiana de 99%, o intervalo de confiana, tal como determinado
no exemplo que (-1,21; 3,27). O intervalo inclui 1. Assim, uma diferena igual a 1
tambm aceita a este nvel de confiana.

Modelagem e Simulao Discreta

155

7.6.2

OBSERVAES PAREADAS

Se conduzir n experimentos em dois sistemas A e B de tal forma que


exista uma correspondncia de um-para-um entre a amostra de ordem i
do sistema A a amostra de ordem i do sistema B, as observaes so
chamados pareadas. Por exemplo, se x i e yi representam o desempenho isima da carga de trabalho, as observaes so chamados emparelhadas.
Se no h correspondncia entre as duas amostras, as observaes so
chamadas no pareadas.
A anlise de observaes pareadas simples. As duas amostras so
tratadas como uma nica amostra de n pares. Para cada par, a diferena
no desempenho calculada. Um intervalo de confiana pode ser
construda para a diferena. Se o intervalo de confiana inclui o zero, os
sistemas no so significativamente diferentes.
Exemplo 7.6: Seis cargas de trabalho semelhantes foram utilizados em dois sistemas. As
observaes so {(5,4;19,1) (16,6;3,5) (0,6;3,4) (1,4;2,5) (0,6;3,6) (7,3;1,7)}. Um
sistema melhor do que o outro?
As diferenas de desempenho constitui uma amostra de seis observaes, {-13,7 13,1
-2,8 -1,1 -3,0 5,6}.
Mdia: -0,32
Varincia da amostra: 81,62
Desvio padro da amostra: 9,03
Intervalo de confiana: -0,32 t(81,62/6)1/2=-0,32 3,69 t
O 0,95 quantil de uma varivel t com cinco graus de liberdade 2,015
IC com intervalo de confiana de 95%: -0,32 (2,015)(3,69)=(-7,75;7,11)
O intervalo de confiana inclui o zero. Portanto, os dois sistemas no so diferentes.

7.6.3

OBSERVAES NO PAREADAS

Dadas duas amostras A e B de tamanhos n a e nb, respectivamente. As


observaes so no pareadas no sentido em que no h correspondncia
entre os valores das amostras. Os passos para determinar o intervalo de
confiana para a diferena entre as mdias das duas amostras requer
fazer a estimativa da varincia e do nmero efetivo de graus de liberdade
de cada amostra. O procedimento o seguinte:
1. Clculo das mdias das amostras (m a e mb): ma = 1/na xai i [1, na] e mb = 1/nb
xbi i [1, nb]
2. Clculo dos desvios padro das amostras (s a e sb): sa = 1/(na-1)(xai-ma)2 e sb = 1/
(nb-1)(xbi-mb)2
3. Clculo da diferena entre as mdias: ma-mb
4. Clculo do desvio padro da diferena das mdias: s = (sa2/na + sb2/nb)1/2
5. Clcule do nmero efetivo de graus de liberdade: v = (s a2/na + sb2/nb)2/[ (sa2/na)2/
(na+1)+(sb2/nb)2/(nb+1)] - 2
6. Clculo do intervalo de confiana para a diferena mdia: ma-mbt1-/2,vs

Modelagem e Simulao Discreta

156

Se o intervalo de confiana inclui o zero, a diferena no significativa a


100(1-)% de confiana. Se o intervalo de confiana no inclui o zero,
ento o sinal da diferena mdia indica qual o sistema melhor.
Exemplo 7.7: O tempo de processamento requerido para executar uma tarefa foi medido
em dois sistemas. O tempo no sistema A foi {5,36, 16,57, 0,62, 1,41, 0,64, 7,26}. Os
tempos no sistema B foram {19,12, 3,52, 3,38, 2,50, 3,60, 1,74}. Os dois sistemas so
significativamente 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 diferena entre as mdias: -0,33
Desvio padro da diferena das mdias = 3,698
Nmero efetivo de graus de liberdade v = 11,921
0,95 quantil da varivel t, com 12 graus de liberdade = 1,71
Intervalo de confiana de 90% para a diferena de mdias = (-6,92, 6,26)
O intervalo de confiana inclui o zero. Portanto, a este nvel de confiana os dois
sistemas no so diferentes.

7.6.4

QUE NVEL ESTATSTICA DE CONFIANA USAR

Tem sido usado o nvel de confiana estatstica de 95%. Isso no deve


levar a concluso que os nveis de confiana devem ser sempre altos. A
escolha do nvel de confiana baseia-se na relao entre a perda se o
parmetro est fora do intervalo e o ganho se o parmetro est dentro do
intervalo. Se a perda alta em comparao com o ganho, os nveis de
confiana devem ser elevados. Se a perda insignificante em comparao
com o ganho, um nvel de confiana menor suficiente.
Ao se deparar com um parmetro que significativo apenas no nvel de
confiana de 50%, no deve ser assumido automaticamente que a
confiana baixa e que no se deve tomar decises com base nesse
parmetro. Da mesma forma, mesmo que um parmetro seja significativo
ao nvel de confiana de 99%, possvel que o nvel de confiana no seja
suficientemente elevado se a perda devida deciso errada for enorme.
O valor do nvel de confiana deve ser contextualizado para cada caso.

7.7 COMPARAO DE SISTEMAS


Um dos usos mais importantes da anlise de sada de simulao diz
respeito comparao de sistemas competidores ou de configuraes
alternativas de sistemas.

Modelagem e Simulao Discreta

157

Neste caso, a simulao muito bem equipada para analisar e comparar


diferentes configuraes de sistemas computacionais. Dentre as tcnicas
disponveis para a comparao de sistemas tem-se o Intervalo de
Confiana da estatstica clssica, j visto, os Nmeros Aleatrios
Antitticos e os Teste de Hipteses que so de uso geral.

7.7.1

TESTES DE HIPTESE

Em algumas aplicaes de simulao, o objetivo decidir se uma


afirmao feita sobre um parmetro falsa ou verdadeira. Por exemplo,
pode-se avaliar as mudanas no tempo de espera em uma fila ao variar a
taxa de chegada. Estas comparaes so s vezes realizadas usando
testes de hipteses, que devem levar em considerao a variao natural
das medidas em simulao.

7.8 QUESTES
1. Como os mtodos RI e ML tratam os transientes?
2. Qual a utilidade de combinar os mtodos RI e remoo de transientes?
3. Qual a utilidade de combinar os mtodos ML e remoo de transientes?

7.9 EXERCCIOS
1. Foram realizadas 4 rodadas de simulao, cada uma com 10 eventos. Os dados de En q,
Es e p0 esto listados abaixo. Calcule:
a) Intervalo de Confiana da mdia () de Enq, Es e U para = 10%, = 5% e = 1%.
b) Intervalo de Confiana da varincia (2) de Enq, Es e p0 para = 10%, = 5% e =
1%.

Enq
i/j
1
2
3
4

1
4
7
12
20

2
3
5
18
3

3
2
4
7
13

4
2
5
2
5

5
3
5
8
4

6
3
4
8
12

7
3
4
6
9

8
4
7
9
7

9
3
4
10
8

10
2
4
6
9

Es
i/j
1
2
3

1
1.83
2.13
2.40

2
1.83
2.04
2.52

3
1.83
2.01
2.4

4
1.71
2.16
2.34

Modelagem e Simulao Discreta

5
1.83
2.13
2.34

6
1.98
1.86
2.31

7
1.86
2.07
2.46

8
1.83
2.07
2.25

9
1.71
1.98
2.46

10
1.74
2.07
2.40

158

4 2.64

2.94

2.58

2.88

2.70

2.55

2.85

2.55

2.79

2.58

p0
i/j
1
2
3
4

1
0.373
0.256
0.181
0.116

2
0.346
0.252
0.108
0.008

3
0.385
0.341
0.200
0.165

4
0.374
0.264
0.171
0.033

5
0.362
0.275
0.216
0.022

6
0.347
0.355
0.230
0.134

7
0.397
0.330
0.197
0.078

8
0.340
0.231
0.195
0.116

9
0.408
0.322
0.149
0.031

10
0.475
0.374
0.278
0.190

2. Foi realizada uma rodadas de simulao com 300 eventos de tempo no sistema, abaixo
relacionados. Calcule:
a) Intervalo de Confiana da mdia () de s para = 10%, = 5% e = 1%.
b) Intervalo de Confiana da varincia (2) de s para = 10%, = 5% e = 1%.
e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

s
0,404
1,955
0,271
0,829
0,499
0,208
2,173
2,431
2,904
0,033
3,395
0,026
0,127
0,059
0,098
2,198
0,024
0,010
0,130
0,300
0,145
0,792
0,019
5,175
0,038
0,256
1,411
0,023
0,155
0,195
4,262
1,030
3,494
3,851
0,285
5,334
0,110
0,023
0,747
2,567
0,100
2,170
0,186
2,922

e
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

s
4,476
0,017
0,015
1,373
1,720
2,215
0,281
0,432
0,059
0,391
0,011
0,123
0,160
2,769
2,005
1,549
0,030
0,058
0,015
0,016
0,053
0,136
2,812
4,056
0,010
0,883
1,156
0,074
4,526
0,026
0,088
0,010
0,053
0,014
4,128
0,190
0,092
0,081
0,352
0,901
3,335
3,692
0,129
0,033

Modelagem e Simulao Discreta

e
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144

s
0,018
3,169
1,342
0,362
0,961
0,225
0,548
0,017
0,301
3,862
0,090
5,624
1,156
0,044
0,082
1,832
0,018
0,018
0,729
0,049
0,132
0,456
0,112
0,112
0,390
0,014
0,602
2,128
1,431
1,960
0,764
5,004
0,093
0,430
1,163
2,220
1,041
0,011
2,125
0,014
4,777
6,056
0,081
0,418

e
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

s
0,016
3,266
0,720
0,309
0,013
1,066
0,012
0,898
0,067
0,189
0,037
1,260
0,092
0,009
0,038
1,421
0,075
0,051
0,042
0,362
0,809
0,015
0,046
5,506
3,050
3,730
0,559
0,010
2,912
0,143
0,359
6,021
0,236
0,009
0,128
0,055
1,142
0,023
2,876
0,055
2,458
0,429
0,016
5,417

e
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

s
0,017
0,408
1,203
0,018
0,036
1,989
0,205
0,101
0,012
2,285
0,913
0,259
0,554
0,090
0,045
3,903
0,037
0,014
0,891
0,114
0,332
0,245
0,236
0,094
2,759
0,475
6,327
0,010
3,210
0,081
0,061
0,052
0,582
0,016
0,013
0,537
0,018
5,487
0,018
2,864
3,516
4,778
5,460
1,292

e
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294

s
1,321
0,716
0,017
0,378
6,478
0,164
0,212
0,057
1,737
0,820
6,078
0,097
0,126
0,137
0,778
0,491
0,029
0,446
0,960
0,101
0,056
2,138
3,339
1,143
0,017
6,556
0,026
0,336
1,251
1,006
3,183
0,091
0,036
0,917
0,013
0,026
0,410
0,009
0,126
0,022
0,009
0,016
0,057
0,022
159

45
46
47
48
49
50

1,588
0,049
0,492
1,356
0,353
0,400

95
96
97
98
99
100

0,016
0,010
1,631
0,304
0,775
0,045

145
146
147
148
149
150

0,146
0,526
0,365
0,021
0,052
0,252

195
196
197
198
199
200

0,126
0,223
0,468
0,230
0,022
0,125

245
246
247
248
249
250

0,507
4,404
0,035
0,115
0,029
0,804

295
296
297
298
299
300

0,422
2,829
0,364
0,020
0,028
0,242

3. Utilize o software QS-RI.cpp descrito no Anexo para realizar B rodadas de simulao,


cada uma com M eventos e calcule os Intervalos de Confiana da mdia () e da
varincia (2) de nq, es, r e s para = 10%, = 5% e = 1% nos casos:
a) B = 10 e M = 1000
b) B = 10 e M = 10000
c) B = 10 e M = 100000
Compare estes resultados.
4. Modifique o software QS-RI.cpp descrito no Anexo para realizar B rodadas de
simulao, cada uma com M eventos e calcule os Intervalos de Confiana da mdia () e
da varincia (2) de p0 para = 10%, = 5% e = 1% nos casos:
a) B = 10 e M = 1000
b) B = 10 e M = 10000
c) B = 10 e M = 100000
Compare estes resultados.
5. Utilize o software QS-ML.cpp descrito no Anexo para realizar rodadas de simulao com
N eventos e calcule os Intervalos de Confiana da mdia () e da varincia ( 2) de iat, st,
nq, p0, w e r para = 10%, = 5% e = 1% nos casos:
a) N = 1000
b) N = 10000
c) N = 100000
Compare estes resultados.

7.10

7.10.1

RECURSOS PEDAGGICOS

SOFTWARE AH.HTML

Foi desenvolvido o software AH.html para realizar a Anlise Harmnica de


um conjunto de amostras ordenadas no tempo, {(t i,xi)}, i = 1, 2, ..., m,
descrito no Algoritmo 7.1, a Tabela 30 apresenta os resultados da sua
execuo.
Algoritmo 7.1: Software AH.html que faz a Anlise Harmnica em HTML5 e
Javascript
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Modelagem e Simulacao :: Analise Harmonica</title>
<meta content="Brauliro Goncalves Leal" name="author">
Modelagem e Simulao Discreta

160

<meta content="Texto da Disciplina Modelagem e Simulacao do Curso de


Engenharia da Computacao da Universidade Federal do Vale do Sao Francisco"
name="description">
<meta content="rede de computadores,sistema computacional,variaveis
aleatorias" name="keywords">
<style>
body { font-family: Arial; font-size: 32px }
table{ font-family: Arial; font-size: 32px }
</style>
<script>
//----------------------------------------------------------------------------// {(ti,xi)} - amostras das medidas ordenadas no tempo, i = 1, 2, ..., m
// xe = a0 + [ancos(nti)+bansen(nti) ] ou por x = a0 + [Ancos(ntin)], n = 1, 2, 3, ..., m.
// m - nmero de pares de dados (t,x) na amostra
// n - nmero de harmnicos das sries analisadas, n = m/2 se m par e n =
(m-1)/2 se m mpar
// a0 - coeficiente das sries de Fourrier, conhecido por harmnico
fundamental, a0 = 1/mxi,
// an, bn - coeficientes das sries de Fourrier, an = 2/nxicos(nti) e bn
= 2/nxisen(nti)
// w - frequncia angular da onda de x, = 2/T
// T - perodo da onda de x, T = m
// ti - ordenao numrica dos tempos das medidas de x, i = 0, 1, ..., T-1
// An - amplitude do n-simo harmnico, An= (an2+bn2)1/2
// fi fin = tan-1(bn/an)
//----------------------------------------------------------------------------function clAH(){
var n, T;
var t = [], x = [], y = [], w = [], A = [], fi = [], a0, a = [], b = [];
this.load = function(){
t[ 0] = 1; x[ 0] = 25.8;
t[ 1] = 2; x[ 1] = 23.3;
t[ 2] = 3; x[ 2] = 24.3;
t[ 3] = 4; x[ 3] = 22.4;
t[ 4] = 5; x[ 4] = 19.8;
t[ 5] = 6; x[ 5] = 15.1;
t[ 6] = 7; x[ 6] = 17.2;
t[ 7] = 8; x[ 7] = 15.6;
t[ 8] = 9; x[ 8] = 20.2;
t[ 9] = 10; x[ 9] = 21.6;
t[10] = 11; x[10] = 22.5;
t[11] = 12; x[11] = 24.0;
n = 12;
}
this.analise = function(){
T = n;
a0 = 0.0;
for( var i = 0; i < n; i++ )
a0 += x[i];
a0 = a0/n;
for( var k = 0; k < n/2; k++ ){
a[k] = b[k] = 0.0;
w[k] = 2.0*Math.PI*(k+1)/n;
for( var i = 0; i < n; i++ ){
Modelagem e Simulao Discreta

161

a[k] += x[i]*Math.cos( w[k]*t[i] );


b[k] += x[i]*Math.sin( w[k]*t[i] );

}
a[k] *= 2.0/n;
b[k] *= 2.0/n;
A[k] = Math.sqrt(a[k]*a[k]+b[k]*b[k]);
fi[k] = Math.atan(b[k]/a[k]);

for( var i = 0; i < n; i++ ){


y[i] = a0;
for( var k = 0; k < n/2; k++ )
y[i] += a[k]*Math.cos(w[k]*t[i]) +
b[k]*Math.sin(w[k]*t[i]);
}
}
this.prn = function(){
var html = "<br> Dados de Entrada";
html += "<table border='1'>";
html += "<tr><td>i<td>t[i]<td>x[i]";
for( var i = 0; i < n; i++ )
html += "<tr><td>" + (i+1) + "<td>" + t[i] + "<td>" + x[i];
html += "</table>";
html += "<br> Analise Harmonica";
html += "<br> n = " + n ;
html += "<br> n/2 = " + n/2;
html += "<br> T = " + T ;
html += "<br> a0 = " + a0.toFixed(5);
html += "<table border='1'>";
html += "<tr><td>k<td>a[k]<td>b[k]<td>w[k]<td>A[k]<td>fi[k]";
for( var k = 0; k < n/2; k++ ){
html += "<tr><td>" + (k+1) + "<td>" + a[k].toFixed(5) + "<td>"
+ b[k].toFixed(5) + "<td>" + w[k].toFixed(5) + "<td>" + A[k].toFixed(5) +
"<td>" + fi[k].toFixed(5);
}
html += "</table>";
html += "<br> Dados de entrada (t,x) e valores estimados(y)";
html += "<table border='1'>";
html += "<tr><td>i<td>t[i]<td>x[i]<td>y[i]";
for( var i = 0; i < n; i++ )
html += "<tr><td>" + (i+1) + "<td>" + t[i] + "<td>" + x[i] +
"<td>" + y[i].toFixed(5);
html += "</table>";
return html;
}
this.erros = function(){
var sum, erp, num, den1, den2, xm, ym, html = "";
sum = erp = xm = ym = 0.0;
for( var i = 0; i < n; i++ ){
erp += (y[i]-x[i])/x[i];
sum += y[i]-x[i];
xm += x[i];
ym += y[i];
}
if( n > 0 ) xm /= n;
if( n > 0 ) ym /= n;
html += "<br> Erros";
html += "<br> sum = " + sum.toFixed(5);
Modelagem e Simulao Discreta

162

html += "<br> erp(%) = " + (erp*100.0).toFixed(5);


num = den1 = den2 = 0.0;
for( var i = 0; i < n; i++ ){
num += (x[i]-xm)*(y[i]-ym);
den1 += Math.pow(x[i]-xm,2.0);
den2 += Math.pow(y[i]-ym,2.0);
}
html += "<br> r = " + (num/Math.sqrt(den1*den2)).toFixed(5);

num = den = 0.0;


for( var i = 0; i < n; i++ ){
num += Math.pow(y[i]-x[i],2.0);
den += Math.pow(Math.abs(y[i]-ym)+Math.abs(x[i]-xm),2.0);
}
html += "<br> icw = " + (1.0-num/den).toFixed(5);
return html;

}
function AHTeste(){
var AH = new clAH();
document.write( "<br> Analise Harmonica " );
AH.load();
AH.analise();
document.write( AH.prn() );
document.write( AH.erros() );
}
</script>
</head>
<body onLoad="AHTeste()"> </body>
</html>

Tabela 30 - Resultados da execuo do Software AH.html do Algoritmo 7.1


Analise Harmonica
Dados de Entrada
i
1
2
3
4
5
6
7
8
9
10
11
12

t[i]
1
2
3
4
5
6
7
8
9
10
11
12

x[i]
25.8
23.3
24.3
22.4
19.8
15.1
17.2
15.6
20.2
21.6
22.5
24

Analise Harmonica
n = 12
n/2 = 6
Modelagem e Simulao Discreta

163

T = 12
a0 = 20.98333
k
1
2
3
4
5
6

a[k]
3.68935
-0.70000
0.33333
-0.08333
0.42732
-1.30000

b[k]
2.40187
-0.63509
0.30000
0.83716
-0.05187
0.00000

w[k]
0.52360
1.04720
1.57080
2.09440
2.61799
3.14159

A[k]
4.40230
0.94516
0.44845
0.84130
0.43046
1.30000

fi[k]
0.57710
0.73681
0.73282
-1.47158
-0.12079
-0.00000

Dados de entrada (t,x) e valores estimados(y)


i
1
2
3
4
5
6
7
8
9
10
11
12

t[i]
1
2
3
4
5
6
7
8
9
10
11
12

x[i]
25.8
23.3
24.3
22.4
19.8
15.1
17.2
15.6
20.2
21.6
22.5
24

y[i]
26.45000
22.65000
24.95000
21.75000
20.45000
14.45000
17.85000
14.95000
20.85000
20.95000
23.15000
23.35000

Erros
sum = -0.00000
erp(%) = -1.51749
r = 0.98344
icw = 0.99092

7.10.2

SOFTWARE QS-RI.CPP

Foi desenvolvido o software QS-RI.cpp para gerar dados para o Mtodo de


Replicaes Independentes, descrito no Algoritmo 7.2. O mtodo Simulate
executado B vezes. O mtodo Start executado juntamente com
Simulate e nele est o comando srand( time(NULL)/b) que inicia o
gerador de nmeros aleatrios com uma nova semente devido diviso
por b que muda a cada execuo de Simulate. O mtodo RI formata um
arquivo csv que pode ser manipulado por planilhas. Os dados de entrada
so B (tamanho da amostra), M (numero de repeticao), l e m. Os dados da
sada devem ser escolhido pelo usurio. A Tabela 31 apresenta os
resultados da sua execuo para a varivel de estado r.
Algoritmo 7.2: Software QS-RI.cpp para gerar dados para o Mtodo de
Replicaes Independentes
Modelagem e Simulao Discreta

164

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>

using namespace std;


class clQS{
private:
int M, B;
double l, m;
vector<int> nq;
vector<double> iat, st, at, bs, es;
public:
double
void
void
void
void
string

clQS
(
F
(
Start
(
Event
(
Simulate(
Nq
(
RI
(

int, int, double, double );


double );
int );
int );
int );
void );
void );

};
clQS::clQS( int M, int B, double l, double m ){
this->M = M;
this->B = B;
this->l = l;
this->m = m;
iat.resize(M);
st .resize(M);
at .resize(M);
bs .resize(M);
es .resize(M);
nq .resize(M);
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0);
return exp(-u/p)/p;
}
void clQS::Start( int b ){
srand(time(NULL)/b);
iat[0]
st [0]
at [0]
es [0]

=
=
=
=

F(l);
F(m);
bs[0] = iat[0];
at[0] + st[0];

}
void clQS::Event( int e ){
iat[e] = F(l);
Modelagem e Simulao Discreta

165

st
at
bs
es

[e]
[e]
[e]
[e]

=
=
=
=

F(m);
iat[e] + at[e-1];
at[e] > es[e-1] ? at[e] : es[e-1];
bs[e] + st[e];

}
void clQS::Simulate( int b ){
Start(b);
for( int e = 1; e < M; e++ )
Event(e);
Nq();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < M; e++ ){
int c = e-1;
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
}
}
string clQS::RI( void ){
stringstream csv;
csv << setprecision(4);
csv << fixed;
csv << "Replicao Independente da varivel de estado r" << endl;
csv << "e;";
for( int m = 0; m < M; m++ )
csv << m+1 << ";";
csv << endl;

for( int b = 0; b < B; b++ ){


csv << b+1 << ";";
Simulate(b+1);
for( int m = 0; m < M; m++ ){
double r = es[m]-at[m];
csv << r << ";";
}
csv << endl;
}
return csv.str();

int main( void ){


int M = 10, // tamanho da amostra
B = 10; // numero de repeticao
double l = 0.120,
m = 0.150;
string str;
clQS *Q = new clQS(M,B,l,m);
str = Q->RI();
ofstream file;
Modelagem e Simulao Discreta

166

file.open("QS.RI.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();

delete Q;
return 0;

Tabela 31 - Resultado da execuo do software QS-RI.cpp descrito no


Algoritmo 7.2, para a varivel de estado r.
b/m
1
2
3
4
5
6
7
8
9
10

1
2
0,2205 0,4658
0,0589 0,0683
1,5568 2,4875
0,0102 0,2565
0,1033 0,5454
0,0524 0,1010
1,4569 0,6872
0,3547 0,7720
0,0727 0,0487
0,0135 1,3452

7.10.3

3
0,6764
0,0192
0,0605
3,0170
0,0106
0,2584
0,5965
0,0718
0,0647
1,4016

4
3,5684
3,8030
0,5135
8,0925
0,0273
0,3056
0,5232
4,6308
0,2770
1,3126

5
1,4313
3,6830
0,7012
8,1072
0,0678
1,4460
0,7389
4,6328
0,0142
1,7056

6
0,1118
1,4185
0,3493
5,6588
0,0951
0,0875
3,2410
2,5152
0,5122
2,3530

7
0,0137
2,9933
0,2714
5,7686
0,2516
0,0989
3,1811
0,5294
0,7547
2,1318

8
0,4166
2,2738
0,9894
5,8997
2,2037
0,1097
2,1061
0,3758
5,0301
2,8878

9
1,1554
0,0358
3,8098
5,9111
0,9182
0,4098
5,9367
6,2829
2,7159
2,3025

10
2,2813
0,2932
4,1076
3,2432
0,6914
0,5425
5,9766
2,8809
2,8699
2,6071

SOFTWARE QS-ML.CPP

Foi desenvolvido o software QS-ML.cpp para gerar dados para o Mtodo de


Mdias de Lotes, descrito no Algoritmo 7.3. O mtodo ML formata um
arquivo csv que pode ser manipulado por planilhas. Os dados de entrada
so N, l e m. Os dados da sada so e, iat, st, at, bs, es, nq, p0, w e r. A
Tabela 32 apresenta os resultados da sua execuo.
Algoritmo 7.3: Software QS-ML.cpp para gerar dados para o Mtodo de
Mdias de Lotes em C++
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>

using namespace std;


class clQS{
private:
int N;
double l, m;
vector<int> nq;
vector<double> iat, st, at, bs, es, p0;
Modelagem e Simulao Discreta

167

public:
double
void
void
void
void
void
string

clQS
(
F
(
Start
(
Event
(
Simulate (
Nq
(
Calculate(
ML
(

int, double, double );


double );
void );
int );
void );
void );
void );
void );

};
clQS::clQS( int N, double l, double m ){
this->N = N;
this->l = l;
this->m = m;
iat.resize(N);
st .resize(N);
at .resize(N);
bs .resize(N);
es .resize(N);
nq .resize(N);
p0 .resize(N);
srand(time(NULL));
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0);
return -p*log(u);
}
void clQS::Start( void ){
iat[0] = F(l);
st [0] = F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
void clQS::Event( int e ){
iat[e] = F(l);
st [e] = F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
void clQS::Simulate( void ){
Start();
for( int e = 1; e < N; e++ )
Event(e);
Nq();
Calculate();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < N; e++ ){
int c = e-1;
Modelagem e Simulao Discreta

168

nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}

}
void clQS::Calculate( void ){
for( int e = 0; e < N; e++ ){
double T = es[e];
p0[e] = bs[0];
for( int i = 1; i < e; i++ )
if( at[i] > es[i-1] ) p0[e] += at[i]-es[i-1];
p0[e] /= T;
}
}
string clQS::ML( void ){
stringstream csv;
csv << setprecision(4);
csv << fixed;
csv << "e;iat;st;at;bs;es;nq;p0;w;r" << endl;
for( int e = 0; e < N; e++ ){
csv << e << ";"
<< iat[e] << ";"
<< st [e] << ";"
<< at [e] << ";"
<< bs [e] << ";"
<< es [e] << ";"
<< nq [e] << ";"
<< p0 [e] << ";"
<< bs[e]-at[e] << ";" // w
<< es[e]-at[e] << ";" // r
<< endl;
}
return csv.str();
}
int main( void ){
int N = 100;
double l = 0.120,
m = 0.150;
string str;
clQS *Q = new clQS(N,l,m);
Q->Simulate();
str = Q->ML();
ofstream file;
file.open("QS.ML.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();

delete Q;
return 0;

Modelagem e Simulao Discreta

169

Tabela 32 - Resultado parcial da execuo do software QS-ML.cpp descrito


no Algoritmo 7.3
e
0
1
2
...
97
98
99

iat
0,009
0,245
0,010
...
0,022
0,113
0,129

st
0,186
0,188
0,035
...
0,222
0,362
0,177

at
0,009
0,254
0,264
...
10,799
10,912
11,041

Modelagem e Simulao Discreta

bs
0,009
0,254
0,441
...
13,122
13,343
13,705

es
0,195
0,441
0,476
...
13,343
13,705
13,882

nq
0
0
1
...
18
19
20

p0
0,046
0,020
0,141
...
0,014
0,014
0,014

w
0,000
0,000
0,178
...
2,323
2,431
2,664

r
0,186
0,188
0,212
...
2,544
2,793
2,841

170

8 SIMULAO DE SISTEMAS
COMPUTACIONAIS

So diversos os sistemas computacionais, a Figura 42 representa um


exemplo simples de um sistema de computao, constituido por um
Servidor Web conectado Internet por meio de um Roteador. Neste
sistema, mensagens da Internet so recebidas pelo Roteador que as envia
para o Servidor Web. O Servidor Web recebe estas mensagens, processaas, e as enviam de volta para o Roteador. O Roteador recebe as
mensagens 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 solicitao feita a um elemento
destes sistemas.
Considerando o sistema computacional da Figura 42, se a taxa de servios
de chegada no Roteador for menor ou igual que sua capacidade de
processamento ento ele enviar os servios ao Servidor Web num fluxo
contnuo seno servios sero armazenados na memria do roteador para
posterior processamento. Neste caso, diz-se que os servios esto sendo
colocados em uma fila do Roteador. Semelhante raciocnio vlido para os
demais elementos do sistema.

Figura 42 - Sistema computacional, servidor web conectado a rede internet


por meio de um roteador.
O sistema computacional da Figura 42 pode ser modelado por dois
sistemas de filas em srie como mostrado na Figura 43, o primeiro para o
processo de chegada no Roteador e o segundo para o Servidor Web. A
Modelagem e Simulao Discreta

171

taxa de entrada de servios do Roteador a que chega da Internet. Aps


processar os servios, o Roteador os envia para o Servidor Web. A taxa de
entrada de servios no Servidor Web a taxa de sada do Roteador. Aps
processar os servios, o Servidor Web os envia para o Roteador. A taxa de
entrada de servios no Roteador a mesma que sai do Servidor Web. Por
fim, aps processar os servios, o Roteador os envia para a Internet.

Figura 43 - Modelo de um sistema computacional por meio de filas.


Pode-se modelar os elementos de sistemas computacionais por meio de
uma rede de sistemas de filas, um sistema de filas para cada elemento.
A arquitetura de um sistema de hardware mostrado na Figura 44, um
diagrama de blocos de nvel de sistema do Sun Fire X4150 Server com
Serial Attached SCSI SAS. Estes servidores foram projetados para
fornecer o melhor desempenho com alta confiabilidade e baixo consumo
de energia. Eles possuim mltiplos processadores que se conectam a um
controlador de memria Northbridge Hub (MCH) que, por sua vez, se
conecta a um Southbridge I/O (IOH) e seus subsistemas (Sun
Microsystems, 2016).

Modelagem e Simulao Discreta

172

Figura 44 - Diagrama de blocos do Sun Fire X4150 Server com Serial


Attached SCSI SAS (Sun Microsystems, 2016).
A simulao de sistemas computacionais permite estudar seu
comportamento de modo detalhado e fazer previses 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 definida. As QSN's
A/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, em
seguida, o seu modelo computacional ser discutido e implementado em
C++ e Javascript. A dinmica temporal de uma QSN tpica ser
apresentada em HTML, permitindo o acompanhamento grfico de suas
variveis de entrada, de estado e de sada.
No Captulo 2 foi apresentado os Modelos Conceitual e Computacional de
Sistemas de Fila M/M/1. A diferena principal entre os modelos de uma
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 sero os
dados de sada dos QS anteriores, Figura 45.

Figura 45 - 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 prximo Sistema de Fila.

8.2 MODELO CONCEITUAL DE REDES DE


SISTEMAS DE FILA
Um Modelo Conceitual de uma QSN de Filas M/M/1 ser apresentado e
discutido e, a partir dele, Modelos Conceituais de QSN's de Filas M/M/c/K/m
podem ser derivados dele.

Modelagem e Simulao Discreta

173

As tarefas chegam uma por vez e so processadas igualmente uma por


vez nos Sistemas de Fila das RSF's. Desta forma, os Sistemas de Fila de
uma RSF possuem trs variveis bsicas:
1. taxa de chegada () ou intervalo entre chegadas (iat - interarrival time) em que
= 1/E[iat]
2. taxa de servio () ou tempo de servio (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 46 ilustra o Modelo Conceitual de um Sistemas de Fila M/M/1 de


uma QSN. Conforme enfatizado, a sada dos QS's torna-se importante no
caso de QSN's.

Figura 46 - Modelo conceitual de um Sistemas de Fila em rede.


Numa Rede de Sistemas de Filas (QSN) as tarefas deve ser processados
em cada um dos Sistemas de Filas, sequencialmente, de acordo com a
arquitetura da rede. A sada do Servidor anterior serve de entrada para a
Fila do prximo Sistema de Fila. Os dados de entrada da Rede de Filas so
os intervalos entre chegadas na primeira Fila e os dados de sada de cada
Servidor do Sistema de Filas. Os parmetros da Rede de Filas so:

nmero de QS, qs
os valores de A/B/c/K/m/Z de cada QS
sequncia dos eventos, S
nmero de elementos da sequncia S, s
nmero de eventos a serem simulados, N
iat do primeiro QS
st de cada QS

Ser utilizado o estudo de caso da Figura 47 para apresentar o modelo


conceitual de Redes de Sistemas de Filas tendo em vista que h muitas
combinaes possveis de Sistemas de Filas. A partir de deste estudo de
caso, pode-se generalizar o modelo proposto e adapt-lo a outras redes.
Modelagem e Simulao Discreta

174

Figura 47 - Esquema do estudo de caso de uma Rede de Sistemas de Fila.


A QSN da Figura 47 possui 4 QS, numeradas de 0 a 3, QS0, QS1, QS2 e
QS3. Os parmetros desta rede so:

qs = 4
os QS da RSF so M/M/1
sequncia dos eventos: 0 1, 1 2, 2 1, 1 3, logo S = [ 0, 1, 2, 1, 3 ] e s = 5
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0, st1, st2, st3 ]

Em resumo, os parmetrso da QSN da Figura 47, para 2000 eventos so:


qs = 4, s = 5, S = [ 0, 1, 2, 1, 3 ], N = 2000, D = [ iat0, st0, st1, st2, st3 ].
Nota sobre a sequncia de eventos numa QSN
O nvel de detalhes do modelo de sequncia dos eventos a viso de pior
caso. A trajetria de uma tarefa numa rede pode variar com a natureza da
prpria tarefa e da rede, assim h vrias sequncias possveis para as
tarefas. Visando uma modelagem simples, adotou-se o critrio do pior
caso: todas tarefas seguem a maior sequncia possvel na rede.
Esta abordagem simplifica:

a compreenso do problema
o modelo conceitual
o modelo computacional

Esta abordagem tambm a favor da segurana da soluo uma vez que


superestima os resultados.

8.3 VALORES INICIAIS DA SIMULAO


Inicialmente, o cronmetro zerado, as Filas esto vazias e os Servidores
esto ociosos. Na Tabela 33 esto apresentados os valores inciais de iat,
at, bs, es e idt de cada QS para S = [ 0, 1, 2, 1, 3 ]. Os clculos levam em
conta as equaes abaixo:
Modelagem e Simulao Discreta

175

at[1] = bs[1] = iat[1]


es[1] = at[1] + st[1]

Tabela 33 - Valores iniciais de iat, at, bs, es e idt dos SF da primeira


sequncia S
e
1
1
1
2
1

qs iat
0 iat0
1 iat1
2 iat2
1 iat1
3 iat3

=
=
=
=

idt0
idt1
idt2
idt1

at
at0
at1
at2
at1
at3

=
=
=
=
=

iat0
iat1
iat2
iat1+at1
iat3

bs
bs0
bs1
bs2
bs1
bs3

=
=
=
=
=

es
at0
es0
at1
es1
at2
es2
at1 > es2 ? at1 : es2 es1
at3
es3

=
=
=
=
=

bs0+st0
bs1+st1
bs2+st2
bs1+st1
at3+st3

idt
idt0
idt1
idt2
idt1
idt1

=
=
=
=
=

es0
es1
es2
es1[2] - es1[1]
es1

Como pode ser observado na Tabela 33, os valores de QS0, QS1, QS2 e QS3
so calculados para e = 0 conforme as equaes dos valores iniciais mas,
devido sequncia S, 0 1 2 1 3, QS 3 tambm requer os clculos
referentes a e = 1. Para e = 1, QS2 antecede QS1 e, neste caso, os valores
calculados para de QS1 devem levar em conta os valores de QS 2, em
particular bs1 depende de at1 e es2. O clculo 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 sequncia, ela determina
a inter-relao dos valores iniciais. O nmero de eventos iniciais tambm
dependem da sequncia, QS1 teve dois eventos iniciais e os demais
apenas um evento cada.

8.3.1

CLCULO DE IAT

Os valores de iat de QS0 so dados de entrada, para os demais QS, os


valores de iat so iguais ao idt do QS anterior da sequncia. Como foi
visto, apenas QS0 requer dados de iat, os valores de iat demais SF's so
calculados a partir dos valores de at.

8.3.2

CLCULO DE AT, BS, ES E IDT

Tomando i [0,qs) como ndice de QS na sequncia, 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 so calculados de forma semelhante ao


Sistema de Fila Simples, j descritos no Captulo 2.

Modelagem e Simulao Discreta

176

8.3.3

CLCULO DE NQ

O clculo de nq de cada QS feito de forma semelhante ao Sistema de


Fila 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 visto
na Tabela 34. Ele constitudo por trs classes, a saber: clEvent, clQS e
clQSN. A classe clQSN possui um vetor de classes clQS que, por sua vez,
possui um vetor de classes clEvent. O mtodo Config, configura os dados
da RSF, Start permite calcular os valores iniciais, Simulate executa as
simulaes fazendo uso de Open (para rede aberta) ou Close (para rede
fechada). Por fim, Nq calcula os valores de nq de cada QS. O clculo das
estatsticas no est implementado.

Tabela 34 - Classe clMM1 do Modelo Computacional dos Sistemas de Fila


M/M/1
clEvent
iat
st
at
bs
es
idt
nq
clQS
l
m
clEvent Event[]

clQSN
s, S[]
clQS QS[]
Config(qs, D[], s, S[])
F()
Start(i, f)
Open(i, f)
Close(i, f)
Nq()
Simulate()

Veja mais detalhes a seguir:


Tabela 35 - Descrio das classes do Modelo Computacional dos Sistemas
de Fila M/M/1
clEvent
clQS

eventos dos QS com as variveis de estado iat, ts, at, bs, idt e nq
so os QS da QSN, com os parmetros l (em substituio a ) e m (em
substituio a ) alm do vetor de eventos Event[]

Modelagem e Simulao Discreta

177

representa a QSN, com os parmetros s, o vetor S[], alm do vetor de QS[] e


os mtodos:

clQSN

Config(qs,D[],s,S[]) para configurar a rede, definindo o nmero de QS,


os valores de l e m para QS0 e de m para os demais QS, o vetor
sequncia 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 simulao em que QS i
anterior a QSf
Open(i,f) simula um evento de uma RSF fechada, em que QSi anterior
a QSf
Close(i,f) simula um evento de uma RSF aberta, em que QSi anterior
a QSf
Nq() calcula os valores do tamanho da fila dos QS
Simulate() simula a sequncia de eventos de uma RSF aberta ou
fechada

O software QSN.cpp, escrito em C++, implementa o modelo


computacional de um QNS M/M/1 e pode ser visto no Algoritmo 8.1. Os
resultados sa simulao do software QSN.cpp esto apresentados na
Tabela 37. Devido ao uso de nmeros aleatrios, a execuo do QSN.cpp
pode variar a cada execuo.
Nota sobre as funes Open e Close de QSN.cpp:
O algoritmo QSN.cpp no preciso devido s funes Open e Close. Estas
funes simulam corretamente os processos as tarefas visitam uma nica
vez cada QS do sistema.
Quando h mais de uma visita em uma QS pode ocorrer que uma a tarefa
anterior chegue entre as visitas de cada ciclo, neste caso as funes Open
no funcionam corretamente pois elas foram codificadas para considerar
os valores da ltima visita do ciclo.
Estas incertezas no inviabilizam o uso do QSN.cpp e elas podem ser
minimizadas utilizando os valores mdios de repeties independentes.
Esta abordagem, embora tenham erros, tem grande valor pedaggico pois
permite a compreenso dos processos de sistema de filas de modo mais
simples.
Algoritmo 8.1: Software QSN.cpp para simulao uma Rede de Sistemas
de Fila M/M/1
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>

Modelagem e Simulao Discreta

178

using namespace std;


class clEvent{
public:
int nq;
double iat, st, at, bs, es, idt;
};
class clQS{
public:
double l, m;
double T, Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq,
Ew, Vw, Es, Vs, Er, Vr, p0, U;
vector<clEvent> Event;
};
class clQSN{
private:
vector<clQS> QS;
int s, *S;
double F
( double );
void
Start( int, int );
void
Open ( int, int );
void
Close( int, int );
public:
void
Config
( int, double*, int, int* );
void
Nq
( void );
void
Simulate ( void );
void
Calculate( void );
string Html
( void );
};
void clQSN::Config( int q, double *D, int s, int *S ){
this->s = s;
this->S = S;
QS.clear();
for( int i = 0; i < q; i++ ){
clQS x;
x.l = 0.0;
if( i == 0 ) x.l = D[i];
x.m = D[i+1];
QS.push_back(x);
}
for( int i = 1; i < s; i++ ){
Start(S[i-1],S[i]);
}
srand( time(NULL) );
}
double clQSN::F( double x ){
double u = double(rand()+1)/(RAND_MAX+2.0);
return -x*log(u);
}
void clQSN::Start( int i, int f ){
clEvent e, b, a;
if( i == 0 ){
e.iat = F( QS[i].l );
e.st = F( QS[i].m );
e.at = e.iat;
e.bs = e.at;
Modelagem e Simulao Discreta

179

e.es = e.at + e.st;


e.idt = e.es;
e.nq = 0;
QS[i].Event.push_back(e);
}
b = QS[i].Event[ QS[i].Event.size()-1 ];
e.iat = b.es;
e.st = F( QS[f].m );
e.at = b.es;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
int n = QS[f].Event.size();
if( n > 0 ){
b = QS[f].Event[n-1];
e.idt = e.es - b.es;
}
else e.idt = e.es;
e.nq = 0;
QS[f].Event.push_back(e);

}
void clQSN::Open( int i, int f ){
clEvent e, b;
b = QS[i].Event[ QS[i].Event.size()-1 ];
if( i == 0 ){
e.iat = F( QS[i].l );
e.st = F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[i].Event.push_back(e);
}
e.iat = b.idt;
e.st = F( QS[f].m );
b = QS[f].Event[ QS[f].Event.size()-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[f].Event.push_back(e);

}
void clQSN::Close( int i, int f ){
clEvent e, b;
b = QS[i].Event[ QS[i].Event.size()-1 ];
e.iat = b.idt;
e.st = F( QS[f].m );
b = QS[f].Event[ QS[f].Event.size()-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[f].Event.push_back(e);
}

Modelagem e Simulao Discreta

180

void clQSN::Nq( void ){


for( int q = 0; q < QS.size(); q++ )
for( int e = 1; e < QS[q].Event.size(); e++ ){
QS[q].Event[e].nq = 0;
for( int c = 0; c < e; c++ )
if( QS[q].Event[e].at < QS[q].Event[c].es )
QS[q].Event[e].nq += 1;
}
}
void clQSN::Simulate( void ){
for( int i = 1; i < s; i++ ){
Open(S[i-1],S[i]);
//Close(S[i-1],S[i]);
}
}
void clQSN::Calculate( void ){
for( int q = 0; q < QS.size(); q++ ){
int N = QS[q].Event.size();
double Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw,
Es, Vs, Er, Vr, p0, U, T;
Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Vnq = Ew = Vw =
Es = Vs = Er = Vr = p0 = U = T = 0.0;
for( int e =
Eiat +=
Est +=
Eidt +=
Enq +=
Ew
+=
Es
+=
Er
+=
}
Eiat /= N;
Est /= N;
Eidt /= N;
Enq /= N;
Ew
/= N;
Es
/= N;
Er
/= N;

0; e < QS[q].Event.size(); e++ ){


QS[q].Event[e].iat;
QS[q].Event[e].st;
QS[q].Event[e].idt;
QS[q].Event[e].nq;
QS[q].Event[e].bs-QS[q].Event[e].at;
QS[q].Event[e].es-QS[q].Event[e].bs;
QS[q].Event[e].es-QS[q].Event[e].at;

for( int e =
Viat +=
Vst +=
Vidt +=
Vnq +=
Vw
+=
Vs
+=
Vr
+=
}

0; e < QS[q].Event.size(); e++ ){


pow(QS[q].Event[e].iat
pow(QS[q].Event[e].st
pow(QS[q].Event[e].idt
pow(QS[q].Event[e].nq
pow(QS[q].Event[e].bs-QS[q].Event[e].at
pow(QS[q].Event[e].es-QS[q].Event[e].bs
pow(QS[q].Event[e].es-QS[q].Event[e].at

Viat
Vst
Vidt
Vnq
Vw
Vs
Vr

/=
/=
/=
/=
/=
/=
/=

Eiat,2.0);
Est ,2.0);
Eidt,2.0);
Enq ,2.0);
Ew ,2.0);
Es ,2.0);
Er ,2.0);

(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);

T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
Modelagem e Simulao Discreta

181

for( int e = 1; e < N; e++ )


if( QS[q].Event[e].at > QS[q].Event[e-1].es )
p0 += QS[q].Event[e].at-QS[q].Event[e-1].es;
p0 /= T;
U
= 1.0-p0;

QS[q].T
QS[q].Eiat
QS[q].Viat
QS[q].Est
QS[q].Vst
QS[q].Eidt
QS[q].Vidt
QS[q].Enq
QS[q].Vnq
QS[q].Ew
QS[q].Vw
QS[q].Es
QS[q].Vs
QS[q].Er
QS[q].Vr
QS[q].p0
QS[q].U

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

T;
Eiat;
Viat;
Est;
Vst;
Eidt;
Vidt;
Enq;
Vnq;
Ew ;
Vw ;
Es ;
Vs ;
Er ;
Vr ;
p0 ;
U ;

}
string clQSN::Html( void ){
stringstream htm;
htm << setprecision(4);
htm << fixed;
htm
htm
htm
htm

<<
<<
<<
<<

"<html><style> table {font-size:20px;}</style><body>";


"<br> QSN Table";
"<br> QS Number: " << QS.size();
"<br> Sequence: ";

for( int i = 1; i < s; i++ ){


htm << S[i-1] << " - " << S[i] << "; ";
}
htm << "<br><table border='1' cellpadding='0' cellspacing='0'>";
htm << "<tr><td>QS<td>l<td>m";
for( int qs = 0; qs < QS.size(); qs++ ){
htm << "<tr>"
<< "<td>" << qs
<< "<td>" << QS[qs].l
<< "<td>" << QS[qs].m;
}
htm << "</table><br><br>";
for( int qs = 0; qs < QS.size(); qs++ ){
htm << "<br> QS: " << qs;
htm << "<br><table border='1' cellpadding='0' cellspacing='0'>";
htm << "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>idt<td>nq";
for( int e = 0; e < QS[qs].Event.size(); e++ ){
htm << "<tr>"
<< "<td>" << e
<< "<td>" << QS[qs].Event[e].iat
<< "<td>" << QS[qs].Event[e].st
<< "<td>" << QS[qs].Event[e].at
Modelagem e Simulao Discreta

182

<<
<<
<<
<<

"<td>"
"<td>"
"<td>"
"<td>"

<<
<<
<<
<<

QS[qs].Event[e].bs
QS[qs].Event[e].es
QS[qs].Event[e].idt
QS[qs].Event[e].nq;

}
htm << "</table>";
htm <<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<

"<br>Summary<br>"
"<br> QS
= " <<
"<br> N
= " <<
"<br> T
= " <<
"<br> Eiat = " <<
"<br> Viat = " <<
"<br> Est = " <<
"<br> Vst = " <<
"<br> Eidt = " <<
"<br> Vidt = " <<
"<br> Enq = " <<
"<br> Vnq = " <<
"<br> Ew
= " <<
"<br> Vw
= " <<
"<br> Es
= " <<
"<br> Vs
= " <<
"<br> Er
= " <<
"<br> Vr
= " <<
"<br> p0
= " <<
"<br> U
= " <<
"<br><br><br>";

qs
QS.size()
QS[qs].T
QS[qs].Eiat
QS[qs].Viat
QS[qs].Est
QS[qs].Vst
QS[qs].Eidt
QS[qs].Vidt
QS[qs].Enq
QS[qs].Vnq
QS[qs].Ew
QS[qs].Vw
QS[qs].Es
QS[qs].Vs
QS[qs].Er
QS[qs].Vr
QS[qs].p0
QS[qs].U

}
htm << "</html>";
return htm.str();

}
int main( void ){
int
N = 10, qs = 4;
int
s = 6, S[] = { 0, 1, 2, 1, 2, 3 };
double D[] = { 0.010, 0.040, 0.060, 0.080, 0.100 };
string str;
clQSN QSN;
QSN.Config(qs,D,s,S);
for( int e = 0; e < N; e ++ )
QSN.Simulate();
QSN.Nq();
QSN.Calculate();
str = QSN.Html();
ofstream file;
file.open("QSN-Basico.C++.out.html");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();
return 0;
}

Modelagem e Simulao Discreta

183

A arquitetura do sistema definida pelas variveis qs, D, s e S. A primeira


indica o nmero de elementos da arquitetura e a segunda o desempenho
deles, descrevendo assim a parte fsica da arquitetura. As duas ltimas
variveis, por sua vez, indicam o caminho percorrido por cada pacote
dentro a arquitetura fsica definida.
Vale ressaltar o primeiro elemento do vetor de visitas deve ser 0, e que,
em caso de redes abertas (configurao padro), no podem haver mais
visitas ao mesmo.
As variveis utilizadas no software QSN.cpp est sumarizada na Tabela 36
e os seus diagramas de classes e atividades so mostrados na Figura 48 e
na Figura 49, respectivamente.
Tabela 36 - Variveis utilizadas no software QSN.cpp
Nome
N
l
m
qs
D
s
S

iat
st
at
bs
es
idt
nq
w
s
r
T
p0
U
E[var]
V[var]

Descrio

Entradas
Nmero de eventos
Mdia do intervalo entre entradas
Mdia do tempo de servio (st)
Nmero de elementos da arquitetura
iat do sistema seguido dos tempos de servio dos qs elementos
Nmero de visitas por pacote
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
Variveis
Intervalo entre chegadas de tarefas na fila
Tempo de servio no servidor
Tempo da chegada da tarefa na fila
Tempo da chegada da tarefa no servidor
Tempo da sada da tarefa no servidor
Intervalo entre sadas de tarefas na fila
Comprimento da fila
Tempo na fila
Tempo no servidor
Tempo do sistema de fila
Durao da simulao
Probabilidade de servidor ocioso
Utilizao do servidor
Modificadores
Mdia da varivel [var]
Varincia da varivel [var]

Modelagem e Simulao Discreta

184

Figura 48 - Diagrama de classes do software QSN.cpp

Figura 49 - Diagrama de atividades do software QSN.cpp


Tabela 37 - Resultado da execuo do software QSN.cpp descrito na Tabela
8.3
QSN Table
QS Number: 4
Sequence: 0 - 1; 1 - 2; 2 - 1; 1 - 2; 2 3;
QS
0
1
2
3

l
0,0100
0,0000
0,0000
0,0000

m
0,0400
0,0600
0,0800
0,1000

Modelagem e Simulao Discreta

185

QS:
e
0
1
2
3
4
5
6
7
8
9
10

0
iat
0,0668
0,0029
0,0058
0,0097
0,0000
0,0071
0,0009
0,0010
0,0104
0,0068
0,0094

st
0,0229
0,0411
0,0186
0,0386
0,0860
0,0203
0,0354
0,0745
0,0326
0,0394
0,0055

at
0,0668
0,0698
0,0756
0,0853
0,0853
0,0924
0,0933
0,0943
0,1047
0,1114
0,1209

bs
0,0668
0,0898
0,1308
0,1494
0,1880
0,2740
0,2943
0,3298
0,4043
0,4369
0,4763

es
0,0898
0,1308
0,1494
0,1880
0,2740
0,2943
0,3298
0,4043
0,4369
0,4763
0,4818

idt
0,0898
0,0411
0,0186
0,0386
0,0860
0,0203
0,0354
0,0745
0,0326
0,0394
0,0055

nq
0
1
2
3
4
4
5
6
7
8
9

st
0,0986
0,0322
0,0487
0,0478
0,0218
0,1231
0,0118
0,0351
0,0293
0,0680
0,1284
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372

at
0,0898
0,2054
0,2951
0,3949
0,4360
0,4923
0,5109
0,5808
0,6194
0,7760
0,8620
0,9075
0,9278
1,0724
1,1078
1,2046
1,2791
1,2819
1,3145
1,4034
1,4427
1,4576

bs
0,0898
0,2054
0,2951
0,3949
0,4427
0,4923
0,6154
0,6272
0,6623
0,7760
0,8620
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431

es
0,1884
0,2375
0,3439
0,4427
0,4646
0,6154
0,6272
0,6623
0,6916
0,8441
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431
1,6803

idt
0,1884
0,0492
0,1063
0,0989
0,0218
0,1509
0,0118
0,0351
0,0293
0,1525
0,1464
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372

nq
0
0
0
0
1
0
1
2
2
0
0
1
2
2
2
2
3
3
3
4
4
4

Summary
QS = 0
N=4
T = 0,4818
Eiat = 0,0110
Viat = 0,0004
Est = 0,0377
Vst = 0,0006
Eidt = 0,0438
Vidt = 0,0008
Enq = 4,4545
Vnq = 8,2727
Ew = 0,1673
Vw = 0,0161
Es = 0,0377
Vs = 0,0006
Er = 0,2050
Vr = 0,0160
p0 = 0,1387
U = 0,8613
QS:
e
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

1
iat
0,0898
0,2054
0,0898
0,0998
0,0411
0,0563
0,0186
0,0699
0,0386
0,1566
0,0860
0,0455
0,0203
0,1446
0,0354
0,0968
0,0745
0,0028
0,0326
0,0889
0,0394
0,0149

Modelagem e Simulao Discreta

186

Summary
QS = 1
N=4
T = 1,6803
Eiat = 0,0703
Viat = 0,0025
Est = 0,0607
Vst = 0,0017
Eidt = 0,0764
Vidt = 0,0030
Enq = 1,6364
Vnq = 2,0519
Ew = 0,0824
Vw = 0,0057
Es = 0,0607
Vs = 0,0017
Er = 0,1431
Vr = 0,0054
p0 = 0,2057
U = 0,7943
QS:
e
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

2
iat
0,1884
0,2375
0,1063
0,0989
0,0218
0,1509
0,0118
0,0351
0,0293
0,1525
0,1464
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372

st
0,0170
0,0587
0,0522
0,1305
0,0563
0,0516
0,0699
0,0162
0,1566
0,0509
0,0298
0,2852
0,1446
0,0040
0,0968
0,2081
0,0028
0,0330
0,0889
0,1156
0,0149
0,0202

at
0,1884
0,2375
0,3439
0,4427
0,4646
0,6154
0,6272
0,6623
0,6916
0,8441
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431
1,6803

bs
0,1884
0,2375
0,3439
0,4427
0,5733
0,6296
0,6812
0,7511
0,7673
0,9239
0,9904
1,0981
1,3834
1,5279
1,5319
1,6287
1,8367
1,8396
1,8725
1,9614
2,0770
2,0919

es
0,2054
0,2963
0,3961
0,5733
0,6296
0,6812
0,7511
0,7673
0,9239
0,9748
1,0203
1,3834
1,5279
1,5319
1,6287
1,8367
1,8396
1,8725
1,9614
2,0770
2,0919
2,1121

idt
0,2054
0,0909
0,0998
0,1772
0,0563
0,0516
0,0699
0,0162
0,1566
0,0509
0,0455
0,3631
0,1446
0,0040
0,0968
0,2081
0,0028
0,0330
0,0889
0,1156
0,0149
0,0202

nq
0
0
0
0
1
1
2
2
2
1
0
0
1
2
3
3
4
5
4
4
5
6

Summary
QS = 2
N=4
T = 2,1121
Eiat = 0,0849
Viat = 0,0041
Est = 0,0774
Vst = 0,0052
Eidt = 0,0960
Vidt = 0,0075
Enq = 2,0909
Modelagem e Simulao Discreta

187

Vnq = 3,6104
Ew = 0,1622
Vw = 0,0241
Es = 0,0774
Vs = 0,0052
Er = 0,2397
Vr = 0,0241
p0 = 0,1933
U = 0,8067
QS:
e
0
1
2
3
4
5
6
7
8
9
10

3
iat
0,2963
0,1772
0,0516
0,0162
0,0509
0,3631
0,0040
0,2081
0,0330
0,1156
0,0202

st
0,1049
0,0211
0,0283
0,2003
0,3328
0,0777
0,0149
0,0153
0,4062
0,0520
0,1005

at
0,2963
0,4735
0,5251
0,5413
0,5922
0,9553
0,9592
1,1673
1,2003
1,3159
1,3361

bs
0,2963
0,4735
0,5251
0,5533
0,7536
1,0864
1,1641
1,1790
1,2003
1,6065
1,6585

es
0,4012
0,4946
0,5533
0,7536
1,0864
1,1641
1,1790
1,1943
1,6065
1,6585
1,7589

idt
0,4012
0,0934
0,0587
0,2003
0,3328
0,0777
0,0149
0,0153
0,4122
0,0520
0,1005

nq
0
0
0
1
1
1
2
1
0
1
2

Summary
QS = 3
N=4
T = 1,7589
Eiat = 0,1215
Viat = 0,0152
Est = 0,1231
Vst = 0,0181
Eidt = 0,1599
Vidt = 0,0232
Enq = 0,8182
Vnq = 0,5636
Ew = 0,1031
Vw = 0,0157
Es = 0,1231
Vs = 0,0181
Er = 0,2262
Vr = 0,0293
p0 = 0,2302
U = 0,7698

A classe clQSN.js, escrita em Javascript, tambm implementa o modelo


computacional de um QNS M/M/1 e pode ser visto no Algoritmo 8.2.
Algoritmo 8.2: clQSN.js - classe Javascript para simulao de Rede de
Sistemas de Fila M/M/1
function clQSN(qs,D,S){
var QS = [];
this.F = function(x){
var u = Math.random();
return -x*Math.log(u);
}
this.Start = function(i,f){
Modelagem e Simulao Discreta

188

var n, e = [], b;
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = e.iat;
e.bs = e.at;
e.es = e.at + e.st;
e.idt = e.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.es;
e.st = this.F( QS[f].m );
e.at = b.es;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
n = QS[f].Event.length;
if( n > 0 ){
b
= QS[f].Event[n-1];
e.idt = e.es - b.es;
}
else e.idt = e.es;
e.nq = 0;
QS[f].Event.push(e);

}
this.Config = function(){
for( var i = 0; i < qs; i++ ){
var Q = [];
Q.l = 0.0;
if( i == 0 ) Q.l = D[i];
Q.m = D[i+1];
Q.Event = [];
QS.push(Q);
}
for( var i = 1; i < S.length; i++ ){
this.Start(S[i-1],S[i]);
}
}
this.Open = function(i,f){
var e = [], b;
b = QS[i].Event[ QS[i].Event.length-1 ];
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
Modelagem e Simulao Discreta

189

e.es = e.bs + e.st;


e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Close = function(i,f){
var e = [], b;
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Nq = function(){
for( var q = 0; q < QS.length; q++ )
for( var e = 1; e < QS[q].Event.length; e++ ){
QS[q].Event[e].nq = 0;
for( var c = 0; c < e; c++ )
if( QS[q].Event[e].at < QS[q].Event[c].es )
QS[q].Event[e].nq += 1;
}
}
this.Simulate = function(){
for( var i = 1; i < S.length; i++ ){
this.Open(S[i-1],S[i]);
//this.Close(S[i-1],S[i]);
}
this.Nq();
this.Calculate();
}
this.Calculate = function(){
for( var q = 0; q < QS.length; q++ ){
var N = QS[q].Event.length;
var Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw, Es, Vs,
Er, Vr, p0, U, T;
Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Enq = Vnq = Ew =
Vw = Es = Vs = Er = Vr = p0 = U = T = 0.0;
for( var e = 0; e < QS[q].Event.length; e++ ){
Eiat += QS[q].Event[e].iat;
Est += QS[q].Event[e].st;
Eidt += QS[q].Event[e].idt;
Enq += QS[q].Event[e].nq;
Ew
+= QS[q].Event[e].bs-QS[q].Event[e].at;
Es
+= QS[q].Event[e].es-QS[q].Event[e].bs;
Er
+= QS[q].Event[e].es-QS[q].Event[e].at;
}
Eiat /= N;
Est /= N;
Eidt /= N;
Enq /= N;
Ew
/= N;
Es
/= N;
Er
/= N;
for( var e = 0; e < QS[q].Event.length; e++ ){
Modelagem e Simulao Discreta

190

Eiat,2.0);
,2.0);
Eidt,2.0);
,2.0);
Ew ,2.0);
Es ,2.0);
Er ,2.0);
}
Viat
Vst
Vidt
Vnq
Vw
Vs
Vr

Viat += Math.pow(QS[q].Event[e].iat

Vst

- Est

+= Math.pow(QS[q].Event[e].st

Vidt += Math.pow(QS[q].Event[e].idt

Vnq

+= Math.pow(QS[q].Event[e].nq

- Enq

Vw

+= Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at -

Vs

+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs -

Vr

+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].at -

/=
/=
/=
/=
/=
/=
/=

(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);

T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
for( var e = 1; e < N; e++ )
if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=
QS[q].Event[e].at-QS[q].Event[e-1].es;
p0 /= T;
U = 1.0-p0;
QS[q].T
QS[q].Eiat
QS[q].Viat
QS[q].Est
QS[q].Vst
QS[q].Eidt
QS[q].Vidt
QS[q].Enq
QS[q].Vnq
QS[q].Ew
QS[q].Vw
QS[q].Es
QS[q].Vs
QS[q].Er
QS[q].Vr
QS[q].p0
QS[q].U

= T ;
= Eiat;
= Viat;
= Est ;
= Vst ;
= Eidt;
= Vidt;
= Enq ;
= Vnq ;
= Ew ;
= Vw ;
= Es ;
= Vs ;
= Er ;
= Vr ;
= p0 ;
= U ;

}
}
this.Html = function(){
var html = "";
html += "<html><style> table {font-size:20px;}</style><body>"
+ "<br> QSN Table"
+ "<br> QS Number: " + QS.length;
html += "<br> Sequence: ";
for( var i = 1; i < S.length; i++ ){
html += S[i-1] + " - " + S[i] + "; ";
}
Modelagem e Simulao Discreta

191

html += "<br><table border='1' cellpadding='0' cellspacing='0'>";


html += "<tr><td>QS<td>l<td>m";
for( var q = 0; q < QS.length; q++ )
html += "<tr><td>" + q
+ "<td>"
+ QS[q].l .toFixed(3)
+ "<td>"
+ QS[q].m .toFixed(3);
html += "</table><br><br>";
for( var q = 0; q < QS.length; q++ ){
html += "<br> QS: " + (q+1)
+ "<br><table border='1' cellpadding='0' cellspacing='0'>"
+ "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>idt<td>nq";
for( var e = 0; e < QS[q].Event.length; e++ ){
html += "<tr>"
+ "<td>" + e
+ "<td>" + QS[q].Event[e].iat.toFixed(3)
+ "<td>" + QS[q].Event[e].st .toFixed(3)
+ "<td>" + QS[q].Event[e].at .toFixed(3)
+ "<td>" + QS[q].Event[e].bs .toFixed(3)
+ "<td>" + QS[q].Event[e].es .toFixed(3)
+ "<td>" + QS[q].Event[e].idt.toFixed(3)
+ "<td>" + QS[q].Event[e].nq .toFixed(0);
}

html += "</table>"
+ "<br>Summary<br>"
+ "<br> N
= " + QS[q].Event.length.toFixed(0)
+ "<br> T
= " + QS[q].T .toFixed(3)
+ "<br> Eiat = " + QS[q].Eiat.toFixed(3)
+ "<br> Viat = " + QS[q].Viat.toFixed(3)
+ "<br> Est = " + QS[q].Est .toFixed(3)
+ "<br> Vst = " + QS[q].Vst .toFixed(3)
+ "<br> Eidt = " + QS[q].Eidt.toFixed(3)
+ "<br> Vidt = " + QS[q].Vidt.toFixed(3)
+ "<br> Enq = " + QS[q].Enq .toFixed(3)
+ "<br> Vnq = " + QS[q].Vnq .toFixed(3)
+ "<br> Ew
= " + QS[q].Ew .toFixed(3)
+ "<br> Vw
= " + QS[q].Vw .toFixed(3)
+ "<br> Es
= " + QS[q].Es .toFixed(3)
+ "<br> Vs
= " + QS[q].Vs .toFixed(3)
+ "<br> Er
= " + QS[q].Er .toFixed(3)
+ "<br> Vr
= " + QS[q].Vr .toFixed(3)
+ "<br> p0
= " + QS[q].p0 .toFixed(3)
+ "<br> U
= " + QS[q].U .toFixed(3)
+ "<br><br><br>";
}
html += "</html>";
return html;

8.5 SIMULAO DE SISTEMAS DE


CLIENTE/SERVIDOR WEB EM CAMADAS
Modelagem e Simulao Discreta

192

8.5.1
SISTEMA CLIENTE/SERVIDOR WEB EM UMA
CAMADA FSICA
Um Sistema Cliente/Sevidor Web em uma camada fsica ilustrada na
Figura 50 8.5, com 3 QS, numeradas de 0 a 2, QS0, QS1 e QS2. A
arquitetura desta rede est mostrada na Figura 51. uma rede aberta
com os parmetros:

qs = 3
os QS deste sistema so M/M/1
sequncia dos eventos: 0 1, 1 2, 2 1 e 1 0, S = [ 0, 1, 2, 1, 0 ] e s = 5
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0, st1, st2 ]

Figura 50 - Sistema Cliente/Servidor Web em uma camada fsica.

Figura 51 - A arquitetura do Sistema Cliente/Servidor Web da Figura 50.


Em resumo, os parmetros da QSN da Figura 50, para simulao de 2000
eventos so: 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 usurio.

8.5.2
SISTEMA CLIENTE/SEVIDOR WEB EM DUAS
CAMADAS FSICAS
Um Sistema Cliente/Sevidor Web em duas camadas fsicas ilustrada na
Figura 52, com 4 QS, numeradas de 0 a 3, QS0, QS1, QS2 e QS3. A
arquitetura desta rede est mostrada na Figura 53. uma rede aberta
com os parmetros:

qs = 4
os QS deste sistema so M/M/1

Modelagem e Simulao Discreta

193

sequncia 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
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0, st1, st2, st3]

Figura 52 - Sistema Cliente/Sevidor Web em duas camadas fsicas.

Figura 53 - A arquitetura do Sistema Cliente/Servidor Web da Figura 52.


Em resumo, os parmetrso da QSN da Figura 52, para simulao de 2000
eventos so: 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 pelo
usurio.

8.5.3
SISTEMA CLIENTE/SEVIDOR WEB EM TRS
CAMADAS FSICAS
Um Sistema Cliente/Servidor Web em trs camadas fsicas ilustrada na
Figura 54, com 5 QS, numeradas de 0 a 4, QS0, QS1, QS2, QS3 e QS4. A
arquitetura desta rede est mostrada na Figura 55. uma rede aberta
com os parmetros:

qs = 5
os QS deste sistema so M/M/1
sequncia 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
nmero de eventos, N (definido pelo usurio)

Modelagem e Simulao Discreta

194

D = [ iat0, st0, st1, st2, st3, st4 ]

Figura 54 - Sistema Cliente/Servidor Web em trs camadas fsicas.

Figura 55 - A arquitetura do Sistema Cliente/Servidor Web da Figura 54.


Em resumo, os parmetros da QSN da Figura 54, para simulao de 2000
eventos so: 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 ser
fornecidos pelo usurio.
Exemplo 8.1: Considere a rede abaixo, constituda pelos componentes tambm abaixo
relacionados, com demanda de 5 milhes de pacotes por hora, considere o pacote como
sendo de 200 KB.

Modelagem e Simulao Discreta

195

Figura 56 - Sistema Cliente/Servidor Web do Exemplo 8.1.

Menor
Maior
Desempenho
Desempenho
st(s)
st(s)
S
0 Cisco SF300-08/SG300-28MP
2.69E-3
7.50E-5
Sw
1 Apache 2.4.1/Nginx 1.0.12
5.29E-4
2.96E-4
Sad
2 PostGree/MySql
1.44E-3
4.90E-4
So 3 QS, qs = 3, S = [0, 1, 0, 2, 0, 1, 0] e s = 7. Com uma demanda de 5 milhes de
pacotes 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, obtm-se D = [7.2E-4, 2.69E-3, 5.29E3, 1.44E-3].
Os parmetros desta QSN, para uma simulao de 2000 eventos so: 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].
Componente

no Modelos

8.6 SIMULAO DE SISTEMAS DE HARDWARE


A simulao sistema de hardware mostrado na Figura 44 complexa e
extrapola o nvel deste texto mas pode-se simular partes do mesmo e
avaliar seu comportamento. Tomando uma parte desta arquitetura, como
mostrado na Figura 57. (Sun Microsystems, 2016).

Modelagem e Simulao Discreta

196

Figura 57 - Diagrama de blocos de parte do Sun Fire X4150 (Sun


Microsystems, 2016).
Uma alternativa simples considerar que dados chegam da memria por
meio da ponte norte (MCH) e so processados na CPU. Neste caso, podese considerar a MCH como a Fila e a CPU como o Servidor, Figura 57, temse ento uma rede aberta com os parmetros:

qs = 1
o QS M/M/1
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0 ]

Figura 58 - Modelo de um Sistema de Fila da Figura 58.

8.7 EXERCCIOS
1. Simule o Exemplo 8.1 com o software QSN.cpp e calcule:
a) o tempo de simulao
b) os maiores valores de nq de componente
2. Simule o Exemplo 8.1 com o software QSN.cpp e, considerando os valores de st de
maior desempenho, calcule:
a) o tempo de simulao
b) os maiores valores de nq de componente
3) Compare os resultados dos exerccios 1 e 2.

Modelagem e Simulao Discreta

197

8.8 RECURSOS DIDTICOS PEDAGGICOS

8.8.1

SOFTWARE QSNPLOT.HTML

Foi desenvolvido o software QSNPlot.html para visualizao grfica e


dinmica dos resultados de Sistemas de Fila de fila M/M/1 utilizando a
classe clQSN e a biblioteca grfica flot, Algoritmo 8.3. A Figura 59
apresenta o software QSNPlot.html sendo executado, os clculos so
atualizados a cada 200 ms e as curvas so exibidas evento a evento. Este
software permite exibir/ocultar as curvas da variveis Eiat, Est, Ew, Es, Er,
Eidt, Enq, p0, U, Viat, Vst, Vw, Vs, Vr, Vidt, Vnq.
Algoritmo 8.3: Software QSNPlot.html para visualizao grfica dos
resultados de Sistemas de Fila de fila M/M/1
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Anlise de Rede de Sistemas de Fila M/M/1</title>
<script src="jquery.js"> </script>
<script src="jquery.flot.js"></script>
<script>
function clQSN(qs,D,S){
var QS = [];
this.F = function(x){
var u = Math.random();
return -x*Math.log(u);
}
this.Start = function(i,f){
var n, e = [], b;
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = e.iat;
e.bs = e.at;
e.es = e.at + e.st;
e.idt = e.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.es;
e.st = this.F( QS[f].m );
e.at = b.es;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
n = QS[f].Event.length;
if( n > 0 ){
b
= QS[f].Event[n-1];
e.idt = e.es - b.es;
}
Modelagem e Simulao Discreta

198

else e.idt = e.es;


e.nq = 0;
QS[f].Event.push(e);

}
this.Config = function(){
for( var i = 0; i < qs; i++ ){
var Q = [];
Q.l
= 0.0;
if( i == 0 ) Q.l = D[i];
Q.m
= D[i+1];
Q.Event = [];
QS.push(Q);
}
for( var i = 1; i < S.length; i++ ){
this.Start(S[i-1],S[i]);
}
}
this.Open = function(i,f){
var e = [], b;
b = QS[i].Event[ QS[i].Event.length-1 ];
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Close = function(i,f){
var e = [], b;
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Nq = function(){
for( var q = 0; q < QS.length; q++ )
for( var e = 1; e < QS[q].Event.length; e++ ){
QS[q].Event[e].nq = 0;
for( var c = 0; c < e; c++ )
if( QS[q].Event[e].at < QS[q].Event[c].es )
Modelagem e Simulao Discreta

199

QS[q].Event[e].nq += 1;
}
}
this.Simulate = function(){
for( var i = 1; i < S.length; i++ ){
this.Open(S[i-1],S[i]);
//this.Close(S[i-1],S[i]);
}
this.Nq();
this.Calculate();
}
this.getMean = function(){
var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0];
for( var q = 0; q < QS.length; q++ ){
M[0] += QS[q].Eiat;
M[1] += QS[q].Est ;
M[2] += QS[q].Ew ;
M[3] += QS[q].Es ;
M[4] += QS[q].Er ;
M[5] += QS[q].Eidt;
M[6] += QS[q].Enq ;
M[7] *= QS[q].p0 ;
M[8] *= QS[q].U ;
}
return M;
}
this.getVariance = function(){
var V = [0.0,0.0,0.0,0.0,0.0,0.0,0.0];
for( var q = 0; q < QS.length; q++ ){
V[0] += QS[q].Viat;
V[1] += QS[q].Vst ;
V[2] += QS[q].Vw ;
V[3] += QS[q].Vs ;
V[4] += QS[q].Vr ;
V[5] += QS[q].Vidt;
V[6] += QS[q].Vnq ;
}
return V;
}
this.Calculate = function(){
for( var q = 0; q < QS.length; q++ ){
var N = QS[q].Event.length;
var Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw, Es, Vs,
Er, Vr, p0, U, T;
Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Enq = Vnq = Ew =
Vw = Es = Vs = Er = Vr = p0 = U = T = 0.0;
for( var e = 0; e < QS[q].Event.length; e++ ){
Eiat += QS[q].Event[e].iat;
Est += QS[q].Event[e].st;
Eidt += QS[q].Event[e].idt;
Enq += QS[q].Event[e].nq;
Ew
+= QS[q].Event[e].bs-QS[q].Event[e].at;
Es
+= QS[q].Event[e].es-QS[q].Event[e].bs;
Er
+= QS[q].Event[e].es-QS[q].Event[e].at;
}
Eiat /= N;
Est /= N;
Eidt /= N;
Enq /= N;
Ew
/= N;
Modelagem e Simulao Discreta

200

Es
Er

, 2.0);

for( var e = 0; e < QS[q].Event.length; e++ ){


Viat += Math.pow(QS[q].Event[e].iat
Vst

, 2.0);
, 2.0);
, 2.0);
Ew

,2.0);

Es

, 2.0);

/= N;
/= N;

2.0);
}
Viat
Vst
Vidt
Vnq
Vw
Vs
Vr

- Eiat

+= Math.pow(QS[q].Event[e].st

- Est

Vidt += Math.pow(QS[q].Event[e].idt

- Eidt

Vnq

+= Math.pow(QS[q].Event[e].nq

- Enq

Vw

+= Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at-

Vs

+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs-

Vr

+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].at- Er ,

/=
/=
/=
/=
/=
/=
/=

(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);

T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
for( var e = 1; e < N; e++ )
if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=
QS[q].Event[e].at-QS[q].Event[e-1].es;
p0
/= T;
U
= 1.0-p0;
QS[q].T
= T ;
QS[q].Eiat = Eiat;
QS[q].Viat = Viat;
QS[q].Est = Est ;
QS[q].Vst = Vst ;
QS[q].Eidt = Eidt;
QS[q].Vidt = Vidt;
QS[q].Enq = Enq ;
QS[q].Vnq = Vnq ;
QS[q].Ew
= Ew ;
QS[q].Vw
= Vw ;
QS[q].Es
= Es ;
QS[q].Vs
= Vs ;
QS[q].Er
= Er ;
QS[q].Vr
= Vr ;
QS[q].p0
= p0 ;
QS[q].U
= U ;
}
}
}
function clQSNTeste(){
var e
= 1 ,
d00 = [],
d01 = [],
d02 = [],
Modelagem e Simulao Discreta

201

d03
d04
d05
d06
d07
d08
d09
d10
d11
d12
d13
d14
d15
G

=
=
=
=
=
=
=
=
=
=
=
=
=
=

[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[];

var qs = 4,
D = [ 0.020, 0.010, 0.010, 0.010, 0.010 ],
S = [ 0, 1, 2, 1, 2, 3 ];
var QSN = new clQSN(qs,D,S);
QSN.Config();
$(function() {
var datasets = {
"Eiat": { label: "Eiat", data: d00 },
"Est" : { label: "Est ", data: d01 },
"Ew" : { label: "Ew " , data: d02 },
"Es" : { label: "Es " , data: d03 },
"Er" : { label: "Er " , data: d04 },
"Eidt": { label: "Eidt", data: d05 },
"Enq" : { label: "Enq ", data: d06 },
"p0" : { label: "p0 " , data: d07 },
"U"
: { label: "U " , data: d08 },
"Viat": { label: "Viat", data: d09 },
"Vst" : { label: "Vst ", data: d10 },
"Vw" : { label: "Vw " , data: d11 },
"Vs" : { label: "Vs " , data: d12 },
"Vr" : { label: "Vr " , data: d13 },
"Vidt": { label: "Vidt", data: d14 },
"Vnq" : { label: "Vnq ", data: d15 }
};
// insert checkboxes
var choiceContainer = $("#choices");
$.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>"); });
var i = 0;
$.each(datasets, function(key,val){ val.color = i; ++i; });
choiceContainer.find("input").click(plotAccordingToChoices);
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 } });} }
var timer = setInterval(function(n){
QSN.Simulate();
G = QSN.getMean();
d00[e] = []; d00[e][0] = e; d00[e][1] = G[0]; //"Eiat"
Modelagem e Simulao Discreta

202

d01[e] = []; d01[e][0] = e; d01[e][1] = G[1]; //"Est "


d02[e] = []; d02[e][0] = e; d02[e][1] = G[2]; //"Ew "
d03[e] = []; d03[e][0] = e; d03[e][1] = G[3]; //"Es "
d04[e] = []; d04[e][0] = e; d04[e][1] = G[4]; //"Er "
d05[e] = []; d05[e][0] = e; d05[e][1] = G[5]; //"Eidt"
d06[e] = []; d06[e][0] = e; d06[e][1] = G[6]; //"Enq "
d07[e] = []; d07[e][0] = e; d07[e][1] = G[7]; //"p0 "
d08[e] = []; d08[e][0] = e; d08[e][1] = G[8]; //"U "
G = QSN.getVariance();
d09[e] = []; d09[e][0] = e; d09[e][1] = G[0]; //"Viat"
d10[e] = []; d10[e][0] = e; d10[e][1] = G[1]; //"Vst "
d11[e] = []; d11[e][0] = e; d11[e][1] = G[2]; //"Vw "
d12[e] = []; d12[e][0] = e; d12[e][1] = G[3]; //"Vs "
d13[e] = []; d13[e][0] = e; d13[e][1] = G[4]; //"Vr "
d14[e] = []; d14[e][0] = e; d14[e][1] = G[5]; //"Vidt"
d15[e] = []; d15[e][0] = e; d15[e][1] = G[6]; //"Vnq "
e++;
plotAccordingToChoices();
},200);
$("#footer").prepend("Flot " + $.plot.version + " Copyright: Brauliro G
Leal, 2014" );
});
}
</script>
</head>
<body>
<h4>Anlise de Rede de Sistemas de Fila M/M/1 Mdias dos Eventos</h4><hr>
<hr>
<input type="button" value=" QSN Teste >>> " onclick="clQSNTeste()"/>
<hr>
<div id="placeholder" style="float:left; height: 450px;
width:875px;"></div>
<p id="choices" style="float:left; height: 450px; width:135px;"></p>
<div id="footer" style="margin-top: 490px;"></div>
</body></html>

Figura 59 - Grfico dos resultados do QSNPlot.html (Algoritmo 8.3).


Modelagem e Simulao Discreta

203

9 APNDICE

9.1 REPRESENTATIVIDADE NO PROCESSO DE


AMOSTRAGEM
A palavra-chave nas questes de amostragem representatividade. Uma
amostra deve ter o tamanho suficiente, nr, para que seja representativa da
populao; se for menor nada pode ser concludo da populao a partir
dela. Se for maior ou igual, suas estatsticas so extensveis populao.
Na medio de dados de sistemas de filas, recomenda-se a equao
abaixo pois um processo exponencial.
z 2
)
e0
em que:
nr =(
z

e0

=
=
=
=

9.1

1,96 (valor Normal padronizado para um nvel de confiana de 95%)


desvio-padro da populao
mdia da populao
nvel de confiana da mdia, em geral toma-se e0 = 0,20 (80% de confiana)

Exemplo 9.1: A seguinte sequncia refere-se ao nmero de span medidos em um e-mail


durante um dia: { 73 42 56 63 80 81 76 87 76 90 81 44 98 58 }. O nmero de dados da
amostra representa a populao?
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 populao pois n > n r, logo pode-se assumir a igualdade
estatstica entre:

a mdia da amostra e a mdia da populao


a desvio padro da amostra e o desvio padro da populao

E ainda, o que mais importante, os resultados e concluses obtidos a partir da amostra


so extensveis populao.

Modelagem e Simulao Discreta

204

9.2 NMERO DE CLASSES


Uma vez obtidos os dados, eles devem ser organizados em classes e seus
limites para a montagem de uma tabela de distribuio de frequncias. O
nmero de classes k depende principalmente do nmero de observaes
(n) e da disperso entre eles. Para estimar k classes so apresentadas as
regras abaixo.

k =1+3,22 ln (n) (Regra de Sturges)


k = n (Regra da Raiz)

9.2
9.3

9.3 GRFICO DE EXTREMOS E QUARTIS OU BOXPLOT


Em estatstica descritiva, diagrama de caixa, ou box-plot, permite localizar
e analisar a variao de uma amostra a partir dos seus valores mnimos,
quartil inferior, mediana, quartil superior e mximo. So quatro
segmentos, cada um com 25% valores observados. O grfico uma caixa
onde se localiza a mediana, tendo como base da caixa o quartil inferior e o
topo da caixa o quartil superior. A caixa, portanto, representa 50% dos
valores observados, concentrados na tendncia central dos valores,
eliminando os 25% menores valores e 25% maiores valores. Um segmento
de reta vertical conecta o topo da caixa ao maior valor observado e outro
segmento conecta a base da caixa ao menor valor observado.
Em resumo, o diagrama de caixa identifica onde esto localizados 50%
dos valores mais provveis, a mediana e os valores extremos: os pontos
de {mnimo, Q1, M, Q3, mximo} correspondendo a [25%, 25%, 25%, 25%]
dos dados em ordem crescente.
Exemplo 9.2: Faa o box-plot da amostra x = { 44 56 58 63 73 76 80 81 82 83 87 90 }.
Utilizando o site http://www.alcula.com/calculators/statistics/box-plot com estes dados
obtemos:

Modelagem e Simulao Discreta

205

Figura 60 - Figura do Exemplo 9.2.


A anlise do box-plot indica uma assimetria na distribuio dos dados, embora tenha 6
dados acima e 6 dados baixo da mediana, em termos nominais, temos que medianaminimo > maximo-mediana (78-44=34 > 90-78=12), pode-se concluir que, em termos
de amplitude, ela maior abaixo da mediana o que indica que dados obtidos de outras
amostram tendem a ser menores que a mediana.

9.4 VALORES EXTREMOS OU OUTLIER


Em estatstica, os pontos de dados de observaes com valores extremos
so chamados outliers, particularmente se eles esto longe da maioria dos
outros pontos. Outliers podem ter um efeito significativo sobre os valores
mximos ou mnimos (ou na mdia e na varincia) dos valores
observados. Existem vrios mtodos de identificao de outliers, um deles
por meio de z-scores, isto , os valores z-padronizados dos dados.
Sero valores extremos os valores de z que se encontrar numa distncia
maior 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 extremos


podem ser considerados dados normais e no outliers.
A identificao de valores extremos de uma amostra {x i} para i = 1, 2, ...,
n, feita seguindo as seguintes etapas:
1. calcular a mdia (m) e o desvio padro (s) da mostra
2. calcular {zi} em que

Modelagem e Simulao Discreta

z i=

x im
s

206

3. se n < 50 ento os valores xi correspondentes aos de |zi| > 2.5 so valores


extremos
4. se 50 n < 1000 ento os valores x i correspondentes aos de |zi| > 3,3 so valores
extremos
5. se n 1000 ento os valores de xi no so considerados valores extremos
Exemplo 9.3: Verifique se a amostra x: { 6,91 1,61 4,99 9,11 9,03 9,71 0,05 5,98 5,20
9,83 } possui valores extremos pelo mtodo de z-scores:
A distribuio possui mdia m = 6,24, desvio padro s = 3,40 e n = 10 dados. Os valores
de {zi = (xi-m)/s} esto dispostos na tabela abaixo:
i
xi
zi
1 6,91 0,20
2 1,61 -1,36
3 4,99 -0,37
4 9,11 0,85
5 9,03 0,82
6 9,71 1,02
7 0,05 -1,82
8 5,98 -0,08
9 5,20 -0,31
10 9,83 1,06
Concluso: a amostra no contm valores extremos uma vez que n < 50 e {|zi| < 2.5}.

9.5 TESTES DE HIPTESES E SIGNIFICNCIA

9.5.1

DECISO ESTATSTICA

Muitas vezes necessrio tomar decises sobre as populaes com base


em informaes de uma amostra. Tais decises so chamados decises
estatsticas.
Na tentativa de se chegar a decises, til fazer suposies sobre as
populaes envolvidas, estes pressupostos, que pode ou no ser
verdadeiros, so chamados de hipteses estatsticas e, em geral, so
declaraes sobre as distribuies de probabilidade da populao. Estas
hipteses estatsticas so chamadas de hipteses nulas e so denotados
por H0. Qualquer hiptese que difere de uma dada hiptese nula
chamada hiptese alternativa, denotada por Ha. Por exemplo, se a
hiptese nula p = 0,6, possveis hipteses alternativas so p = 0,7, p
0,6, ou p > 0,6.
Procedimentos que nos permitam decidir se aceitar ou rejeitar hipteses
ou para determinar se as amostras observadas diferem significativamente
dos resultados esperados so chamados testes de hipteses, testes de
significncia, ou regras de deciso.

Modelagem e Simulao Discreta

207

Para que os testes de hipteses ou regras de deciso sejam teis, estes


devem ser concebidos de forma a minimizar os erros de deciso. Se
rejeita-se a hiptese quando ela verdadeira, diz-se que um Erro Tipo I foi
cometido. Se, por outro lado, aceitar uma hiptese, quando ela deveria ser
rejeitada, diz-se que um Erro Tipo II foi cometido, Tabela 38. Em qualquer
dos casos ocorreu uma deciso errada ou erro de julgamento.
Tabela 38 - Testes de Hiptese e os Erros Tipo I e Tipo II
Valor Lgico
H0 Verdade
Ha Verdade

9.5.2

Aceita H0
Deciso Correta
Erro Tipo II

Aceita Ha
Erro Tipo I
Deciso Correta

NVEL DE SIGNIFICNCIA

Ao testar uma determinada hiptese, a probabilidade mxima com a qual


se dispem a arriscar um Erro Tipo I chamado o nvel de significncia ()
do teste. Em geral, um nvel de significncia de = 0,05 (5%) ou = 0,01
(1%) o usual, embora outros valores sejam utilizados.
Se nvel de significncia de um teste de uma hiptese, isto representa:
1. cerca de chances em 100 que se rejeite a hiptese; em tais casos, diz-se que a
hiptese foi rejeitada em um nvel de significncia de 0,05, o que significa que
poderia estar errado com probabilidade de 0,05
2. sempre que a hiptese de nulidade for verdadeira, h cerca de (100-)% de
confiana de que ser tomada a deciso correta

9.5.3

TESTES ENVOLVENDO A DISTRIBUIO NORMAL

Suponha que sob uma dada hiptese a distribuio amostral de uma


estatstica S seja uma distribuio normal com mdia S e desvio padro
S. A distribuio da varivel padronizada z = (S-S)/S a distribuio
normal padro (mdia de 0, varincia 1) mostrada na Figura 61, e valores
extremos de z levaria rejeio da hiptese.

Figura 61 - Distribuio normal padro com as regies crticas de um teste


bicaudal com = 0,05.
Modelagem e Simulao Discreta

208

Como indicado na Figura 61, se a hiptese for verdadeira, pode-se ter 95%
de certeza que a pontuao z de uma estatstica da amostra S vai situarse entre -1,96 e 1,96, uma vez que a rea sob a curva normal entre estes
valores 0,95.
Por outro lado, se a hiptese dada for verdadeira e esta mesma pontuao
z se encontrar fora da faixa -1,96 a 1,96, pode-se concluir que um evento
como esse pode acontecer com a probabilidade de 0,05 (rea sombreada
total na figura). Assim, diz-se que esta pontuao z difere
significativamente do que seria esperado sob a hiptese, e tende-se a
rejeitar a hiptese.
A rea total sombreada igual a 0,05 o nvel de significncia do teste. Ele
representa a probabilidade de se estar errado em rejeitar a hiptese, ou
seja, a probabilidade de cometer um Erro de Tipo I. Portanto, pode-se dizer
que a hiptese rejeitada em um nvel de significncia de 0,05 ou que a
pontuao z da estatstica da amostra significativa a um nvel de
significncia de 0,05.
O conjunto de escores z fora da faixa -1,96 a 1,96 constitui o que
chamado de regio crtica ou regio de rejeio da hiptese ou da regio
de significncia. O conjunto de escores z dentro da faixa -1,96 a 1,96
pode-se, ento, ser chamada a regio de aceitao da hiptese ou da
regio de no significncia.
Com base nestas observaes, pode-se formular a seguinte regra de
deciso:
1. rejeitar a hiptese a um nvel de significncia de 0,05, se a pontuao z da
estatstica S encontra-se fora da faixa -1,96 a 1,96 (isto , seja z > 1.96 ou z <
1,96). Isto equivale a estatstica da amostra observada significativa ao nvel de
0,05
2. aceitar a hiptese (pode-se ainda optar por nada decidir) de outra forma.

Deve notar-se que outros nveis de significncia podem ser usados. Por
exemplo, se for utilizado um nvel de 0,01 deve substituir 1,96 por 2,58 no
texto acima ( Tabela 39).

9.5.4

TESTES UNICAUDAL E BICAUDAL

No teste da Figura 61 foi utilizado extremos da estatstica S ou a sua


correspondente pontuao z em ambos os lados da mdia, isto , em
ambas as caudas da distribuio. Por esta razo, tais testes so chamados
testes bicaudais ou testes de dois lados. Em tais casos, as regies crticas
situam-se nos dois lados da distribuio, com rea total igual ao nvel de
significncia.

Modelagem e Simulao Discreta

209

Muitas vezes, no entanto, pode-se estar interessado apenas em valores


extremos de um lado da mdia, ou seja, em uma cauda da distribuio,
como, por exemplo, quando se esto a testar a hiptese de que um
processo melhor do que o outro (o que diferente de testar se um
processo melhor ou pior do que o outro). Tais testes so chamados de
testes de uma cauda ou testes unilaterais. Em tais casos, a regio crtica
uma regio de um dos lados da distribuio, com rea igual ao nvel de
significncia.
A Tabela 39 apresenta os valores crticos de z tanto para testes de uma
cauda e para testes bicaudais para vrios nveis de significncia. Os
valores crticos de z para outros nveis de significncia so encontradas
pelo uso da tabela de reas da curva normal padro ou unitria.
Tabela 39 - Quantis da Distribuio Normal Unitria
Nvel de significncia
Valores crticos de z Teste Unicaudal
Valores crticos de z Teste Bicaudal

9.5.5

0,100

0,050

0,010

0,005

0,002

-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

-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

P-VALUE

Na maioria dos testes estatsticos, considera-se que a hiptese nula H 0


uma afirmao de que um parmetro de populao tem um valor definido
e a hiptese alternativa Ha uma das seguintes afirmaes:
1. O parmetro maior do que o valor definido (teste de cauda direita, Figura 62a)
2. O parmetro menor do que o valor definido (teste de cauda esquerda, Figura
62b)
3. O parmetro maior ou menor do que o valor definido (teste de duas caudas,
Figura 62c)

Nos casos (1) e (2), Ha tem um nico sentido em relao ao parmetro e,


no caso (3), Ha bidirecional.

xc

f ( x)dx=1

f (x )dx =1

(a)

(b)

xc

x2

f ( x)dx=1
x1

(c)

Figura 62 - Clculo de valores crticos para testes unicaudal (a) direita


(a), (b) esquerda e (c) bicaudal.

Modelagem e Simulao Discreta

210

Aps o teste ser feito e a estatstica do teste S for calculada, o p-value do


teste a probabilidade de um valor de S na direo (s) de H a seja to
extremo como o que realmente ocorreu ocorreria se H0 for verdadeira.
extremo como o que realmente ocorreu ocorreria se H0 eram verdadeiras.
After the test has been performed and the test statistic S computed, the P
value of the test is the probability that a value of S in the direction(s) of H1
and as extreme as the one that actually did occur would occur if H0 were
true.
Exemplo 9.4: Suponha que o desvio padro de uma populao normal conhecido ( =
3) e que H0 afirme que a mdia desta populao seja = 12 (mdia da populao). Uma
amostra aleatria de tamanho = 36 foi obtida da populao e seu valor mdio estimado
m = 12,95 (mdia da amostra). A estatstica de teste, neste caso,

Z=

m12 m12
=
e que, se H0 verdadeira ento a varivel aleatria normal. O
0,5
/ n

valor calculado do teste Z = (12,95-12)/0,5 = 1,9. O p-value do teste depende da


hiptese alternativa Ha como se segue:
1. Ha: > 12 - caso (1), o p-value a probabilidade de que uma amostra aleatria de
tamanho 36 tenha mdia amostral igual a 12,95 ou mais, se a mdia da populao
for igual a 12, isto , P(Z 1,9) = 0,029. Ou seja, as chances so cerca de 3 em
100 para m > 12,95 se = 12
2. Ha: < 12 - caso (2), o p-value a probabilidade de que uma amostra aleatria de
tamanho 36 tenha mdia igual a 12,95 ou menos, se a mdia da populao for
igual a 12, ou seja, P(Z 1,9) = 0,97, ou as chances so cerca de 97 em 100 para
m 12,95 se = 12
3. Ha: 12 - caso (3), o p-value a probabilidade de que uma amostra aleatria de
tamanho 36 tenha mdia 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 so cerca de 6 em 100 para |m-12| 0,95 se = 12
Valores pequenos de p-value fornecem evidncias para se rejeitar a hiptese nula em
favor da hiptese alternativa. Por outro lado, grandes valores de p-value fornecem
evidncias para no se rejeitar a hiptese nula em favor da hiptese alternativa.

No caso 1, p-value = 0,029 pequeno e indicado fortemente que a mdia da


populao superior a 12
No caso 2, p-value = 0,97 grande e sugere fortemente que H0: = 12 no deve
ser rejeitado em favor de Ha: < 12
No caso 3, p-value = 0,057 fornece evidncia para rejeitar H0 em favor da Ha: m
12, mas no tanto para rejeitar H0 em favor de Ha: > 12.

Deve-se ter em mente que o valor p-value e o nvel de significncia no


fornecem critrios para rejeitar ou no rejeitar a hiptese nula e sim para
rejeitar ou no rejeitar a hiptese nula em favor da hiptese alternativa.
Como no exemplo anterior ilustra, os resultados de teste idnticos com
iguais nveis de significncia podem levar a concluses diferentes sobre a
mesma hiptese nula em relao a diferentes hipteses alternativas
(Spiegel, et al., 2013, pag 215).

Modelagem e Simulao Discreta

211

9.6 INTEGRAO NUMRICA


A funo I(a,b) calcula numericamente a integral de f(x) no intervalo [a,b]
utilizando o mtodo de Simpson Composta. A preciso de I(a,b) depende
de f(x) e de n, desta forma recomendvel fazer um teste para ajustar o
nmero de pontos do intervalo de integrao (Epperson, 2013).
b

I = f (x) dx
a

h
I (a , b)= [f ( a)+2
3

9.4
n /21

j=1

n /2

f ( x 2 j)+ 4 f ( x 2 j1)+ f (b)]

Em que n N, n > 1 e

9.5

j=1

h=

ba
.
2n

O Algoritmo 9.1 implementa a funo I(a,b) em Javascript. Para us-lo


necessrio escrever o cdigo da funo f(x) e chamar I(a,b,n) para que
retornar sua integrao numrica, adaptado de Epperson (2013).
Algoritmo 9.1: Funo Javascript para a integral de f(x) no intervalo [a,b]
utilizando o mtodo de Simpson Composta
function f(x){
return f(x);
}
function I(a,b,n){
var Si = 0.0, Sp = 0.0, h = (b-a)/(2.0*n), dx = 2.0*h, x;
x = a+h;
while( x < b ) {
Si += f(x);
x += dx;
}
x = a+dx;
while( x < b-h ) {
Sp += f(x);
x += dx;
}
return (f(a)+f(b)+4.0*Si+2.0*Sp)*h/3.0;
}

O Algoritmo 9.2 uma outra implementao da funo I(a,b) em C++.


Algoritmo 9.2: Funo C++ para a integral de f(x) no intervalo [a,b]
utilizando o mtodo de Simpson Composta
double f(x){
return f(x);
}
double I( double a, double b ){
int
n = 10;
double h = (b-a)/n,
s1 = f(a + h/2.0),
Modelagem e Simulao Discreta

212

s2 = 0.0;
for( int i = 1; i < n; i++ ){
s1 += f(a + h*i + h/2.0);
s2 += f(a + h*i);
}
return (f(a) + f(b) + 4.0*s1 + 2.0*s2)*h/6.0;
}

Combinando as anteriores tem-se uma outra implementao da funo


I(a,b) em C++, Algoritmo 9.3.
Algoritmo 9.3: Outra funo C++ para a integral de f(x) no intervalo [a,b]
utilizando o mtodo de Simpson Composta
double f(x){
return f(x);
}
double I( double a, double b ){
int
n = 100;
double h = (b-a)/n,
s = f(a+h/2.0);
for( int i = 1; i < n; i++ )
s += f(a + h*i + h/2.0) + f(a + h*i)/2.0;
return h*(f(a)+f(b)+4.0*s)/6.0;
}

9.7 QUANTIS DA DISTRIBUIO 2


A funo densidade de probabilidade 2 com n graus de liberdade
n
x
1
2
2

e
(a)=
,
sendo
f (x , n)= n
x a1 ex dx , a>0 a funo
n
0
2 2 ( )
2
Gamma. A Tabela 40 lista os quantis 2(p;n), p = 1-. Por exemplo, o valor
2(0,90;13) requerido pelo teste CQ com 90% de nvel de confiana e 13
graus de liberdade 19,81.

definida por

Tabela 40 - Quantis da distribuio 2


n\p

0,80

0,85

0,90

0,95

0,99

n\p

0,80

n\p

0,80

31

37,36 39,12 41,42 44,99 52,19

61

70,05 72,44 75,51 80,23 89,59

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

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

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

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

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

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

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

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

Modelagem e Simulao Discreta

0,85

0,90

0,95

0,99

0,85

0,90

213

0,95

0,99

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,67 104,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,75 105,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,83 106,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,90 107,57 113,15 124,12

Tabela

foi

elaborada

resolvendo

numericamente

e
dx= p=1 , para n variando de 2 a 90 e com p igual a 0,80;
n
0
2 ( )
2
0,90, 0,95 e 0,99, conforme o algoritmo abaixo.

40

n
x
1
2
2

n
2

Algoritmo 9.4: Gerador dos quantis da distribuio 2 (Tabela 40) para n


variando de 2 a 90 e com p igual a 0,80; 0,90, 0,95 e 0,99
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
//----------------------------------------------------------using namespace std;
//----------------------------------------------------------double G( double z ){
return tgamma(z);
}
double f( double x, double gl ){
return 1.0/(pow(2.0,gl/2)*G(gl/2.0))*pow(x,gl/2.0-1.0)*exp(-x/2.0);
}
double I( double a, double b, int gl ){
double Si=0.0, Sp=0.0, N=100, h=(b-a)/N, dx=2.0*h, x;
x = a+h;
while( x < b ){
Si += f(x,gl);
x += dx;
}
x = a+dx;
while( x < b-h ){
Sp += f(x,gl);
x += dx;
Modelagem e Simulao Discreta

214

}
return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q, int gl ){
double x = 1.0, erro;
do{
erro = q-I(0.0,x,gl);
x += 5.0*erro;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << "<table border='1'>";
str << "<tr><td>";
for( int q = 80; q < 100; q++ )
str << "<td>" << q/100.0;
for( int gl = 1; gl < 101; gl++ ){
str << "<tr><td>" << gl;
for( int n = 80; n < 100; n++ ){
double q = n/100.0;
str << "<td>" << Q(q,gl);
}
}
str << "</table>";
return str.str();
}
int main( void ){
string htm = "<br>Tabela CQ<br>";
htm += Tabela();
ofstream file;
file.open("CQ-Quantis-out.html");
file << htm;
file.close();
return 0;
}

Segundo Bussab & Morettin (2002), os valores de 2(p;n) para n > 120
podem ser aproximados pelos seus equivalentes da distribuio normal.

9.8 QUANTIS DA DISTRIBUIO DE KS


A Tabela 41 lista os valores de KS(p;n), p = 1-. Por exemplo, KS(0,99;12)
requerido para o teste de KS com 99% de nvel de confiana 1,4521.
Tabela 41 - Quantis da Distribuio KS
n\p
1
2
3

0,90
0,9500
0,7764
0,6360

0,95
0,9750
0,8419
0,7076

0,99
0,9950
0,9293
0,8290

Modelagem e Simulao Discreta

n\p
31
32
33

0,90
0,2141
0,2108
0,2077

0,95
0,2379
0,2342
0,2308

0,99
0,2853
0,2809
0,2768

n\p
61
62
63

0,90
0,1539
0,1526
0,1514

0,95
0,1709
0,1696
0,1682

0,99
0,2051
0,2034
0,2018

215

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

0,5652
0,5094
0,4680
0,4361
0,4096
0,3875
0,3687
0,3524
0,3381
0,3255
0,3142
0,3040
0,2947
0,2863
0,2785
0,2714
0,2647
0,2586
0,2528
0,2475
0,2424
0,2377
0,2332
0,2290
0,2250
0,2212
0,2176

0,6239
0,5633
0,5193
0,4834
0,4543
0,4300
0,4092
0,3912
0,3754
0,3614
0,3489
0,3376
0,3273
0,3180
0,3094
0,3014
0,2941
0,2872
0,2809
0,2749
0,2693
0,2640
0,2591
0,2544
0,2499
0,2457
0,2417

0,7342
0,6685
0,6166
0,5758
0,5418
0,5133
0,4889
0,4677
0,4490
0,4325
0,4176
0,4042
0,3920
0,3809
0,3706
0,3612
0,3524
0,3443
0,3367
0,3295
0,3229
0,3166
0,3106
0,3050
0,2997
0,2947
0,2899

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

0,2047
0,2018
0,1991
0,1965
0,1939
0,1915
0,1891
0,1869
0,1847
0,1826
0,1805
0,1786
0,1766
0,1748
0,1730
0,1713
0,1696
0,1680
0,1664
0,1648
0,1633
0,1619
0,1604
0,1591
0,1577
0,1564
0,1551

0,2274
0,2242
0,2212
0,2183
0,2154
0,2127
0,2101
0,2076
0,2052
0,2028
0,2006
0,1984
0,1963
0,1942
0,1922
0,1903
0,1884
0,1866
0,1848
0,1831
0,1814
0,1798
0,1782
0,1767
0,1752
0,1737
0,1723

0,2728
0,2690
0,2653
0,2618
0,2584
0,2552
0,2521
0,2490
0,2461
0,2433
0,2406
0,2380
0,2354
0,2330
0,2306
0,2283
0,2260
0,2239
0,2217
0,2197
0,2177
0,2157
0,2138
0,2120
0,2102
0,2084
0,2067

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

0,1503
0,1491
0,1480
0,1469
0,1459
0,1448
0,1438
0,1428
0,1418
0,1409
0,1399
0,1390
0,1381
0,1372
0,1364
0,1355
0,1347
0,1339
0,1330
0,1323
0,1315
0,1307
0,1300
0,1292
0,1285
0,1278
0,1271

0,1669
0,1657
0,1644
0,1632
0,1620
0,1609
0,1597
0,1586
0,1576
0,1565
0,1554
0,1544
0,1534
0,1524
0,1515
0,1505
0,1496
0,1487
0,1478
0,1469
0,1460
0,1452
0,1444
0,1435
0,1427
0,1419
0,1412

0,2003
0,1988
0,1973
0,1958
0,1944
0,1930
0,1917
0,1903
0,1890
0,1878
0,1865
0,1853
0,1841
0,1829
0,1817
0,1806
0,1795
0,1784
0,1773
0,1763
0,1752
0,1742
0,1732
0,1722
0,1713
0,1703
0,1694

Marsaglia et al. (2015) desenvolveu a funo double K(int,double) para


estimar KS(p;n), este Algoritmo 9.5 foi utilizado para gerar a Tabela 41,
ilustrado pela Figura 63. Simard & LEcuyer (2015) propuseram a funo
double
KScdf
(int,double),
disponvel
em
http://www.iro.umontreal.ca/~simardr/ksdir, que tambm pode gerar a
Tabela 41.
Algoritmo 9.5: Gerador dos quantis da Distribuio KS (Tabela 41) do Teste
de Kolmogorov-Smirnov
#include
#include
#include
#include
#include

<stdlib.h>
<math.h>
<string>
<sstream>
<fstream>

using namespace std;


void mMultiply( double *A, double *B, double *C, int m ){
int i , j, k;
double s;
for( i = 0; i < m; i++ )
for( j = 0; j < m; j++ ){
s=0.;
for( k = 0; k < m; k++ )
s += A[i*m+k]*B[k*m+j];
C[i*m+j] = s;
}
}
void mPower( double *A,int eA,double *V,int *eV,int m,int n){
double *B;
int eB, i;
Modelagem e Simulao Discreta

216

if( n == 1){
for( i = 0; i < m*m; i++ )
V[i] = A[i];
*eV = eA;
return;
}
mPower(A,eA,V,eV,m,n/2);
B = (double*)malloc((m*m)*sizeof(double));
mMultiply(V,V,B,m);
eB = 2*(*eV);
if( n%2 == 0 ){
for( i = 0; i < m*m; i++ )
V[i]=B[i]; *eV=eB;
}
else{
mMultiply(A,B,V,m);
*eV=eA+eB;
}
if( V[(m/2)*m+(m/2)] > 1.0e140 ){
for( i = 0; i < m*m; i++ )
V[i] = V[i]*1.0e-140;
*eV += 140;
}
free(B);
}
double K( int n, double d ){
int k, m, i, j, g, eH, eQ;
double h, s, *H, *Q;
s = d*d*n;
if( s > 7.24 || ( s > 3.76 && n > 99 ) ) return 1.0-2.0*exp((2.000071+.331/sqrt(n)+1.409/n)*s);
k = (int)(n*d)+1;
m = 2*k-1;
h = k-n*d;
H =(double*)malloc((m*m)*sizeof(double));
Q =(double*)malloc((m*m)*sizeof(double));
for( i = 0; i < m; i++ )
for( j = 0; j < m; j++ )
if(i-j+1<0 ) H[i*m+j]=0;
else H[i*m+j]=1;
for( i = 0; i < m; i++ ){
H[i*m] -= pow(h,i+1);
H[(m-1)*m+i] -= pow(h,(m-i));
}
H[(m-1)*m] += ( 2.0*h-1.0 > 0.0 ? pow(2.0*h-1.0,m) : 0.0 );
for( i = 0; i< m; i++ )
for( j = 0; j < m; j++ )
if( i-j+1 > 0 ) for( g = 1; g <= i-j+1; g++ )
H[i*m+j] /= g;
eH = 0;
mPower(H,eH,Q,&eQ,m,n);
s = Q[(k-1)*m+k-1];
for( i = 1; i <= n; i++ ){
s = s*i/n;
if( s < 1.0e-140 ){
s *= 1.0e140;
eQ -= 140;
}
}
s *= pow(10.,eQ);
Modelagem e Simulao Discreta

217

free(H);
free(Q);
return s;

}
double KS( int n, double a ){
double x = 1.0, erro, I = 1.0-a;
do{
erro = I-K(n,x);
x += erro/5.0;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << "<table border='1' >";
str << "<tr><td>n<td>0.90<td>0.95<td>0.99";
for( int l = 1; l < 91; l++ ){
str << "<tr><td>" << l;
str << "<td>" << KS(l,0.10);
str << "<td>" << KS(l,0.05);
str << "<td>" << KS(l,0.01);
}
str << "</table>";
return str.str();
}
int main( void ){
string htm = "<br>Tabela KS<br>";
htm += Tabela();
ofstream file;
file.open( "KS-Quantis.out.html" );
file << htm;
file.close();
return 0;
}

Figura 63 - Esquema do clculo de KS(1-;n) destacando o valor de x


crtico para o Teste de Kolmogorov-Smirnov.
Segundo Bussab & Morettin (2002), os valores de KS(p;n) podem ser
ln( p)
aproximados pela equao KS( p , n)=
para n > 30.
n
Modelagem e Simulao Discreta

218

9.9 QUANTIS DA DISTRIBUIO NORMAL


UNITRIA
A Tabela 42 lista os valores de z para dado q da fdp Normal Unitria N(0,1)
z
1 2
dada por f (z)=
. Por exemplo, para o intervalo de confiana
e
2
unilateral de 95%, = 0.05 e q = 1- = 0.95. A linha da coluna 0.9 e
coluna 0.05 tem o valor z = 1.645.
2

Tabela 42 - Quantis da Distribuio Normal Unitria


q
0.5
0.6
0.7
0.8
0.9

0.00
0.00000
0.25335
0.52440
0.84162
1.28155

0.01
0.02507
0.27932
0.55338
0.87790
1.34076

0.02
0.05015
0.30548
0.58284
0.91537
1.40507

0.03
0.07527
0.33185
0.61281
0.95417
1.47579

0.04
0.10043
0.35846
0.64335
0.99446
1.55477

0.05
0.12566
0.38532
0.67449
1.03643
1.64485

0.06
0.15097
0.41246
0.70630
1.08032
1.75069

0.07
0.17637
0.43991
0.73885
1.12639
1.88079

0.08
0.20189
0.46770
0.77219
1.17499
2.05375

0.09
0.22754
0.49585
0.80642
1.22653
2.32635

Tabela
42
foi
elaborada
resolvendo
numericamente
z

12 e 2 dx=q0.5=0.5 , para q variando de 0.5 a 0.99, conforme o


0
Algoritmo 9.6.
z

Algoritmo 9.6: Gerador dos quantis da distribuio Normal unitria


#include
#include
#include
#include
#include
#include
#include
#include
#define

<stdio.h>
<stdlib.h>
<cmath>
<string>
<vector>
<sstream>
<fstream>
<iomanip>
PI 3.141592653589793238L

using namespace std;


double f( double x ){
return exp(-x*x/2.0)/sqrt(2.0*PI);
}
double I( double a, double b ){
double Si = 0.0, Sp = 0.0, N = 100, h = (b-a)/N, dx = 2.0*h, x;
x = a+h;
while( x < b ){
Si += f(x);
x += dx;
}
x = a+dx;
while( x < b-h ){
Sp += f(x);
x += dx;
}

Modelagem e Simulao Discreta

219

return (f(a)+f(b)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q ){
double x = 1.0, erro;
do{
erro = q-I(0.0,x)-0.5;
x
+= 5.0*erro;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>z";
for( int c = 0; c < 10; c++ )
str << "<td>" << c/100.0;

for( int l = 5; l < 10; l++ ){


str << "<tr><td>" << l/10.0;
for( int c = 0; c < 10; c++ ){
str << "<td>" << Q(l/10.0+c/100.0);
}
}
str << "</table>";
return str.str();

int main( void ){


string htm = "<br>Tabela N-Quantis<br>";
htm += Tabela();
ofstream file;
file.open("N-Quantis-out.html");
file << htm;
file.close();
}

return 0;

9.10
QUANTIS DA DISTRIBUIO T
(UNILATERAL)
A funo densidade de probabilidade t-Student com n graus de liberdade
n+ 1
(
)
2
x 2 ( n+1 )
definida por t (x , n)=
(1+ ) 2 , sendo (x) a funo Gamma. A
n
2
( ) n
2
Tabela 43 lista os quantis t(q,n) unilateral, por exemplo, o valor t(0.90,13)
Modelagem e Simulao Discreta

220

requerido pelo teste t com 90% de nvel de confiana e 13 graus de


liberade 1.3502.
Tabela 43 - Quantis da Distribuio t unilateral
n\q 0.900
1 3.0777
2 1.8856
3 1.6377
4 1.5332
5 1.4759
6 1.4398
7 1.4149
8 1.3968
9 1.3830
10 1.3722
11 1.3634
12 1.3562
13 1.3502
14 1.3450
15 1.3406
16 1.3368
17 1.3334
18 1.3304
19 1.3277
20 1.3253
21 1.3232
22 1.3212
23 1.3195
24 1.3178
25 1.3163
26 1.3150
27 1.3137
28 1.3125
29 1.3114
30 1.3104

0.925
4.1653
2.2819
1.9243
1.7782
1.6994
1.6502
1.6166
1.5922
1.5737
1.5592
1.5476
1.5380
1.5299
1.5231
1.5172
1.5121
1.5077
1.5037
1.5002
1.4970
1.4942
1.4916
1.4893
1.4871
1.4852
1.4834
1.4817
1.4801
1.4787
1.4774

0.950
6.3138
2.9200
2.3534
2.1318
2.0150
1.9432
1.8946
1.8595
1.8331
1.8125
1.7959
1.7823
1.7709
1.7613
1.7531
1.7459
1.7396
1.7341
1.7291
1.7247
1.7207
1.7171
1.7139
1.7109
1.7081
1.7056
1.7033
1.7011
1.6991
1.6973

0.975
12.7062
4.3027
3.1824
2.7764
2.5706
2.4469
2.3646
2.3060
2.2622
2.2281
2.2010
2.1788
2.1604
2.1448
2.1314
2.1199
2.1098
2.1009
2.0930
2.0860
2.0796
2.0739
2.0687
2.0639
2.0595
2.0555
2.0518
2.0484
2.0452
2.0423

0.990
31.8763
6.9646
4.5407
3.7469
3.3649
3.1427
2.9980
2.8965
2.8214
2.7638
2.7181
2.6810
2.6503
2.6245
2.6025
2.5835
2.5669
2.5524
2.5395
2.5280
2.5176
2.5083
2.4999
2.4922
2.4851
2.4786
2.4727
2.4671
2.4620
2.4573

n\q 0.900
31 1.3095
32 1.3086
33 1.3077
34 1.3070
35 1.3062
36 1.3055
37 1.3049
38 1.3042
39 1.3036
40 1.3031
41 1.3025
42 1.3020
43 1.3016
44 1.3011
45 1.3006
46 1.3002
47 1.2998
48 1.2994
49 1.2991
50 1.2987
51 1.2984
52 1.2980
53 1.2977
54 1.2974
55 1.2971
56 1.2969
57 1.2966
58 1.2963
59 1.2961
60 1.2958

0.925
1.4761
1.4749
1.4738
1.4728
1.4718
1.4709
1.4701
1.4692
1.4685
1.4677
1.4670
1.4664
1.4657
1.4651
1.4645
1.4640
1.4635
1.4629
1.4625
1.4620
1.4615
1.4611
1.4607
1.4603
1.4599
1.4596
1.4592
1.4589
1.4585
1.4582

0.950
1.6955
1.6939
1.6924
1.6909
1.6896
1.6883
1.6871
1.6860
1.6849
1.6839
1.6829
1.6820
1.6811
1.6802
1.6794
1.6787
1.6779
1.6772
1.6766
1.6759
1.6753
1.6747
1.6741
1.6736
1.6730
1.6725
1.6720
1.6716
1.6711
1.6706

0.975
2.0395
2.0369
2.0345
2.0322
2.0301
2.0281
2.0262
2.0244
2.0227
2.0211
2.0195
2.0181
2.0167
2.0154
2.0141
2.0129
2.0117
2.0106
2.0096
2.0086
2.0076
2.0066
2.0057
2.0049
2.0040
2.0032
2.0025
2.0017
2.0010
2.0003

0.990
2.4528
2.4487
2.4448
2.4411
2.4377
2.4345
2.4314
2.4286
2.4258
2.4233
2.4208
2.4185
2.4163
2.4141
2.4121
2.4102
2.4083
2.4066
2.4049
2.4033
2.4017
2.4002
2.3988
2.3974
2.3961
2.3948
2.3936
2.3924
2.3912
2.3901

n\q 0.900
61 1.2956
62 1.2954
63 1.2951
64 1.2949
65 1.2947
66 1.2945
67 1.2943
68 1.2941
69 1.2939
70 1.2938
71 1.2936
72 1.2934
73 1.2933
74 1.2931
75 1.2929
76 1.2928
77 1.2926
78 1.2925
79 1.2924
80 1.2922
81 1.2921
82 1.2920
83 1.2918
84 1.2917
85 1.2916
86 1.2915
87 1.2914
88 1.2912
89 1.2911
90 1.2910

0.925
1.4579
1.4576
1.4573
1.4570
1.4567
1.4565
1.4562
1.4560
1.4557
1.4555
1.4553
1.4551
1.4548
1.4546
1.4544
1.4542
1.4540
1.4538
1.4537
1.4535
1.4533
1.4531
1.4530
1.4528
1.4527
1.4525
1.4524
1.4522
1.4521
1.4519

0.950
1.6702
1.6698
1.6694
1.6690
1.6686
1.6683
1.6679
1.6676
1.6672
1.6669
1.6666
1.6663
1.6660
1.6657
1.6654
1.6652
1.6649
1.6646
1.6644
1.6641
1.6639
1.6636
1.6634
1.6632
1.6630
1.6628
1.6626
1.6624
1.6622
1.6620

0.975
1.9996
1.9990
1.9983
1.9977
1.9971
1.9966
1.9960
1.9955
1.9949
1.9944
1.9939
1.9935
1.9930
1.9925
1.9921
1.9917
1.9913
1.9908
1.9905
1.9901
1.9897
1.9893
1.9890
1.9886
1.9883
1.9879
1.9876
1.9873
1.9870
1.9867

0.990
2.3890
2.3880
2.3870
2.3860
2.3851
2.3842
2.3833
2.3824
2.3816
2.3808
2.3800
2.3793
2.3785
2.3778
2.3771
2.3764
2.3758
2.3751
2.3745
2.3739
2.3733
2.3727
2.3721
2.3716
2.3710
2.3705
2.3700
2.3695
2.3690
2.3685

Tabela
43
foi
elaborada
resolvendo
numericamente
n+1
)
z (
)
2
x 2 ( n+1
(1+ ) 2 dx=q0.5=0.5 , para n variando de 1 a 90 e q
n
2
0
( ) n
2
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 integrao numrica no to precisa quanto para n
> 2.
Algoritmo 9.7: Gerador dos quantis da distribuio t unilateral
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
#include <iomanip>
//-----------------------------------------------------------------------#define PI 3.141592653589793238L
//-----------------------------------------------------------------------using namespace std;
//-----------------------------------------------------------------------double G( double z ){
return tgamma(z);
}
double f( double x, int gl ){
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);
}
Modelagem e Simulao Discreta

221

double I( double a, double b, int gl ){


double Si = 0.0, Sp = 0.0, N = 100, h = (b-a)/N, dx = 2.0*h, x;
x = a+h;
while( x < b ){
Si += f(x,gl);
x += dx;
}
x = a+dx;
while( x < b-h ){
Sp += f(x,gl);
x += dx;
}
return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q, int gl ){
double x = 1.0, erro;
do{
erro = q-I(0.0,x,gl)-0.5;
x
+= 2.0*erro;
}while( fabs(erro) > 1.0E-9 );
return x;
}
string Tabela( void ){
stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>q<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990";

for( int gl = 1; gl < 101; gl++ ){


str << "<tr><td>" << gl;
str << "<td>" << Q(0.900,gl);
str << "<td>" << Q(0.925,gl);
str << "<td>" << Q(0.950,gl);
str << "<td>" << Q(0.975,gl);
str << "<td>" << Q(0.990,gl);
}
str << "</table>";
return str.str();

int main( void ){


string htm = "<br>Tabela t-Quantis unilateral<br>";
htm += Tabela();
ofstream file;
file.open("t-Quantis-out.html");
file << htm;
file.close();
}

return 0;

Modelagem e Simulao Discreta

222

9.11
QUANTIS DA DISTRIBUIO T
(BILATERAL)
A funo densidade de probabilidade t-Student com n graus de liberdade
n+ 1
(
)
)
2
x 2 ( n+1
definida por t (x , n)=
(1+ ) 2 , sendo (x) a funo Gamma. A
n
n
( ) n
2
Tabela 44 lista os quantis t(q,n) bilateral, pode-se verificar que a fdp
simtrica, ou seja, no geral t(1-/2,n) = -t(/2,n).
Tabela 44 - Quantis da Distribuio t bilateral
n\q 0.005
1 -52.5111
2 -9.9193
3 -5.8409
4 -4.6041
5 -4.0321
6 -3.7074
7 -3.4995
8 -3.3554
9 -3.2498
10 -3.1693
11 -3.1058
12 -3.0545
13 -3.0123
14 -2.9768
15 -2.9467
16 -2.9208
17 -2.8982
18 -2.8784
19 -2.8609
20 -2.8453
21 -2.8314
22 -2.8188
23 -2.8073
24 -2.7969
25 -2.7874
26 -2.7787
27 -2.7707
28 -2.7633
29 -2.7564
30 -2.7500

0.010
-28.7660
-6.9626
-4.5407
-3.7469
-3.3649
-3.1427
-2.9980
-2.8965
-2.8214
-2.7638
-2.7181
-2.6810
-2.6503
-2.6245
-2.6025
-2.5835
-2.5669
-2.5524
-2.5395
-2.5280
-2.5177
-2.5083
-2.4999
-2.4922
-2.4851
-2.4786
-2.4727
-2.4671
-2.4620
-2.4573

0.025
-12.1867
-4.3021
-3.1824
-2.7764
-2.5706
-2.4469
-2.3646
-2.3060
-2.2622
-2.2281
-2.2010
-2.1788
-2.1604
-2.1448
-2.1315
-2.1199
-2.1098
-2.1009
-2.0930
-2.0860
-2.0796
-2.0739
-2.0687
-2.0639
-2.0595
-2.0555
-2.0518
-2.0484
-2.0452
-2.0423

0.050
-6.1803
-2.9198
-2.3534
-2.1318
-2.0150
-1.9432
-1.8946
-1.8595
-1.8331
-1.8125
-1.7959
-1.7823
-1.7709
-1.7613
-1.7531
-1.7459
-1.7396
-1.7341
-1.7291
-1.7247
-1.7207
-1.7171
-1.7139
-1.7109
-1.7081
-1.7056
-1.7033
-1.7011
-1.6991
-1.6973

0.100
-3.0431
-1.8855
-1.6377
-1.5332
-1.4759
-1.4398
-1.4149
-1.3968
-1.3830
-1.3722
-1.3634
-1.3562
-1.3502
-1.3450
-1.3406
-1.3368
-1.3334
-1.3304
-1.3277
-1.3253
-1.3232
-1.3212
-1.3195
-1.3178
-1.3163
-1.3150
-1.3137
-1.3125
-1.3114
-1.3104

0.900
3.1130
1.8857
1.6377
1.5332
1.4759
1.4398
1.4149
1.3968
1.3830
1.3722
1.3634
1.3562
1.3502
1.3450
1.3406
1.3368
1.3334
1.3304
1.3277
1.3253
1.3232
1.3212
1.3195
1.3178
1.3163
1.3150
1.3137
1.3125
1.3114
1.3104

0.925
4.2273
2.2820
1.9243
1.7782
1.6994
1.6502
1.6166
1.5922
1.5737
1.5592
1.5476
1.5380
1.5299
1.5231
1.5172
1.5121
1.5077
1.5037
1.5002
1.4970
1.4942
1.4916
1.4893
1.4871
1.4852
1.4834
1.4817
1.4801
1.4787
1.4774

0.950
6.4529
2.9202
2.3534
2.1318
2.0150
1.9432
1.8946
1.8595
1.8331
1.8125
1.7959
1.7823
1.7709
1.7613
1.7531
1.7459
1.7396
1.7341
1.7291
1.7247
1.7207
1.7171
1.7139
1.7109
1.7081
1.7056
1.7033
1.7011
1.6991
1.6973

0.975
13.2716
4.3032
3.1824
2.7764
2.5706
2.4469
2.3646
2.3060
2.2622
2.2281
2.2010
2.1788
2.1604
2.1448
2.1315
2.1199
2.1098
2.1009
2.0930
2.0860
2.0796
2.0739
2.0687
2.0639
2.0595
2.0555
2.0518
2.0484
2.0452
2.0423

0.990
35.5999
6.9666
4.5407
3.7469
3.3649
3.1427
2.9980
2.8965
2.8214
2.7638
2.7181
2.6810
2.6503
2.6245
2.6025
2.5835
2.5669
2.5524
2.5395
2.5280
2.5177
2.5083
2.4999
2.4922
2.4851
2.4786
2.4727
2.4671
2.4620
2.4573

0.995
80.8063
9.9304
5.8409
4.6041
4.0321
3.7074
3.4995
3.3554
3.2498
3.1693
3.1058
3.0545
3.0123
2.9768
2.9467
2.9208
2.8982
2.8784
2.8609
2.8453
2.8314
2.8188
2.8073
2.7969
2.7874
2.7787
2.7707
2.7633
2.7564
2.7500

Tabela
44
foi
elaborada
resolvendo
numericamente
n+1
)
z (
)
2
x 2 ( n+1
(1+
) 2 dx=q0.5=0.5 , para n variando de 1 a 30 e q
n
n
0
( ) n
2
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 integrao
numrica no to precisa quanto para n > 2.
Algoritmo 9.8: Gerador dos quantis da distribuio t bilateral
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
Modelagem e Simulao Discreta

223

#include
#include
#include
#include
#include
#define

<string>
<vector>
<sstream>
<fstream>
<iomanip>
PI 3.141592653589793238L

using namespace std;


double G( double z ){
return tgamma(z);
}
double f( double x, int gl ){
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);
}
double I( double a, double b, int gl ){
double Si = 0.0, Sp = 0.0, N = 3000, h = (b-a)/N, dx = 2.0*h, x;
x = a+h;
while( x < b ){
Si += f(x,gl);
x += dx;
}
x = a+dx;
while( x < b-h ){
Sp += f(x,gl);
x += dx;
}
return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q, int gl ){
double x = 0.0, erro, c = 0;
do{
erro = q-I(-300.0,x,gl);
x += 5.0*erro;
c++;
}while( fabs(erro) > 1.0E-10 );
printf("\n c = %f", c );
return x;
}
string Tabela( void ){
stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>q<td>0.005<td>0.010<td>0.025<td>0.050<td>0.100";
str << "<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990<td>0.995";
for( int
str
str
str
str
str
str
str
str
str

gl
<<
<<
<<
<<
<<
<<
<<
<<
<<

= 1; gl < 31; gl++ ){


"<tr><td>" << gl;
"<td>" << Q(0.005,gl);
"<td>" << Q(0.010,gl);
"<td>" << Q(0.025,gl);
"<td>" << Q(0.050,gl);
"<td>" << Q(0.100,gl);
"<td>" << Q(0.900,gl);
"<td>" << Q(0.925,gl);
"<td>" << Q(0.950,gl);

Modelagem e Simulao Discreta

224

str << "<td>" << Q(0.975,gl);


str << "<td>" << Q(0.990,gl);
str << "<td>" << Q(0.995,gl);

}
str << "</table>";
return str.str();
}

int main( void ){


string htm = "<br>Tabela t-Quantis bilateral<br>";
htm += Tabela();
ofstream file;
file.open("t-Quantis.bilateral-out.html");
file << htm;
file.close();
}

return 0;

QUANTIS DA DISTRIBUIO 2 BILATERAL

9.12

A funo densidade de probabilidade 2 com n graus de liberdade


e
, sendo (x) a funo Gamma. A Tabela 45
n
2 ( )
2
lista os quantis 2(p;n), p = 1-.
definida por

f ( x , n)=

n
x
1
2
2

n
2

Tabela 45 - Quantis da distribuio 2 bilateral


n\p
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

0.005
0.0100
0.0717
0.2070
0.4117
0.6757
0.9893
1.3444
1.7349
2.1559
2.6032
3.0738
3.5650
4.0747
4.6009
5.1422
5.6972
6.2648
6.8440
7.4338
8.0337
8.6427
9.2604
9.8862
10.5197
11.1602
11.8076
12.4613
13.1211
13.7867

0.010
0.0201
0.1148
0.2971
0.5543
0.8721
1.2390
1.6465
2.0879
2.5582
3.0535
3.5706
4.1069
4.6604
5.2293
5.8122
6.4078
7.0149
7.6327
8.2604
8.8972
9.5425
10.1957
10.8564
11.5240
12.1981
12.8785
13.5647
14.2565
14.9535

0.025
0.0506
0.2158
0.4844
0.8312
1.2373
1.6899
2.1797
2.7004
3.2470
3.8157
4.4038
5.0088
5.6287
6.2621
6.9077
7.5642
8.2307
8.9065
9.5908
10.2829
10.9823
11.6886
12.4012
13.1197
13.8439
14.5734
15.3079
16.0471
16.7908

0.050
0.1026
0.3518
0.7107
1.1455
1.6354
2.1673
2.7326
3.3251
3.9403
4.5748
5.2260
5.8919
6.5706
7.2609
7.9616
8.6718
9.3905
10.1170
10.8508
11.5913
12.3380
13.0905
13.8484
14.6114
15.3792
16.1514
16.9279
17.7084
18.4927

Modelagem e Simulao Discreta

0.100
0.2107
0.5844
1.0636
1.6103
2.2041
2.8331
3.4895
4.1682
4.8652
5.5778
6.3038
7.0415
7.7895
8.5468
9.3122
10.0852
10.8649
11.6509
12.4426
13.2396
14.0415
14.8480
15.6587
16.4734
17.2919
18.1139
18.9392
19.7677
20.5992

0.900
4.6052
6.2518
7.7794
9.2364
10.6446
12.0170
13.3616
14.6837
15.9872
17.2750
18.5493
19.8119
21.0641
22.3071
23.5418
24.7690
25.9894
27.2036
28.4120
29.6151
30.8133
32.0069
33.1962
34.3816
35.5632
36.7412
37.9159
39.0875
40.2560

0.925
5.1805
6.9052
8.4963
10.0083
11.4659
12.8834
14.2697
15.6309
16.9714
18.2942
19.6020
20.8966
22.1795
23.4522
24.7155
25.9705
27.2178
28.4581
29.6920
30.9200
32.1424
33.3597
34.5723
35.7803
36.9841
38.1840
39.3801
40.5727
41.7619

0.950
5.9915
7.8157
9.4877
11.0705
12.5916
14.0671
15.5073
16.9190
18.3070
19.6751
21.0261
22.3620
23.6848
24.9958
26.2962
27.5871
28.8693
30.1435
31.4104
32.6706
33.9244
35.1725
36.4150
37.6525
38.8851
40.1133
41.3371
42.5570
43.7730

0.975
7.3778
9.3510
11.1433
12.8325
14.4494
16.0128
17.5345
19.0228
20.4832
21.9200
23.3367
24.7356
26.1189
27.4884
28.8454
30.1910
31.5264
32.8523
34.1696
35.4789
36.7807
38.0756
39.3641
40.6465
41.9232
43.1945
44.4608
45.7223
46.9792

0.990
9.2103
11.3534
13.2767
15.0863
16.8119
18.4753
20.0902
21.6660
23.2093
24.7250
26.2170
27.6882
29.1412
30.5779
31.9999
33.4087
34.8053
36.1909
37.5662
38.9322
40.2894
41.6384
42.9798
44.3141
45.6417
46.9629
48.2782
49.5879
50.8922

225

0.995
10.5966
12.8585
14.8603
16.7496
18.5476
20.2777
21.9550
23.5894
25.1882
26.7568
28.2995
29.8195
31.3193
32.8013
34.2672
35.7185
37.1565
38.5823
39.9968
41.4011
42.7957
44.1813
45.5585
46.9279
48.2899
49.6449
50.9934
52.3356
53.6720

Tabela

foi

elaborada

resolvendo

numericamente

e
dx= p=1 , para n variando de 1 a 30 e p iguais a 0.005,
n
0
2 ( )
2
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 integrao numrica no to
precisa quanto para n > 1.

45

n
x
1
2
2

n
2

Algoritmo 9.9: Gerador dos quantis da distribuio 2 bilateral


#include
#include
#include
#include
#include
#include
#include
#include

<stdio.h>
<stdlib.h>
<cmath>
<string>
<vector>
<sstream>
<fstream>
<iomanip>

using namespace std;


double G( double z ){
return tgamma(z);
}
double f( double x, double gl ){
return 1.0/(pow(2.0,gl/2)*G(gl/2.0))*pow(x,gl/2.0-1.0)*exp(-x/2.0);
}
double I( double a, double b, int gl ){
double Si = 0.0, Sp = 0.0, N = 1000,h = (b-a)/N, dx = 2.0*h, x;
x = a+h;
while( x < b ){
Si += f(x,gl);
x += dx;
}
x = a+dx;
while( x < b-h ){
Sp += f(x,gl);
x += dx;
}
return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q, int gl ){
double x = 1.0, erro, c = 0;
do{
erro = q-I(0.0,x,gl);
x
+= erro;
c++;
}while( fabs(erro) > 1.0E-12 );
printf("\n c = %f", c );
return x;
}
string Tabela( void ){
Modelagem e Simulao Discreta

226

stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>q<td>0.005<td>0.010<td>0.025<td>0.050<td>0.100";
str << "<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990<td>0.995";

for( int
str
str
str
str
str
str

gl
<<
<<
<<
<<
<<
<<

= 1; gl < 31; gl++ ){


"<tr><td>" << gl;
"<td>" << Q(0.005,gl);
"<td>" << Q(0.010,gl);
"<td>" << Q(0.025,gl);
"<td>" << Q(0.050,gl);
"<td>" << Q(0.100,gl);

str
str
str
str
str
str

<<
<<
<<
<<
<<
<<

"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"

<<
<<
<<
<<
<<
<<

Q(0.900,gl);
Q(0.925,gl);
Q(0.950,gl);
Q(0.975,gl);
Q(0.990,gl);
Q(0.995,gl);

}
str << "</table>";
return str.str();

int main( void ){


string htm = "<br>Tabela CQ-Quantis bilateral<br>";
htm += Tabela();
ofstream file;
file.open("CQ-Quantis.bilateral-out.html");
file << htm;
file.close();
}

return 0;

Segundo Bussab & Morettin (2002), os valores de 2(p;n) para n > 120
podem ser aproximados pelos seus equivalentes da distribuio normal.

9.13
NOES BSICAS DE TEORIA DOS
NMEROS

9.13.1

FUNO PISO

A funo piso x tambm chamada de funo maior inteiro de x uma


funo cujo domnio o conjunto dos Nmeros Reais (R) e o contradomnio
o conjunto dos Nmeros Inteiros (Z) que associa um nmero real x ao
Modelagem e Simulao Discreta

227

inteiro n, isto x = n, isto x = max{n Z | n x}. As Linguagens C e


C++ possuem a funo int floor(double) para calcular a funo piso de
nmeros reais.
Se a funo piso de x o nmero inteiro n, temos que:

x = n tal que n x < n+1


n = floor(x)

Exemplo 9.5:
2 = floor(2.3)
3 = floor(3.8)
-3 = floor(-2.3)
-4 = floor(-3.8).

9.13.2

FUNO TETO

A funo teto x tambm chamada de funo menor inteiro de x uma


funo cujo domnio R e o contradomnio Z e que associa um nmero
real x ao inteiro n, isto x = n, ou seja x = min{n Z | n x}. A
funo int ceil(double) das Linguagens C e C++ calcula a funo teto de
nmeros reais.
Se a funo teto de x o nmero inteiro n, temos que:

x = n tal que n1 < x n


n = ceil(x)

Exemplo 9.6:
3 = ceil(2.3)
4 = ceil(3.8)
-2 = ceil(-2.3)
-3 = ceil(-3.8)

9.13.3

NMERO PRIMO

Um nmero natural p > 1 chamado primo se os nicos divisores


positivos de p so 1 e p. O Programa primo.c testa se um nmero primo.
Algoritmo 9.10: Programa primo.c - Programa para testar os divisores
impares at n1/2+1.
#include <stdio.h>
int primo( int n ){
int c, N;
if( !(n % 2) ) return 0;
N = sqrt(n)+1;
Modelagem e Simulao Discreta

228

for( c = 3; c < N; c += 2 )
if( !(n % c) ) return 0;
return 1;

}
int main (void){
int n;
for( n = 3; n < 100; n++ )
if( primo(n) ) printf(" %d ::", n);
return 0;
}

9.13.4

MXIMO DIVISOR COMUM (MDC)

Dados dois nmeros inteiros a e b com a 0 ou b 0, a cada um deles


pode-se associar seu conjunto de divisores positivos, Da e Db
respectivamente, e a interseco de tais conjuntos Da Db finita e no
vazia (j que 1 pertence interseco). Por ser finito, Da Db possui
elemento mximo, que chamado de Mximo Divisor Comum (mdc) dos
nmeros a e b. Denotamos este nmero por mdc(a,b). Para a = b = 0
convencionamos mdc(0,0) = 0. Quando mdc(a,b) = 1 dizemos que a e b
so primos entre si.
O algoritmo de Euclides para calacular o mdc(a,b) um dos mais antigos
ainda em uso. O Programa mdc.c implementaeste algoritmo para nmeros
inteiros utilizando recursividade.
Algoritmo 9.11: Programa mdc.c - Programa para calcular recursivamente
o mdc de nmeros inteiros utilizando o algoritmo de Euclides.
#include <stdio.h>
int mdc( int a, int b){
if( b == 0 ) return a;
else return mdc(b,a%b);
}
int main( void ){
int a = 156, b = 348; // mdc(156,348) = 12;
printf( "mdc(%d,%d) = %d", a, b, mdc(a,b) );
return 0;
}

9.13.5

DIVISIBILIDADE

Dados dois inteiros d e a, dizemos que d divide a ou que d um divisor de


a ou ainda que a um mltiplo de d e escrevemos d|a se existir q Z com
a = qd. A divisibilidade define uma relao binria B no conjunto dos
nmeros inteiros, B = {(a,b)|a divide b}. Nesses termos, quando (a,b) B
costuma-se dizer que a est relacionado com b escrevendo-se aBb.

Modelagem e Simulao Discreta

229

A relao de divisibilidade possui as seguintes propriedades, para


quaisquer (salvo indicao em contrrio) inteiros a, b, c, d, r, s:
1
2
3
4
5
6
7
8
9
10
11
12
13

9.13.6

a|a
a|b e b|c a|c
a|b e b|a a=b ou a=-b
c|a e c|b c|ra + sb
a|b e c|d ac|bd
a|b ac|bc
ac|bc e c 0 a|b
1|a
a|0
0|a a=0
a|1 a=1
a|b e b 0 |a| |b|
a|b e a 0 (b/a)|b

reflexividade
transitividade
anti-simetria
linearidade
multiplicatividade
lei do cancelamento
1 divide todo nmero inteiro
qualquer nmero divide zero
zero s divide zero
os divisores de 1 so 1 e -1
compatibilidade com a ordem

OPERADOR MOD

Algoritmo da diviso de Euclides estabelece o Teorema: Se a e b so


nmeros inteiros, e b 0, ento existe um nico par de nmeros inteiros q
e r, tais que a = bq+r, com 0 r < |b|. A funo mod(a,b) = r.
O operador % das Linguagens C e C++ calcula mod(a,b) da forma a % b.

9.14

INTERVALO DE CONFIANA DA MDIA

No possvel obter uma estimativa nica da mdia da populao a partir


de qualquer nmero finito de amostras de tamanho finito. Cada mdia da
amostra uma estimativa da mdia da populao. Dadas k amostras,
temos k estimativas, todas eles diferentes. necessrio obter uma nica
estimativa da mdia da populao em relao s estimativas k.
O melhor que se pode fazer obter limites probabilsticos. Assim, pode-se
obter dois limites, Li e Ls, de tal forma que existe uma probabilidade de 1-
que a mdia da populao est no intervalo (Li,Ls):
Probabilidade {Li xm Ls} = 1-.
O intervalo (Li, Ls) chamado de intervalo de confiana para a mdia da
populao, designado como nvel de significncia, 100(1-)%
chamado o nvel de confiana, e 1- chamado o coeficiente de
confiana.
Definio de Intervalo de Confiana:
Modelagem e Simulao Discreta

230

Sejam X1, X2, ..., Xn variveis aleatrias com um conjunto de distribuio


de acordo com um parmetro . Sejam T 1 < T2 funes destes dados
mas no de . O intervalo aleatrio (T1,T2) chamado de intervalo de
confiana estocstico para com confiana 1-, se P (T1 < < T2) 1-,
para todo . Se t1 e t2 so os valores observados de T 1 e T2, o intervalo
(t1,t2) chamado de intervalo de confiana numrico para com confiana
1-a.
Note-se que o nvel de confiana tradicionalmente expressa como uma
percentagem e , tipicamente, perto de 100%, por exemplo, 90 ou 95%,
enquanto que o nvel de significncia expressa como uma frao de um
e , tipicamente, perto do zero, por exemplo, 0,05 ou 0,1.
Uma maneira de determinar o intervalo de confiana de 90% seria a
utilizao dos os limites entre o 5 e o 95 percentil da amostra. Por
exemplo, poderamos tomar k amostras, encontrar a mdia da amostra,
separ-los em ordem crescente, e obter os [1+0,05(k-1)] e o [1+0,95(1k)] elementos do conjunto aps sua classificao.
Felizmente, no necessrio recolher amostras em demasia. possvel
determinar o intervalo de confiana a partir de apenas uma amostra. Isto
devido ao Teorema do Limite Central, que permite determinar a
distribuio da mdia da amostra. Este teorema afirma que se as {x 1,
x2,..., xn} observaes de uma amostra forem independentes, da mesma
populao, com mdia e desvio padro ento a mdia da amostra para
grandes amostras aproximadamente normalmente distribudo com
mdia xm e desvio-padro 2: x~N(,).
O desvio padro da mdia de amostras chamado o erro padro.
Novamente, o erro padro diferente do desvio padro da populao. Se
o desvio padro da populao , o erro padro n 1/2. A partir desta
expresso pode-se concluir que medida que o tamanho da amostra n
aumenta, diminui o erro padro.
Utilizando o teorema do limite central, o intervalo de confiana 100(1-)%
para a mdia da populao dada por (xm-z1-/2s/n1/2, xm+z1-/2s/n1/2).
Aqui, xm a mdia da amostra, s o desvio padro da amostra, n o
tamanho da amostra, e z1-/2 o valor (1-/2) o quantil de uma varivel
normal unitria. Uma vez que estes quantis so usados com muita
frequncia, os seus valores esto tabelados no Anexo.
Exemplo 9.7: Para uma amostra com mdia xm = 3,90, desvio padro 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 confiana de 90%, a mdia (3,62,4,17).
Podemos afirmar com confiana de 90% que a mdia da populao est entre 3,62 e
4,17. O erro nesta declarao de 10%, isto , se tomarmos 100 amostras ao acaso e
construir um intervalo de confiana para cada amostra em 90 casos, o intervalo deve
incluir a mdia da populao e, em 10 casos, o intervalo no deve incluir a mdia da
Modelagem e Simulao Discreta

231

populao.
Do mesmo modo,
com intervalo de confiana de 95%:(3,90(1.960) 0,95/32 1/2)=(3,57,4,23)
com intervalo de confiana de 99%:(3,90(2.576) 0,95/32 1/2)=(3,46,4,33)

O intervalo de confiana precedente aplica-se apenas para amostras


grandes, isto , para as amostras de tamanho maior do que 30. Para
amostras menores, os intervalos de confiana podem ser construdos
somente se as observaes provenientes de populao forem
normalmente distribudos. Para as amostras com n 30, o valor de 100(1)% intervalo de confiana 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 varivel t, com n-1 graus de
liberdade. Estes quantis esto listados no Anexo. O intervalo baseado no
fato de que para as amostras a partir de uma populao normal N(, 2),
(xm-)/(/n1/2) tem distribuio N(0,1) e (n-1)s/2 tem distribuio 2Quadrado com n-1 graus de liberdade, e, portanto, (x m-)/(s2/n)1/2 tem uma
distribuio t com n-1 graus de liberdade.
Exemplo 9.8: Considere os dados de erro com distribuio normal: -0,04, -0,19, 0,14,
-0,09, -0,14, 0,19, 0,04, e 0,09.
A mdia destes valores zero e seu desvio padro da amostra 0,138.
O t0,95;7 a partir do Anexo 1,895.
Assim, o intervalo de confiana para a mdia de erro 01,8950.138/8 1/2=00,0926 =
(-0,0926,0,0926).

Modelagem e Simulao Discreta

232

10 REFERNCIAS

Averill, M. L. Simulation Modeling and Analysis. Pearson Education, 2006.


Bandyopadhyay, Susmita; Bhattacharya, Ranjan. Discrete and Continuous
Simulation: Theory and Practice. CRC Press, 2014. 344p.
Brown, Walter E. Random Number Generation in C++11. 2013. Disponvel
em:
<http://www.openstd.org/jtc1/sc22/wg21/docs/papers/2013/n3551.pdf>. Acesso em: 20 Dez
2013.
Bussab, W. O.; Morettin, P. A. Estatstica Bsica. 5ed. So Paulo: Saraiva,
2002. 526p.
Catalunha, Mrcio Jos; Sediyama, Gilberto Chohaku; Leal, Brauliro
Gonalves; Soares, Carlos Pedro Boechat; Ribeiro, Aristides. Aplicao de
cinco funes densidade de probabilidade a sries de precipitao pluvial
no Estado de Minas Gerais. Revista Brasileira de Agrometeorologia, v. 10,
n. 01, p. 153-162, 2002.
Chen, Ken. Performance Evaluation by Simulation and Analysis with
Applications to Computer Networks. John Wiley & Sons, 2015. 226p.
Chung, Christopher A. Simulation modeling handbook:
approach. Boca Raton, Florida: CRC Press LLC, 2004. 574p.

practical

cppreference. Pseudo-random number generation. Disponvel em:


<http://en.cppreference.com/w/cpp/numeric/random>. Acesso em: 20 Dez
2013.
Epperson, James F. An introduction to numerical methods and analysis. 2 nd
ed. Hoboken, New Jersey: John Wiley & Sons, Inc., 2013. 591p.

Modelagem e Simulao Discreta

233

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. Introduo Modelagem e Simulao de Sistemas
com Aplicaes Arena. 2a ed. Florianpolis: 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. Estatstica Aplicada e Probabilidade para Engenheiros.


LTC, 2003.
Hirata, Miguel, H. Uma introduo ao aproveitamento da energia elica.
Rio de Janeiro, Brazil: Proceedings of ENCIT 2004, ABCM, 2004. Disponvel
em
<http://www.abcm.org.br/anais/encit/2004/artigos/invited/CIT04IL14.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.
(Disponvel
em:
<http://chagall.med.cornell.edu/BioinfoCourse/PDFs/Lecture4/random_num
ber_generator.pdf>. Acesso em: 30 Dez 2014.
Jain, R. The Art of Computer Systems Performance Analysis: Techniques for
Experimental Design, Measurement, Simulation, and Modeling. WileyInterscience, 1991.
Krishnan, Venkatarama. Probability and Random Processes. John Wiley &
Sons, Inc: Hoboken, New Jersey, 2006. 723p.
Kroese, Dirk P.; Chan, Joshua C. C. Statistical Modeling and Computation.
Springer: New York, 2014.
L'Ecuyer. L'Ecuyer's Combined Recursive Generator, 2007. Disponvel em:
<http://www.democritos.it/activities/IT-MC/ACML4.0.1/L_0027Ecuyer_0027s-Combined-Recursive-Generator.html>. Acesso
em: 10 Mar 2011.
Larson, Ron; Farber, Betsy. Estatstica Aplicada. 4ed. So Paulo: Pearson
Prentice Hall, 2010, 637p.
Leemis, Larry. Univariate Distribution Relationships. Disponvel em:
<http://www.math.wm.edu/~leemis/chart/UDR/UDR.html>. Acesso em: 13
Mai 2015.
Leite, Maysa Lima; Virgens Filho, Jorim Sousa. Ajuste de modelos de
distribuio de probabilidade a sries horrias de velocidade do vento
Modelagem e Simulao Discreta

234

para o municpio 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 Kolmogorovs
Distribution. Disponvel 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)?. Disponvel 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 computer
systems: queueing theory in action. Cambridge University Press, New York,
2013. 574p.
NIST. NIST Special Publication 800-22 Revision 1a: A Statistical Test Suite
for Random and Pseudorandom Number Generators for Cryptographic
Applications.
2010.
Disponvel
em:
<http://csrc.nist.gov/publications/nistpubs/800-22-rev1a/SP80022rev1a.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.

Polyanin, Andrei D.; Manzhirov, Alexander V. Handbook of Mathematics for


Engineers 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 and
statistics. 4ed. New York: McGraw-Hill, 2013. 424p.
Simard, Richard; LEcuyer, Pierre. Computing the Two-Sided KolmogorovSmirnov
Distribution.
Disponvel
em:
<http://www.iro.umontreal.ca/~lecuyer/myftp/papers/ksdist.pdf>. Acesso
em: 04 Abr 2015.
Sun Microsystems. Sun Fire X4150, X4250, and X4450 Server
Architecture. September 2008. Disponvel:
<http://www.qassociates.co.uk/pdf/X4150-X4250-X4450server_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.

Modelagem e Simulao Discreta

235

Zwillinger, Daniel; Kokoska, Stephen. Standard probability and statistics


tables and formulary - Student Edition. CRC Press: Boca Raton, 2000.
215p.

Modelagem e Simulao Discreta

236

You might also like