Introduction Chapter 1
3
their own specific advantages and applications. One successful field, and the one
we’re paying attention to in this book, is evolutionary computation - in which
genetic algorithms make up the majority of the research. Other fields focused on
slightly different areas, such as modeling the human brain. This field of research
is called artificial neural networks, and it uses models of the biological nervous
system to mimic its learning and data processing capabilities.
History of Evolutionary Computation
Evolutionary computation was first explored as an optimization tool in the 1950s
when computer scientists were playing with the idea of applying Darwinian ideas
of biological evolution to a population of candidate solutions. They theorized that
it may be possible to apply evolutionary operators such as crossover – which is an
analog to biological reproduction - and mutation – which is the process in which
new genetic information is added to the genome. It’s these operators when cou-
pled with selection pressure that provide genetic algorithms the ability to “evolve”
new solutions when left over a period of time.
In the 1960s “evolution strategies” – an optimization technique applying
the ideas of natural selection and evolution - was first proposed by Rechenberg
(1965, 1973) and his ideas were later expanded on by Schwefel (1975, 1977). Other
computer scientists at the time were working independently on similar fields of
research such as Fogel L.J; Owens, A.J; and Walsh, M.J (1966), who were the first
to introduce the field of evolutionary programming. Their technique involved
representing candidate solutions as finite-state machines and applying mutation
to create new solutions.
During the 1950s and 1960s some biologists studying evolution began
experimenting with simulating evolution using computers. However, it was
Holland, J.H. (1975) who first invented and developed the concept of genetic
algorithms during the 1960s and 1970s. He finally presented his ideas in 1975 in his
groundbreaking book, “Adaption in Natural and Artificial Systems”. Holland’s book
demonstrated how Darwinian evolution could be abstracted and modeled using
computers for use in optimization strategies. His book explained how biological
chromosomes can be modeled as strings of 1s and 0s, and how populations of
these chromosomes can be “evolved” by implementing techniques that are found
in natural selection such as mutation, selection and crossover.
Holland’s original definition of a genetic algorithm has gradually changed over
the decades from when it was first introduced back in the 1970s. This is somewhat
due to recent researchers working in the field of evolutionary computation
occasionally bringing ideas from the different approaches together. Although this
has blurred the lines between many of the methodologies it has provided us with
rich set of tools which can help us better tackle specific problems. The term “genetic
algorithm” in this book will be used to refer to both Holland’s classical vision of a
genetic algorithm, and also to the wider, present day, interpretation of the words.