"A family of methods that search for optimal solutions of difficult problems" (P. DENNING, 1992, p.12)
The concept of genetic algorithm was originally developed by J. HOLLAND as a computer modelization of biological evolution.
P. DENNING writes: "Genetic search algorithms cross-breed trial solutions and allow only the "fittest" solutions (those accorded the highest value) to survive after several generations" (Ibid) They are thus, up to a point, self-perfectible, and a possible model for an evolutive mechanism.
The genetic algorithm avoids at least partly what is possibly the most serious inconvenient of algorithms: their premature stabilization at a sub-optimization level. This result is obtained by a kind of "cooperative competition" by recombination or cross-over between different "candidate" solutions and the introduction during the progressive constructive process of a very slight variability (" mutations") within each elemental situation.
Kenneth DE JONG quoted by P. DENNING, states that "a mutation probability on the order of 0,001 per bit is enough to prevent the search from locking into a local optimum".
In this way, premature sub-optimal solutions are avoided and a global optimum can be more easily reached.
C. EMMECHE resumes as follows the procedure of a genetic algorithm:
"1. Select program pairs on the basis of how well they have solved the task (one can thereby measure fitness). The better the solution, the greater the chance to be selected.
"2. Apply the genetic operator (cross-over, eventually combined with a small chance of mutation) to the selected program pairs in order to create offsprings in the next generation.
"3. Replace the least successful programs with the offspring created in step two, and repeat the process" (1994, p.115)
He adds: "Empirical investigations indicate that this crossing-over scheme operates specially well on problems that programmers otherwise regard as genuinely difficult.
The genetic algorithms are able to exploit the population experience in an optimal manner" (p.116)
→ Parallel distributed processing