DAS-CMOP

DAS-CMOP is a constrained multi-objective test suite with tunable constraints [45]. The constraints are tuned using a difficulty triplet: \((\eta, \zeta, \gamma)\), with \(\eta, \zeta, \gamma \in [0, 1]\). The triplet allows to adjust the diversity, the feasibility and the convergence hardness respectively.

There are 6 biobjective problems DAS-CMOP1-6 (11 constraints) and 3 three-objective problems DAS-CMOP7-9 (7 constraints). Each of these can be initialized with a custom difficulty triplet or the authors proposed a set of 16 triplets:

No.

Difficulty

No.

Difficulty

No

Difficulty

No

Difficulty

1

(0.25,0.0,0.0)

2

(0.0,0.25,0.0)

3

(0.0,0.0,0.25)

4

(0.25,0.25,0.25)

5

(0.5,0.0,0.0)

6

(0.0,0.5,0.0)

7

(0.0,0.0,0.5)

8

(0.5,0.5,0.5)

9

(0.75,0.0,0.0)

10

(0.0,0.75,0.0)

11

(0.0,0.0,0.75)

12

(0.75,0.75,0.75)

13

(0.0,1.0,0.0)

14

(0.5,1.0,0.0)

15

(0.0,1.0,0.5)

16

(0.5,1.0,0.5)

The Pareto fronts are different for each triplet.

DAS-CMOP1 (1)

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

problem = get_problem("dascmop1", 1)
plot(problem.pareto_front(), no_fill=True)
../../_images/problems_constrained_dascmop_4_0.png

DAS-CMOP7 (12)

[2]:
from pymoo.problems import get_problem
from pymoo.visualization.scatter import Scatter

pf = get_problem("dascmop7", 12).pareto_front()
Scatter(angle=(45, 45)).add(pf, color="red").show()
[2]:
<pymoo.visualization.scatter.Scatter at 0x1178c56d0>
../../_images/problems_constrained_dascmop_7_1.png
[3]:
from pymoo.problems import get_problem
from pymoo.visualization.scatter import Scatter

pf = get_problem("dascmop7", 12).pareto_front()
Scatter(angle=(45, 45)).add(pf, color="red").show()
[3]:
<pymoo.visualization.scatter.Scatter at 0x105e9d910>
../../_images/problems_constrained_dascmop_8_1.png

Python implementation by cyrilpic based on the original JAVA code.