invisible(Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8"))
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))

Material

  • HTML de R Markdown em RPubs

Para que serve um modelo?

O objetivo é entender como a natureza funciona.

Este entendimento é obtido com:

  • observação
  • experimentação
  • hipóteses
  • teorias formais

O que é um modelo?

A model is an abstract description of the real world; it is a simple representation of more complex forms, processes, and functions of physical phenomena or ideas.
Rubenstein and Firstenberg (1995) Patterns of Problem Solving. 2nd ed. Prentice Hall, Englewood Cliffs, New Jersey

“real world”

A realidade é sempre virtual

“physical phenomena”

A física origina-se na antiguidade como o estudo da filosofia natural na tentativa de descrever o universo:

  • leis físicas
  • partículas fundamentais da natureza

Os fenômenos são descritos em termos da relação matemática entre quantidades (varíaveis) que representam atributos observáveis do mundo natural.

limitações do cérebro humano

  • Percepção intuitiva quantitativa de 4 ou 5 unidades;
  • Visualização máxima de 4 ou 5 variáveis simultaneamente;
  • Memória I/O de 8 dígitos;
  • Considera, no máximo, 7 ou 8 fatos particulares para tomada de decisões.

física, matemática e modelos

Tudo…

… é física,
… pode ser descrito pela matemática e
… depende de modelos
… porque não podemos conhecer o mundo físico
senão através de modelos.

Exemplos de modelos

http://www.drh.uem.br/res/mapa_uem.pdf

“… or ideas”

Modelos são idealizações,

“Representações convenientes de coisas importantes” (Prof. Eduardo Massad)

nos quais incluímos somente elementos relevantes.

Resolvendo modelos

Solução:

  • analítica

  • computacional

    • numérica
    • algorítmica

solução analítica

\[{{dX(t)}\over{dt}}={-\beta X(t) Y(t)}\] \[{{dY(t)}\over{dt}}={\beta X(t) Y(t)}\] Solução analítica:

\[Y(t) = { {X(0) e^{\beta \cdot X(0) \cdot t}} \over {{X(0) e^{\beta \cdot X(0) \cdot t}} + X(0)} } \]

solução computacional (simulação numérica)

Modelos complexos (ou complicados ?)

\[h = { {Td} \over {mg} } \] \[~\]
https://giphy.com/explore/esgotado-matrix-music-hall

Modelos simples

Caso você queira ver um outro modelo sobre saltos de animais, consulte http://web.mit.edu/6.055/old/S2009/notes/jump-heights.pdf
Curiosamente, este PDF é um trecho de trabalho do MIT e os autores também adotam modelos o mais simples possíveis.

\[~\]

https://br.pinterest.com/carol9525/mechanical-horse

\[~\]

https://www.pngfind.com/mpng/JRbTx_chrome-ball-png-circle-transparent-png/

Figura ambígua

\[~\]

idosa

jovem

sua mente em foco

Regras simples, resultados complexos

Automata 1

regra 1:

Cada ponto cria dois pontos na linha seguinte:


Está disponível o Rscript pontos.R para que você recrie este exemplo. Pode ser executado de dentro do RStudio ou com

source(“pontos.R”)

em um terminal R, respondendo assim:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 100

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2: pontos gerados conflitam? (s/n): n
    Novos pontos gerados não entram em conflito.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0
    Todos os novos pontos são gerados

regra 1 não determinística:

Apenas uma repetição foi solicitada porque este exemplo é determinístico, no sentido de que o padrão observado será sempre o mesmo. Tudo muda se utilizamos um gerador de números pseudo-aleatórios e solicitamos falha de 1% dos pontos que poderiam aparecer, alterando:
Número inteiro: quantas repetições? 5
[...]
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0.01
    Todos os novos pontos são gerados

Repetindo 5 vezes porque, agora, cada vez é única. Verá que, ocasionalmente, um ponto falhará e, dependendo de onde a falha ocorre, pequenas partes da figura que dependem deste ponto não são geradas.

regra 2:

Pontos que conflitam são eliminados:

