simpequil.gms : Simple Equilibrium

Description

This is a simple equilibrium problem that shows that the existence of solutions
to the individual optimization problems does not guarantee the existence of
an equilibrium solution.

Individual agents problems are solvable LP's.
Overall problem does not have a solution.

Forcing the variable x2 to be strictly positive enables an equilibrium solution.

Contributor: Michael Ferris, March 2010


Small Model of Type : EQUIL


Category : GAMS EMP library


Main file : simpequil.gms

$title Simple Equilibrium (SIMPEQUIL,SEQ=49)

$onText
This is a simple equilibrium problem that shows that the existence of solutions
to the individual optimization problems does not guarantee the existence of
an equilibrium solution.

Individual agents problems are solvable LP's.
Overall problem does not have a solution.

Forcing the variable x2 to be strictly positive enables an equilibrium solution.

Contributor: Michael Ferris, March 2010

$offText

option limrow=0, limcol = 0;

variables z1, z2;
positive variables x1, x2;
equations obj1, obj2, cons1, cons2;

obj1.. z1 =e= x1 + x2;
cons1.. x1*x2 =g= 1;

obj2.. z2 =e= x2;
cons2.. x1 + x2 =g= 1;

model comp /
  obj1, obj2,
  cons1,cons2
      /;

x1.l = 1; x2.l = 1;

file info / '%emp.info%' /;
put info / 'equilibrium';
put      / 'min z1 x1 obj1 cons1';
putclose / 'min z2 x2 obj2 cons2';

solve comp using emp;
* check that it is indeed infeasible
abort$(comp.solvestat <> %solveStat.normalCompletion%
       or ((comp.modelstat <> %modelStat.infeasible%)
           and (comp.modelstat <> %modelStat.locallyInfeasible%)) ) '1st model not infeasible';

* Adding a positive lower bound on x2 fixes the problem
x2.lo = 0.5;

solve comp using emp;
abort$(comp.solvestat <> %solveStat.normalCompletion%
       or comp.modelstat <> %modelStat.locallyOptimal%)  '2nd model not locally optimal';