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
> 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