MW¶
MW [38] 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.
MW1¶
[1]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw1")
plot(problem.pareto_front(), no_fill=True)
MW2¶
[2]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw2")
plot(problem.pareto_front(), no_fill=True)
MW3¶
[3]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw3")
plot(problem.pareto_front(), no_fill=True)
MW4¶
[4]:
from pymoo.factory import get_problem, get_reference_directions, get_visualization
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=12)
pf = get_problem("mw4").pareto_front(ref_dirs)
get_visualization("scatter", angle=(45,45)).add(pf, color="red").show()
[4]:
<pymoo.visualization.scatter.Scatter at 0x7f04bd4839a0>
MW5¶
[5]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw5")
plot(problem.pareto_front(), no_fill=True)
MW6¶
[6]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw6")
plot(problem.pareto_front(), no_fill=True)
/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/pymoo/problems/multi/mw.py:209: RuntimeWarning: divide by zero encountered in true_divide
l = np.cos(6 * np.arctan(F[:, 1] / F[:, 0]) ** 4) ** 10
MW7¶
[7]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw7")
plot(problem.pareto_front(), no_fill=True)
MW8¶
[8]:
from pymoo.factory import get_problem, get_reference_directions, get_visualization
ref_dirs = get_reference_directions("das-dennis", 3, n_partitions=15)
pf = get_problem("mw8").pareto_front(ref_dirs)
get_visualization("scatter", angle=(45,45)).add(pf, color="red").show()
[8]:
<pymoo.visualization.scatter.Scatter at 0x7f04ce7ad940>
MW9¶
[9]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw9")
plot(problem.pareto_front(), no_fill=True)
MW10¶
[10]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw10")
plot(problem.pareto_front(), no_fill=True)
MW11¶
[11]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw11")
plot(problem.pareto_front(), no_fill=True)
MW12¶
[12]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw12")
plot(problem.pareto_front(), no_fill=True)
MW13¶
[13]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = get_problem("mw13")
plot(problem.pareto_front(), no_fill=True)
MW14¶
[14]:
from pymoo.factory import get_problem, get_visualization
pf = get_problem("mw14").pareto_front()
get_visualization("scatter", angle=(45,45)).add(pf, color="red").show()
[14]:
<pymoo.visualization.scatter.Scatter at 0x7f04b9625760>
Python implementation by cyrilpic based on the original C++ code.