{ "metadata": { "name": "via_freedom_to_coercion" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Using pyevodyn to study a game with custom payoff function*" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "* Work in progress" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pyevodyn.utils as utils\n", "import pyevodyn.numerical as num" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook analyzes the game in **\"Via freedom to coercion: The emergence of costly punishment\"** by Hauert, Traulsen, Brandt, Nowak and Sigmund (*Science*, 2007). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We first define the payoff structure. For that we will first create two auxiliary functions that give the benefit and effective cost of cooperation given a population composition and other parameters of the game." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def benefit_function(population_composition, r, c, sigma, beta, gamma, group_size, population_size):\n", " #first how many are there for each strategy\n", " [xc, xd,xl,xp] = population_composition\n", " #if almost everyone is a loner there is no benefit\n", " if xl >= population_size-1:\n", " return sigma\n", " part_1_a = r*c*(xc+xp)/(population_size-xl-1.0)\n", " part_1_b = 1.0 - (population_size/(group_size*(population_size-xl)))\n", " part_1 = part_1_a*part_1_b \n", " part_2_a = r*c*(xc+xp)*(xl-group_size+1.0) \n", " part_2_b = group_size*(population_size-xl-1.0)*(population_size-xl)\n", " binomial = utils.binomial_coefficient(xl, group_size-1)/utils.binomial_coefficient(population_size-1, group_size-1)\n", " part_2 = binomial*(sigma+ (part_2_a/part_2_b))\n", " return part_1 + part_2\n", "\n", "def contribution_cost(population_composition, r, c, sigma, beta, gamma, group_size, population_size):\n", " [xc, xd,xl,xp] = population_composition\n", " if xl >= population_size-1:\n", " return 0.0\n", " part_1 = 1.0 - (r/group_size)*((population_size-group_size)/(population_size-xl-1.0))\n", " binomial = utils.binomial_coefficient(xl, group_size-1)/utils.binomial_coefficient(population_size-1, group_size-1)\n", " part_2_a = (r/group_size)*((xl+1.0)/(population_size-xl-1.0))\n", " part_2_b = (r*(population_size-xl-2.0)/(population_size-xl-1.0))-1\n", " return part_1 + binomial*(part_2_a+part_2_b)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we are ready to define the payoff function. Our strategies are *C*, *D*, *L* and *P* (indexed: 0,1,2 and 3). The function needs to respect the signature **payoff_function(index, population_composition, **kwargs)**, where *population_composition* is a list that contains how many copies are there of each strategy. Consequently, *sum(population_composition)* equals the population size. Default values correspond to those reported in Figure 1 of Hauert et al." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def payoff_function_CDLP(index, population_composition, r=3.0, c=1.0, sigma=1.0, beta=1, gamma=0.3, group_size=5.0):\n", " [xc, xd,xl,xp] = population_composition\n", " population_size = sum(population_composition)\n", " benefit = benefit_function(population_composition, r, c, sigma, beta, gamma, group_size, population_size)\n", " if index == 0:\n", " #payoff for cooperators\n", " return benefit - c*contribution_cost(population_composition, r, c, sigma, beta, gamma, group_size, population_size)\n", " if index == 1:\n", " #payoff for defectors\n", " return benefit - (beta)*(group_size-1.0)*(xp/(population_size-1.0))\n", " if index == 2:\n", " #loner payoff\n", " return sigma\n", " if index == 3:\n", " #altruistic punishers\n", " return benefit - c*contribution_cost(population_composition, r, c, sigma, beta, gamma, group_size, population_size) - gamma*(group_size-1.0)*(xd/(population_size-1.0))\n", " raise ValueError('You should never be here!')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are ready to study evolutionary dynamics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Stochastic dynamics\n", "\n", "We will inspect the stationary distribution of a Moran Process with small mutations (i.e., monomorphic populations). Payoff-to-fitness mapping uses an exponential function.\n", "\n", "Let's see how the abudance changes as a function of the intensity of selection." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#we set the fixed parameters, mutation probability, population size and the game\n", "u = 0.001\n", "N=30\n", "r=3.0\n", "c=1.0\n", "sigma=1.0\n", "beta=1\n", "gamma=0.3\n", "group_size=5.0\n", "u = 0.001\n", "payoff_function= payoff_function_CDLP\n", "#build the result for a range of intensity of selections\n", "intensity_vector= np.logspace(-4.5, 0.7, num=45) # we will use a logarithmic scale on the x axis\n", "c_list= []\n", "d_list= []\n", "l_list= []\n", "p_list= []\n", "for intensity_of_selection in intensity_vector:\n", " markov_chain = num.monomorphous_transition_matrix(intensity_of_selection, mutation_probability=u, population_size=N, payoff_function=payoff_function_CDLP, number_of_strategies=4, \n", "mapping ='EXP', r=r, c=c, sigma=sigma, beta=beta, gamma=gamma, group_size=group_size)\n", " (cooperators,defectors,loners, punishers) = num.stationary_distribution(markov_chain)\n", " c_list.append(cooperators)\n", " d_list.append(defectors)\n", " l_list.append(loners)\n", " p_list.append(punishers)\n", "\n", "#Plotting stuff\n", "plt.rc('lines', linewidth=2.0)\n", "plt.figure(figsize=(10,4))\n", "plt.plot(intensity_vector, c_list, 'b-', label='Cooperators')\n", "plt.plot(intensity_vector, d_list, 'r-', label = 'Defectors')\n", "plt.plot(intensity_vector, l_list, 'y-', label='Loners')\n", "plt.plot(intensity_vector, p_list, 'g-', label='Punishers')\n", "plt.xscale(\"log\") #set scale to logarithmic\n", "plt.axis([10**-4.5, 10**0.7, 0, 1.0])\n", "plt.rc('lines', linewidth=2.0)\n", "plt.legend(loc='best')\n", "plt.title('Frequency in stationarity')\n", "plt.xlabel('Intensity of selection')\n", "plt.ylabel('Abundance')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 53, "text": [ "" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAEeCAYAAABfZMtKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4FFXbwOHf7qaHkAQCJBB6i9SEUBJqjDQJ7fVFQSnS\nqwEEFUGlKB+IIkpRAUVBQQReaYKCogaIhBIIVUVAaqQnhJC+u+f7Y2HJplKSbMpzX9dcU86Zs8/O\nBPLkzJkZjVJKIYQQQggh8o3W2gEIIYQQQhR3knAJIYQQQuQzSbiEEEIIIfKZJFxCCCGEEPlMEi4h\nhBBCiHwmCZcQQgghRD6ThEsIUaxcuHABFxcXCuMTbxo0aMCuXbsK/HML8zERoqSQhEuIYqRatWo4\nOTnh4uKCi4sLpUuX5sqVK9YOq0BVqVKF+Ph4NBpNnrZbrVo1fv311weuP3DgQN566y2LbcePH6dt\n27Z5GteDyHhMgoKCWLZsWYHHIURJJgmXEMWIRqNhy5YtxMfHEx8fz+3bt/H09LSoo9frrRRd0abR\naIpkD1FW5zuvk1EhRO4k4RKiBNBqtXz11Vf4+fnh4+MDwNGjRxk5ciRVqlRh4sSJXLhwwVz//Pnz\nDB8+HE9PT4YNG0a/fv3MvTXLly+nTZs2mdr/559/ANMv+LVr1xIcHIyvry/Lli0jNTUVgLCwMLy9\nvVm6dCk1atSgVatW/Pjjj+Z2UlNTWb16Ne3bt8fNzY22bduSnJxMSEgIixYtsvjMRo0asWnTpkzf\n9dy5c2i1WoxGI2DqzXn33Xfp1KkTXl5eTJgwgVu3bmV5nBITExk6dCjVqlWjbNmytGvXDqUU/fv3\n58KFC3Tr1g0XFxfmzp0LwLPPPouXlxeVK1dmwoQJ5mOwdOlSvvnmG9577z1cXFzo0aMHYOol++WX\nX8zHaeXKlQQEBBAYGMiqVavMyVFux2nr1q34+fnh6upKhw4d+OqrrzJ9/3Xr1tGgQQM6dOjA+fPn\n0Wq1GAwG3njjDXbv3s1LL72Ei4sLoaGhvPTSS7zyyisWx6J79+589NFHWR4nIcQjUEKIYqNatWpq\nx44dmbZrNBrVpk0bdfjwYZWcnKxu3Lih3N3d1caNG1VcXJyaNWuWatmypbm+v7+/mjhxorp+/bp6\n//33lZ2dnXrrrbeUUkp9+eWXqnXr1pnaP3PmjFJKqfnz56vg4GB1/Phxdfr0aRUUFKSWLl2qlFLq\nt99+U7a2tmrUqFHq2rVr6rPPPlPe3t7mdubNm6eaN2+udu7cqQwGg4qIiFApKSlq7dq1qkWLFuZ6\nhw8fVmXLllVpaWmZvuvZs2eVRqNRBoNBKaVUu3btVOXKldWOHTvUpUuXVLNmzdTnn3+e5fFbtGiR\neuGFF1RcXJzS6/UqPDzc4tj+8ssvFvW//PJLdefOHfXvv/+q/v37q759+5rLBg4caD5mWbXxxRdf\nqEaNGqkDBw6ogwcPKl9fX/Xll18+0HEKCwtTx48fV3q9Xm3btk25uLioU6dOWXz/nj17qjNnzqjk\n5ORMxyQoKEgtW7bM3N7+/ftVxYoVldFoVEopdf36deXk5KSuXbuW5XESQjw8SbiEKEaqVq2qSpUq\npdzc3JSbm5v6z3/+o5QyJURfffWVud7SpUvVsGHDzOt6vV6VL19eXb16VV25ckU5ODiopKQkc3nl\nypUfOOFq2bKl+v33381lGzZsUF26dFFKmRIJnU6nrl+/rpRSKi0tTZUqVUr99ddfSimlmjdvrjZs\n2JDpeyUlJSl3d3d1+vRppZRSEydOVGPGjMnyGGSVXISGhprLZ8+erXr37p3lvgsWLFAdO3ZUf/zx\nR6ayrBKu9E6dOqXc3d3Nnztw4ED15ptvZttG9+7d1ZIlS8xln332merevbtSKvfjlFG/fv3U3Llz\nLb7/rl27cjwmGZPOJ554Qv38889KKaUWLlyoQkJCsv2uQoiHJ5cUhShGNBoNmzZtIjY2ltjYWNav\nX28ua9GihXl5x44drFq1Cnd3d9zd3fHw8CAhIYFdu3axf/9+atWqhYODg7l+kyZNHujzExISiIiI\nICQkxNz2wIED2bNnj7mOl5cXHh4eANjY2ODh4UF0dDQJCQlERkbSqlWrTO06ODjw3HPP8fXXX6OU\n4ttvv6V///4PfFx8fX3Ny56enkRHR2dZb8iQIQQFBdG1a1caNmyY68DyuXPn0r59e8qUKUOzZs24\ndesW58+fN5fnNFZqz549+Pv7m9f9/f3ZvXu3eT274wRw4sQJBg0aRN26dXF1deV///sfR48etWg/\n/fnOSsbYBgwYwMqVKwFYuXLlQx1fIUTuJOESooSwsbExLwcHBzNgwABzYhYbG8udO3fo1asXzZo1\n4/Tp0yQlJZnrHzp0yLxcqVIlrl69al6PiooyLzs7O9OiRQu2b99ubvfWrVvExsbmGp+zszPNmjUj\n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\n5GH/D26d3Vz//OpPAAAAAElFTkSuQmCC\n" } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Altruistic punishment wins when selection is positive!" ] } ], "metadata": {} } ] }