ferris43.gms : Educational embedded complemenarity system model

Description

```Embedded Complementarity System
-------------------------------

The problem to solve is:
min_x  f(x,y)  st  g(x,y) <= 0
plus the constraint that
H(x,y,lambda) = 0
where lambda is the multiplier on the g(x,y) <= 0 constraint.

We use EMP to specify that the variable lambda appearing in the
algebra is not a decision variable in any agent's model, but rather
it is the dual variable to equation g.  N.B.: the equation g should
be a typical constraint owned by an optimizing agent.

We can describe the optimization model in two ways.  The "top-down"
approach starts with a long-form solve statement and one minimizing
agent owning all vars and equs.  The dualequ keyword removes H and y
from this agent.  The "bottom-up" approach starts with an
equilibrium system, adds a minimizing agent owning just the right
equations and vars, and includes H and y as part of a separate VI
agent.

dualequ H y
dualvar lambda g

References:
Ferris et al, An extended mathematical programming framework,
Computers and Chemical Engineering 33, p.1973-1982, 2009

Contributors: Jan-H. Jagla, November 2009.  Steve, 2017
```

Small Model of Type : ECS

Category : GAMS EMP library

Main file : ferris43.gms

``````\$title Educational embedded complementarity system model (FERRIS43,SEQ=24)

\$ontext

Embedded Complementarity System
-------------------------------

The problem to solve is:
min_x  f(x,y)  st  g(x,y) <= 0
plus the constraint that
H(x,y,lambda) = 0
where lambda is the multiplier on the g(x,y) <= 0 constraint.

We use EMP to specify that the variable lambda appearing in the
algebra is not a decision variable in any agent's model, but rather
it is the dual variable to equation g.  N.B.: the equation g should
be a typical constraint owned by an optimizing agent.

We can describe the optimization model in two ways.  The "top-down"
approach starts with a long-form solve statement and one minimizing
agent owning all vars and equs.  The dualequ keyword removes H and y
from this agent.  The "bottom-up" approach starts with an
equilibrium system, adds a minimizing agent owning just the right
equations and vars, and includes H and y as part of a separate VI
agent.

dualequ H y
dualvar lambda g

References:
Ferris et al, An extended mathematical programming framework,
Computers and Chemical Engineering 33, p.1973-1982, 2009

Contributors: Jan-H. Jagla, November 2009.  Steve, 2017

\$offtext

variables obj, x, y;
positive variable lambda;
equations defobj, g, H;

defobj.. obj =e= sqr(x-y);
g.. y =g= x + 1;

H.. y + lambda =e= 2;

model ecs / defobj, g, H /;
file empinfo / '%emp.info%' /;

*-----------------------------------------------------------------------------
* Use long-form solve statement and peel off H and y via the dualequ directive
putclose empinfo
'dualequ H y' /
'dualvar lambda g' /
;
solve ecs using emp minimizing obj;

*------------------------------------------------------------------------
* Use short-form solve statement and build the equilibrium model in EMP,
* so H and y never get into minimizing agent's model
putclose empinfo
'equilibrium' /
' min obj x g defobj' /
' vi H y' /
' dualvar lambda g' /
;
solve ecs using EMP;

*------------------------------------------------------
* Write this model down manually and verify solution
equation dLdx;

dLdx.. ( - 2*(x - y))/(-1) + lambda =N= 0;

model mcp / g.lambda,dLdx.x,H.y /;
mcp.iterlim = 0;
solve mcp using MCP;
abort\$(mcp.objval > 1e-6) 'Solutions not the same';
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170