{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import collections\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def roll_n_sided_dice(n=6):\n", " \"\"\"\n", " Roll a dice with n sides.\n", " \"\"\"\n", " return np.random.randint(1, n + 1)\n", "\n", "class MoranProcess:\n", " \"\"\"\n", " A class for a moran process with a population of \n", " size N=3 using the standard Hawk-Dove Game:\n", " \n", " A = \n", " [0, 3]\n", " [1, 2]\n", "\n", " Note that this is a simulation corresponding to an \n", " in class activity where students roll dice.\n", " \"\"\"\n", " def __init__(self, number_of_hawks=1, seed=None):\n", " \n", " if seed is not None:\n", " np.random.seed(seed)\n", " \n", " self.number_of_hawks = number_of_hawks\n", " self.number_of_doves = 3 - number_of_hawks\n", " \n", " self.dice_and_values_for_hawk_birth = {1: (6, {1, 2, 3}), 2: (4, {1, 2, 3})}\n", " self.dice_and_values_for_hawk_death = {1: (6, {1, 2}), 2: (6, {1, 2, 3, 4})}\n", "\n", " self.history = [(self.number_of_hawks, self.number_of_doves)]\n", " \n", " def step(self):\n", " \"\"\"\n", " Select a hawk or a dove for birth.\n", " Select a hawk or a dove for death.\n", " \n", " Update history and states.\n", " \"\"\" \n", " birth_dice, birth_values = self.dice_and_values_for_hawk_birth[self.number_of_hawks]\n", " death_dice, death_values = self.dice_and_values_for_hawk_death[self.number_of_hawks]\n", "\n", " select_hawk_for_birth = self.roll_dice_for_selection(dice=birth_dice, values=birth_values)\n", " select_hawk_for_death = self.roll_dice_for_selection(dice=death_dice, values=death_values)\n", " \n", " if select_hawk_for_birth:\n", " self.number_of_hawks += 1\n", " else:\n", " self.number_of_doves += 1\n", " \n", " if select_hawk_for_death:\n", " self.number_of_hawks -= 1\n", " else:\n", " self.number_of_doves -= 1\n", " \n", " self.history.append((self.number_of_hawks, self.number_of_doves))\n", "\n", " \n", " def roll_dice_for_selection(self, dice, values):\n", " \"\"\"\n", " Given a dice and values return if the random roll is in the values.\n", " \"\"\"\n", " return roll_n_sided_dice(n=dice) in values\n", " \n", " def simulate(self):\n", " \"\"\"\n", " Run the entire simulation: repeatedly step through \n", " until the number of hawks is either 0 or 3.\n", " \"\"\"\n", " while self.number_of_hawks in [1, 2]:\n", " self.step()\n", " return self.number_of_hawks\n", " \n", " def __len__(self):\n", " return len(self.history)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "repetitions = 10 ** 7\n", "end_states = []\n", "path_lengths = []\n", "for seed in range(repetitions):\n", " mp = MoranProcess(seed=seed)\n", " end_states.append(mp.simulate())\n", " path_lengths.append(len(mp))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5452601" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "counts = collections.Counter(end_states)\n", "counts[3] / repetitions" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEICAYAAACavRnhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHyNJREFUeJzt3X2UXVWZ5/Hvz4Q3eUkCxIgJbYFE\nWcGRgDUhDLRDQwsB1DBrlAZZTWBF0w4wYqujQacbFLRDv4gyg7hQYhJRAw0qaUDSMYK2OgEq8hoi\nUmKQREhCQogIooFn/ti74ORyq+reu6vqVpHfZ62z6py99zn7uScn9zlnn3PvVURgZmZW4jXtDsDM\nzEY+JxMzMyvmZGJmZsWcTMzMrJiTiZmZFXMyMTOzYk4mbSDpIknXNNE+JB00mDH10u8xktYOdb9m\nNvI4mTRI0hpJz0l6RtJ6SQsk7dHAeiPmDXmokpaks3Jfl9WUz8zlCwY7hkblxP+n/O/eMx3YS1tJ\n+rSk30jaKmmxpL0q9adK+pmkZyXd3mQcu0i6TNJvJT0l6cuSdqrU3y7pD5UYH6rUHSpplaQnJX20\nUr6TpDsk7d/UTnl5/Ysl3S9pm6SL+mg3v79jS9JUSSvzvlkpaWqlTpIulbQpT5dKUosx7yLpK/n/\n8GZJ/yZpYqV+b0nflfR7SY9Ken+lbrD241RJ/yHpaUlrJf1dP+3/VtIT+RibL2mXSl2HpNvyfvyF\npL9sJaZWOJk0590RsQdwONAJ/O82xzOS/Qo4VdLoStks4Jdtiqcv10bEHpXpkV7anQn8NXAU8AZg\nN+D/VOo3A18E5rUQw1zSMfdW4M2kY7D2+DuvEuNbKuX/AHwcOBT4tKTX5/KPAjdExGMtxAPQDXwC\nuLm3BpKOBt7U10Yk7QzcCFwDjAMWAjfmcoA5wCk5/rcB7wb+psWYzweOzNt5A/AU2/8bXQH8EZgA\nnAFcKemQXDdY+/FbwI+BvYH/Cpwj6T31Gko6gXQsHAe8ETgQ+EylybeBu4F9gE8D10sa32JczYkI\nTw1MwBrgLyvL/wTclOfPBlYDvwMeAf4ml+8OPAe8CDyTpzcAFwHXAYvyOquAzj76DuCgPL8L8M/A\nb4D1wFeA3XLdMcBa4GPABuBx4OzKdvYB/g3YCtwFXAL8JNf9OPfz+xznXzWwvZOAB/NrWAd8vMF9\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(path_lengths, bins=20)\n", "plt.title(\"Path lengths: Mean={:0.2f}, 95%={:0.2f}, 80%={:0.2f}\".format(np.mean(path_lengths), \n", " np.percentile(path_lengths, 95),\n", " np.percentile(path_lengths, 80)));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this is not how we would do this in practice:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.4545, 0. , 0. , 0.5455])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = np.array([[1, 0, 0, 0],\n", " [1 / 6, 1 / 2, 1 / 3, 0],\n", " [0, 1 / 6, 7 / 12, 1 / 4],\n", " [0, 0, 0, 1]])\n", "np.round(np.linalg.matrix_power(P, 100)[1], 4)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def theoretic_fixation(N, game, i=1):\n", " \"\"\"\n", " Calculate x_i\n", " \"\"\"\n", " f_ones = np.array([(game[0, 0] * (i - 1) + game[0, 1] * (N - i)) / (N - 1) for i in range(1, N)])\n", " f_twos = np.array([(game[1, 0] * i + game[1, 1] * (N - i - 1)) / (N - 1) for i in range(1, N)])\n", " gammas = f_twos / f_ones\n", " return (1 + np.sum(np.cumprod(gammas[:i-1]))) / (1 + np.sum(np.cumprod(gammas)))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.54545454545454553" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theoretic_fixation(N=3, game=np.array([[0, 3], [1, 2]]), i=1)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Ns = range(2, 20 + 1)\n", "fixations = [theoretic_fixation(N=n, game=np.array([[0, 3], [1, 2]]), i=1)\n", " for n in Ns]\n", "plt.scatter(Ns, fixations)\n", "plt.xlabel(\"$N$\")\n", "plt.ylabel(\"$x_1$\")\n", "plt.title(\"Theoretic fixation probability\");" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda env:anaconda3]", "language": "python", "name": "conda-env-anaconda3-py" }, "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": 2 }