NSGA-II: building and extraction of a smooth pareto front

582 views
Skip to first unread message

Giovanni Pellegrini

unread,
Aug 28, 2013, 5:15:51 AM8/28/13
to deap-...@googlegroups.com
First of all thanks for this beautiful code. 
I am using DEAP to build a 2D pareto front: here is the code, to show you how I implemented all the stuff. Basically I have an evaluator "f", f:R(n)-->R(2) and a generator that generates values in a bounded boxed subdomain of R(n). I also decorated the mate and mutate operators to bound them too.
DEAP works fairly well and seems faster than Inspyred for the current problem. 

My questions are:
  • Inspyred produces a smooth pareto front while the one produced by DEAP is somewhat messier, even if it seems better. Is there a procedure to obtain smoother pareto fronts?
  • The mate and mutation operators where selected on the base of an Inspyred example, is there a more appropriate choice of operators, given that all the arguments and outputs of my problem are real valued, and my domain is a box in R(n)?
Please find attacched the pictures of the two pareto fronts

Best Regards and many thanks

Giovanni

pareto front DEAP.png
pareto front inspyred.png

François-Michel De Rainville

unread,
Aug 28, 2013, 9:32:42 AM8/28/13
to deap-...@googlegroups.com
Dear Giovanni,

First of all, your front obtained with DEAP looks a bit strange. Do you have a noisy/dynamic function? Because we clearly see dominated individuals if your figure, which we cannot reproduce with our standard MO functions.

For bounded real valued problems Deb and collaborators proposed not only a selection method but a complete algorithm, which is available in the example/ga subfolder. It uses SimulatedBinaryBounded for crossover, PolynomialBounded for mutation and a second tournament selection which is TournamentDCD. You should be able to use those operators as well as the complete algorithm for your problem. Unfortunately we don't provide a boxed version of the algorithm since it has many special features that worth to look at when doing multi-objective optimization.

Moreover, we benchmarked the DEAP implementation of the complete algorithm and found that it was similar to the one proposed by Deb by obtaining significantly similar results on the different test functions. This should mean that our implementation of the NSGA-II selection is correct. I never looked at the one in Inspyred. Maybe you can ask them if they benched it.

The current implementation (v1.0.0rc2) of NSGA-II (in fact the non dominated sorting) is the fast (standard) implementation O(MN^2), but stay tuned as we shall introduce a very fast one wich runs in O(N log^(M-1) as presented by Fortin and collaborators at GECCO 2013. (It is currently available but not default).

Best regards,
François-Michel

--
You received this message because you are subscribed to the Google Groups "deap-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to deap-users+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
<pareto front DEAP.png><pareto front inspyred.png>

Giovanni Pellegrini

unread,
Aug 28, 2013, 12:46:05 PM8/28/13
to deap-...@googlegroups.com
I implemented the ga_nsga2.py example with my evaluation function and i get a beautiful pareto front! For me the problem is solved. I could not say what was wrong with my implementation, but I can say that now all works perfectly.

Thanks

Giovanni
Reply all
Reply to author
Forward
0 new messages