MW¶
MW [43] is a constrained multi-objective test suite constructed in a similar fashion to CTP or WFG with 3 different distance functions and 3 local adjustment methods. Most problems are biobjective problems, except MW4, MW8 and MW14 which are scalable (\(m \geq 3\)).
They aim at replacing the CTP test suite by proposing more complex problems with up to 4 inequality constraints.
[1]:
from pymoo.problems import get_problem
from pymoo.util.plotting import plot
from pymoo.problems import get_problem
from pymoo.util.ref_dirs import get_reference_directions
from pymoo.visualization.scatter import Scatter
MW4¶
[5]:
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=12)
pf = get_problem("mw4").pareto_front(ref_dirs)
Scatter(angle=(45,45)).add(pf, color="red").show()
[5]:
<pymoo.visualization.scatter.Scatter at 0x7fe22149d850>

MW6¶
[7]:
problem = get_problem("mw6")
plot(problem.pareto_front(), no_fill=True)
/home/jupyter-blankjul/anaconda3/envs/pypi/lib/python3.9/site-packages/pymoo/problems/multi/mw.py:212: RuntimeWarning: divide by zero encountered in true_divide
l = np.cos(6 * np.arctan(F[:, 1] / F[:, 0]) ** 4) ** 10

MW8¶
[9]:
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=12)
pf = get_problem("mw8").pareto_front(ref_dirs)
Scatter(angle=(45,45)).add(pf, color="red").show()
[9]:
<pymoo.visualization.scatter.Scatter at 0x7fe21d668460>

MW14¶
[15]:
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=12)
pf = get_problem("mw14").pareto_front()
Scatter(angle=(45,45)).add(pf, color="red").show()
[15]:
<pymoo.visualization.scatter.Scatter at 0x7fe21f165d00>

Python implementation by cyrilpic based on the original C++ code.