[galib] GA doesn't evaluate all mutated individuals
christian hresko
christian.hresko at verizon.net
Mon Nov 29 01:59:28 EST 2004
hmmm. maybe there's a bug elsewhere in your code. i just wrote my own
mutation operator and it works perfectly. i converge upon an optimal
score and all the mean, min and max scores look correct. i'm also
using a GASteayStateGA. are you sure something's not up with your
objective function or your selection scheme?
christian
On Nov 28, 2004, at 3:57 PM, Daniel Marbach wrote:
>> You might be interested in the following thread on the same subject:
>>
>> http://mailman.mit.edu/pipermail/galib/1999-May/000145.html
>>
>
> Thanks, but the thread mentioned above discusses always evaluating all
> the
> individuals - it is clear to me how to do that with evaluate(gaTrue)
> (I studied
> the documentation...)
>
> I don't want to evaluate all the individuals, but only those that
> mutated, i.e.
> those where the mutator returned a value greater than 0. When the
> mutator
> returns 0, that means that nMut=0, i.e. the genome was not mutated. If
> no
> crossover was used and no mutation occured, the individual should
> obviously not
> be re-evaluated (waste of time), so evaulate(gaTrue) is not good in my
> case.
>
> As I mentioned, I actually solved my problem by adding the following
> lines to
> the mutation function of my genome:
>
>>> if (nMut > 0)
>>> _evaluated = gaFalse;
>
> I was just wondering why the galib GA doesn't take care of this (or
> what I did
> wrong so that it didn't re-evaluate mutated genomes...)
>
>
> Greetings,
>
> Daniel
>
>
>
>> Daniel Marbach wrote:
>>
>>> Hi,
>>>
>>>
>>> I'm using galib to co-evoleve configuration and control of modular
>>> robots.
>> At
>>> the beginning I was very happy with galib, but by now I must say
>>> that I
>> spent
>>> more time studying the library and customizing stuff than it would
>>> have
>> taken to
>>> implement the GA from scratch. But that's just because I
>>> customize/extend
>> almost
>>> everything (Genome, selection, replacement, scaling, mutation...), I
>> believe
>>> galib can be highly beneficial for users with more 'standard'
>>> genomes.
>>>
>>> I had a problem that cost me a lot of time - I don't know if it is a
>>> bug in
>>> galib or if I
>>> did something wrong:
>>>
>>> For a long time, the performance of my GA (a GASteadyStateGA) was
>>> not very
>> good
>>> and weird things happened (e.g. weak individuals had a high
>>> fitness). By
>>> coincidence I discovered, that the GA was not always evaluating all
>>> the
>>> individuals that mutated. Adding the following lines to my mutation
>> function
>>> solved the
>>> problem:
>>>
>>> if (nMut > 0)
>>> _evaluated = gaFalse;
>>>
>>> Shouldn't galib do that for me? Or what did I do wrong that I had to
>>> add
>> these
>>> lines?
>>>
>>>
>>> Thanks for your help,
>>> Daniel
>>>
>>> PS: My genome class extends GATreeGenome<GARealGenome>.
> _______________________________________________
> galib mailing list
> galib at mit.edu
> http://mailman.mit.edu/mailman/listinfo/galib
>
More information about the galib
mailing list