Simulação

download Simulação

of 157

Transcript of Simulação

Introduo Simulao DiscretaMauricio Pereira dos SantosDepartamento de Matemtica AplicadaInstituto de Matemtica e EstatsticaUNIVERSIDADE DO ESTADO DO RIO DE JANEIROiiCopyright c 1.999 por Mauricio Pereira dos SantosOsprogramasapresentadosnotextoforamcriados, exclusivamente, paraservirde apoio a matria contida na obra.Os programas podem ser copiados e usados livremente mas o autor no tem ne-nhuma responsabilidade pelo uso que deles for feito.Editorao: O autor, criando arquivo texto no format LaTex.Grco da Randu gerado no Matlabe inserido no texto como EPS (EncapsulatedPostcript File).Telas do Arena inseridas no texto como EPS (Encapsulated Postcript File).Compiladores usados nos programas: Turbo Pascal e Visual Basic 6.080226iiiPrefcioO objetivo deste trabalho fornecer aos alunos das cadeiras de Simulao da UERJum referencial que os auxilie no estudo e acompanhamento da matria.Aliteratura, sobreoassunto, nalnguaportuguesabastantereduzidae, comoagravante, algumas das poucas obras existentes esto esgotadas.Mesmo a literatura em ingls sobre Simulao pequena, se comparada com ou-tros tpicos que formam a chamada Pesquisa Operacional.Por sua vez os livros genricos de Pesquisa Operacional, quase sem exceo, apre-sentamapenasumcaptulosobreSimulaosendooassunto, comonopoderiadeixar de ser, tratado de forma bastante superficial.O estudo dos modelos de Simulao implica, obrigatoriamente, no uso do computa-dor. A falta dele limita, severamente, a compreenso das tcnicas utilizadas. Poresta razo inclumos no texto programas que possam ajudar aos alunos a fazer suasprprias aplicaes.Atualmente, na UERJ, a cadeira de Processamento de Dados ensina como lingua-gem de programao, o Pascal, razo pela qual os programas do texto so apresen-tados naquela linguagem. Para confeco dos programas, o compilador usado foi oTurbo Pascal mas qualquer outro compilador Pascal deve poder ser usado sem mai-ores complicaes. No captulo 5 apresentado um programa que foi feito para oambiente windows, utilizando-se o Visual Basic.Este programa um dos mdulosdo programa PO que contmmdulos de vrias aplicaes de Pesquisa Operacional.Agradecemos a todos aqueles que nos ajudaram nesta tarefa, especialmente os alu-nos que foram cobaias no uso dos rascunhos deste trabalho.De antemo agradeo desde j a todos aqueles que puderem apontar imperfeiese erros que possam ser corrigidos.O AutorivContedo1 Introduo Simulao 11.1 Vantagens e Desvantagens da Simulao . . . . . . . . . . . . . . . . . . . . . . . . 11.2 reas de aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Componentes de um Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Tipos de Modelos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5 Modelos Discretos e Contnuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6 Etapas de um projeto de simulao . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.7 Exemplos de modelos de Simulao . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.7.1 Quebra de rolamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.7.2 Fila com uma estao de servio . . . . . . . . . . . . . . . . . . . . . . . . . 111.7.3 O que no est explcito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 A gerao de Nmeros Aleatrios 152.1 Propriedades desejveis de um gerador de nmeros aleatrios. . . . . . . . . . . . . 152.2 Mtodos para a gerao de nmeros aleatrios . . . . . . . . . . . . . . . . . . . . . 162.2.1 Mtodo dos quadrados mdios . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2.2 Mtodos Congruentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 Nmeros Aleatrios uniformemente distribudos em [0,1) . . . . . . . . . . . . . . . 172.4 O gerador RANDU e a formao de trelias. . . . . . . . . . . . . . . . . . . . . . . 182.5 O gerador RAND1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.6 O gerador RAND2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7 Mtodos com perodos maiores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7.1 O gerador RAND3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7.2 O gerador RAND4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.8 Geradores de nmeros aleatrios embutidos . . . . . . . . . . . . . . . . . . . . . . 292.8.1 O gerador do Turbo Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.8.2 O gerador do Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.8.3 Cuidados a serem tomados . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.9 Nmeros aleatrios com outras distribuies uniformes . . . . . . . . . . . . . . . . 312.9.1 Variveis aleatrias contnuas . . . . . . . . . . . . . . . . . . . . . . . . . . 322.9.2 Variveis aleatrias discretas . . . . . . . . . . . . . . . . . . . . . . . . . . 332.10 Testes estatsticos para a uniformidade. . . . . . . . . . . . . . . . . . . . . . . . . 342.10.1O teste do 2(qui-quadrado) . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.10.2O teste de Kolmogorov-Smirnov . . . . . . . . . . . . . . . . . . . . . . . . . 362.11 Testes de Aleatoriedade (Independncia) . . . . . . . . . . . . . . . . . . . . . . . . 402.11.1O teste do Intervalo (Gap test) . . . . . . . . . . . . . . . . . . . . . . . . . . 402.11.2O teste da corrida (Run test) . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.12 Observaes finais sobre a gerao de nmeros aleatrios . . . . . . . . . . . . . . . 453 Alguns modelos elementares de Simulao 473.1 Jogo de Dados (Craps Game) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.2 Avaliao de Integrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49vi CONTEDO4 Variveis aleatrias no uniformes 534.1 O Mtodo da Transformao Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . 534.1.1 Distribuies Empricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.1.2 A Distribuio Exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.1.3 A Distribuio Geomtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.1.4 A Distribuio Triangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.1.5 A Distribuio de Weibull . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.2 Simulao Direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.2.1 A distribuio de Poisson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.2.2 A Distribuio Gamma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.2.3 A distribuio Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.3 O Mtodo da Rejeio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.3.1 A Distribuio Beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.4 Outras funes de distribuio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 Modelos para simular filas de espera e o uso do ARENA 815.1 Simulao de um pequeno posto bancrio. . . . . . . . . . . . . . . . . . . . . . . . 815.2 Um software mais verstil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.2.1 Alguns exemplos usando o programa Simulao . . . . . . . . . . . . . . . . 895.3 O software ARENA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.3.1 Obtendo os dados do Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.3.2 Dados Determinsticos ou Aleatrios . . . . . . . . . . . . . . . . . . . . . . . 945.3.3 Coletando dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.3.4 Teste de Aderncia com o Input Analyzer . . . . . . . . . . . . . . . . . . . . 955.3.5 O uso do ARENA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.3.6 Simulao de um pequeno posto bancrio . . . . . . . . . . . . . . . . . . . . 1085.3.7 Simulao de um check-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185.3.8 Simulao de um processo de produo . . . . . . . . . . . . . . . . . . . . . 1255.3.9 Enfeitando o modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.3.10Anlise dos resultados de sada . . . . . . . . . . . . . . . . . . . . . . . . . 1375.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142A Tabela do 2147B Tabela do t deStudent 149Captulo 1Introduo SimulaoUma simulao a imitao, durante determinado perodo de tempo, da operaode um sistema ou de um processo do mundo real. Feita a mo (raramente) ou emum computador (quase sempre), a simulao envolve a gerao de uma histria ar-tificial do sistema, e a partir desta histria artificial a inferncia de como o sistemareal funcionaria. O comportamento do sistema estudado pela construo de umModelo de Simulao. Este modelo normalmente toma a forma de um conjunto deconsideraes relacionadas a operao do sistema. Estas consideraes so expres-sasatravsderelaesmatemticas, lgicasesimblicasentreasentidades, ouobjetos de interesse, do sistema. Uma vez construdo e validado, um modelo podeser usado para investigar uma grande quantidade de questes do tipo e se... sobreo sistema do mundo real. Alteraes no sistema podem ser inicialmente simuladasparasepreverasconsequnciasnomundoreal. ASimulaotambmpodeserusadaparaestudarsistemasnoestgiodeprojeto, ousejaantesdosistemaserconstrudo. Assim,aSimulaopode usadatanto como uma ferramentade an-lise para prever o efeito de mudanas em sistemas j existentes, quanto como umaferramenta para prever a performance de novos sistemas sobre as mais variadascircunstncias.1.1 Vantagens e Desvantagens da SimulaoAs vantagens principais da simulao so:Novas polticas, procedimentos operacionais, regras de negcio, fluxos de in-formao, etc..., podem ser estudadas sem se alterar o mundo real.Novos equipamentos, layouts, sistemas de transporte, etc..., podem ser testa-dos sem se comprometer recursos na sua aquisio.Hipteses sobre como e porque certos fenmenos ocorrem podem ser testadosvisando verificar sua praticabilidade.O tempo pode ser comprimido ou expandido permitindo acelerar ou retardaro fenmeno sob investigao.Pode-se entender melhor sob a interao das variveis do sistema.2 Introduo SimulaoPode-se entender melhor a participao das variveis na performance do sis-tema.Um modelo de simulao pode ajudar a entender como um sistema funcionacomo um todo,em relaoacomo sepensaqueo sistemaoperaindividual-mente.Questes do tipo e se... podem ser respondidas. Isto extremamente til nafase de design de um projeto.As desvantagens a serem consideradas so:A construo de Modelos de Simulao requer treinamento especial. umaarte que aprendida com tempo e experincia. Alm disto se 2 modelos soconstrudos por 2 profissionais competentes, eles tero semelhanas, mas seraltamente improvvel que sejam iguais.OsresultadosdeumaSimulaopodemserdifceisdeinterpretar. Comoamaioriadassadasdeumasimulaosovariveisaleatrias(elasestonormalmente baseadas em entradas aleatrias), difcil determinar se umaobservao o resultado do relacionamento entre as variveis do sistema ouconsequncia da prpria aleatoriedade.A construo e anlise de Modelos de Simulao pode consumir muito tempoe, como consequncia, muito dinheiro. Economizar por sua vez pode levar amodelos incompletos.A Simulao usada em muitos casos onde uma soluo analtica possvel.A simulao no d resultados exatos.1.2 reas de aplicaoExistem inmeras reas de aplicao da simulao. A seguir esto listadas algu-mas das mais importantes:Simulao das operaes de uma companhia area para testar alteraes emseus procedimentos operacionais.Simulaodapassagemdotrfegoemumcruzamentomuitogrande, ondenovos sinais esto para ser instalados.Simulao de operaes de manuteno para determinar o tamanho timo deequipes de reparo.Simulao de uma siderrgica para avaliar alteraes nos seus procedimentosoperacionais.Simulao da economia de um setor de um pas para prever o efeito de mu-danas econmicas.1.3 Componentes de um Sistema 3Simulao de batalhas militares visando avaliar o desempenho de armas es-tratgicas.Simulao de sistemas de distribuio e controle de estoque, para melhorar ofuncionamento destes sistemas.Simulao de uma empresa como um todo para avaliar o impacto de grandesmudanas ou como treinamento para seus executivos. (Business Games)Simulao de sistemas de comunicaes para determinar o que necessriopara fornecer um determinado nvel de servio.Simulao de uma barragem em um determinado rio para avaliar os proble-mas advindos com a sua construo.Simulao de uma linha de produo em determinada indstria, para avaliarefeitos de mudanas previstas no processo produtivo.1.3 Componentes de um SistemaUmSistemadefinidocomoumgrupodeobjetosqueestojuntosemalgumainteraoouinterdependncia, objetivandoarealizaodealgumobjetivo. Umexemplo poderia ser um sistema de produo de automveis. As mquinas, compo-nentes, peas e trabalhadoresoperam em conjunto,em uma linha de montagem,visando a produo de veculos de qualidade.De forma a entender e analisar um sistema, alguns termos precisam ser definidos:Uma Entidade um objeto de interesse no sistema.Um Atributo uma propriedade de uma entidade.Uma Atividade representa um perodo de tempo de certo tamanho.OEstado do sistema definido como sendo como a coleo de variveis necessriaspara descrever o sistema em um dado instante.Um Evento definido como a ocorrncia instantnea que pode mudar o estado dosistema.O termo Endgeno usado para descrever atividades e eventos ocorrendo dentrodosistemae Exgeno usadoparadescreveratividadeseeventos queocorremfora do sistema.A tabela a seguir mostra alguns exemplos para os termos denidos acima:Exemplo Exemplo Exemplo Exemplo ExemploSistema Entidade Atributo Atividade Evento Variveis EstadoBanco Clientes Saldo na C/C Depositar Chegada Agncia Noclientes EsperandoProduo Mquinas Taxa Quebra Soldagem Quebra Mquinas ParadasComunicao Mensagens Tamanho Transmisso Chegada Mensagens EsperandoUERJ Aluno CR Matrcula Cadeira Cancelada NoAlunos Matriculados4 Introduo Simulao1.4 Tipos de ModelosModelos de Simulao podem ser Estticos ou Dinmicos.Um modelo de simulao esttica, algumas vezes chamado de Simulao de MonteCarlo, um modelo onde a passagem do tempo irrelevante.ModelosdeSimulaoDinmicosrepresentamsistemascujosresultadosvariamcom a passagem do tempo.Um modelo de simulao pode ser ainda Determinstico ou Estocstico.Modelos de simulao que no contmnenhuma varivel aleatria so classificadoscomodeterminsticos, ouseja, paraumconjuntoconhecidodedadosdeentradateremos um nico conjunto de resultados de sada.Um modelo estocstico de simulaotem uma ou mais variveisaleatriascomoentrada. Estas entradas aleatrias levam a sadas aleatrias que podem somenteser consideradas como estimativas das caractersticas verdadeiras de um modelo.Assim,porexemplo,asimulao(estocstica)dofuncionamento de umaagnciabancria envolve variveis aleatrias como o intervalo entre chegadas e a duraodos servios prestados. Logo, medidas como o nmero mdio de clientes esperandoeotempomdiodeesperadeumcliente, devemsertratadascomoestimativasestatsticas das medidas reais do sistema.1.5 Modelos Discretos e ContnuosOs modelos de simulao dinmicos podem ser Discretos ou Contnuos. Em umasimulao discreta, considera-se somente os eventos onde h alterao do sistema,ou seja,o tempo decorridoentre alteraesdoestado do sistemano relevantepara a obteno dos resultados da simulao, embora o tempo nunca pare. Al-guns autores a chamam de Simulao de Eventos Discretos, enfatizando assimque a discretizao se refere apenas ocorrncia dos eventos ao longo do tempo.Um exemplo seria a simulao de uma agncia bancria onde entre a chegada (oua sada) de clientes o estado do sistema no se altera.Numa Simulao Contnua o sistema se altera a cada frao de tempo. Exemplosclssicos so a simulao de um avio voando e a passagem de gua por uma bar-ragem.1.6 Etapas de um projeto de simulaoAs etapas bsicas de um projeto de simulao so:1. Formulao do problemaCadaprojetodevecomearcomadefiniodoproblemaaserresolvido. importante que a definio esteja clara para todos que participam do projeto.2. Determinao dos objetivos e planejamento global do projetoOobjetivoindicaasquestesquedevemserrespondidaspelasimulao.Nestepontodeveserconsideradoseasimulaoametodologiaapropri-1.6 Etapas de um projeto de simulao 5adaparaoproblema. Nestafasedeve-sefazertambmumaestimativadotamanho da equipe envolvida, custo, tempo, etc...3. Construo do ModeloA construo de um modelo de um sistema provavelmente mais arte que ci-ncia. Embora no seja possvel fornecer um conjunto de instrues que pos-sibilitem construir cada vez modelos apropriados,existem algumas linhasmestres que podem ser seguidas. A arte de modelar melhorada se consegui-mosextrairaspartesessenciaisdeumproblema, selecionaremodificarasconsideraes bsicas que caracterizam o sistema e ento enriquecer e elabo-rar o modelo at a aproximao de resultados teis.Assim melhor comearcomummodelosimpleseiraumentandosuacomplexidade. Entretantoacomplexidade do modelo no necessita exceder o necessrio para acompanharos propsitos para qual o modelo foi construdo. No necessrio se ter umarelao de um para um entre o modelo e o sistema real. Somente a essncia dosistema real necessria. indispensvel envolver o usurio na construodo modelo.Isto faz com que a qualidade do modelo resultante fique melhor eaumenta a confiana do usurio na sua futura aplicao. Somente exercciose a prtica ajudam na construo de modelos melhores.4. Coleta de dadosH uma interao constante entre a construo de um modelo e a coleta dosdados de entrada necessrios. Geralmente quanto mais complexo o modelo,mais dadosso necessrios. Como a coleta de dadostoma um tempo muitogrande do tempo total de um projeto de simulao, necessrio comear estacoleta o mais cedo possvel.5. CodificaoComo a maioria dos sistemas do mundo real resulta em modelos que reque-rem um grande nmero de informaes e de clculos, o modelo deve ser pro-gramado em um computador digital. O modelador deve decidir se programaem uma linguagem de programao comum como JAVA, C, PASCAL, BASICetc..., ouseusaumpacotecomooARENA, SIMUL, PROMODEL, CRYS-TAL BALL, etc... Como codicar um modelo leva, normalmente, muito tempomesmo se a equipe possui bons programadores, a tendncia atual no mercado se trabalhar com pacotes.Temos que mencionar tambm o uso de planilhas (EXCEL) para se construirmodelos de simulao.6. TestesAps a codificao dos programas necessrio test-los para verificar se elesno tem algum erro de programao. Deve-se preparar um conjunto de dadoscom a finalidade exclusiva de se testar os programas.6 Introduo Simulao7. ValidaoNestafaseseverificaseomodeloumarepresentaoprecisadosistemaque se quer modelar. nesta fase que se faz a chamada calibrao do modelo,ou seja, so feitos ajustes at que os resultados nos dem garantias de que omodelo uma boa representao do problema sendo modelado.8. ProduoNesta etapa o modelo colocado em produo e os dados obtidos so analisa-dos. A produo pode envolver a execuo, vrias vezes, do modelo, variando-se os dados e os parmetros de entrada.9. Avaliao global dos resultadosNesta fase avalia-sese os resultados obtidos esto condizentes com os espe-rados.Caso sejam encontradas discrepncias podemos ter que voltar etapade construo do modelo.10. Documentao e implementao fundamental,como em qualquerprojeto,queasimulaosejadocumentadadeformaclaraeconcisa. Osresultadosobtidos tambm devem ser documentados e arquivados. A implantao, se ousurio participou do processo, tende a ser bem mais simples do que nos casosem que o usurio no teve uma participao ativa.1.7 Exemplos de modelos de SimulaoPara entender como funciona uma simulao, vamos ver alguns exemplos simples:1.7.1 Quebra de rolamentosUma grande mquina industrial tem 3 rolamentos diferentes que quebram de tem-pos em tempos. A probabilidadeda vidatil (em horas de operao) de um rola-mento est dada na tabela abaixo:Vida do Rolamento (horas) Probabilidade1.000 0.101.100 0.131.200 0.251.300 0.131.400 0.091.500 0.121.600 0.021.700 0.061.800 0.051.900 0.05Quandoumrolamentoquebra, amquinaparaeummecnicochamadoparainstalar um novo rolamento no lugar do que quebrou.1.7 Exemplos de modelos de Simulao 7Otempoqueomecnicodemoraparachegaraorolamentoquebradotambmuma varivel aleatria, com a distribuio dada na tabela abaixo:Tempo de espera (minutos) Probabilidade5 0.6010 0.3015 0.10Cada minuto que a mquina fica parada custa $5 e o custo do mecnico de $1/mi-nuto trabalhado substituindo rolamento. O mecnico demora 20 minutos para tro-car1rolamento, 30minutosparatrocar2e40minutosparatrocaros3. Cadarolamento novo custa $20. Algum sugeriu que ao quebrar um dos rolamentos, sefizesse logo a troca dos 3. Deseja-se avaliar a situao do ponto de vista econmico.SoluoTemos que comparar o custo da alternativa atual e da alternativa proposta. Pre-cisamos estabelecer um horizonte de tempo para fazer esta comparao. Conside-rando que a menor vida til de um rolamento 1.000 horas (mais de 1 ms), vamosestabelecer um horizonte de 20.000 horas (um pouco mais de 2 anos) para fazer acomparao.Como a vida til dos rolamentos e a espera pelo mecnico so variveis aleatriasqueseguemasdistribuiesvistasanteriormente, temosquerelacionarquelasdistribuies com uma tabela de nmeros aleatrios.Assim sendo, vamos imaginar que temos um gerador de nmeros aleatrios capazde gerar qualquer inteiro entre 0 e 99, ou seja 100 nmeros. Vamos atribuir a cadadurao de vida til uma faixa destes nmeros que me garanta que a distribuioprobabilstica seja mantida.Como a 1avida til (1.000 horas) tem 10% de probabilidade de ocorrer, vamos atri-buiraestaduraoafaixade0a9inclusive, ouseja10nmeros (10%dos100nmeros). Para a 2adurao provvel (1.100 horas), com 13% de probabilidade deocorrncia, vamosatribuirafaixade10a22inclusive, ouseja13nmeros. Po-demos continuar para as demais duraes provveis dos rolamentos como pode servisto na tabela a seguir, ressaltando que a probabilidade acumulada d o limite dasfaixas escolhidas.Vida do Probabilidade NoAleatrioRolamento (horas) Probabilidade Acumulada Atribudo1.000 0.10 0.10 0 91.100 0.13 0.23 10 221.200 0.25 0.48 23 471.300 0.13 0.61 48 601.400 0.09 0.70 61 691.500 0.12 0.82 70 811.600 0.02 0.84 82 831.700 0.06 0.90 84 891.800 0.05 0.95 90 941.900 0.05 1.00 95 998 Introduo SimulaoTabela semelhante pode ser construda para a espera pela chegada do mecnico.Tempo de Probabilidade NoAleatrioEspera (minutos) Probabilidade Acumulada Atribudo5 0.60 0.60 00 5910 0.30 0.90 60 8915 0.10 1.00 90 99Com os dadosdastabelasacima,podemos executarasimulaoque,neste caso,foi realizada numa planilha EXCEL, apresentando os seguintes resultados para orolamento 1:R O L A M E N T O1Vida Vida Acumulada EsperaSeqencia NoAleatrio (Horas) (Horas) NoAleatrio (Min)1 62 1.400 1.400 61 102 85 1.700 3.100 10 53 89 1.700 4.800 46 54 24 1.200 6.000 28 55 99 1.900 7.900 55 56 27 1.200 9.100 64 107 89 1.700 10.800 63 108 12 1.100 11.900 75 109 2 1.000 12.900 54 510 34 1.200 14.100 67 1011 7 1.000 15.100 90 1512 75 1.500 16.600 14 513 22 1.100 17.700 80 1014 97 1.900 19.600 84 1015 37 1.200 20.800 9 5=120Podemos observar na planilha que para cada seqencia ou seja, rolamento novo, gerado um nmero aleatrio que indica qual a vida til daquela rolamento.Tendoquebrado,aps esta vidatil,o mecnico chamadoe um 2onmero aleatriogerado para definir o tempo de espera at a troca do rolamento ser iniciada.Quando a vida acumulada ultrapassa 20.000 horas, ou seja a durao da simulao,paramos a execuo do processo.Processos semelhantes foram executados para os outros 2 rolamentos, como visto aseguir.1.7 Exemplos de modelos de Simulao 9R O L A M E N T O2Vida Vida Acumulada EsperaSeqencia NoAleatrio (Horas) (Horas) NoAleatrio (Min)1 89 1.700 1.700 58 52 47 1.200 2.900 88 103 60 1.300 4.200 20 54 3 1.000 5.200 98 155 40 1.200 6.400 26 56 64 1.400 7.800 97 157 9 1.000 8.800 41 58 30 1.200 10.000 79 109 32 1.200 11.200 0 510 8 1.000 12.200 3 511 94 1.800 14.000 58 512 66 1.400 15.400 84 1013 53 1.300 16.700 61 1014 17 1.100 17.800 43 515 72 1.500 19.300 15 516 0 1.000 20.300 97 15= 130R O L A M E N T O3Vida Vida Acumulada EsperaSeqencia NoAleatrio (Horas) (Horas) NoAleatrio (Min)1 49 1.300 1.300 44 52 26 1.200 2.500 45 53 2 1.000 3.500 72 104 83 1.600 5.100 87 105 21 1.100 6.200 19 56 20 1.100 7.300 81 107 60 1.300 8.600 56 58 34 1.200 9.800 74 109 63 1.400 11.200 93 1510 69 1.400 12.600 36 511 44 1.200 13.800 71 1012 76 1.500 15.300 97 1513 55 1.300 16.600 59 514 85 1.700 18.300 81 1015 21 1.100 19.400 21 516 5 1.000 20.400 1 5=13010 Introduo SimulaoCom os dados obtidos na simulao, podemos calcular o custo da situao atual:Custo dos rolamentos = (15 + 16 + 16) $20 = $940Custodamquinaparadaesperandopelomecnico=(120+130+130) $5=$1.900Custo da mquina parada trocando rolamento = (15 + 16 + 16) 20 $5 = $4.700Custo do mecnico = (15 + 16 + 16) 20 $1 = $940Custo Total = 940 + 1.900 + 4.700 + 940 = $8.480A simulao da situao proposta apresentou os seguintes resultados:ROL. 1 ROL. 2 ROL. 3Vida Vida Vida 1aVida ESPERASeq. NA hr NA (hr) NA (hr) Quebra Acum. NA (Min)1 96 1.900 2 1.000 34 1.200 1.000 1.000 21 52 70 1.500 7 1.000 47 1.200 1.000 2.000 36 53 96 1.900 46 1.200 49 1.300 1.200 3.200 21 54 48 1.300 17 1.100 42 1.200 1.100 4.300 7 55 32 1.200 93 1.800 20 1.100 1.100 5.400 58 56 36 1.200 94 1.800 98 1.900 1.200 6.600 83 107 41 1.200 17 1.100 53 1.300 1.100 7.700 14 58 71 1.500 2 1.000 20 1.100 1.000 8.700 75 109 4 1.000 22 1.100 86 1.700 1.000 9.700 5 510 69 1.400 21 1.100 0 1.000 1.000 10.700 65 1011 13 1.100 89 1.700 58 1.300 1.100 11.800 15 512 36 1.200 12 1.100 66 1.400 1.100 12.900 12 513 75 1.500 57 1.300 29 1.200 1.200 14.100 32 514 76 1.500 78 1.500 95 1.900 1.500 15.600 2 515 71 1.500 5 1.000 86 1.700 1.000 16.600 31 516 98 1.900 43 1.200 22 1.100 1.100 17.700 51 517 98 1.900 47 1.200 60 1.300 1.200 18.900 20 518 68 1.400 61 1.400 57 1.300 1.300 20.200 35 5=105NA = NoaleatrioFeita a simulao da situao proposta, podemos calcular os custos:Custo dos rolamentos = (18 3) $ 20 = $1.080Custo da mquina parada esperando pelo mecnico = 105 $5 = $525Custo da mquina parada trocando rolamento = 18 40 $5 = $3.600Custo do mecnico = 18 40 $1 = $720Custo Total =1.080+ 525 + 3.600 + 720 = $5.925Assim a simulao nos mostrou que a situao proposta bem melhor em termoseconmicos.1.7 Exemplos de modelos de Simulao 111.7.2 Fila com uma estao de servioUma loja tem somente 1 atendente. Os fregueses chegam aleatoriamente com in-tervalo, entreeles, variandode1a8minutos. Cadavalorpossveldointervaloentre chegadastem amesma probabilidadedeocorrncia, como mostradonata-bela a seguir:Tempo entre chegadas (minutos) Probabilidade1 0.1252 0.1253 0.1254 0.1255 0.1256 0.1257 0.1258 0.125A durao do atendimento aos clientes varia de 1 a 6 minutos com probabilidadesmostradas na tabela a seguir:Durac, o do servic, o (minutos) Probabilidade1 0.102 0.203 0.304 0.255 0.106 0.05Como no exemplo anterior, temos que construir tabelas relacionando as probabili-dades com nmeros aleatrios gerados:Tempo entre Probabilidade NoAleatriochegadas (min) Probabilidade Acumulada Atribudo1 0.125 0.125 000 1242 0.125 0.250 125 2493 0.125 0.375 250 3744 0.125 0.500 375 4995 0.125 0.625 500 6246 0.125 0.750 625 7497 0.125 0.875 750 8748 0.125 1.000 875 99912 Introduo SimulaoDurac, o do Probabilidade NoAleatrioservic, o (min) Probabilidade Acumulada Atribudo1 0.10 0.10 0 92 0.20 0.30 10 293 0.30 0.60 30 594 0.25 0.85 60 845 0.10 0.95 85 946 0.05 1.00 95 99A simulao para os primeiros 20 clientes apresentou os seguintes resultados:Intervalo entre Instante Durac, o Incio Espera Fim do Tempo total Tempo ociosoNA chegadas(min) chegada NA servic, o servic, o fila servic, o na loja(min) atendente(min)1 0 84 4 0 0 4 4 02 913 8 8 9 1 8 0 9 1 43 727 6 14 74 4 14 0 18 4 54 15 1 15 53 3 18 3 21 6 05 948 8 23 17 2 23 0 25 2 26 309 3 26 79 4 26 0 30 4 17 922 8 34 91 5 34 0 39 5 48 753 7 41 67 4 41 0 45 4 29 235 2 43 89 5 45 2 50 7 010 302 3 46 38 3 50 4 53 7 011 109 1 47 32 3 53 6 56 9 012 93 1 48 94 5 56 8 61 13 013 607 5 53 79 4 61 8 65 12 014 738 6 59 5 1 65 6 66 7 015 359 3 62 79 5 66 4 71 9 016 888 8 70 84 4 71 1 75 5 017 108 1 71 52 3 75 4 78 7 018 212 2 73 55 3 78 5 81 8 019 493 4 77 30 2 81 4 83 6 020 535 5 82 50 3 83 1 86 4 0= 68 56 124 18Podemos, a partir da simulao, inferir alguns resultados:O tempo de espera mdio de um cliente foi de 2,8 minutos. Este valor encontradode :Tempo mdio de espera (min) =Tempo total dos clientes na fila (min)Nmero total de clientes=5620=2, 8 minutosA probabilidade de que um cliente tenha que esperar na fila 65%. Isto vem de:Probabilidade(espera) =Nmero de clientes que esperaramNmero total de clientes=1320=0, 651.7 Exemplos de modelos de Simulao 13A proporo de tempo que o atendente fica ocioso 21%. Vem de:Prob. do atendente estar ocioso =Tempo total de ociosidade (min)Durao da Simulao=1886=0.21O atendente est ocupado 100 21=79% do tempo.O tempo de servio mdio de 3.4 minutos. Podemos obt-lo de:Tempo de servio mdio (min) =Durao total do servioNmero total de clientes=6820=3.4 minutosEste resultado pode ser comparado com o tempo de servio esperado achando-se amdia da distribuio do tempo de servio usando a equao:E(s)=s=0sp(s)Temos ento:1(0.10) + 2(0.20) + 3(0.30) + 4(0.25) + 5(0.10) + 6(0.05)=3.2minutosOresultadodasimulaoumpoucomaiorporqueotamanhodasimulaofoipequeno. Quanto maior a durao da simulao mais o resultado se aproximar de3.2 minutos.Algum que fosse tomar decises estaria interessado nos resultados obtidos acima.Obviamente seria necessrio uma simulao mais demorada para se conseguir re-sultados mais precisos.Entretanto, algumas inferncias podem ser obtidas: A maioria dos clientes tem queesperar mas a espera no excessiva. O atendente no fica muito tempo ocioso.O objetivo a ser alcanado vai depender do balano entre o custo de espera e o custode se colocar mais atendentes.1.7.3 O que no est explcitoNos exemplos que vimos at aqui, alguns fatos importantes na construo de ummodelo de simulao no esto devidamente explicitados.Vimos, por exemplo, que a vida til de um rolamento segue uma determinada dis-tribuio. bvio que esta informao no caiu do cu. Todo um trabalho preli-minar incluindo denio do tamanho da amostra, amostragem, denio da dis-tribuio (aderncia), etc, etc..., foi realizado para se chegar quela informao.Tambm cou claro que a execuo da simulao em si, por ser um processo aleat-rio, apresenta, normalmente, um resultado diferente a cada execuo.Para que osdados obtidos pela simulao sejam estatsticamente conveis, tambm necess-rio todo um trabalho para denir o nmero de execues (replicaes) necessriasa qualidade dos dados obtidos bem como a denio de intervalos de conana dasvariveis bsicas do modelo.14 Introduo SimulaoCaptulo 2A gerao de Nmeros AleatriosPudemos reparar nos exemplos acima que a chave para simular eventos aleatriosdiscretos a gerao de nmeros aleatrios. Como se usa o computador para fazera simulao, precisamos de mtodos rpidos e eficientes para ger-los.Os nmeros aleatrios,gerados em computador, no so realmente aleatriospois veremos mais adiante que eles so gerados em seqncias que podem serreproduzidas, o que viola o princpio bsico da aleatoriedade.Comocontornarestefato? Seosnmerospassamporumasriedetestesestatsticosdealeatoriedadeento, paraefeitosprticos, podemosconsider-los como se fossem realmente aleatrios.Por este fato eles so conhecidos como nmeros Pseudo-aleatrios. comum seusar, em simulao, a expresso nmeros aleatrios mas considere isto, sempre,como um sinnimo de nmeros pseudo-aleatrios.2.1 Propriedades desejveis de um gerador de nmeros ale-atriosUm gerador de nmeros aleatrios deveria possuir todas as caractersticas abaixo:1. Aleatoriedade essencial que a seqncia gerada exibaas propriedades dos nmeros ver-dadeiramente aleatrios. Este comportamento aleatrio deve ser confirmadopor testes estatsticos.2. Grande PerodoTodososgeradoresdenmerosaleatriossobaseadosnousodefrmulasdeterminsticas precisas. Estas frmulas fazem com que, a partir de um va-lorinicialchamadosemente, sejageradaumasriedenmeros aleatrios(pseudo-aleatrios). Em um determinado ponto da srie, voltamos a sementee como a srie gerada por uma frmula, a srie, obviamente, se repete.A quantidade de nmeros gerados at a seqencia comear a se repetir chamada de Perodo.Sempredesejamosomaiorperodopossvel. Parapropsitosprticosope-rododeveser, nomnimo, grandeosuficienteparanoserepetirduranteuma simulao.16 A gerao de Nmeros Aleatrios3. Eficincia ComputacionalDesde queum estudo desimulaonecessitade queum grandenmero devariveis aleatrias sejam geradas, o gerador de nmeros aleatrios deve ge-rarestes nmeros gastandoo mnimo de tempo de computador. Alm distoo gerador no deve usar muita memria. Com a evoluo dos computadoresesta ltima propriedade est perdendo um pouco de sua importncia.2.2 Mtodos para a gerao de nmeros aleatrios2.2.1 Mtodo dos quadrados mdiosUm dos primeiros mtodos de gerao de nmeros aleatrios foi o chamado Mtododos Quadrados Mdios. Este mtodo foi desenvolvido por John Von Neumann nadcada de 40. A tcnica comea com um nmero inicial chamado de semente. O n-mero ento elevado ao quadrado e os dgitos do meio do nmero gerado formam oprximo nmero da seqncia.Este segundo nmero ento elevado ao quadradoe os nmeros do meio do nmero gerado so o prximo nmero da seqncia e as-sim por diante...Exemplo: Gerarumaseqnciadenmeros aleatriosde4dgitos. Seja3187asemente normalmente rotulada como x0.x0=3187(3187)2=10 | 1569 | 69 x1=1569(1569)2=02 | 4617 | 61 x2=4617(4617)2=21 | 3166 | 89 x3=3166(3166)2=10 | 0235 | 56 x4=235(235)2=00 | 0552 | 25 x5=552(552)2=00 | 3047 | 04 x6=3047e assim por diante...Este mtodo apresenta 2 problemas srios: normalmente os perodos so curtos ese o nogerado 0, o mtodo s apresenta zero!Exemplo: Gerar, pelo mtodo dos quadrados mdios, nmeros pseudo aleatrios de2 dgitos tendo 44 como semente.x0=44(44)2=1 | 93 | 6 x1=93(93)2=8 | 64 | 9 x2=64(64)2=4 | 09 | 6 x3=9(9)2=0 | 08 | 1 x4=8(8)2=0 | 06 | 4 x5=6(6)2=0 | 03 | 6 x6=3(3)2=0 | 00 | 9 x7=0(0)2=0 | 00 | 0 x8=02.3 Nmeros Aleatrios uniformemente distribudos em [0,1) 172.2.2 Mtodos CongruentesAmaioria dos mtodos usados hoje emdia so variaes do chamado Mtodo Congru-enteLinear, cujospontosbsicosforampropostosporLehmerem1951. Nestemtodo os nmeros aleatrios, gerados sucessivamente, so obtidos da relao re-cursiva:xn+1=(axn +c) modmA funo z modt d o resto da diviso inteira de z por t (ex.23 mod5=3).A constante a chamadade multiplicador,a constante c o incremento e m omdulo. Como antes, x0 a semente.Quando c=0, o mtodo chamado de Congruncia Multiplicativa.O Mtodo da Congruncia Linear(c =0), por gerar nmeros aleatrios que ten-dem a ter mais dificuldades em passar nos testes estatsticos de aleatoriedade dosque os gerados pelo mtodo da Congruncia Multiplicativa (c=0), no , pratica-mente, mais usado hoje em dia.Exemplo: Gerar nmeros aleatrios,usando o mtodo congruente multiplicativo,tendo os seguintes valores:x0=3 , a=2em=10.x0=3x1=(2 3) mod10=6x2=(2 6) mod10=2x3=(2 2) mod10=4x4=(2 4) mod10=8x5=(2 8) mod10=6Como podemos observar o perodo desta gerao foi muito curto (=4).Ficouclarotambm, nestepequenoexemplo, queonmeroaleatriogeradooresto inteiro da diviso por m, ou seja um nmero inteiro entre 0 e (m1).A frmula congruente necessriapara se gerar nmeros aleatrios,mas nosuciente. A seleo dos valores de a, c, e mafeta drasticamente as propriedadesestatsticas da gerao bem como o tamanho do perodo.2.3 Nmeros Aleatrios uniformemente distribudos em[0,1)Como jexplicadoanteriormente,afrmula congruente geranmeros aleatriosinteiros no intervalo [0, m1).Uma conveno estabelece que um gerador de nmeros aleatrios bsico devegerarnmeros nointervalo[0,1). Paraconseguiristo,todo geradorde nmerosaleatrios divide o nmero gerado por m. Desta forma o que se obtm uma distri-buio uniforme distribuda em [0,1).18 A gerao de Nmeros AleatriosAssim, por exemplo, para a=13, m=67ex0=1, teramos:x0=1 67=0.0149253x1=(13 1) mod 67 =13 67=0.1940298x2=(13 13) mod 67=35 67=0.522388x3=(13 35) mod 67=53 67=0.7910447...Alguns geradores dividem por m1 o que d uma distribuio [0, 1]. Na verdadecomo m sempre um nmero muito grande, dividir por mou (m1) irrelevante.2.4 O gerador RANDU e a formao de treliasO mtodo da congruncia multiplicativa pode facilmente ser implementado em lin-guagens de programao como Pascal, Java, Basic, etc..., por exemplo.Um gerador,chamado de RANDU, foi desenvolvido pela IBM e durante quase 20anos foi usado por praticamente todos os modelos de simulao nas dcadas de 60e 70.A RANDU utilizava os valores a =65.539 e m=231=2.147.483.648, ou sejaxn+1=(65539 xn) mod2147483648Assim considerando uma semente igual a 313, teramos:X0=313X1=(65539 313) mod2147483648=20513707 2148483648=0,0095524X2=(65539 20513707) mod2147483648 =123079425 2148483648 =0,0573133X3=(65539 123079425) mod2147483648=553853187 2148483648=0,257907...A funo, codificada em Pascal1 a seguinte: (a rotina original era em Fortran)semente : longint ;FunctionRANDU: Double;Consta = 65539;m= 2147483647;q = 32766;r = 32774;Varl o , hi , t est : longint ;Beginhi : = semente div q ;l o : = sementemodq ;t est : = a l or hi ;1Todos os programas listados a seguir foram desenvolvidos com a finalidade exclusiva de ilustrara matria apresentada. No houve qualquer preocupao em otimiz-los ou usar as tcnicas maisrefinadas de programao.Outro fator a ser considerado que certos comandos usados nos programas podem no funcionar,dependendo do compilador que estiver sendo usado.2.4 O gerador RANDU e a formao de trelias 19If t est >= 0ThenBeginsemente : = t est ;RANDU: = semente / mEndElseBeginsemente : = t est +m;RANDU: = semente / m;End;End;A seguir um programa Pascal que utiliza o gerador acima. O programa pede a se-mente, que deve ser um inteiro entre 1 e 32767, e imprime os 5 primeiros nmerosaleatrios gerados.{USODARANDU}VarI : Integer ;ALEAT: Double;{ $I RANDU. PAS}BeginWriteln( Qual a semente ? (1 - 32767) ) ;Readln( semente ) ;For I :=1 to 5 doBeginALEAT: =RANDU;Writeln(ALEAT: 10: 8 ) ;End;End.Paraumasementeigual a313, osnmerosimpressosporesteprogramaso:0.00955244, 0.05731332, 0.25790799, 0.03162802 e 0.86859621.Na dcadade 70diversos trabalhosprovaramque a rotina RANDU apresentavaresultados estatisticamente ruins.Um dos problemas era a formao de trelias (lattice em ingls) quando se traavagrficos com sucessivos nmeros aleatrios gerados pela RANDU.Vamos imaginar umcubo comlados igual a 1, ou seja variando de 0 a 1. Vamos mar-car pontos neste cubo com coordenadas (x1, x2, x3),(x2, x3, x4) , (x3, x4, x5), etc...,onde xi um nmero gerado pela RANDU.Vamos marcar 5.000 pontos. O que deveramos esperar ?Que o cubo fosse preenchido uniformemente pelos pontos plotados. O que ocorre noentanto que todos os pontos aparecem em 15 planos formando o que parece seruma trelia (da o nome). Nenhum ponto cai entre os planos, como podemos ver nogrfico a seguir:20 A gerao de Nmeros AleatriosEsteaspecto, identificadoclaramentenaRANDU, fezcomqueestarotinafosseabandonada como geradora de nmeros aleatrios.A partir da apareceram diversas alternativas sendo que veremos a seguir.2.5 O gerador RAND1Foi apresentadopelaIBMparasubstituiraRANDUeestbaseadonarelaoxi+1=(16807 xi) mod2147483647, ou seja, a=16807 e m=2311.O nome RAND1,assim como outros nomes que usaremos mais adiante,foramdadosnosentidodefacilitaroentendimentodamatria. Devecarclaro, noentanto, que exceto a RANDU, nenhum outro gerador tem, na literatura tcnica,nome prprio.A rotina a seguir, a sua implementao em Pascal.2.5 O gerador RAND1 21semente : longint ;FunctionRAND1: Double;Consta = 16807;m= 2147483647;q = 127773;r = 2836;Varl o , hi , t est : longint ;Beginhi : = semente div q ;l o : = sementemodq ;t est : = a l or hi ;If t est > 0ThenBeginsemente : = t est ;RAND1 : = semente / m;EndElseBeginsemente : = t est +m;RAND1 : = semente / m;End;End;O programa a seguir imprime os 5 primeiros nmeros aleatrios gerados a partirde uma semente, que deve ser um inteiro entre 1 e 32767.{USODARAND1}VarI : Integer ;ALEAT: Double;{ $I RAND1. PAS}BeginWriteln( Qual a semente ? (1 - 32767) ) ;Readln( semente ) ;For I :=1 to 5 doBeginALEAT: = RAND1;Writeln(ALEAT: 10: 8 ) ;End;End.Parauma semente igual a 313 os 5 primeiros nmeros gerados so: 0.00244965,0.17132769, 0.50446585, 0.55749129 e 0.75614531.22 A gerao de Nmeros Aleatrios2.6 O gerador RAND2Este gerador est baseado no trabalho de Marse e Robert [Marse, K., and S. D. Ro-berts: Implementing a Portable Fortran Uniform (0,1) Generator, Simulation, 41:135-139 (1983)] e tem sua base na relao:xi+1=(630360016 xi) mod2147483647,ou seja a=630360016 e m=2311.A seguir apresentamos a sua implementao em Pascal:semente : double;FunctionRAND2: Double;ConstMULT1= 24112;MULT2= 26143;B2E15 = 32768;B2E16 = 65536;MODLUS= 2147483647;VarHI15, HI31,LOW15,LOWPRD, OVFLOW, g : Longint ;Z, Z1: Double;Beging : = trunc ( semente ) ;HI15 : = g DivB2E16;LOWPRD: = ( gHI15B2E16) MULT1;LOW15 : =LOWPRDDivB2E16;HI31 : = HI15MULT1+LOW15;OVFLOW: = HI31 DivB2E15;g : = ( ( (LOWPRDLOW15B2E16)MODLUS) +( HI31OVFLOWB2E15) B2E16)+OVFLOW;If g < 0Theng : = g +MODLUS;HI15 : = g DIVB2E16;LOWPRD: = ( gHI15B2E16) MULT2;LOW15 : =LOWPRDDivB2E16;HI31 : = HI15MULT2+LOW15;OVFLOW: = HI31 DivB2E15;g : = ( ( (LOWPRDLOW15B2E16)MODLUS) +( HI31OVFLOWB2E15) B2E16)+OVFLOW;If g < 0Theng : = g +MODLUS;semente : = g ;RAND2 : = ( 2( semente/ 256) +1) / 16777216. 0;End;O programa a seguir imprime os 5 primeiros nmeros gerados pela RAND2.A se-mente que pedida no incio do programa, deve ser uminteiro entre 1 e 2147483646.2.7 Mtodos com perodos maiores 23{USODARAND2}VarI : Integer ;ALEAT: Double;{ $I RAND2. PAS}BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;For I :=1 to 5 doBeginALEAT: = RAND2;Writeln(ALEAT: 10: 8 ) ;End;End.Para uma semente igual a 20006270, os 5 primeiros nmeros gerados so 0.59288078,0.43645671, 0.55657768, 0.61790948 e 0.76899712.2.7 Mtodos com perodos maioresOs mtodos vistos anteriormente ainda so muito usados, inclusive a RANDU!. Noentanto, para simulaes mais complexas, seus perodos so relativamente curtos(2 bilhes de nmeros) o que tem levado ao desenvolvimento de novos mtodos degeraode nmeros aleatrios,todos com a caractersticacomum de ter grandesperodos (>1030).2.7.1 O gerador RAND3Este Gerador est baseado no trabalho Toward a Universal Random Number Ge-neratorGeorgeMarsaglia, FloridaStateUniversityReport: FSU-SCRI-87-50(1987).Ele se enquadra emuma classe de geradores chamados de Geradores de Fibonaccie esto baseados na seguinte recorrncia:xi=(xip +xik) modm onde p>k>0Obviamente que o mtodo precisa gerar p nmeros para se obter o primeiro nmeroaproveitvel.No caso do programa abaixo temos p=97 e k=33 e o mtodo pede2 sementes. A 1ano intervalo [1, 31328] e a 2ano intervalo [1, 30081].Para cada par de sementes gerada uma srie de nmeros aleatrios com perodode 1030.Assim, variando-se as sementes temos 900.000.000de sries, cada uma com1030nmeros aleatrios.A rotina em Pascal (RAND3) a seguinte:24 A gerao de Nmeros Aleatrios{RAND3}Varsemente1 , semente2 : longint ;I97 , J33 , Param: Longint ;CR3, CDR3,CMR3 : Double;UVETOR: Array[ 1. . 98] of Double;FunctionRAND3: Double;VARS, T, UNI: Double;J , K, L, II , JJ ,M: Longint ;BeginIf semente1 0 ThenBeginI97 : = 97;J33 : = 33;UNI : = 0;semente1 : = semente1Mod31329;semente2 : = semente2Mod30082;Param: = ( ( semente1 Div 177) Mod177) + 2;J : = ( semente1Mod177) + 2;K: = ( ( semente2 Div 169) Mod178) + 1;L : = semente2Mod169;For I I : = 1 to 97 doBeginS : = 0. 0;T : = 0. 5;For JJ : = 1 to 24 doBeginM: = ( ( ParamJ) Mod179)K;M: =M Mod179;PARAM: = J ;J : = K;K: =M;L : = ( 53L+1) Mod169;If ( ( LM) Mod64) >= 32 ThenS : = S+T;T : = T 0. 5;End;UVETOR[ I I ] : = S;End;CR3 : = 362436.0 / 16777216.0;CDR3 : = 7654321.0 / 16777216.0;CMR3 : = 16777213.0 / 16777216.0;RAND3 : = UNI;Exit ;End;UNI : =UVETOR[ I97 ] UVETOR[ J33 ] ;If UNI < 0. 0 ThenUNI : = UNI + 1. 0;UVETOR[ I97 ] : = UNI;I97 : = I97 1;If I97 = 0 ThenI97 : = 97;J33 : = J331;If J33 = 0 ThenJ33 : = 97;CR3 : = CR3 CDR3;2.7 Mtodos com perodos maiores 25If CR3< 0. 0 ThenCR3 : = CR3+CMR3;UNI : = UNI CR3;If UNI < 0 ThenUNI : = UNI + 1. 0;RAND3 : = UNI;End;A seguir temos um programa que usa a RAND3 e imprime os 5 primeiros nmerosgerados a partir de um par de sementes.{USODARAND3}VarI : Integer ;ALEAT : Double;{ $I RAND3. PAS}BeginWriteln( Qual a 1a. SEMENTE ? (1 - 31328) ) ;Readln( semente1 ) ;Writeln( Qual a 2a. SEMENTE ? (1 - 30081) ) ;Readln( semente2 ) ;ALEAT: = RAND3; { chamada i ni c i al para passagemdas sementes }semente1 : = 0; { obr i gat or i o antes de se usar aRAND3 abaixo }For I :=1 to 5 do |Begin |ALEAT: = RAND3; 4294967087.0) thenBeginWriteln( Semente fora da faixa permitida ! ) ;Exit ;End;End;{ ========================================================}PASSASEMENTE; {>>Chamada obri gat ori a antes de se usar aRAND4}{ ========================================================}Writeln( Informe a Serie a ser usada [1 - 50} ) ;Readln( SERIE) ;For I : = 1 to 5 doBeginALEAT: = RAND4;Writeln(ALEAT: 10: 8) ;End;End.Paraassementes78975, 2731847, 1300, 15873476, 7590e6150esrieiguala4 os nmeros aleatrios encontrados foram: 0.57235506, 0.50824212, 0.89428253,0.94493137 e 0.51779478 .2.8 Geradores de nmeros aleatrios embutidosPraticamentetodasaslinguagensdeprogramao(Pascal, Java, Basic, C,etc...)tem comandos paragerarnmeros aleatriosuniformemente distribudosem [0,1]. Os chamados programas aplicativos, como o Excel por exemplo, tambm tem, jprogramado, rotinas para gerar nmeros aleatrios.30 A gerao de Nmeros Aleatrios2.8.1 O gerador do Turbo PascalPara exemplicar podemos ver a seguir um programa em Pascal para gerar e im-primir nmeros aleatrios.{ Gerador embutido do Turbo Pascal }Uses WinCRT;VarSemente , I : Integer ;BeginWriteln( Qual a semente (1 - 32767) ? ) ;Readln( Semente ) ;RandSeed : = Semente ;For I :=1 to 5 doBeginWriteln(Random: 10: 8) ;End;End.O Pascal tem, j predenida, uma varivel, chamada RandSeed, que a sementepara a rotina interna do Turbo Pascal para a gerao de nmeros aleatrios. Assimse zermos RanSeed igual a um valor no intervalo [1 , 32767] estaremos fornecendoasementeparaogerador. CadavezqueafunoRandomchamada, temosagerao de um nmero aleatrio em [0, 1].No programa acima, se escolhermos a semente igual a 45, os 5 nmeros impressosso: 0.82419454, 0.73292737, 0.46002175, 0.73578912 e 0.43182616.O Pascal tem tambm uma instruo chamada Randomize que atribui a sementedogerador(varivelRandSeed)umvalorcalculadoapartirdahoracorrentedocomputador no momento da execuo do programa. Vemos a seguir um exemplo deum programa utilizando o comando Randomize, observando que o Randomize devevir logo no incio do programa.VemosaseguirumexemplodeumprogramautilizandoocomandoRandomize,observando que o Randomize deve vir logo no incio do programa.{ Gerador embutido do Turbo Pascal }{ Uso do Randomize }VarI : Integer ;BeginRandomize ;For I :=1 to 5 doBeginWriteln ( Random: 10 : 8) ;End;End. bvio que usando-se o Randomize, no conseguimos repetir a mesma seqnciade nmeros gerados j que a semente muda em cada execuo do programa.O gerador do Turbo Pascal est baseado na seguinte frmula congruente linear:xi+1=(134775813 xi + 1) mod42949672962.9 Nmeros aleatrios com outras distribuies uniformes 312.8.2 O gerador do ExcelOusodeplanilhas, principalmenteoExcelquetemmaisde90%domercado, largamenteutilizadanasimulaodemodelosdepequeno emdioporte. Destaforma, o gerador embutido do Excel tem sido objeto de muitos estudos de avaliaoda sua qualidade estatstica.At a verso 2003 o Excel usava um gerador baseado na seguinte frmula congru-ente:xi+1=(9821 xi + 0.211327) mod1Usar mod 1 equivalente a se pegar a parte fracionria da conta(9821 xi +0.211327).Inmeros trabalhos, j publicados mostram que este gerador, embora no to ruimcomo a RANDU, tambm tem problemas de uniformidade e aleatoriedade.A partir da verso 2003, ou seja no Excel 2003 e no Excel 2007, o gerador passoua ser o descrito no paper Building a Random Number Generator Wichman, B.A.and I.D. Hill, Byte, pp. 127 128, March - 1987.Este gerador a combinao de 3 geradores e tem perodo de 1013. Suas frmulasso:Ai+1=(171 Ai) mod30269Bi+1=(172 Bi) mod30307Ci+1=(170 Ci) mod30323ALEAT=[(Ai+130269) + (Bi+130307) + (Ci+130323)] mod1Inmeros trabalhos tcnicos mostraram que este um gerador de boa qualidade.2.8.3 Cuidados a serem tomadosQuando usamos um geradorembutido,que em muitos casosno esto documen-tados, importante se testar aqualidadedo gerador. Se no houver tempo paraque estes testes sejam realizados, deve-se tentar encontrar algum material j pu-blicadosobre a qualidadedo gerador em questo. Em hiptese alguma,devemosusar, em aplicaes mais sensveis, um gerador desconhecido. Muitos geradoresembutidos nada mais so do que a RANDU !!2.9 Nmeros aleatrios com outras distribuies uniformesUma vezque temos uma rotina paragerarnmeros uniformemente distribudosno intervalo [0, 1], fcil ger-los com outras distribuies uniformes.32 A gerao de Nmeros Aleatrios2.9.1 Variveis aleatrias contnuasSuponha que X uma varivel aleatria contnua, uniformemente distribuda den-tro do intervalo(a, b), onde at4.2 Simulao Direta 69Multiplicando ambos os lados da equao por 1, temos:ki=1ln Ui< tFazendo t=1 e exponenciando ambos os lados chegamos a:ki=1Ui

