22.7.1 Major release (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.(newyork 50, chicago 300) sandiego.(newyork,topeka) 275 ).l seattle.topeka.m 0.36 sandiego.chicago.m 0.009 / variable z / l 153.6750 / equation demand(j) / (newyork 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. newyork 50 seattle. chicago 300 seattle. topeka 0.36 sandiego.newyork 275 sandiego.topeka 275 sandiego.chicago 0.009
As with other data statements, $onmulti, $ondelim
and $onempty
can be used as well.
The Matching Operator
Mappings between ntuples 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 asx.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 functioncard(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 commandline 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 Model Library contains six examples from LogMIP User’s Manual
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)
COINOR

New MIP solver SCIP from Zuse Institute Berlin

use as
option mip=coinscip;

uses COINOR LP solver CLP

free for academic users.


Support of Windows 64bit platform

CoinCbc supports userdefined 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

new option Heaplimit (see also gams option)
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 FeArgentina) and Ignacio E. Grossmann at Carnegie Mellon University (PittsburghUSA) and is composed of:

a language compiler for the declaration and definition of disjunctions and logic constraints

solvers for linear and nonlinear 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 incore 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
incore 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 HPUX 11^{1} 
DEC Alpha Digital Unix 4.0 
IBM RS6000 AIX 4.3 
Mac PowerPC Darwin 
Mac Intel32 Darwin 
SGI IRIX^{2} 

ALPHAECP  
BARON 8.1  32bit  32bit  
BDMLP  
COIN  
CONOPT 3  
CPLEX 11.0  10.0  8.1  9.1  
DECIS  32bit  
DICOPT  
KNITRO 5.1  32bit  32bit  
LINDOGLOBAL 5.0  
LGO  
MILES  
MINOS  
MOSEK 5  3.2  
MPSGE  
MSNLP  32bit  
NLPEC  
OQNLP  32bit  32bit  
OSL V3  32bit  32bit  32bit  V2  V2  
OSLSE  32bit  32bit  32bit  
PATH  
SBB  
SNOPT  
XA  32bit  32bit  
XPRESS 18.00  32bit  32bit  32bit  16.10  
^{1)}GAMS distribution for HP 9000/HPUX 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 mixedinteger 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.