Skip to content

Instantly share code, notes, and snippets.

@drvinceknight
Last active November 23, 2016 19:43
Show Gist options
  • Select an option

  • Save drvinceknight/9edce51db9879e8831e7d448b2c22fda to your computer and use it in GitHub Desktop.

Select an option

Save drvinceknight/9edce51db9879e8831e7d448b2c22fda to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import axelrod as axl\n",
"import pathlib \n",
"import math"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data\n",
"\n",
"The file `outcomes.csv` contains a full set of outcomes of match results between all strategies in the library."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"df = pd.read_csv(\"outcomes.csv\", header=None)\n",
"df.columns = [\"strategy 1\", \"strategy 2\", \"score 1\", \"score 2\", \"count\"]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>score 1</th>\n",
" <th>score 2</th>\n",
" <th>count</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>2.305486e+06</td>\n",
" <td>2.305486e+06</td>\n",
" <td>2.305486e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>2.179908e+00</td>\n",
" <td>2.278338e+00</td>\n",
" <td>1.910012e+01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>7.342048e-01</td>\n",
" <td>8.566840e-01</td>\n",
" <td>2.463772e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1.705000e+00</td>\n",
" <td>1.635000e+00</td>\n",
" <td>1.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>2.155000e+00</td>\n",
" <td>2.305000e+00</td>\n",
" <td>2.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.595000e+00</td>\n",
" <td>2.885000e+00</td>\n",
" <td>7.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>5.000000e+00</td>\n",
" <td>5.000000e+00</td>\n",
" <td>1.000000e+04</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" score 1 score 2 count\n",
"count 2.305486e+06 2.305486e+06 2.305486e+06\n",
"mean 2.179908e+00 2.278338e+00 1.910012e+01\n",
"std 7.342048e-01 8.566840e-01 2.463772e+02\n",
"min 0.000000e+00 0.000000e+00 1.000000e+00\n",
"25% 1.705000e+00 1.635000e+00 1.000000e+00\n",
"50% 2.155000e+00 2.305000e+00 2.000000e+00\n",
"75% 2.595000e+00 2.885000e+00 7.000000e+00\n",
"max 5.000000e+00 5.000000e+00 1.000000e+04"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating a dictionary `utilities` that maps a tuple of strategy names to the mean utility for that matchup:"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"utilities = {pair: (f[\"score 1\"].mean(), f[\"score 2\"].mean()) \n",
" for pair, f in df.groupby([\"strategy 1\", \"strategy 2\"])}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For example we see that a `Cooperator` recieves a payoff of 0 against a `Defector` (which recieves a payoff of 5):"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.0, 5.0)"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"utilities['Cooperator', 'Defector']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For random strategies we have the expected payoffs, for example here we see `Cooperator` vs `Random: 0.5`. We see that `Random:0.5` gets a mean utility of 4, which is (as expected the mean between 5 and 3."
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1.5077884615384616, 3.9948076923076927)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"utilities['Cooperator', 'Random: 0.5']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here is a function to get these scores out in matrix form $M$:\n",
"\n",
"$$\n",
"M = \\begin{pmatrix}\n",
"a & b \\\\\n",
"c & d\n",
"\\end{pmatrix}\n",
"$$\n",
"\n",
"Where:\n",
"\n",
"- $a$: the utility of the first strategy encountering the first strategy;\n",
"- $b$: the utility of the first strategy encountering the second strategy;\n",
"- $c$: the utility of the second strategy encountering the first strategy;\n",
"- $d$: the utility of the second strategy encountering the second strategy;"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def scores(strategy_pair, utilities=utilities):\n",
" \"\"\"\n",
" Return the fitness scores:\n",
" \n",
" [a, b]\n",
" [c, d]\n",
" \n",
" for a pair of strategies, in a population of N individuals \n",
" with i individuals of the first type.\n",
" \"\"\"\n",
" try:\n",
" s1, s2 = strategy_pair\n",
" m = np.array([[utilities[(s1, s1)][0], utilities[(s1, s2)][0]], \n",
" [utilities[(s1, s2)][1], utilities[(s2, s2)][0]]])\n",
" except KeyError:\n",
" s2, s1 = strategy_pair\n",
" m = np.array([[utilities[(s2, s2)][0], utilities[(s1, s2)][1]], \n",
" [utilities[(s1, s2)][0], utilities[(s1, s1)][0]]])\n",
" return m"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1., 5.],\n",
" [ 0., 3.]])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores((\"Defector\", \"Cooperator\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that $M$ is order dependent:"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 5., 1.]])"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scores((\"Cooperator\", \"Defector\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the we can compute the fitness for both strategies in a population of $N$ individuals within which there are $i$ individuals of the first type.\n",
"\n",
"From [Nowak's: 'Evolutionary Dynamics'](https://www.amazon.co.uk/Evolutionary-Dynamics-Exploring-Equations-Life-x/dp/0674023382/ref=sr_1_1?ie=UTF8&qid=1479311303&sr=8-1&keywords=evolutionary+dynamics) these fitness values are given as $F_i$ (for the first strategy) and $G_i$ (for the second):\n",
"\n",
"$$\n",
"F_i = \\frac{a(i-1) + b(N-i)}{N-1}\n",
"$$\n",
"\n",
"\n",
"and \n",
"\n",
"$$\n",
"G_i = \\frac{ci + d(N-i-1)}{N-1}\n",
"$$\n",
"\n",
"This can be seen for $F_i$ as:\n",
"\n",
"- The probability that a strategy of the first type encounters a strategy of the first type is $\\frac{i - 1}{N - 1}$\n",
"- The probability that a strategy of the first type encounters a strategy of the second type is $\\frac{N - i}{N - 1}$\n",
"\n",
"Further to this and assuming $$\\omega$$ corresponds to the intensity of selection. There are two transformations of the fitness scores that are used below:\n",
"\n",
"\"Nowak\" fitness:\n",
"\n",
"$$\n",
"f_i = 1 + \\omega(F_i - 1) \n",
"$$\n",
"\n",
"$$\n",
"g_i = 1 + \\omega(G_i - 1) \n",
"$$\n",
"\n",
"\"Fermi\" fitness:\n",
"\n",
"\n",
"$$\n",
"f_i = \\frac{e^{\\omega F_i}}{e^{\\omega F_i} + e^{\\omega G_i}}\n",
"$$\n",
"\n",
"$$\n",
"g_i = \\frac{e^{\\omega G_i}}{e^{\\omega F_i} + e^{\\omega G_i}}\n",
"$$\n"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def fitness(strategy_pair, N, i, utilities=utilities):\n",
" \"\"\"\n",
" Return the nowak fitness of a strategy pair in a population with \n",
" N total individuals and i individuals of the first type.\n",
" \"\"\"\n",
" m = scores(strategy_pair, utilities) \n",
" \n",
" f = (m[0, 0] * (i - 1) + m[0, 1] * (N - i)) / (N - 1)\n",
" g = (m[1, 0] * i + m[1, 1] * (N - i - 1)) / (N - 1)\n",
" \n",
" return f, g\n",
"\n",
"def nowak_fitness(strategy_pair, N, i, utilities=utilities, selection_intensity=1):\n",
" \"\"\"\n",
" Return the nowak fitness of a strategy pair in a population with \n",
" N total individuals and i individuals of the first type.\n",
" \"\"\"\n",
" F, G = [1 + selection_intensity * (k - 1) for k in fitness(strategy_pair, N, i, utilities)]\n",
" \n",
" return F, G\n",
"\n",
"def fermi_fitness(strategy_pair, N, i, utilities=utilities, selection_intensity=1):\n",
" \"\"\"\n",
" Return the fermi fitness of a strategy pair in a population with \n",
" N total individuals and i individuals of the first type.\n",
" \"\"\"\n",
" F, G = [math.exp(k) for k in fitness(strategy_pair, N, i, utilities)] \n",
" \n",
" return F / (F + G), G / (F + G)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using this we can verify that a single `Defector` with 4 `Cooperator`s would have a fitness of 5. (They would only ever meet a `Cooperator` and would thus obtain a utility of 5. Similary, $3/4$s of the time, a `Cooperator` would obtain a utility of 3, and $1/4$s of the time a utility of 0."
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((5.0, 2.25), (2.25, 5.0))"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculating these in the two equivalent ways:\n",
"nowak_fitness((\"Defector\", \"Cooperator\"), 5, 1), nowak_fitness((\"Cooperator\", \"Defector\"), 5, 4)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((0.9399133498259924, 0.060086650174007626),\n",
" (0.060086650174007626, 0.9399133498259924))"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fermi_fitness((\"Defector\", \"Cooperator\"), 5, 1), fermi_fitness((\"Cooperator\", \"Defector\"), 5, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similary, a single `Cooperator` in a population of `Defector`s would only ever meet a `Defector` thus obtaining a utility of 0. The `Defector`s would obtain a utility of 1, $3/4$s of the time, and a utility of 5 $1/4$ of the time."
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((2.0, 0.0), (0.0, 2.0))"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculating these in the two equivalent ways:\n",
"nowak_fitness((\"Defector\", \"Cooperator\"), 5, 4), nowak_fitness((\"Cooperator\", \"Defector\"), 5, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using this fitness function we can now obtain the transition probabilities:\n",
"\n",
"- $p_{i,i+1}$: the probability of having 1 more individual of the first type;\n",
"- $p_{i,i-1}$: the probability of having 1 less individual of the first type;\n",
"- $p_{ii}$: the probability of no change.\n",
"\n",
"From [Nowak's Evolutionary Dynamics](https://www.amazon.co.uk/Evolutionary-Dynamics-Exploring-Equations-Life-x/dp/0674023382/ref=sr_1_1?ie=UTF8&qid=1479311303&sr=8-1&keywords=evolutionary+dynamics) we have:\n",
"\n",
"$$\n",
"p_{i, i+1}= \\frac{if_i}{if_i+(N-i)g_i}\\frac{N-i}{N}\n",
"$$\n",
"\n",
"$$\n",
"p_{i, i-1}= \\frac{(N-i)g_i}{if_i+(N-i)g_i}\\frac{i}{N}\n",
"$$\n",
"\n",
"$$\n",
"p_{ii} = 1 - p_{i, i+1} - p_{i, i-1}\n",
"$$\n",
"\n",
"These probability transitions correspond the probability of a given individual being chosen for 'death' as well as the probability of a given type of individual for 'birth' (the latter is in effect a normalisation of the fitness)."
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def transition(strategy_pair, N, i, utilities=utilities, fitness_type=\"nowak\", selection_intensity=1):\n",
" \"\"\"\n",
" Return the 3 transition probabilities:\n",
" \n",
" P[i, i - 1]\n",
" P[i, i]\n",
" P[i, i + 1]\n",
" \n",
" Assuming: \n",
" - a given stratgy pair, \n",
" - a given total population size N\n",
" - and a state i (the number of individuals of the first type)\n",
" \"\"\"\n",
" fitness_types = {\"nowak\": nowak_fitness, \"fermi\": fermi_fitness}\n",
" fitness = fitness_types[fitness_type]\n",
" fit = fitness(strategy_pair, N, i, utilities=utilities, selection_intensity=selection_intensity)\n",
" \n",
" p_up = (fit[0] * i / (fit[0] * i + fit[1] * (N - i))) * ((N - i) / N)\n",
" \n",
" p_down = (fit[1] * (N - i) / (fit[0] * i + fit[1] * (N - i))) * (i / N)\n",
" \n",
" p_stay = 1 - p_up - p_down\n",
" return p_down, p_stay, p_up"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here we see the transition probabilities $p_{i, i-1}, p_{ii}, p_{i, i+1}$ for the case of 2 `Defector`s with 3 `Cooperator`s:"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((0.14399999999999999, 0.47199999999999998, 0.38400000000000001),\n",
" (0.14399999999999999, 0.47199999999999998, 0.38400000000000001))"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculating these in the two equivalent ways:\n",
"transition((\"Defector\", \"Cooperator\"), 5, 2), transition((\"Cooperator\", \"Defector\"), 5, 3)[::-1]"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((0.04385165465617728, 0.42192582732808864, 0.5342225180157341),\n",
" (0.04385165465617728, 0.4219258273280887, 0.5342225180157341))"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculating these in the two equivalent ways:\n",
"transition((\"Defector\", \"Cooperator\"), 5, 2, fitness_type=\"fermi\"), transition((\"Cooperator\", \"Defector\"), 5, 3, fitness_type=\"fermi\")[::-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here we see the transition probabilities $p_{i, i-1}, p_{ii}, p_{i, i+1}$ for the case of 4 `Defector`s with 1 `Cooperator`:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((0.0, 0.80000000000000004, 0.20000000000000001),\n",
" (0.0, 0.80000000000000004, 0.20000000000000001))"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"transition((\"Defector\", \"Cooperator\"), 5, 4), transition((\"Cooperator\", \"Defector\"), 5, 1)[::-1]"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"((0.026181245092308843, 0.7803640661807684, 0.1934546887269228),\n",
" (0.026181245092308843, 0.7803640661807684, 0.1934546887269228))"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"transition((\"Defector\", \"Cooperator\"), 5, 4, fitness_type=\"fermi\"), transition((\"Cooperator\", \"Defector\"), 5, 1, fitness_type=\"fermi\")[::-1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Indeed in that particular case, because the score of the `Cooperator` against a population of `Defector` is 0 there is a zero probability of the number of `Cooperator`s increasing."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let $x_i$ be the fixation probability of the first strategy in a population of $i$ individuals of the first type (and $N-i$ individuals of the second. We have:\n",
"\n",
"$$\n",
"x_i = \\frac{1 + \\sum_{j=1}^{i-1}\\prod_{k=1}^{j}\\gamma_j}{1 + \\sum_{j=1}^{N-1}\\prod_{k=1}^{j}\\gamma_j}\n",
"$$\n",
"\n",
"where:\n",
"\n",
"$$\n",
"\\gamma_j = \\frac{p_{j, j-1}}{p_{j, j+1}}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Using Marc's code with a modification \n",
"# (just so that it fits with what I've \n",
"# done so far but not precious about this)\n",
"\n",
"def fixation(strategy_pair, N, i=1, utilities=utilities, fitness_type=\"nowak\", selection_intensity=1):\n",
" \"\"\"Return the fixation probability for each pair\"\"\"\n",
" ratios = []\n",
" for j in range(1, N): # ignore first and last transitions, which are likely zero\n",
" p_down, _, p_up = transition(strategy_pair, N, i=j, utilities=utilities, \n",
" fitness_type=fitness_type, selection_intensity=selection_intensity)\n",
" ratios.append(p_down / p_up)\n",
" t = np.cumprod(ratios)\n",
" s = np.cumsum(t)\n",
" if i > 1:\n",
" return (1 + s[i - 2]) / (1 + s[-1])\n",
" return 1 / (1 + s[-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that a single `Defector` has a $.6$ fixation probability in a population of `Cooperators`:"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.6020696142991534, 0.93475126242870255)"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Defector\", \"Cooperator\"), 5), fixation((\"Defector\", \"Cooperator\"), 5, fitness_type=\"fermi\"), "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is however, 0 chance of fixation for a single `Cooperator`:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Cooperator\", \"Defector\"), 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is not true using \"fermi\" fitness:"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"6.996784248262662e-05"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Cooperator\", \"Defector\"), 5, fitness_type=\"fermi\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that when 4 `Cooperator`s enter a population of a single `Defector` with full selection intensity then we get errors in the calculation:"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"nan"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Cooperator\", \"Defector\"), 5, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This can be addressed by modifying the selection intensity:"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.40384315652613711, 0.40384315652613711)"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculating this using two approaches to get the same result.\n",
"selection_intensity=.95\n",
"fixation((\"Cooperator\", \"Defector\"), 5, 4, selection_intensity=selection_intensity), 1 - fixation((\"Defector\", \"Cooperator\"), 5, selection_intensity=selection_intensity)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or by using \"fermi\" fitness:"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.06524873757129733"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Cooperator\", \"Defector\"), 5, 4, fitness_type=\"fermi\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For strategy pairs where we have non zero scores for both players we have the expected behaviour:"
]
},
{
"cell_type": "code",
"execution_count": 356,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.020044052863436124, 0.020044052863436024)"
]
},
"execution_count": 356,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixation((\"Alternator\", \"Defector\"), 5), 1 - fixation((\"Defector\", \"Alternator\"), 5, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Further things using the above framework:"
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def write_fixation(N):\n",
" \"\"\"\n",
" Write fixation probabilities for all \n",
" strategy pairs to a file called 'results/fixation_N.csv'\n",
" \n",
" File looks like:\n",
" \n",
" s1, s2, x_1, x_{N - 1}\n",
" \"\"\"\n",
" path = pathlib.Path(\"results\")\n",
" path.mkdir(exist_ok=True)\n",
" path = pathlib.Path(\"results\") / \"fixation_{}.csv\".format(N)\n",
"\n",
" with path.open(\"w\") as textfile:\n",
" for strategy_pair in utilities:\n",
" if strategy_pair[0] != strategy_pair[1]:\n",
" fixation_probabilities = fixation(strategy_pair, N), fixation(strategy_pair[::-1], N)\n",
" textfile.write(\"{}, {}, {}, {}\\n\".format(*strategy_pair, *fixation_probabilities))"
]
},
{
"cell_type": "code",
"execution_count": 231,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Write all of these to file\n",
"for N in range(2, 12 + 1):\n",
" write_fixation(N)"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n+Pm7/LFGXl4u+/btpUOHOKfrjx1LJiamTYXl27ZtYcCAgWzevImFCxdy112TAdi1awc9epznchzN\nheuvEHythlKtAAAgAElEQVQH/At4Qym1ApgPfK21rv93lahSamogL868nvO6HSQi7BT/9+jH5Of7\nkZoa4O7QhBDNSGGBhQ/e+oWiwoad2NDXz5vx9/ZxufhYtWo5119/I99//22FdXv2JNK1q/Mvbnl5\nefj5+TN27DimTv0HEybcgbe3H4mJuxk37pYa5dAcuNzVorV+HGgPjAQswKfAYaXU80qpLnUcn3BB\nq1b5ZJ4M4v4n7uRUrh8+PlamP7WQC8/LdndoQgjhkTZsWM9FF/XF29t5sbJu3Tf07z+wymN0796D\nuLg4Vq5cAYDVasFkMtV5rE1FTVo8cLRufA18rZQKBKYATwKPKaU2AP/RWn9a3eMppfyAOcBoIA94\nTWv9eiXbjgKeB84CtgH3a6231SSPpmbKlAFs2zaXPfvu5oGn7mD28+/i71/M7dfnUZiXjF9gxaZC\nIYSoa37+RstDzsl8WrQI8NiulrS0NHJysomLu8zpeovFQnFxEYGBgRXW7du3l7i4jqWPx48fz4wZ\nMxk0aAjBwcGuB9+MmOz2mr0ZlFIxwHjHvx7ABmABRkEwBViktX6gmseaBfQDbgc6AIuAieWLF6XU\nOcBm4C5gIzAVuB7oqLUuqGbo9szMXCyWigOImoKEhERmz/6ezMwgLjw3g5tH5GDCjtkrgKjOt+Eb\nEOXuEOuMt7eZsLAgmvLrCc0nT2g+uUqenuHzz1eRkZGOyWTCbrezdOn/uPTSy7j88v5cfHFffvzx\newICAujd++IK+3722VKGDRuJj48P3t5mgoN9ufLKK7noor7cfPOtlY4Xacwcr2etm3JqMrh0PHAr\n0B84gVEkjNFa7y2zzWFgBnDGwsPRYnIncI3WejuwXSk1HbgPoxunrEHALq31h459HwcmA+cAW13N\npSnq2TOeBQu6lf6yZ6f9TtqBpdis+ZzY9wGtu9yOj5+MshZCiCFDhp/2eMWKT7n66mvp2fN8ADZv\n3sTUqY863TcvLxcfH5/Sxz4+PowaNYbPPlvGtGlP11/QTUBNulreA1YD1wFrtdbOytg9wOxqHu88\nRxw/l1n2EzDNybbpQDel1CWO7e8ATgJ/VvNczU5gaDzh7UaQcXgFNsspTux7n9adJ+LtG+Lu0IQQ\n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\nAa2o0gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x112c5bf98>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline\n",
"ns = range(5, 20)\n",
"plt.figure()\n",
"for i in range(1, min(ns) + 1):\n",
" theoretic = [i / n for n in ns]\n",
" calculated = [fixation((\"Cooperator\", \"Tit For Tat\"), n, i) for n in ns]\n",
" plt.plot(ns, theoretic, label=\"${}/N$\".format(i))\n",
" plt.title(\"Cooperator vs population of Tit For Tat\")\n",
" if i == min(ns):\n",
" plt.scatter(ns, calculated, label=\"Calculated\")\n",
" else:\n",
" plt.scatter(ns, calculated)\n",
"\n",
" plt.xlabel(\"Population size $N$\")\n",
" plt.ylabel(\"Fixation probability\")\n",
" plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nD4YBX1B/QpOIJNudnJ4uTimF2k/KKi0TOvciLPd8MfXPRY/biVVnQENYsnYXNAFIZIVobYxCF2xa\n3b5OSmI/Uhnuvnel6yCtTyrChbuvWIktz2qIcRsQ5lnEzQS2boJqiYiISAlSMSxShE6EU6TillL4\nUsEiIiLSxJpbuFhC/SDRnsaHUlZVVZXJ/qv52mbZqyuGf3vskYnfv+Lfnns2n3JprltLKZfmurWU\ncmmuW2srl+a6tZRyaa5bvnIFSMWwSBGmU3+52F7A6i4MldfCzh2ZO3flBSU7deuetwtkadfuLGom\n5dJct5ZSLs11aynl0ly31lYuzXVrKeXSXLfGyjWmufVcvExYWCZut2h7UT5u0402F51LbW3din8L\nh5xFbe9VV9ut7b0RC4cMazbl0ly3llIuzXVrKeXSXLfWVi7NdWsp5dJct4bKrU6qFtECMLM6oH92\nES0z6wnMd/clZrYO8D5hPYwxhCWQDwc2y1nRrUFT1vlmZuHanWh78bl888hB9e5vU/MmnUb+jupZ\nM6nrsT6Lhp7F8r71LgWQ6nJNcczOo35H+7mfs7RrdxYOGZaa51qpcpWsW2tpizTXLVtObVH5umXL\nNfe2SHPd4uU6PPzAc2Qye9YrkCON4WI5sHcsXNQRW2XQzHYgLHe7BfAWYanotwrd/+zZX6TrCTcT\nbdtW07VrZ+bOXUhtbd3qHyBNRm2RHmqL9FBblEePHusUch2d9M25cPc2Oberc26/Tri0r4iIiKRQ\nc5tzISIiIimncCEiIiKJUrgQERGRRClciIiISKIULkRERCRRChciIiKSKIULERERSZTChYiIiCRK\n4UJEREQSpXAhIiIiiVK4EBERkUQpXIiIiEiiFC5EREQkUQoXIiIikiiFCxEREUmUwoWIiIgkSuFC\nREREEqVwISIiIolSuBAREZFEKVyIiIhIohQuREREJFEKFyIiIpIohQsRERFJlMKFiIiIJErhQkRE\nRBKlcCEiIiKJUrgQERGRRClciIiISKIULkRERCRRChciIiKSKIULERERSZTChYiIiCRK4UJEREQS\npXAhIiIiiVK4EBERkUQpXIiIiEiiFC5EREQkUQoXIiIikiiFCxEREUmUwoWIiIgkSuFCREREEqVw\nISIiIolSuBAREZFEKVyIiIhIohQuREREJFEKFyIiIpIohQsRERFJlMKFiIiIJErhQkRERBKlcCEi\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x131862668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"\n",
"strategies = (\"Defector\", \"Cooperator\")\n",
"ns = range(2, 50)\n",
"invader = [fixation(strategies, n) for n in ns] \n",
"resistor = [fixation(strategies, n, n - 1) for n in ns] \n",
"plt.title(\"{} vs population of {}\".format(*strategies))\n",
"plt.scatter(ns, invader, label=\"$i=1$\")\n",
"plt.scatter(ns, resistor, color=\"red\", label=\"$i=N-1$\")\n",
"\n",
"plt.xlabel(\"Population size $N$\")\n",
"plt.ylabel(\"Fixation probability\")\n",
"plt.ylim(0, 1)\n",
"plt.xlim(min(ns), max(ns))\n",
"plt.legend(loc=5);"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nYGaHAhOAg4DzC8lshRW6k0opuKikHj26VrsI7Y7qvDpU75WnOq9NtRBcTARWNLO0uzdGaX2Bee4+\nI2feDYFLsm/cPWNm44FVCs1s2rQ5armokA4d0vTo0ZVZs+axcGFjywtIq6nOq0P1Xnmq8+ro2bN7\nQfPVQnAxDvgW2BR4PkrbCnglz7yfs/SVIQa8XGhmjY0ZGhszJRRTSrVwYSMNDfryV5LqvDpU75Wn\nOq9NVQ8u3H2emd0IjDKzYUB/4FjgNwBm1geY6e7zgWuA68zsP4SrSw4Bvg/cUJXCi4iIyFJqZSTM\nMcCrwBPAZcAp0f0uACYB+wC4+22E+1+cBLwGbAZsW+hgThERESm/VCbTvroIpkyZ3b42uIo6dkzT\ns2d3pk+fo2bLClGdV4fqvfJU59XRu/dyBQ1arJWWCxEREWkjFFyIiIhIohRciIiISKIUXIiIiEii\nFFyIiIhIohRciIiISKIUXIiIiEiiFFyIiIhIohRciIiISKIUXIiIiEiiFFyIiIhIohRciIiISKIU\nXIiIiEiiFFyIiIhIohRciIiISKIUXIiIiEiiFFyIiIhIohRciIiISKIUXIiIiEiiFFyIiIhIohRc\niIiISKIUXIiIiEiiFFyIiIhIohRciIiISKIUXIiIiEiiFFyIiIhIojoWu4CZvQRcC9zq7jOTL5KI\niIjUs1JaLp4A/gRMMrPRZra9maUSLpeIiIjUqaKDC3c/EVgF2B1oAO4CPjWzs83shwmXT0REROpM\nSWMu3D3j7o+6+6+AlYArgJHABDN7xsyGJllIERERqR9Fj7nIMrN+wC+jv3WB54Drge8Bfzezrd19\nZBKFFBERkfpRyoDOXwK/BrYFvgRuBPZy9/di83wKXEJozRAREZF2pJSWi38ADwBDgH+7e2Oeed4F\nLm9NwURERKQ+lRJcHADc6+7fxhPNrAuwi7vf6e7PA88nUUARERGpL6UM6PwXsHye9LWBm1tXHBER\nEal3BbVcmNlI4MLobQr4wszyzfpyQuUSERGROlVot8jlwDRCS8e1wNFA/O6cGeBrwg22REREpB0r\nKLhw9wbCVSGYWYZw6+9vylkwERERqU+Fdov8GvhXFFBkgH2b6BbB3W9MrngiIiJSbwrtFrkeeIhw\nX4vrm5kvQ9TCISIiIu1Tod0i6XyvRURERHIpUBAREZFEFTrm4iNCl0eL3H21VpVIRERE6lqhYy5u\n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\nvU4qlWLUqMsYOHB9hgzZK4GS1oZUdmRrocxsIrCHu79cniKV15Qps3Wn0Qrp2DFd0S+/qM6rRfVe\nearz6ujde7mC7lhWSvj1bfQnIiIispRSukWuBx4ysxuB94F58YnufmMC5RIREZE6VUpwcWr0/9g8\n0zKAggsREZF2rOjgwt1bP5JFRERE2qySr90xsx8QrhZpAF5z988SK5WIiIjUrVIeXLYccCuwUyw5\nY2a3Age5+4KkCiciIiL1p5QujksAIwQX3wFWAHYDNgPOSa5oIiIiUo9K6RbZA9jd3Z+JpY0xs28I\nDzTLN9BTRERE2olSWi4agJl50icBy7SuOCIiIlLvSu0WuczM+mQTonEYf46miYiISDtWSnCxA7Ax\n8JGZjTOzV4DPgN2Bg8zsw+xfkgUVERGppvfec4YN+2Vi65sxYwY33PAPdt99R04//U+L0hsbG/nb\n365g111/xpVXXsL06dNande8efM4+eQT+PLLya1eVyFKGXPxWPQnIiJSHV9/DV9NguV6Qbq8T0TN\nWmWVAZxzzgWJrW/55Zdnhx12ZqWV+nDRRX9hypQv6d17JdLpNAcffCjLL788++57QKvzGTPmPiZP\n/oJnnnmS4cOPTqDkLSvlJlpnlKMgIiIiLWpspPtJx9P58Ufgq6n0WLk/8/Y9gHnDjyp71p06daJP\nn76JrvP1119l8OCf8corL3H77aM54oiwHW+99QbrrrteInnssstuAFx33TWJrK8QlQn3REREEtDt\ngnPpesM/SC1cCEAHf5duF5/HwjXWYMGOu5Qlz0wmw91334H7BPbYY2/WXHOtRdNmzZrF6NE3LTEv\nQCqVWvS+S5cuHHjgb/Oue+7cuXTu3IU999yXY4/9PcOGHUqXLl2YMOEd9tuv9a0W1aLgQkRE6sYy\nTz2xKLDISs+eTed/jS5bcDF27NMMHrwdb731Bl988fkSwUWPHj049NAjW53HOuv8iO9/fxUeeOAe\n9tprPxYubFgUoNQjBRciIlI3Ut9800T6/LLlueGGG5PJNDJu3Gv88Y+nJLbe999/jwEDVlv0fq+9\n9uXaa69mxx13Zdlll827zF133c6kSZ+TG3dkMpBKwXrrbcAWW2yVWBlLpeBCRETqxsIfGsu8OX6p\n9G832rhseXbr1o27776DrbceRCbTSENDAx07htPnrFkzGT365iaXba5b5M03x7Prrrsvej948HZc\n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\niIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWI\niIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiI\niCRKwYWIiIgkSsGFiIiIJErBhYiIiCSqY7ULAGBmnYErgaHAXOBCd7+oiXl3Af4MrAF8AJzi7vdX\nqqwiIiLSvFppubgA2AAYBBwBnGZmQ3NnMrMfA3cCfwfWA64G7jCzdStXVBEREWlO1VsuzKwbcDCw\ng7uPB8ab2XnAcOCunNl/ATzu7ldE7680s92AfYA3K1VmERERaVrVgwtCC0RH4IVY2ljgpDzzXg90\nypP+neSLJSIiIqWohW6RfsBUd2+IpU0GuphZr/iMHixqoTCzdYCfAo9VpKQiIiLSolpouegGfJOT\nln3fuamFzGxFwviLZ939vkIzS6dTpNOpogspxevQIb3Efyk/1Xl1qN4rT3Ve22ohuJjP0kFE9v3c\nfAuYWR/gUSAD7F1MZius0J1USsFFJfXo0bXaRWh3VOfVoXqvPNV5baqF4GIisKKZpd29MUrrC8xz\n9xm5M5vZysATwEJgkLt/VUxm06bNUctFhXTokKZHj67MmjWPhQsbW15AWk11Xh2q98pTnVdHz57d\nC5qvFoKLccC3wKbA81HaVsAruTNGV5Y8FM2/rbtPKTazxsYMjY2Z0ksrRVu4sJGGBn35K0l1Xh2q\n98pTndemqgcX7j7PzG4ERpnZMKA/cCzwG1jUBTLT3ecDfwIGEO6HkY6mQWjlmFXxwouIiMhSamUk\nzDHAq4TujssId928N5o2iXAfCwh38OwKvAR8Hvv7a0VLKyIiIk1KZTLtq4tgypTZ7WuDq6hjxzQ9\ne3Zn+vQ5arasENV5dajeK091Xh29ey9X0KDFWmm5EBERkTZCwYWIiIgkSsGFiIiIJErBhYiIiCRK\nwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErB\nhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGF\niIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWI\niIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiI\niCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkSsGFiIiI\nJErBhYiIiCRKwYWIiIgkSsGFiIiIJErBhYiIiCRKwYWIiIgkqmO1CwBgZp2BK4GhwFzgQne/qIl5\n1weuAtYF3gIOd/fXKlVWERERaV6ttFxcAGwADAKOAE4zs6G5M5lZN2AM8HQ0/wvAGDPrWrmiioiI\nSHOqHlxEAcPBwAh3H+/u9wLnAcPzzL4fMNfdT/BgJDAb2LtyJRYREZHmVD24ANYjdM+8EEsbC2yS\nZ95NomlxzwGbladoIiIiUqxaCC76AVPdvSGWNhnoYma98sz7eU7aZKB/GcsnIiIiRaiFAZ3dgG9y\n0rLvOxc4b+58TUqnU6TTqaIKKKXp0CG9xH8pP9V5dajeK091XttqIbiYz9LBQfb93ALnzZ2vSb16\nLavIosJ69NB420pTnVeH6r3yVOe1qRZCvonAimYWL0tfYJ67z8gzb9+ctL7ApDKWT0RERIpQC8HF\nOOBbYNNY2lbAK3nmfRHYPCdtiyhdREREakAqk8lUuwyY2VWEIGEYYXDm9cBv3P1eM+sDzHT3+Wa2\nHPAeMBq4GjgM2AtYw93nVaXwIiIisoRaaLkAOAZ4FXgCuAw4JbrfBYQuj30A3H02sCuwNfAfYGNg\nJwUWIiIitaMmWi5ERESk7aiVlgsRERFpIxRciIiISKIUXIiIiEiiFFyIiIhIohRciIiISKJq4fbf\nUsfMrDPhsuAj3f2ZKG1V4BrC02o/Bo5290djy/wMuBhYjfA03EPc/aPKlrz+mNl3gUuBbQm3vL8N\nONHdF6jOy8fMVgeuINyL5yvgcne/IJq2Kqr3sjKzMcBkdx8WvV8V1XnNU8uFlCwKLEYDa+dMuofw\n9NoNgZuBu82sf7TM94C7gX8AGwFTo/mlZXcCXQgnuf2AnwNnRdPuRXWeODNLAWMIT18eSLhx38lm\ntl80i+q9jKJ63iknWceXOqDgQkpiZmsRbrs+ICd9MOEXw6EenEv49TAsmuUQ4BV3/6u7TwAOAlY1\ns60rV/r6Y2ZGuGncge7+rrs/B5wK7G9m2xI+B9V58voArwNHuPsH7v4Q8Diwpeq9vMysJ3Ae8HIs\nTceXOqHgQkq1DeEguxkQf9LsJsBr7j4/ljY2mi87/ZnshOjuqq/Fpkt+XwA7uvvUnPTvEJ7Lozov\nA3f/wt1/4e5zAMxsC8Kzj55C9V5uFwA3AhNiaTq+1AmNuZCSuPuo7Ovwo3qRfoQmy7jJhGfGFDJd\n8nD3mUC8XzkFDCcEeKrzCjCzj4HvAQ8AdwF/RfVeFlELxVbAusCo2CTt63VCLReStG7ANzlp3wCd\nC5wuhTkfWB/4E6rzShlKGOcykDBgUPVeBtFYrlGErqjc+lOd1wkFF5K0+Sz9Re5MuLqhkOnSAjP7\nCzACOMDd30F1XhHu/pq7P0h40OKh5D9pqd5b73TCuInH8kzTvl4nFFxI0iYCfXPS+hKeblvIdGmG\nmV0GHE0ILLKj4FXnZWJmK5nZ7jnJ7wCdCPWnek/evsAQM5ttZrOBA4Bfmtks4DNU53VBwYUk7UVg\ng6hpM2vLKD07fcvsBDPrRmjefxFplpmdBvwO2Nfdb49NUp2XzwDgLjPrF0vbCPiSMJBwQ9V74rYh\njLVYL/q7j3DJ73rAS2hfrwt65Lq0mpk1AoPc/RkzSwPjgbcI92DYDTgRWMfdPzOzVQi//M4gDIw7\nDfiBu29QndLXh+jS3zeA/wOuzJk8BdV5WUT78wvANEJ3yADCPRTOJnwObwBvonovGzO7Dsi4+zAd\nX+qHWi4kCYsiVHdvBHYnNEX+B9gfGOLun0XTPyEMjBtGuH59eWCPShe4Du1G+L6eTBgN/zmhqffz\nqM6HoDpPXGx/ngM8D1wN/NXdL4+m7YbqvWJ0fKkfarkQERGRRKnlQkRERBKl4EJEREQSpeBCRERE\nEqXgQkRERBKl4EJEREQSpeBCREREEqXgQkRERBKl4EJEREQSpeBCREREEqXgQkRERBKl4EJEREQS\n1bHaBRCR5pnZx8D3Y0kZ4GvgdeAUd3+2gmVpBA509xsLnP97wObu/q9Slk9apfI3szOBXQmPCV/X\n3d+J0pcHrgD2JTy183x3f66cZRGpBrVciNS+DHA+4UmQfYHvApsBM4GHzKx/FcvWkhuAHWLv+wL/\nqlJZKpa/u58KPAV8Avwulj7D3Q8ALnH3IQospK1Sy4VIfZjj7l/G3k82s8OAiYRHSl9WnWK1KBV/\nk7MNFVfh/BcCfweONbMT3P0bADMbQGh1EmmzFFyI1K+F0f/sSasn8Gfg58CKwGvAn9z96Wh6IzAc\n+BUwEHgvmn5/doX5ug2a60owsx8B5wBbAN2Bz4DL3f1iM3sS2AbYxswGuftquesqsMwHA/tHecwA\nrnL3s5qqFDPbCTgTWJvQffQgMNLdZ8bzN7PTgNMILUOp+H9372BmPYALgCFAJ+A/wAnu/mpTecfK\nsDrwX+B+4HRgH+CmaPKWQMW6skSqQd0iInXIzFYGLic6eZpZGniUcALeH9gAeBN4xMw2jC16DqGr\n4sfAGOBuM9u0xDJ0BR4BpgCbEk7mtwEXmtmPCS0qLxC6ITbKs3yhZb4AuBZYi9BCc4aZbdlEmXoB\ndxFaDIwQGGxF6FbKle1q6hf9HwTMIQQcAP8GVgF2BjYGXgTGmtl6zVZMsCXwrLt/AdxLrGsEWM3d\nPy5gHSJ1Sy0XIvXhJDM7LnrdkfBLegKwl7t/Fv1aXx/4kbtPiOY73Mw2Bo4D9ovSrnP3UdHrE81s\nEPB7womzWN2Bi4Er3H0ugJmdAZxAGMT4hpktAOa5+7Q8y+9QYJmvd/fR0etzonrYAhibZ539CXXz\nP3f/DPjMzH5OnmNdVOZsuXsRAph73f3PZvZTYBNgRXefES1ychTUHAUMa6FuzN1viF6PIgRMa8W2\nU6RNU3AhUh9GAZdGrxcC09x9dmz6j4CZeU5ezwDbx94/lTP9eWC7Ugrk7lPN7CrgADNbH1iDcHVE\nBuhQwCoKLfO7OdNnEgKIfGUab2ajgQfMbBKhZeQB4O6mCmFmnYB7gC9ZHDSsT2jZ/Z+ZxWfv1FTe\nOTKxMj1uZu8Dh5rZWcDUApYXqWsKLkTqwzR3/7CZ6akm0tPAt7H33+ZM78DisRtLMbMmgwQz6wO8\nBHwB3Ac8DLxCGHdRiELL/E0Ry+Luv4xaUHYiBE43E8Y4NBVEXUto8fiJuy+IlWEmoasmN6985Vkk\nagWZnJN8NfAnQjdRvhYXkTZFwYVI2/AG8B0zWzt7T4XIlsDbsfc/IYy1yNqcMIgy61ugR+z9D5vJ\nc39gecIYgkYAM1s3mpY9IWfyLVhkmQsWdans5+7HEAasXmpm+wM3mVnvPPOfRhhMurm7x1sU3iLU\nQ2d3fzc2/zWEKz2ubKYY+bpsricMXD2R0Coi0qYpuBBpGx4BxgP/NLMRhCb+3xO6Hg6LzTfSzJxw\n5cOhhIGd8fEDLwCHmNmzhF/vFwHzm8jzf4RxF/ua2VjCgMuLCAFF52ier4FVzWxld59YYpmLMQs4\nMhrrcQ3QlXDDqv+S0x0RBR0nE4KkL6OWmKzHorL9y8yOirb1SOA3wC0tlGFL4I/xBHf/yszuBHq5\ne71cZP8AAAEYSURBVHMBl0iboKtFRGpfiyejqOVgO8Kv6rsI3RNrA4Pd/ZXYrKOAowknzi2A7dz9\nrdj0w4FphCDjdkJz/mexMsTHEtxBuOLiQsLg0osIV2k8Q2ghyea3LjA+ujokvnwhZc637U3WR9TK\nsAewbbTeZ4EGYKfopJ6JLX8I4Rh4K6Fr53NgUvR/U+BnhCDsX1F9bQkMcf//du7YBEAYiqJonOYv\n4M42DqFjOI0WdqLdQ8Gcs0Ak1eUF3Ja7s6tqrKq5nfc7XWKltXPtWJ++Hf5k2HcRDT34+tfbQD8s\nFwBAlLiAfpgpgVd4FgEAoiwXAECUuAAAosQFABAlLgCAKHEBAESJCwAgSlwAAFHiAgCIEhcAQJS4\nAACiDksThWnQTExoAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x133f28f28>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"\n",
"strategies = (\"Defector\", \"Cooperator\")\n",
"ns = range(2, 500)\n",
"invader = [fixation(strategies, n, fitness_type=\"fermi\") for n in ns] \n",
"resistor = [fixation(strategies, n, n - 1, fitness_type=\"fermi\") for n in ns] \n",
"plt.title(\"{} vs population of {} (fermi fitness)\".format(*strategies))\n",
"plt.scatter(ns, invader, label=\"$i=1$\")\n",
"plt.scatter(ns, resistor, color=\"red\", label=\"$i=N-1$\")\n",
"\n",
"plt.xlabel(\"Population size $N$\")\n",
"plt.ylabel(\"Fixation probability\")\n",
"plt.ylim(0, 1)\n",
"plt.xlim(min(ns), max(ns))\n",
"plt.legend(loc=5);"
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFY\nKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgp\nuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWCm5\nEBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERFpZ6rrZ7LF8FPZ8sjD2WL4qVTX\nz4ylHqnUU4Wcv6b40EVERCQO1fUzqRszmqr582jqtQ0rRp5P48C9iqpXXT+TbsNOpWbOe2vLambN\nZOnEu5rVLbLeQYU8HyUXIiIiWeJ8oy+kXtzJQN2Y0c3qANTMeY+6MaNZNuGuWOptjJILERGpaNX1\nM6kbNxoWLaSuR0+Wn5vYT/1568WdDFTNn5f3dcot39R6G6I5FyIi0qbinA+QefOufXgqPP00tQ9P\npduw9etm6nV+ZCqdZjxH50fy19vQG3ip6sWdDDT12iZvvdzyTa23IUouRERkg0qRDGzsTb5cyUBb\nferPLo87GVgx8nwa+uzQrKyhzw6sGHl+bPU2RsmFiEg7FFdC0NGSgbb61J9dHncy0DhwL5ZOvItV\nRw7h0y/sz6rBR683XFNsPeCveZ9QDs25EBGpIG09byDp8wFK8am/ZtbMZs+lpTf6uOpl3rzrxt5E\n1by5LbZrofUydZfdMTnvc96Uep17bXHwRiuj5EJEpKTKscQwzoSgoyUDcb/Rt6ZenMlAuSm5EBEp\nQiErFMq1xDDp8wFKkQx0HXcTtYsXsrp7T5afOyqRn/o7EiUXItIhlLIHoRaofrn0+w2Uo3cg6T0D\nmborJt1NbfeurFi8nMaGprzPqyO+yZeLkgsRqWjl2Lsg6fMLOtp8AEkeJRcikkhJnYMAyZ9foPkA\nUm5KLkQkNm29HXJH6kEA9Q5I5VByISIbldTljx2tByFTV8mAJJ2SC5EOLKlDD5XSg7CxFQqZuupB\nkI5GyYVIO1SOpKEcyx/L3YNQyAoFkY5IyYVIBYlzb4UkDz1oDoJIZUtEcmFmtcCtwFBgBXCDu9/Y\nQt1jgKuBHYBZwHnuPqutYhUpl7j3Vkjy0IPmIIhUtkQkF8D1wF7AocBOwGQze8fdH8iuZGafBe4B\nvgM8C1wATDOznd19VZtGLBKjQoYxkp40lGv5o4gkT9mTCzOrA84ADnf3V4BXzOw64FzggZzqXwVe\nd/d7osf+CDgH+CyQ/5J/ImUU59yHpCcNmboaehCRsicXwB6EOJ7LKnsauDhP3YXA58zsi1H94cAS\n4J+lDlIkWzkmTFZC0iAiAslILrYDFrh7Q1bZXKCzmfV094VZ5b8FjiIkH43R1xHuvqTNopUOr1wT\nJpU0iEilSEJyUQeszinL3K7NKe8JbAuMAGYAZwOTzGxPd19QyMmqqlJUVaU2IdyOqbq6qtn39qxq\n1kw633wDVfPm0bTNNqw670Ka9sxKGsblTxq6jruJFZPuXltWvSB/0lC9YD41Netex3Tv/D0S6d69\nm9Vjn31YPvke6saMZrNFC1jToycrRl5Aas+91v9D3mcfVt65LpYUyfhjb2860t9F0qktkiUJ/29W\nsX4Skbm9Iqf858Cr7j4ewMzOAmYDw4BfFHKyHj26kkopuShWt25dyh1C8V56Ca69FubOhd694Yc/\nhH32Wb/OsG/Cu++uLaqtnwX337+u7qKF5FO7eCG13buuK+izfd56m/Xdnu7Z9S69BOpnNTsnn/kM\ntZf+uPnxAAYdFL6AzYAtN/iEpa1U9N9FO6O2SIYkJBdzgK3NrMrdM7vQbAusdPePc+ruDdycueHu\naTN7Bdix0JMtWrRcPRdFqK6uolu3LixdupLGxsrbLKhq1kw2P+0Uqt9f1+PQOOMFPrnznua9Elde\nRW32mzzAu++y+sqr1/ZK1PXouV42DLC6e09WLF6+7pwjzmPzGS80P2ffHfjk7JE0ZdVjl92pmng3\nnW++Mau35AKadtkdsutFKr0t2hO1RXKoLdpG99wPPC1IQnJRD6wB9iMsLwU4CHgxT90PCCtDshnw\nQqEna2pK09SULiJMAWhsbKIhYTsRFjK5covRNzR7kweofv89akff0Gz+Q2pu/qGM1Ny5a5/38nPP\np/rl9ec+LD93VPNdGgcMZMmEPHMfBgyE3NdwwEA+/XXO3IeNvM5JbIuOSm2RHGqLZCh7cuHuK81s\nMjDezIYDfYELgdMAzKw3sCTax+J2YKKZvURYLfId4DPAnWUJXsquHMs4NWFSRGTDyp5cRC4g7NA5\nnbC09FJ3nxrd9yFwOjDZ3X9nZl0Jy1T7EHo9Dit0MqdUljg3lirFMk4lDSIi+SUiuXD3lYRJmcPy\n3FeVc3siMLGNQpMyibtHohTLOEVEJL9EJBfSsZSjR0JDGSIibUfJhbSpcvVIgJIGEZG2ot1GJDbV\n9TPZYvipbHnk4Wwx/FSq69e/3MuGeiSytbZHYtWRQ/j0C/uzavDR6yUqIiLSttRzIbFQj4SIiGSo\n50JioR4JERHJUM+FbFR1/Uzqxo2GRQup69GT5eeuPxFSPRIiIpKh5EI2KHe4oxaofnn94Y5SrNoQ\nEZHKpORCNqjQJaHqkRARkQwlFx1YIftNFDrcoR4JERHJUHLRQRW6uqPQ4Q5Qj4SIiARaLdJBFbq6\nY8XI82nos0OzspaGO0REREA9F+1SKYY7uo67idrFC1ndvWe4tLiGO0REpAVKLtqZUg13rJh0N7Xd\nu7Ji8XIaG5riD1xERNoNDYu0MxruEBGRclPPRTuj1R0iIlJuSi4qzMbmU2h1h4iIlJuSiwpSyHyK\n1mxmJSIiUgqac1FBCplPoQt+iYhIuannooK0Zj6FhjtERKRc1HNRQVozn0JERKRclFwkRHX9TLYY\nfipbHnk4Www/ler6mevV0fJRERGpBBoWSYBCN77S8lEREakESi4SoNDLmoPmU4iISPJpWCQBCp2o\nKSIiUgmUXCSAJmqKiEh7ouQiATRRU0RE2pNWz7kwsxnABOA37r4k/pA6Hk3UFBGR9qSYCZ3TgR8D\no81sKjAR+LO7p2ONrJ3Y2LVAMjRRU0RE2otWD4u4+4+AHYGjgQbgAeBdM7vazPrHHF9Fyywx7fzI\nVDrNeI7Oj0yl27D8e1iIiIi0F0XNuXD3tLv/2d1PBbYBbgFGAbPN7CkzGxpnkJWqkGuBiIiItDdF\n73NhZtsB34y+BgDPAJOAHYBfm9nB7j4qjiArlZaYiohIR1TMhM5vAt8CDgPmAZOB49z9zaw67wI3\nE3ozOiwtMRURkY6omJ6LO4BHgCHAH929KU+dN4BxmxJYe7Bi5PnUzJrZbGhES0xFRKS9Kya5OAWY\n6u5rsgvNrDNwhLvf7+7PAs/GEWAl0xJTERHpiIpJLn4LbAvMzyn/LHA3cP+mBtWeaImpiIh0NAUl\nF2Y2CrghupkCPjKzfFVfiCkuERERqVCF9lyMAxYRlq5OAM4HsnfnTAOfEDbY6hAK3RxLRESkoyko\nuXD3BsKqEMwsTdj6e3UpA0uyzOZY2RM1a2bNZOnEu5RgiIhIh1fosMi3gN9GCUUaOLGFYRHcvd1P\nMNjQ5ljLJtxVpqhERESSodBhkUnAnwj7WkzaQL00UQ9He6bNsURERFpW6LBIVb6fOyptjiUiItKy\nDp8oFGPFyPNp6LNDszJtjiUiIhIUOufibcKQx0a5+86bFFEF0OZYIiIiLSt0zsWdFJhcdBTaHEtE\nRCS/QudcXF7iOERERKSdKHRY5CfA9e6+Ivq5JWl3vzKe0ERERKQSFTosMgy4BVgR/dySNKDkQkRE\npAMrdFikX76fRURERHIVc1VUAMxsEPCfwGrgtegy6yIiItLBtTq5MLPPAA8CewKLCXtlbGlm04ET\n3H1RvCGKiIhIJSmm52Icobeiv7u/BWBmAwjbfo8BvtnaA5pZLXArMJQwr+MGd7+xhboDorp7A28C\n57n7E61/GiIiIlIKxezQ+SXgnExiAeDurwFnA0cVGcf1wF7AocAI4DIzG5pbycy6AY8CrxOGZB4E\nHjSzrYs8r4iIiMSsmJ6LxUCnPOVpQq9Dq5hZHXAGcLi7vwK8YmbXAecCD+RUPx1Y5u5nR7cvN7Ov\nA/sQLqy2yarrZ1I3ZjRV8+dp500REZEiFJNcXA78ysxOcfe/AZhZP2AscHURx9sjiuO5rLKngYvz\n1D0EmJpd4O5fKOKceVXXz6TbsFObXU69ZtZMlk68SwmGiIhIgQrdRKuJ5tt/p4BXzWwZ0AhsFd3f\nl5BktMZ2wAJ3b8gqmwt0NrOe7r4wq3xn4AUz+xVhCOZt4HtxrVSpGzO6WWIBUDPnPerGjGbZhLvi\nOIWIiEi7V2jPxXBKd22ROsIE0WyZ27U55ZsDFwE3A18DvgE8ambm7nMKOVlVVYqqqlTe+6oXzGuh\nfD41NR37ArLV1VXNvkv5qC2SQ22RHGqLZCl0E61JJYxhFesnEZnbuXM4GoBZ7v7T6PYrZvZV4FTg\n2kJO1qNHV1Kp/MkFfbbPW7xZ3+3p3r1rIYdv97p161LuECSitkgOtUVyqC2SoahNtMzsKGAAUB0V\npQgJwefd/SutPNwcYGszq3L3pqhsW2Clu3+cU/dD4I2csn8AOxR6skWLlrfYc1E14jw2n/EC1e+v\nGxpp7LsDn5w9kqbFyws9RbtUXV1Ft25dWLp0JY2NTRt/gJSM2iI51BbJobZoG4V+0C5mE61rgR8Q\n5kVsQ0gOekfHmtLa4wH1wBpgPyAzd+Ig4MU8dZ8HDs4p2w24p9CTNTWlaWpqYYRnwECWTLiLurE3\nUTVv7rrVIgMGQoN+WQEaG5to0GuRCGqL5FBbJIfaIhmK6bk4BRjl7mPM7D3gQOAT4CHgX609mLuv\nNLPJwHgzG06YFHohcBqAmfUGlrj7KmA8cG50ZdZ7ojr9gLuLeB55NQ7ci2V3TI7rcCIiIh1OMTNf\negMPRz+/Cuwbbfl9MXBSkXFcALwMTCesNrnU3TNLTj8ETgBw93eBwwkrRV4DjgD+290/LPK8IiIi\nErNiN9HaPPr5LeBzwH3Au0CfYoJw95WES7mvdzl3d6/Kuf0cYdMsERERSaBiei7+AvzczPoAM4Dj\no+23jwPmxxmciIiIVJ5ikovvA9sThiruI+xJMRf4BTA6vtBERESkErV6WMTd3wP2NLPO7v6pmR1E\nmAfxvrvnW+EhIiIiHUhR+1xEvmhm/0nouXhdiYWIiIhAcftcfIZwqfM9CZM7q4BuZvYX4IRo5YiI\niIh0UMXMuRhH6K3o7+493b07MBDoCYyJMzgRERGpPMUkF18CznH3tzIF7v4acDZh/wkRERHpwIpJ\nLhYDnfKUp1n/QmMiIiLSwRSTXFwO/MrMPpcpMLN+hJ01r44pLhEREalQBU3oNLMmQs9ERgp41cyW\nAY3AVtH9fQlJhoiIiHRQha4WGU7z5EJEREQkr4KSC3efVOI4RERECvbpp5+yZMkSevToQXV1dZuc\n8803nWuuuZIJE+K5EPfKlSu5+urLGTnyArbZpncsx0yKojbRMrOjCFdBHQCsAf4O/MLdH4wxNhER\nkWbS6TRXXXUPf/rTahYt6s3228/h1FP78u1vH1nyc++4Yz+uueb6WI41bdrDzJ37EU899RfOPff8\nWI6ZJMVsojUUuBeYCkwhTAo9GLjXzIa6+8MberyIiEixxo69j/HjD2PNmt0AWLgQrr56Grvs8jxD\nh36ppOfu1KkTvXtvG8uxjjgi7NwwceLtsRwvaYrpubgUuMLdf5pVNtrMfgL8GFByISIiJfHoo4vW\nJhYZS5YcweTJ15csuUin0zz44H24z+aYY45nt912X3vf0qVLmTLlrmZ1AVKp1NrbnTt35vTTv12S\n2JKqmORiN+CePOVTgB9uWjgiIiItW7Ei/9vWihWlm3fx9NNPMmjQV3j99Vf56KMPmiUX3bp146yz\nzinZuStVMftcfADsmqf8P4CPNy0cERGRlu2yy0rCDgjZFrLHHp1Lds69996XzTarob5+Jl/84kEl\nO097UkzPxf8C483sbOCZqOxA4Fbgt3EFJiIikuvyy4/lrbeu4G9/OxvYlurqN9h//7s4//zSTYqs\nq6vjwQdRKbScAAAZoElEQVTv4+CDDyWdbqKhoYGamvD2uXTpEqZMaXn1iIZFCnc1YZXINNbtfZEC\nHiGsIBERESmJPn22Y9q0EUyaNI1//WsJe++9Pccf/z06d853VYr4PProHxg16gdMm/Z7hgw5dm15\nt25balgkj2KSiz7uPsTMdiMkGSngVXd/I97QRERE1ldXV8eIEce36Tl33dVwn81OO/WjqqqYGQXN\nPfbY/1FfP4tUKsX48WMZOHBPhgw5LoZIkyGVmdlaKDObAxzj7i+UJqTSqt9i5/TyzeuovuT77HLC\n0HKHUzFqaqro3r0rixcvp6GhqdzhdGhqi+RQWySH2qJt9Oq1RaqQesX0XKyJvirSwE/ehk/g/fMu\n4J+gBENERCRmxSQXk4A/mdlk4C1gZfad7j45hrhKrm/jIt656npQciEiIhKrYpKLn0TfL8xzXxqo\niOQCoOsnK8odgoiISLvT6uTC3Td9JktCLN+8rtwhiIiItDtFXbgMwMz+g7BapAGY6e7vxxZVG3i/\nugc1l3yv3GGIiIi0O8VcuGwL4DfA17OK02b2G2CYu38aV3ClMGvznVm+eR01l3xPkzlFRERKoJie\ni5sBIyQXzwLVwAHAWOAa8s/FSIy+/6ovdwgiIiLtWjHJxTHA0e7+VFbZNDNbTbigWaKTCxERESmt\nYiZnNgBL8pR/CGy2aeGIiIhIpSsmubgZGGtmvTMF0TyMq6L7REREpAMrJrk4HNgXeNvM6s3sReB9\n4GhgmJn9K/MVZ6AiIiLl9OabzvDh34zteB9//DF33nkHRx/9NS6//Mdry5uamvjVr25h8OAvc+ut\nN7N48aJNPtfKlSu55JKLmDdv7iYfqxDFzLl4LPoSEREpj08+oWreXJr67gCdSntF1Iwdd+zHNddc\nH9vxttpqKw4//L/ZZpve3Hjjz5k/fx69em1DVVUVZ5xxFltttRUnnnjKJp9n2rSHmTv3I5566i+c\ne27pLk2frZhNtH5aikBEREQ2qqmJrhf/gNrHHyW1YD5Nffqy6qRvsmZU6d80O3XqRO/e28Z6zFmz\nXmbQoC/z4oszuPfeKYwYcR4Ar7/+KgMG7BHLOY444igAJk68PZbjFaLoTbRERETaWt3119LlzjtI\nNTYCUPUPp270dayw/nDyCSU5Zzqd5sEH78N9Nsccczy77bb72vuWLl3KlCl3NasLkEql1t7u3Lkz\np5/+7bzHXrFiBbW1nTn22BO58ML/Yfjws+jcuTOzZ/+dk07a9F6LclFyISIiFWOzJ6avTSwyqpYt\no9Nv/rdkycXTTz/JoEFf4fXXX+Wjjz5ollx069aNs846Z5PP8bnP/Sef+cyOPPLIQxx33Ek0Njas\nTVAqkZILERGpGKnVq/PfsWpVyc659977kk43UV8/kx/+8NLYjvvWW2/Sr9/Oa28fd9yJTJhwG1/7\n2mA233zzvI954IF7+fDDD8jNO9JpSKVgjz324oADDootxmIpuRARkYrR2N/Y7LVX1itv+Py+lGpa\nZ11dHQ8+eB8HH3wo6XQTDQ0N1NSEt8+lS5cwZcrdLT52Q8Mir732CoMHH7329qBBX+GWW25mzJgb\nOPnkb+U93tChx2/is2kbRSUXZlZHuGhZJ6BZ/pSzc6eIiEhsPrniGqr/9RY1r9STamoiXVvLpwce\nzOqR51PK61w/+ugfGDXqB0yb9nuGDDl2bXm3blsWPSyyYsVyNtts3d6TNTU1DBlyLFOnPsDFF1+2\nyTGXUzEXLjsKuBPoRk5iAaQJ1xoRERGJXbpXLz5+5M/U/m4KNbP/xpqDDuHTr36dms1K+9az666G\n+2x22qkfVVXFbBG1zhtv/J377/8dL7/8Il261DXrjRgy5Fjmz5+3qeE289hj/0d9/SxSqRTjx49l\n4MA9GTLkuFjPkSuVmdlaKDObDbwOXEmebcDd/d/xhFYa8+cva90TFgBqaqro3r0rixcvp6Ghqdzh\ndGhqi+RQWySH2qJt9Oq1RUGzTIsZFukHDHb3fxbxWBEREWnniunbeRPoG3cgIiIi0j4U03PxA8KF\ny34MvAE0Wxfk7u/GEZiIiIhUpmKSi4cJkzanEiZwZqTQhE4REZEOr5jk4suxRyEiIiLtRjEXLnsy\n87OZ9QLWuPvHsUYlIiIiFauoxbpmNtLMPgQ+Ahaa2RwzGxVvaCIiIlKJWp1cmNlZwHXAFGAocBzw\nO+AaMxseb3giIiJSaYqZc3E+8D13H5dV9qCZvQWMAibEEpmIiIhUpGKSix2BP+Yp/xNwfTFBmFkt\ncCuhJ2QFcIO737iRx+wEvAYcoeuZiIiIJEcxcy7+DeyTp/zzwNwi47ge2As4FBgBXGZmQzfymF9C\nSa9TIyIiIkUopufiV8AtZtYDeCYqOxC4Ari5tQeLrrB6BnC4u78CvGJm1wHnAg+08JhTgPwXuxcR\nEZGyKia5uJkwNHJT9PgUsIaQdFxdxPH2iI7zXFbZ08DF+SqbWU/gWuCrwN+KOJ+IiIiUUKuHRdy9\nyd1HAVsD+0VfW7v7SHcv5lJ02wEL3L0hq2wu0DlKJHLdCExy99lFnEtERERKrKCeCzM7GHjW3Rui\nn3PtaWYAFDG5so6c65Nk3a7NiePLwBeB77TyHGtVVaWoqiroirGSpbq6qtl3KR+1RXKoLZJDbZEs\nhQ6LPAFsC8yLfk4ThkNyFXNtkVXkJBFZt1dkCsysMzAeONvdP23lOdbq0aMrqZSSi2J169al3CFI\nRG2RHGqL5FBbJEOhyUU/YEHWz3GaA2xtZlVZwyrbAitzthXfNzr3/WaWnR380czudPcRhZxs0aLl\n6rkoQnV1Fd26dWHp0pU0NhYz+iVxUVskh9oiOdQWbaN7964F1SsouXD3f2fdvAw4z92XZdeJVo9M\nAIYUGGNGPWFC6H7As1HZQcCLOfVmAP+RU/YWYaXJY4WerKkpTVNTeuMVJa/GxiYaGvSHmwRqi+RQ\nWySH2iIZCp1zcQCwS3TzNGCmmS3NqbY7RVwx1d1XmtlkYHy0fXhf4MLoPJhZb2CJu68C/pUTF8AH\n7r4AERERSYRCh0XSwKSsn8fkqfMJ8Isi47iAsEPndGAJcKm7T43u+xA4HZjcQlwiIiKSIKl0unXv\nz2bWBGzn7sXuxllW8+cvU0JShJqaKrp378rixcvV5VhmaovkUFskh9qibfTqtUVBkxZbvYmWu2ud\nj4iIiLSo1clFtCT0TGAA65adpgjLR/dx9/7xhSciIiKVppjtv8cA3wJmES5W9iywK9AbGB1faCIi\nIlKJihniOBoY5u77A+8QdsvcEZgKdIovNBEREalExSQX3Vl3NdS/AXu5+xrgZ8DguAITERGRylRM\ncjEP2Cb6+U3C3AsIO3huG0dQIiIiUrmKSS7+CNxqZp8D/gqcbGb7AOcA78UZnIiIiFSeYpKL7wMf\nAIcADwN/B14ARhK2BhcREZEOrJh9Lj4m6/ohZnYEMBD4KPoSERGRDqzVPRdmdrOZrU1K3D3t7rOA\nLsDTcQYnIiIilaeYYZGTgRfMbO1mWWb2HeAVoHNcgYmIiEhlKmYTrf8CJgIvm9nFwFcJV0O9Evh5\njLGJiIhIBSpmzsWHwNfM7A7gZmAN8GV3/2vcwYmIiEjlKWbOxeZm9kvgNMJl0P8G3Gdmx8cdnIiI\niFSeYuZczAaOAY5199OBfYEJwBQzuz/G2ERERKQCFZNczAL+y92nArh7g7v/iLDvxR5xBiciIiKV\np5g5F0e1UP6MmSm5EBER6eAKSi7MbAJwnrsvi35uSRo4I5bIREREpCIV2nPRD6jO+llEREQkr4KS\nC3c/LN/PIiIiIrkKmtBpZteZWddSByMiIiKVr9DVIhcCzZILM5tmZtvFH5KIiIhUskKTi1SesoMJ\nFysTERERWauYfS5EREREWqTkQkRERGLVmuQiXWCZiIiIdGCt2aFzjJmtzLpdC1xnZsuyK7n78Fgi\nExERkYpUaHLxFLBtTtkzwNbRl4iIiAhQ+CZah5Y4DhEREWknNKFTREREYqXkQkRERGKl5EJERERi\npeRCREREYqXkQkRERGKl5EJERERipeRCREREYqXkQkRERGKl5EJERERipeRCREREYqXkQkRERGKl\n5EJERERipeRCREREYqXkQkRERGKl5EJERERipeRCREREYqXkQkRERGKl5EJERERipeRCREREYqXk\nQkRERGKl5EJERERiVVPuAADMrBa4FRgKrABucPcbW6h7BHAVsCvwT+BSd/99W8UqIiIiG5aUnovr\ngb2AQ4ERwGVmNjS3kpn9F3A/8GtgD+A24D4zG9B2oYqIiMiGlL3nwszqgDOAw939FeAVM7sOOBd4\nIKf6N4DH3f2W6PatZnYUcALwWhzx1NfPZsyY6cyf34VevVYycuQgBg7cPY5Di4iIdAhlTy4IPRA1\nwHNZZU8DF+epOwnolKd8yzgCqa+fzbBhs5gz5yIgBaSZNes2Jk5ECYaIiEiBkjAssh2wwN0bssrm\nAp3NrGd2RQ/W9lCY2eeALwGPxRHImDHTmTPnTEJiAZBizpwzGTNmehyHFxER6RCS0HNRB6zOKcvc\nrm3pQWa2NWH+xV/d/eFCT1ZVlaKqKpX3vgUL6liXWGSkWLCgjpqaJORh5VNdXdXsu5SP2iI51BbJ\nobZIliQkF6tYP4nI3F6R7wFm1hv4M5AGjm/NyXr06EoqlT+56NNnTXTI7PvT9O27hu7du7bmNO1W\nt25dyh2CRNQWyaG2SA61RTIkIbmYA2xtZlXu3hSVbQusdPePcyubWR9gOtAIHOruC1tzskWLlrfY\nczFixMHMmHEb77+fGRpJ07fvbZx99sEsXry8Nadpd6qrq+jWrQtLl66ksbFp4w+QklFbJIfaIjnU\nFm2j0A/aSUgu6oE1wH7As1HZQcCLuRWjlSV/iuof5u7zW3uypqY0TU3pvPcNGLAbEyakGTv2OubN\n67x2tciAAbvR0KBfVoDGxia9FgmhtkgOtUVyqC2SoezJhbuvNLPJwHgzGw70BS4EToO1QyBL3H0V\n8GOgH2E/jKroPgi9HEvjiGfgwN254w6tDBERESlWUma+XAC8TBjuGEvYdXNqdN+HhH0sIOzg2QWY\nAXyQ9XVTm0YrIiIiLUql0/mHCNqr+fOXdawnHJOamiq6d+/K4sXL1eVYZmqL5FBbJIfaom306rVF\n/kmLOZLScyEiIiLthJILERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxEREYmVkgsRERGJlZIL\nERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxEREYmVkgsR\nERGJlZILERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxER\nEYlVTbkDqFT19bMZM2Y68+d3oVevlYwcOYiBA3cvd1giIiJlp+SiCPX1sxk2bBZz5lwEpIA0s2bd\nxsSJKMEQEZEOT8MiRRgzZjpz5pxJSCwAUsyZcyZjxkwvZ1giIiKJoOSiCPPnd2FdYpGRispFREQ6\nNiUXRejVayWQzilNR+UiIiIdm5KLIowcOYg+fW5jXYKRpk+f2xg5clA5wxIREUkETegswsCBuzNx\nIowdex3z5nXWahEREZEsSi6KNHDg7txxh5IJERGRXBoWERERkVgpuRAREZFYKbkQERGRWCm5EBER\nkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYaROtEquvn82YMdOZP7+LdvIUEZEOQclFCdXX\nz2bYsFnMmXMR4SqqaWbNuo2JE1GCISIi7ZaGRUpozJjpzJlzJusuz55izpwzGTNmejnDEhERKSkl\nFyU0f34X1iUWGamoXEREpH1SclFCvXqtZN1l2TPSUbmIiEj7pOSihEaOHESfPrexLsFI06fPbYwc\nOaicYYmIiJSUJnSW0MCBuzNxIowdex3z5nXWahEREekQlFyU2MCBu3PHHRtPJrRkVURE2gslFwmg\nJasiItKeaM5FAmjJqoiItCeJ6Lkws1rgVmAosAK4wd1vbKHunsAvgQHA68DZ7j6zrWIthdYsWdXw\niYiIJF0ikgvgemAv4FBgJ2Cymb3j7g9kVzKzOmAacBdwGnA2MM3Mdnb3il3fuW7JanaCsf6SVQ2f\niIhIJSj7sEiUMJwBjHT3V9x9KnAdcG6e6icBK9z9Ig9GAcuA49su4vgVumS10OGT+vrZDB9+C0ce\nOYHhw2+hvn523vMWWk9ERKQ1ktBzsQchjueyyp4GLs5T9wvRfdmeAfYHJpckujZQ6JLVQoZPCu3d\naE0vSH39bMaN+wuLFm1Ojx6fcO65h+XtKSl0yKY91CtnbB2lLZIcW6ae2qL8sWXqVXpbJDm27HqP\nPDL/qXT6hoPXq5ArnU6X9at///5D+/fv/0FO2W79+/dv7N+/f8+c8of79+//s5yya/v37//7Qs83\nb97SdKV+DR58TRqa0pDO+mpKDx58TavqtKbeo4/OSPfpMz6rblO6T5/x6UcfndFh6yU5tvZSL8mx\ndbR6SY6tvdRLcmz56hXyXpuE5OKb/fv3fzunrF+UXGyfU/5Y//79L8sp+2n//v0fLfR8CxYsSy9a\n9ElFfj3++Avpvn2b/yL07Ts+/fjjL6yts99+N+ckDOFrv/1ubnasQusdddS1Wedbl4QcddS1HbZe\nkmNrL/WSHFtHq5fk2NpLvSTHlq9epSQXx22g52KrnPJHWui5eKjcz6OtvmD3veG438EFT8Gx98Lu\neze//7h78/2ywLH3Flfvgqea18l8XfBUR62X5NjaS70kx9bR6iU5tvZSL8mx5auX+76U7ysVHlg+\nZrY/8CTQ2d2borJDgUfcffOcur8CNnP34Vllk4CV7n52mwUtIiIiLSr7ahGgHlgD7JdVdhDwYp66\nzwNfzCk7ICoXERGRBCh7zwWAmf2SkCQMB/oCk4DT3H2qmfUGlrj7KjPbAngTmALcBnwXOA7YtZL3\nuRAREWlPktBzAXAB8DIwHRgLXBrtdwHwIXACgLsvAwYDBwMvAfsCX1diISIikhyJ6LkQERGR9iMp\nPRciIiLSTii5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgl4aqoklBmVktY8nuOuz8Vle0E3E64\nEu07wPnu/udyxdjemdn2wBjgMGAF8DvgR+7+qdqibZnZLsAthD15FgLj3P366L6dUFu0OTObBszN\n7NqsdkgO9VxIXlFiMQX4bM5dDwEfAHsDdwMPmlnfNg6vI7kf6Ex4QzsJOBK4MrpvKmqLNmFmKWAa\nMBcYSNjA7xIzOymqorZoY9Fr//WcYv1/SgglF7IeM9udsKV6v5zyQcDOwFkeXAs8R9hZVWJmZkbY\nKO50d3/D3Z8BfgKcbGaHEdpHbdE2egOzgBHu/k93/xPwOHCg2qLtmVl34Drghawy/X9KEA2LSD6H\nEP5xXkLois/4AjDT3VdllT1N6IKU+H0EfM3dF+SUb0m4Fo/aoo24+0fANzK3zewAwjWQRqC2KIfr\ngclAn6wy/X9KECUXsh53H5/5OXx4Xms7QpdjtrmE68FIzNx9CbB2vDjqmj+XkPipLcrEzN4BdgAe\nAR4AbkJt0WaiHoqDgAHA+Ky79DeRIBoWkdaoA1bnlK0GassQS0f0C2BP4MeoLcppKGHuy0BgNGqL\nNhPNBRtPGJ7Kfc3VDgmi5EJaYxXr/6HW0nzoRErAzH4OjAROcfe/o7YoG3ef6e5/IFxw8Szyv4Gp\nLUrjcuBFd38sz336m0gQDYtIa8xh/dUj2xKuXCslYmZjCW9ip7j7Q1Gx2qINmdk2wP5ZV2sG+DvQ\nifCa757zELVFaZwI9DazZdHtWgAzOw74GfqbSAz1XEhrPA/sFXVNZhwYlUsJmNllwJnAie5+b9Zd\naou21Q94wMy2yyrbB5hHmDS4t9qiTRxCmGuxR/T1MGEZ8B7ADPQ3kRjquZDWeBJ4D5hkZlcCRwGf\nB04vZ1DtVbQk+BLCJ7Jnzax31t1qi7b1ImFDuQlmdgEh2bgOuAp4CrVFm3D397JvRz0YaXd/28z+\njdohMdRzIRuTzvzg7k3A0YSuxpeAk4Eh7v5+mWJr744i/I1eQpgF/wGhi/eDqC2GoLZoE1m/+8uB\nZ4HbgJvcfVx031GoLcpK/5+SJZVOpzdeS0RERKRA6rkQERGRWCm5EBERkVgpuRAREZFYKbkQERGR\nWCm5EBERkVgpuRAREZFYKbkQERGRWCm5EBERkVgpuRAREZFYKbkQERGRWOnCZSJSVmZ2BTCYcGXL\nAe7+96h8K+AWwmW2HwF+4e7PlC1QESmYri0iImVnZjcSLsT2sLuPyrnvBne/sDyRiUgxNCwiIknQ\nCPwaONXMajOFZtYPmFW2qESkKEouRKSszGwX4B/ABGAL4ISsuw8Eni5HXCJSPCUXIlJuBwJ/dfeP\ngKnAmVn37ezu75QlKhEpmpILESk3c/c3op/HA180s93LGZCIbBolFyJSbmtnlbv748BbwFlm1hNY\nULaoRKRoSi5EpGyiBGJuTvFtwLeAL6P5FiIVScmFiJTTAayfQEwCugA/Al5t64BEZNMpuRCRcjoQ\nqM8ucPeFwP3Ah+6ujXhEKpCSCxFpc2a2j5ndB5wPTDGz3jlVbgWebPvIRCQO2qFTREREYqWeCxER\nEYmVkgsRERGJlZILERERiZWSCxEREYmVkgsRERGJlZILERERiZWSCxEREYmVkgsRERGJlZILERER\niZWSCxEREYmVkgsRERGJ1f8Drfh6Zvx+wuoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11a219d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"\n",
"\n",
"strategies = (\"Defector\", \"Tit For Tat\")\n",
"ns = range(2, 50)\n",
"invader = [fixation(strategies, n) for n in ns] \n",
"resistor = [fixation(strategies, n, n - 1) for n in ns] \n",
"plt.title(\"{} vs population of {}\".format(*strategies))\n",
"plt.scatter(ns, invader, label=\"$i=1$\")\n",
"plt.scatter(ns, resistor, color=\"red\", label=\"$i=N-1$\")\n",
"\n",
"plt.xlabel(\"$N$\")\n",
"plt.ylabel(\"Fixation probability\")\n",
"plt.ylim(0, 1)\n",
"plt.xlim(min(ns), max(ns))\n",
"plt.legend(loc=5);"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.135"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"players = [axl.Defector, axl.Cooperator]\n",
"N, repetitions, turns, fixation_count = 10, 200, 50, 0\n",
"for seed in range(repetitions):\n",
" initial_population = [players[0]()] + [players[1]()] * (N - 1)\n",
" mp = axl.MoranProcess(initial_population, turns=turns)\n",
" mp.play()\n",
" if mp.winning_strategy_name == \"Defector\":\n",
" fixation_count += 1\n",
"fixation_count / repetitions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment