MW

MW [47] 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

MW1

[2]:


problem = get_problem("mw1") plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_5_0.png

MW2

[3]:
problem = get_problem("mw2")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_7_0.png

MW3

[4]:
problem = get_problem("mw3")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_9_0.png

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 0x7fb17f016250>
../../_images/problems_constrained_mw_11_1.png

MW5

[6]:
problem = get_problem("mw5")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_13_0.png

MW6

[7]:
problem = get_problem("mw6")
plot(problem.pareto_front(), no_fill=True)
/Users/blankjul/workspace/pymoo/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
../../_images/problems_constrained_mw_15_1.png

MW7

[8]:
problem = get_problem("mw7")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_17_0.png

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 0x7fb17f46bcd0>
../../_images/problems_constrained_mw_19_1.png

MW9

[10]:
problem = get_problem("mw9")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_21_0.png

MW10

[11]:
problem = get_problem("mw10")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_23_0.png

MW11

[12]:
problem = get_problem("mw11")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_25_0.png

MW12

[13]:
problem = get_problem("mw12")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_27_0.png

MW13

[14]:
problem = get_problem("mw13")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_29_0.png

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 0x7fb17fec7c10>
../../_images/problems_constrained_mw_31_1.png

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