An Evolutionary algorithm (EA) is a stochastic numerical analysis that takes its inspiration from the theory of evolution, particularly the optimization power of natural selection. The main thing that sets an evolutionary algorithm apart from other stochastic methods is the use of a fitness function to select for optimal solutions. New solutions are a created by allowing existing ones to breed with each other. Also many algorithms use random alterations in the coded solution similar to the biological principle of mutation. The fitness program selects solutions that better solve the problem and increases the frequency of that solution and its descendants in the over all population of solutions.
Types of Evolutionary algorithms
There are several different approaches to evolutionary computation the most frequently used fall into a few general categories:
- Genetic algorithm - This is the most popular type of EA, it involves using strings of numbers as your solution set. It uses recombination, mutation, and selection to find optimal solution sets.
- Genetic programming - Instead of strings of numbers, genetic programming uses whole programs and the fitness function is based on their ability to quickly and accurately solve the problem.
- Evolutionary programming - Similar to genetic programming, but the logical structure of the programs do not change, rather the numerical constructs do.
- Evolution strategy - Uses numerical vectors as a solution.
Popularity and usage
Evolutionary algorithms are general purpose optimizers because they do not require any assumptions about the landscape of the fitness function. They are used in a wide range of problems in diverse fields and have proven to be a highly effective numerical analysis method.
However, in the last decade, research on evolutionary algorithms has fallen off sharply[Citation Needed], and they have not lived up to their initial promise. Although they are a reasonable search technique in a wide variety of problems, they are not the best search technique in almost any field. Algorithms such as simulated annealing, and fast integer programming solvers have largely superceded evolutionary algorithms in modern use. Evolutionary algorithms can be seen as an experimental test of Darwin's theory of evolution, and their eventual failure can be seen as a refutation of that theory[Citation Needed].