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!
Riccardo
About the book
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.
Thursday, 5 February 2009
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.
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!
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:
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.
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.
Saturday, 31 May 2008
10,000 downloads
Yesterday, the field guide reached 10,000 downloads, just over two months from going live, averaging 150 downloads a day. Of course, as the graph at the bottom of the blog shows, many downloads happened in the first few weeks. So, in the last few weeks we seem to be averaging something like 50 downloads a day. Pretty amazing nonetheless! Many thanks!
Thursday, 8 May 2008
The Field Guide goes HTML
We have produced an HTML version of the book. This is available here. We used htlatex to do the main conversion from Latex to HTML and then htmldoc to split the resulting huge file into chuncks of more reasonable size. Many manual changes have then been necessary. The result is not perfect, but we think it may be good enough to be useful.
Happy browsing!
Happy browsing!
Tuesday, 6 May 2008
The Field Guide is available on Amazon!
Over the weekend the Field Guide apparently completed its complex journey into the land of major on-line retailers and is now available via Amazon and several other on-line vendors.
Subscribe to:
Posts (Atom)
