I don't know if this will help with the issues that are really motivating this 
thread, but for what it's worth I've written a couple of genetic programming 
systems (genetic algorithms in which the genomes are programs that are run as 
part of the fitness tests) in Clojure and I generally use agents to compute 
fitnesses across multiple threads and "await" to synchronize generations... 
which I gather is a different approach than was taken in the code being 
discussed, but in case it interests anyone see:

https://github.com/lspector/Clojush (this is a fairly mature research system 
that evolves Push programs)

or

https://github.com/lspector/taggp (this is a much simpler and more traditional 
genetic programming system with one novel feature, involving "code tagging" -- 
which is implemented in a pretty ugly way in "eval-with-tagging" but the 
multithreading part, using "pmapall", is pretty straightforward)

BTW I put an even simpler, almost minimal genetic programming system at 
https://gist.github.com/1452484 -- this one isn't even multithreaded (although 
one could easily use the "pmapall" approach from above) and it does have one 
non-traditional feature (called "trivial geography", which limits who can 
compete/mate with whom based on distance in the population), but it may be a 
good example for people who want to see one simple way of doing genetic 
programming in Clojure. Yes, scandalously, it uses "eval" in the error function.

 -Lee

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to