Open
Description
Summary
Renaming components in the scaling transformation can be problematic (see, e.g., #2678). We should rewrite the transformation to avoid renaming components.
Rationale
#2678 pointed out several limitations with the scaling transformation. In particular:
- renaming components does not play well with References, especially when only scaling / transforming a part of the model. We should consider reworking the scaling transformation to be out-of-place, deactivating the original Constraints and creating new Variables / Constraints in a transformation block.
- out-of-place transformations (e.g.,
_create_using()
could be made more efficient to leverage_apply_to
and just return the new transformation block as the model - We should explore generalizing the
AutoLinkedBooleanVar
concept from GDP to generate a generic "update callback" mechanism for components like Vars- (note that we could also do something similar for Sets, which is a "feature" that has been frequently assumed to exist).