About the book

Robot with transparent background A Field Guide to Genetic Programming (ISBN 978-1-4092-0073-4) is an introduction to genetic programming (GP). GP is a systematic, domain-independent method for getting computers to solve problems automatically starting from a high-level statement of what needs to be done. Using ideas from natural evolution, GP starts from an ooze of random computer programs, and progressively refines them through processes of mutation and sexual recombination, until solutions emerge. All this without the user having to know or specify the form or structure of solutions in advance. GP has generated a plethora of human-competitive results and applications, including novel scientific discoveries and patentable inventions.

The book is freely downloadable under a Creative Commons license as a PDF and low cost printed copies can be purchased from lulu.com. This web site will be used for information relating to the book, and other pertinent announcements. We also have a discussion group for questions and conversation related to the book.

Friday 30 July 2010

Just 2 days left: GPEM anniversary issue available for free!

The Springer journal Genetic Programming and Evolvable Machines is celebrating its first 10 years with a special anniversary issue of articles reviewing the state of GP and considering some of its possible futures. For the month of July (which ends in two days!) the entire issue is available for free download.

Included in the issue are:
  • Human-competitive results produced by genetic programming
  • Theoretical results in genetic programming: the next ten years?
  • Genetic Programming and Evolvable Machines: ten years of reviews
  • Open issues in genetic programming
  • Grammar-based genetic programming: a survey
  • Developments in Cartesian Genetic Programming: self-modifying CGP
  • Bio-inspired artificial intelligence: theory, methods, and technologies
Once the month ends these will all start costing money again with two exceptions: the article on human-competitive results and the survey of 10 years of reviews will remain free in perpetuity.

In the spirit of full disclosure, Riccardo, Bill, and I are all on the editorial board of the journal and contributed to one or more of the articles. Still, it's a cool resource marking an interesting time in the development of the field, so take advantage of it while you can!

Saturday 19 September 2009

Thanks for the kind words about the Field Guide

We occasionally have the gratifying experience of stumbling across someone who's said something nice about the Field Guide out there on the Internet. Recently, for example, Bill came across this comment on GeneticProgramming.us

The Field Guide to Genetic Programming was compiled from numerous sources to reflect the current state and practice of Genetic Programming. This book is an invaluable asset to anybody interested in Genetic Programming. I highly recommend it. It is available for free online, but it certainly doesn't hurt to have a hard copy.
We greatly appreciate this sort of support. It's nice to know that people are finding the Field Guide useful, and are willing to spread the word. Many thanks to everyone who's put a little of their energy into our project.

Quite remarkably, the Field Guide continues to sell steadily on Amazon despite being freely available in multiple formats. Our sales rank on Amazon.com is (as of today) #198,789. This may not sound like much, but for a quite specific technical book in an area of computer science most people haven't heard of this is pretty darn excellent! A quick survey of some of the other heavy hitters in the EC book list shows that they're all ranked over 200K, with many much higher (like over 500K). That said, Melanie Mitchell's new Complexity: A guided tour (which is a general audience book) is ranked 2,981, which is a really excellent achievement - congratulations to Melanie!

If you're a reader of either the PDF or printed version and would like to lend a hand, feel free to leave a short review on something like Amazon - it's definitely appreciated.

Friday 27 March 2009

Happy Birthday Field Guide!

It is hard to believe it's already a year since the launch of the Field Guide to GP. It has been amazing to see it spread. We have had nearly 40,000 views of this web site (see data below), almost exactly 28,000 downloads of the book and we are rapidly approaching the 500 mark with paper copies. I suspect (also judging from the referring sites) that many of these "contacts" have been with people who had never heard of GP before, possibly not even of evolutionary computation. This was one of the targets we had in mind when we decided to write this book and make it freely available. Many colleagues have actually helped us in this, by recommending the book to others, by suggesting it as a textbook for university courses, by mentioning the book in their blogs, etc. We are very grateful to them and to all the visitors of this site and readers of the book.

Happy first birthday Field Guide!

Thursday 5 February 2009

Google hits

Just for fun, a few days ago I tried searching Google for "genetic programming", and got a whopping half a million hits (533,000 as of this morning).

I could not resist trying out "field guide to genetic programming". Last time I had done it, a few months ago, we had something like 3,500 hits, which I thought was wonderful. So, nothing prepared me for this: 47,400 hits!!! (as of this morning) I.e., amazingly, 11.2% of all pages that mention GP also mention the book.

I suspect a lot of this is just due to the fact that a few big blogs somehow mentioned the book. One of the latest was a mention of the book in del.icio.us in relation to Roger Alsing's Evolution of Monna Lisa. (I'm not even sure that is genetic programming, but still a very cool application.)

Many thanks!


Monday 19 January 2009

Another Bug Fixed in TinyGP

Many thanks to Muhammad Atif Azad, who thoroughly analysed TinyGP.java, the sample GP implementation in one of the appendices of the book, and uncovered another important bug.

In the evolve function the following line of code

if ( rd.nextDouble() > CROSSOVER_PROB ) {

should be

if ( rd.nextDouble() < CROSSOVER_PROB ) {

This bug does not crash the system, but it means that the parameter CROSSOVER_PROB is interpreted as the mutation probability rather than the crossover probability (its intended purpose).

We had found and cured this bug some years ago in the C version of TinyGP, but it somehow made it into the Java version (probably because I did the conversion before the bug had been found).

The bug has now been fixed in the
online version of TinyGP.java

My most sincere apologies to any users of this system.

Wednesday 26 November 2008

Odyssy 20001

The book is sky rocketing. Amazingly, 8 months (to the day!) since its launch, today we passed the 20,000 copies limit (hitting 20001 to the last check, hence the title of this post). Of these approx 98.7% are (genuine) downloads and 1.3% paper copies.

Many thanks!

Tuesday 18 November 2008

A (potential) bug in TinyGP

Many thanks to Muhammad Atif Azad who found a bug in my implementation of the grow method. Quoting from his email:

The 'grow' function returns -1 if we go past the maximum size limit. Consider the following line of code:

return( grow( buffer, grow( buffer, pos+1, max,depth-1), max,depth-1 ) );

Let's say the nested grow returns -1. The outer grow accepts it for 'pos' i.e. index to next location in the tree to grow. There is no check inside the function grow against (pos == -1). Thus, it would raise a run time exception if used.

The reason it may not have occurred so far may be that we reach the depth constraint earlier than the size limit.

Indeed Atif is right: since by default MAX_LEN is set to 10,000, in order for the bug to occur one needs to use very big initial maximum depths so that individuals with more than 10,000 nodes may be created.

The online version of TinyGP (available here) has a fix for this potential bug.

PS: In the original version of TinyGP, the code to perform point mutation replaced terminals with variables. This implied a bias in that random constants were actively removed from the population when mutation was switched on. Atif pointed this out to me recently. The current version of TinyGP does not have this bias.