Get a hands-on introduction to machine learning with genetic algorithms using Python. 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 begins with a project which you are encouraged to try to implement on your own before working through one possible implementation, and related pitfalls, with the author. This helps to build your skills at using genetic algorithms and prepares you to solve problems in your own field of expertise. The projects start with Hello World! then progress toward optimizing one genetic algorithm with another, and finally genetic programming. The following topics are introduced different ways to determine fitness, handling competing goals, phenotypes and genotypes, mutation options, memetic algorithms, local minimums and maximums, simulated annealing, branch and bound, variable length chromosomes, crossover, tuning genetic algorithms, symbolic genetic programming, automatically defined functions, hill climbing, chromosome repair, and tournament selection.
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 in this book, 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 using this book to learn about genetic algorithms while learning to at least read Python. 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.
For a brief introduction to genetic algorithms and the writing style used in this book, use Amazon's Look Inside feature to try it out, or download the sample chapters linked from the Github repository associated with this book. The source code is made available under the Apache License, Version 2.0.
I am a polyglot programmer with more than 15 years of professional programming experience. My personal projects include photography, playing board games, genealogy and genetic programming.
A hands-on guide to writing genetic algorithms in Python.
This book is organized around a collection of practice problems. Each chapter presents a harder problem, requiring some new genetic programming techniques to solve. Sheppard leads the reader through framing each problem effectively, coding up a solution, and fleshing out a genetic algorithm framework along the way which gets reused throughout the book. The text is light on theory and explanations. It mostly just introduces ideas, provides implementations, and leaves further research to the reader if they want it.
I love this book's structure and hands-on approach. I quickly learned the skills and concepts I was after, so the book served its purpose well. However, there's a lot I dislike about the author's code style and the design of his framework. It's gross, frankly. As an experienced Python programmer, I just rewrote everything to my satisfaction as I went along, which was actually a big help for mastering the core ideas. On the other hand, a Python novice might have a hard time following along, or might pick up some bad coding habits.
I recommend this book for getting up and running with genetic algorithms fast, just so long as you don't mind learning from messy, tricky code with no comments.
This book focuses on one particular kind of GA, a few of its variations, and a small set of practice problems. For a more general overview of GA theory and a thorough exploration of their many forms and applications, check out An Introduction to Genetic Algorithms.
I am novice sailor in the vast blue sea of programming. Actually I wanted to understand how AI works. So I encountered python programming and started to study python by myself. At the age of 64 I am pretty hesitant to take any courses (no remote, nor in person). So I started to read beginners books and experiment with python editors. Here I am now, enjoying this book. Not actually able to write my own code but gradually beginning to be able to read python. And thanks to this book I claim I have seen the light of object oriented programming. I reproduced (not copy-paste) all examples in my own computer and managed to cut down various errors and got all examples to work. It took some 3 months. Great fun of learning new things and concepts. Finally I recognized in Chapter 11 "Generating Sudoku" a code error in the book at page 119. Example does not work with the described code. The 9 sections of Sudoku are indicated by code "sections[int(row / 3) + int(column / 3) + 3].add(value)". However, the right code is "sections[int(row / 3) * 3 + int(column / 3)].add(value)". Later on in this Chapter 11 a rule based solution is introduced. It is definitely more elegant and also faster than this earlier solution [which works (slowly) with this correction].
very practical and useful to lazy people like me who do not want to write their own GA optimizer. Lots of code examples. Go directly to the appendix if you already have an idea of what GA is for. GA, genetic algorithms, basically is a way to speed up the brutal force process in searching best parameter pairs in a given solution space, also known as optimization. All the problems are classical and introduced twinkling around solution space framing,mutate, crossover and fitness function formation. great code base for simple GA optimizer.
A really interesting read. It's kind of amazing to think that I stumbled across this idea on my own with very little programming experience at my first job.
This is far more robust than what I came up with, though. The much more reusable and flexible genetic engine is a great concept and one I plan to experiment with in the future. This is so great for NP problems like those slot machine reels were.