[Paradiseo-help] Additional EO classes, possible contributions

Patrick Lehner lehner.patrick at gmx.de
Sam 12 Oct 19:17:14 CEST 2013

Hey everyone,

I have previously talked to bnj and nojhan about this on IRC (which is 
sadly not very active), and I want to announce it here on the mailing 
list as well.

I've been working on my bachelor thesis for a few months now and the 
implementation contains some Genetic Programming, for which I use 
Evolving Objects (I had found out too late that ParadisEO had picked up 
and continued EO to switch to it). In the course of developing that 
program, I have created some new GP classes which I've found useful, and 
I have usually kept them abstract and independent enough to pipe them 
back into ParadisEO as contributions (some are not even restricted to 
the GP part of EO).

For the first group of these, I have created this pull request on 
nojhan's Github mirror of ParadisEO: 

Please note, I have only today found the contributions guidelines on the 
ParadisEO website. The PR does not yet include unit tests or adequate 
documentation, because I have not yet had the time to flesh it all out.

However, it should give you a first look at the contents and ideas of 
the classes. I will fill in the missing parts once I get around to it.

I also have a few more classes which might be useful. I'll give a list 
of (very) brief descriptions below:

* eoInitFilter, eoFilterMonOp, eoFilterQuadOp: Filtered operators and 
initializer (see PR)
* eoDiversityFilter: if a genotype appears more than X times in a 
population, replace any further individuals of this genotype with newly 
created ones
* eoInteractiveInit: ask the user to accept an individual when creating 
it, and create a new one if it is rejected (useful for debugging)
* eoStHoistDepthLimitMutation: since strongly typed GP trees cannot be 
pruned (at least in my version of EO), this mutator will hoist-mutate a 
tree until it is below a depth threshold
* eoStParseTreeDynamicDepthInit: instead of initializing strongly typed 
GP tree just from a static list of available nodes, also accept a list 
of functions which generate nodes; use these functions to create a new 
set of additional nodes every time an individual is created.

Furthermore, I have an implementation of a node class for strongly typed 
GP trees which can use a "nice" node class hierarchy (with completely 
abstract base class(es) ), and uses a proxy class to plug it into the 
templated EO classes (which cannot take pointers and thus cannot 
directly make use of polymorphic functions in class hierarchies). This 
might serve as a good example for implementing syntax trees with 
(Paradis)EO GP.

If you have any questions, comments or feedback on all this, please let 
me know.

Kind regards,

Plus d'informations sur la liste de diffusion Paradiseo-help