Artificial Life: Term Project  
 
Introduction Previous Works Implementation/Results Conclusion Impressum References
 
  Introduction - Artificial Evolution - Task  
     
 

Background:

In nature creatures are a result of an evolutionary process over an endless number of generations. Evolution is based on two main principles, genetic variability and natural selection, and can also be simulated with computers.

Genetic variability refers to the differences between individuals of the same generation. On the base of a predefined fitness function there are better and worse individuals competing in the tasks of surviving in their environment. At this point we can talk about natural selection: As in nature, individuals with higher fitness can survive whereas the ones with lower fitness are predicted to die. Through the process of evolution this selection leads to higher fitness and „better“ generations in terms of performing given tasks.

MorphEngine:

MorphEngine is a software package that allows the user to construct virtual creatures and give them a certain task. MorphEngine builds a neural network for the creature. Afterwards it uses genetic algorithms to evolve the creature, which means to optimise the creature's brain (neural network) for performing the given task as good as possible.

Process of Evolution
MorphEngine generates a population of random solutions based on the creature’s neural network. It then evaluates each genome by creating its fitness value (z value of the object specified as ‘object to move’). After having evaluated the whole generation, 50% of the population (the genomes with fitness values below the average) are deleted. The other 50% are copied with some small changes (mutations). Thus a new generation is ready to be evaluated. These steps are repeated until the maximum size of populations has been reached. The Process terminates thereafter.

Userdefined Task/Fitness function:

While evolving the creature, MorphEngine takes the movement of a certain predefined part of the creature's body (object_to_move) as fitness function. The user is able to influence the locomotion by his design. That means that the evolved behaviour is not necessarily walking, but can also be swimming or jumping.
 
     
  top