Chapter 11. EVOLVING INTELLIGENCE

Throughout this book you’ve seen a number of different problems, and in each case you used an algorithm that was suited to solve that particular problem. In some of the examples, you had to tweak the parameters or use optimization to search for a good set of parameters. This chapter will look at a different way to approach problems. Instead of choosing an algorithm to apply to a problem, you’ll make a program that attempts to automatically build the best program to solve a problem. Essentially, you’ll be creating an algorithm that creates algorithms.

To do this, you will use a technique called genetic programming. Since this is the last chapter in which you’ll learn a completely new type of algorithm, I’ve picked a topic that is new, exciting, and being actively researched. This chapter is a little different from the others because it doesn’t use any open APIs or public datasets, and because programs that can modify themselves based on their interactions with many people are an interesting and different kind of collective intelligence. Genetic programming is a very large topic about which many books have been written, so you’ll only get an introduction here, but I hope it’s enough to get you excited about the possibilities and perhaps to research and experiment on your own.

The two problems in this chapter are recreating a mathematical function given a dataset, and automatically creating an AI (artificial intelligence) player for a simple board game. ...

Get Programming Collective Intelligence now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.