Release Notes

Major releases contain substantial changes to the GAMS system. The License Check date is set to the release date of the major release.

Minor releases are mainly issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries. Additionally, they can provide a few new features that do not change existing behavior. The License Check Date remains the same as for the prior major release. This means that any license file that worked with the prior major release will also work with this minor release.

Maintenance releases do not provide any new features. They are issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries. The License Check Date remains the same as for the prior major release. This means that any license file that worked with the prior major release will also work with this maintenance release.

GAMS Distribution 22.7

Distribution History

22.7.2 (Maintenance release) May 13, 2008
22.7.1 (Major release) May 01, 2008

GAMS Maintenance Release 22.7.2 - 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.

GAMS Major Release 22.7.1 - May 01, 2008

Acknowledgements

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

GAMS

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
  • GDXXRW
    • 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=*

GAMSIDE

  • 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

Documentation

  • Updated McCarl GAMS User's Guide

Solvers

BARON:

New libraries (version 8.1.4)

CPLEX

New libraries (version 11.0.1)

COIN-OR

  • New MIP solver GAMS/SCIP from Zuse Institute Berlin (ZIB)
    • 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.

CONOPT

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

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

MOSEK

New libraries (version 5.0.0.79)

CPLEXD and CONOPTD

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
  x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
Sun Sparc64
SOLARIS
Sun Intel
SOLARIS
HP 9000
HP-UX 111
DEC Alpha
Digital Unix 4.0
IBM RS-6000
AIX 4.3
Mac PowerPC
Darwin
Mac Intel32
Darwin
SGI
IRIX2
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.