December 2005


Options: Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Thu, 29 Dec 2005 17:58:25 -0500
1.0 (Apple Message framework v746.2)
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
text/plain; charset=US-ASCII; delsp=yes; format=flowed
Liviu Panait <[log in to unmask]>
To: ECJ Evolutionary Computation Toolkit <[log in to unmask]>
text/plain (64 lines)
>> Liviu is our coevolution man, but I believe this will do the
>> following:
>> For each individual i in the population
>>        If the individual has not yet had GROUPSIZE evaluations
>>                Pick a random individual j from the population that
>>                        has not yet had GROUPSIZE evaluations
>>                evaluate i and j together once, assigning fitness to
>> each
>> Sometimes it happens that there's no one on left to evaluate against,
>> in which case a random person j is chosen and his fitness is not
>> assigned.
> Okay, that would explain some things.  Is an individual ever matched
> against itself?

We usually check for that not to happen.

>> During breeding, except for a few GP modifiers which had a bug in
>> them, individuals modified to the next generation should be marked as
>> not evaluated.  Individuals which are direct copies will be marked as
>> evaluated.  However CompetitiveEvaluator will evaluate individuals no
>> matter how they're marked.
> In other words, individuals will always be marked as not evaluated?


> If so, how can I set the initial fitness of an unevaluated individual
> just once?

Use problem.preprocessPopulation(state,state.population)

>> Your GoProblem example is odd though: it appears in
>> postprocessPopulation you're just trimming fitnesses to between 0 and
>> 100.  Why would you want to do that?
> I set the minimum to zero in the belief that fitnesses have to be
> nonnegative.  Is this true?

SimpleFitness may have arbitrary values as of the previous version (I
believe, or if not the current version does not complain about that

> I set the maximum to 100 so that an individual could not build up a
> huge fitness by winning many early games, then never be knocked down
> by later losses.

I am not sure I follow the reasoning.  Even if an individual won
against early competitors in initial generations, that says little
about how good he is against better opponents found at later
generations.  I would treat this on a per-generation basis and ignore
information about wins or loses from previous generations.

Again, I encourage you to look into the single-elimination
tournament, which we found to work nicely.  There is also a version
of double-elimination-tournament somewhere, though we have not tested
it that much.

Best regards,