gemseo_box_subdivision.disciplines.box_mapping#
The mapping from the normalized variables of a box to the design variables.
Classes
|
The mapping from the normalized variables of a box to the design variables. |
- class gemseo_box_subdivision.disciplines.box_mapping.BoxMapping(subdivision, one_hot_names=mappingproxy({}), normalized_names=mappingproxy({}), name='')[source]#
Bases:
DisciplineThe mapping from the normalized variables of a box to the design variables.
The sub-problem is written in the normalized variables \(\xi \in [0, 1]^n\) of the box selected by the one-hot vector \(\alpha\), through
\[x(\xi, \alpha) = \ell(\alpha) + \xi \odot (u(\alpha) - \ell(\alpha)).\]This is an alternative to
BoxConstraint, in which the box is not a constraint of the sub-problem but the bounds of its design space. Those bounds are \([0, 1]\) whatever the box, hence:the sub-problem always starts at the same point of its own box, the center for \(\xi = 0.5\), so no scenario adapter is needed to place the starting point inside the box;
the design space of the sub-problem does not depend on \(\alpha\), which is what the
Bendersformulation of GEMSEO requires, instead of being worked around;the bounds are genuinely independent of \(\alpha\), so the assumption made by the post-optimal analysis of GEMSEO holds, and no margin is needed to keep a border box from losing the multiplier of its face.
The sensitivity of the sub-problem optimum then comes from the partial derivative of the objective rather than from constraint multipliers:
\[\frac{\mathrm{d}u}{\mathrm{d}\alpha_{j,k}} = \nabla_x f \cdot \frac{\partial x}{\partial \alpha_{j,k}}, \qquad \frac{\partial x_j}{\partial \alpha_{j,k}} = (1 - \xi_j)\, l_{j,k} + \xi_j\, u_{j,k},\]which is correct both at an interior optimum, where \(\nabla_x f\) vanishes, and on a face, where \(\xi_j\) is pinned to a bound so that the partial derivative is the total one.
The counterpart is that \(x\) is bilinear in \((\xi, \alpha)\): the choice of the box enters the non-linearity of the objective, instead of staying in a jointly convex constraint as it does with
BoxConstraint.- Parameters:
subdivision (BoxSubdivision)
one_hot_names (Mapping[str, str])
normalized_names (Mapping[str, str])
name (str)
- default_grammar_type: ClassVar[Discipline.GrammarType] = 'SimplerGrammar'#
The default type of grammar.
- property one_hot_names: dict[str, str]#
The name of the one-hot variable of each design variable.
- property normalized_names: dict[str, str]#
The name of the normalized variable of each design variable.