gemseo.disciplines.constraint_aggregation module#

An Discipline to aggregate constraints.

class ConstraintAggregation(constraint_names, aggregation_function, name='', **options)[source]#

Bases: Discipline

A discipline that aggregates the constraints computed by other disciplines.

An efficient alternative to constraint aggregation in the optimization problem is to aggregate the constraint in a discipline.

This can be included in an MDO formulation, and in particular in an MDA, so only one adjoint calculation can be performed for the aggregated constraint instead of one adjoint per original constraint dimension.

See [KH15] and [KS83].

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

Parameters:
  • constraint_names (Sequence[str]) -- The names of the constraints to aggregate, which must be discipline outputs.

  • aggregation_function (EvaluationFunction) -- The aggregation function or its name, e.g. IKS, lower_bound_KS,upper_bound_KS, POS_SUM and SUM.

  • name (str) --

    The name of the discipline. If empty, use the name of the class.

    By default it is set to "".

  • **options (Any) -- The options for the aggregation method.

Raises:

ValueError -- If the method is not supported.

class EvaluationFunction(value)[source]#

Bases: StrEnum

A function to compute an aggregation of constraints.

IKS = 'IKS'#

The induces exponential function.

LOWER_BOUND_KS = 'lower_bound_KS'#

The lower bound Kreisselmeier-Steinhauser function.

MAX = 'MAX'#

The maximum function.

POS_SUM = 'POS_SUM'#

The positive sum squared function.

SUM = 'SUM'#

The sum squared function.

UPPER_BOUND_KS = 'upper_bound_KS'#

The upper bound Kreisselmeier-Steinhauser function.