Curiosamente, neste exemplo, a única diferença ocorre na geração 3, mas a geração 4 continua a mesma. Tente imaginar qual é a figura que resulta da execução repetida destas duas regras.


Está disponível o Rscript pontos.R para que você recrie este exemplo. Pode ser executado de dentro do RStudio ou com

source(“pontos.R”)

em um terminal R, respondendo assim:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 100

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2: pontos gerados conflitam? (s/n): s
    Novos pontos gerados entram em conflito.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0
    Todos os novos pontos são gerados

A figura resultante, descrita neste artigo da Wikipedia, é conhecida como Triângulo de Sierpinki. O algorítmo proposto para sua geração é mais complicado do que foi proposto aqui, pois faz a construção da imagem dentro de um triângulo previamente delimitado, na forma de um fractal.

regra 2 não determinística:

Da mesma forma que fizemos com a falha de 1% ou 20%, imagine o que acontecerá com a figura a ser gerada.

Automata 2

Será que você aprendeu a prever?

Vamos experimentar fazendo com que os pontos, agora, sejam gerados nas quatro direções. Quando não há conflito entre os novos pontos gerados, é fácil imaginar como será a figura resultante:

O Rscript pontos4.R implementa este exemplo. Execute-o com

source(“pontos4.R”)

e configure:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 40

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2a: novos pontos gerados conflitam entre si? (s/n): n
    Novos pontos gerados não entram em conflito entre si.
Regra 2b: novos pontos gerados conflitam com os antigos? (s/n): n
    Novos pontos gerados não entram em conflito com a geracao anterior.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0

Note que, agora, existe uma regra nova, 2b, que discutiremos adiante.

Qual é a possível expectativa, no entanto, se os novos pontos entram em conflito. Algo assim?

Pare ver este exemplo em ação basta alterar a regra 2a para sim:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 40

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2a: novos pontos gerados conflitam entre si? (s/n): s
    Novos pontos gerados não entram em conflito entre si.
Regra 2b: novos pontos gerados conflitam com os antigos? (s/n): n
    Novos pontos gerados não entram em conflito com a geracao anterior.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0

É improvável que antecipe o padrão que aparece.

simulação não determinística:

Experimente incluir falha de geração de 20% dos pontos, alterando a regra 3:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 40

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2a: novos pontos gerados conflitam entre si? (s/n): s
    Novos pontos gerados não entram em conflito entre si.
Regra 2b: novos pontos gerados conflitam com os antigos? (s/n): n
    Novos pontos gerados não entram em conflito com a geracao anterior.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0.20

Como um ponto, aqui, gera outros quatro, o padrão resiste a probabilidades ainda maiores. Experimente.

mais conflito:

Vamos utilizar a regra2b. Note que, gerando pontos nas 4 direções, há pontos que são gerados sobre as posições da geração anterior, coisa que não acontecia com a figura triangular, que só ia adicionando linhas abaixo da posição atual. O que acontece se, por exemplo, fizermos com que os pontos da geração anterior sejam apagados quando pontos da geração seguinte conflitam com eles?

Experimente:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 40

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2a: novos pontos gerados conflitam entre si? (s/n): s
    Novos pontos gerados entram em conflito entre si.
Regra 2b: novos pontos gerados conflitam com os antigos? (s/n): s
    Novos pontos gerados entram em conflito com a geracao anterior.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0
    Todos os novos pontos são gerados

Também é interessante ter uma visão mais panorâmica dos padrões que aparecem, aumentando o número de gerações (ao preço de ter que esperar mais tempo para o computador gerá-las). Por exemplo, use 80.


Por fim, como último experimento determinístico, sugerimos que experimente desligar a regra 2a, mantendo a regra 2b. Qual é o padrão que espera ver com:

Número inteiro: quantas repetições? 1
Número inteiro: quantas gerações? 40

Regra 1: cada ponto gera 2 pontos em suas diagonais na próxima linha
Regra 2a: novos pontos gerados conflitam entre si? (s/n): n
    Novos pontos gerados entram em conflito entre si.
