I think the easiest approach is to modify the produce() method of the
breeding pipelines you're using to mark the children with information
about their parents before returning them.  Let's assume that you've
modified individuals to hold pointer relevant statistical information.
Then for example in VectorCrossover.produce(...), you might change


                   // at this point, parents holds COPIES of the parents, and
                   // we're just going to cross them over.
                   updateStuff(parents);  // do your thing here

You can create your own Statistics subclass and just override whatever
hook you'd like there to print out things.  You then hang your
Statistics subclass instance as a child of the main statistics instance
you're using (say, SimpleStatistics).  See the documentation for
Statistics for more info there.


On Jun 17, 2004, at 9:04 AM, Artur Matos wrote:

> Hi to all,
> A while ago I have posted a question on how to generate phylogenetic
> trees from ECJ runs (you can see my original post below, after this
> message). At that time, Gabriel Balan kindly gave me some source code
> for this but unfortunately it is not complete, and he cannot help me
> at this time as he is currently out of the country.
> Basically I am just trying to generate the relationships between
> individuals in succeeding generations --- whether they are connected
> by mutation, crossover and reproduction, and to which parents. Do I
> need to create my own breeding pipeline or extend the existing ones
> for recording this information? It doesn't seem easy to extend the
> pipelines for this. Any advice would be kindly appreciated.