ki=1Uiou seja, a varivel poisson igual a k 1 quando a relao acima acontece.Exerccio: Gerar5variveisaleatriasgovernadaspeladistribuiodePoissoncommdia () =1.5. Faaosclculosusandooseguinteconjuntodenmerosaleatrios uniformemente distribudos: 0.35, 0.97, 0.22, 0.15, 0.60, 0.43, 0.79, 0.52,0.81, 0.65, 0.20, 0.57, 0.10.Como =1.5 temos e=0.223.De maneira a obter a primeira varivel aleatria, 3 nmeros aleatrios uniforme-mente distribudos so necessrios como podemos ver a seguir:k=1 0.2230.15Logo X2=(k 1)=0X3=(3 1)=2 pois 0.223>0.204(= 0.60 0.43 0.79)X4=(4 1)=3 pois 0.223>0.055(= 0.52 0.81 0.65 0.20)X5=(2 1)=1 pois 0.223>0.057(= 0.57 0.10)O programa a seguir, escrito em Pascal, implementa a gerao de nmeros alet-rios que seguem a distribuio de Poisson.O programa permite que se informe quantos nmeros queremos gerar e o valor de.Como sada ele imprime os 5 primeiros nmeros gerados e a mdia de todos os n-meros gerados.O programa usa a RAND2 como o gerador bsico de nmeros aleatrios.70 Variveis aleatrias no uniformes{POISSON}VarN, I ,NUMIMP, J : Integer ;SOMA: Double;LAMBDA,MEDIA, F: Real ;{ $I RAND2. PAS}{ }FunctionPOISSON( F: Real ) : Integer ;VarALEAT : Double;VMULT: Real ;NUMPOISSON: Integer ;BeginNUMPOISSON: = 0;VMULT: = 1. 0;While (VMULT>F) doBeginALEAT: = RAND2;VMULT: =VMULT ALEAT;NUMPOISSON: =NUMPOISSON+ 1;End;POISSON: =NUMPOISSON 1;End;{ }BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;Writeln( Quantos Numeros ? ) ;Readln(N) ;Writeln( Qual o valor de Lambda ? ) ;Readln(LAMBDA) ;F : = EXP(LAMBDA) ;SOMA: = 0. 0;NUMIMP: = 0;For I : = 1 toNdoBeginJ : = POISSON( F) ;SOMA: =SOMA+ J ;NUMIMP: =NUMIMP+ 1;If NUMIMP< 6 thenWRITELN( J ) ;End;Writeln( MEDIA = ,SOMA/ N: 10: 5) ;End.Em uma execuo, usando-se a semente 9999 para a RAND2, em que foram gera-dos 10.000 nmeros com =1.5, os seguintes resultados foram obtidos:Primeiros 5 nmeros gerados: 0, 1, 1, 2 e 1.A mdia () dos 10.000 nmeros gerados foi igual a 1.5053.4.2 Simulao Direta 714.2.2 A Distribuio GammaVamos ver o uso da Simulao Direta para a Distribuio Gamma, cuja densidadeprobabilstica dada por:f(x) =x(1)ex( 1)!onde umaconstante positivae umaconstanteinteirapositiva. Podesermostrado que a mdia e a varincia para a distribuio so:=2=2=Pode-se mostrar aindaque a varivel x pode ser interpretadacomo a soma devariveis aleatrias exponencialmente distribudas, cada uma tendo um valor es-perado de1. Assim,x=x1 +x2 +. . . +xondef(xi)=exiA funo de densidade probabilstica para a distribuio gamma no pode ser inte-grada analticamente e consequentemente o mtodo da transformao inversa nopode ser usado. Ns podemos, entretanto, simular o processo gamma diretamente,somando variveis aleatrias exponencialmente distribudas. Assim podemos es-crever:X=

