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