GAMS [ Home | Support | Sales | Solvers | Documentation | Model Libraries | Search | Contact Us ]



Release Notes

Each new release incorporates numerous fixes and improvements to the core GAMS system and its many components. A selected list of improvements and new components is given below.

GAMS Distribution 23.0 February 14, 2009

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Surendu Korgaokar, Tom Rutherford, Stefan Vigerske and Rich Roberts.

GAMS System

GAMS Data Utilities

GDXXRW

Documentation

Other

As announced earlier we dropped the following systems as of this GAMS Distribution.

Model Libraries

GAMS Model Library

GAMS Test Library

Solvers

As announced in the 22.9 release notes we dropped the following solvers as of this GAMS Distribution.

Due to user requests, and despite our earlier announcement, we did not drop the following components:

CPLEX

New libraries 11.2.1

GUROBI

The new Gurobi solver provides state-of-the-art simplex-based linear programming (LP) and mixed-integer programming (MIP) capability.

The Gurobi MIP solver includes shared memory parallelism, capable of simultaneously exploiting any number of processors and cores per processor. The implementation will be deterministic: two separate runs on the same model will produce identical solution paths.

The Gurobi solver is available for the 32-bit and 64-bit versions of Windows and Linux. Please contact us for an evaluation license.

KNITRO

New libraries 5.2.0

LINDOGLOBAL

New libraries 5.0.1.345

MOSEK

New libraries 5.0 rev 112

XPRESS

New libraries 19.00.04

In-core communication solver links

Where a traditional link already exists, the newer in-core link version has a “D” appended to the name (D for DLL). These in-core links are very similar to their traditional predecessors. They may lack some functionality but offer in-core communication between GAMS and the solver, making potentially large model scratch files unecessary. This can save time if you solve many models in your GAMS program.

Solver/Platform Availability Matrix

Solver/Platform availability - 23.0    February 14, 2009
  x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
Sun Sparc64
SOLARIS
Sun Intel
SOLARIS
IBM RS-6000
AIX 4.3
Mac PowerPC
Darwin
Mac Intel32
Darwin
HP 9000
HP-UX 111
SGI
IRIX2
DEC Alpha
Digital Unix 4.03
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.2 x x x x x x x x   x 10.0 9.1 8.1
DECIS x x x x x 32bit   x     x x x
DICOPT x x x x x x x x x x x x x
GUROBI 1.0 x x x x                  
KNITRO 5.2 x x 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   x x 3.2    
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   x     V2 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 19.00 x 32bit x 32bit x 32bit   18.00     16.10    
1)GAMS distribution for HP 9000/HP-UX is 22.1.
2)GAMS distribution for SGI IRIX is 22.3.
3)GAMS distribution for DEC Alpha is 22.7.

GAMS Distribution 22.9   December 1, 2008

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release. In particular, we thank Stefan Boeters, Wolfgang Britz, Alexander Gocht, Josef Kallrath, Erwin Kalvelagen, Todd Munson, Yiqi Zhu.

Future Deprecation

We are planning to drop the following systems from our next GAMS Distribution 23.0. If you object please submit an email to support@gams.com!

GAMS System

GAMS

The GAMS Macro Facility

The GAMS macro facility has been inspired by the GAMS-F preprocessor for function definition developed by Ferris, Rutherford and Starkweather, 1998, 2005. The GAMS macro facility incorporates the major features of the GAMS-F preprocessor into the standard GAMS release. The GAMS macros acts like a standard macro when defined, however, its recognition for expansion is GAMS syntax driven.

Macros are widely used in computer science to define and automate structured text replacements. The GAMS macro processors functions similar to the popular C/C++ macro preprocessor. The definition takes the form

$macro name  macro body
$macro name(arg1,arg3,arg2,..) macro body with tokens arg1,..