1

i=1ln Uionde Ui uma varivel aleatria uniformemente distribuda em [0, 1].A expresso pode ser escrita de uma forma mais conveniente como:X=

1

lni=1Uidesde que o logartimo de um produto a soma dos logartimos dos fatores indivi-duais.Exemplo: Gerar5variveisgovernadaspeladistribuiogammacom=1e72 Variveis aleatrias no uniformes=2.Faa os clculos usando o seguinte conjunto de variveis aleatrias unifor-memente distribudas em[0, 1]: 0.35, 0.97, 0.22, 0.15, 0.60, 0.43, 0.79, 0.52, 0.81,0.65.X1= (1/1) ln [(0.35)(0.97)] =1.08X2= (1/1) ln [(0.22)(0.15)] =3.41X3= (1/1) ln [(0.60)(0.43)] =1.35X4= (1/1) ln [(0.79)(0.52)] =0.89X5= (1/1) ln [(0.81)(0.65)] =0.64O programa a seguir, escrito em Pascal, implementa a gerao de nmeros aleat-rios que seguem a distribuio gamma.O programa permite que se informe quantos nmeros queremos gerar, e .Como sada ele imprime os 5 primeiros nmeros gerados e a mdia de todos os n-meros gerados.O programa usa a RAND2 como o gerador bsico de nmeros aleatrios.{GAMMA}VarN, I ,NUMIMP,BETA: Integer ;ALEAT,SOMA: Double;ALFA,MEDIA: Real ;{ $I RAND2. PAS}{ }FunctionGAMMA(ALFA: Real ; BETA : Integer ) : Double;VarNUMGAMMA: Double;J : Integer ;BeginNUMGAMMA: = 1. 0;For J : = 1 toBETAdoBeginNUMGAMMA: =NUMGAMMA RAND2;End;GAMMA: = ( 1.0 / ALFA) LN(NUMGAMMA) ;End;{ }BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;Writeln( Quantos Numeros ? ) ;Readln(N) ;Writeln( Qual o valor de Alfa ? ) ;Readln(ALFA) ;Writeln( Qual o valor de Beta ? ) ;Readln(BETA) ;SOMA: = 0. 0;NUMIMP: = 0;For I : = 1 toNdoBeginALEAT: =GAMMA(ALFA,BETA) ;SOMA: =SOMA+ALEAT;NUMIMP: =NUMIMP+ 1;If NUMIMP< 6 then Writeln(ALEAT: 10 : 6) ;End;Writeln( MEDIA = ,SOMA/ N: 10: 6) ;End.4.2 Simulao Direta 73Emumaexecuo, usando-seasemente 9999paraaRAND2, emqueforamge-rados10.000nmeroscom=1e=2, ousejacommdiatericaiguala==21=2, os seguintes resultados foram obtidos:Primeiros 5 nmeros gerados: 3.637, 2.884, 1.318, 2.106 e 2.348.A mdia dos 10.000 nmeros gerados foi igual a 1.9981.4.2.3 A distribuio NormalMuitos tipos de eventos aleatrios so governados pela distribuio Normal. Estadistribuio caracterizada por uma densidade probabilstica dada por:f(x)=12e12

