gemseo / problems / scalable / parametric

# scalable_problem module¶

The scalable problem.

class gemseo.problems.scalable.parametric.scalable_problem.ScalableProblem(discipline_settings=(ScalableDisciplineSettings(d_i=1, p_i=1), ScalableDisciplineSettings(d_i=1, p_i=1)), d_0=1, add_random_variables=False, alpha=0.5, seed=1)[source]

The scalable problem.

It builds a set of strongly coupled scalable disciplines completed by a system discipline computing the objective function and the constraints.

These disciplines are defined on a unit design space, i.e. design variables belongs to $$[0, 1]$$.

Parameters:
• discipline_settings (Sequence[ScalableDisciplineSettings]) –

The configurations of the different scalable disciplines.

By default it is set to (ScalableDisciplineSettings(d_i=1, p_i=1), ScalableDisciplineSettings(d_i=1, p_i=1)).

• d_0 (int) –

The size of the shared design variable $$x_0$$.

By default it is set to 1.

• add_random_variables (bool) –

Whether to add a centered random variable $$u_i$$ on the output of the $$i$$-th scalable discipline.

By default it is set to False.

• alpha (float) –

The proportion of feasible design points.

By default it is set to 0.5.

• seed (int) –

The seed for reproducibility.

By default it is set to 1.

compute_y(x, u=None)[source]

Compute the coupling vector $$y$$.

Parameters:
• x (NDArray[float]) – A design point.

• u (NDArray[float] | None) – An uncertain point, if any.

Returns:

The coupling vector associated with the design point $$x$$ and the uncertain vector $$U$$ if any.

Return type:

NDArray[float]

create_quadratic_programming_problem(add_coupling=False, covariance_matrices=(), use_margin=True, margin_factor=2.0, tolerance=0.01)[source]

Create the quadratic programming (QP) version of the MDO problem.

This is an optimization problem to minimize $$0.5x^TQx + c^Tx + d$$ with respect to $$x$$ under the linear constraints $$Ax-b\leq 0$$, where the matrix $$Q$$ is symmetric.

In the presence of uncertainties, offsets are added to the objective and constraint expressions.

Parameters:
• add_coupling (bool) –

Whether to add the coupling variables as an observable.

By default it is set to False.

• use_margin (bool) –

Whether the statistics used for the constraints are margins or probabilities; if False, the random vectors are assumed to be Gaussian.

By default it is set to True.

• covariance_matrices (Iterable[NDArray[float]]) –

The covariance matrices $$\Sigma_1,\ldots,\Sigma_N$$ of the random variables $$U_1,\ldots,U_N$$. If empty, do not consider uncertainties.

By default it is set to ().

• margin_factor (float) –

The factor $$\kappa$$ used in the expression of the margins.

By default it is set to 2.0.

• tolerance (float) –

The tolerance level $$\varepsilon$$ for the violation probability.

By default it is set to 0.01.

Returns:

The quadratic optimization problem.

Return type:

OptimizationProblem

create_scenario(use_optimizer=True, formulation_name='MDF', **formulation_options)[source]

Create the DOE or MDO scenario associated with this scalable problem.

Parameters:
• use_optimizer (bool) –

Whether to use an optimizer or a design of experiments.

By default it is set to True.

• formulation_name (str) –

The name of the formulation.

By default it is set to “MDF”.

• **formulation_options (Any) – The options of the formulation.

Returns:

The scenario to be executed.

Return type:

Scenario

design_space: _DESIGN_SPACE_CLASS

The design space.

disciplines: list[_MAIN_DISCIPLINE_CLASS | _SCALABLE_DISCIPLINE_CLASS]

The disciplines.

property main_discipline: _MAIN_DISCIPLINE_CLASS

The main discipline.

qp_problem: QuadraticProgrammingProblem

The quadratic programming problem.

property scalable_disciplines: list[_SCALABLE_DISCIPLINE_CLASS]

The scalable disciplines.

## Examples using ScalableProblem¶

Parametric scalable MDO problem - MDF

Parametric scalable MDO problem - MDF