MCP is more general than Linear Complementarity Problems (LCP) and Nonlinear Complementarity Problems (NCP).
The form of MCP is as follows:
F(x) ⟂ lb ≤ x ≤ ub
which means
x = lb
, thenF(x) ≥ 0 #lb means lower bound
lb < x < ub
, thenF(x) = 0
x = ub
, thenF(x) ≤ 0 #ub means upper bound
When there is no upper bound ub
, and the lower bound lb=0
, then it is a regular Nonlinear Complementarity Problem (NCP) of the form:
0 ≤ F(x) ⟂ x ≥ 0
which means, for each , we can get the below expressions:
F(x)' x = 0, F(x) ≥ 0, x ≥ 0
or, we can write:⟂
.
When F(x)
is a linear mapping such as F(x) = Ax + q
with matrix A and vector q
, then it is a Linear Complementarity Problem (LCP).
Note: ⟂ denotes perpendicular symbol.
An example from GAMS tutorial doc:
Among which,
where,
.
Then implement it in GAMS with the codes as:
$TITLE simple mpec example variable f, x1, x2, y1, y2; positive variable y1; y2.lo = -1; y2.up = 1; equations cost, g, h1, h2; * define the function f cost.. f =E= x1 + x2;
g.. sqr(x1) + sqr(x2) =L= 1; h1.. x1 =G= y1 - y2 + 1; h2.. x2 + y2 =N= 0; model example / cost, g, h1.y1, h2.y2 /; solve example using mpec min f;
the results are shown below pic with red mark: