• Nenhum resultado encontrado

figura 8.3: ciclo de vida de uma simulação computacional.

No documento Livro BasesComputacionais (páginas 195-198)

Passo 1. Análise do sistema alvo: O processo de desenvolvimento de uma

simulação começa na análise do sistema alvo, objeto de estudo. Nesta etapa os modeladores formulam o problema, incluindo a definição de um objetivo. O objetivo da simulação guiará a escolha das partes do sistema alvo a serem modeladas. Como exemplo de objetivos tem-se a estimativa do tempo médio de espera de clientes em uma fila, a estimativa da quantidade de colisões de pacotes em uma rede, análise do comportamento coletivo em situações de pânico

em multidão, análise da evolução de normas sociais, etc. Neste passo também ocorre a coleta de dados para auxiliar na construção do modelo conceitual.

Passo 2. Construção do Modelo Conceitual: Tendo como base o sistema

alvo e o objetivo da simulação, os modeladores constroem o modelo conceitual.

Passo 3. Validação Estática/Estrutural: As ações de modelagem devem ser

revisadas na medida em que o desenvolvimento do modelo avança. Antes de ser codificado em um sistema computacional, o modelo precisa ser analisado para determinar se sua estrutura e seu funcionamento correspondem ao sistema alvo. Esta etapa é denominada validação estática/estrutural. A validação estática procura analisar se a representação lógica, matemática, e as relações de causa e efeito, retratam de forma adequada as características do sistema alvo.

Passo 4. Construção do modelo computacional: Após a validação estrutural

do modelo conceitual, passa-se à modelagem computacional e sua posterior implementação. Ao final desta etapa tem-se um programa implementado, baseado no modelo computacional.

Passo 5. Verificação estática: Nesta etapa o modelo computacional e a

execução do programa são analisados procurando assegurar que, primeiramente, as técnicas computacionais utilizadas estão corretas. Em um segundo momento procura-se analisar se as técnicas computacionais transcrevem corretamente o modelo conceitual para o ambiente computacional. Para tanto, inúmeros testes devem ser realizados como, por exemplo, colocar comprovações no programa para detectar certos tipos de erros. Uma comprovação usual é verificar se uma variável supera um valor impossível (por exemplo, uma probabilidade maior que 1), ou se a diferença entre indivíduos criados e destruídos é incoerente.

Passo 6. Execução do modelo computacional em testes piloto: Uma vez

verificado o correto funcionamento técnico do modelo computacional, experi- mentos piloto são projetados tendo como base situações reais do sistema alvo. Após isto, os experimentos são executados no simulador. Estes experimentos piloto são simplificados, por exemplo, analisando-se os resultados da execução do programa tendo como dados de entrada uma quantidade reduzida de clientes, diminuindo o número de servidores de uma rede, etc.

Passo 7. Verificação dinâmica: Na etapa da verificação dinâmica o modelo

computacional é executado com os dados dos experimentos piloto, procurando- se encontrar respostas previsíveis e comprovar se coincidem, ou não, com os resultados esperados da simulação. Isto não assegura que a simulação funcione de forma adequada para o caso geral, mas muitos erros podem ser encontrados/ identificados em simulações simples (Sargent, 2010).

Passo 8. Validação dinâmica/comportamental: Nesta etapa o programa

que representa o modelo computacional é executado diversas vezes, visando construir uma série de experimentos que permitirão extrair resultados e con- clusões. Nesta etapa o comportamento do programa é conhecido como si- mulação computacional.

8.5 atividades em aula

Conforme visto até o momento, o uso da modelagem e simulação pode trazer grandes benefícios ao estudo de sistemas e fenômenos observados. Nesta seção, colocaremos em prática algumas das ideias discutidas anteriormente, buscando ilustrar por meio de exemplos simples a utilidade das simulações na solução de problemas. No primeiro exemplo, abordaremos o método de Monte Carlo, um algoritmo computacional que se baseia em propriedades de números aleatórios para resolver problemas físicos e matemáticos para os quais não seria possível obter uma solução analítica ou não seria possível utilizar um algoritmo determinístico. Em outro exemplo, apresentamos um modelo computacional que emula o comportamento de um robô, que segue comandos programados pelo usuário.

8.5.1 estimando o valor de π no scilab com o método de

monte carlo

No colégio, todos aprendemos a usar a constante π em Geometria para calcular a área de figuras geométricas, por exemplo. Aprendemos, também, que o valor da constante é de 3,1415926535... Contudo, nem sempre nos ensinam como este valor pode ser calculado a partir de relações mais simples. Nesta prática, nosso objetivo é empregar um modelo matemático simples para calcular o valor de π, utilizando um método clássico de simulação computacional.

Há diversos métodos que nos permitem calcular o valor de π de maneira relativamente simples. Um destes métodos é o método de Monte Carlo, que se baseia nas pro- priedades dos números aleatórios (Metropolis e Ulam, 1949; Metropolis et al., 1953). O método de Monte Carlo foi desenvolvido por Nicholas Metropolis, John von Neumann e Stanislaw Ulam na década de 1940, durante o Projeto Manhattan, no laboratório norte-americano de Los Alamos, onde se desenvolvia o projeto da bomba atômica. Como o projeto era secreto, os nomes dos estudos não podiam ser alusivos à bomba. Neste caso, Monte Carlo foi o nome dado em homenagem ao bairro do principado de Mônaco, famoso pelos cassinos.

O método de Monte Carlo usa números aleatórios para calcular propriedades de interesse. Uma distribuição de números aleatórios pode ser definida, de maneira simples, como um conjunto de números no qual nenhum número tem maior chance de aparecer do que outro. Por incrível que pareça, é algo bem difícil sortear números aleatórios (mesmo com um computador!). Alguns pesquisadores já notaram, por exemplo, que, se pedirmos a um conjunto de pessoas que digam um número qualquer de maneira “aleatória”, os números que obteremos dificilmente passarão num teste estatístico que comprove que o conjunto realmente trata-se de um conjunto de números aleatórios. Contudo, existem rotinas computacionais bastante eficientes e já estabelecidas para gerar sequências de números aleatórios.

As aplicações do método de Monte Carlo são vastas. Alguns exemplos incluem: • Ciências físicas: simulações de difusão de calor, simulações de dinâmica mo- lecular, problemas de muitos corpos (many-body) em sistemas quânticos, etc.;

• Engenharia: Engenharia microeletrônica (análise de variações correlacionadas e não-correlacionadas em circuitos digitais e analógicos), localização de robôs autônomos, etc.;

• Biologia Computacional: Dinâmica de proteínas e membranas, inferências baesianas na construção de árvores filogenéticas, etc.;

• Matemática: Métodos de integração, otimização, etc.

Para compreender o uso do método de Monte Carlo, vamos primeiro desenvolver algumas relações geométricas que nos levarão a uma equação para o valor da constante π. Sabemos que a área de uma circunferência de raio r é dada pela Equação 8.7.

Acirc = πr2

Sabemos, ainda, que a área de um quadrado de lado l é dada pela Equação 8.8. Aquad = l2

Agora, considere uma situação na qual temos um quadrado com uma circunferência inscrita no quadrado, como mostrado na Figura 8.4.

No documento Livro BasesComputacionais (páginas 195-198)