x 2onde a mdia e o desvio padro. A funo de densidade normal no podeser integrada analticamente e desta forma no podemos usar o mtodo da trans-formao inversa. Podemos, entretanto, uma vez mais, gerar a varivel aleatriadesejada por simulao direta.Para fazer isto considere o caso especial onde =1 e Z=(x ).Temos ento:f(Z) =12eZ22Esta a funo de densidadeprobabilsticapara a distribuionormal padroni-zada (standard).Pelo teorema do limite central sabemos que a soma de Nvariveis aleatrias uni-formemente distribudas em[0, 1] segue uma distribuio Normal com=N2e=

N12.Podemos escrever:Z=Ni=1UiN2

N12Como esta considerao vlida para N>10, podemos fazer N=12 para facili-tar o procedimento computacional, obtendo ento:Z=12i=1Ui6Temosagoraumprocedimentosimplesparagerarumavarivel aleatrianor-malmente padronizada. Simplesmente somamos 12 nmeros aleatrios uniforme-mente distribudos em [0, 1] e ento subtramos 6, obtendo um valor para Z.74 Variveis aleatrias no uniformesSedesejarmosgerarumavarivel normal commdiaedesviopadro, ge-ramosprimeiroZeentocalculamosavarivel aleatriadesejadaXusando:X= +Z.Exemplo: Gerar uma varivel aleatria que siga a distribuio normal com mdia 5e desvio padro 2. Use o seguinte conjunto de variveis aleatrias uniformementedistribudas em [0, 1]:0.35, 0.97, 0.22, 0.15, 0.60, 0.43, 0.79, 0.52, 0.81, 0.65, 0.20,0.57.A soma dos 12 nmeros d:12i=1Ui=0.35 + 0.97 +. . . + 0.57=6.26Calculamos ento o valor de Z=(6.26 6)=0.26.A varivel aleatria normal pode ento ser obtida por:X=5 + (2)(0.26) =5.52O programa a seguir, escrito em Pascal, implementa a gerao de nmeros aleat-rios que seguem a distribuio Normal.O programa permite que se informe quantos nmeros queremos gerar, a mdia eo desvio padro .Como sada ele imprime os 6 primeiros nmeros gerados, a mdia de todos os n-meros gerados e o desvio padro.O programa usa a RAND2 como o gerador bsico de nmeros aleatrios.{NORMALI }VarN, I ,NUMIMP, J : Integer ;SOMA, Z, DESVIO: Double;MU,DELTA: Real ;{ $I RAND2. PAS}{ }FunctionNORMAL(MU,DELTA: Real ) : Double;VarSOMA12 : Double;BeginSOMA12 : = 0. 0;For J : = 1 to 12 doBeginSOMA12 : = SOMA12+RAND2;End;NORMAL: =MU+DELTA (SOMA12 6. 0) ;End;{ }BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;Writeln( Quantos Numeros ? ) ;Readln(N) ;Writeln( Qual a media ? ) ;Readln(MU) ;Writeln( Qual o desvio padrao ? ) ;Readln(DELTA) ;SOMA: = 0. 0;NUMIMP: = 0;4.2 Simulao Direta 75DESVIO: = 0. 0;For I : = 1 toNdoBeginZ : =NORMAL(MU,DELTA) ;SOMA: =SOMA+Z;DESVIO: = DESVIO+ ( Z Z ) ;NUMIMP: =NUMIMP+ 1;If NUMIMP< 6 then Writeln( Z: 10: 6) ;End;Writeln( MEDIA = ,SOMA/ N: 10: 6) ;DESVIO: = SQRT( ( DESVIO/ N) (SOMA/N) (SOMA/ N) ) ;Writeln( DESVIO PADRAO = ,DESVIO: 10: 6) ;END.Em uma execuo, usando-se a semente 9999 para a RAND2, em que foram gera-dos 10.000 nmeros com =5 e =2, os seguintes resultados foram obtidos:Primeiros 5 nmeros gerados: 2.085, 2.899, 0.675, 6.587 e 0.518.A mdia () dos 10.000 nmeros gerados foi igual a 5.O desvio padro () foi igual a 2.008.Um mtodo alternativo para gerar variveis aleatrias normalmente distribudas usar uma das seguintes expresses:Z=

