Genetic/evolutionary algorithms, based upon an analogy to the mechanics of Mendelian genetics and Darwinian evolutionary theory, offer an automatic way to improve programs. The process cycles many times, selecting for reproduction among a population of program variants (represented by the "chromosomes") to form the next generation, with "mutation" and "crossover" producing additional variation. This approach was tested in such classic problems as function evolution, function maximization, and the Traveling Salesman problem. While the basic approach proved powerful, its implementation required a non-automatic series of choices with respect to the parameters for the algorithm itself, the representation of chromosomes, the meanings of mutation and crossover, the possibility of other mechanisms such as "inversion", and the evaluation of the fitness of the reproductive candidates. The most important message is that despite the automatic nature of the algorithm itself, knowledge of the problem domain is important to its implementation.
Citation:
Neville Melvin, Robert Soricone, James Waslo, "On the Automaticity of Genetic Programming," conielecomp, pp.236, 14th International Conference on Electronics, Communications and Computers, 2004