Really what I want to do is output some of my variables on the way to calculating fitness, but primarily for the best individual. I'm not using multiple objectives, though I may in the future. To calculate the fitness, I calculate several sub-fitnesses and weight them myself for now. One of them is fairly complex (a dollar cost), and I'd like to output that in addition to the final fitness. I was thinking I could output that only for the final best individual, so it would make sense to do it in finalStatistics, but now I see I would have to replicate my algorithm in there rather than in the fitness object where it belongs, so I guess it's better to just output each sub-fitness variable along the way.
The only reason I was trying to mess with fitness in finalStatistics is that the compiler was telling me it was an abstract class and I was not extending all of the methods it required. Now I see that doesn't make much sense. I'll give up on finalStatistics and work within the Fitness methods.
> 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
I thought about this but as I mentioned, being new to OO, it's difficult to figure out what variables are available in objects and what they do. The class documentation seems to be automatically created and documents what they are but not what they mean. Code samples are helpful and greatly appreciated!
Thanks.
On Aug 1, 2011, at 2: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
|