What is evolutionary computation and how does it work?
Evolutionary computation is a family of algorithms for global optimization inspired by biological evolution, and a subfield of computational intelligence and soft computing. It works by generating an initial set of candidate solutions, then iteratively updating that population through selection, mutation, and recombination until the solutions improve in fitness.
Who invented evolutionary computation and when did it start?
Evolutionary computation as a field began in earnest in the 1950s and 1960s through several independent efforts. Alan Turing proposed a method of genetic search as early as 1948, though his paper went unpublished until 1968. Lawrence J. Fogel initiated Evolutionary Programming in the United States in 1962, Ingo Rechenberg and Hans-Paul Schwefel introduced evolution strategies in Germany in 1964, and John Henry Holland introduced genetic algorithms in the 1960s at the University of Michigan.
What is the difference between evolutionary programming, evolution strategies, and genetic algorithms?
The three approaches differ in the method of selection, the permitted mutations, and the representation of genetic data. Evolutionary programming used finite state machines and focused on prediction problems; evolution strategies applied random mutations to parameter vectors and were first used to solve fluid dynamics problems; genetic algorithms represented solutions as bit strings and tracked large populations of competing organisms rather than single candidates.
What is genetic programming and how does it differ from other evolutionary computation methods?
Genetic programming, advocated by John Koza among others, evolves actual programs rather than parameter vectors or state machines. Koza used Lisp S-expressions, which can be represented as trees of sub-expressions, allowing subtrees from two parent programs to be swapped to produce offspring. It emerged in the early 1990s as the fourth major branch of evolutionary computation.
Who were the earliest pioneers in evolutionary computation before the main branches formed?
Nils Aall Barricelli conducted the earliest computational simulations of evolution using evolutionary algorithms and artificial life techniques in 1953, with first results published in 1954. Alex Fraser was another pioneer in the 1950s who published a series of papers on simulation of artificial selection.
When was the term evolutionary computing coined and what does it encompass?
The term "evolutionary computing" was coined in 1991 to denote a field spanning all four major paradigms: evolutionary programming, evolution strategies, genetic algorithms, and genetic programming. By the 1990s the distinctions between the historic branches had begun to blur, making a unifying term appropriate.