gemseo.problems.mdo.scalable.data_driven.discipline module#

Scalable discipline.

The discipline implements the concept of scalable discipline. This is a particular discipline built from an input-output training dataset associated with a function and generalizing its behavior to a new user-defined problem dimension, that is to say new user-defined input and output dimensions.

Alone or in interaction with other objects of the same type, a scalable discipline can be used to compare the efficiency of an algorithm applying to disciplines with respect to the problem dimension, e.g. optimization algorithm, surrogate model, MDO formulation, MDA, ...

The ScalableDiscipline class implements this concept. It inherits from the Discipline class in such a way that it can easily be used in a Scenario. It is composed of a ScalableModel.

The user only needs to provide:

  • the name of a class overloading ScalableModel,

  • a dataset as an Dataset

  • variables sizes as a dictionary whose keys are the names of inputs and outputs and values are their new sizes. If a variable is missing, its original size is considered.

The ScalableModel parameters can also be filled in, otherwise the model uses default values.

class ScalableDiscipline(name, data, sizes=mappingproxy({}), **parameters)[source]#

Bases: Discipline

A scalable discipline.

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • name (str) -- The name of the class of the scalable model.

  • data (IODataset) -- The training dataset.

  • sizes (Mapping[str, int]) --

    The sizes of the input and output variables. If empty, use the original sizes.

    By default it is set to {}.

  • **parameters (Any) -- The parameters for the model.

cache: BaseCache | None#

The execution and linearization data saved according to the cache type.

execution_statistics: ExecutionStatistics#

The execution statistics of the process.

execution_status: ExecutionStatus#

The execution status of the process.

jac: JacobianData#

The Jacobian matrices of the outputs.

The structure is {output_name: {input_name: jacobian_matrix}}.

name: str#

The name of the process.