Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 2.95 KB

README.md

File metadata and controls

74 lines (53 loc) · 2.95 KB

NOTE This package will no longer be maintained. For solving Mixed Complementarity Problems via the PATH solver, use the all-new PATHSolver.jl, which provides a Julia native access to the PATH solver and integration with JuMP.jl. For solving MPEC, JuMP.jl v0.21 has started supporting complementarity constraints. It is unclear which solvers support complementarity constraints.

Complementarity.jl only works with PATHSolver.jl v0.6.2.

Complementarity.jl

Build Status Coverage Status

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.

Mixed Complementarity Problems (MCP)

MCP Documentation

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)

Mathematical Programs with Equilibrium Constraints (MPEC)

MPEC Documentation

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(solver=IpoptSolver())
@variable(m, x>=0)
@NLobjective(m, Min, x^3)
@complements(m, 0 <= x+2,   x >= 0)
solve(m)
@show getvalue(x)

Installation

Pkg.add("Complementarity")

This will also install a few other packages.