The name of the macro has to be unique, similar to other GAMS data types like sets and parameters. A ( following immediately the macro name starts the list of replacement arguments. The macro body is not further analyzed after removing leading and trailing spaces.

The recognition and following expansion is directed by GAMS syntax. The tokens in the macro body to be replaced by the actual macro arguments follow the standard GAMS identifier conventions. For example:

$macro diff(y) system.cosh(y) - cosh(y)
$macro cosh(x) (exp(x) + exp(-x))/2
scalar z; z = diff(2/3); display z;

will expand into:

scalar z; z = system.cosh(2/3) - (exp(2/3) + exp(-2/3))/2; display z;

This expansion takes place in two steps, first GAMS recognizes diff as a macro and changes the input text to:

scalar z; z = system.cosh(2/3) – cosh(2/3); display z;

Gams will continue to process the modified input text. The first occurrence of cosh is not recognized by gams as a macro, only the second reference to cosh(2/3) will result in a second and final expansion.

The recognition of macros and expansion of arguments can further be controlled by the use of ampersands (&) in the macro body. A single ampersand (&) is used as a concatenation or separation symbol to recognize tokens to be replaced. Two ampersands (&&) immediately preceding a token will drop the most outer matching single or double quotes of the replacement argument. For example:

$macro  f(i)  sum(j, x(i,j))  
$macro equ(q)  equation equ_&q; equ_&q.. q =e= 0;
equ(f(i))

will expand into:

equation equ_f(i); equ_f(i).. sum(j, x(i,j)) =e= 0;

The first step of the above expansion is shown below. GAMS will then only recognize the third occurrence of f(i) as a macro which will be expanded to give the above result.:

equation equ_f(i); equ_f(i).. f(i) =e= 0;

The actual calling arguments of macros can contain complex expressions and other macro calls. Multiple arguments are separated by commas. Pairs of parenthesis and quotes can be used freely to protect the separating comma.

$macro many(a,b) scalar x; x=a/&&b); display x;
many((3/5),'(mod(3,2)')

Note that the second argument has unbalanced parenthesis and therefor needs to be enclosed in quotes to give the result below.

scalar x; x=(3/5)/(mod(3,2)); display x;

Some macro use can result in an expansion of infinite length. For example:

$macro a  b,a
display a; 

will expand into:

display b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,……

GAMS will eventually refuse to do more substitutions and issue a compilation error.

The use of deeply nested macros may require the use of aliased sets in indexed operations like sum and prod. A minor syntax extension allows the implicit use of aliases. The suffix .local on a controlling set will use an implicit alias within the scope of the indexed operation. For example:

$macro qq(i) sum(i.local, b(i))
c(q) = qq(q);

will expand into:

c(q) = sum(q.local, b(q));

The use of the .local modifier is not limited to macros and can be used in any context.

Another feature motivated by the use of macros is the implicit use of the .l suffix in data manipulation statements. This allows using the same algebra in model definitions and assignment statements. The following code snippet illustrates this feature:

