Evolife Jean-Louis
Dessalles
Telecom ParisTech
www.dessalles.fr
Evolife has been developed by Jean-Louis
Dessalles for scientific and didactic purposes. Initially written in
C++, it has been entirely rewritten in Python to improve readability.
The core of
Evolife is a genetic algorithm (GA). In a GA, ‘individuals’ represent variant
tentative solutions to a problem. Individuals’ behaviour is controlled by a
binary vector called genome. They
live, and reproduce ‘sexually’ (though sexes are usually not differentiated).
Reproduction is achieved by hybridizing genomes through crossover. Each ‘year’, best individuals are selected for
reproduction. Evolife implements two modes of selection:
- ranking:
individuals are ranked according to their score,
and are granted a number of potential children that is an increasing
(non-linear) function of their rank.
-
differential death: individuals get life points (generally in relation to their
score) that protect them from life
hazards, and thus increase their life expectancy (and their opportunities to
reproduce).
The first
method is more in line with typical GA, whereas the second one looks more
ecological.
Scores
depend on a ‘problem’ to be solved. A few problems are already coded in the
package, such as
- the binary sum: the (somewhat trivial)
problem is to maximize the number of
- the labyrinth: the GA’s job is to go out of
a maze. Users can control the evaluation
function. The labyrinth can be displayed with the current best trajectory.
- the favourable mutation: very Darwinian in
its spirit, this scenario allows to understand the conditions under which
favourable mutation spread in an evolving population.
Evolife is modular, which means that its
code can be understood locally without full understanding of the overall
programme.
Evolife Jean-Louis
Dessalles
Telecom ParisTech
www.dessalles.fr