(2 ln U1) sin (2U2)ouZ=

(2 ln U1) cos (2U2)Ambas as expresses geram variveis aleatrias normais padronizadas.Observequeomtodoanteriornecessitade12valoresdeUiparacadavalordeZenquanto que este ltimo s necessita de 2. Assim aparenta ser mais eficientedo ponto de vista computacional mas o clculo de logartimo, raiz quadrada e seno(oucoseno) muito maisdemoradoqueuma soma. Naverdadeos2mtodos seequivalem em termos de tempo computacional.Exemplo: Gere 2 nmeros aleatrios que sigam uma distribuio normal com m-dia 5 e desvio padro 2. Use o seguinte conjunto de nmeros aleatrios uniforme-mente distribudos em [0, 1]: 0.35, 0.97, 0.22, 0.15.Temos ento:Z1=

(2) ln (0.35) sin [(2)(0.97)] = 0.27X1=5 + (2)(0.27) =4.46Z1=

(2) ln (0.22) sin [(2)(0.15)] =1.41X2=5 + (2)(1.41) =7.82O programa a seguir, escrito em Pascal, implementa a gerao de nmeros aleat-rios que seguem a distribuio Normal utilizando a frmula do seno.O programa permite que se informe quantos nmeros queremos gerar, a mdia eo desvio padro .Como sada ele imprime os 5 primeiros nmeros gerados, a mdia de todos os n-meros gerados e o desvio padro.O programa usa a RAND2 como o gerador bsico de nmeros aleatrios.76 Variveis aleatrias no uniformes{NORMALI I }VarN, I ,NUMIMP: Integer ;ALEAT,SOMA, Z, DESVIO: Double;MU,DELTA: Real ;{ $I RAND2. PAS}{ }FunctionNORMAL(MU,DELTA: Real ) : Double;BeginALEAT: = SQRT(( 2.0 LN(RAND2) ) ) SIN( 2. 0 PI RAND2) ;NORMAL: =MU+DELTA ALEAT;End;{ }BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;Writeln( Quantos Numeros ? ) ;Readln(N) ;Writeln( Qual a media ? ) ;Readln(MU) ;Writeln( Qual o desvio padrao ? ) ;Readln(DELTA) ;SOMA: = 0. 0;NUMIMP: = 0;DESVIO: = 0. 0;For I : = 1 toNdoBeginZ : =NORMAL(MU,DELTA) ;SOMA: =SOMA+Z;DESVIO: = DESVIO+ ( Z Z ) ;NUMIMP: =NUMIMP+ 1;If NUMIMP< 6 then Writeln( Z: 10: 6) ;End;Writeln( MEDIA = ,SOMA/ N: 10: 6) ;DESVIO: = SQRT( ( DESVIO/ N) (SOMA/N) (SOMA/ N) ) ;Writeln( DESVIO PADRAO = ,DESVIO: 10: 6) ;End.Em uma execuo, usando-se a semente 9999 para a RAND2, em que foram gera-dos 10.000 nmeros com =5 e =2, os seguintes resultados foram obtidos:Primeiros 5 nmeros gerados: 3.882, 5.281, 2.879, 7.491 e 7.621.A mdia () dos 10.000 nmeros gerados foi igual a 4.983.O desvio padro () foi igual a 2.018.4.3 O Mtodo da Rejeio 774.3 O Mtodo da RejeioOMtododaRejeioumprocedimentogeral paragerarvariveisaleatriasparaqualquerdistribuiocujadensidadeprobabilsticaf(x)contnuaelimi-tada dentro de uma regio finita, isto , necessitamos que 0 f(x) fmax dentrodo intervalo a x b.De maneira a se obter a varivel aleatria X, deve-se proceder da seguinte forma:1. Gerar um par (U1, U2) de nmeros aleatrios uniformemente distribudos em(0,1).2. Obter uma varivel aleatria,K, dentro do intervaloa K b, usando arelao K=a + (b a) U1.3. Avaliar a densidade probabilstica no ponto K, isto , determinar f(K).4. Obterumavarivel aleatria, Y , uniformedentrodointervalo0Y fmax, usando a relaoY =fmax U2. Os pontosYeKrepresentam ascoordenadas de algum ponto no espao como ilustrado nas figuras a seguir:xf(x)0aK bYf(K)fmaxYf(K), logo no aceitamos K78 Variveis aleatrias no uniformes5. Comparar Ycom f(K).SeYno maiorquef(K) ento o ponto(Y, K) cairem cimaou abaixoda curva de densidade probabilstica como indicado na primeira figura acima.Neste caso ns aceitamos K como a varivel aleatria desejada, ou seja, faze-mos X=K.Se Y maior que f(K), rejeitamos o ponto.6. As etapas de 1 a 5 so repetidas sucessivamente at ser encontrado um pontoque satisfaa a condio.Embora o mtodo da rejeio possa ser usado com muitas distribuies diferentes,eleineficienteporcausadasdiversastentativasquesetemquefazerparaseobterumavarivelaleatriadesejada. Porestarazosdeveserusadosenoexistir outro mtodo.4.3.1 A Distribuio BetaParailustrarousodomtodo darejeio, vamosconsideraradistribuioBeta.Esta distribuio tem a densidade probabilstica dada por:f(x) =(1 +21)!x(11)(1 x)(21)(11)!(21)!onde 1 e 2 so inteiros positivos e 0 x 1.Pode ser mostrado que a mdia e a varincia para esta distribuio so:=1(1 +2)2=2(1 +2) + (1 +2 + 1)Como0 x 1 para a distribuio Beta, temos, no mtodo da rejeio,a=0 eb=1.Exemplo: O modo mais fcil de gerar uma varivel aleatria Beta usar simulaodireta. Vamos no entanto, como exemplo, usar o mtodo da rejeio. Em particularvamosgerarvriasvariveisbetacom1=2e2=3, baseadonaseguintesequncia de nmeros aleatrios uniformemente distribudos em (0,1): 0.35, 0.97,0.22, 0.15, 0.60, 0.43, 0.79, 0.52, 0.81, 0.65, 0.20, 0.57.K=a + (b a) U1=0 + (1 0) U1=U1K=U1A funo de densidade probabilstica pode ser escrita como:f(x) =(2 + 3 1)!x(21)(1 x)(31)(2 1)!(3 1)!f(x) =12x(1 x)24.3 O Mtodo da Rejeio 79A funo toma seu valor mximo em x=1/3.Temos ento:fmax=12

