Extending MathProgBase to support complementarity constraints

A few of us at Wisconsin are very interested in extending the abstraction in MathProgBase (MPB) to support complementarity constraints. The package https://github.com/chkwon/Complementarity.jl offers a nice way to model complementarities. It then reformulates the problem for use with standard solves. More and more solvers are starting to support explicit complementarity constraints, however. For example, KNITRO has a special barrier implementation to handle complementarities. Similarly, BARON works best by explicitly branching on complementarities. We feel the best way to handle this is by extending the abstraction in MPB. GAMS (and perhaps AMPL) allow modelers to explicitly express complementarities.

Our immediate questions:

  1. What is the best medium for this discussion? Is there someplace more appropriate than Discourse?
  2. Where is the best place for us to start on our quest? Any initial thoughts or recommendations from the MPB developers?
1 Like

I think it’d best to open an issue/PR at the MathProgBase repo to discuss
further (not that discourse is inappropriate). I think the specifics of the
interface will be dictated by the use cases, as well as what the solvers
support. Do we just care about complementarity for two variables? For
linear constraints? Nonlinear constraints? Complementarity constraints with
more than two disjuncts? And so on.

The upcoming developers meetup would be the best medium for discussion. Send me an email if there’s a chance you can attend. Otherwise, an issue on the MathProgBase repo would work.