MODAct¶
MODAct (multi-objective design of actuators) is a real-world benchmark test-suite [37] for constrained multi-objective optimization. The optimization problems aim at finding small electro-actuators given some objectives and constraints. Currently, there are 20 problems with up to 5 objectives and 10 inequaltiy constraints, summarized in the table below.
In order to solve these problems, you will need to have the modact package and its dependencies installed (Docker image available). A single solution evaluation takes about 20 ms. Therefore, the use of parallel schemes is advised.
The estimated Pareto-fronts for CS1-4 and CT-4 have been added to pymoo directly. The others because of their file sizes have to be downloaded here, and used during initialization as shown below.
For more information please refer to the associated publication [37].
Problem |
Variables |
Objectives |
Constraints |
---|---|---|---|
CS1 |
20 |
2 |
7 |
CS2 |
20 |
2 |
8 |
CS3 |
20 |
2 |
10 |
CS4 |
20 |
2 |
9 |
CT1, CTS1, CTSE1, CTSEI1 |
20 |
2,3,4 or 5 |
7 |
CT2, CTS2, CTSE2, CTSEI2 |
20 |
2,3,4 or 5 |
8 |
CT3, CTS3, CTSE3, CTSEI3 |
20 |
2,3,4 or 5 |
10 |
CT4, CTS4, CTSE4, CTSEI4 |
20 |
2,3,4 or 5 |
9 |
Some usage examples are highlighted in the following sections.
CS3¶
[1]:
from pymoo.factory import MODAct
from pymoo.util.plotting import plot
problem = MODAct("cs3")
plot(problem.pareto_front(), no_fill=True)
CT1¶
[3]:
from pymoo.factory import get_problem
from pymoo.util.plotting import plot
problem = MODAct("ct1")
plot(problem.pareto_front(), no_fill=True)
CTS4¶
[8]:
import numpy as np
from pymoo.factory import get_problem, get_visualization
pf = np.loadtxt("modact-cts3.pf")
problem = MODAct("cts4", pf=pf)
pf = problem.pareto_front()
get_visualization("scatter", angle=(45,45)).add(pf, color="red").show()
[8]:
<pymoo.visualization.scatter.Scatter at 0x7fc19eee2fd0>
Implementation by the author (cyrilpic).