Extended mathematical programming (EMP) framework for equilibrium
programming
This page introduces an extended mathematical programming (EMP) framework
for equilibrium programming in modeling languages such as AMPL, GAMS, or Julia.
By equilibrium programming, we mean specifying and solving generalized Nash
equilibrium problems (GNEP), multiple optimization problems with equilibrium
constraints (MOPEC), or quasi-variational inequalities (QVI) in modeling
languages.
Papers
Implementation
- Starting GAMS Distribution 27.0.0 beta, the implementation is included in the
GAMS release.
Examples in the papers
For each example, the first file uses the original EMP syntax,
and the next one uses EMP/Set syntax.
To use the EMP/Set syntax, follow the instructions in the Appendix of the paper
Solving equilibrium problems using extended mathematical programming.
-
listing3.gms,
listing3_empset.gms
-
listing4.gms,
listing4_empset.gms
-
listing5.gms,
listing5_empset.gms
-
listing9.gms,
listing9_empset.gms
-
listing10.gms,
listing10_empset.gms
-
listing12.gms,
listing12_empset.gms
- table3.gms,
s5_x.gdx,
s10_x.gdx,
s15_x.gdx,
s20_x.gdx,
s23_x.gdx
-
listing13.gms,
listing13_empset.gms
-
listing15.gms,
listing15_empset.gms
-
bounds_on_shared_variables.gms,
bounds_on_shared_variables_empset.gms
More examples
Equilibrium examples
- gas_power.gms
from the plenary talk by Antonio J. Conejo at the MOPTA 2019.
It models a simple equilibrium between gas network and power generation.
- table_3_2_and_3_3.gms
from the book "Complementarity Modeling in Energy Markets".
- network.gms
from the paper: Patrick T. Harker:
Multiple equilibrium behaviors on networks.
Transportation Science 22(1), 39-46 (1988).
It formulates a mixed behavior of agents and reproduces Table I (b)
of the paper.
Another model network_more.gms
formulates all the different combinations and reproduces the entire results
of Table I.
- fac_ex1-1.gms
from the paper: Francisco Facchinei and Christian Kanzow:
Generalized Nash equilibrium problems.
Annals of Operations Research 175: 177-211, 2010.
It formulates Example 1.1 of the paper, where the second player's objective
function is multiplied by two. This can be implemented by dividing the
scaling factor of the second player's objective variable by half.
- facchinei_kanzow_gneps.tar.gz
from the paper: Francisco Facchinei and Christian Kanzow:
Penalty methods for the solution of generalized Nash equilibrium problems.
SIAM Journal on Optimization, 20(5): 2228-2253, 2010.
It contains examples, a1-a18, in the Appendix of the paper.
- eaves_pure_trade_emp.gms
from the paper: B. C. Eaves:
Finite solution of pure trade market with Cobb-Douglas utilities.
Mathematical Programming Study 23: 226-239, 1985.
QVI examples
Examples below were taken from the following paper:
Francisco Facchinei, Christian Kanzow, and Simone Sagratella: QVILIB: A
library of quasi-variational inequality test problems. Pacific Journal of
Optimization 9(2), 225-250 (2013)
- qvi_bilin1a.gms
- qvi_bilin1b.gms
- qvi_box1a.gms
- qvi_box1b.gms
- qvi_box2a.gms,
qvi_box2a.gdx
- qvi_box2b.gms,
qvi_box2b.gdx
- qvi_box3a.gms,
qvi_box3a.gdx
- qvi_box3b.gms,
qvi_box3b.gdx
- qvi_kunr11.gms,
qvi_kunr11.gdx
- qvi_kunr12.gms,
qvi_kunr12.gdx
- qvi_kunr21.gms,
qvi_kunr21.gdx
- qvi_kunr22.gms,
qvi_kunr22.gdx
- qvi_kunr31.gms,
qvi_kunr31.gdx
- qvi_kunr32.gms,
qvi_kunr32.gdx
- qvi_lunss1.gms,
qvi_lunss1.gdx
- qvi_lunss2.gms,
qvi_lunss2.gdx
- qvi_lunss3.gms,
qvi_lunss3.gdx
- qvi_lunssvi1.gms,
qvi_lunssvi1.gdx
- qvi_lunssvi2.gms,
qvi_lunssvi2.gdx
- qvi_lunssvi3.gms,
qvi_lunssvi3.gdx
- qvi_movset1a.gms
- qvi_movset1b.gms
- qvi_movset2a.gms
- qvi_movset2b.gms
- qvi_movset3a1.gms,
qvi_movset3a1.gdx
- qvi_movset3a2.gms,
qvi_movset3a2.gdx
- qvi_movset3b1.gms,
qvi_movset3b1.gdx
- qvi_movset3b2.gms,
qvi_movset3b2.gdx
- qvi_movset4a1.gms,
qvi_movset4a1.gdx
- qvi_movset4a2.gms,
qvi_movset4a2.gdx
- qvi_movset4b1.gms,
qvi_movset4b1.gdx
- qvi_movset4b2.gms,
qvi_movset4b2.gdx
- qvi_outkz31.gms,
qvi_outkz31.gdx
- qvi_outkz41.gms,
qvi_outkz41.gdx
- qvi_outz40.gms
- qvi_outz41.gms
- qvi_outz42.gms
- qvi_outz43.gms
- qvi_outz44.gms
- qvi_rhs1a1.gms,
qvi_rhs1a1.gdx
- qvi_rhs1b1.gms,
qvi_rhs1b1.gdx
- qvi_rhs2a1.gms,
qvi_rhs2a1.gdx
- qvi_rhs2b1.gms,
qvi_rhs2b1.gdx
- qvi_scrim11.gms
- qvi_scrim12.gms
- qvi_scrim21.gms
- qvi_scrim22.gms
- qvi_wal2.gms
- qvi_wal3.gms
- qvi_wal5.gms
- qvi_waleq1.gms
- qvi_waleq2.gms
- qvi_waleq3.gms,
qvi_waleq3.gdx
- qvi_waleq4.gms
- qvi_waleq5.gms