This week I read a book on genetic algorithms: “An Introduction to Genetic Algorithms” by Melanie Mitchell. Not only do I have a nerdy love for these types of things, I believe genetic algorithms can have some interesting uses in game development. But I have only ever had a cursory understanding of the subject, and so I was hoping this book would change that.
Not What I Expected
The first chapter, “Genetic Algorithms: An Overview,” caught me off-guard when I reached section 1.3 where the author begins to provide formal definitions for biological terms and concepts that appear throughout the rest of the book. In retrospect I should have seen that coming; it makes a lot of sense for a text about genetic algorithms to draw parallels and relationships to biological evolution, and this book does so in impressive detail. But it surprised me nonetheless and served as a quick indicator that I was diving into a deep and dense introductory book.
Author Melanie Mitchell ends each chapter with a set of problems. This is par for the course in tech books. But she provides an interesting breakdown of problems that I have not seen in any computer science text before. Each chapter ends with problems grouped into two types:
The former test your logical comprehension of the preceding material, often posing fascinating questions about how the concepts mirror physical and biological behavior in the real world. The latter problems test your ability to take that knowledge and apply it to computer programming. It is a powerful one-two punch of exercises that really helps the book stand out.
Readers will need to be comfortable with math before approaching the book, particularly calculus and statistical analysis. But it will also help a lot if you already have a decent knowledge of biology, which I certainly did not. This did not prevent me from getting through the book, and I felt like a got a lot out of it, but the truth is I feel like I need to re-read the book. Genetic algorithms are a complicated topic and even though the book is introductory it does not perform any hand-waving to make the subject sound disingenuously easy.
I strongly recommend Mitchell’s text. It approaches the subject of genetic algorithms from multiple angles, not just that of computers. And its clear division between thought exercises and computer exercises is a refreshingly welcome design.
Next Book of the Week
This week I am going to read “Object-Oriented Software Construction” by Bertrand Meyer, as suggested by kclanc. And here and there I am going to sneak in some re-reading of Mitchell’s book as well, as I definitely feel like I would benefit from a second reading.