Skip navigation

John R. Koza

Titles by This Author

Automatic Discovery of Reusable Programs


Genetic Programming II extends the results of John Koza's ground-breaking work on programming by means of natural selection, described in his first book, Genetic Programming. Using a hierarchical approach, Koza shows that complex problems can be solved by breaking them down into smaller, simpler problems using the recently developed technique of automatic function definition in the context of genetic programming.

Where conventional techniques of machine learning and artificial intelligence fail to provide an effective means for automatically handling the process of decomposing complex problems into smaller subsets, reassembling the solutions to these subsets, and applying an overall solution to the original problem, automatic function definition enables genetic programming to define useful and reusable subroutines dynamically. Koza illustrates this new technique by showing how it solves (or approximately solves) a variety of problems in Boolean function learning, symbolic regression, control, pattern recognition, robotics, classification, and molecular biology.

In each example, the problem is automatically decomposed into subproblems; the subproblems are automatically solved; and the solutions to the subproblems are automatically assembled into a solution to the original problem. Koza shows that leverage accrues because genetic programming with automatic function definition repeatedly uses the solutions to the subproblems in the assembly of the solution to the overall problem. Moreover, genetic programming with automatic function definition produces solutions that are simpler and smaller than the solution obtained without automatic function definition.


On the Programming of Computers by Means of Natural Selection

Genetic programming may be more powerful than neural networks and other machine learning techniques, able to solve problems in a wider range of disciplines. In this ground-breaking book, John Koza shows how this remarkable paradigm works and provides substantial empirical evidence that solutions to a great variety of problems from many different fields can be found by genetically breeding populations of computer programs. Genetic Programming contains a great many worked examples and includes a sample computer code that will allow readers to run their own programs.

In getting computers to solve problems without being explicitly programmed, Koza stresses two points: that seemingly different problems from a variety of fields can be reformulated as problems of program induction, and that the recently developed genetic programming paradigm provides a way to search the space of possible computer programs for a highly fit individual computer program to solve the problems of program induction. Good programs are found by evolving them in a computer against a fitness measure instead of by sitting down and writing them.

John R. Koza is Consulting Associate Professor in the Computer Science Department at Stanford University.