MW#
MW [9] 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.visualization.util import plot
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)
MW2#
[3]:
problem = get_problem("mw2")
plot(problem.pareto_front(), no_fill=True)
MW3#
[4]:
problem = get_problem("mw3")
plot(problem.pareto_front(), no_fill=True)
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 0x716051101950>
MW5#
[6]:
problem = get_problem("mw5")
plot(problem.pareto_front(), no_fill=True)
MW6#
[7]:
problem = get_problem("mw6")
plot(problem.pareto_front(), no_fill=True)
/home/blankjul/workspace/pymoo/pymoo/problems/multi/mw.py:212: RuntimeWarning: divide by zero encountered in divide
l = np.cos(6 * np.arctan(F[:, 1] / F[:, 0]) ** 4) ** 10
MW7#
[8]:
problem = get_problem("mw7")
plot(problem.pareto_front(), no_fill=True)
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 0x71604e9a5bd0>
MW9#
[10]:
problem = get_problem("mw9")
plot(problem.pareto_front(), no_fill=True)
MW10#
[11]:
problem = get_problem("mw10")
plot(problem.pareto_front(), no_fill=True)
MW11#
[12]:
problem = get_problem("mw11")
plot(problem.pareto_front(), no_fill=True)
MW12#
[13]:
problem = get_problem("mw12")
plot(problem.pareto_front(), no_fill=True)
MW13#
[14]:
problem = get_problem("mw13")
plot(problem.pareto_front(), no_fill=True)
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 0x716073647d90>
Python implementation by cyrilpic based on the original C++ code.