Evolution is not predictable. All we can do is observe and try to understand.

Evo(rand) is an artificial ecosystem created to study under which conditions evolution and the "pressure" of the environment can produce co-existing specialized species, all this in a diverse ecosystem. Evo(rand) stands for: the application of the function of evolution "Evo()" to a random number generator or noise "rand".

Beside being optimised to allow simulation of thousand generations of thousands of Creatures within hours, Evo(rand) also provides extreme flexibility in the definition of what is simulated, from a simple random behaviour to a complex ecosystem with plants, herbivores, carnivores and energy conservation rules. A short introduction can be found here.

Examples can be found in the results of some experiments.

Join Evo(rand) group on facebook. See the I-Am-Darwin video manifest.

About this project

I initially had the goal of using computers to simulate a world according to Darwin's rule of evolution back in 1989. Unfortunately, computers were too slow by then. By the late 90s, when I started this project, personal computers were fast enough to simulate large populations of Creatures with complex behaviour, all within a second.

This simulator is the current result of that ambition. It permanently evolves to test new ideas as it is more a research tool than anything else. Yet, it is made to allow anybody to do its own experiments, and share results with others.

Some features of Evo(rand) are:

  • Variable length DNA with coding genes and non-coding DNA portions.
  • Fully configurable terrain attributes.
  • Fully configurable Creature attributes, with the possibility to get the initial value of any attribute being read from the DNA, such as mutation rate, DNA growth rate.
  • Fully configurable Actions, i.e. what the Creatures can do. It is possible to configure Actions that lead to plants, herbivores, carnivores and parasites (and any combination of course). Examples of Actions are: cloning, mating, killing, eating, fleeing, nesting, harvesting, sacrificing itself.
  • DNA encoded behaviour which are a set of Rules with associated Actions.
  • Real time dynamic definition of species based on the analysis of the genealogical tree.
  • Realistic terrain constructed using fractal algorithm, with lakes, rivers, sea and tide.
  • Bounded terrain (non tore) with continuous space and time allowing smooth slow 3D motion as well as very fast calculations.
  • 2D and 3D graphics.
  • A very fast simulation engine, meant to simulate large populations: more than 1,000 generations with a population of 10,000 creatures in hours.

Why the name Evo(rand)?

Evo(rand) means the function of evolution applied to a random number generator. This is exactly what the simulator does. There is no fitness function in Evo(rand). Just like in real life, all creatures may die, or if you are not careful, the population may grow exponentially.

The original name was Genetic World, which explains the file extension of the configuration files ".gwf".

Source code?

The source code can be found in the Download section of the Web site.

The simulator initially developed with Borland C++ 1.0, then 4.0, has now been ported to Turbo C++ Explorer, a freeware from Borland, then CodeGear and to now Embarcadero RAD Studio. The installer package has been produced using Advanced Installer, using the freeware features.

Any suggestion, question, or bug report can be sent to: herve dot g dot noel-at-gmail.