$macro D(s,h) INCOME(h)*alpha[s,h]*sum{s.local, alpha[s,h]*P[s]*
…
cmkt(s)..    Y(s) =g= sum(h, D(s,h));
…
$onDotL

dl(s,h) = d(s,h); display dl;

where INCOME is another macro which calls a number of other nested macros. D(s,h) is now used to define the equation cmky and is also used in an assignment after the model has been solved. The $ondotl enables the implicit .l suffix for variables. This feature was introduced to make macros more useful and is not limited to be used in macro bodies. Since this a new feature it has to be enabled. The matching $offdotl will disable this feature.

Three more switches are relevant to macros. The $show will list any GAMS macros defined. The $onmacro/$offmacro will enable or disable the expansion of macros; the default is $onmacro. Finally, the $on/offexpand will change the processing of macros appearing in the arguments of a macro call. The default operation is not to expand macros in the arguments. The switch $onexpand enables the recognition and expansion of macros in the macro argument list. $offexpand will restore the default behavior.

Macro definitions are preserved in a save/restart file and are available again when performing a continued compilation.

Comparison of GAMS-F with GAMS macros

The GAMS-F preprocessor combines aspects of traditional macros with that of functions and objects. The example 7 from the GAMS-F documentation using macros can be found in the GAMS model library under the name two3mac. Some of the main differences between GAMS macros and the GAMS-F preprocessor are:

GAMSIDE

GAMS Data Utilities

CHOLESKY
EIGENVALUE
EIGENVECTOR
GDXCOPY
GDXDUMP
GDXVIEWER
GDXDCLIB
GDXMERGE

SCENRED2

Scenred2 is an updated and expanded version of the scenred utility for scenario reduction. Scenred2 is intended to be a replacement for the existing scenred, but we have made the newer version available as scenred2 due to some differences in the options used to control scenred's behavior. Having both available also facilitates comparisons between the two.

New features in scenred2 include:

Documentation

Other

Model Libraries

GAMS Model Library

GAMS Test Library

Solvers

Coin-OR

Cplex

New libraries 11.2

CPLEX 11.2 offers finer control for solution polishing. In previous versions, the only stopping criterion for solution polishing was set by the parameter PolishTime to limit time spent polishing a solution. General stopping criteria, such as the time limit, absolute MIP gap, relative MIP gap, MIP node limit or MIP integer solution limit did not apply to solution polishing.

Now, however, CPLEX 11.2 allows the user to control more finely when solution polishing terminates. In other words, the usual tolerances (EpAGap and EpGapinitalized with GAMS parameters OptCA and OptCr) and limits (IntSolLim, NodeLim and TiLim initialized with GAMS paramter NodLim and ResLim) now apply to solution polishing.

In addition to those existing parameters that now control the termination of solution polishing, there are also new parameters specific to the starting conditions for solution polishing.

With these new parameters, a user can tell CPLEX when to switch from branch & cut to solution polishing. CPLEX is able to switch after it has found a feasible solution and put into place the MIP structures needed for solution polishing. When these two conditions are met (feasible solution and structures in place), CPLEX stops branch & cut and switches to solution polishing whenever the first of these starting conditions is met:

The new parameters are incompatible with the deprecated option PolishTime. If you use them together in an option file you will see an error like this:

Reading parameter(s) from "C:\tmp\cplex.opt"

>>  polishtime 5
*** Warning line 1: deprecated option "polishtime"; Use option polishafter... for finer solution polishing control.
>>  polishafterintsol 1
Finished reading from "cplex.opt"
CPLEX Error  1807: Incompatible parameters.
polishafterintsol: current = 2100000000, default = 2100000000, minimum = 1, maximum = 2100000000

A few examples with the corresponding GAMS/CPLEX option file:

TiLim 300
PolishAfterTime 100
PolishAfterIntSol 1
PolishAfterEpGap 0.1
EpGap 0.02

Lindoglobal

New libraries 5.0.1.292 now also for Sun Sparc Solaris

PATH

New libraries 4.7.01 fix preprocessing bug for both MCP and NLP front ends

BDMLPD, CPLEXD and CONOPTD

Enhancements and bug fixes for the three experimental in-core communication solver links BDMLPD, CPLEXD and CONOPTD.

Solver/Platform Availability Matrix

Solver/Platform availability - 22.9    December 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.03
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.2 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
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.
3)GAMS distribution for DEC Alpha is 22.7.

GAMS Distribution 22.8   August 1, 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 Wolfgang Britz, Andrea Consiglio, Anton Eremeev, Mustafa Esen,Josef Kallrath, Erwin Kalvelagen, Todd Munson, Rich Roberts, and Andres Ramos.


GAMS System

