gemseo / problems / scalable / parametric

Hide inherited members

scalable_problem module

The scalable problem.

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

Bases: ScalableProblem

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 0.

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