Regra 2b: novos pontos gerados conflitam com os antigos? (s/n): s
    Novos pontos gerados entram em conflito com a geracao anterior.
Regra 3: probabilidade de falha ao gerar novo ponto? [0,1]: 0
    Todos os novos pontos são gerados

experimentação não determinística:

Finalmente, sugerimos que utilize as combinações das regras 2a, 2b e 3 com diferentes probabilidades de falha na geração dos pontos.

O macaco datilógrafo

https://www.sciencealert.com/monkeys-really-are-writing-shakespeare-thanks-to-new-brain-sensing-technology
O macaco, teclando ao acaso,

pode escrever:

SELECAO

uma palavra com 7 caracteres.

Assumindo que utilizará o teclado modificado, acima, com 68 teclas, tem as seguintes probabilidades de produzir esta palavra:

\[\text{Para 1 letra}: {{1} \over {68}}\] \[\text{Para 2 letras}: {{1} \over {68^2}}\] \[\text{Para 7 letras}: {{1} \over {68^{7}}} \approx {{1} \over {6.72 \cdot 10^{12}}}\] Considerando que o universo existe há 13 bilhões de anos:

\[1.3 \cdot 10^{10} \text{anos} \approx 4.10 \cdot 10 ^ {17} \text{s}\]

e assumindo que uma tentativa é feita por segundo (nosso macaco é um digitador eficiente e incansável), haverá um acerto, em média, a cada \(6.72 \cdot 10^{12} \text{s}\), o que corresponde a um pouco mais que \(213\) mil anos.


O tempo pode parece exagerado para uma palavra com apenas 7 letras. O que aconteceria com

SELECAO NATURAL

que tem 15 letras (contando o espaço em branco). Faça os cálculos e descobrirá que o tempo, em média, para um macaco que digite 15 letras por segundo, é equivalente a 7.5 bilhões de vezes o tempo de duração do universo.

