22.7 Distribution

22.7.1 Major release (May 01, 2008)


We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Jens Baudach, Michael Ferris, Josef Kallrath, Aldo Vecchietti and Stefan Vigerske.

GAMS System


  • Enhanced Data Statements

    The data statements have been enhanced to allow initial values for equations and variables in addition to set and parameter data. Those new data statements follow the syntax for list and table data statement for parameters by adding an additional dimension to specify the specific data attribute. The variable and equation suffixes can be used in this additional dimension. For example, the solution values for the transport example could be written as:

      variable x(i,j) / (seattle.(new-york 50, chicago 300)
                         san-diego.(new-york,topeka) 275   ).l
                        seattle.topeka.m     0.36
                        san-diego.chicago.m  0.009 /;
      variable z / l 153.6750 /;
      equation demand(j) / (new-york 0.2250
                            chicago  0.1530
                            topeka   0.1260).m /;

    Only the non default values need to be specified. The following attributes can be used according to the variable type:

      .l      level
      .m      marginal
      .lo     lower bound
      .up     upper bound
      .scale  scale value
      .prior  priority for discrete variables
      .fx     shorthand for setting .l,.lo and .up to the same value

    With table style input all index positions have to appear in the row definition. For example we could write the above list oriented statement in table form as:

      variable table x(i,j) initial values
                          l       m
      seattle. new-york   50
      seattle. chicago   300
      seattle. topeka          0.36
      san-diego.new-york 275
      san-diego.topeka   275
      san-diego.chicago       0.009

    As with other data statements, $onmulti, $ondelim and $onempty can be used as well.

  • The Matching Operator

    Mappings between n-tuples can be clumsy to enter via data statements and are often difficult to compute. Similar to the product operator (.) we introduced a match operator (:). For example, the two set data statements give the same result:

      Set I / t1*t6:s3*s5 /
      Set j / t1.s3,t2.s4,t3.s5 /

    In another example we may want to count "tuples" in some fashion:

      sets h /h1*h24/, d /d1*d365/, dh(d,h) /#d.#h/
      sets t /t1*t8760/, tdh(t,d,h) /#t:#dh/

    The resulting set tdh will then have the values:

      t1.d1.h1, t2.d1.h2, t3.d1.h3 ..

    Currently there is no general matching operator for assignment statement. To facilitate some otherwise very clumsy and expensive calculations, one can use the following option statement:

      Set ijk(I,j,k), x(I,j,k,l) ..
      Option ijk(i:j,k), x(ijk:l);

    This statement will first clear the set ijk, then apply the matching operators to i and j and finally apply a product operation to the matched (i,j) with k which results in:

      i1.j1.k1, i1.j1.k2, ..
      i2.j2.k1, i2.j2.k2, ..

    And x will match ijk with the set l resulting in:

      i1.j1.k1.l1, i1.j1.k2.l2, ..
  • Limit on Memory Use - HeapLimit

    In some applications it may be desirable to limit the amount of memory a GAMS job can use. HeapLimit (MB) is a new GAMS parameter and function/property that limits memory used to store dynamic data. If the dynamic data storage exceeds this limit, the job will be terminate with return code 10, out of memory. These features are especially useful in a server environment.

    • The GAMS parameter HeapLimit sets the limit of memory use at compile and execution time for a GAMS job
    • The function/property HeapLimit can be used to interrogate the current limit and allows it to be rest
    • The NLP solver CONOPT also has a HeapLimit option which ensures that the solver will not use more dynamic memory
  • Other enhancements
    • A symbol can have up to 20 dimensions and identifiers and labels can have up to 63 characters
    • The GAMS executable understands the ‘Keep’ and ‘CurDir’ parameters
    • New derived variable/equation attribute .range is defined as x.range=x.up-x.lo. This provides a convenient way to see if a variable is fixed
    • Additional references in compile time constant expression in $eval and $ife statement can now reference scalar parameters and the function card(id)
    • Added the tuple text if we display with the format x:0:0:1 which puts single items on one line
    • In table statements under $ondelim, we can drop the dummy element in the column definition
    • As in execution time GDX loads, we can extract the domain information with a load statement like $load setid=parameterid

Gams Data Exchange (GDX)

  • A symbol in a GDX file can have up to 20 dimensions and identifiers and labels can have up to 63 characters
  • A GDX file can store domain information for a symbol
  • A GDX file can save an aliased set

GDX Utilities

  • GDXDUMP writes now data for variables and equations (no longer surrounded by $ontext / $offtext)
  • MDB2GMS allows writing of an empty symbol
    • No longer interprets a text field as a numeric value (because of international notation issues); the value returned for such a cell is NA
    • Fixed a problem with the default value for a field for a VAR and EQU
  • GDXMERGE did not merge an aliased set correctly
  • GDXVIEWER can export all symbols to Excel in command-line mode by specifying ID=*


  • Supports an optional file, ‘idecfg.ini’, to display additional items like:
    • Option to open a html document
    • Multiple model libraries
    • Display of an image in the process window
  • Fixed a problem matching parenthesis on an empty line
  • Fixed a problem deleting a 225 directory (when this was the last directory used for opening a file)

GAMS Model Library

