Omni-test

The Omni-test problem is a multi-modal multi-objective optimization problem proposed by Deb in [40]. It has two objective functions. Suppose that the dimension of the decision space is \(D\), then it has \(3^D\) Pareto subsets in the decision space corresponding to the same Pareto front.

2-dimensional case

Pareto front

[1]:
from pymoo.problems.multi.omnitest import OmniTest
from pymoo.visualization.scatter import Scatter

problem = OmniTest(n_var=2)
pf = problem.pareto_front(1000)
Scatter(title="Pareto front").add(pf).show()
[1]:
<pymoo.visualization.scatter.Scatter at 0x7f5561b4f9a0>
../../_images/problems_multi_omni_test_2_1.png

Pareto set

[2]:
ps = problem.pareto_set(1000)
Scatter(title="Pareto set", labels=["$x_1$", "$x_2$"]).add(ps).show()
[2]:
<pymoo.visualization.scatter.Scatter at 0x7f5561b4fb80>
../../_images/problems_multi_omni_test_4_1.png

3-dimensional case

Pareto front

[3]:
problem = OmniTest(n_var=3)
pf = problem.pareto_front(3000)
Scatter(title="Pareto front").add(pf).show()
[3]:
<pymoo.visualization.scatter.Scatter at 0x7f5552915670>
../../_images/problems_multi_omni_test_6_1.png

Pareto set

[4]:
import matplotlib.pyplot as plt

ps = problem.pareto_set(1000)
sc = Scatter(title="Pareto set", labels=["$x_1$", "$x_2$", "$x_3$"])
sc.add(ps)
sc.do()
sc.ax.view_init(elev=20, azim=5)
plt.show()
../../_images/problems_multi_omni_test_8_0.png