Experimente com frases.R (necessita baixar o programa, ter duas libraries instaladas em seu computador (png e graphics) e da imagem que está em monkey.png

Um ensaio rápido mostra que existe um ótimo para a mutação.

Seleção

Para que exista seleção (artificial ou natural) dois componentes são fundamentais:

  • reprodução com variação (e.g., mutações)
  • um mecanismo que possa favorecer determinada(s) variante(s)

Implementamos em selecao.R um modelo minimalista. Para experimentar com ele, pegue também a função implementada em eiras.friendlycolor.R.

Neste modelo criamos uma simulação por agente. Inicia-se com indivíduos de 6 cores diferentes em um ambiente que tem uma destas cores. A cada ciclo da simulação existe uma probabilidade para cada indivíduo morrer que é mínima se o indivíduo tiver a mesma cor do fundo, e tanto maior quanto mais discrepante for sua cor. É um modelo minimalista: o tamanho da população é fixo, os novos nascidos são repostos por reprodução assexuada de um dos sobreviventes selecionados ao acaso e, então, existe a probabilidade de mutarem para uma outra cor. A cada certo número de ciclos, a cor do fundo é alterada. Você pode alterar a configuração da simulação alterando os valores no trecho indicado no início do Rscript:

# tamanho da populacao 
populacao <- 200
# tamanho do ambiente
env.x <- 240
env.y <- 240
# distância máxima da variação da posicao do individuo por ciclo
shaking <- 2
# probabilidade de morte (minima e máxima)
probmorte.min <- 0.01
probmorte.max <- 0.06
# probabilidade de mutacao para o novo individuo
probmutacor <- 0.01
# duracao total da simulacao
ciclos <- 50000
# cada quantos ciclos a cor de fundo muta
ciclosmutaback <- 800
# a cada quantos ciclos exibe o ambiente
ciclosshow <- 1

Falcão e Pomba

Modificado de
https://blueridgecountry.com/blogging/behind-brc/birds-of-the-blue-ridge-red-tailed-hawk/
https://www.spirit-animals.com/dove-symbolism/

Este é o modelo mais simples, e que será mais detalhado adiante, sobre evolução social.

“PREFACE

Social evolution occurs when there is a tension between conflict and cooperation. The earliest replicating molecules inevitably competed with their neighbors for essential resources. They also shared a common interest in using local resources efficiently; otherwise, more prudent cartels would eventually drive overly competitive groups out of business. The conflicts and shared reproductive interests among cells within a complex organism, or among members of a honey bee colony, also qualify as social phenomena.”
Steven A. Frank (1998)
https://press.princeton.edu/books/paperback/9780691059341/foundations-of-social-evolution

O nome do jogo é uma alegoria. Este modelo não é sobre a competição entre duas espécies, mas a descrição de dois comportamentos na disputa por recursos comuns:

  • Hawk (\(H\), falcão) utiliza uma estratégia agressiva, lutando pelo recurso quando encontra outro indivíduo.
  • Dove (\(D\), pomba) utiliza uma estratégia pacífica, dividindo o recurso com outra pomba ou abandonando o recurso, sem lutar, quando encontra um falcão.

Uma forma de descrever os três tipos de encontro (díades \(HH\), \(HD\) ou \(DH\) e \(DD\)) é montar uma tabela de recompensas. O recurso em disputa em cada encontro tem valor \(v\); quando existe luta (a qual só ocorre em \(HH\)), o perdedor tem custo \(c\):


H
D
H \({v-c} \over {2}\)
\(v\)
D
\(0\)
\({v} \over {2}\)

Este tipo de tabela descreve os ganhos e custos considerando como focal o agente que aparece nas linhas. Lê-se:

  • na primeira linha, \(H\) é o focal.
    • na primeira coluna encontra outro \(H\). A díade \(HH\) sempre luta e, como ambos são iguais, em metade das vezes o \(H\) focal vence e recebe \(v \over 2\); na outra metade das vezes perde e tem custo, arcando com \(-{c \over 2}\). Seu ganho líquido, portanto, é o que aparece na tabela.
    • na segunda coluna encontra um \(D\). O indivíduo do tipo \(D\) não disputa e, portanto, o \(H\) focal recebe \(v\) sem custo algum.
  • na segunda linha, \(D\) é o focal.
    • na primeira coluna encontra \(H\). Como, neste encontro, \(D\) focal abandona o recurso, nada recebe. Também não há custo, pois \(D\) nunca luta.
    • na segunda coluna encontra outro \(D\). Indivíduos desta estratégia nunca lutam e há duas interpretações possíveis, ambas resultando em \(v \over 2\): a díade \(DD\) divide o recurso ou, com 50% de probabilidade, um ou outro abandona o recurso.

A questão é saber qual das estratégias é mais vantajosa, i.e., com muitas interações, qual delas tem maior ganho líquido ao conseguir mais recursos evitando os custos.

Uma população mista de \(H\) e \(D\), ao longo do tempo, evolui para algum tipo de equilíbrio ou alguma das estratégias é extinta?

Suponha que \(v\) e \(c\) sejam números positivos. Caso \(v < c\), como por exemplo \(v=2\) e \(c=3\), a tabela oferece:


H
D
H \(-{{1} \over {2}}\)
\(2\)
D
\(0\)
\({{2} \over {2}} = 1\)

Esta tabela dá a impressão de que \(H\) ganha, em média, \(1.5\) enquanto \(D\) ganha 1; portanto, com o tempo, \(H\) deve sobreviver e \(D\) deve desaparecer. No entanto, as coisas são mais complexas: isto só é verdade se as proporções de \(H\) e \(D\) em uma população forem iguais. Se houver excesso de \(H\)s, tornando as díades \(HH\) muito frequentes, os \(H\) enfrentarão custos com maior frequência e perderão \(-{1 \over 2}\) repetidamente e, raramente encontrarão \(D\) de onde poderão receber \(2\).

No caso oposto, por exemplo com \(v>c\), (e.g., \(v=3\) e \(c=2\)) a tabela resultaria em


H
D
H \({1} \over {2}\)
\(3\)
D
\(0\)
\({3} \over {2}\)

Neste caso, \(H\) sempre tem ganho líquido positivo e, portanto, é fácil perceber que terão vantagem em uma população com qualquer proporção de \(H\) e \(D\), além de terem ganhos maiores do que os indivíduos \(D\). Por outro lado, os ganhos de \(D\) também são sempre positivos e é difícil saber, somente por esta tabela, se a população evoluirá para um equilíbrio com um misto de \(H\) e \(D\) ou se a estratégia \(D\) será extinta.

Como este é um modelo simples, existe solução analítica, que não abordaremos agora (será vista em outro capítulo). A solução analítica tem algumas vantagens, especialmente porque provê uma solução demonstrável, utiliza uma linguagem de fácil comunicação e, após ter sido encontrada a solução, oferece o resultado imediatamente.

Em geral, nas soluções analíticas, buscando simplificar o sistema, as subpopulações são tratadas como proporções e a população total é 1 (100%). Complicações ambientais são abstraídas: a população é infinita, todos os indivíduos contatam outros somente dependendo de suas proporções e sem restrições causadas pela distância (panmixia), os indivíduos não têm localização espacial, pois o próprio ambiente não tem dimensões e é visto como infinito; em suma, todas as mudanças de estado dos indivíduos dependem de funções matemáticas pré-concebidas que podem utilizar quaisquer dados, ainda que não reflitam elementos que um organismo poderia acessar.

A principal desvantagem da solução analítica, no entanto, é que mostrará o desfecho final (condições para equilíbrio ou extinção de alguma das estratégias) mas não lhe trará percepções sobre as trajetórias que estas subpopulações, \(H\) e \(D\), seguirão ao longo do tempo. Além disto, como já vimos, só é possível em sistemas relativamente simples.

Uma alternativa é desenvolver modelos dinâmicos.

Simulação com agentes

Usando estratégia similar ao modelo de seleção dos indivíduos de acordo com a cor de fundo, podemos criar uma arena na qual indivíduos \(H\) e \(D\) se movimentem. Como este tipo de modelo cria uma imitação simplificada do sistema que procura representar, diversos problemas precisam ser resolvidos. A arena é finita e os indivíduos, também finitos e geralmente em número relativamente pequeno, são representados nela e adquirem, inevitavelmente, certas configurações espaciais que podem distorcer os resultados em comparação com a solução analítica: há efeitos de proximidade e de bordas que complicam a solução do problema.

Ainda assim, o modelo deve incorporar os elementos mais essenciais que atendam as premissas do problema a ser resolvido. São elas:

  • os valores de \(v\) e \(c\) são escolhidos no início da simulação e permanecem constantes.
  • o ambiente é uma arena bidimensional; podemos minimizar efeitos de borda causados pela finitude da arena utilizando condições periódicas de contorno.
  • os indivíduos colocados na arena têm somente um fenótipo, \(H\) ou \(D\); neste modelo os indivíduos são haplóides; genótipo e fenótipo coincidem.
  • a simulação evolui em ciclos (passos discretos); em cada ciclo:
    • uma quantidade de recursos é distribuída no ambiente para que sejam disputados pelas díades (alimento).
    • todos os indivíduos se movem, aleatoriamente, em uma direção qualquer, ocupando uma posição que dista \(\pm~\text{shaking}\) nas direções horizontais (\(x\)) e verticais (\(y\)).
    • quando dois indivíduos distam do recurso por uma distância igual ou menor que um dado \(d\), constante e escolhido antes da simulação iniciar, forma-se a díade.
    • a disputa pelo recurso é computada para cada díade, alterando o estado alimentar dos indivíduos envolvidos.
    • o alimento restante, que não foi localizado por uma díade, pode ser consumido por indivíduos que, isolados, não participaram de uma díade.
    • quanto melhor o estado alimentar de cada indivíduo, maior a probabilidade deste gerar um descendente e melhor é seu estado alimentar inicial (nascimento):
      • a reprodução é assexuada, gerando-se um clone do indivíduo parental.
      • a mutação pode ocorrer para o clone, com igual probabilidade de \(H\) para \(D\) ou de \(D\) para \(H\).
    • se o estado alimentar de um indivíduo chegar a zero, este é retirado do ambiente (morte por fome).
    • indivíduos podem ser retirados também por dada probabilidade (mortalidade extrínseca).

A população tem que ser finita, mas não precisa ter tamanho fixo. Por isso, associamos a reprodução e a sobrevivência do indivíduo aos recursos que adquirir. Vários outros cuidados podem ser levados em conta: como o problema original não considera efeitos da dispersão geográfica e supõe que os encontros entre \(H\) e \(D\) dependem somente de suas respectivas proporções, \(\text{shaking}\) deve ser considerável em relação às dimensões da arena para que as subpopulações de \(H\) e \(D\) misturem-se bastante; \(d\) precisa ser relativamente pequeno em relação às dimensões da arena para que díades não sejam formadas entre indivíduos distantes entre si; para evitar efeitos de ordem, cada indivíduo participa somente de uma díade em cada ciclo e a ordem que a simulação segue para a formação das díades precisa ser aleatorizada a cada ciclo.

Embora não sejam parte da formulação analítica, duas outras implementações foram feitas:

  • Na solução analítica, recursos são adquiridos quando disputados pelas díades. Caso somente isto fosse feito, criaríamos uma situação em que cada indivíduo depende da presença de outro para se alimentar, o que não reflete a biologia. Situação ainda mais extrema pode ser ilustrada com a tabela de recompensas quando \(v=2\) e \(c=3\), imaginando-se uma população composta exclusivamente por falcões: esta população sempre iria à extinção porque cada falcão somente se alimentaria na presença de outro falcão, em média perdendo alimento em cada confronto. Ao contrário, o que se pretende modelar aqui é o ganho ou perda diferencial vindo das disputas quando díades são formadas, mas deve existir uma fonte independente. Isto foi alcançado fazendo com que o alimento não disputado, caso esteja ao alcance de algum indivíduos, seja também consumido.

  • Este consumo cria o problema oposto. Como alimento é fornecido, adquirido pelos indivíduos e passado aos descendentes sem que exista consumo ou perda, estas unidades alimentares serão continuamente acumuladas pela população. A única forma de um indivíduo ser retirado deste ambiente é se não conseguir adquirir alimento, o que não basta, pois o indivíduo nasce com uma quantidade inicial de recursos, não tem perda ou consumo, não envelhece e somente utiliza de sua reserva quando tem excedente (são, em outras palavras, eternos acumuladores de alimento). Como resultado, a população sairá do controle, crescendo continuamente. É preciso, portanto, que exista uma saída do alimento deste ambiente. Duas formas simples para fazer isto são: (1) debitar uma certa quantidade de todos os indivíduos a cada ciclo (metabolismo, fazendo o alimento total da população reduzir-se) ou (2) ter uma probabilidade para remover o indivíduo a cada ciclo (mortalidade extrínseca, removendo o alimento acumulado junto com o indivíduo que o porta). Os dois métodos estão implementados neste modelo e podem ser usados à sua escolha.

Um protótipo deste modelo minimalista está implementado em eiras.hawkdove.R. Ao terminar, este programa deixa toda a trajetória registrada em hawkdove_res.xlsx.

Simulação numérica

Outra forma de modelagem é a inclusão das equações necessárias em um programa. Pode-se usar sistemas prontos (como por exemplo o Wolfram Mathematica) ou desenvolver um programa dedicado ao problema que quer resolver. Para esta disciplina desenvolvemos o eiras.animalconflict.R. Este Rscript lê uma planilha, permitindo a exploração de vários problemas diferentes, dos quais “Hawk & Dove” é o mais simples.


Abordaremos problemas mais complexos em capítulos adiante, quando uma terceira estratégia será incluída e este programa gerará gráficos ternários.

O jogo com \(v=2\) e \(c=3\) utiliza a configuração disponível em HawkDove23.xlsx. O programa automaticamente explora, iniciando cada simulação com diferentes proporções de Hawk e Dove (indicadas pelos círculos cheios) e indica com setas a direção para a qual as proporções de modificam.

O programa mostra que existe um ponto de equilíbrio intermediário entre Hawk e Dove, para o qual as setas convergem, com um diagrama de fase:

e com as trajetórias percorridas:

Para \(v=3\) e \(c=2\), configurada em HawkDove32.xlsx só os Hawks permanecem:

As imagens acima foram geradas com o próprio Rscript, que guarda três arquivos com o mesmo nome da planilha de configuração e os seguintes sufixos:

  • “nome_”results.xlsx contém duas abas, reproduzindo a configuração utilizada e as trajetórias das subpopulações ao longo do tempo;
  • “nome_”results_tern.png reproduz os diagramas de fase.
  • “nome”_results_traj.png oferece a mesma informação mostrando a trajetória ao longo dos passos da simulação (equivale ao tempo, abstratamente).

Note que, aqui, não se computa o tamanho das subpopulações, mas apenas suas proporções. Este tipo de implementação é mais próxima da solução analítica do que da simulação com agentes.

Comparação da simulação por agente e numérica

Usando o arquivo hawkdove_res.xlsx, podemos observar toda a evolução da simulação por agente no caso em que o ambiente começa com 100% de pombas (\(D\)). A partir do ciclo 2000 aparecem falcões (\(H\)) que invadem o ambiente, reduzem o tamanho da população total e terminam por superar, em número, a população original. Três repetições da simulação com as mesmas condições iniciais mostram:

A soluçao da simulação numérica, porém, é dada em proporção de cada um dos genótipos e foi armazenada em HawkDove23_results.xlsx. Para podermos verificar se ambas as soluções são aproximadamente iguais, podemos comparar esta solução:

com a da simulação por agente, convertidas as mesmas três repetições em proporção:

Ambas são qualitativamente iguais, diferindo na escala do tempo porque a da solução numérica é uma abstração. As linhas horizontais pontilhadas correspondem a \(1 \over 3\) e \(2 \over 3\) que, como será visto em capítulo futuro, correspondem à solução analítica.

Outras aplicações de modelos

Morfologia

Silveira PSP, Massad E (1998)
Modeling and Simulating Morphological Evolution in an Artificial Life Environment.
Computers and Biomedical Research 31(2):1-17 https://doi.org/10.1006/cbmr.1997.1464

Músculo liso

Silveira PSP, Butler JP, Fredberg JJ (2005)
Length adaptation of airway smooth muscle: a stochastic model of cytoskeletal dynamics.
Journal of Applied Physiology 99:2087-2098 https://doi.org/10.1152/japplphysiol.00159.2005

Silveira PSP, Fredberg JJ (2005)
Smooth muscle length adaptation and actin filament length: a network model of the cytoskeletal dysregulation.
Canadian Journal of Physiology and Pharmacology 83(10):923-931. https://doi.org/10.1139/y05-092

Força

Adaptação ao comprimento (fisiologia)

Simulação:

Velocidade

Incremento linear com o comprimento (fisiologia)

Simulação:

Complacência

Incremento linear com o comprimento (fisiologia)

Simulação:

Percolação

Silveira PSP, Alencar AM, Majumdar A, Lemos M, Fredberg JJ, Suki B (2009)
Percolation in a network with long-range connections: Implications for cytoskeletal structure and function.
Physica A 388:2087-1521-1526 http://dx.doi.org/10.1016/j.physa.2008.12.024

Comparação com células vivas

Epidemicro

Este programa foi desenvolvido e instalado no museu do Butantã a pedido do Professor Isaías Raw, para rodar em Ruindows.

Você pode experimentá-lo pegando uma cópia. Faça do download de epidemicro.zip, descompacte e execute epidemicro.exe.

Formigas

Exemplo em vídeo: get10inv0drop10inv1b8_2.mp4

\[~\]