This package provides modeling language for (1) mixed complementarity problems (MCP) and (2) mathematical programs with equilibrium problems (MPEC).
NOTE @complmentarity
for MCP and @complements
for MPEC.
NOTE: Differences between PATHSolver.jl and Complementarity.jl:
F(x) ⟂ lb ≤ x ≤ ub
A very simple example:
(x+2) x = 0, x ≥ 0, x+2 ≥ 0
using Complementarity, JuMP
m = MCPModel()
@variable(m, x >= 0)
@mapping(m, F, x+2)
@complementarity(m, F, x)
status = solveMCP(m)
@show result_value(x)
NOTE: For solving MPEC, JuMP.jl v0.21
has started supporting complementarity constraints. At this moment, GAMS.jl and KNITRO support complementarity constraints.
min f(x)
s.t. g(x) ≤ 0
F(x) ⟂ lb ≤ x ≤ ub
A very simple example:
min x^3
s.t. (x+2) x = 0, x ≥ 0, x+2 ≥ 0
using JuMP, Ipopt, Complementarity
m = Model(Ipopt.Optimizer)
@variable(m, x>=0)
@NLobjective(m, Min, x^3)
@complements(m, 0 <= x+2, x >= 0)
solve(m)
@show getvalue(x)
Pkg.add("Complementarity")
This will also install a few other packages.