## Complementarity.jl

Provides a modeling interface for mixed complementarity problems (MCP) and math programs with equilibrium problems (MPEC) via JuMP
Popularity
39 Stars
Updated Last
4 Months Ago
Started In
April 2016

NOTE `JuMP.jl` `v0.21` has started supporting complementarity constraints. It is unclear which solvers support optimization problems with complementarity constraints (or MPEC) yet. For solving Mixed Complementarity Problems via the PATH solver, watch PATH.jl, which provides a Julia native access to the PATH solver and integration with JuMP.jl.

# Complementarity.jl

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.

### Used By Packages

No packages found.