MODAct¶
MODAct (multi-objective design of actuators) is a real-world benchmark test-suite [46] 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 [46].
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¶
[ ]:
from pymoo.problems.multi import MODAct
from pymoo.util.plotting import plot
problem = MODAct("cs3")
plot(problem.pareto_front(), no_fill=True)
CT1¶
[ ]:
from pymoo.util.plotting import plot
problem = MODAct("ct1")
plot(problem.pareto_front(), no_fill=True)
CTS4¶
[ ]:
import numpy as np
from pymoo.problems.multi import MODAct
from pymoo.visualization.scatter import Scatter
pf = np.loadtxt("modact-cts3.pf")
problem = MODAct("cts4", pf=pf)
pf = problem.pareto_front()
Scatter(angle=(45,45)).add(pf, color="red").show()
Implementation by the author (cyrilpic).