Genetic algorithms are a subset of machine learning. In practice, genetic algorithms are usually not the single best algorithm that can be used to solve a single specific problem. In most cases, there are better, more targeted solutions to individual problems! So why bother? Genetic algorithms are excellent multi-tools that can be applied to many different types of problems.
It’s the difference between a Swiss Army knife and a proper ratchets crew driver: if your job is to tighten 300 screws, you’ll want to buy as crew driver, but if your job is to tighten a few screws, cut fabric, punch holes in leather, and open a bottle of cold soda as are ward for your hard work, a Swiss Army knife would be a better choice.
Furthermore, I believe that genetic algorithms are the best introduction to studying machine learning as a whole. If machine learning is the iceberg, genetic algorithms are part of the tip of the iceberg. Genetic algorithms are interesting, exciting, and novel. Genetic algorithms connect the computing world to the natural world because they mode l natural biological processes. Writing a genetic algorithm for the first time and seeing amazing results emerge from chaos and randomness is awe-inspiring for many students.
About the Book
This book is a simple and accessible introduction to genetic algorithms. No prerequisites in mathematics, data structures, or algorithms are required to get the most out of this book. However, familiarity with intermediate-level computer programming is expected. The programming language used in this book is Java, but it does not use Java-specific advanced language constructs or third-party libraries.
If you are familiar with object-oriented programming, you should have no problem following the examples in this book. By the end of this book, you should be comfortable implementing genetic algorithms in the language of your choice, whether it is an object-oriented, functional, or procedural language.
In this book, you will use genetic algorithms to solve four different problems. In the process, you will learn a number of techniques that you can combine to build genetic algorithms in the future. Genetic algorithms are, of course, a large and mature field with underlying mathematical formalisms, and it is impossible to cover everything in this field in one book. Therefore, this book draws the line at avoiding pedantic discussions, avoiding mathematical formalism, and not venturing into the realm of advanced genetic algorithms.
The book is intended to be immediately usable with practical examples and to give you enough of a foundation to continue studying advanced topics on your own.