GAMS

  • GAMS scratch file extension: Starting with distribution 22.9 the default file extension of intermediate files located in the 225? directories will change from .scr to .dat. For distribution 22.8 it is still .scr. The scratch extension now is a parameter that can be changed with the GAMS option ScrExt, e.g gams trnsport scrext=tmp. Within GAMS code you get the scratch extension using %gams.scrext%.
  • Increased the maximum input line length to 40,000 characters and the maximum number of columns in a table to 10,000.
  • Checking for an interrupt is now also done inside a GAMS looping constructs.
  • The $LOAD directive can read the universe from a gdx file by specifying $LOAD id=*.
  • Certain gdx file read operations are now faster and use less memory.
  • GAMS parameters gdxcompress and gdxconvert
    • Allow new gdx files to be written in an older format of the gdx file.
    • Usage through an environment variables (valid for all gdx related operations): gdxconvert = <value> and gdxcompress = <value> or via GAMS command line parameters: gdxconvert = <value> and gdxcompress = <value>.
    • Possible values for gdxcompress
      • 0 (or empty): no compression
      • 1: compression turned on
    • Possible values for gdxconvert:
      • V7: version 7
      • V6: version 6
      • V5: version 5
    • E. g. to get a compressed v6 gdx file enter: gams <model_name> gdxconvert=v6 gdxcompress=1 gdx=<gdx_file>.
    • Note:
      • With GAMS 22.8 the default format for gdx files is V7 uncompressed.
      • Only V6 and V7 support compression.
      • V7 formatted files were introduced with version 22.6 of GAMS; V6 formatted files were introduced with version 22.3 of GAMS. GAMS platforms that were introduced after 22.3/22.6 (e.g. Mac Intel or SunSparc64) do not support V5/V6.
      • The command line options have a higher precedence as the environment variables with the same name.

Utilities

  • New
    • gdx2xls: Converts an entire gdx data container to a Microsoft Excel spread sheet.
    • invert: Calculates the inverse of a matrix provided as a gdx file (for more information see gdxutils documentation).
    • msappavail: Checks which Microsoft Office programs are installed.
    • xlstalk: Allows some interaction with Excel to open/close/save Excel files.
  • Extended/Updated
    • gdxcopy: New option to replace existing gdx files.
    • gdxdiff New id option to compare specified ids only.
    • gdxmerge New optional output parameter to specify the name of the output file.
    • gdxviewer: Fixed problem with cube view.

GAMSIDE

Fixed problem when moving a column to the plane in the gdx data viewer.


Model Libraries

GAMS Test Library

New models, including tests for

  • invert utility
  • ls solver
  • poly function
  • gdxconvert and gdxcompress parameters

GAMS Data Utilities

GAMS introduces the new model library 'GAMS Data Utilities' containing models that demonstrate the various utilities to interface GAMS with other applications.

PRACTICAL FINANCIAL OPTIMIZATION Models

The models of the forthcoming book PRACTICAL FINANCIAL OPTIMIZATION - A Library of GAMS Models by Andrea Coniglio, Soren Nielsen, and Stavros A. Zenios have been included in the GAMS distribution. It is a companion volume to the book Practical Financial Optimization by Stavros A. Zenios.


Solvers

Baron

New libraries 8.1.5 for Windows, Linux, and AIX

BDMLPD

GAMS 22.8 introduces a third experimental solver BDMLPD besides CONOPTD and CPLEXD. They are very similar compared to their professional brothers BDMLP, CONOPT and CPLEX. 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.

Coin-OR

  • CoinBonmin
    • New libraries 0.99
    • Support of user-defined cut generators and heuristics via BCH (Branch and Cut Heuristic)
  • CoinCbc new libraries 2.1
  • CoinScip supports user-defined cut generators, heuristics, and incumbent report callbacks via BCH

Convert

New option hessian to dump the Hessian matrix into a GDX file. Similar to the option jacobian.

Cplex

New libraries 11.1.1

Lindoglobal

New libraries 5.0.1.292. Sun Sparc Solaris 5.0.1.274.

LS

Mosek

New libraries 5 Rev 90

XA

New libraries for Windows

Solver/Platform availability - 22.8    August 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.03
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.1 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
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.
3)GAMS distribution for DEC Alpha is 22.7.

GAMS Distribution 22.7   May 1, 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 statem