A brave new world of genetic programming
In the past 17 years I have been programming in some fashion throughout my life, little has truly excited me. Programming all night in Commodore 64 basic, that cyan blue hum... When you were the graphics artist (sprites), musician, sound engineer (poking things that shouldn't be, annoying synthetic noises) Oh, and goto's dangling precariously throughout the half finished codebase. This was when it was the most fun. Coding as a hybrid rigid science and creative art.
Flash forward to senior year of college. CS was quite fun, that year myself and 2 other CS students placed in the annual interstate programming tournament, a first for our fledgling department. I spent my weekday nights as a tutor, and the majority of the final weeks were spent coding my senior seminar, a Mortal Kombat clone using DirectX 3.0 (3.0.....damn I'm old) That was something that I truly enjoyed doing..
Those were the distinct moments I remember truly enjoying and being excited about technology. Now, however, I have another one to add.
Over several beers a bit back, Kevin Lilly and I engaged in a fine drunken debate over the possibilities of genetic programming. Although I was (and still am) skeptical about its application to many tasks and to the scale that it will be practical to evolve, I was quite intrigued.
I began reading about the exploits of Dr. Koza and the basics of GP at geneticprogramming.org. Curiousity was peaked, and I decided to code one of the benchmark examples, a program that over time evolves to guess a number. This seemed easiest to accomplish in a week or so, as I elected to present the topic at our tech meeting at work.
For my study, I used a couple of set parameters :
sample size - 500 individuals, with a MAX_DEPTH of 3 and a max fertility of 2 children per node.
max evolutionary cycles of 1000
growth type of FULL (although, I do plan to augment this)
terminal nodes : set of integers between 1 and 15
functional nodes : +/-*
selection criteria : FitnessProportionalSelector, RandomSelector, MutateSelector
I can't explain how amazing it is watching your population get better over time. Each generation I run a report which calculates the top performers, shows the average standardized fitness, and a few other statistics. Most importantly though, is the mensa percentage, which I coined to denote the percentage of the population with .025% of the correct response. So, if everything is kosher, over time your population should evolve, and your chances of getting the correct answer should increase, which it does. It does not always evolve to get the correct answer, but most often it does.Anyways, this is an incredibly fresh and interesting way of thinking about solving problems using technology. I have always been heavily skeptical about the amount of weight people will give the vague concepts of AI, and GP is the first time I have believed that there is a radical way of forwarding mans footprint in dealing with evolving computerized knowledge.