Open
Description
This is a design discussion to talk about support for reverting transformations, raised by @whart222 in #196.
The use case is:
MINLP --> fix binaries --> NLP --> remove trivial constraints --> solve NLP --> generate cut --> unfix binaries --> MINLP
I also want feedback on the proper implementation for supporting reverting transformations. I see multiple possible approaches:
- I store the necessary information for reversion as a
ComponentSet
orComponentMap
on the model instance itself. - I store the necessary information for reversion on the Transformation object.
Possible edge cases/complications:
- Transform model A, clone model A, revert on model A clone
- Transform model A, different transform on model A, original transform on model A again, revert second instance of original transform, revert first instance of original transform
- Transform model A, different transform on model A, original transform on model A again, revert all instances of original transform