I've been busy with the current implementation of a grammar based GP into POSH#. (I am still intending to implement a version of Behavior-based Genetic Programming )Having a GP create agent behaviour is not really that new, but having it create human modifiable dynamic plans which can be changed and put pack into the evolutionary cycle seems interesting. This way evolution can be directed at any point in time by a human designer.
I generally think this goes against the idea of genetic programming because a bad design can potentially stop the conversion to an optimum if it is introduced to many time. Also this slows down evolution quite a bit but for game ai which needs to execute in real-time I do not see a large negative impact.
Mario AI lessons so far ... wait its now called platformer AI :)
From my experiments with the platformer AI toolkit and JGAP which focus on learning human play I can see why most people rather stick with other approaches such as ANNs. Most GP tool-kits work not particularly well for the non demo cases and are relatively unstable. It is also more time consuming to come up with good solutions and a good fitness function. The parameters for mutation and everything else are tricky as well and might lead to to local optima rather than global ones. As discussed in a blogpost earlier Schwefel and Baeck offer quite good descriptions on how to set the parameters and how you can spot a wrong one.
After fixing all that and loads of small-ish and not so small-ish issues in JGAP, the game trace learning is stable now and I am generating a good solution within 1000 generations which takes on my slow-ish machine roughly an hour. As this could be parallized I could bring down the whole time to 20mins on my i5.
I now switched to working on the GP version for POSH which seemed to much work to get JGAP doing what I want. Its a shame that the JGAP forum seems dead and the project has loads of things which still need to be done before it is even close to production state.