PSORLab/EAGO.jl

SIP Algorithms respects JuMP input and problem class

mewilhel opened this issue · 0 comments

Currently, the high level SIP algorithm requests a objective and constraint in the form f(x,p), g(x,p) were f and g are used defined functions. This limits the number of viable sub-problem optimizers substantially. Also, more specialized routines may outperform the global solver for specialized problem types. Roadmap to fixing this below:

  • Define a SIPModel(nx, nz, np) which attaches an extension to the the JuMP and potentially an SIPOptimizer to be defined. This function should return the model, decision variables, and uncertain variables.
  • Define an optimize hook that checks each constraint (and the objective) for the types of participating variables (decision vs. uncertain) labels each constraint accordingly then calls an SIP solution algorithm.
  • For Mitsos 2009, etc. the constraints containing only decision variables simply participate in the lower and upper bounding problem. The constraints containing only uncertain variables participate only in the lower level problems. The constraints containing a mix label as semi-infinite constraints and treated as such (some check and error for certain equality constraints may be necessary).
  • Add check for convexity based solely on constraint types and dispatch models to more specialized routines.
  • Incorporate parametric DCP techniques to diagnose convexity and dispatch problem to more specialized.

Longer term it'll be interesting to look into InfiniteOpt.jl support. However, most of the use cases for the nonconvex SIPs would require support for nonlinear terms (1-3 years out).