Extended Mathematical Programming (EMP)

Extended Mathematical Programming (EMP) is an extension to algebraic modeling languages that facilitates the automatic reformulation of new model types as models in more established mathematical programming classes, allowing them to be solved by mature solver algorithms. A number of important problem classes can be solved, e.g. Nash games and equilibria, bilevel programs, Disjunctive Programs and Stochastic Programs. EMP is independent of the modeling language used but is currently implemented only in GAMS. The new types of problems modeled with EMP are reformulated, using the GAMS solver JAMS, as well established types of problems, and the reformulated models are passed to a suitable GAMS solver to be solved.

EMP models are defined by information taken from two places: the traditional model definition and a text file containing annotations or additional information. The usual model definition contains variables, constraints and/or functions, and perhaps also an objective or matching information. Additional annotations to specify relationships that don't fit within this traditional definition are taken from the EMP info file. For example, the constraints for two optimizing agents in a competitive game can be specified with traditional algebra, while the structure (who owns what variables and constraints) can be specified in the info file. Together, this allows large, complex models to be specified in a convenient, precise, and flexible way.

This chapter is organized as follows.

  • At the end of each section we present and discuss the general syntax that EMP provides to write the annotations for that particular problem type. We use the usual GAMS syntax symbols: [ ] (the enclosed construct is optional), { } (the enclosed construct may be repeated zero or more times) and | (exclusive OR).
  • Many EMP model examples are available in the GAMS EMP Library.