Class CSD
- All Implemented Interfaces:
Runnable
,IBS.HasIBS
,IBS.HasIBS.CPairs
,MilestoneListener
,Features
,Features.Pairs
,HasDistribution
,HasDistribution.Strategy
,HasHistogram
,HasHistogram.Degree
,HasHistogram.Fitness
,HasHistogram.Strategy
,HasMean
,HasMean.Fitness
,HasMean.Strategy
,HasPop2D
,HasPop2D.Fitness
,HasPop2D.Strategy
,HasPop3D
,HasPop3D.Fitness
,HasPop3D.Strategy
,CLOProvider
- Direct Known Subclasses:
scanCSD
In the continuous prisoner's dilemma the payoff to an \(x\)-strategist facing an individual with strategy \(y\) is thus given by \[P(x,y)=B(y)-C(x),\] which means the benefits only depend on the opponents trait while the costs only depend on the player's own trait. Clearly the only way for the \(x\) strategist to increase its payoff is to lower the investment level. The same applies to the \(y\) strategist and hence without any further mechanisms the investment levels will invariably decrease and cooperation vanish, just as in the traditional discrete prisoner's dilemma with the two fixed traits of cooperation and defection.
In contrast, in the continuous snowdrift game the payoff to an
\(x\)-strategist facing an individual with strategy \(y\) is thus given by
\[Q(x,y)=B(x+y)-C(x),\]
which means that the benefit that the \(x\)-strategist obtains is based on
the total cooperative investment made by both agents, while the costs depend
only on its own trait, just as before. Because of \(B(x)>C(x)\) this
implies that it is always advantageous for an individual to make a (small)
cooperative investment if its partner is not doing so. As a consequence we
might expect that cooperative investment levels evolve towards some non-zero
level. As it turns out, the evolutionary dynamics is much richer and is
analytically tractable using the framework of adaptive dynamics. In
particular, it is possible that a population spontaneously split through
evolutionary branching into two stably co-existing phenotypes of high and low
investors. This dynamic provides an intriguing evolutionary pathway for the
origin and emergence discrete traits as assumed in classical
2×2
interactions.
- Author:
- Christoph Hauert
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class Continuous
Continuous.Benefits, Continuous.Costs, Continuous.Traits2Payoff
Nested classes/interfaces inherited from interface Features
Features.Groups, Features.Pairs, Features.Static
Nested classes/interfaces inherited from interface HasDistribution
HasDistribution.Strategy
Nested classes/interfaces inherited from interface HasHistogram
HasHistogram.Degree, HasHistogram.Fitness, HasHistogram.StatisticsProbability, HasHistogram.StatisticsStationary, HasHistogram.StatisticsTime, HasHistogram.Strategy
Nested classes/interfaces inherited from interface HasMean
HasMean.Fitness, HasMean.Strategy
Nested classes/interfaces inherited from interface HasPop2D
HasPop2D.Fitness, HasPop2D.Strategy
Nested classes/interfaces inherited from interface HasPop3D
HasPop3D.Fitness, HasPop3D.Strategy
Nested classes/interfaces inherited from interface IBS.HasIBS
IBS.HasIBS.CGroups, IBS.HasIBS.CPairs, IBS.HasIBS.DGroups, IBS.HasIBS.DPairs, IBS.HasIBS.MCGroups, IBS.HasIBS.MCPairs
-
Field Summary
Fields inherited from class Continuous
cloBenefits, cloCosts, cloTraitRange, cxMaxMonoScore, cxMaxScore, cxMinMonoScore, cxMinScore, extremalScoresSet, MINMAX_ITER, MINMAX_STEPS, mutation, population, species, traitMax, traitMin, traits2payoff
Fields inherited from class Module
active, cloDeathRate, cloGeometry, cloNGroup, cloNPopulation, cloPhase2DAxis, cloSpeciesUpdateRate, cloTraitColors, cloTraitDisable, cloTraitNames, competition, deathRate, defaultColor, engine, ibs, ID, interaction, logger, map2fitness, markers, model, nActive, name, nGroup, nPopulation, nTraits, opponent, playerUpdate, speciesUpdateRate, structure, traitColor, traitName, trajectoryColor, VACANT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns a string with information about the authors of the module.getKey()
Returns identifier of the active module.getTitle()
Returns title of active module, e.g.void
load()
Load new module and perform basic initializations.double
pairScores
(double me, double[] groupTraits, int len, double[] groupPayoffs) Calculate the payoff/score for modules with interactions in pairs and a single continuous trait.Methods inherited from class Continuous
add, check, collectCLO, getMaxGameScore, getMaxMonoGameScore, getMinGameScore, getMinMonoGameScore, getMutation, getTraitMax, getTraitMin, setExtremalScores, setTraitRange, unload
Methods inherited from class Module
createGeometry, createIBSPop, getActiveTraits, getCompetitionGeometry, getDeathRate, getDependent, getGeometry, getIBSPopulation, getID, getInteractionGeometry, getMapToFitness, getMarkers, getMeanColors, getModelTypes, getNActive, getName, getNGroup, getNPopulation, getNRoles, getNSpecies, getNTraits, getOpponent, getPlayerUpdate, getSpecies, getSpecies, getSpeciesUpdateRate, getTraitColor, getTraitColors, getTraitName, getTraitNames, getTrajectoryColor, getVacant, init, isNeutral, processColorMap, reset, run, setActiveTraits, setDeathRate, setGeometries, setIBSPopulation, setModel, setName, setNGroup, setNPopulation, setNTraits, setOpponent, setSpeciesUpdateRate, setTraitColors, setTraitNames, setTrajectoryColor
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface CLOProvider
adjustCLO
Methods inherited from interface Features.Pairs
isPairwise
Methods inherited from interface HasDistribution
getNTraits, getTraitName
Methods inherited from interface HasHistogram
getCustomLevels, getNTraits, getTraitColors
Methods inherited from interface IBS.HasIBS
createIBS
Methods inherited from interface MilestoneListener
modelDidInit, modelDidReset, modelLoaded, modelRelaxed, modelRunning, modelSettings, modelStopped, modelUnloaded, moduleLoaded, moduleRestored, moduleUnloaded
-
Constructor Details
-
CSD
Create a new instance of the module for continuous games.- Parameters:
engine
- the manager of modules and pacemaker for running the model
-
-
Method Details
-
load
public void load()Description copied from class:Module
Load new module and perform basic initializations.- Overrides:
load
in classContinuous
- See Also:
-
getKey
Description copied from class:Module
Returns identifier of the active module. For example, 2x2 games inTBT
return "2x2". This corresponds to the argument for the--module
option to load a particular module. The default is to use the class name. -
getAuthors
Description copied from class:Module
Returns a string with information about the authors of the module.- Overrides:
getAuthors
in classModule
- Returns:
- the names of the authors
-
getTitle
Description copied from class:Module
Returns title of active module, e.g. 2x2 games inTBT
returns "2x2 Games". -
pairScores
public double pairScores(double me, double[] groupTraits, int len, double[] groupPayoffs) Description copied from interface:IBS.HasIBS.CPairs
Calculate the payoff/score for modules with interactions in pairs and a single continuous trait. The focal individual has traitme
and the traits of itslen
interaction partners are given ingroup
. The payoffs/scores for each of thelen
opponent traits/strategies must be stored and returned in the arraypayoffs
.Note:
Only the firstlen
entries ingroup
are guaranteed to exist and have meaningful values. The population structure may restrict the size of the interaction group.len≤nGroup
always holds.Important:
must be overridden and implemented in subclasses that define game interactions between pairs of individuals (nGroup=2
,pairwise=true
), otherwise seeIBS.HasIBS.CGroups.groupScores(double, double[], int, double[])
.- Specified by:
pairScores
in interfaceIBS.HasIBS.CPairs
- Parameters:
me
- the trait of the focal individualgroupTraits
- the traits of the group memberslen
- the number of memebrs in the groupgroupPayoffs
- the array for returning the payoffs/scores for each group member- Returns:
- the total (accumulated) payoff/score for the focal individual
-