[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