Closed dhadka closed 1 year ago
Probably there is no good default value for all test problems.
I think people should be aware of what they are doing when they try to use PBI function. The performance of PBI strongly depend on the specification of theta. For convex or concave pareto front, we may have to choose different theta to get good results.
The reason why it converges to three corners is just because theta is the penalty for an offspring which is far away from the weight vector. If theta is small the accept area of PBI would be very large. Which means even when d2(the perpendicular distance from offspring to ith weight vector) is large, the function value may still smaller and the offspring can replace the original solution. you can refer to this paper
Ishibuchi, Hisao. et al. "Use of piecewise linear and nonlinear scalarizing functions in MOEA/D." International Conference on Parallel Problem Solving from Nature. Springer, Cham, 2016.
The first result was theta=0.1, the following one was theta=1 for DTLZ2 with random_weights
algorithm = MOEAD(problem, scalarizing_function=pbi)
I think the PBI function can work for both maximization and minimization problem. only need a modification mentioned in Li, H. and Zhang, Q. "Multiobjective Optimization problems with Complicated Pareto Sets, MOEA/D and NSGA-II." IEEE Transactions on Evolutionary Computation, 13(2):284-302, 2009
Just because I see your original code in weights.py/chebyshev
. There is no absolute value in
objs[i]-ideal_point[i]
so I think you maybe already assume that all problems is minimization.
btw, could you please tell me
update_utility
in MOEAD ?functools.partial(pbi, theta=0.5)
?
this original way doesn't work
problem = DTLZ2()
algorithm = normal_pbi(problem, scalarizing_function=pbi)
algorithm.run(10000)
I hope more people can use Platypus and we could have a well organised document in the future !
This issue is stale and will be closed soon. If you feel this issue is still relevant, please comment to keep it active. Please also consider working on a fix and submitting a PR.
Hey @eigeneko
I made the necessary modifications so you can use PBI with MOEA/D. From the image below, you can see that with PBI, it's converging to the three corners. Can you please check if this is expected?
Is there a good default for theta?