gemseo.problems.mdo.sellar package#

A customizable version of the Sellar MDO problem.

[RSJ96] proposed an MDO problem which has become a classic for comparing MDO formulations:

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

where \(c_1=3.16 - y_1^2\), \(c_2=y_2 - 24\),

\[y_1 = \sqrt{x_{shared,1}^2 + x_{shared,2} + x_1 - 0.2\,y_2}\]

and

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

In [RSJ96], all the design and coupling variables are scalar.

In GEMSEO, the local design variables and the coupling variables are vectors of dimension \(n\) (default: 1), a second design variable \(x_2\) intervenes in the objective expression and a coefficient \(k\) controls the strength of the coupling:

\[\begin{split}\begin{aligned} \text{minimize the objective function }& obj=(x_1^Tx_1+x_2^Tx_2+nx_{shared,2}+y_1^\atop y_1+e^{-y_2^T1_n})/n \\ \text{with respect to the design variables }&x_{shared},\,x_{1},\,x_{2} \\ \text{subject to the general constraints } & c_1=\alpha - y_1^2 \leq 0\\ & c_2=y_2 - \beta \leq 0\\ \text{subject to the bound constraints } & -10 \leq x_{shared,1} \leq 10\\ & 0 \leq x_{shared,2} \leq 10\\ & 0 \leq x_1 \leq 10\\ & 0 \leq x_2 \leq 10\\ \end{aligned}\end{split}\]

where the coupling variables are

\[y_1 = \sqrt{x_{shared,1}^2 + x_{shared,2} + x_1 - \gamma ky_2}\]

and

\[y_2 = k|y_1| + x_{shared,1} + x_{shared,2} - x_2.\]

The original problem [RSJ96] can be obtained by taking \(k=1\), \(n=1\), \(x_2=0\), \(\alpha=3.16\), \(\beta=24\) and \(\gamma=0.2\).

This package implements three disciplines to compute the different coupling variables, constraints and objective:

  • Sellar1: this Discipline computes \(y_1\) from \(y_2\), \(x_{shared,1}\), \(x_{shared,2}\) and \(x_1\).

  • Sellar2: this Discipline computes \(y_2\) from \(y_1\), \(x_{shared,1}\), \(x_{shared,2}\) and \(x_2\).

  • SellarSystem: this Discipline computes both objective and constraints from \(y_1\), \(y_2\), \(x_1\), \(x_2\) and \(x_{shared,2}\),

as well as a design space called SellarDesignSpace.

Submodules#