CoopSim - A Computer Simulation of the Evolution of Cooperation. User's Manual

1 Introduction
2 Aknowledgements
3 License
4 Installation
5 First Steps - A guided tour through CoopSim
6 Comprehensive Overview
7 Advanced Topics
    7.1 Technical notes on the dynamical model
    7.2 Programming user strategies
    7.3 Defining user setups
8 Further Reading

7.3 Defining user setups

There are many more parameters that determine a simulation than can be edited through the simulation setup dialog. To change these parameters, thereby gaining access to a much wider range of possible simulation scenarios, it is necessary to define the simulation setup manually on the User Defined Strategies page.

All parameters that determine a simulation's behaviour are defined in an object of class Simulation.SimSetup. To define a simulation setup, it suffices to instantiate this class with the needed parameters. Here is an explanation of the parameters the constructor of the SimSetup class takes:

    name         = string: name of the model
    strategyList = list of Strategy objects: the list of the strategies
    population   = tuple: population share for each strategy
    correlation  = float [0.0-1.0]: correlation factor
    gameNoise    = float [0.0-1.0]: in game noise
    noise        = float [0.0-1.0]: evolutionary background noise
    iterations   = int:  number of iterations for one match
    samples      = int:  number of sample matches to take (only useful for 
                   randomizing strategies)
    payoff       = tuple of floats:  payoff tuple (T, R, P, S)
    demes        = DemeDescriptor: defines the deme structure of the
                   population or `None' if there is only one deme
    mutators     = list of Mutator objects: description of possible
                    mutation (or degeneration resp.) of strategies during 
		    the course of the evolutionary development.
    cachedPM     = cached payoff matrix
    cachedLog    = cached tournament log string

The most interesting use for programmed setups is setups with mutators. Mutators describe a genetic drift of certain strategies into another type of strategy. For example one could imagine a certain percentage of TITFORTAT players degenerating into DOVE every generation, because they weren't really able to understand the principle of TITFORTAT. The assumption of degeneration has great consequences for the topics of evolutionary stability and the like. Here is an example of a simulation setup with a non uniform population consisting of the strategies GRIM, DOVE and TESTER, where GRIM degenerates to DOVE at a rate of one percent per generation. (Try this one out and let the ecological simulation continue for at least 400 generations. What can you observe?)

custom_setup = SimSetup(name         = "Grim => Dove, Tester",
                        strategyList = [Grim(), Dove(), Tester()],     
                        population   = (0.8, 0.01, 0.19), 
                        mutators     = [Mutator(0,1,0.01)])

t g+ f @