Genetic algorithms (GAs) are general search and
optimisation algorithms inspired by processes normally associated with
the natural world. The approach is gaining a growing following in the
physical, life, computer and social sciences and in engineering.
Typically those interested in GAs can be placed into one or more of
three rather loose categories:
1. those using such algorithms to help understand some of the
processes and dynamics of natural evolution;
2. computer scientists primarily interested in understanding and
improving the techniques involved in such approaches, or constructing
advanced adaptive systems; and
3. those with other interests, who are simply using GAs as a way to
help solve a range of difficult modelling problems.
This book is designed first and foremost with this last group in
mind, hence the approach taken is largely practical. Algorithms are
presented in full, and working code (in BASIC, FORTRAN and PASCAL) is
included on a floppy disk to help you to get up and running as quickly
as possible. Those wishing to gain a greater insight into the current
computer science of GAs, or into how such algorithms are being used to
help answer questions about natural evolutionary systems, should
investigate one or more of the texts listed in Appendix A.
Although I place myself in the third category, I do find there is
something fascinating about such evolutionary approaches in their own
right, something almost seductive, something fun. Why this should be I
do not know, but there is something incredible about the power of the
approach that draws one in and creates a desire to know that little bit
more and a wish to try it on ever harder problems.
All I can say is this: if you have never tried evolutionary inspired
methods before, you should suspend your disbelief, give it a go and
enjoy the ride.
This book has been designed to be useful to most practising
scientists and engineers (not necessarily academics), whatever their
field and however rusty their mathematics and programming might be. The
text has been set at an introductory, undergraduate level and the first
five chapters could be used as part of a taught course on search and
optimisation. Because most of the operations and processes used by GAs
are found in many other computing situations, for example: loops; file
access; the sorting of lists; transformations; random numbers; the
systematic adjustment of internal parameters; the use of multiple runs
to produce statistically significant results; and the role of stochastic
errors, it would, with skill, be possible to use the book as part of a
general scientific or engineering computing course. The writing of a GA
itself possibly makes an ideal undergraduate exercise, and its use to
solve a real engineering or scientific problem a good piece of project
work. Because the algorithm naturally separates into a series of smaller
algorithms, a GA could also form the basis of a simple piece of group
programming work.
Student exercises are included at the end of several of the chapters.
Many of these are computer-based and designed to encourage an
exploration of the method.