Because evolution has found solutions to extremely difficult problems in the natural world (bats that use their hearing to navigate in the dark, for example), computer scientists have tried to enlist evolution to solve difficult computational problems, using genetic algorithms.
These algorithms start by encoding a potential solution to a given problem as a string of 0’s and 1’s, the computer equivalent of describing the potential solution as a series of yes or no answers to tens or hundreds or thousands of simple questions. This bit string becomes the artificial chromosome of the solution to be evolved. The genetic algorithm generates numerous slight variations of the bit string, and then these individuals are tested to see which perform best under some fitness scale.
The game is more like animal husbandry than evolution because the computer scientist running the genetic algorithm knows exactly what he or she wants to accomplish eventually. (For instance, if a genetic algorithm is used to solve a scheduling problem, the measure of fitness might be how quickly tasks are completed in each individual’s final version of the schedule.) The bit strings that score highest on the designated fitness test are mated in a way that is loosely inspired by how chromosomes combine in sexual reproduction, with parts of each bit string combining to produce the bit string of the offspring. Mutations are added for good luck in the next generation.
These new offspring are tested and the best are mated, and on it goes. The process might be repeated for thousands of generations, until the problem is solved. Genetic algorithms have been used successfully in designing communication networks, and
better turbines, and even in solving some mathematical problems that seemed otherwise intractable.