Evolutionary Algorithm (also EA, evolutionary computation, artificial evolution) is a generic term used to indicate any population-based heuristic optimization algorithm that uses mechanisms inspired by biological evolution, such as reproduction, mutation and recombination. Candidate solutions to the optimization problem play the role of individuals in a population, and the cost function determines the environment within which the solutions "live" (see also fitness function). Evolution of the population then takes place after the repeated application of the above operators.
- Genetic Algorithms - This is the most popular type of EA. One seeks the solution of a problem in the form of strings of numbers or characters (traditionally binary), virtually applying recombination operators in addition to selection and mutation
- Genetic Programming - Here the solutions are in the form of computer programs, and their fitness is determined by their ability to solve a computational problem;
The major difference between Genetic Algorithms and Genetic Programming is the target: in Genetic Algorithms you try to find a certain blueprint or abstract code in form of strings, in Genetic Programming you try to change a computer language code directly (for example a suitable language like Lisp).
- Introduction to Genetic Algorithms by John Holland