13

23

2=169=1.78Como Y igual fmaxU2, temos:Y=1.78 U2Os resultados obtidos com a aplicao do mtodo esto mostrados a seguir:U1U2K f(K) Y Y f(K)? X0.35 0.97 0.35 1.77 1.73 SIM 0.350.22 0.15 0.22 1.61 0.27 SIM 0.220.60 0.43 0.60 1.15 0.77 SIM 0.600.79 0.52 0.79 0.42 0.93 NO0.81 0.65 0.81 0.35 1.16 NO0.20 0.57 0.20 1.54 1.01 SIM 0.20Assim com 6 pares de nmeros aleatrios em[0, 1], ns geramos 4 variveis betacujos valores so 0.35, 0.22, 0.60 e 0.20.O programa a seguir, escrito em Pascal, implementa a gerao de nmeros aleat-rios que seguem a distribuio Beta utilizando o mtodo da rejeio.Oprogramapermitequeseinformequantosnmerosqueremosgerar, eovalorFmax.Como sada ele imprime os 5 primeiros nmeros gerados, a mdia de todos os n-meros gerados e o desvio padro.Ele imprime tambm quantos nmeros aleatrios em [0, 1] foram necessrios.O programa usa a RAND2 como o gerador bsico de nmeros aleatrios.{BETA}ConstA= 0;B= 1;VarN, I ,NUMIMP: Integer ;J : Longint ;U: Double;MEDIA,FMAX, K, Y,SOMA, DESVIO,NUMBETA: Real ;{ $I RAND2. PAS}BeginWriteln( Qual a semente ? (1 - 2147483646) ) ;Readln( semente ) ;Writeln( Quantos Numeros ? ) ;Readln(N) ;Writeln( Qual o valor de Fmax ? ) ;Readln(FMAX) ;SOMA: = 0. 0;NUMIMP: = 0;DESVIO: = 0. 0;I : = 0;J : = 0;While I 100 ThenBeginWriteln( Fila maior que 100. Aumente dimensoes ) ;HALT;End;CHEGADA[ I ] : =RELOGIO;{ Atual i za e s t at i s t i c as cumulativas TEMPO_SERVIDOR_OCUPADOe MAXIMO_NA_FILA }TEMPO_SERVIDOR_OCUPADO: = TEMPO_SERVIDOR_OCUPADO+(RELOGIO INSTANTE_ULTIMO_EVENTO) ;INSTANTE_ULTIMO_EVENTO: = RELOGIO;IFCLIENTES_NA_FILA>=MAXIMO_NA_FILAThenMAXIMO_NA_FILA: = CLIENTES_NA_FILA;End;{ Geraumi nt e r val o ent re chegadas e programa o proximo event o de chegada }semente: = G1;U: = RAND2;G1: = semente ;INSTANTE_PROXIMO_EVENTO[ 1] : =RELOGIO+EXPONENCIAL(ALFA,U) ;End;{ //////////////////////////////////////////////////////////////////////Rotina de s e r vi c o }Procedure SERVICO;{ Atual i za e s t at i s t i c as cumulativas TEMPO_SERVIDOR_OCUPADO,SOMA_TEMPOS_NO_SISTEMA, NO_SERVICOS_PRESTADOS e MAIS_DE_4MIN.CLIENTES_NA_FILA e diminuida de modo que MAXIMO_NA_FILAnao muda. }Begin5.1 Simulao de um pequeno posto bancrio 85TEMPO_SERVIDOR_OCUPADO: = TEMPO_SERVIDOR_OCUPADO+(RELOGIO INSTANTE_ULTIMO_EVENTO) ;INSTANTE_ULTIMO_EVENTO: = RELOGIO;TEMPO_NO_SISTEMA: = RELOGIO CHEGADA[ 1 ] ;SOMA_TEMPOS_NO_SISTEMA: = SOMA_TEMPOS_NO_SISTEMA+TEMPO_NO_SISTEMA;NO_SERVICOS_PRESTADOS: = NO_SERVICOS_PRESTADOS+ 1;If TEMPO_NO_SISTEMA> 4ThenMAIS_DE_4 : = MAIS_DE_4+ 1;{ Ve r i f i c a a condicao da f i l a }If CLIENTES_NA_FILA< 1Then{ Fi l a vazia . Servi dor desocupado . Proxima saida i gual a i nf i ni t o }BeginCLIENTES_RECEBENDO_SERVICO: = 0;INSTANTE_PROXIMO_EVENTO[ 2] : =1. 0E30;End{ Pel o menos 1 c l i e nt e na f i l a . Mover cada c l i e nt e 1 posi cao }ElseBeginFor I :=1 to CLIENTES_NA_FILAdoBeginCHEGADA[ I ] : =CHEGADA[ I +1] ;End;{ Atual i za estado do sistema }CLIENTES_NA_FILA: = CLIENTES_NA_FILA1;TEMPO_TOTAL_NA_FILA: =TEMPO_TOTAL_NA_FILA+ (RELOGIO CHEGADA[ 1 ] ) ;{ Gera nova duracao de s e r vi c o para o c l i e nt e chegando para s e r vi c oe programa proxima saida }semente: = G2;U: = RAND2;G2: = semente ;DURACAO_SERVICO: = EXPONENCIAL(ALFA1,U) ;INSTANTE_PROXIMO_EVENTO[ 2] : =RELOGIO+DURACAO_SERVICO;End;End;{ //////////////////////////////////////////////////////////////////////Impressao dos resul t ados }ProcedureRESULTADOS;BeginRHO: =TEMPO_SERVIDOR_OCUPADO/RELOGIO;PERC_MAIS_4: =MAIS_DE_4/NO_SERVICOS_PRESTADOS;Writeln( Simulacao de um Sistema de Fila com 1 estacao de servico ) ;Writeln( -------------------------------------------------------- ) ;Writeln( Intervalo entre chegadas (Exponencial) = ,MEDIAEXP: 3: 3 ,86 Modelos para simular filas de espera e o uso do ARENA ,UNIDADE_DE_TEMPO) ;Writeln( Duracao do servico (Exponencial) = ,MEDIAEXP1: 2: 3 , ,UNIDADE_DE_TEMPO) ;Writeln( -------------------------------------------------------- ) ;Writeln( Total de clientes atendidos = ,NO_SERVICOS_PRESTADOS) ;Writeln( Taxa de ocupacao do servidor = RHO = ,RHO: 0 : 3 ) ;Writeln( Maximo de clientes na fila = ,MAXIMO_NA_FILA) ;Writeln( Percentual de clientes que esperaram mais de 4 ,UNIDADE_DE_TEMPO, = ,PERC_MAIS_4100: 0: 2 , % ) ;Writeln( Tempo medio gasto por cliente na fila = Wq = ,(TEMPO_TOTAL_NA_FILA/NO_SERVICOS_PRESTADOS) : 3: 3 , ,UNIDADE_DE_TEMPO) ;Writeln( Tempo medio gasto por cliente no sistema = W = ,(SOMA_TEMPOS_NO_SISTEMA/NO_SERVICOS_PRESTADOS) : 3: 3 , ,UNIDADE_DE_TEMPO) ;Writeln( Tempo total de simulacao = ,RELOGIO: 6: 3 , ,UNIDADE_DE_TEMPO) ;End;{ //////////////////////////////////////////////////////////////////////ROTINAPRINCIPALRecebe os parametros de entrada e sementes para a geracao denumeros al e at or i os }BeginCLRSCR;VOLTA:Writeln( Qual a semente ? (1 - 2147483646) - Intervalo entre Chegadas ) ;Readln( semente ) ;G1: = semente ;Writeln( Qual a semente ? (1 - 2147483646) - Durao do Atendimento ) ;Readln( semente ) ;G2 : = semente ;IFG1=G2ThenBeginWriteln( SEMENTES IGUAIS - ERRO!! ) ;GOTO VOLTA;End;Writeln( Qual a unidade de tempo a ser usada ? ) ;Readln(UNIDADE_DE_TEMPO) ;Writeln( Qual o intervalo, em ,UNIDADE_DE_TEMPO, ,entre chegadas - EXPONENCIAL ? ) ;Readln(MEDIAEXP) ;ALFA: =1. 0/MEDIAEXP;Writeln( Qual a media, em ,UNIDADE_DE_TEMPO,,da duracao do servico - EXPONENCIAL ? ) ;Readln(MEDIAEXP1) ;ALFA1: = 1. 0/MEDIAEXP1;Writeln( Quantos clientes na simulacao ? ) ;Readln(NUMERO_DE_CLIENTES) ;CLRSCR;{ }INICIALIZACAO;While (NO_SERVICOS_PRESTADOS 15%). O programa tambm grava um arquivo (summary) emque mostra o ranking das diversas distribuies em funo do erro quadrado, comopodemos ver a seguir:Distribuio Erro QuadradoNormal 0.00274Beta 0.00328Triangular 0.00431Weibull 0.00524Erlang 0.0151Gamma 0.0161Uniform 0.0379Lognormal 0.0465Exponential 0.07485.3 O software ARENA 103E quando nenhuma distribuio adere aos dados ?Vamos considerar os dados abaixo:120.3 110.8 130.4 140.7 150.7 140.9 150.1110.5 120.7 130.1 140.2 150.4 110.9 130.3120.1 150.1 130.7 140.9 150.0 110.9 110.3120.6 130.9 140.3 150.2 140.9 120.0 110.9140.5 150.4 130.8 130.9 110.7 120.9 140.95.6 4.5 6.1 7.2 4.5 6.3 4.97.3 5.4 7.0 4.4 6.6 6.5 5.04.8 5.8 5.9 6 .4 7.5 6.0 5.24.1 5.4 5.6 6.7 5.3 4.9 7.2Submetidos ao Input Analyzer, o melhor que ele consegue fazer o que vemos aseguir:Na verdade,como podemos ver pelos valoresdospvalue,no foi possvelencon-trar qualquer distribuio terica que tivesse uma razovel aderncia aos dados daamostra.104 Modelos para simular filas de espera e o uso do ARENANeste caso devemos usar uma distribuio emprica e no Input Analyzer devemosescolher Fit e Empirical, como vemos a seguir:O programa mostra a seguinte tela:Podemos ver que ele deniu uma distribuioemprica que pode ser contnua oudiscreta:CONT or DISC (0.000, 4.000,0.340, 33.400,0.340, 62.800,0.340, 92.200,0.585, 121.600,0.585, 151.000)No caso de se usar a distribuio contnua, que parece ser mais adequada aos dadosda amostra, o ARENA vai obter valores da distribuio usando interpolao entreos valores das linhas acima.5.3 O software ARENA 105No seria melhor dividir ?O exemplo anterior um caso tpico de 2 grupos distintos de dados: um onde elesvariam de 4 a 8 e um outro onde os valores esto entre 110 e 150. Neste tipo desituao, existe uma alternativa melhor do que usar a distribuio emprica abran-gendo todo o intervalo: dividir os dados em 2 conjuntos [4 8] e [110 150]. Paracada conjunto, podemos usar o Input Analyzer para determinar a melhor distribui-o. Claro que esta soluo vai implicar em se adequar o modelo para que o eventoaleatrio em questo, seja representado por 2 distribuies distintas.E os dados fora da curva ?Vamos examinar os dados a seguir:12.5 17.3 15.1 14.0 12.7 13.918.4 16.7 19.1 11.3 17.5 137.614.4 16.7 13.8 16.9 14.5 18.1Os valores esto entre 11 e 19 mas aparece o valor de 137.6,muito diferente dosdemais.Numaamostra, estetipodevaloressochamadosdeoutlierse, suapresena,pode impedir que se consiga uma distribuio com boa aderncia para os dados daamostra.Quando temos pontos deste tipo, a 1aprovidncia vericar se no se trata de umerro na coleta de dados. muito comum, mesmo quando os dados esto gravadosem meio magntico, que alguns valores errados estejam inltrados na amostra.Tambm no se deve cair na tentao de se eliminar osoutliers sem que antes sefaa uma anlise sobre a pertinncia ou no daqueles valores na amostra.Se houver dvidas da validade do dado, uma soluo se aumentar o tamanho daamostra para vericar se a incidncia de outliers permanece.Usando os dados histricos (Flat Files)Podemos ter a situao em um modelo de simulao em que determinado processoaleatrio como, por exemplo,as chegadas de navios a determinado porto,no vaisofrer grandes alteraes ou ser impactado de alguma forma pelo modelo que estsendo construdo.Vamos supor que todas as chegadas de navios a este porto nos ltimos 2 anos este-jam registradas e armazenadas em um arquivo, ou seja, em meio magntico.Neste caso em vez de se tentar conseguir uma distribuio que espelhe o compor-tamento dachegadadosnavios, podemosusar, nomodelo,oprprioarquivodaschegadasdosltimos2anoscomoinputno ARENA.Este tipodearquivocha-mado de Flat File e todos os pacotes aceitam este tipo de entrada.106 Modelos para simular filas de espera e o uso do ARENAE quando no se tem dados ?O que descrevemos at agora a situao em que est sendo construdo um modelopara algo que j exista como, por exemplo, uma agncia bancria que j funcionaou uma agncia nova mas para a qual podemos usar dados de outra agncia cujotamanho,perldos clientes,etc...,sejamuito semelhante aque estsendo estu-dada.Podemos ter, no entanto, o caso em que se est modelando algo, totalmente ou emgrandeparte, novo. Nestescasos, possvelquenosetenhacomoobterdadospara os processos aleatrios que o modelo eventualmente possa ter.Nestetipodemodelo, comoteremosqueinferircomoserocomportamentodosdados, sernecessrioseavaliar, commuitocuidado, osresultadosdasimula-o. Esta avaliaolevar,na maioriados casos,a se reveros dados de entradavoltando-se ao estgio de avaliao dos resultados. um processo de renamentoat se ter resultados que sejam coerentes com o processo sendo modelado.Naausnciadedados, seformosusarumadistribuio, devemosolharinicial-mente para as distribuies Uniforme, Triangular, Normal e Exponencial. Os pa-rmetrosparaestasdistribuiessofceisdeentenderetemumconjuntodecaractersticasqueseadaptamamuitos tiposdemodelos,como podemosvernatabela a seguir:Distribuio Parmetros Caractersticas Exemplo de usoExponencial Mdia Variabilidade ampla Intervalo entre chegadasLimitada a esquerda Tempo entre quebrasIlimitada a direitaTriangular Min, Moda, Mx Simtrica ou no simtrica Durao de atividadesLimitada em ambos os ladosUniforme Min, Mx Todos os valores com mesma prob. Pouco conhecimentoLimitada em ambos os lados sobre o processoNormal Mdia e Desvio Padro Simtrica Processos que so somaVariabilidade de outros processoscontrolada pelo desvio padro Processos com simetriaem relao a mdiaSeosintervalosdetemposoindependentes,ouseja, umvalornoinuenciaoprximo, a mdia tem valor baixo e existe uma grande variabilidade nos tempos, adistribuio Exponencial pode ser uma boa escolha. Normalmente usada paradescrever intervalos entre chegadas ( agncias bancrias, supermercados, restau-rantes, etc...) eduraesdeatendimento(decaixasdebancos, supermercados,etc...).Se o tempo representa a durao de uma atividade onde existe um valor mais pro-vvel e alguma variao em torno deste valor, a distribuio Triangular freqen-temente usada. Ela denida pelos valores mnimo, mais provvel (moda) e m-ximo, o que uma forma natural de se prever a durao de alguma atividade. Elaainda tem a vantagem adicional de permitir valores no simtricos em torno do va-lor modal. Um ponto fraco da distribuio Triangular que ela uma distribuiolimitadaem ambos os lados,ou seja,no se pode ter nenhum valormenor que omnimo nem maior que o mximo.Quando no sabemos praticamente nada sobre determinado processo mas sabe-5.3 O software ARENA 107mos, mesmo que seja aproximadamente, o valor mnimo e mximo, a distribuioUniforme pode ser uma opo.Ela fornecer qualquer valor, entre os 2 extremos,com a mesma probabilidade.Setemosvaloresquesosimtricamentedistribudosemtornodamdiaesemlimiteinferiore superior, adistribuioNormal podeserumaboaescolha. Umproblema que temos com a distribuio Normal que, como estamos normalmentefalandodetempo, nopodemostervaloresnegativos. Nenhumaatividadepodedurar, por exemplo, 1 minuto. Assim se temos mdia igual a 4 minutos e desviopadroiguala1minuto, provvelqueduranteasimulaoapareamvaloresnegativos. OARENAtransformatodosestesvaloresnegativosemzero. Algunsoutros softwares, desprezam eventuais valores negativos.Se a mdia est 3 ou 4 desvios padres acima de zero, provvel que a distribuioNormal no seja a mais apropriada para o processo em questo.5.3.5 O uso do ARENAA tela principal do ARENA a seguinte:Aesquerdatemosareadospainis(templates)comoCreate, Dispose, Process,etc... Osmodelos desimulaosoconstrudoscom estespainis,comoveremosmaisadiante. Observequeottulo dareadepainis BasicProcess,ouseja108 Modelos para simular filas de espera e o uso do ARENAestes so os blocos bsicos e poderemos acrescentar outros a medida que eles foremsendo necessrios.Naverdade, nasuaformamaissimplificada, criamosmodelosnoARENAcons-truindo desenhos lgicos com os painis.5.3.6 Simulao de um pequeno posto bancrioVamos ver o exemplo de um pequeno posto bancrio com um nico caixa.Como j dissemos, no Arena trabalhamos com blocos e, interligando-os,constru-mos o modelo. Antes de ver como se faz no Arena, vamos construir nosso modelolgico. Podemos representar nosso posto da seguinte forma:ClientesChegamClientes soAtendidosClientes voemboraVamos agoraparaoArena. O nosso1obloco, ousejaachegadadeclientes,temquesercriado. Clicandoesegurandoomouse,arrastamosotemplateCreatedolado esquerdo para a rea de trabalho,que a maior rea branca da tela inicial.SoltamosomouseeumacaixaCreate1aparecenoespaoembranco. Aseguirtemos que criar o bloco que representa o atendimento aos clientes. Para isto, temosque usar o template Process, ou seja clicamos, seguramos o mouse e o arrastamospara a direita da caixa Create1. O ARENA conecta automaticamente as 2 caixas(istopodeserdesligado). VaisercriadaumacaixachamadaProcess1. E, paranalizar, fazemos o mesmo com o template Dispose e a colocamos direita da Pro-cess1. Esta caixa vai representar a sada dos clientes.A aparncia da nossa tela dever ser a seguinte:5.3 O software ARENA 109Na parte abaixo da rea de trabalho aparece uma espcie de planilha com algunsdados que ficaro mais claros a medida que formos avanando.Dando um duplo click na caixa Create1, abre-se o seguinte quadro:110 Modelos para simular filas de espera e o uso do ARENAPodemos entrar com os dados da nossa aplicao. Na 1alinha, vamos trocar o nome(Name) de Create 1 para Chegada de Clientes.O tipo da entidade (Entity Type) deEntity 1 para Clientes.A 2alinha trata dadistribuiodo intervaloentre chegadas(TimeBetweenArri-vals). EmType, vamos escolherExpression e emValue escolhemosEXPO(Mean),ousejaestamosdizendoqueointervaloentrechegadassegueumadistribuioexponencial. Noexemploquequeremossimular, ointervaloentrechegadastemmdia igual a 2 minutos.Antes de introduzirmos este valor, devemos saber que o ARENAusa a RAND4 (pg.25) como gerador de nmeros aleatrios. Assim, alm da mdia, convm informar,embora seja opcional, qual a srie que deve ser usada para gerar as chegadas de cli-entes. Em princpio no deve-se usar a srie 10 pois esta a srie que o Arena usaquando no se informa nada. Vamos usar a srie 23. Colocamos ento no campoValue a expresso EXPO(2,23), ou seja mdia igual a 2 usando-se na simulao, asrie 23 da RAND4. A seguir devemos trocar o campo Units para minutos.A 3alinha fica como est pois Entidades por Chegada (Entities per Arrival) iguala 1, ou seja cada cliente chega sozinho. No existe limite para o nmero de clientesquepodemchegar, assimMaxArrivalsigualaInfinitoeoinstantedecriao(First Creation) da 1achegada o instante 0.0, ou seja o incio da simulao.Nosso quadro fica ento desta forma:Basta clicar em OK para confirmar as alteraes.Vamos agora dar um duplo click no bloco Process 1. Um novo quadro se abre:5.3 O software ARENA 111Mudamos o Name para Atendimento aos Clientes, o tipo fica Standard. No campoAction, deve ser escolhida a opo Seize Delay Release, ou seja CapturaRetm poralgum tempoLibera, que o que um caixa faz com os clientes.Ao se escolher a ao acima abre-se um novo campo Prioridade (Priority) que deveser deixado como Medium(2). Abre-se,tambm um novo quadro para a definiodos recursos (resources) que, no nosso exemplo, um nico caixa.112 Modelos para simular filas de espera e o uso do ARENADevemos clicar na opo Add para incluir o recurso (Caixa) no modelo, como mos-trado a seguir:Comopodeservistoacima, escolhemosResource(emType), Caixa(emResourcename) e 1 (em quantity).5.3 O software ARENA 113Precisamosinformar agorao tipo de distribuiodo atendimento feito pelo caixaque, no nosso exemplo, segue uma distribuio exponencial com mdia de 1.5 mi-nutos. Escolhemos ento:Expression (em Delay Type), Minutes (em Units), ValueAdded(emAllocation)eEXPO(Mean)(emExpression). Devemosaseguirsubs-tituiro(Mean)por(1.5,7), poisvamosusarasrie7daRAND4paraageraodaduraodo servio. Se no estivermarcado,devemos marcaro campoReportStatistics. Finalmente clicamos em OK para confirmar nossos dados.Repetimos o processo para a caixa Dispose. O seguinte quadro aparecer:Mudamos o nome para Sada de Clientes, marcamos o campo Record Entity Statis-tics e clicamos em OK, obtendo-se o seguinte quadro.114 Modelos para simular filas de espera e o uso do ARENAA rea de trabalho do ARENA estar da seguinte forma;PodemosrepararqueapareceumalinhaemcimadoblocoAtendimento aosCli-entes. Estalinharepresentaafilaqueseformanocaixa. Napartedebaixo, amedida que se clica em um dos blocos, aparece uma planilha com as informaespertinentes a cada bloco. Podemos alterar, se for o caso, as informaes na planilhaque elas passaro a valer para o bloco.Neste ponto, o modelo est construdo mas antes de executar a simulao,temosqueajustaralgunsparmetros. Assim, devemosclicaremRun Setup, nomenu. O quadro a seguir (j com as alteraes feitas), para Replication Parametersaparecer:5.3 O software ARENA 115Vamos fazer apenas uma simulao (1 replicao) com durao de 10.000 minutos.TambmnoRun Setup, abaProjectParameters, podemosentrarcomosparmetros do projeto taiscomo nome do projeto,nome do analista,descriodoprojeto, etc...Devemos tambm marcar os tens para os quais queremos que sejam gerados rela-trios:116 Modelos para simular filas de espera e o uso do ARENAPara finalizar clicamos em OK.Paraexecutarasimulaoclicamos, nomenu, emRun Go. Passamosaverento a simulao dinamicamente acontecendo como no retrato a seguir (obtidoapertando-se, durante a simulao, a tecla ):Neste ponto j tinham chegado 509 clientes, 503 j tinham sido atendidos, 5 esta-vam na fila e 1 estava sendo atendido.Ao final da simulao, o ARENA emite dezenas de relatrios que podem ser acessa-dos a partir da aba Reports que existe na parte esquerda da tela. Vamos mostraralguns destes relatrios e ver os resultados obtidos.O 1o o Queues que d informaes sobre a fila em si:5.3 O software ARENA 117O tempo de espera mdio na fila de 4,59 minutos. O terico (Wq), modelo M/M/1, 4,50 minutos. A maior espera foi de 44.69 minutos. O nmero mdio de clientesna fila 2,30 clientes. O terico (Lq) igual a 2,25 clientes. O nmero mximo declientes na fila foi 21.O prximo relatrio que podemos examinar o de Resources que, no nosso exemplo o caixa.118 Modelos para simular filas de espera e o uso do ARENAComopodemosobservar, oCaixaficouocupado75%dotempo. Esteresultadoexatamenteigual aoterico( =0.75). MostratambmqueoCaixaatendeu5.002 clientes.Outro relatrio que pode ser visto o de Processes:Elemostraqueamaioresperatotaldeumclientefoide46.85minutos, oaten-dimentomaisdemoradofoi14,71minutoseamaioresperanafilafoide44.69minutos.Como citamos anteriormente, vrios outros relatrios, com grficos inclusive,soimpressos e podem ser examinados.5.3.7 Simulao de um check-inVamos imaginar a seguinte situao: passageiros, que vo viajar em determinadacompanhiaarea, chegamaoaeroportocomintervalomdiode1.6minutos, deacordo com uma distribuio exponencial. Estes viajantes, desde do momento emqueentramnoaeroportoatchegaraobalcodecheck-in, demoramentre2e3minutos com distribuio uniforme entre estes 2 valores. No check-in, os viajantestemque entrar emuma fila nica at que um dos 5 atendentes o atenda.O tempo nocheck-in segue uma Distribuio de Weibull com parmetros =3.91 e =7.76.Aps o check-in, eles podem se dirigir aos portes de embarque. Visando melhorar oatendimento, deseja-se determinar uma srie de variveis tais como o tempo mdio5.3 O software ARENA 119queumpassageirogastadesdedequecheganoaeroportoatserliberadoparao embarque, o nmero mdio de viajantes na fila do check-in, o node passageirosatendidos no check-in de 8:00 horas da manh at 22:00 horas, etc...O modelo desta situao pode ser representado pelo grfico a seguir:Chegada dosPassageirosProcura peloCheckInCheckInSada paraEmbarqueComo fizemos no 1oexemplo, vamos construir um modelo equivalente no ARENA.Nossos blocos bsicos ficam como:O bloco de chegada idntico ao que j fizemos no exemplo anterior e escolhemosEXPO(1.6,7) para a distribuio exponencial, usando a srie 7 da RAND4. Vamoschamar de Passageiros a entidade que vai circular na simulao. Temos ento:O 2obloco referente a procura pelo balco de check-in. A ao, neste caso s De-lay porque s h um atraso, uniformemente distribudo, para chegar at o balco.O quadro preenchido fica da seguinte forma:120 Modelos para simular filas de espera e o uso do ARENAO bloco do check-in tambm bastante similar ao que vimos anteriormente com adiferena de que escolhemos o nome de Atendentes para o recurso e a distribuiodo atendimento escolhida como WEIB(7.76,3.91,23), ou seja uma Weibull com osparmetros dados e usando-se a srie 23 da RAND4. Temos ento:5.3 O software ARENA 121No bloco Dispose muda-se apenas o nome para Sada para o embarque.Neste momento devemos nos lembrar que temos 5 atendentes no balco de check-in. Como informar isto ao modelo ? No lado esquerdo da tela do ARENA (onde estoos blocos), rolando com o mouse vo aparecer desenhos de planilhas e uma delas referente aResources. Clicando nela vai aparecer, na parte inferior, uma planilhareferente aos recursos (atendentes no nosso caso). Um dos campos da planilhaCapacity que dever estar com1. Deve ser alterado para 5, como mostrado a seguir:Podemos agora escolher um smbolo que represente os passageiros na dinmica dasimulao. Noladoesquerdo, clicamosaplanilhaEntity. Vaiabrir, embaixoadireita, a planilha relativa aos passageiros. No campo Initial Picture, escolhemos afigura Picture.women que um boneco representando uma mulher, como podemosver a seguir:122 Modelos para simular filas de espera e o uso do ARENAVamos alterar a forma de representao da la de linha para pontos. Dando umduplo click na linha, o seguinte quadro aparece:Mudamos de Line paraPoint e depois clicando emPoints.., vai abrir outro quadroonde,clicandono botoAdd,podemos ir colocando pontos ou seja lugaresna fila(at o mximo de 14). Neste exemplo colocamos 10 pontos. No final clica-se em OK.Para dar um toque mais realista a simulao, vamos acrescentar o balco do check-in e os 5 pontos de atendimento. Iniciamos clicando, na 2abarra de botes em cima,em que far com que a seguinte tela aparea:5.3 O software ARENA 123Escolhendo Atendentes como Identif ier, podemos selecionar figuras para represen-tarosatendentesociosos(Idle)ouocupados(Busy). importantenotarqueasfigurasqueaparecemfazempartedachamadabibliotecapadro. Podemos(cli-cando no open deste quadro) abrir outras bibliotecas que possuem outras figuras.Para escolher uma figura para Idle, por exemplo, clica-se em Idle, clica-se na figuradesejada e depois clica-se em .Antes de clicar em OK, devemos marcar Seize Area. Isto faz com que junto a figuraseja criada uma linha (semelhante a da fila) para identificar os pontos de atendi-mento. No nosso exemplo criamos 5 pontos (de maneira similar ao feito para a fila)pois temos 5 atendentes.Parafinalizar, vamos colocar um relgioparamelhor visualizaodo andamentodasimulao. Paratanto bastaclicarnoboto (clock)earrast-loaparaarea de trabalho. Escolhemos 8:00 horas como a hora inicial marcada pelo relgio.Nosso modelo est pronto e sua aparncia :124 Modelos para simular filas de espera e o uso do ARENAAjustamos a seguir os parmetros da simulao (Run Setup) e escolhemos 14horasparaaduraodasimulao(das8:00s22:00horas). Afiguraaseguirmostra um retrato da simulao:O relgio marca 13:44:32,ou seja j temos 5,5 horas de simulao sendo que 223passageiros j chegaram, 212 j passaram pelo check-in sendo que os 5 atendentesestoocupadose4passageirosaguardamnafila. Temostambm2passageirosprocurando pelo balco de check-in.Dos relatrios emitidos ao final da simulao, podemos extrair, entre outros, os se-guintes dados:Passageiros atendidos pelo check-in das 8:00 s 22:00 : 524Tempo total gasto, em mdia, por um passageiro, da entrada a sada : 13,19 minu-tosMenor tempo gasto por um passageiro, da entrada a sada : 4,91 minutosMaior tempo gasto por um passageiro, da entrada a sada : 29,35 minutos5.3 O software ARENA 125Percentual de ocupao dos Atendentes : 89% do tempoNmero mdio de clientes na fila do check-in : 2,26 passageirosMaior tempo gasto por um passageiro na fila do check-in : 26,90 minutosComojcitado, dezenasdeoutrosrelatriospodemserimpressoscomdadosdasimulao.5.3.8 Simulao de um processo de produoUma indstria eletrnica produz 2 medidores eletrnicos que chamaremos de A eB. Basicamente os 2 aparelhos, embora com funes distintas, tem as mesmas ca-ractersticas quais sejam, uma placa de circuito impresso, onde so soldados com-ponentes, e uma embalagem de plstico com alguns botes.As placas de circuito impresso e as embalagens so produzidas externamente e, aochegar a indstria, so enviadas para uma rea onde, as placas, so preparadaspara receber os componentes que sero soldados. Por sua vez, as embalagens sopintadas e colocados os botes. Estas reas de preparao so, dadas as caracters-ticas tcnicas, diferentes para os aparelhos A e B.Apsapreparao, asplacaseembalagenssoenviadasparaareademonta-gem (nica para A e B) onde os componentes so soldados e o aparelho montado.Nesta rea , ao final, feita uma inspeo de qualidade onde dados histricos temmostradoque91%dosaparelhosacabadosestoperfeitosesoenviadosdireta-mente para a seo de venda. Os que no passam no controle de qualidade (9%),so enviados para um outro setor onde as causas da rejeio so analisadas e, sefor o caso, corrigidas.Dadosestatsticosmostramque80%dosaparelhosquecaemnestesetorconse-guem ser recuperados e vendidos enquanto que os restantes 20% vo para sucata.Foram efetuadas amostras estatsticas em todo o processo e ficou comprovado quetodas as atividades (chegadas, preparao, montagem, etc...)so processos aleat-rios que seguem determinadas distribuies. A figura a seguir d a viso geral detodo o processo:BEXPO(30)Lotes de 4AEXPO(5)PreparoPreparoMontagemConsertoSucataVendaTRIA(1,4,8)TRIA(3,5,10)ATRIA(1,3,4)WEIB(2.5,5.3)BEXPO(45)91%9%20%80%126 Modelos para simular filas de espera e o uso do ARENAAs placas e embalagem do produto A, chegam seguindo uma distribuio exponen-cial com intervalo mdio de 5 minutos entre chegadas. J as placas e embalagensdo modelo B chegam, em lotes de 4, tambm seguindo uma distribuio exponen-cial com intervalo mdio de 30 minutos entre chegadas.O tempo de preparao de cada unidade tipo A segue uma distribuio triangularcom parmetros 1, 4 e 8 minutos enquanto que a do produto B tambm segue umatriangular com parmetros 3, 5 e 10 minutos.Aps preparados, tanto as placas como embalagens dos 2 produtos vo para a seode montagem. L, cada unidade do produto tipo A montada num tempo que segueuma distribuio triangular com parmetros 1, 3 e 4 minutos. J uma unidade doproduto B montada em um tempo que segue uma Weibull com=2.5 e =5.3.Os produtos rejeitados