Sellar's problem#

The Sellar's problem is considered in different tutorials:

Description of the problem#

The Sellar problem is defined by analytical functions:

\[\begin{split}\begin{aligned} \text{minimize the objective function }&\text{obj}=x_{\text{local}}^2 + x_{\text{shared},2} +y_1^2+e^{-y_2} \\ \text{with respect to the design variables }&x_{\text{shared}},\,x_{\text{local}} \\ \text{subject to the general constraints } & c_1 \leq 0\\ & c_2 \leq 0\\ \text{subject to the bound constraints } & -10 \leq x_{\text{shared},1} \leq 10\\ & 0 \leq x_{\text{shared},2} \leq 10\\ & 0 \leq x_{\text{local}} \leq 10. \end{aligned}\end{split}\]

where the coupling variables are

\[\text{Discipline 1: } y_1 = \sqrt{x_{\text{shared},1}^2 + x_{\text{shared},2} + x_{local} - 0.2\,y_2},\]

and

\[\text{Discipline 2: }y_2 = |y_1| + x_{\text{shared},1} + x_{\text{shared},2}.\]

and where the general constraints are

\[ \begin{align}\begin{aligned}c_1 = 3.16 - y_1^2\\c_2 = y_2 - 24.\end{aligned}\end{align} \]

The Sellar disciplines are also available with analytic derivatives in GEMSEO, as well as a DesignSpace:

Creation of the disciplines#

To create the Sellar disciplines, use the function create_discipline:

from gemseo import create_discipline

disciplines = create_discipline(["Sellar1", "Sellar2", "SellarSystem"])

Importation of the design space#

To import the Sellar design space, use the class create_discipline:

from gemseo.problems.mdo.sellar.sellar_design_space import SellarDesignSpace
design_space = SellarDesignSpace()

Then, you can visualize it with print(design_space):

+----------+-------------+--------+-------------+-------+
| name     | lower_bound | value  | upper_bound | type  |
+----------+-------------+--------+-------------+-------+
| x_local  |      0      | (1+0j) |      10     | float |
+          +             +        +             +       +
| x_shared |     -10     | (4+0j) |      10     | float |
+          +             +        +             +       +
| x_shared |      0      | (3+0j) |      10     | float |
+          +             +        +             +       +
| y_1      |     -100    | (1+0j) |     100     | float |
+          +             +        +             +       +
| y_2      |     -100    | (1+0j) |     100     | float |
+----------+-------------+--------+-------------+-------+

See also

See Tutorial: How to solve an MDO problem to create the Sellar problem from scratch