invisible(Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8"))
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))
options(warn=-1)
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
suppressMessages(library(baryplot, warn.conflicts=FALSE))
suppressMessages(library(plotly, warn.conflicts=FALSE))
RPubs
baryplot
do R por Richard McElreathbaryplot
baryplot
usando os comandos:options(repos=c(getOption("repos"), baryplot="http://xcelab.net/R"))
install.packages("baryplot", type="source")
mygame.R
O script mygame.R
permite executar jogos com duas ou
três estratégias. Os jogos são configurados em arquivo-texto (.txt)
preparadas para este script.
Para gerar o gráfico do jogo H-D, os passos são os seguintes:
Distribuicao_Cap2_ConflitoAnimal.Rproj
;Source
o script
mygame.R
;mygame.R
mygame.R
usando o comando:source("mygame.R")
mygame.R
com:mygame ("Nome_do_jogo", parametros, options="lista_de_opcoes")
Caso tenha dúvidas, o comando mygame()
exibe a
sintaxe.
#################################################
# mygame v 4.01 #
# #
# (c) J.O.Siqueira, P.S.P.Silveira, 2018 Jul 03 #
# applying baryplot by Richard McElreath #
#################################################
Sintax:
mygame (game_name, lines, w0, {more}, options="list")
game_name (a filename with any game definition (see "Hawk & Dove.txt")
lines: any value greater than 0 (default = 100)
w0: baseline fitness (default = 5)
more: optional other variables, depending on game definition
options="color|gray|black,
arrows|no_arrows,
arrow_size=#.##,
dots|start_dot|end_dot|no_dots,
all_areas|corners|edges|borders|inner_area,
ternary|tridimensional"
Example:
mygame("Assessor",lines=150,xp=0.7,options="gray arrow_size=1.2")
... It runs assessor game, with game-specific variable xp
drawing 150 lines in gray with arrows increased by 20%
(see README_4_en.txt for details).
Errors:
Missing game name (see "Sintax", above).
Você pode fornecer os parâmetros pré-definidos ou omiti-los.
Parâmetros adicionais criados para um novo jogo precisam ser explicitamente declarados.
lines
: número de linhas/ trajetórias (default =
100)v
: valor do recurso (default = 2)c
: custo da luta (default = 3)w0
: aptidão basal (default = 5)d
: custo para display (default = 0)Estas opções alteram o layout e as regiões a serem exploradas no diagrama:
Cor: use color
(black, gray…) para
mudar a cor (default = black)
Setas: use arrows
ou
no_arrows
(default = arrows)
Tamanho da seta: mude com
arrow_size = #
(default = 1)
Marcadores: use um dos marcadores pré-definidos:
dots
: é o default; marcador de início vazado e de fim
sólido em cada linha.start_dots
: apenas o marcador de início em cada
linha.end_dots
: apenas o marcador de fim em cada linha.no_dots
: sem marcadores.Áreas a serem exploradas:
all_areas
: é o default; explora todas as áreas
abaixo.corners
: início das linhas sobre os vértices.edges
: início das linhas sobre as arestas e próximo aos
vértices.borders
: início das linhas na área interna próxima às
arestas.inner_area
: início das linhas na área interna e longe
das arestas.Apresentação: define o tipo de gráfico:
ternary
: gráfico plano (default)tridimensional
: gráfico 3D.# Hawk & dove
# individuals dispute resources (v)
# Hawk against hawk ... from a fight, one wins v and the other loses c
# Dove finds dove ... they share the resouce
# Hawk against dove ... hawk gets v without cost (c); dove gets nothing
#
#
# (p) (r)
# H D
# H (v-c)/2 v
# D 0 v/2
#
# INSTRUCTIONS
# Write equations w1 (right corner = hawk), w2 (top corner) and w3 (left corner = dove)
# Remove unnecessary parameters
#
# Check function ps.game(): add parameters at the end of the list with default values (using =)
# End with ", ...)"
# Do not remove w0 from equations
#
# Edit ps.config() to inform the number of corners (2 or 3 kinds of players)
# Give the names for the corners in order: left, right and top corner names
#
# Edit ps.comment() if you intend to give additional information to users
#
# Save this definition with no extension or extension ".txt"
#
# Call with:
# > mygame("Gamename", parameters, options)
ps.game <- function (p, q, r, w0=5, v=2, c=3, rW=0, ...)
{
# right
w1 <- w0 + (rW+(1-rW)*p)*(v-c)/2 + ((rW*0)+(1-rW)*r)*v
# top: empty when numcorners = 2
w2 <- w0 + 0
# left
w3 <- w0 + (rW*0+(1-rW)*p)*0 + (rW+(1-rW)*r)*v/2
c(w1, w2, w3)
}
ps.config <- function ()
{
# numcorners, labels: left right top
c(2,"Dove","Hawk","")
}
# add your comments (optional)
ps.comment <- function ()
{
cat
("
Hawk & Dove
(p) (r)
H D
H (v-c)/2 v
D 0 v/2
v=2, c=3, d=0
Hawk & Dove
(p) (r)
H D
H -1/2 2
D 0 1
");
}
Se \(W(H) = W(D)\), então, em :
Reduce[{w_0+p(v-c)/2+(1-p)v=w_0+(1-p)(v/2),0<=p<=1,c>0,v>0},p]
Se \(v < c\), \(c>0\) e \(v>0\), tem-se:
\[\hat{p}=\dfrac{v}{c}\]
“A ternary plot, ternary graph, triangle plot, simplex plot, Gibbs triangle or de Finetti diagram is a barycentric plot on three variables which sum to a constant. It graphically depicts the ratios of the three variables as positions in an equilateral triangle. It is used in physical chemistry, petrology, mineralogy, metallurgy, and other physical sciences to show the compositions of systems composed of three species. In population genetics, it is often called a de Finetti diagram. In game theory, it is often called a simplex plot. Ternary plots are tools for analyzing compositional data in the three-dimensional case.”
Retaliator: adota estratégia Dove se o oponente adota Dove ou Retaliator; adota Hawk se o outro adota Hawk.
baryplot
baryplot::bary.init() # Plota o triangulo equilátero
baryplot::bary.labels("Hawk","Retaliator","Dove") # Rotula os vertices
# Comando que plota a trajetória do ponto com 1/3 de cada estratégia
baryplot::bary.plotsim(1/3, 1/3, thegame=bary.game.hdr, arrow=TRUE)
[1] 3.333333e-01 3.333333e-01 6.665111e-01 1.366013e-05
function (p, q, r, v = 2, c = 3, w0 = 5)
{
w1 <- (p + q) * (v - c)/2 + r * v + w0
w2 <- p * (v - c)/2 + (1 - p) * v/2 + w0
w3 <- (1 - p) * v/2 + w0
c(w1, w2, w3)
}
<bytecode: 0x000001f7af1b4400>
<environment: namespace:baryplot>
baryplot::bary.init() # Plota o triangulo equilátero
baryplot::bary.labels("Hawk","Retaliator","Dove") # Rotula os vertices
# A execução desse comando exibe o conteúdo de sua funcao
baryplot::bary.plotsim(0, 0, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(1, 0, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(0, 1, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(2/3, 0, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(0, 2/5, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(1/100, 0, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(99/100, 0, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(1/3, 1/3, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(8/10, 1/10, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(1/10, 1/10, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(3/10, 5/10, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(4.5/10, 4.5/10, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(0, 0.3, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(0, 0.7, thegame=bary.game.hdr, arrow=TRUE)
baryplot::bary.plotsim(99/100, 1/100, thegame=bary.game.hdr, arrow=TRUE)
[1] 0 0 0 0
[1] 1 0 1 0
[1] 0 1 0 1
[1] 0.6666667 0.0000000 0.6666667 0.0000000
[1] 0.0 0.4 0.0 0.4
[1] 0.0100000 0.0000000 0.6665174 0.0000000
[1] 0.9900000 0.0000000 0.6668129 0.0000000
[1] 3.333333e-01 3.333333e-01 6.665111e-01 1.366013e-05
[1] 8.000000e-01 1.000000e-01 6.664999e-01 1.904197e-05
[1] 1.000000e-01 1.000000e-01 6.665058e-01 1.139443e-05
[1] 0.3000000000 0.5000000000 0.0000704231 0.6524554399
[1] 4.500000e-01 4.500000e-01 4.549621e-05 7.506903e-01
[1] 0.0 0.3 0.0 0.3
[1] 0.0 0.7 0.0 0.7
[1] 9.900000e-01 1.000000e-02 2.252294e-05 9.151639e-01
mygame.R
# Retaliator
# Retaliator plays Dove unless its opponent plays Hawk,
# in which case it switches to Hawk
# When the Retaliator sees a “fight” signal, it fights back,
# otherwise it displays just as a Dove. Thus, when a retaliator
# finds another retaliator, both behave as Doves
#
# Implemented by Paulo Silveira & Jose Siqueira, 2018
#
# INSTRUCTIONS
# Write equations w1 (right corner = hawk), w2 (top corner) and w3 (left corner = dove)
# Remove unnecessary parameters
# Add parameters at the end of the list with default value (using =)
# End with ", ...)"
# Do not remove w0 from equations
#
# Edit ps.config to inform the number of corners (2 or 3 kinds of players)
# Give the names for the corners in order: left, right and top corner names
#
# Save this definition with no extension or extension (e.g., "Gamename.txt"
#
# Call with:
# > mygame("Gamename", parameters, options)
# (p) (q) (r)
# H R D
# H V(H|H) = (v-c)/2 V(H|R) = V(H|H) V(H|D) = v
# R V(R|H) = V(H|H) V(R|R) = V(D|D) V(R|D) = V(D|D)
# D V(D|H) = 0 V(D|R) = V(D|D) V(D|D) = v/2
ps.game <- function (p, q, r, w0=5, v=2, c=3, ...)
{
# hawk
w1 <- w0 + p*(v-c)/2 + q*(v-c)/2 + r*v
# retaliator
w2 <- w0 + p*(v-c)/2 + q*(v/2) + r*v/2
# dove
w3 <- w0 + p*0 + q*v/2 + r*v/2
c(w1, w2, w3)
}
ps.config <- function ()
{
# numcorners, labels: left right top
c(3,"Dove","Hawk","Retaliator")
}
# add your comments (optional)
ps.comment <- function ()
{
cat
("
Retaliator
(p) (q) (r)
H R D
H V(H|H) = (v-c)/2 V(H|R) = V(H|H) V(H|D) = v
R V(R|H) = V(H|H) V(R|R) = V(D|D) V(R|D) = V(D|D)
D V(D|H) = 0 V(D|R) = V(D|D) V(D|D) = v/2
Default condition:
v = 2 (resource value)
c = 3 (cost for fight)
");
}
Aptidão de H:
\[W(H)=w_{0} + (p+q) \;\dfrac{v-c}{2} + (1-p-q) v = \\ =w_{0} + v-\dfrac{(p+q)(v+c)}{2}\]
Aptidão de D:
\[W(D)=w_{0} + p \;0 + q \dfrac{v}{2} + (1-p-q) \dfrac{v}{2}=\\ =w_{0} + (1-p) \dfrac{v}{2}\]
Aptidão de R:
\[W(R)=w_{0} + p \dfrac{v-c}{2} + q \dfrac{v}{2} + (1-p-q) \dfrac{v}{2}\\ =w_{0} + p \dfrac{v-c}{2} + (1-p) \dfrac{v}{2}=\\ =\dfrac{v-pc}{2}\]
Note que quando \(p=0\), i.e., a população é exclusivamente composta por Dove e Retaliator, as aptidões das duas estratégias são iguais.
Aptidões de D e R na ausência de H:
\[W(D)=W(R)=w_{0} + q \dfrac{v}{2} + (1-q) \dfrac{v}{2}=\\ =w_{0} + \dfrac{v}{2}\]
Aptidão de H mutante raro:
\[W(H \; \text{raro})=w_{0} + v-\dfrac{(p+q)(v+c)}{2}=\\ =w_{0} + v-q\dfrac{v+c}{2}\]
\(W(D)=W(H \; \text{raro})\) se:
\[w_{0} + \dfrac{v}{2}= w_{0} + v-q\dfrac{v+c}{2}\]
Solucionando em :
Solve for q: v/2 = v - q (v+c)/2, v>0, c>0
Tem-se:
\[\hat{q}=\dfrac{v}{v+c}\]
Origem: The Theory of Games and Economic Behavior de John von Neumann e Oskar Morgenstern em 1944.
Grandes avanços com John Nash, Reinhard Selten e John Harsanyi. Os três dividiram o prêmio Nobel de Economia em 1994.
|
Situações estratégicas: situações nas quais os resultados que afetam você depende das suas ações assim como das ações dos outros.
A teoria dos jogos pressupõe que os jogadores sejam racionais no sentido de serem sempre maximizadores de ganhos (e.g.: utilidade).
A Teoria dos Jogos evolucionista (TJE) assume que um jogador é pré-programado com uma estratégia herdada, pura ou mista, e que essa estratégia é fixa para a vida toda. Se as estratégias mais bem sucedidas puderem ser traduzidas em sucesso reprodutivo, isso implica que estas produzem mais descendentes; já as mal sucedidas tendem a desaparecer.
O que acontecerá após muitas gerações?
O processo evolucionista selecionará o comportamento que parecerá aos olhos de um observador como sendo resultado de interações entre jogadores racionais! Geralmente encontramos quase-racionalidade em modelos darwinistas de adaptação (Hammerstein, 2001).
Na teoria dos jogos evolucionista procuramos pela estratégia que é favorecida pela seleção natural.
Para os jogos que serão apresentados, procuraremos por uma estratégia que seja estável frente às forças da seleção natural; chamaremos essa estratégia de estratégia evolutivamente estável (EEE) (Maynard Smith e Price, 1973).
Recursos são escassos; a escassez gera conflitos (da ameaça à luta), i.e., disputas pelos recursos, eventualmente físicas (abordagem malthusiana).
As díades de coespecíficos adotam o confronto direto para ter acesso ao recurso limitado (agressividade entre coespecíficos inata de Lorenz).
Dois componentes do comportamento:
Em 1973 John Maynard Smith e George Price explicaram o motivo pelo qual algumas vezes a seleção favorece a prudência. Este modelo é chamado de jogo Falcão-Pomba.
Entender isso é importante já que a característica-chave do comportamento social é que tipicamente a aptidão individual depende do comportamento dos outros.
Se a aptidão da estratégia dependente da frequência relativa (média ponderada da aptidão das interações sociais das estratégias pelas respectivas frequências relativas), é necessário usar a Teoria dos Jogos Evolucionista para descobrir a melhor estratégia.
Analisando um conflito animal sob uma perspectiva evolucionista poderíamos concluir que aos organismos vencedores caberiam todos ou os melhores recursos (direito de dominância, parceiros, territórios e outras vantagens).
Isso refletir-se-ia na transmissão de genes para as futuras gerações, ou seja, esses organismos tenderiam a deixar mais descendentes que os outros.
Consequentemente, seria de esperar que pelo processo de seleção natural organismos com as armas mais letais ou que se utilizam de estratégias mais letais fossem selecionados.
Como vimos anteriormente, na natureza, ao invés de uma guerra total entre organismos coespecíficos, os conflitos observados são por meio de uma guerra limitada envolvendo armas ineficientes ou táticas ritualizadas que raramente causam sérios danos ou ferimentos para os envolvidos no conflito.
Como explicar a ausência de uma guerra total entre organismos da mesma espécie?
Existe falha no raciocínio evolutivo?
A tentativa de explicação, até a década de 70, envolvia a ideia de seleção de grupo pela qual a seleção atuava sobre comportamentos que beneficiam o grupo ao invés dos organismos, i.e., uma guerra limitada beneficiaria o grupo.
Em 1973, John Maynard Smith e George Price no seu artigo The logic of animal conflict publicado na Nature, explicou porque uma guerra limitada tendia a beneficiar o organismo (seleção sobre o organismo) e, consequentemente, a espécie.
|
Para encontrarmos a estratégia evolutivamente estável (EEE), num jogo evolucionista, dispomos de dois métodos principais:
A modelagem matemática envolve expressar as principais estratégias envolvidas de forma matematicamente simples e com base nelas prover provas, predições e obter resultados que podem ser contra-intuitivos.
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.”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 recurso comum.
Suposições:
Existem apenas duas estratégias no ambiente que disputam um recurso importante
Quando os dois organismos da díade têm a mesma estratégia, as probabilidades são iguais, 50%, de vencer a disputa pelo recurso importante (vitórias aleatórias).
Quando os dois organismos da díade têm estratégias diferentes, o recurso fica integralmente com H, pois D não o disputa.
Para responder esta pergunta precisamos obter um expressão da recompensa da interação social diádica entre estratégias.
Vamos indicar esta função da recompensa assim:
\[V(X|Y)\]
É a recompensa (payoff) da estratégia focal \(X\) devido à interação com a estratégia \(Y\). Por exemplo, no caso de Falcão (H) e Pomba (D) podemos montar a seguinte matriz de recompensas:
|
H |
D |
H |
\(V(H|H)\) |
\(V(H|D)\) |
D |
\(V(D|H)\) |
\(V(D|D)\) |
As interações diádicas possíveis e suas respectivas recompensas são:
\[V(H|H) = \dfrac{v-c}{2} \\ V(H|D) = v \\ V(D|H) = 0 \\ V(D|D) = \dfrac{v}{2}\]
que é transcrito para uma matriz de recompensas como:
|
\(\small{p}\) H |
\(\small{1-p}\) D |
H |
\({v-c} \over {2}\) |
\(v\) |
D |
\(0\) |
\({v} \over {2}\) |
Adicionamos, no topo da matriz de recompensas, as frequências relativas das estratégias, respectivamente \(p\) (tomando-se H como referência) e \(1-p\) (para D).
Este tipo de tabela descreve os ganhos e custos considerando como focal a estratégia que aparece nas linhas. Lê-se:
Na primeira linha, H é a focal.
Na segunda linha, D é a focal.
Os valores das caselas são as variações da aptidão média da estratégia focal que se encontra na linha ao interagir com aquela que se encontra na coluna. |
Por último, podemos calcular a aptidão (\(W(H)\) e \(W(D)\)) das estratégias Falcão (H) e Pomba (D):
\[ W(H) = w_0 + pV(H|H) + (1-p)V(H|D) \\ W(H) = w_0 + p\dfrac{v-c}{2} + (1-p)v \\ ~\\ W(D) = w_0 + pV(D|H) + (1-p)V(D|D) \\ W(D) = w_0 + (1-p)\dfrac{v}{2} \\ \]
O objetivo é avaliar como se comporta a variável de estado do modelo, \(p\). Perceba que as expressões \(W(H)\) e \(W(D)\) são semelhantes às do Box 1.2 (p. 17) no modelo de seleção natural por viabilidade do capítulo 1. Então, da mesma forma, obtemos a equação de diferença do replicador:
\[\Delta p=p(1-p)\dfrac{W(H)-W(D)}{\bar{w}}\]
sendo que
\[\bar{w} = {pW(H)+(1-p)W(D)}\]
A equação recursiva correspondente é
\[p'' = p\dfrac{W(H)}{\bar{w}}\]
Inicialmente, utilizando WolframAlpha, podemos encontrar os valores de \(p\) candidatos a pontos de equilíbrio a partir do seguinte comando:
p (1-p) (H - D)/(p H + (1-p) D) /. H = w + p (v-c)/2 + (1-p) v, D=w + (1-p)(v/2)
Para evitar confusões com o processamento do WolframAlpha, notamos
\(W(H)\) como H
, \(W(D)\) como D
e \(w_0\) como w
.
O sistema devolve formas de escrever esta expressão, e podemos escolher uma delas, por exemplo a que parece visualmente mais simples:
((-1 + p) p (c p - v))/(-c p^2 + v + 2 w)
Podemos utilizar esta expressão para igualá-la a zero:
Se \(v<c\), então:
solve for p: ((-1 + p) p (c p - v))/(-c p^2 + v + 2 w)=0, v>0, c>0, w>0, v<c, w>c, 0<=p<=1
O resultado é:
Se \(v>c\), então:
solve for p: ((-1 + p) p (c p - v))/(-c p^2 + v + 2 w)=0, v>0, c>0, w>0, v>c, w>c, 0<=p<=1
O resultado é:
Agora temos dois ou três possíveis valores de equilíbrio dependendo da relação entre \(v\) e \(c\).
Assumimos que \(v<c\) para a análise de equilíbrio realizada a seguir.
Para sabermos se o ponto de equilíbrio é estável, precisamos computar a derivada da função recursiva no ponto de equilíbrio.
Iniciamos substituindo \(W(H)\) e \(W(D)\) em termos de \(p\), \(w_0\), \(v\) e \(c\):
p (H / (p H + (1-p) D)) /. H = w + p (v-c)/2 + (1-p) v, D = w + (1-p) (v/2)
O resultado é:
(p (p (c + v) - 2 (v + w)))/(c p^2 - v - 2 w)
Encontramos formas alternativas, e novamente escolhemos a que parece visualmente mais simples, solicitando sua devivada parcial em \(p\):
derivative (p (p (c + v) - 2 (v + w)))/(c p^2 - v - 2 w) in p
O resultado é:
(-2 ((-1 + p) v - w) (v + 2 w) + 2 c p ((-1 + p) v + (-2 + p)
w))/(-c p^2 + v + 2 w)^2
Da solução, escolhemos uma delas e solicitamos a substituição dos três pontos de equilíbrio encontrados acima
(-2 ((-1 + p) v - w) (v + 2 w) + 2 c p ((-1 + p) v + (-2 + p) w))/(-c p^2 + v + 2 w)^2 /. p=0
O resultado é:
1 + v/(v + 2 w)
(-2 ((-1 + p) v - w) (v + 2 w) + 2 c p ((-1 + p) v + (-2 + p) w))/(-c p^2 + v + 2 w)^2 /. p=1
O resultado é:
-(2 w)/(c - v - 2 w)
(-2 ((-1 + p) v - w) (v + 2 w) + 2 c p ((-1 + p) v + (-2 + p) w))/(-c p^2 + v + 2 w)^2 /. p=v/c
O resultado é:
(2 c w)/((c - v) v + 2 c w)
Temos, portanto, analiticamente, os valores das derivadas pontuais e, dependendo dos valores de \(w\), \(v\) e \(c\), poderemos verificar se \(\hat{p}\) é de equilíbrio estável.
Os valores de \(w_0\) devem sempre ser maiores que \(c\) para que as interações diádicas nunca resultem em aptidão negativa ou nula. Por simplificação, estabeleceremos \(w=5\).
\[{{dp''} \over {dp}} \rvert_{\hat{p}=0} = {{v \over {v + 2 w_0}}+1}\]
Substituindo w
por 5 e dando uma faixa para
v
entre 0 e 3 (não aparece c
nesta
derivada):
plot 1 + v/(v + 2 5) from v=0 to v=3 axes label “v” “d”
exibe:
O gráfico da superfície da derivada em \(\hat{p}=0\) é:
Mostrando que todos os valores das derivadas estão acima de 1 se \(w_{0}>0\) e, portanto, \(\hat{p}=0\) não é ponto de equilíbrio estável em nenhuma circunstância.
\[\dfrac{dp''}{dp} \rvert_{\hat{p}=1} = \dfrac{2w_0}{2w_0+v-c}\]
Neste caso, substituindo w
por 5 e dando uma faixa para
c
e v
entre 0 e 3 (com o cuidado de colocar
c
antes de v
, para que fiquem,
respectivamente, nos eixos das abscissas e ordenadas):
contour plot 2 5 / (2 5 + v - c) from c=0 to c=3 from v=0 to v=3 axes label “c” “v” plot legend
exibe:
Mostrando que todos os valores das derivadas estão entre -1 e 1 para os valores acima da diagonal, i.e., quando \(v>c\) e, portanto, somente nesta condição \(\hat{p}=1\) é ponto de equilíbrio estável.
\[\dfrac{dp''}{dp} \rvert_{\hat{p}=\frac{v}{c}} = \dfrac{2c w_0}{2cw_0-v(v-c)}\]
Com as mesmas condições anteriores:
exibe:
Mostrando que todos os valores das derivadas estão entre -1 e 1 para os valores abaixo da diagonal, i.e., quando \(v<c\) e, portanto, somente nesta condição \(\hat{p}={v \over c}\) é ponto de equilíbrio estável.
Podemos verificar os achados analíticos e observar os comportamentos dinâmicos utilizando o método gráfico. Vamos adotar esta condição com \(w_0=5\), \(v=2\) e \(c=3\):
A progressão no tempo está implementada em eiras.demoptHD.R, mostrando que há um ponto de equilíbrio intermediário entre Hawk e Dove:
O comportamento de \(\Delta p\) em relação a \(p\) (usando a proporção de H como referência) está implementado em eiras.demodeltapHD.R:
O comportamento de \(p''\) em função de \(p\) torna-se:
Com o método gráfico podemos verificar se algum dos pontos de equilíbrio é estável:
source("eiras.pduaslinhasHD_eq.R")
w0 <- 5
v <- 2
c <- 3
# caminho recursivo iniciando nos seguintes valores de p
pini <- c(0.1,0.9)
pdualinhasHD_eq(w0,v,c,pini)
Neste caso o método analítico prevê que somente \(\hat{p}=1\) (i.e., terminar com somente a estratégia H) é o ponto de equilíbrio. Vamos adotar esta condição com \(w_0=5\), \(v=4\) e \(c=3\):
A progressão no tempo é:
O comportamento de \(\Delta p\) em relação a \(p\) é:
O comportamento de \(p''\) em função de \(p\) torna-se:
E verificamos se algum dos pontos de equilíbrio é estável com:
source("eiras.pduaslinhasHD_eq.R")
w0 <- 5
v <- 4
c <- 3
# caminho recursivo iniciando nos seguintes valores de p
pini <- c(0.1,0.9)
pdualinhasHD_eq(w0,v,c,pini)
Em jogo simétrico, provavelmente existe algum equilíbrio com uma população fenotipicamente polimórfica.
A matriz de recompensas do jogo Falcão-Pomba que apresentamos é simétrica:
|
\(\small{p}\) H |
\(\small{1-p}\) D |
H |
\({v-c} \over {2}\); \({v-c} \over {2}\) |
\(v\); \(0\) |
D |
\(0\); \(v\) |
\({v} \over {2}\); \({v} \over {2}\) |
|
\(\small{p}\) escalate |
\(\small{1-p}\) display |
escalate |
\(vx-c(1-x)\); \(v(1-x)-cx\) |
\(v\); \(0\) |
display |
\(0\); \(v\) |
\({v} \over {2}\); \({v} \over {2}\) |
modificado de Smith & Parker, 1976
eiras.animalconflict.R
O script eiras.animalconflict.R
permite executar jogos
com duas ou três estratégias. Os jogos são configurados em planilhas
(.xlsx) preparadas para este script.
Para gerar o gráfico do jogo H-D, os passos são os seguintes:
Distribuicao_Cap2_ConflitoAnimal.Rproj
;Source
o script
eiras.animalconflict.R
;Welcome to Eira's animal conflict game Please, provide the name of a configuration file or press ESC to abort. Filename (xls or xlsx format):
game\H-D-R
e
pressionar Enter
;game/H-D-R_results.xlsx.png
;game/H-D-R_results.xlsx
.A estratégia evolutivamente estável (EEE) é, talvez, o mais conhecido e o mais não compreendido conceito na teoria evolucionista dos jogos.
Para \(v=3\) e \(c=2\), só existem Hawks:
Jogos com 3 estratégias pode ser expresso por um gráfico ternário.
A ternary plot, ternary graph, triangle plot, simplex plot, Gibbs triangle or de Finetti diagram is a barycentric plot on three variables which sum to a constant. It graphically depicts the ratios of the three variables as positions in an equilateral triangle. It is used in physical chemistry, petrology, mineralogy, metallurgy, and other physical sciences to show the compositions of systems composed of three species. In population genetics, it is often called a de Finetti diagram. In game theory, it is often called a simplex plot. Ternary plots are tools for analyzing compositional data in the three-dimensional case.
É fácil entender os eixos (com um modelo):
Basta imaginar estes três eixos para ter noção de qual a proporção relativa de cada uma das quantidades, considerando sempre que \(A+B+C=1\). |
Neste jogo a estratégia Retaliador (R) é comportar-se como seu oponente.
Quando a proporção inicial de R é maior que \(v \over c\) leva à extinção de H; caso contrário, R é extinto e converge para o equilíbrio entre H e D.
A tabela de recompensas é:Hawk | Dove | Retaliator | |
---|---|---|---|
Hawk | \(\Large{{v-c} \over {2}}\) | \(\Large{v}\) | \(\Large{{v-c} \over {2}}\) |
Dove | \(\Large{0}\) | \(\Large{{v} \over {2}}\) | \(\Large{{v} \over {2}}\) |
Retaliator | \(\Large{{v-c} \over {2}}\) | \(\Large{{v} \over {2}}\) | \(\Large{{v} \over {2}}\) |
Configuramos o jogo na planilha H-D-R.xlsx com os seguintes parâmetros:
e definimos a estratégia com:
Vamos reproduzir a figura 2.3 do livro utilizando o RScript eiras.animalconflict.R:
Seguiremos os pontos de origem nesta ordem:
Cada um dos jogos gera uma figura no formato .png e uma planilha contendo as proporções de Dove, Hawk e Retaliator com a terminação _results.xls. Colocando todas juntas em Retaliator_pt1a5_results.xlsx, podemos usar o RScript eiras.ternary.replot.R para replotar todas as trajetórias juntas:
source("eiras.ternary.replot.R")
filename <- "Retaliator_pt1a5_results.xlsx"
eiras.ternary.replot(filename)
Obtendo
Explorando o ambiente com eiras.animalconflict.R usando a planilha H-D-R.xlsx
Obtemos:
Por exemplo, para \(v=3\) e \(c=2\):
Por exemplo, para \(v=2\) e \(c=2\):
A estratégia HD é Hawk ou Dove com probabilidades H e \(1-h\).
A matriz de recompensas é:
# Continuous Hawk & Dove
# Continuous plays hawk for h time
#
# Implemented by Paulo Silveira & Jose Siqueira, 2018
#
# INSTRUCTIONS
# Write equations w1 (right corner = hawk), w2 (top corner) and w3 (left corner = dove)
# Remove unnecessary parameters
# Add parameters at the end of the list with default value (using =)
# End with ", ...)"
# Do not remove w0 from equations
#
# Edit ps.config to inform the number of corners (2 or 3 kinds of players)
# Give the names for the corners in order: left, right and top corner names
#
# Save this definition with no extension or extension ".txt"
#
# Call with:
# > mygame("Gamename", parameters, options)
ps.game <- function(p, q, r, v = 2, c = 3, w0 = 5, d = 0, h = 0.5, ...)
{
# hawk
w1 = w0 + p*((v-c)/2) + q*( (h*((v-c)/2)) + ((1-h)*(v-d/2)) ) + r*(v-d/2)
# continuous
w2 = w0 + p*( h*((v-c)/2) + (1-h)*(-d/2) ) + q*( h*h*((v-c)/2) + h*(1-h)*((v-d/2)+(-d/2)) + (1-h)*(1-h)*((v-d)/2) ) + r*( h*(v-d/2) + (1-h)*((v-d)/2) )
# dove
w3 = w0 + p*(-d/2) + q*( h*(-d/2)+(1-h)*((v-d)/2) ) + r*((v-d)/2)
c(w1, w2, w3)
}
ps.config <- function ()
{
# numcorners, labels: left right top
c(3,"Dove","Hawk","HawkDove continuous")
}
# add your comments (optional)
ps.comment <- function ()
{
cat
("
ps.game <- function(p, q, r, v = 2, c = 3, w0 = 5, d = 0, h = 0.5, ...)
{
# hawk
w1 = w0 + p*((v-c)/2) + q*( (h*((v-c)/2)) + ((1-h)*(v-d/2)) ) + r*(v-d/2)
# continuous
w2 = w0 + p*( h*((v-c)/2) + (1-h)*(-d/2) ) + q*( h*h*((v-c)/2) + h*(1-h)*((v-d/2)+(-d/2)) + (1-h)*(1-h)*((v-d)/2) ) + r*( h*(v-d/2) + (1-h)*((v-d)/2) )
# dove
w3 = w0 + p*(-d/2) + q*( h*(-d/2)+(1-h)*((v-d)/2) ) + r*((v-d)/2)
c(w1, w2, w3)
}
");
}
A estratégia burguês, B, é a do proprietário. Quando chega primeiro ao recurso, o defende como H; quando chega depois, reage como D.
A tabela de recompensas é:
Hawk | Dove | Bourgeois | |
---|---|---|---|
Hawk | \(\Large{{v-c}\over{2}}\) | \(\Large{v}\) | \(\Large{{3v - c} \over 4}\) |
Dove | \(\Large{0}\) | \(\Large{v \over 2}\) | \(\Large{{v \over 4}}\) |
Bourgeois | \(\Large{{v - c} \over 4}\) | \(\Large{{3v} \over 4}\) | \(\Large{v \over 2}\) |
Por exemplo, para \(v=2\) e \(c=3\) (H-D-B.xlsx):
Compare com o jogo H-D-R.
A exploração mostra:
Note que, próximo ao eixo DH, apareceram alguns pontos de equilíbrio.
O livro previu isto, mas suspeitamos que não detectou a dinâmica:
Por exemplo, para \(v=3\) e \(c=2\):
Na estratégia Avaliador (Assessor), o indivíduo atua como Falcão se é maior do que seu oponente; ele atua como Pomba se é menor; se dois Avaliadores se encontram, um deles se comporta como Pomba e outro como Falcão.
Os pareamentos são aleatórios.
As vitórias não são equiprováveis (assimetria).
Cada contendor da díade tem 50% de probabilidade de ser o maior (organismos são equiprovavelmente maiores e menores).
x é a probabilidade do maior contendor vencer a disputa entre Avaliador e Falcão; assumir que x > 0.5.
A tabela de recompensas é:
Hawk | Dove | Assessor | |
---|---|---|---|
Hawk | \(\Large{{v-c}\over{2}}\) | \(\Large{v}\) | \(\Large{v (1 - {x \over 2}) - c {x \over 2}}\) |
Dove | \(\Large{0}\) | \(\Large{v \over 2}\) | \(\Large{{v \over 4}}\) |
Assessor | \(\Large{v {x \over 2} + c ({x \over 2} - {1 \over 2})}\) | \(\Large{{3v \over 4} }\) | \(\Large{v \over 2}\) |
Por exemplo, para \(v=2\) e \(c=3\) (H-D-A.xlsx):
Observe que a única mudança em relação aos burgueses é o comportamento dos avaliadores entre si. Os burgueses (e os anarquistas), não importando quem chegava primeiro, comportavam-se como D (D|D). Os avaliadores podem ser agressivos entre si, o maior deles agindo como H e o outro como D (H|D ou D|H).
O resultado para \(v=2\), \(c=3\) e \(x=0.6\) é:
A teoria, para \(v<c\), pede \(x>0.5\).
Voltando ao avaliador com \(x>0.5\), mas alterando para \(v=1\) e \(c=2\), a posição das curvas se modifica mas o jogo é qualitativamente o mesmo que observamos com \(v=1\), \(c=2\) e \(x=0.6\).
Note que o ponto de equilíbrio entre D e H agora é \({v \over c} = {1 \over 2}\).
Nesta estratégia, os indivíduos S agem com falcão quando são menores. Por serem menores, sua probabilidade de vencer a luta é \(x<0.5\).
Como reagem contra a provocação, indivíduos S entre si e S com D regaem sem agressão, comportando-se como D.
Configurando H-D-S.xlsx obtivemos a tabela de recompensas:
Hawk | Dove | Short Temper | |
---|---|---|---|
Hawk | \(\Large{{v-c}\over{2}}\) | \(\Large{v}\) | \(\Large{v (1 - {x \over 2}) - c {x \over 2}}\) |
Dove | \(\Large{0}\) | \(\Large{v \over 2}\) | \(\Large{{v \over 2} }\) |
Short Temper | \(\Large{v {x \over 2} + c ({x \over 2} - {1 \over 2})}\) | \(\Large{{v \over 2} }\) | \(\Large{v \over 2}\) |
Portanto, a planilha é:
Resultando em: