evolution of genetic representations

This site displays some demonstrations of the evolution of genetic representations. Please refer to the mentioned publications for detailed explanations and theory.

  • NOTE: The point of these experiments is not to show some fancy plants, but to demonstrate how evolution can find complex grammatical representations of potential solutions based on data (i.e., what has been successful previously), such that on this representation search factorizes. (Actually related to ICA and latent variable models of data; see this and this and this paper and my thesis for more theory.)
  • Here are some movies that show an evolution of plants. The first two correspond to the trials discussed in the paper, the rest are additional trials.
    Get the Flash Player to see this player. Get the Flash Player to see this player. Get the Flash Player to see this player. Get the Flash Player to see this player. Get the Flash Player to see this player.
  • Please see the following publication for explanations M. Toussaint (2003): Demonstrating the Evolution of Complex Genetic Representations: An Evolution of Artificial Plants [ps.gz]. In Genetic and Evolutionary Computation Conference (GECCO 2003), 86-97.

Below are some extracts from this paper or my thesis:

950 1000 1010 1650 1750 1900 1910 1940 2100
generation 950 generation 1000 generation 1010 generation 1650 generation 1750 generation 1900 generation 1910 generation 1940 generation 2100

Early evolution develops small phenotypes. Here, the interplay between the {\sf N}- and the {\sf F}-operator starts.

The {\sf N}-operator encodes fan-like structures attached at various places of the phenotype, the {\sf F}-operator encodes the spokes of these fans.

Adaptation of these fans is a beautiful example for correlated exploration: the {\sf N}-operator encodes more spokes; the {\sf F}-operator makes them longer.

The fan spokes become longer and longer. Note that one {\sf N}- and two {\sf B}-operators are redundant.

Leaves are attached to each segment of the long arms; similar to generation 4025 of the C-trial.

Two leaves are attached at the tip of each arm. The genome becomes to complex to be easily understood.

Now three leaves are attached at each tip.

Now six leaves..

The plant becomes more and more dense and the genome size is optimized.
The D-trial. Comparing the illustrations for generation 950, 1000, and 1010 we see that evolution very quickly developed a fan-like structure that is attached at various places of the phenotype. The fans arise from an interplay of two operators: The {\sf N}-operator encodes the fan-like structures while the {\sf F}-operator encodes the spokes of these fans. Adaptation of these fans is a beautiful example for correlated exploration. The {\sf N}-operator encodes more and more spokes until the fan is complete in generation 1010, while the {\sf F}-operator makes the spokes longer. Elongation proceeds and results in the `hairy', long-armed structures. Note that, in generation 1650, one {\sf N}- and two {\sf B}-operators are redundant. Until generation 1900, leaves are attached to each segment of the arms, similar to generation 4025 of the C-trial. At that time, the plant's weight is already 105\,099 and probably prohibits to make the arms even longer (since weight would increase exponentially). Instead a new concept develops: At the tip of each arm two leaves are now attached instead of one and this quickly evolves until there are three leaves, in generation 1910, and eventually a complete fan of six leaves attached at the tip of each arm. In generation 2100, a comparably short genome with 10 used operators encodes a very dense phenotype structure of 9483 elements.

3000 3800 4000 4025 4400 4500 5100 5400 5500 7500 8300
generation 3000 generation 3800 generation 4000 generation 4025 generation 4400 generation 4500 generation 5100 generation 5400 generation 5500 generation 7500 generation 8300

Over aeons not much happens...

A first correlated phenotypic adaptation: the leaves along the stems pop up at once.

Every stem segment is now encoded by the {\sf A}-operator, which attached a leave to each segment.

The concept of `long arms' is exploited, fitness explodes, but the genome becomes too large and non-stable.

The large genome makes exploration chaotic; the species will extinguish.

A new concept with much shorter and stable genome takes over; the {\sf J}-operator becomes dominant.

The new concept is further developed and exploited till the end...

The C-trail. We find that for a long time not much happens until, in generation 4000, a couple of leaves turn up at once at certain places of the phenotype. This is exactly what we defined a correlated phenotypic adaptation and was enabled by encoding all the segments that now carry a leave within one operator. The concept is rapidly exploited until, in generation 4025, every phenotypic segment has a leave attached and is encoded by the single operator, namely the {\sf A}-operator. The resulting `long-arm-building-block' triggers a revolution in phenotypic variability and leads to the large structures as illustrated for generations 4400 (3467 elements) and 4500 (7698 elements). However, as we had it in the A-trial, these structures are not encoded efficiently, the genome size is too large (512 and 720, respectively) and phenotypic variability becomes chaotic. The raise is followed by a fall of this species until, in generation 5100, evolution finds a much better structured genome to encode large phenotypes. The {\sf J}-operator becomes dominant and allows to encode 1479 phenotypic elements with a genome size of 217. This beautiful concept is further improved and evolves until, in generation 8300, a genome of size 141 with 2 operators encodes a regularly structured phenotype of 3652 elements.

Earlier trials:
420 430 465 1650 1658 2560 3130 3280
generation 420 generation 430 generation 465 generation 1650 generation 1680 generation 2560 generation 3130 generation 3280

A simple phenotype where the recursive {\sf L}-operator encodes the regular 5-leaves-fans and the recursive {\sf F}-operator produces the long stem.

Good fitness but all the phenotype is encoded in the huge axiom; mutability is too high.

The previous innovation died out.

Similar fitness as in generation 465, but the regular phenotype is encoded by the recursive {\sf C}-operator such that the genome size remains reasonable.

The {\sf C}-operator was further developed leading to an efficient hexagonal structure; other operators further decrease the genome size.

In addition to the {\sf C}-operator, the new recursive {\sf G}-operator makes the phenotype even more dense.

180 195 200 205 210 220 380
generation 180 generation 195 generation 200 generation 205 generation 210 generation 220 generation 380

Early evolution in tiny steps.

First usage of the recursive {\sf B}-operator.

The {\sf B}-operator is further developed.

The {\sf B}-operator induces larger growth since there are two {\sf B}'s on its rhs.

Now there are three {\sf B}'s on the rhs.

The encoding is optimized leading to almost optimal fitness and small genome size.