GAMS Test Library

  • 30 new models, including
    • Tests for proper handling of domains larger than 10 and UEL names longer than 31 characters
    • Testing of gdxmerge with aliased sets
    • New tests for DECISC and DECISM
    • Several models testing EMP


  • Updated McCarl GAMS User's Guide



  • New libraries (version 8.1.4)


  • New libraries (version 11.0.1)


  • New MIP solver SCIP from Zuse Institute Berlin
    • use as option mip=coinscip;
    • uses COIN-OR LP solver CLP
    • free for academic users.
  • Support of Windows 64-bit platform
  • CoinCbc supports user-defined cut generators and heuristics via BCH (Branch and Cut Heuristic)
  • CoinIpopt and CoinBonmin support dynamic load of linear solvers MA27, MA57 (HSL), and Pardiso.
  • Minor updates in the libraries and interfaces of CoinCbc, CoinGlpk, CoinIpopt, and CoinBonmin.


EMP - Extended Mathematical Programming

  • (Experimental) Framework for automated mathematical programming reformulations as

    • Bilevel Programs
    • Disjunctive Programs
    • Extended Nonlinear Programs
    • Embedded Optimization Complementarity Programs

    Thereby new upcoming model types are reformulated into established math programming classes in order to use mature solver technology. EMP comes free of charge with any licensed GAMS system but needs a subsolver to solve the generated models.


  • LogMIP 1.0 is a program for solving linear and nonlinear disjunctive programming problems involving binary variables and disjunction definitions for modeling discrete choices. While the modeling and solution of these disjunctive optimization problems has not yet reached the stage of maturity and reliability as LP, MIP and NLP modeling, these problems have a rich area of applications. LogMIP 1.0 has been developed by A. Vecchietti, J.J. Gil and L. Catania at INGAR (Santa Fe-Argentina) and Ignacio E. Grossmann at Carnegie Mellon University (Pittsburgh-USA) and is composed of:

    • a language compiler for the declaration and definition of disjunctions and logic constraints
    • solvers for linear and non-linear disjunctive models (lmbigm, lmchull, lmlboa)

    LogMIP comes free of charge with any licensed Windows GAMS system but needs a subsolver to solve the generated MIP/MINLP models. For more information see


  • New libraries (version


  • GAMS 22.7 introduces two experimental solvers: CPLEXD and CONOPTD. They are very similar compared to their professional brothers CPLEX and CONOPT. They lack some functionality (e.g. CPLEXD does not solve QCP models) but offer in-core communication between GAMS and the solver. No large model scratch files need to be written to disk which can save time if you solve many models in your GAMS program. This in-core execution is activated by setting modelname.solvelink=5; before the solve statement.

Solver/Platform Availability Matrix

Solver/Platform availability - 22.7: May 1, 2008
MS Windows
MS Windows
Sun Sparc
Sun Sparc64
Sun Intel
HP 9000
HP-UX 111
DEC Alpha
Digital Unix 4.0
IBM RS-6000
AIX 4.3
Mac PowerPC
Mac Intel32
ALPHAECP x x x x x x x   x x x x  
BARON 8.1 x 32bit x 32bit           x      
BDMLP x x x x x x x x x x x x x
COIN x x x x     x       x x  
CONOPT 3 x x x x x x x x x x x x x
CPLEX 11.0 x x x x x x x 10.0 8.1 x   x 9.1
DECIS x x x x x 32bit x x x x     x
DICOPT x x x x x x x x x x x x x
KNITRO 5.1 x 32bit x x x 32bit         x x  
LINDOGLOBAL 5.0 x x x x x x         x x  
LGO x x x x x x x x x   x x x
MILES x x x x x x x x x x x x x
MINOS x x x x x x x x x x x x x
MOSEK 5 x x x x x x x 3.2     x x  
MPSGE x x x x x x x x x x x x x
MSNLP x x x x x 32bit   x     x x  
NLPEC x x x x x x x x x x x x x
OQNLP x 32bit x 32bit                  
OSL V3 x 32bit x 32bit x 32bit   V2   x     V2
OSLSE x 32bit x 32bit x 32bit       x      
PATH x x x x x x x x x x x x x
SBB x x x x x x x x x x x x x
SNOPT x x x x x x x x x x x x x
XA x 32bit x x x 32bit   x x x      
XPRESS 18.00 x 32bit x 32bit x 32bit   16.10   x      
1)GAMS distribution for HP 9000/HP-UX is 22.1.
2)GAMS distribution for SGI IRIX is 22.3.

22.7.2 Maintenance release (May 13, 2008)

  • DICOPT/ALPHAECP/LOGMIPLBOA: Fixed Cplex scaling bug
  • GAMS/CPLEX: Small cosmetic Cplex bug fix. We got "CPLEX Error 3003: Not a mixed-integer problem." In case we cannot solve the fixed problem. This was due to some query calls about nodes and iteration.
  • GAMSIDE: Fixed a bug that could cause an out of memory error when moving a row or column to the plane index in the gdx data viewer
  • GAMS/DEA: Avoid writing zeros to GDX files
  • GAMS/LGOLIB: Fixed a memory leak
  • Minor documentation updates
  • Note: AIX and Mac OS X PPC were not updated.