pymoo
Latest Version: pymoo==0.4.2

MW

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

[3]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw1")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_4_0.svg

MW2

[4]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw2")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_6_0.svg

MW3

[5]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw3")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_8_0.svg

MW4

[11]:
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).show()
../../_images/problems_constrained_mw_10_0.svg

MW5

[3]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw5")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_12_0.svg

MW6

[1]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw6")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_14_0.svg

MW7

[2]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw7")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_16_0.svg

MW8

[2]:
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).show()
../../_images/problems_constrained_mw_18_0.svg

MW9

[3]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw9")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_20_0.svg

MW10

[4]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw10")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_22_0.svg

MW11

[5]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw11")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_24_0.svg

MW12

[6]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw12")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_26_0.svg

MW13

[7]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot

problem = get_problem("mw13")
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_mw_28_0.svg

MW14

[10]:
from pymoo.factory import get_problem, get_visualization

pf = get_problem("mw14").pareto_front()
get_visualization("scatter", angle=(45,45)).add(pf).show()
../../_images/problems_constrained_mw_30_0.svg

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