About the Book
Genetic algorithms are one of the tools you can use to apply machine learning to finding good, sometimes even optimal, solutions to problems that have billions of potential solutions. This book gives you experience making genetic algorithms work for you, using easy-to-follow example problems that you can fall back upon when learning to use other machine learning tools and techniques. Each chapter is a step-by-step tutorial that helps to build your skills at using genetic algorithms to solve problems. Download the sample chapters for a brief introduction to genetic algorithms and the writing style used in this book.
Python is used as the teaching language in this book because it is a high-level, low ceremony, and powerful language whose code can be easily understood even by entry-level programmers. Because Python is used for teaching, but is not being taught, the use of Python-specific features that might make the code harder to follow for non-Python programmers has been minimized. This means that if you have experience with another programming language then you should have no difficulty learning Python by induction while concentrating on learning about genetic algorithms. Additionally, it should not be difficult for you to translate the working code used in this book to your favorite programming language on-the-fly, depending on the capabilities and support libraries available for your preferred language.
The code in this book is open source, licensed under the Apache License, Version 2.0. The final code from each chapter is available for download using a link at the end of the chapter.
About the Author
I am a polyglot programmer with more than 15 years of professional programming experience. When learning a new programming language, I start with a familiar problem and try to learn enough of the new language to solve it. For me, an engine for solving genetic algorithms is that familiar problem. Why? For one thing, it is a project where I can explore interesting puzzles, and where even a child's game like Tic-tac-toe can be viewed on a whole new level. Also, I can select increasingly complex puzzles to drive evolution in the capabilities of the engine. This allows me to discover the expressiveness of the language, the power of its tool chain, and the size of its development community as I work through the idiosyncrasies of the language.