GMUEClab / ecj

ECJ Evolutionary Computation Toolkit
http://cs.gmu.edu/~eclab/projects/ecj/
123 stars 42 forks source link

Multi-Objective Mating Selection #54

Closed SigmaX closed 6 years ago

SigmaX commented 6 years ago

The algorithms for constructing elitist archives in NSGA-II and SPEA2 have been fixed (i.e. their overrides of SimpleBreeder's loadElites() method). There still appear to be problems with the multi-objective population model, however.

The problem is that SimpleBreeder is doing this (which makes sense for normal elitist EAs):

  1. Add the elitist archive to newpop (by calling loadElites()).
  2. Breed offspring out of the old population and add them to newpop alongside the elites.
  3. Replace the old population with newpop.

NSGA-II and SPEA2, however, are supposed to select parents exclusively from the new archive (newpop). The correct order for these algorithms is:

  1. Add the elitist archive to newpop (by calling loadElites()).
  2. Replace the old population with newpop.
  3. Breed offspring out of the population (which is now the archive) and add them to the population alongside the elites.

SPEA2, furthermore, is still using its own SPEA2TournamentSelector, which is now obsolete (and buggy: it tries to look at the tail end of the population to find the elitist archive, but the archive is now found at the beginning of the population ArrayList).

As we fix this, the comments in ec/app/moosuite/spea2.params (which are currently obsolete) also need updated to reflex the new SPEA2 population model.