ASF optimal against population or the Parento front, which is better? #515
-
In my application, I use ASF optimal as the solution in a multi-objective optimization problem. I studied a lecture where ASF optimal is calculated against the population (res.X, res.F), not the Pareto Front (res.opt.get("X"), res.opt.get("F")). But my observation shows in the last generation, the Pareto Front (the parent or first front, with non-dominated solutions) size can be the same as or be less than the population size, in the former case, there's no difference, but in the latter case, is it better to calculate the ASF optimal against the Pareto Front only? Please shed some light, thanks in advance. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Let us get the terminology right before starting. Okay, all of that being said. ASF always returns exactly the same value no matter how many solutions you have. However, normalization will change it: https://pymoo.org/getting_started/part_3.html |
Beta Was this translation helpful? Give feedback.
I do normalize objectives to calculate ASF for the result as well as for each iteration (so that I can see the optimal solution in each generation).
I realized later that result.F has the same number of solutions as result.opt.get("F"), which are the number of non-dominated solutions, as for the whole population, I can get them from result.pop.get("F"). Likewise, the same distinction can be seen for algorithm.opt.get("F") and algorithm.pop.get("F"), as well as algorithm.history[gen_i].opt.get("F") and algorithm.history[gen_i].pop.get("F"). In either case, ASF should be calculated against the "opt" counterpart, which is also the set of non-dominated solutions of the corresponding generation.