How come weigth into play with multiobjective optimization

62 views
Skip to first unread message

Max Elfner

unread,
Jun 21, 2016, 4:15:51 PM6/21/16
to deap-users
Hi,

I'm starting to refine my so-far working multi-objective optimization (minimization of three obj.). I want to consider weigths but I don't see how they come into play in NSGA2 oder SPEA2.

1) Can someone further elaborate?
2) For minimization, is the absolute value or the signed value important? E.g. is an obejctive with -1.0 more or less important than one with weight -1.5?

So far im digging through code and see the fitness.dominates comapares fitness.wvalues, but like find0.itness.wvalues < ind1.fitness.wvalues which leads to crossing out the weights assuming they are the same for each individual. NSGA then uses crowding distance which again uses just fitness.values.

Am I overlooking something? Do I consider weigths the wrong way?

Best Regards!

François-Michel De Rainville

unread,
Jun 21, 2016, 5:01:23 PM6/21/16
to deap-users
1) The weights will be important only in the crowding sort of NSGA2. For example, if you have an objective spanning over a range of 1000 and an other over a range of 1, the crowding calculation won't be similar for both objectives. The weighting should be use to scale those values.

2) No, most evolutionary algorithms work only by using the lower than operator. One frequent exception though is the roulette wheel. 

As for your third question, its been too long since I've had a good look at this part of the code. Therefore, I cannot answer right away. But I know that the crowding distance uses the weights the right way.

Cheers,
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/d/optout.

Max Elfner

unread,
Jun 22, 2016, 3:07:29 AM6/22/16
to deap-users
Thanks for the quick reply. I still dont see the weights in crowding distance. Looking at emo.py here...

L117 defines crowding so from here on we go
L126 defines crowd from fitness.values (not! wvalues)
L136/L138 calcualtes a norm and applies it, further removing "absolute" values with weights.

I also dont get scaling the norm with number of fitnesses but that dosnt do much harm anyway..

Cheers

Max Elfner

unread,
Jun 22, 2016, 3:18:03 AM6/22/16
to deap-users
And adding to this for SPEA2:

L481 or L503 again computes distance using just the fitness.values..
Reply all
Reply to author
Forward
0 new messages