Fully Modularize InfiniteModel Transformation Schemes #105
Labels
breaking
This will introduce breaking changes to the API
enhancement
New feature or request
transformations
Something to do with model transformations
We currently do allow different optimizer models to be used instead of
TranscriptionModel
s which use a support scheme to solve theInfiniteModel
. However, we should fully decouple the attributes associated with transcription fromInfiniteModel
s (e.g., not have it hardcoded to always store parameter supports). Thus,InfiniteModel
s should be restructured to incorporate only the information needed to represent the infinite-dimensional optimization problem and information needed to reformulate/solve it should be stored in a backend. This will enhance the modularity of InfiniteOpt and greatly enhance the usability of alternative solution approaches.Such a backend could take inspiration from the way MathOptInterface and JuMP interact. Reformulation/solution schemes like
TranscriptionOpt
could ultimately be hosted in their own packages and help break up the size of InfiniteOpt. We also should consider the use case of being able to perform different reformulation schemes over the domains (e.g., transcribe over time and use PCE on the uncertainty).This will denote a large undertaking that will fundamentally change the structure of InfiniteOpt and will likely parallel the restructuring effort that occurred between v0.1 and v0.2. We can take this on incrementally such that the reformulation schemes become increasingly modular and
TranscriptionOpt
and all its support-based attributes reside in a fully independent submodule. Once this is achieved, we can moveTranscriptionOpt
to an external package and finalize our modularized reformulation API.The fulfillment of this restructuring will make InfiniteOpt a general framework for modeling infinite-dimensional optimization problems and enable the development of diverse solution methodologies.
The text was updated successfully, but these errors were encountered: