  Evolutionary algorithms (EAs) are population-based metaheuristics, originally
inspired by aspects of natural evolution. Modern varieties incorporate a broad
mixture of search mechanisms, and tend to blend inspiration from nature with
pragmatic engineering concerns; however, all EAs essentially operate by
maintaining a population of potential solutions and in some way artificially
'evolving' that population over time. Particularly well-known categories of EAs
include genetic algorithms (GAs), Genetic Programming (GP), and Evolution
Strategies (ES). EAs have proven very successful in practical applications,
particularly those requiring solutions to combinatorial problems. EAs are
highly flexible and can be configured to address any optimization task, without
the requirements for reformulation and/or simplification that would be needed
for other techniques. However, this flexibility goes hand in hand with a cost:
the tailoring of an EA's configuration and parameters, so as to provide robust
performance for a given class of tasks, is often a complex and time-consuming
process. This tailoring process is one of the many ongoing research areas
associated with EAs.
