One of the central challenges of computer science is to get a computer to do what needs to be done, without telling it how to do it. Genetic programming addresses this challenge by providing a method for automatically creating a working computer program from a high-level statement of the problem. Genetic programming achieves this goal of automatic programming, also sometimes called program synthesis or program induction, by genetically breeding a population of computer programs using the principles of Darwinian natural selection and biologically inspired operations. To search the space of possible computer programs for the best one, a population of executable computer programs is created which compete against each other. The weak programs die and the strong programs reproduce to form a new generation of better programs. After several iterations, the evolutionary process yields the best program to solve the problem.





