Software

Solving optimization problems with complementarity constraints

Surprisingly, there are not many software packages that can handle complementarity constraints directly.

  • Within the realm of free software, I am only aware of PATH solver. Well, it is not open source and it is not issued under any classical free and open source license. It can be interfaced from Matlab and Julia (and AMPL and GAMS, which are not relevant for our course). For Matlab, compiled mexfiles can be downloaded. For Julia, the solver can be interfaced directly from the popular JuMP package (choosing the PATHSolver.jl solver), see the section on Complementarity constraints and Mixed complementarity problems in JuMP manual.

When restricted to Matlab, there are several options, all of them commercial:

Gurobi does not seem to support complementarity constraints.

Mosek supports disjunctive constraints, within which complementarity constraints can be formulated. But they are then approached using a mixed-integer solver.

Modeling and simulation of dynamical systems with complementarity constraints

Within the modeling and simulation domains, there are two free and open source libraries that can handle complementarity constraints, mainly motivated by nonsmooth dynamical systems:

  • SICONOS
    • C++, Python
    • physical domain independent
  • PINOCCHIO
    • C++, Python
    • specialized for robotics
Back to top