[galib] Ellitism
Robert Burbidge
rvb at aber.ac.uk
Tue Mar 17 13:06:26 EDT 2009
On 17 Mar 2009, at 16:13, Zyed Bouzarkouna wrote:
> Thanks Robert for your reply.
> In fact, I'm using The java version of GALib.
>
> //Elitism--fittest chromosome automatically go on to next
> gen (in 2 offspring)
>
>
> this
> .chromNextGen
> [iCnt].copyChromGenes(this.chromosomes[this.bestFitnessChromIndex]);
> iCnt++;
>
>
> this
> .chromNextGen
> [iCnt].copyChromGenes(this.chromosomes[this.bestFitnessChromIndex]);
> iCnt++;
>
> And here I don't see any reason to put it twice especially since we
> don't allow any mutation on the best indiv.
Hi Zyed,
It goes to show that platform, version, etc. should always be included
in such a post. (I didn't know there was a java implementation ...) I
use the C++ library v2.4.6.
I agree with you that it does not make much sense to automatically put
two copies of the best into the next generation. The effect will be to
increase the selection pressure, especially if the population is
small, and possibly cause early convergence.
However, I have used exactly this type of elitism before, when the
fitness function was very noisy. If only one copy is made then there
is the danger that in the next generation it will score an
artificially low fitness and be lost. If two copies are included then
this is less likely. The converse also applies, i.e. if we include
enough copies of something when the fitness is noisy then one copy
will get a high fitness. Follow DeJong's advice and make sure all of
your operators are suited to the problem.
Rgds,
Robert
More information about the galib
mailing list