| |||||||||
An evolutionary algorithm (also EA, Evolutionary Computation, Artificial Evolution) is an algorithm using evolutionary techniques inspired by mechanisms from biological evolution such as natural selection, mutation and recombination to find an optimal configuration for a specific system within specific constraints.
Evolutionary algorithms include:
Most of these techniques are similar in spirit, but differ in the details of their implementation and the nature of the particular problem domains to which they have been applied. Evolutionary algorithms are traditionally used to design engineering systems, but have recently been applied to art, economics, operations research, biology, genetics, social sciences, and other fields. Delegation of some operators of evolutionary computation to outside agents (usually humans) is another recent trend known as Interactive evolutionary computation.
Evolutionary computation and algorithms have also been used as an experimental framework within which to validate theories about evolution and natural selection, particularly through work in the field of artificial life. Techniques from evolutionary algorithms applied to the modelling of biological evolution a generally limited to explorations of microevolutionary processes, however some computer simulations, such as Tierra, attempt to model macroevolutionary dynamics.
A limitation of evolutionary algorithms is their lack of a clear genotype-phenotype distinction. In nature, the fertilized egg cell undergoes a complex process known as embryogenesis to become a mature phenotype. This indirect encoding is believed to make the genetic search more robust (i.e. reduce the probability of fatal mutations), and also may improve the evolvability of the organism. Recent work in the field of artificial embryogeny, or artificial developmental systems, seeks to address these concerns.
fitness landscape, Interactive evolutionary computation, developmental biology