A evolução da capacidade computacional observada nas últimas décadas modificou profundamente a forma como problemas científicos e aplicados são estudados.
Muitos problemas reais apresentam elevada complexidade matemática, impossibilitando a obtenção de soluções analíticas exatas. Em diversas situações, mesmo quando uma solução teórica existe, seu custo computacional ou sua dificuldade matemática inviabilizam sua utilização prática.
Nesses casos, a simulação computacional constitui uma alternativa extremamente poderosa.
A simulação é uma ferramenta fundamental em Estatística. Muitos problemas de inferência, otimização e previsão não possuem solução analítica simples e precisam ser estudados por meio de experimentos computacionais. Mais especificamente, podemos utilizar simulação para diversas finalidades como:
entre outras.
De forma geral, a simulação consiste na construção de um modelo que representa um sistema real e permite estudar seu comportamento por meio da execução repetida de experimentos computacionais.
Em vez de observar diretamente um sistema físico, realiza-se um grande número de experimentos sobre um modelo matemático, produzindo informações que auxiliam a tomada de decisão.
A Figura abaixo ilustra esse processo. Observa-se, através desta ilustração, que não são realizados experimentos diretamente sobre o sistema real, mas sim sobre sua representação matemática.
Fluxograma das etapas de construção de um modelo de simulação.
O paradigma da simulação tornou-se fundamental em áreas como:
Simulação consiste em construir um modelo computacional capaz de reproduzir o comportamento de um sistema real ou hipotético.
Existem diversas definições de simulação na literatura.
Uma definição bastante utilizada é apresentada por Banks (2010):
Simulação é a imitação do funcionamento de um processo ou sistema real ao longo do tempo.
Essa definição destaca dois aspectos importantes.
Primeiro, a simulação não representa o sistema real em si, mas apenas uma aproximação suficientemente fiel para responder às perguntas de interesse.
Segundo, a simulação é utilizada para estudar a evolução do sistema. Em outras palavras, busca-se compreender como determinado sistema se comporta sob diferentes condições.
Para entender melhor a necessidade do uso de simulação para resolver problemas práticos, considere os seguintes exemplos.
Uma empresa pretende construir um novo aeroporto.
A construção demandará investimentos superiores a cinco bilhões de reais.
Antes da construção, diversas perguntas precisam ser respondidas.
Naturalmente não é possível construir vários aeroportos apenas para testar diferentes alternativas.
A solução consiste em construir um modelo computacional do aeroporto e realizar experimentos sobre esse modelo.
Esse procedimento caracteriza um estudo de simulação.
Deseja-se estudar o tempo médio de atendimento em uma agência bancária.
Uma alternativa seria observar milhares de clientes durante vários meses.
Entretanto, essa estratégia apresenta diversas limitações, como
Em vez disso, pode-se construir um modelo computacional representando:
Executando milhares de simulações torna-se possível estimar:
Um raciocínio análogo pode ser aplicado a:
O resultado é completamente determinado pelas condições iniciais.
Exemplo:
2 + 2
## [1] 4
O resultado depende de mecanismos aleatórios.
Exemplo:
sample(1:6,1)
## [1] 1
Uma das formas mais simples de compreender o conceito de simulação consiste em reproduzir o lançamento repetido de uma moeda.
Sob condições ideais, a probabilidade de ocorrência de cara é igual à probabilidade de ocorrência de coroa, isto é,
\[ P(\text{Cara})=P(\text{Coroa})=0,5. \]
No computador, esse experimento pode ser reproduzido por meio da
função sample().
set.seed(123)
resultado <- sample(
c("Cara","Coroa"),
size = 20,
replace = TRUE
)
resultado
## [1] "Cara" "Cara" "Cara" "Coroa" "Cara" "Coroa" "Coroa" "Coroa" "Cara"
## [10] "Cara" "Coroa" "Coroa" "Coroa" "Cara" "Coroa" "Cara" "Coroa" "Cara"
## [19] "Cara" "Cara"
Ao repetir o experimento diversas vezes, observa-se que as frequências relativas tendem a se aproximar de 0,5, ilustrando empiricamente a Lei dos Grandes Números.
Esse exemplo, embora simples, evidencia um aspecto fundamental da simulação: a necessidade de uma fonte de números que reproduza adequadamente o comportamento aleatório do fenômeno de interesse.
Mais adiante será mostrado que os computadores não geram números verdadeiramente aleatórios. Em vez disso, utilizam algoritmos determinísticos capazes de produzir sequências com propriedades estatísticas semelhantes às de uma sequência aleatória. Esses algoritmos são denominados geradores de números pseudoaleatórios e constituem a base de praticamente todos os métodos modernos de simulação.
BANKS, J.; CARSON II, J. S.; NELSON, B. L.; NICOL, D. M. Discrete-event system simulation. 5. ed. Upper Saddle River: Pearson, 2010.
ROSS, Sheldon M. Simulation. 6. ed. London: Academic Press, 2022.