Genetic Algorithms The normal method for getting a computer to perform a task is to specify the task clearly, choose the appropriate approach, and then implement and test the code. However, this approach requires that the programmer first know the appropriate approach, and even when there are many potentially suitable algorithms, it isn’t always clear which will prove optimal. Starting in the 1960s, however, researchers began to explore the idea that an evolutionary approach might be adaptable to programming. Biologists today know that nature did not begin with a set of highly optimized algorithms. Rather, it addressed the problems of survival through a proliferation of alternatives (through mutation and recombination) that are then subjected to natural selection, with the fittest (most successful) organisms surviving to reproduce. Researchers began to develop computer programs that emulated this process. A genetic program consists of a number of copies of a routine that contain encoded “genes” that represent elements of algorithms. The routines are given a task (such as sorting data or recognizing patterns) and the most successful routines are allowed to “reproduce” by exchanging genetic material. (Often, further “mutation” or variation is introduced at this stage, to increase the range of available solutions.) The new “generation” is then allowed to tackle the problem, and the process is repeated. As a result, the routines become increasingly efficient at solving the given problem, just as organisms in nature become more perfectly adapted to a given environment.