openmole / mgo

Purely functional genetic algorithms for multi-objective optimisation
71 stars 3 forks source link

False definition of Non Dominated Sorting brick #2

Open reyman opened 9 years ago

reyman commented 9 years ago

It seems the non dominated elitism used by NSGA2 implementation in MGO is not correct.

Actually the different front are builded using information based on the number of domination, this is another type of existing sorting, but do not correspond to the NDS or Non Dominated Sorting used by NSGA2

In NDS, at each step of the loop we take only the solution with dominated = 0 (cf the non dominated solution) to make a new front, then we remove this population selected, and then recompute a new non dominated front based on this new cutted population. etc.

Actually population are not removed, and not recomputed.

Only the last front is tested using diversity metric, this code seems correct in mgo.

Another point perhaps, it seems the NDS is realized on population + offspring on line 67

NonDominatedElitism(this)(filter(oldGeneration ++ offspring), mu)

But it's more a properties of NSGA2 than a generic properties from NDS.In the case of NSGA1, the non dominated sorting operate only on offspring population (so the NDS can be without elitism). Perhaps it can be a good idea to move this properties in another brick.