(note: I received a review copy from the editors of, and wrote this review for, Genetic Programming and Evolvable Machines, DOI: 10.1023/B:GENP.0000036058.08897.cd )
Computational algorithms based on analogies with biological evolution are used to tackle hard search problems that are resistant to conventional techniques. One such set of problems is that of designing electronic circuits, of searching through the vast space of possible designs for circuits that satisfy multiple, often conflicting, constraints on power, speed, and size, as well as functionality. This book provides a comprehensive survey of the current state of the art of using evolutionary algorithms to design a wide range of electronic devices, covering chips and circuits, digital and analogue, fixed and programmable hardware. It helps if you already know something about evolutionary algorithms and about hardware.
The authors start off fairly conventionally, with a discussion of neo-Darwin biological evolution and DNA. They do rely rather heavily on a single source for this, quoting heavily from Mark Ridley's 1996 book, Evolution (2nd edn). This leads to the unfortunate repetition that there are 100,000 genes in the human genome, whereas the recent Human Genome mapping project has revised this number downwards significantly, to more like 34,000. (This practice of substantial quoting from their sources continues throughout, which I personally find quite irritating.) They continue with a brief overview of how these biological model is used to inspire evolutionary algorithms: Evolutionary Programming (EP), Evolutionary Strategies (ES), Genetic Algorithms (GA), and Genetic Programming (GP).
They follow up this conventional start with a more advanced chapter on topics of particular interest to evolving electronic devices, and to the authors themselves. These topics are: variable length representations, genetic memory, multi-objective optimisation, speciation, deceptive fitness functions, epistasis (the non-linear effect of combinations of genes), multi-modality, and noise. These are all potentially interesting, and not usually covered in introductory descriptions, but are not really treated in enough depth here to be readily understandable.
Next we get on to the meat of the book: the application of these techniques to designing a wide range of electronic devices. This is structured as a series of case studies, describing the detailed designs of devices that can be found in the literature. I decided to test how well this part could be used as a reference work, by trying to discover about evolving Field Programmable Analogue Arrays (FPAAs). The index led me directly to the relevant sections, where I discovered descriptions of a range of FPAA devices, and a range of experimental evolutionary approaches using them. I broadened my search to analogue devices in general, and again, the index led me directly to the material I wanted. I also dipped into the sections on digital devices this way, and again found a wealth of material. The technical section ends with some more offbeat topics, covering the evolution of designs for active filters, PID control circuits, antennae, and fault tolerant circuits.
An interesting property of electronic circuits, particularly programmable hardware such as Field Programmable Gate Arrays (FPGAs) and Field Programmable Analogue Arrays (FPAAs), is the possibility to carry out intrinsic evolution: that is, to evaluate each candidate circuit's performance directly in hardware, rather than in a software simulation. This has advantages of speed, where the simulator might run slowly, and precision, where the simulator might not capture the actual capabilities of the hardware, particularly in the case of analogue devices. Intrinsic evolution can lead to rather interesting results, where the evolutionary process exploits unexpected properties of the hardware. The authors include a section on Adrian Thompson's famous evolved FPGA circuits that so exploited particular properties of the hardware they would not run on other "identical" chips, or at different temperatures, or with apparently non-functional cells removed. It is important to include a measure of robustness in the fitness function to avoid such fragile circuits.
In addition to the technical descriptions, and comparisons with human designed devices, the authors also provide valuable discussions and "lessons learned". In these sections they discuss the applicability of the various techniques to the various design domains, with comments about what works well, and why. For example, they explain why evolutionary search techniques work better on analogue devices than digital ones: the search space is more continuous.
Now for a rant. One of the things I look for in a book, besides its content, is the "added value" that it gets going from its publisher: the improved production values over those of a self-published report. I have to say that the production values of this book are wretched. It is riddled with typos, missing and extra spaces, missing words, incorrect words. It has inconsistent use of italics for the mathematical symbols, inconsistent subsection heading styles, ghastly tables, and an ugly and hard-to-navigate layout. Three consecutive chapters have the same running heading. These problems, along with the awkward English, are all things that should have been caught at the copy-editing stage, yet the book seems not to have benefited from one. The authors appear to have been ill-served by their publisher.
Despite this grouse, the content benefit does outweigh the stylistic downside for me. In summary, if you are looking for a comprehensive survey of the state of the art in this very interesting and important area, and can put up with the stylistic infelicities, this is the book for you.