[Haskell] ANNOUNCE: genprog-0.1
Kenneth Hoste
kenneth.hoste at ugent.be
Wed Dec 8 10:01:46 CET 2010
Hi Jan,
Hi Jan,
On 11/29/2010 12:55 PM, Jan Snajder wrote:
> Dear Haskellers,
>
> I am pleased to announce the release of genprog-0.1, a genetic
> programming library.
>
> (snip)
Very interesting, and nice job on the code (elegant, well-structured,
well-documented, ...)!
Genetic programming recently got my attention because one of the bots in
the Google AI contest was built using this technique (see
http://ai-contest.com/forums/viewtopic.php?f=17&t=1136), and it
performed really well (way better than my hand-crafted bot).
I have a bit of experience with genetic algorithms, on a practical and
pragmatic level. The field of genetic programming is something I hope to
look at and play with in the upcoming months (just for fun).
I was kind of planning to implement my own genetic programming library
in Haskell as I became familiar with the field, but after diving into
your code it quickly became clear to me you've done a way better job
than I would have.
I really like the example you provided for evolving an expression that
computes a specified integer value. I plan to start playing with that
and improve the example (faster convergence to a perfect solution, and
also tweaking the current GP config to obtain smaller solutions).
A couple of questions (some fairly unrelated to Haskell):
How hard would it be to extend the current version to support the
evolution of actual Haskell programs? As far as I can tell, the current
version has support for (simple?) self-defined expressions, but this
seems like a long way from supporting Haskell programs with
multi-argument functions that operate on lists, etc., even if you just
limit it to non-monadic Haskell98 code.
Have you considered playing with dynamic values for the various
parameters that steer the evolution, i.e. population size,
crossover/mutation probabilities, etc.?
One thing I've always wanted to try (but never really got to it) is e.g.
increasing the mutation probability as the evolution seems to be getting
stuck in a (local?) optimum. Also, shrinking the population size if
enough progress is being made could be interesting, to speed up the
evolutionary process. Are you aware of studies that do such a thing?
Are you planning to actively maintain and extend this library? Are you
using it for research purposes, or did you hack this together just for
fun (if so, nice job!). What do you plan to use it for?
Anyway, great job, I hope I'll find the time to play around with this.
More information about the Haskell
mailing list