==> Parameters
==> Scenarios
Scenarios ==> CurrentScenario
Scenario codes (the values below are read automatically in 'Evolife.leo'):
==============
Void # a scenario that does nothing
Genetic algorithm
-----------------
SumBits # maximizes the number of 1 in the DNA
Labyrinth # tries to escape from a labyrinth
WernerDyer # emergence of a communication code
Zip # tries to make the DNA (un)compressible
Behavioural Ecology
-------------------
> Solitary games
Favourable # favourable mutation: basic Darwinian principle
GroupAltruist # group selection
Parthenogenesis # females beget clones of themselves
SexRatio # parents control the sex ratio among their children
> Dyadic games
Altruist # provides help at own's expense
KinAltruist # provides help towards kin
Cooperation # evolution of reciprocal cooperation
GreenBeard # provides help to other cariers of the same mutation
Signalling # individuals form coalitions
StagHunt # individuals play a 'stag hunt' game
Ethnocentrism
Bargaining
Coordination
Scenarios ==> CurrentScenario ==> ScenarioName
Scenarios ==> CurrentScenario ==> ScenarioFileName
Scenarios ==> Genetic Algorithms
Scenarios ==> Genetic Algorithms ==> SumBits
This example is meant as a didactic approach to genetic algorithms (and certainly not as a realistic application, as the problem is much too simple for a GA). The problem is to maximize the number of bits set to 1 in a binary vector. Starting from a random population, in which individuals have only roughly half of the bits equals to 1 in their genome, evolution through natural selection should rapidly produce 'perfect' individuals whose genome is uniformly made of 1s.
Scenarios ==> Genetic Algorithms ==> Labyrinth
Scenario Labyrinth:
The individuals' DNA guides a 'robot' through a labyrinth,
with the hope of getting out of it
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation
" Evaluation reads: "
Evaluation = PenaltyWall * (MaxSteps - walls) \
+ PenaltyU_turn * (MaxSteps - u_turns)\
+ PenaltyPoison * (MaxPheromon * MaxSteps +1 - poison) \
+ RewardExit * (MaxSteps - step -1)
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> MaxSteps
Maximum number of steps
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> MaxSteps ==> 55
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyPoison
Penalty for encountering poisonous pheromon
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyPoison ==> 1
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> MaxPoison
Maximal quantity of pheromon a cell may hold
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> MaxPoison ==> 10
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyU_turn
Penalty for making a u-turn
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyU_turn ==> 0
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyWall
Penalty for bumping into a wall
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> PenaltyWall ==> 0
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> RewardExiting
Reward for saving steps when exiting
Scenarios ==> Genetic Algorithms ==> Labyrinth ==> Evaluation ==> RewardExiting ==> 20
Scenarios ==> Genetic Algorithms ==> WernerDyer
EVOLIFE: Scenario WernerDyer :
see: http://www.telecom-paristech.fr/~icc/IC/projects/P06121815.html (in English)
see: http://www.dessalles.fr/outgoing/P05013107.html (in French, more detailed)
Relevant parameters are:
- Compass (if set to 1, individuals orient themselves along absolute directions, N,E,W,S)
- WDGridSize: size of the toric world in which individuals move
- PopulationSize: how crowdy the world is
- Selectivity: how many children are given to a successful couple
- Noise: defines in % how often a random direction is taken
Scenarios ==> Genetic Algorithms ==> WernerDyer ==> Compass
Indicates whether the female part of the DNA codes for absolute directions (East, North, West, South) (Compass==1)
or codes for direction change (straight on, left, right, u-turn) (Compass==0).
Scenarios ==> Genetic Algorithms ==> WernerDyer ==> Compass ==> 0
Scenarios ==> Genetic Algorithms ==> WernerDyer ==> WDGridSize
Scenarios ==> Genetic Algorithms ==> WernerDyer ==> WDGridSize ==> 100
Scenarios ==> Genetic Algorithms ==> Zip
This scenario uses a genetic algorithm to simplify a string, or conversely make it more complex.
Here, complexity is assessed by the size of its compressed length (using compressor gzip or bzip2).
The point is to show that simplification produces quasi-periodic strings and that it is difficult
for standard genetic algorithms to escape from local optima.
When the 'Simplify' parameter is set to 0, the programme ideally attempts to
generate a random (i.e. incompressible) sequence.
In the not-BitString mode, the evolution gets more obviously trapped in many local optima.
Scenarios ==> Genetic Algorithms ==> Zip ==> BitString
If BitString is set to 0, the DNA is translated into a string of charaters '0' and '1'
Otherwise it is translated into a binary string
Scenarios ==> Genetic Algorithms ==> Zip ==> BitString ==> 0
Scenarios ==> Genetic Algorithms ==> Zip ==> bz2
If set to 0, uses gzip as compressor.
Otherwise, uses bzip2.
Scenarios ==> Genetic Algorithms ==> Zip ==> bz2 ==> 0
Scenarios ==> Genetic Algorithms ==> Zip ==> Simplify
If set to 0, tries to make genomes more complex.
Otherwise, tries to make genomes simpler.
Scenarios ==> Genetic Algorithms ==> Zip ==> Simplify ==> 1
Scenarios ==> Behavioural Ecology
Scenarios ==> Behavioural Ecology ==> Favourable
Simple Darwinian scenario: carriers of gene named 'Favourable' get life points.
The gene is expected to invade the population.
Alternatively, individuals get some collective benefit from the fact that
there are carriers of the 'Favourable' gene in the group. In that case,
the fate of the gene is no longer obvious, even if the collective benefit is high!
Scenarios ==> Behavioural Ecology ==> Favourable ==> IndividualBenefit
Scenarios ==> Behavioural Ecology ==> Favourable ==> IndividualBenefit ==> 2
Scenarios ==> Behavioural Ecology ==> Favourable ==> CollectiveBenefit
Scenarios ==> Behavioural Ecology ==> Favourable ==> CollectiveBenefit ==> 0
Scenarios ==> Behavioural Ecology ==> GreenBeard
This small experiment was proposed in Richard Dawkins's book The selfish gene. It shows how some interesting coupling between genes may emerge in a population.
Suppose a given gene has two effects on its carriers: (1) they get a conspicuous characteristic, like a green beard; (2) they tend to behave altruistically toward green-bearded individuals. Such a gene is expected to invade the population, whereas its allele (no green beard + no altruism) tends to disappear.
Scenarios ==> Behavioural Ecology ==> GreenBeard ==> GB_Gift
Scenarios ==> Behavioural Ecology ==> GreenBeard ==> GB_Gift ==> 100
Scenarios ==> Behavioural Ecology ==> GreenBeard ==> GB_Cost
Scenarios ==> Behavioural Ecology ==> GreenBeard ==> GB_Cost ==> 10
Scenarios ==> Behavioural Ecology ==> SexRatio
If the sex ratio in the progeny is genetically controlled, a 50-50 ratio
emerges, despite the fact that males consume resources without investing
in offspring.
However, in hymenoptera (wasps, bees, ants), in which males are haploid
(one exemplar for each chomosome) whereas females are diploid (two exemplars
of each chromosome), sex ratio is expected to converge toward 25-75 whenever
it is controlled by genes expressed in sisters (workers).
Scenarios ==> Behavioural Ecology ==> SexRatio ==> Hymenoptera
Scenarios ==> Behavioural Ecology ==> SexRatio ==> Hymenoptera ==> 0
Scenarios ==> Behavioural Ecology ==> Beehive
This scenario does not exist yet !
Scenarios ==> Dyadic games
Scenarios ==> Dyadic games ==> Bargaining
Scenarios ==> Dyadic games ==> Cooperation
Cooperation Scenario:
Individual A cooperates with individual B with the hope that
B will reciprocate. A remembers B if it is the case.
Scenarios ==> Dyadic games ==> Cooperation ==> FirstStep
Indicates the maximal number of score points
that can be granted by the first player to its partner.
This amount is modulated by the value of the first player's
corresponding gene.
Scenarios ==> Dyadic games ==> Cooperation ==> FirstStep ==> 55
Scenarios ==> Dyadic games ==> Cooperation ==> FirstStepCost
Proportional price, in percent, payed by the first player.
Scenarios ==> Dyadic games ==> Cooperation ==> FirstStepCost ==> 30
Scenarios ==> Dyadic games ==> Cooperation ==> SecondStep
Scenarios ==> Dyadic games ==> Cooperation ==> SecondStep ==> 55
Scenarios ==> Dyadic games ==> Cooperation ==> SecondStepCost
Scenarios ==> Dyadic games ==> Cooperation ==> SecondStepCost ==> 30
Scenarios ==> Dyadic games ==> Cooperation ==> MinReward
Below this return value (in % of 'FirstStep'),
the first player decides to quit
its preferred partner
Scenarios ==> Dyadic games ==> Cooperation ==> MinReward ==> 0
Scenarios ==> Dyadic games ==> Coordination
Scenarios ==> Dyadic games ==> Coordination ==> Nb_signaux
Scenarios ==> Dyadic games ==> Coordination ==> Nb_signaux ==> 8
Scenarios ==> Dyadic games ==> CostlySignal
EVOLIFE: Costly Signal Scenario:
Individuals may emit a signal in relation with their quality.
Emitting this signal involves a cost.
Receivers read the signal and decide to associate or not with the emitter.
Association provides benefit to emitters.
Association provides benefit to receivers only if emitter is of high quality.
Evolution leads to a situation in which communication is honest,
i.e. individuals signal their true quality.
This is due to the fact that liars (l-q signalling individuals) cannot
afford the cost of high signals.
Scenarios ==> Dyadic games ==> CostlySignal ==> BottomQuality
Minimal quality that adds to the signalled quality
Scenarios ==> Dyadic games ==> CostlySignal ==> BottomQuality ==> 50
Scenarios ==> Dyadic games ==> CostlySignal ==> CostlySignalCost
Scenarios ==> Dyadic games ==> CostlySignal ==> CostlySignalCost ==> 50
Scenarios ==> Dyadic games ==> CostlySignal ==> FollowerBenefit
Scenarios ==> Dyadic games ==> CostlySignal ==> FollowerBenefit ==> 100
Scenarios ==> Dyadic games ==> CostlySignal ==> FollowerSupport
Scenarios ==> Dyadic games ==> CostlySignal ==> FollowerSupport ==> 40
Scenarios ==> Dyadic games ==> Ethnocentrism
Scenarios ==> Dyadic games ==> GreenBeard
Scenarios ==> Dyadic games ==> Signalling
Signalling Scenario:
Individual A signals its competence
Other individuals may choose to join A based on that competence.
A benefits from their joining (e.g. protection)
correlated with their competence
(think of it as an ability to anticipate danger)
Signalling is thus a way of attracting competent individuals
Scenarios ==> Dyadic games ==> Signalling ==> BottomCompetence
Minimal competence that adds to the signalled competence
Typical value: 50
Scenarios ==> Dyadic games ==> Signalling ==> BottomCompetence ==> 5
Scenarios ==> Dyadic games ==> Signalling ==> CompetenceImpact
Maximal reduction of risk that an individual A gives to another B (in %).
B's risk probability is multiplied by (1 - CompetenceImpact * RankEffect ** R * A's_competence / G)
where R is B's rank in A's address book, and G is a function of the number of A's friends.
Typical value: 100
Scenarios ==> Dyadic games ==> Signalling ==> CompetenceImpact ==> 200
Scenarios ==> Dyadic games ==> Signalling ==> CompetenceSignificance
Significance of recruting competent individuals as friends,
as compared to other qualities like physical strength, in %
(0% means that competence is not taken into account when making friends,
100% means that only competence is taken into account).
Typical value: 100
Scenarios ==> Dyadic games ==> Signalling ==> CompetenceSignificance ==> 100
Scenarios ==> Dyadic games ==> Signalling ==> RankEffect
Multiplicative decrease (in %) of friendly support.
If the signaller has rank R in its friend's list of contacts, the signaller gets
Friend's Competence * (RankEffect/100) ** R
Typical value: 60
Scenarios ==> Dyadic games ==> Signalling ==> RankEffect ==> 80
Scenarios ==> Dyadic games ==> Signalling ==> SignallingCost
Cost of producing signals.
Signals may indirectly reveal the signaller's competence.
This is only true if individuals invest in signalling.
Signalling investments are genetically controlled.
Typical value: 20
Scenarios ==> Dyadic games ==> Signalling ==> SignallingCost ==> 100
Scenarios ==> Dyadic games ==> Signalling ==> SocialOverlap
Controls the facts that available social time may be spent with several friends simultaneously.
(between 0: no overlap, and 100: maximal natural overlap).
When no overlap, introducing a new friend diminish old friends' share significantly.
Typical value: 30
Scenarios ==> Dyadic games ==> Signalling ==> SocialOverlap ==> 80
Scenarios ==> Dyadic games ==> StagHunt
Stag Hunt Scenario (after Brian Skyrms, "The stag hunt",
Cambridge University Press 2004, pp. 67-70)
In the stag hunt scenario, two players have the choice:
- either to cooperate to hunt a stag (S)
- or to defect and hunt a hare (H) for themselves.
The payoff matrix is as follows:
opponent
S H
S 9 1
player
H 8 7
This is a particular case of stag hunt in which it is better to
hunt hare against a stag hunter rather than against a hare hunter.
Such game is also called "assurance game".
In the absence of any signalling, there are two equilibria:
everyone hunts stag or everyone hunts hare.
If individuals are given the possibility of sending a binary signal before
acting, then the new situation creates one equilibrium in which
half of the population sends signal 0 and hunts stag with those having sent
1 and hunts hare otherwise, and conversely for the other half.
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> StagStag
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> StagStag ==> 9
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> StagHare
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> StagHare ==> 0
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> HareStag
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> HareStag ==> 8
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> HareHare
Scenarios ==> Dyadic games ==> StagHunt ==> PayoffMatrix ==> HareHare ==> 7
==> Ecology
Ecology ==> PopulationSize
The size of the population is maintained constant
Ecology ==> PopulationSize ==> 100
Ecology ==> MigrationRate
Each year, a fraction (in %) of individuals migrate between groups.
Ecology ==> MigrationRate ==> 10
Ecology ==> ReproductionRate
Proportion of the population that is replaced with newborns each year (in %)
Ecology ==> ReproductionRate ==> 30
Ecology ==> SelectionPressure
Defines how individual survival depends on score:
0 --> no bias
12 --> Highest scores may have 12 times less chance to be eliminated
than individuals with lowest scores
(Note that selection is also achieved through differential reproduction
(see parameter Selectivity))
Important: For selection pressure to operate properly, scores should always be positive
Warning: This selection method tends to "saturate": when most scores reach high values,
the method is blind to slight differences among individuals. However, it might be less
violent than the selectivity method, which has converse qualities.
Ecology ==> SelectionPressure ==> 0
Ecology ==> Selectivity
Defines how parenthood is biased toward individuals with high scores
S == 0 --> no bias
S == 1 --> elitism is roughly linear
S == 20 --> strong elitism
S == 40 --> very strong elitism
(Note that selection is also achieved through differential mortality
(see parameter SelectionPressure))
Warning: This selection method amplifies small differences among top inidividuals,
but fails to discriminate among the crowd. The SelectionPressure method has converse
qualities.
Ecology ==> Selectivity ==> 40
Ecology ==> GroupMaxSize
The population is split in groups.
Groups are an ecological entity: reproductions and interactions take place within the group.
"Group maximal size" indicates the maximal size of a group. Groups that are too big are split in two.
Expect actual groups to be roughly half of that size.
Ecology ==> GroupMaxSize ==> 500
Ecology ==> GroupMinSize
Group minimal size
Groups that are too small are dissolved: their members must emigrate to other existing groups
Ecology ==> GroupMinSize ==> 0
Ecology ==> Rounds
Numbers of times each individual interacts with others each year
Ecology ==> Rounds ==> 0
Ecology ==> AgeMax
Above that age, individuals die. Set to 0 if no maximum age.
Ecology ==> AgeMax ==> 40
Ecology ==> Noise
Amplitude of a multiplicative noise
in % between 0 and 100
that may affect interactions in some
scenarios.
Ecology ==> Noise ==> 10
==> Sociology
Sociology ==> SocialSymmetry
This flag indicates whether the amount of time devoted to a social relation is
equal between the two parties. If set to 0, fans may loose time in the anteroom
of their idol.
Sociology ==> SocialSymmetry ==> 1
Sociology ==> MaxGurus
Maximum number of output links from a node in the affiliation graph.
Typically between 1 and a few.
Sociology ==> MaxGurus ==> 1
Sociology ==> MaxFollowers
Maximum number of input links to a node in the affiliation graph.
Typically between 1 and many.
This may be a crucial parameter: if it is significantly larger
than 'MaxGurus', then a star system may evolve in which only
best individuals signal.
Sociology ==> MaxFollowers ==> 3
==> Genetics
Genetics ==> MutationRate
Mutation rate in xxx/1000
Genetics ==> MutationRate ==> 10
Genetics ==> NbCrossover
Indicates the number of cut points when performing crossover
Genetics ==> NbCrossover ==> 1
Genetics ==> GeneCoding
Indicates the way portions of DNA should ne interpreted
0 = WEIGHTED: standard integer binary coding
1 = UNWEIGHTED: all bits play symmertrical roles
-1 = NOCODING: genome is not decoded
Note: the WEIGHTED method may provoke sudden changes in
gene expression. This may be good to escape from local
optima, since in the UNWEIGHTED condition, several
mutations must be accumulated in the same individuals
for significant change to occur.
Genetics ==> GeneCoding ==> 1
Genetics ==> GeneCoding ==> 0: Weighted
Genes interpreted as standard integer coding.
Advantage: many available values;
variable selection pressure on loci:
important loci evolve first.
Mutations on low bits have local effects
Caveat: getting from 011111 to 100000 requires
six mutations, though the values are adjacent.
Genetics ==> GeneCoding ==> 0: Weighted ==> Weighted
Genetics ==> GeneCoding ==> 0: Weighted ==> Weighted ==> 0
Genetics ==> GeneCoding ==> 1: Unweighted
Genes interpreted as the sum of their bits
Advantage: all puncutal mutation have local effects
Caveat: only few values allowed if gene length is small,
and very slow evolution and high sensitivity to noise
if gene length is large
Genetics ==> GeneCoding ==> 1: Unweighted ==> Unweighted
Genetics ==> GeneCoding ==> 1: Unweighted ==> Unweighted ==> 1
Genetics ==> GeneCoding ==> 2: Gray
Genes are interpreted using a Gray code.
In a Gray code, neighbouring integers differ by only one bit.
Advantage: neighbouring values are reachable by punctual mutations
Caveat: most punctual mutations have non-local effects
Genetics ==> GeneCoding ==> 2: Gray ==> Gray
Genetics ==> GeneCoding ==> 2: Gray ==> Gray ==> 2
Genetics ==> GeneCoding ==> -1: NoCoding
Genetics ==> GeneCoding ==> -1: NoCoding ==> NoCoding
Genetics ==> GeneCoding ==> -1: NoCoding ==> NoCoding ==> -1
Genetics ==> GeneLength
Some scenarios don't specify gene length (by setting it to zero).
The value indicated here is taken as default value in this case.
Genetics ==> GeneLength ==> 100
Genetics ==> DNAFill
DNA created from scratch may be random (DNAFill = -1)
or filled withl 0s (DNAFill = 0) or with 1s (DNAFill =1)
Genetics ==> DNAFill ==> -1
Genetics ==> StartFromFile
Binary flag indicating if the population should be generated from
the genomes stored in the text file 'EvoStart.gen'
1 = reads 'EvoStart.gen'
0 = creates a new population from scratch (see parameter DNAFill)
Genetics ==> StartFromFile ==> 0
Genetics ==> ControlGeneNumber
Functions of one parameter are difficult to code genetically.
The easiest way is to code for a step function.
Example: code for a "signal" that depends on a parameter called "competence".
When emitting the signal, an individual "reads" her competence and
depending on its range, mutliplies it by the relative value of
her corresponding control gene.
0 competence Max
[--------------------------------------------------]
<-----------><-----------><-----------><----------->
CG1 CG2 CG3 CG4
Typical value: 6
Genetics ==> ControlGeneNumber ==> 6
==> Display
Display ==> BatchMode
If set to 1, no display occurs. Useful to launch experiments in batch mode, e.g. on several machines.
Results are still stored in .csv files. In batch mode, these files are given unique names, so that
different experiments can be run simultaneously.
Display ==> BatchMode ==> 0
Display ==> DisplayPeriod
Period between successive plots
0: no plot
1: plot every year
10: typical
Display ==> DisplayPeriod ==> 1
Display ==> TimeLimit
Maximum number of steps before simulation stops. Set to 0 if no limit.
If DisplayPeriod == 0, Evolife will automatically exit after TimeLimit.
Otherwise, it will switch to stepwise mode. It is thus ready to
run until another TimeLimit is reached again.
Display ==> TimeLimit ==> 20000
Display ==> DumpStart
Points located below this x-value are discarded from the computation of average values.
Average values thus reflect the stable regime.
Display ==> DumpStart ==> 100
==> Run
Run ==> EvolifeDir
Path to Evolife
Run ==> EvolifeDir ==> x:/recherch/evopy/Evolife