Print

Print


I'm still struggling to figure out how to have my fitness logic output some values to the statistics file, so I can see them in relation to the individual. I don't think I can do it from a statistics hook or from a method on the individual, because the variables are internal to the fitness algorithm. I can see how to find the statisticslog variable, but the fitness object only receives the state, not the parameter base (at least as far as I can see). In the example code, base is passed in to the setup() method, but the fitness method doesn't have a setup() method.

I can simply output the variables, but they go to stdout instead of the statistics file, and I'd like it to be near the genome output.

What am I missing? Is there some sample code for how to output variables to the statistics log from within the context of a fitness method?

On Aug 1, 2011, at 12:41 PM, Sean Luke wrote:

> On Jul 29, 2011, at 12:15 PM, Roger Worden wrote:
> 
>> I'm new to Java and OO but with lots of experience in procedural languages,
>> so I'm struggling a bit with the ECJ class libraries. I have constructed an
>> evaluator and can see correct results in the genome displayed by the default
>> statistics methods. Now I need to customize the final results for reporting,
>> output to a file etc. I'd like to customize finalStatistics, and it seems I need to
>> customize printFitnessForHumans to get access to the genome so I can
>> format it.
>> 
>> Can someone post or point me to some sample code for finalStatistics that
>> shows me how to access the current individual (I'm assuming finalStatistics is
>> called once per individual), or how to access the whole state from this
>> method?
> 
> It sounds like what you're really trying to do is write out some statistics about your genome.  Fitness objects don't have anything to do with this -- instead, the genome is handled in the Individual itself.  Different representations of Individuals have different kinds of genomes.  For example, FloatVectorIndividual holds a genome consisting of an array of floats.
> 
> Additionally, finalStatistics is called only once, at the end of an evolutionary run.  It's not per-individual.  I presume you're trying to report stuff on each Individual in the population say.  In this case, you could make a finalStatistics which does this:
> 
> 	For each subpopulation in the population
> 		For each individual in the subpopulation
> 			Cast the individual into the type I'm using
> 			Grab genome information out of that individual and do stuff with it
> 
> Sean