provides a modeling interface for mixed complementarity problems (MCP) and math programs with equilibrium problems (MPEC) via JuMP
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.