Multi-Objective Mating Selection
SigmaX opened this issue · 0 comments
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):
- Add the elitist archive to
newpop
(by callingloadElites()
). - Breed offspring out of the old population and add them to
newpop
alongside the elites. - 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:
- Add the elitist archive to
newpop
(by callingloadElites()
). - Replace the old population with
newpop
. - 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.