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.5 July 4, 2010

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 Farhad Farnam and Alexander Gocht.

GAMS System

APIs

Solvers

BARON

CONOPT

CPLEX

GUROBI

LINDOGLOBAL

Model Libraries

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 23.5    July 4, 2010
  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 5.3
Mac Intel32
Darwin
Mac x86_64
Darwin
HP 9000
HP-UX 111
SGI
IRIX2
DEC Alpha
Digital Unix 4.03
Mac PowerPC
Darwin4
ALPHAECP x x x x x x x x x x     x x
BARON 9.0 x x x x                    
BDMLP x x x x x x x x x x x x x x
COIN-OR x x x x     x   x x        
CONOPT 3 x x x x x x x x x x x x x x
CPLEX 12.2 x 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  
DICOPT x x x x x x x x x x x x x  
GUROBI 3.0 x x x x           x        
KNITRO 6.0 x x x x 5.2 32bit     x          
LINDOGLOBAL 6.1 x x x x 6.0 6.0 x   x x       x
LGO x 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 x
MINOS x x x x x x x x x x x x x x
MOSEK 6 x x x x 5.0 5.0 x   x x 3.2      
MPSGE x 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 x
OQNLP x 32bit x 32bit                    
PATH x 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 x
SCIP x x x x     x   x x        
SNOPT x x x x x x x x x x x x x x
XA x 32bit x x x 32bit         x   x x
XPRESS 20.00 x x x x x x x x     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.
4)GAMS distribution for Mac PowerPC is 23.3.

GAMS Distribution 23.4 May 24, 2010

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 Phil Bishop, Stefan Boeters, Pavel Borisovski, Wolfgang Britz, Michael Ferris, David Grace, Sascha Herrmann, Alexander Mitsos, Sebastian Ritter, and Tom Rutherford. We also thank Marcel Roelofs for helpful and insightful comments and discussions on Hessian computations.

Platforms

AIX

Mac PowerPC

GAMS System

GAMS

GridScript

The GAMS parameter gridscript allows to point to a customized grid submission script.

TryLinear

GAMS checks a model for non-linearities at compile time and requires the user to specify using nlp in the solve statement. At run time these non-linearities might disappear (cancelation, multiplication of non-linear terms with 0, ...), but the using nlp prevented the use of a pure LP solver. The new model attribute <model>.TryLinear = 1 checks at run time whether a nonlinear model has any non-linearities and then calls the default/chosen solver for the resulting model type.

Depending on the original model type the resulting model type is:

An example was added to the Test Library: trylin01 (482)

Compile Time String Comparison

A compile time equivalent of the sameas function was added. E.g.

$eval a sameas(xyz,xYz)
$eval b sameas ( 'xyz' , "xyz" )
$eval c sameas (12-3,12-3)
$eval d sameas (12-3,13-4)
$log %a% %b% %c% %d%

will yield:

1 1 1 0

Compile Time Constants

For various GAMS options compile time constants were added in order to ease the reading code if used.

E.g. the statments following are the same

The GAMS model libraries were adjusted and now make use of these constants.

APIs

GDXDCLIB API

New entry points:

Data Utilities

GDX2ACCESS

GDXXRW

MDB2GMS

SQL2GMS

EMP

IDE

Libinclude

Solvers

BARON

Coin-OR

CPLEX

GUROBI

LINDOGLOBAL

MOSEK

XPRESS

In-core communication solver links

Model Libraries

GAMS Data Library

GAMS EMP Library

GAMS Model Library

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 23.4    May 24, 2010
  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 5.3
Mac Intel32
Darwin
Mac x86_64
Darwin
HP 9000
HP-UX 111
SGI
IRIX2
DEC Alpha
Digital Unix 4.03
Mac PowerPC
Darwin4
ALPHAECP x x x x x x x x x x     x x
BARON 9.0 x x x x                    
BDMLP x x x x x x x x x x x x x x
COIN-OR x x x x     x   x x        
CONOPT 3 x x x x x x x x x x x x x x
CPLEX 12.1 x 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  
DICOPT x x x x x x x x x x x x x  
GUROBI 3.0 x x x x                    
KNITRO 6.0 x x x x 5.2 32bit     x          
LINDOGLOBAL 6.0 x x x x x x x   x         x
LGO x 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 x
MINOS x x x x x x x x x x x x x x
MOSEK 6 x x x x 5.0 5.0 x   x x 3.2      
MPSGE x 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 x
OQNLP x 32bit x 32bit                    
OSL V3 x 32bit x 32bit x 32bit   x     V2 V2    
OSLSE x 32bit x 32bit x 32bit                
PATH x 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 x
SCIP x x x x     x   x x        
SNOPT x x x x x x x x x x x x x x
XA x 32bit x x x 32bit         x   x x
XPRESS 20.00 x x x x x x x x     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.
4)GAMS distribution for Mac PowerPC is 23.3.

GAMS Distribution 23.3 November 1, 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 Wolfgang Britz, Wietse Dol, Daniel T. Fokum, Nuri Gokhan, Iiro Harjunkoski, Josef Kallrath, Lloyd R. Kelly, Kristina Konold, and Uwe Schneider.

GAMS System

GAMS

  • Assigning members to a set using the asterisk is now possible in decreasing order as well. For example, the following are valid set statements in GAMS.
Set years /bc2000*bc1,0*2009/;
Set years /"-20"*"-1"/;

  • The GAMS parameters ProcDir and MaxProcDir can be used to control the generation of process directories. ProcDir=abc will use abc instead of the 225?. The user is responsible to create and remove the directories. %gams.procdir% will now be defined and give you the actual process directory in use. MaxProcDir=100 will extend the usual 225? to 225z, 225aa, 225ab, etc. The defaults will be 26 for MaxProcDir and 225? for ProcDir to make everything work as before.
  • The GAMS parameter RunDir was removed.
  • The Dollar Control Options $hiddencall does the same as $call but makes sure that the statement is neither shown on the log nor the listing file. This is also true in case $ondollar or dp=2 is used. $hiddencall is especially useful in case of an encrypted model that e.g. reads/writes from an password-protected Excel file using gdxxrw password option.

GDXXRW

  • Support of the Excel 2007 file extension xlsm
  • The option password allows to pass down a password to a protect Excel file

Solvers

Baron

  • New libraries: version 9.0
  • Conopt can be used to solve nonlinear subproblems, but on 32bit platforms only (NLPSol=6)
  • More control over common linear subexpressions

Coin-OR

  • CoinScip version 1.2
    • The multi-commodity-flow network cut separator is now used by default
    • Improvements in heuristics, presolving, and branching
  • CoinGlpk version 4.39
  • CoinCouenne version 0.2
    • A separator for disjunctive cuts has been added
  • CoinCplex, CoinGurobi, CoinMosek, CoinXpress
    • These new bare bone solver links come free of charge with the GAMS Base system. General GAMS options (reslim, optcr, nodlim, iterlim) are supported. In addition an option file in the format required by the solver can be provided.
  • CoinOS 2.0
    • The new experimental link to the Optimization Services project allows you to convert instances of GAMS models into the OS instance language (OSiL) format and to let an Optimization Services Server solve your instances remotely.

GUROBI

  • New libraries: version 2.0
  • Simplex performance: The simplex optimizers are much faster in the release. The improvements are most pronounced in the dual simplex method.
  • MIP performance: The MIP solver is significantly faster as well. Part of this is a consequence of the increased speed of the dual simplex optimizer, and part is due to algorithmic improvements in the MIP itself.
  • MIP IIS: You can now compute an Irreducible Inconsistent Subsystem (IIS) for an infeasible MIP model. The previous release could only compute IISs for continuous models.
  • MIP node files: You can now store search tree nodes on disk. This allows you to solve much larger and more difficult MIP models. Use the new NodefileStart parameter to indicate how much memory you would like to devote to nodes before they are written to disk. The performance impact of putting nodes out to disk is typically quite small.

MINOS

MINOS5 (old version of MINOS) was dropped. MINOS5 now is an alias to MINOS (Version 5.51) in order to protect users that hard-coded the use of MINOS5.

MOSEK

  • New libraries: version 6.0
  • Improvement of speed and stability of the interior-point optimizer for linear and conic problems
  • More effective presolve for simplex optimizer with hot starts

XPRESS

  • New libraries: version 20.00
  • Updated licensing: multi-threaded runs and 64-bit versions now included in base license
  • Updated threads option allows specification of cores left free for non-XPRESS work.

In-core communication solver links

  • Lindoglobal supports in-core communication

Model Libraries

GAMS Data Library

  • transxls (74): Solve classical transportation problem in Excel, using vba API (gamsx, opt and gdx)

GAMS EMP Library

  • negishi (21): Pure exchange model solved with EMP, SJM, and CGE

GAMS Model Library

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 23.3    November 1, 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.34
Mac PowerPC
Darwin
Mac Intel32
Darwin
Mac x86_64
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     x
BARON 9.0 x 32bit x 32bit       8.1            
BDMLP x x x x x x x x x x x x x x
COIN x x x x     x   x x x      
CONOPT 3 x x x x x x x x x x x x x x
CPLEX 12.1 x x x x x x x 11.2   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 x
GUROBI 2.0 x x x x                    
KNITRO 6.0 x x x x 5.2 32bit     5.1 x        
LINDOGLOBAL 6.0 x x x x x x     x x        
LGO x 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 x
MINOS x x x x x x x x x x x x x x
MOSEK 6 x x x x 5.0 5.0 x   5.0 x x 3.2    
MPSGE x x x x x x x x x x x x x x
MSNLP x x x x x 32bit     x x x x    
NLPEC x 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 x
SBB x 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 x
XA x 32bit x x x 32bit   x       x   x
XPRESS 20.00 x x x x x x x 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.
4)GAMS distribution for IBM RS-6000 AIX 4.3 is 23.1.

GAMS Distribution 23.2 August 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 Shiro Takeda.

Solvers

Cplex

  • New libraries 12.1
  • Now also available on 64-Bit Intel Mac

LindoGlobal

  • New libraries 6.0.1.299

Solver/Platform Availability Matrix

Solver/Platform availability - 23.2    August 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
Mac x86_64
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 x
COIN x x x x     x   x x x      
CONOPT 3 x x x x x x x x x x x x x x
CPLEX 12.1 x 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 x
GUROBI 1.1 x x x x                    
KNITRO 6.0 x x x x 5.2 32bit     5.1 x        
LINDOGLOBAL 6.0 x x x x x x     x x        
LGO x 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 x
MINOS x 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 x
MSNLP x x x x x 32bit     x x x x    
NLPEC x 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 x
SBB x 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 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 23.1 July 13, 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 Anibal Blanco, Wietse Dol, Arne Drud, Josef Kallrath, Erwin Kalvelagen, Niclas Mattsson, Bruce McCarl, Dominique van der Mensbrugghe, Renger van Nieuwkoop, Stefan Vigerske, and Tongxin Zheng.

New Platform

(64-Bit) Intel Mac

GAMS System

GAMS

Default Upper Bound on Integer Variables

The default upper bound on integer variables has changed from 100 to +INF. Since some solve steps in a GAMS applications may inadvertently depend on the previous default value of 100, a the compatibility option, the GAMS parameter PF4=n, has been introduced to control what values will be passed to the solver. If the GAMS parameter PF4 is not used (a value of PF4=1 is assumed) the solve steps will work as in previous releases.

  • Pf4=0: The new default upper bound of +INF will be passed to the solver.
  • Pf4=1: The value of 100 instead of +INF will be passed to the solver. The solvers will operate as with older GAMS versions. In addition messages will be written to the log and listing to report on the number of integer or semi-integer variables which had the new default bound of +INF reset to 100.
  • PF4=2: The new default values of +INF will be used as with PF4=0. When a solution is returned to GAMS and the level value of an integer variable exceeds the old bound value of 100, a message will be written to the log and listing.
  • PF4=3: The same as PF4=2 with an additional execution error issued if the solution reports a level value greater than 100 for any integer variable with a default bound of +INF.

Setting PF4 values to 2 and 3 is a convenient way to test if the application relies on the previous default bounds of 100. Future releases may use PF4=0 as the default.

An historic note: when GAMS was first introduced, some MIP solvers could only handle binary variable and GAMS applied transformations to simulate integers by using a power expansions. In addition, MIP solvers with integer variables imposed different restrictions on the largest upper bound value. Finally, solvers like DICOPT introduced integer cuts during the solution process, needing some finite upper bound on integer variables. What was once a good choice, turned over time into a source of confusion or resulted in unexpected model behavior.

Default Iteration Limit

The default iteration limit (IterLim) has been increased from 10000 to 2e9. Setting IterLim to INF will not work since it is treated as an integer by GAMS and many solvers. Some solver, e.g. GAMS/Gurobi, recognize 2e9 and set the solver iteration limit to infinity.

Enhanced Profiling Options

In addition to PROFILE=n and PROFILETOL=r, a new GAMS parameter PROFILEFILE=file has been introduced to write profiling information to a text file with some fixed format which can easily be imported into a spreadsheet for further analysis.

          1         -1        0.000 ExecInit
        139         15        0.000 Assignment cnf
        139         13        0.000 Assignment cnf
         .           .         .    .
         .           .         .    .
         .           .         .    .
       3549        432        0.000 Equation   nbal
       3621      39489        0.032 Solve Fini wsisn
       3621         -1        0.062 GAMS Fini
          1         -1        0.000 ExecInit
       3621         -1        0.047 Solve Read wsisn
       3621         -1        0.000 GAMS Fini

A summary report of the ten slowest execution steps will be written to the log and listing.

--- Profile Summary (184 records processed)
     0.062      3621 GAMS Fini
     0.047      3621 Solve Read wsisn
     0.046      3529 Equation   divcnlsea (86)
     0.032      3621 Solve Fini wsisn (39489)
     0.016      3274 Assignment wnr (2502)
     0.016      3447 Equation   cost (15)
     0.016      3475 Equation   laborc (180)
     0.016      3519 Equation   waterbaln (180)
     0.016      3546 Equation   subirrc (84)
     0.015      3030 Assignment gwtsa (273)

The timing on slow data definitions and gdx loads during compilation will be profiled as well.

Macros

Added a line continuation character (\) for macro definitions. See test model macro02.

Other

  • Faster reading of data statements that are not sorted
  • Reduced memory usage for projections
  • GDX handles IEEE special values

GAMS Data Utilities

GDXDIFF
  • Added FldOnly and DiffOnly parameters to write different formats
  • Protection against overwriting an input file
GDXVIEWER
  • Fixed problem with cubed view
GDXXRW
  • Added RWAIT parameter to specify a delay to open Excel to avoid not ready problems
  • Added CheckDate option to regenerate output only if input is more recent than output file

SCENRED2

  • A libinclude file runscenred2 has been added to make the communication with Scenred2 simpler. See example srpchase.

GAMS IDE

  • Changed the interface for dealing with tabs
  • Tabs expanded to spaces will mark the file as modified
  • Added command to select text from current position to a text marker
  • Added checks to see if IDE is visible on the monitor
  • Move and Size are available on TaskBar icon

Documentation

  • Updated McCarl GAMS User's Guide

Solvers

AlphaECP

  • New libraries 1.75.03

Coin-OR

  • New solver CoinCouenne
    • CoinCouenne is a global optimization solver for non-convex mixed integer non-linear programs, similar to the commercial solvers BARON and LindoGlobal. The solver is still in an experimental phase and is hidden in the GAMS system.
  • New libraries
    • Cbc 2.3
    • Glpk 4.37
    • Ipopt 3.6
    • Scip now uses Clp 1.10

EMP

Disjunctive programs can be solved via the following alternative automated reformulations without changes to the model

  • Convex Hull
  • BigM
  • CPLEX indicators

Examples

  • EMP Library sequence (20): Sequencing on a single machine
  • Model Library bilinear (346): Convexification of bilinear term binary times x

GUROBI

New libraries 1.1

KNITRO

New libraries 6.0

  • Introduces MINLP capability: binary and integer variables are supported. Two algorithms are available, a non-linear branch and bound method and an implementation of the hybrid Quesada-Grossman method for convex MINLP. The Knitro MINLP code is designed for convex mixed integer programming and is a heuristic for nonconvex problems.
  • General performance improvements for both the active-set and interior-point/barrier solvers
  • Reorganized options into groups: general, barrier and MINLP.

MOSEK

New libraries 5.0 rev 127

In-core communication solver links

  • Support of COINBONMIND, COINCBCD, COINIPOPTD and LGOD as in-core communication solvers.

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 unnecessary. This can save time if you solve many models in your GAMS program.

Model Libraries

GAMS Data Library

  • Portfolio (68): Determines an efficient frontier in Excel, using the GDX DLL (vba API) and the GAMS executable
  • Sudoku (69): Solve a Sudoku in Excel, using the GDX DLL (vba API) and the GAMS executable
  • Samurai (70): Solve a Samurai Sudoku in Excel, using the GDX DLL (vba API) and the GAMS executable
  • Samurai2 (71): Solve a Samurai Sudoku in Excel, using the GDX and GAMSX DLL (vba API)
  • CHP (72): Optimize combined heat and power generation in Excel, using vba API (gamsx and opt) and GDXXRW
  • CHP2 (73): Optimize combined heat and power generation in Excel, using vba API (gamsx, opt and gdx)

GAMS EMP Library

GAMS Model Library

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 23.1    July 13, 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
Mac x86_64
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 x
COIN x x x x     x   x x x      
CONOPT 3 x 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 x
GUROBI 1.1 x x x x                    
KNITRO 6.0 x x x x 5.2 32bit     5.1 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 x
MILES x 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 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 x
MSNLP x x x x x 32bit     x x x x    
NLPEC x 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 x
SBB x 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 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 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
  • Fix to not limit the size of the block read to 65536 lines

Documentation

  • Updated McCarl GAMS User's Guide

Other

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

  • GAMSBAS: The newer savepoint/loadpoint facility is easier to use and more robust.
  • MPSWRITE: The newer CONVERT utility includes this capability

Model Libraries

GAMS Model Library

  • poutil (342): Portfolio Optimization for Electric Utilities

GAMS Test Library

Solvers

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

  • CONOPT1 (old version of CONOPT). The default CONOPT version, CONOPT 3, will not be dropped.
  • MILESOLD (old version of MILES). The default MILES version will not be dropped.
  • OSL1 and OSL2 (old versions of OSL). The default OSL version will not be dropped.
  • PATHOLD (old version of PATH). The default PATH version will not be dropped.

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

  • CONOPT 2 (old version of CONOPT).
  • DEA

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

  • The primal algorithm has been improved and is now 40% faster on XPRESS' LP benchmark test set and 20% faster on XPRESS' large LP benchmark test set.
  • The dual algorithm has been improved and is now 22% faster on XPRESS' LP benchmark test set and 45% faster on XPRESS' large LP benchmark test set.
  • The MIP performance has been improved and is now 40% faster on XPRESS' MIP benchmark test set
  • Improvements to the Quadratic Primal algorithm to avoid cycling problems

In-core communication solver links

  • Support of GUROBI as an in-core communication solvers.
  • Experimental in-core link MINOSD
  • Enhancements and bug fixes for the in-core communication solver links BDMLPD, CONOPTD, and CPLEXD

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!

  • CONOPT1 and CONOPT 2 (old versions of CONOPT)
  • DEA (capability will be offered by a more general scenario framework)
  • MILESOLD (old version of MILES)
  • MINOS5 (old version of MINOS)
  • OSL1 and OSL2 (old versions of OSL)
  • PATHOLD (old version of PATH)

GAMS System

GAMS

  • GAMS scratch file extension. Starting with distribution 22.9 the default file extension of intermediate files located in the 225? directories is .dat. The scratch extension 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%.
  • GAMS Parameter ETlim (Elapsed Time limit). A GAMS job will terminate if the elapsed time in seconds exceeds the value of ETlim. The job elapsed time is checked before the execution of a $call, execute or solve statement. The system will terminate with a compilation or execution error if the limit (default INF) is reached.
  • GAMS Parameter AppendExpand (short form AE). Allows to control the file opening of the expand file. A value of 0 will open with rewrite, a value of 1, the default, will open with append.
  • New solveopt=clear option. A third option has been added to option solveopt=xxx. The related model attribute <model>.solveopt=n has been adjusted to match the new option values. If the model attribute is set to NA (default), the setting of the corresponding option statement will be used to determine the way solutions values are loaded back into the GAMS data space. The possible values are (the numeric value for the model attribute are given in parenthesis):
    • replace (0) all equations appearing in the model list will be completely replaced by the new model results. Variables are only replaced if they appear in the final model.
    • merge (1) the new model results are merged into the existing structures. This is the default.
    • clear (2) similar to the replace option; in addition, variables appearing in the symbolic equations but squeezed out in the final model, are removed.
  • New solprint=silent option. A third option has been added to option solprint=xxx. The related model attribute <model>.solprint=n and the GAMS parameter solprint=n have been adjusted to match the new option values. If the model attribute is set to NA (default), the setting of the corresponding option statement will be used to control the printing of model generation and solution information. Note that the GAMS parameter initializes the corresponding option statement values. The possible values are (the numeric value for the model attribute are given in parenthesis):
    • off (0) detailed solution output is suppressed.
    • on (1) the most detailed solution output. This is the default.
    • silent (2) all solve related output is suppressed.
  • New model attributes returning elapsed time information of the solution process:
    • ETsolve total elapsed time to execute a solve statement
    • ETsolver elapsed time that can be attributed to the solver only
    • ETalg elapsed time that can be attributed to the core algorithm
  • New suffix for abort.noerror. When using the suffix .noerror with the $abort statement, the error count will NOT be increased. When a save file is written, all remaining unexecuted code will be flushed. This allows effective reuse of the save file.
  • Added a test and error message to see if a restart file has not been closed yet when we try to use the file.

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:

  • A macro is a new GAMS data type and shares the name space of GAMS symbols, like sets, parameters, variables,etc.
  • Instead of using <id> == <body>; to recognize a macro, we use $macro <id> <body> with the $ in position 1.
  • Surrounding parenthesis are not automatically added to the macro body when the macro is expanded.
  • A macro is recognized and expanded anywhere a proper GAMS identifier can be used. This can be suppressed by $onmacro/offmacro.
  • No automatic definition of new aliased sets and their use in controlled index positions. The .local feature has been added to ensure local use and eliminates the need for new alias definitions.
  • No automatic equation definitions for MCP models.
  • The body of the macro is only used during expansion. Hence, the macro definitions are not order dependent.
  • Variables in macro bodies will have an implicit .L when using in assignment statements. This is not a macro expansion feature, but a new GAMS feature that needs to be activated by $onDotL/$offDotL

GAMSIDE

  • The model library open file no longer converts the file name to lowercase
  • The ViewClose command for IDECmds now allows closing for any file
  • Added option to execute command scripts (.cmd files) from the IDE
  • Pressing F3 (search again) after a search/replace will restart the replace dialog
  • Output of the put_utility 'title' option will be shown in the process window

GAMS Data Utilities

CHOLESKY
  • Compute the Cholesky factors of a symmetric positive-definite matrix
EIGENVALUE
  • Compute the eigenvalues of a symmetric matrix
EIGENVECTOR
  • Compute the eigenvalues and eigenvectors of a symmetric matrix
GDXCOPY
  • When we convert a gdx file using the -Replace option, and the file is open in the IDE, the IDE will be signaled to close the file and reopen the file after the conversion is complete.
GDXDUMP
  • Updated documentation.
GDXVIEWER
  • Allow resizing of the column width
GDXDCLIB
  • Reading an aliased set could return too many elements
GDXMERGE
  • Fixed a problem when we specify a list of identifiers

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:

  • Tree construction. Scenred could only reduce existing scenario trees, while scenred2 can create trees from collections of independent scenarios (i.e. from scenario "fans").
  • Visualization. Scenred2 contains new options to create input files for GNUPLOT.
  • Improved metrics. Tree reduction can now be carried out w.r.t. the Fortet-Mourier metric, instead of the upper bounds given by the Monge-Kantorovich metric.

Documentation

  • Updated McCarl GAMS User's Guide

Other

  • Semidefinite Programming Solver CSDP available for Windows, Linux and Macintosh on Intel distributions. Some examples are included in the GAMS Model Library:
  • Additional Lahey Fortan version of all API files does not depend on a C compiler

Model Libraries

GAMS Model Library

  • two3mac (341): Simple 2 x 2 x 2 General Equilibrium Model Using Macros
  • trnssdp (340): Solving the Transportation LP Problem using SDP
  • gqapsdp (339): SDP Convexifications of the Generalized Quadratic Assignment Problem
  • maxcut (338): Goemans/Williamson Randomized Approximation Algorithm for MaxCut

GAMS Test Library

Solvers

Coin-OR

  • New libraries
    • Bonmin 0.100
    • Cbc 2.2
    • Glpk 4.32
    • Ipopt 3.5
  • Scip 1.1
  • Mumps 4.8.3 (used by Ipopt and Bonmin)
  • CoinCbc can now use multiple threads (see new option "threads). This option is available for all platforms other than Windows.
  • Scip supports special ordered set of type 1 and 2 (SOS1 and SOS2). Further, a new heuristic and a new cutting plane separator has been added, the preprocessing has been improved, the Clp interface revised, and bugs were fixed.

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:

  • when CPLEX achieves a specified absolute MIP gap (PolishAfterEpAGap)
  • when CPLEX achieves a specified relative MIP gap (PolishAfterEpGap)
  • when CPLEX finds a specified number of integer solutions (PolishAfterIntSol)
  • when CPLEX processes a specified number of nodes (PolishAfterNode)
  • when CPLEX reaches a specified time limit on time spent in optimization (PolishAfterTime)

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:

  • As an example of how to manage time spent polishing a feasible solution, suppose the user wants to solve a problem by spending 100 seconds in branch & cut and an additional 200 seconds in polishing:
TiLim 300
PolishAfterTime 100
  • Switch to polishing after first feasible solution:
PolishAfterIntSol 1
  • For example, the following procedure applies branch & cut until it reaches a 10% gap. Then it starts solution polishing until it narrows the gap to 2%.
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 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.

GAMS Distribution 22.6   December 24, 2007

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 Anton Eremeev, Michael Ferris, Christian Gilow, Uwe Schneider, Monique Guignard-Spielberg and Stefan Vigerske.

New Platforms

  • Solaris on Sparc64 (64-bit)
  • Mac on Intel (32-bit)

GAMS System

  • Complete detailed GAMS Release Notes
  • Dollar Control Options

  • Additional Licensing Information

  • Put Writing Facility

  • Enhanced Functions on controlling Sets

  • Other Enhancements
    • Unlimited input string length for $call, execute and put_utility exec/shell.
    • The listing file can be redirected to the standard error stream by using the gams parameter ao=3
    • The model attribute .numvarproj was added to count bound projections during model generation. Some minor additions to MODEL STATISTICS and an enhanced column listing help identify potential problems (the variable attribute .infeas could also be used to display potential bound projections)

  • GAMS IDE:
    • GDXviewer supports Excel 2007 format xlsx
    • GDXviewer has an integrated symbol search

  • GAMS Model library: New models
    • Asynchronous Jacobi Methods (jacobi)
    • Dantzig Wolfe Decomposition and Grid Computing (danwolfe)
    • Portfolio Modeling with Parallel Solutions (qmeanvag)
    • Cplex Solution Pool for a Simple Facility Location Problem (solnpool)
    • Mission Planning for Synthetic Aperture Radar Surveillance (swath)
    • TSP tour plotting with LaTeX xy-pic environment (tsp2ltx)
    • Min Cost Flow with an Instance generated by NETGEN (netgen)

  • GDXXRW
    • Supports Excel 2007 format xlsx

  • GDX2HAR/HAR2GDX
    • GAMS distributes and supports utilities for converting HAR (header array) files used by GEMPACK: gdx2har and har2gdx. Details about these utilities can be found at Tom Rutherford's page here.

Solvers

  • AlphaECP:New libraries (version 1.63). AlphaECP can call an NLP solver during the optimization to improve convergence properties for continuous variables.

  • BARON:New libraries (version 8.1.1). XPRESS is available as a subsolver for LPs (option "lpsol=7"). Identification of common linear subexpressions in nonlinear functions that speeds up BARON's parsing time considerably for certain problems.

  • COIN-OR Solvers:New solver libraries of CBC/CLP (2.0), GLPK (4.22), IPOPT (3.3), BONMIN (0.9). The GAMS/CoinCBC link has been completely rewritten so that it offers the performance of the CBC standalone version. Many new options have been added. The GAMS/CoinGLPK link uses now the advanced B&B solver of GLPK. Support of Solaris 64bit Intel platform (SIG) and MacOS on Intel chips (DII).

  • CPLEX:New libraries (11.0). There are quite a few changes in Cplex 11 and the GAMS/CPLEX interface. Please check the detailed GAMS/CPLEX 11 release notes. The major enhancements are:
    • Improved Mixed Integer Programming (MIP) Performance
    • Enhanced Parallel MIP
    • Multiple MIP Solutions
    • Performance Tuning tool

  • LINDOGLOBAL:New libraries (version 5.0.1.183). Support of Solaris Sparc64 platform (SOX) and Intel Mac (DII).

  • MOSEK:New libraries (version 5.0.0.62). Support of Solaris Sparc64 platform (SOX) and MacOS on Intel chips (DII).

  • XPRESS:New libraries (version 18.00)

Solver/Platform availability - 22.6    December 24, 2007
  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 32bit 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.

GAMS Distribution 22.5   June 1, 2007

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 Christian Gilow and Josef Kallrath.

GAMS System

  • New functions and features
    • Added functions system.gamsrelease and gamsrelease
    • Added function poly(x,a0,a1,a2,a3..) = sum(i=0 to n, ai*x^i)
    • Appendout (ao)=2 will redirect the listing file to stdout. This feature is not available when running under the IDE.

  • GAMS IDE:
    • Open in new window creates now a single new window when multiple files have been selected
    • Spelling menu entry added to Edit menu
    • Gdxviewer can write a single symbol and all symbols to an Excel file

  • GAMS Model library: New models
    • eps-Constraint Method for Multiobjective Optimization (epscm)
    • Kissing Number Problem using Variable Neighborhood Search (knp)
    • Termination routine to ensure solvers stay with resource limit (schulz)
    • How to test for a GAMS version (version1)

Solvers

  • AlphaECP: A new solver called GAMS/AlphaECP for mixed integer non-linear problems has been added to the GAMS solver portfolio. AlphaECP is an implementation of the Extended Cutting Plane method by Tapio Westerlund and Toni Lastusilta from Abo Akademi University, Finland. The GAMS/AlphaECP solver requires the presence of a licensed MIP solver only.

  • BARON: New libraries (version 7.8) with improved local search routines.

  • COIN-OR Solvers: New libraries for CoinCbc, CoinGlpk, and CoinIpOpt. The experimental MINLP solver CoinBonmin has been introduced for the GAMS Windows and Linux systems. Bonmin (Basic Open-source Nonlinear Mixed INteger programming) provides an implementation of an NLP-based branch-and-bound algorithm, an outer-approximation decomposition algorithm, an implementation of Quesada and Grossmann's branch-and-cut algorithm, and a hybrid outer-approximation based branch-and-cut algorithm.

  • CONOPT: New libraries (version 3.14r).

  • CONVERT:
    • Added option 'NLP2MCP' that reformulates a non-integer program as a mixed complementarity problem (MCP)
    • Added option 'AmplNLC' that converts a model into C code for evaluating objectives, constraints, and their derivatives.
    • Added option 'Jacobian' that creates a GDX file containing the basic model data (matrix, initial point, evaluation of constraints at initial point and bounds)
    • Added option 'LindoMPI' that creates an MPI file which is readable by Lindo.

  • CPLEX: New libraries (version 10.20).

  • LINDOGLOBAL: The Global Optimization Solver (GAMS solver name is LINDOGLOBAL) from Lindo Systems, Inc. has been added to the GAMS solver portfolio. LINDOGLOBAL finds proven optimal solutions to non-convex mixed integer non-linear problems. The LINDOGLOBAL solver requires a license for GAMS/CONOPT. The size of a model solved by LINDOGLOBAL is limited to 2,000 equations and 3,000 variables.

  • MOSEK: New libraries (version 4.0.0.60)

  • XPRESS: New libraries (version 17.10.12)

Solver/Platform availability - 22.5    June 1, 2007
  x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
Sun Intel
SOLARIS
HP 9000
HP-UX 111
DEC Alpha
Digital Unix 4.0
IBM RS-6000
AIX 4.3
Mac PowerPC
Darwin
ALPHAECP x x x x x x   x x x
BARON 7.8 x 32bit x 32bit         x  
BDMLP x x x x x x x x x x
COIN x 32bit x x           x
CONOPT 3 x x x x x x x x x x
CPLEX 10.2 x x x x x x 10.0 8.1 x  
DECIS x x x x x x x x x  
DICOPT x x x x x x x x x x
KNITRO 5.1 x 32bit x x           x
LINDOGLOBAL 4.1 x x x x x         x
LGO x x x x x x x x   x
MILES x x x x x x x x x x
MINOS x x x x x x x x x x
MOSEK 4 x x x x x   3.2     x
MPSGE x x x x x x x x x x
MSNLP x x x x x x x     x
NLPEC x x x x x x x x x x
OQNLP x 32bit x 32bit            
OSL V3 x 32bit x 32bit x x V2   x  
OSLSE x 32bit x 32bit x       x  
PATH x x x x x x x x x x
SBB x x x x x x x x x x
SNOPT x x x x x x x x x x
XA x 32bit x x x   x x x  
XPRESS 17.10 x 32bit x 32bit x   16.10   x  
1)GAMS distribution for HP 9000/HP-UX is 22.1.
2)GAMS distribution for SGI IRIX is 22.3.

GAMS Distribution 22.4   Feb 14, 2007

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 Michael Ferris, Gary Goldstein, and Randy Wigle.

GAMS System

  • Compressed and Encrypted Input Files: Facilities to create and use encrypted and compressed input files have been added. The three new commands: $compress, $decompress and $encrypt are the respective utilities. For more details consult the User's Guide (Appendix I).

  • NonNegative Variable: This new keyword is a synonym for Positive Variable.

  • GAMS IDE:
    • Added spelling checker
    • Added search options for gdxviewer

  • GAMS model library: new models (cefiles, encrypt) demonstrate the new GAMS feature of compressing and encrypting GAMS input files.

  • TESTLIB library: new models to test new features

Solvers

  • COIN: new libraries and solver from the GAMSlinks project hosted at COIN-OR.
    • CoinGlpk: New COIN-OR and Glpk 4.9 libraries.
    • CoinCbc: New COIN-OR and Cbc 1.1.0 libraries.
    • CoinIpopt: A new interior point NLP solver from COIN-OR.
    • The GAMSlinks project (announced January 3 by Stefan Vigerske) was created to develop links between GAMS and the COIN-OR solvers.

  • CPLEX: New libraries (version 10.1.1).

  • KNITRO: New libraries (version 5.1).

  • MOSEK: New libraries (version 4.0.0.59)

  • XPRESS: New libraries (version 17.10.08)

GAMS Distribution 22.3   November 27, 2006

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, Michael Ferris, Josef Kallrath, Antti Lehtila, Scott Malcolm, and Renger van Nieuwkoop.

GAMS System

  • GAMS Grid Facility: The GAMS language has been extended to take advantage of systems with multiple CPUs and High Performance Computing Grids. New language features facilitate the management of asynchronous submission and collection of model solution tasks in a platform independent fashion. A simple architecture, relying on existing operating system functionality allows for rapid introduction of new environments and provides for an open research architecture. For details please consult our web site at: www.gams.com/docs/gridcomputing.htm

  • $LoadDC: Enhanced $load with domain checking. Any domain violations will be reported and flagged as compilation errors. In contrast, $Load ignores all domain violations and loads only data that meets the domain restrictions.

  • A new GAMS parameter, WorkSpace allows initializing all modelname.workspace attributes.

  • New functions:
    • arccos, arcsin, tan
    • arctan2(y,x): 4-quadrant arctan function, like the atan2(y,x) in the C math library or Matlab, or Mathematica's ArcTan[x,y]
    • binomial(x,y): generalized binomial function, like Mathematica's Binomial[x,y]
    • GamsVersion: returns the current gams version, for example 146 for this release
    • HeapFree: free GAMS heap space in Mbytes
    • HandleStatus, HandleDelete, HandleSubmit, HandleCollect: Grid facility functions, see the grid facility document for details
    • Sleep(sec): suspends GAMS execution for sec seconds, where sec has millisecond resolution.

  • GAMS solvers and other processes now inherit their priority from GAMS/Base or GAMSIDE: this is useful on heavily loaded machines where you want GAMS to run with below-normal priority.

  • GAMS IDE:
    • Removed size limit for the capacity of the clipboard for .lst viewer
    • Added a shape graph type (rectangle and ellipse) and multi-line parametric graph type
    • Added more context menus
    • Option to open .lst file in editor
    • Switching tabs or switching application will check for files that changed
    • When gamside.ini is not found in the 'My Documents\gamsdir' directory, new directories and an initial project will be created. The IDE will start maximized, and the edit window and process window position and size are initialized.
    • Added a GUI editor for solver option files. The editor also provides access to the solver specific help file.
    • When searching for text in files (Find in Files) the search window remains open to make switching between editor and search results faster.

  • File Compression:
    • Every program creating a GDX file (e.g. gdxxrw or gams) will look at the environment variable GDXCOMPRESS; if value is not zero, data will be written compressed.
    • Compressed workfiles can be created with parameter xsave.
    • Decompression of GDX or workfiles is handled automatically.
    • GDX and workfiles can exceed 2GB in size.
    • The new utility gdxcopy allows conversion between different formats. For example, a compressed GDX file can be converted so it is understood by older GAMS systems. Of course, all file formats (GDX and workfile) can be read by a current GAMS system.

  • GDXMERGE:
    • Added ability to process named identifiers only (id=id1, id=id2)
    • Added ability to process very large symbols separately by specifying a memory threshold to avoid memory issues.

  • GDXXRW: String explanatory text for sets is now quoted. (Text starting with '=' created problems.)

  • TESTLIB library: 66 new models, including
    • New solver-specific models/suites: 24 models, 21 suites
    • Tests for new intrinsic functions and utilities

Solvers

  • The processing of solver option files has been centralized/standardized. This allows for a uniform way of documenting and working with solver and options. The GAMS IDE provides a utility for visual processing of options.

  • BARON: New libraries (version 7.7) with improved range reduction for monomial functions.

  • CONOPT: New libraries (version 3.14q) with some minor bug fixes and performance improvements.

  • CPLEX: New libraries (version 10.1) with increased performance when solving models with indicator constraints.

  • KNITRO: New libraries (version 5.0) with improved efficiency and robustness, especially in the active-set algorithm.

  • MOSEK: New libraries (version 4.0)
    • There is a parallel extension (option MSK_IPAR_INTPNT_NUM_THREADS) for the interior solver. Moreover, it is possible to solve a problem concurrently with several of MOSEK's algorithms. The parallel extension comes free of charge.
    • Warm start capability for the mixed integer optimizer (option MSK_IPAR_MIO_CONSTRUCT_SOL) has been added.
    • A dual simplex optimizer has been added and the overall performance of the Simplex optimizers has been significantly improved. Moreover, an automatic (and transparent) dualizer has been added to the simplex optimizers.
    • The presolve has been improved especially for large stochastic optimization problems.

  • PATH: New libraries (version 4.6.07) with some minor bug fixes and performance improvements.

  • SNOPT: New libraries (version 7.2-4) with some minor bug fixes and performance improvements.

  • XA: New libraries (version 15.07) with improved presolve and new MIP heuristics.

  • XPRESS: New libraries (version 17.10)
    • GAMS/XPRESS now supports multiple threads for MIP and Barrier runs.
    • New option (loadmipsol) supports passing an integer feasible point to the MIP solver.
    • Improved factorization speed - yields faster primal and dual algorithms.
    • Improved MIP performance (via presolve and heuristics, e.g.)

Solver/Platform availability - 22.3    November 27, 2006
  x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
HP 90001
HP-UX 11
DEC Alpha
Digital Unix 4.0
IBM RS-6000
AIX 4.3
SGI
IRIX
Mac PowerPC
Darwin
BARON 7.7 x 32bit x 32bit       x    
BDMLP x x x x x x x x x x
COIN x x x x           x
CONOPT 3 x x x x x x x x x x
CPLEX 10.1 x x x x x 10.0 8.1 x 9.1  
DECIS x x x x x x x x x  
DICOPT x x x x x x x x x x
KNITRO 5.0 x 32bit x x           x
LGO x x x x x x x   x x
MILES x x x x x x x x x x
MINOS x x x x x x x x x x
MOSEK 4 x x x x x 3.2       x
MPSGE x x x x x x x x x x
MSNLP x x x x x x     x x
NLPEC x x x x x x x x x x
OQNLP x 32bit x 32bit            
OSL V3 x 32bit x 32bit x V2   x V2  
OSLSE x 32bit x 32bit x     x    
PATH x x x x x x x x x x
SBB x x x x x x x x x x
SNOPT x x x x x x x x x x
XA x 32bit x x x x x x    
XPRESS 17.10 x 32bit x 32bit x 16.10   x    
1)GAMS distribution for HP 9000/HP-UX is 22.1.

Distribution 22.2   Apr 21, 2006

Distribution 22.2 is a maintenance release to correct some performance issues in the GAMS system and include newly available solver libraries.

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 (Bonn University), Paritosh Desai (DemandTec), Michael Ferris (UW-Madison), Edgar Ramirez (at hotmail.com), and Rich Roberts (SRS Technologies).

GAMS System

  • The limit on nonlinear instructions in a single block has been raised from 16 million to 64 million instructions.
  • Performance improvements for very large and complicated loop structures.
  • International characters in file and path names are now handled correctly.
  • GAMS IDE:
    • GDX data browser is faster and can sort indices by name vs. entry order
    • A symbol shown in the GDX data browser can be written to an Excel file

Solvers

  • CONOPT: New libraries are included which address minor fixes.

  • CPLEX: New libraries (version 10.0.1, a maintenance release)

  • LGO: New libraries
    • The built-in stochastic searches have been improved.
    • Some internal limits were increased to allow larger models to be solved.

Distribution 22.1   Mar 15, 2006

GAMS System

  • Relaxation of discrete variables (.prior=Inf):

    The priority attribute of a discrete variable can be used to relax a specific variable instance. The priority attribute .prior establishes in what order variables are to be fixed to integral values while searching for a solution. Variables with a specific .prior value will remain relaxed until all variables with a lower .prior values have been fixed. Setting the .prior value to +inf will relax this variable permanently. This relaxation is done independent of the model attribute .prioropt.

    This feature is useful in solving difficult discrete models. The Model Library model "Linear Recursive Sequence Optimization Model" (lrs.gms) illustrates the use of this feature that specifies that only the first n variables of k are binary, whereas the remaining ones are fractional. This is simply expressed as follows:

     SET t time horizon /1*350/, f(t) first N steps /1*48/;
    Binary Variable k(t);
    ...
    k.prior(t) = inf; k.prior(f) = 1;
  • Derived Variable and Equation Attributes (.slacklo,.slackup,.slack,.infeas):

    Calculations involving slacks and infeasibilities have been simplified with four new derived attributes. These attributes are defined on equations and variables as follows:

     x.slacklo = max(x.l-x.lo,0);
    x.slackup = max(x.up-x.l,0);
    x.slack = min(x.slacklo,x.slackup);
    x.infeas = - min(x.l-x.lo,x.lu-x.l,0);
    Note that the slacks or infeasibilities will always be zero or positive.

  • Enhanced Model List:

    The entries of a model list can now contain previously defined models. For example:

     Model one / e1,e2,e3 /
    two / one, e4 /
    three / two, e5 /;
    The model two will now contain equations e1,e2,e3,e4. The model three will contain all of model two plus equation e5.

  • New model type: RMPEC: The model type MPEC now allows discrete variables. The Relaxed Mathematical Program with Equilibrium Constraints (RMPEC) model relaxes the discrete variables as with RMIP and MIP models.

  • Enhanced $IF/IFI statement: A check for the existence of a directory has been added to the $if statement.
     $IF DEXIST directory command
    $IFI DEXIST directory command
  • GDX Utilities:
    • GDXDIFF: When a key value pair exists in one file and not in the other we use Eps to determine if the difference should be reported.
    • GDXDUMP: All unique elements in the output are now quoted to avoid problems with reserved words etc.
    • GDXMERGE: New options introduced to merge only specified identifiers, to merge very large data sets, and to read parameters from a file (@filename).
    • GDXXRW: Fixed problem with merging when only the top-left corner of the range was specified.

  • GAMS IDE:
    • Added a viewer for lst files. In contrast to the editor, this viewer does not load the complete file in memory.
    • Added a navigation tree for the lst file.
    • Added the option to generate charts using a gdx file.
    • All viewers, except the process window, are now organized as tabbed windows.
    • The gdxviewer remembers that last symbol viewed for a gdx file and will select the symbol when opening the file.
    • Expanded format for library file to use other entries in the library.

  • GAMS model library: new models
    • IDE charting facility (chartdat)
    • Cplex option feasopt (feasopt1)

  • TESTLIB library: new models
    • Tests for new GAMS intrinsic functions NCPVu***
    • Tests for GDXdiff utility
  • McCarl GAMS User's Guide
    • Extensive internal changes to allow better distribution formats
    • Now distributed as a single .chm file and a single .pdf file with fully linked topics

Solvers

  • BARON
    • XA can now be used as an LP solver inside BARON.
    • For the LP solvers Cplex and XA the user can specify the LP algorithm (primal/dual simplex, barrier) using the BARON option lpalg.
    • The user can control BARON's node selection scheme with the option nodesel. Available strategies include best bounds, DFS, minimum infeasibilities, and BARON's own mix.

  • CONOPT: New libraries (version 3.140)
    • The scaling method has been improved to work better with models with small levels and large derivatives (e.g. sqrt(x) for x close to 0).
    • Minor problems with previous versions corrected.

  • CPLEX: New libraries (version 10.0)
    • Dropped Platforms: ILOG dropped support for CPLEX 10.0 on the SGI platforms. Also support for Linux with glibc2.2 was dropped but will hopefully be available when GAMS 22.1 will be released. GAMS 22.1 for dropped platforms ships older versions of CPLEX.
    • Solution Polishing: Solution Polishing is appropriate for finding the best solutions to complex and difficult MIP models within a specified time. Solution Polishing is used to improve the best solution at the end of the branch-and-cut process if optimality has not been proven.
    • MIP Starts: The advanced restart capabilities of CPLEX have been improved to utilize initial solutions, partial solutions and partially correct solutions. If the user specifies values for only a portion of the discrete variables, CPLEX 10.0 will attempt to fill in the missing values or correct the wrong values in a way that leads to an integer-feasible solution, potentially reducing the time to solve the problem.
    • Infeasibility analysis tool: CPLEX provides an automatic approach to find the best feasible alternative to an infeasible model. This approach is turned on by an option called FeasOpt (for feasible optimization). With the FeasOpt option CPLEX accepts an infeasible model and selectively relaxes the bounds and constraints in a way that minimizes a weighted penalty function. In essence, the feasible relaxation tries to suggest the least change that would achieve feasibility. It returns an infeasible solution to GAMS and marks the relaxations of bounds and constraints with the INFES marker in the solution section.
    • For details check the GAMS/CPLEX 10 Release Notes.

  • DICOPT
    • New option infeasder: It allows for linearization of infeasible NLP subproblems.

  • Examiner
    • Default behavior changed: if no action is chosen, Examiner prints a warning message and defaults to "examineInitPoint yes"
    • Adjusted to handle new RMPEC model type. Currently MPEC models are not allowed.
    • Report format for examination of points changed:
      • better labeling of the point being examined - consistent with the naming scheme and options used to choose the examination
      • use GAMS notation (e.g. x.l(seattle,topeka), f.m(supply)) to specify rows/columns
      • add option 'showSlacks' to print slacks/differences explicitly when the difference is small compared to the values themselves

  • XPRESS: New libraries (version 16.10.03)
    • The dual pricing algorithm has been improved. For some difficult LP problems this has resulted in an order of magnitude speed improvement.
    • The speed and stability of the simplex factorization has been improved.
    • The barrier algorithm now requires less memory.
    • The cut generation has been improved.

GAMS Distribution 22.0   August 1, 2005

New platforms supported

  • 64 bit Windows (aka Windows 64-Extended, Windows EM64T) version introduced. Windows licensing includes both 32 and 64 bit systems at a single platform cost. Some solvers exist only in 32 bit mode and are included as such on the 64 bit version. See the solver platform matrix.

Updated build for the Linux platform

  • Previous 32-bit Linux GAMS Distributions (e.g. 21.X) were built using only an older Linux machine with version 2.2 of the GNU C Library. This distribution is compatible with both older and newer Linux systems. The installer for this software is located in the systems/lnx/lnx2.2 directory of the CD. The build code for this software is LXI (displayed on the solver audit lines, etc). This build is included in the current CD as it was before.
  • This distribution includes a new 32-bit Linux build (build code LX3) that parallels the previously-existing LXI build. The LX3 system is built on a newer Linux machine with version 2.3 of the GNU C Library, and is not compatible with older systems using GNU LIBC 2.2. The installer for this software is located in the systems/lnx/lnx2.3 directory of the CD.
  • Consider the following when choosing which Linux build to install:
    • Most Linux users will be using a system with GNU LIBC 2.3 and should use the newer build. You can check your LIBC version by running it. On my machine, I do "/lib/libc.so.6" but be aware your version number may vary.
    • These are builds of the same source, using different compilers. The "older" build uses older compilers, not older source. In cases where different vendor libraries are required, the same comment applies.
    • The different builds use a common GAMS license file.
    • While there is no scheduled end-of-life for the older build we expect that our algorithm vendors will stop supporting it at some point. When this happens, we can only ship updated versions of the new build.
    • If you wish to install both versions, install them in separate directories.

GAMS System

  • GDX Utilities:
    • GDXDIFF: Modified the comparison routine that determines if two numbers are equal wrt. an absolute or relative tolerance.

  • GAMS IDE:
    • Added option to save a file in Unix format.
    • Added option to save and email the current file.
    • Added option to launch Windows Explorer showing directory of the current file with the current file selected.
    • gamsdir is now a sub-directory of 'My documents'. gamside.ini file now stored in the gamsdir directory.
    • Reload file now also works for GDX files and RefFiles (in addition to regular source files).
    • When starting the IDE or opening a project, a scan is made for GAMS temporary directories which can be deleted. This option was also added under the Utilities menu.
    • Pressing F1 for help was broken.
    • $ONECHO/$OFFECHO work now like $OFFTEXT/$ONTEXT for syntax coloring.

Solvers

  • CPLEX: New libraries (version 9.1)
    • Option mipstart: It is no longer necessary to provide a compete integer solution as the starting point.
    • Option fraccuts: Settings of 1 or 2 will cause Gomory cuts to be generated for MIQCP models.
    • New Option lbheur: When set to 1 (default is 0), CPLEX will use a local branching heuristic to try to improve new incumbents.

  • KNITRO: New libraries are included which address minor fixes.

  • XA: New libraries are included which address minor fixes.

  • XPRESS: New libraries are included which address minor fixes.

Distribution 21.7   April 1, 2005

Acknowledgements

We would like to thank all of the users who have reported bugs or made suggestions in improving this release.

New platforms supported

  • 64 bit x86_64 (Linux) version introduced. Linux licensing includes both 32 and 64 bit at a single platform cost. Some solvers exist only in 32 bit mode and are included as 32 bit on the 64 bit version. See the solver platform matrix below.

  • Macintosh PowerPC (Darwin) version introduced.
See our sales page for available solvers by platform.

GAMS System

  • MODEL LIBRARY:

  • NEW WORKFILE FORMAT:
    • now a single file (G00 file extension). Files can be read that were created on different platforms. File is packed and only approx 50% of previous file size. Read and write is also substantially quicker.

  • TESTLIB LIBRARY:
    • Updates to quality model
      • take advantage of solver updates & fixes
      • added --QUICK=1 option to skip slow tests
      • test all solvers, using system.solverNames and filter list
      • allow skips of models in solver-specific test suites
    • New models
      • convert solver test suite
      • new cmex & MIP tests, test new workfile format save/restart
      See the testlib library for details.

Solvers

  • BARON: New libraries (version 7.2.5) which address minor bug fixes and enhancements.

  • BENCH: promoted from beta solver.

  • GAMS/AMPL Link: a GAMS/AMPL link has been introduced.

  • GAMS/LINGO Link: a GAMS/LINGO link has been introduced.

  • MOSEK: New libraries (version 3.2) which address minor bug fixes and enhancements.

  • NLPEC:
    • Relaxed the test for complementarity of the solution proposed by the reformulated model to work better for poorly-scaled models

  • XA:
    • update to documentation (nodelimit, log output)
    • numerous library updates to fix outstanding issues
    • improved handling of solver status 4=TERMINATED BY SOLVER

  • XPRESS:
    • deal with "recoverable errors" on return from barrier method
    • minor improvements and workarounds for library quirks in link

Solver/Platform availability - 21.7
  Intel
MS Windows
x86_64
Linux
Intel
Linux
Sun Sparc
SOLARIS
HP 9000
HP-UX 11
DEC Alpha
Digital Unix 4.0
IBM RS-6000
AIX 4.3
SGI
IRIX
Mac PowerPC
Darwin
BARON 7.2 32bit          
BDMLP
COIN          
CONOPT 3
CPLEX 9.0 8.1  
DECIS  
DICOPT
KNITRO 4.0 32bit            
LGO  
MILES
MINOS
MOSEK 3.2      
MPSGE
MSNLP    
OQNLP 32bit            
OSL V3 32bit V2   V2  
OSLSE 32bit        
PATH
SBB
SNOPT
XA 32bit    
XPRESS 15.25 32bit 15.20   15.20    


Distribution 21.6   January 26, 2005

Distribution 21.6 is a maintenance release to include newly available solver libraries.

Acknowledgments

We would like to thank all of the users, particularly Josef Kallrath, who have reported bugs or made suggestions in improving this release.

Solvers

  • BARON: New libraries are included. Several new features which are documented in the BARON solver manual.

  • CONVERT:
    • New model instance format CoinFML, Coin style XML model file.
    • LINGO format updated to include Version 9 features

  • COIN:
    • CoinGlpk: New COIN and GlpK 4.7 libraries.
    • CoinSbb: This is now called CoinCbc (Coin Branch & Cut). The name CoinSbb will remain for this and the next distribution.
    • Three new cuts classes: Clique, Flow Cover, Mixed Integer Rounding and all new libraries.

  • KNITRO: New libraries are included which address minor fixes.

  • XPRESS: New libraries are included which address minor fixes.

GAMS System

  • Model Library:
    • licememo: Generate your own license memorandum and solver matrix with this model.
    • deploy: Generate a minimal deployment GAMS system with necessary components only.

  • Testlib: 26 new quality assurance tests have been added to the suite.

  • Minor enhancements:
    • $onecho and $onput have new variants to specify verbatim or substitutions. The new names are: $onechoV, $onechoS, $onputV, $onputS.
    • Manipulation of system environment variables and prefixing of the search path:
       $SetEnv name value
      $DropEnv name
      $PrefixPath value

      %SysEnv.name%

      $if SetEnv name

  • fml2gms: converts a CoinFML style XML file into GAMS (courtesy of Leo Lopes, University of Arizona). An example showing how to convert from GAMS to CoinFML format and back to GAMS is shown below:
     > gamslib trnsport
    > echo coinfml > convert.opt
    > gams trnsport optfile=1 lp=convert
    > fml2gms coinfml.xml
    > gams fml2gms.gms

Documentation

  • Bruce McCarl User's Guide:
    • accessing the guide through the GAMS/IDE, will now launch the PDF file directly instead of through a web browser. This is due to possible incompatibility issues with Windows XP Service Pack 2 (securtiy settings). To launch via the web, users can go to File > Options and check the box "Launch docs using Explorer."

Distribution 21.5   November 11, 2004

Distribution 21.5 is a maintenance release to include newly available solver libraries and minor enhancements in the GAMS system, as well as introduce the interior-point NLP solver KNITRO from Ziena Optimization.

Acknowledgements

We would like to thank all of the users who have reported bugs or made suggestions in improving this release, especially Richard Roberts for catching an IDE bug.

Solvers

  • CONOPT
    • New libraries (14e) are included which address minor fixes.

  • CPLEX
    • New libraries (9.0.2) are included which address minor fixes.

  • KNITRO
    • New interior-point nonlinear programming solver added to the GAMS NLP solver portfolio.

  • MOSEK
    • New libraries (3.1) are included which address minor fixes.

  • XA
    • New libraries are included which address minor fixes.

  • XPRESS
    • New libraries are included which address minor fixes.

GAMS System

  • Model Library
    • A model showing a successive recalibration algorithm for solving general equilibrium models has been added (decomphh.gms).
    • A model illustrating numerical integration using trapezoidal approximations for Herves (transposable element) activity calculations is included (herves.gms).

  • Testlib
    • 27 new quality check models have been added. See the Testlib page for details.

  • New functions:
    • sinh, cosh, tanh

  • $ Dollar control options:
    • $on/offVerbatim
      • The $on/offVerbatim commands are used in conjunction with the GAMS parameter DUMPOPT to suppress the input preprocessing for input lines that are copied to the dmp file. This feature is mainly used to maintain different versions of related models in a central environment.

        The $on/offVerbatim commands are only recognized for DUMPOPT >= 10 and apply only to lines in the file the commands appeared.

        The use of $goto and $on/offVerbatim are incompatible and may produce unexpected results.

    • $on/offPut
      • This option simplifies the writing of put statements that copy text. Previously, to copy text into a put file one may have to write many lines similar to the ones below:

        put 'text A with a double quote "' "text A with a single quote '" /
        put 'text B with a double quote "' "text B with a single quote '" /
        put 'text C with a double quote "' "text C with a single quote '" /

        This may be cumbersome. The use of $on/offPut will result in the same text written to the put file without having to specify the 'put' explicitly for each line and allows you to specify mixed quotes in a single statement. Consider the following example:

         
        file fx;
        put fx 'text with " and ' "' required a split of the text" /
        $onput
        With the new on/off put we can freely
        mix and match ' and " characters.
        $offput
        ;

        It also works outside of the put statement:

        $onput
        It even works outisde the put statement,
        as long as a put file is assigned.
        $offput
    • $setDDlist
      • This statement catches misspelled 'double dash' GAMS parameters. For example, in the program below (ein.gms), the only 'double dash' options are 'one', 'two', 'three' and 'four' (note the use of the string macro for %two% automatically makes it part of the allowed list of double dash parameters):

        $if NOT set one $set one default value
        display '%two%';
        $setddlist three four

        The following GAMS invocation will cause an error since --five is not a valid 'double dash' option.

        > gams ein.gms --two=twovalue --five=20

        1 Display 'twovalue'
        **** --five=20

        3 $setddlist three four $620

  • Other new features:
    • alias(*,u1,u2,..)
      • The universe is assumed to be ordered and ordered operators like lag, leads and ORD can be applied.
    • Faster execution of GAMS statements using set(s) containing a single element.
    • SortedUels(*,*)
      • A new predefined tuple to report sets in sorted order. For example, to write in sorted order:
        >
        alias(*,u);
        loop(SortedUels(u,i),
        put / i.tl i.te(i) );

Distribution 21.4   September 6, 2004

Acknowledgements

We would like to thank all of the users who have reported bugs or made suggestions in improving this release.

GAMS System

  • Model Library
    • The model library keeps on growing! A model that implements a column generation scheme for the cutting stock problem (cutstock) has been added. There are two examples that demonstrate the multiple solution feature in BARON (mhw4dxx and bchfcnet).
    • The model library also has the new category "GAMS Tools". Models in this category show how to use tools designed to help modelers in their daily work. Three models (awkqap, seders, and awktsp) demonstrate the routine process to take a raw file from a web site and manipulate the text file into a format suitable to be read by GAMS using Unix-style tools SED & AWK.
    • Five new models (mingamma, quantum, procmean, mlbeta, and mlgamma) have been added to demonstrate the new statistical functions (discussed below).

  • Testlib
    • 33 new models were added to the test library.
    • Addition of solver-specific test suites. The models in a test suite are run not for all solvers but for the set of solvers associated with that particular suite.
    • Most of the new models test features in GAMS/Base.
    • A series of new models tests MCP syntax and matching rules.

  • Windows Setup.exe
    • A new Windows setup.exe installation program for GAMS is used adding new functionality and a more user friendly interface.
    • The McCarl GAMS User Guide is now part of the Windows installation (for UNIX platforms this must still be installed manually).

  • GDX Utilities:
    • GDXrank, a standalone sorting utility for GDX files, is now part of the distribution (all platforms)
    • A wrapper for GDXrank, called rank.gms, written by Tom Rutherford, is included with the distribution and can be called using the $LIBINCLUDE directive.

  • GAMS IDE
    • The IDE recognizes https as www string
    • The menu Help | About shows current license file
    • If there is a GAMS license file on the ClipBoard, selecting Help | About will prompt to write the ClipBoard to a license file.
    • Library files can now have multiple files with a numeric extension; previously,it was the first file only.
    • A library file can have have an extension of '.ignore' which will be removed so we can protect '.zip' files.
    • After running gdxdiff, an empty difference file will not be shown.

  • Additional functions:
    • gMilliSec(DayTime): milli seconds of a DayTime number
    • MaxExecError: a read/write access to the ExecError values
    • TimeElapsed: elapsed time in seconds since the start of a GAMS run
    • Gamma(a): Gamma function (DNLP)
    • LogGamma(a): Log Gamma function
    • GammaReg(x,a): Regularized gamma function
    • Beta(a,b): Beta function (DNLP)
    • LogBeta(a,b): Log Beta function
    • BetaReg(x,a,b): Regularized Beta function

      The definitions and notation for incomplete and regularized gamma and beta functions are not consistent, For example, note the differences with the definitions used in Mathematica:

       GAMS Mathematica

      Gamma(a) Gamma[a]
      LogGamma(a) LogGamma[a]
      GammaReg(x,a) GammaRegularized[a,0,x]
      Beta(a,b) Beta[a,b]
      LogBeta(a,b) Log[Beta[a,b]]
      BetaReg(x,a,b) BetaRegularized[x,a,b]
  • Speed-up for expressions containing constant indices or indices that are not in the natural order
    • The option sys11 controls this new feature. When we use option sys11=1, GAMS will execute without speedup features as in previous versions; using option sys11=0 will cause GAMS to use procedures that execute some statements faster at the cost of increased memory use (This is now the default value). The following GAMS code illustrates some of the speedups.
       
      Sets i / i1*i700 /
      j / j1*j700 /
      k / k1*k500 /
      ik(i,k);

      Parameters aij(i,j) bji(j,i), cjk(j,k), dij(i,j);

      ik(i,k)$(uniform(0,1) < 0.01) = yes;
      aij(i,j) = uniform(0,1);

      bji(j,i) = aij(i,j);

      cjk(j,k) = sum(ik(i,k), aij(i,j));
      dij(i,j) $(aij(i,'j700') > 0.5) = bji(j, 'i700')
      A comparison of the execution times in seconds:
       Assignment sys11=1 sys11=0
      Bji 2.7 0.36
      Cjk 25.0 2.38
      Dij 4.7 0.39
    • Faster execution of lag / lead operators. This improvement is visible for large sets only as illustrated in the following GAMS code:
       Set i /i1*i2000/,
      j /j1*j20000/;

      Parameter Ai(i),Bj(j);
      Ai(i - 1) = Ord(i);
      Bj(j - 1) = Ord(j);
      A comparison of execution times in seconds:
       Assignment previous current
      Ai 0.02 0.0
      Bj 3.2 0.0
  • Embedded set text and parameter values
    • The $on/offembedded option enables the use of embedded values in parameter and set data statements. For sets, the final text is concatenated with blank separators. For example, the element texts for the set and j will be identical:
       Set i(k,l) / a.a 'aaaa cccc dddd', b.a 'bbbb cccc dddd' /
      $onembedded
      Set j(k,l) / (a aaaa, b bbbb).(a cccc) dddd /
      For parameters, the final value will be the product of the embedded values. If no value is specified, a value of 1 is assumed. For example, the values for x and y will be the same:
       Parameter x(k,l) / a.a 24, b.a 12, c.a 4, c.b 4, d.a 6, d.b 6 /
      $onembedded
      Parameter y(k,l) / (a 2, b).(a 3) 4, (c 2,d 3).((a,b) 2) /
  • New suffixes for functions
    • New suffixes Grad and Hess have been introduced to get exact point derivatives from any function. These function suffixes are mainly intended for future testing of functions and cannot be used in equations.
    • The first argument gives the position of the element of the Hessian or gradient element desired in the form i or i:j, where i is the row element and j the column element.
    • The symbol ':' is used to separate the element position specification from the function argument list.
    • For example, the following will return the second derivative for the second and fourth argument, where 1,2,3,4,5 are the normal function arguments:
       h = EDist.hess(2:4:1,2,3,4,5);
      If the needed element position index is one, we can drop the argument as shown below:
       g = exp.grad(1:5) or g = exp.grad(5);
      h = log.hess(1:1:3) or h = log.hess(3);

      hess(i,j) = betareg.hess(ord(i):ord(j):expr1,expr2,expr3);

  • Some new minor and exotic features:
    • New %system.xxx% and system.xxx for put statements
      • system.date1: different date format: Feb 04, 2004
      • system.tab: inserst a tab character
    • New File attribute
      • file.silent: will suppress the logging of put files
    • New $IF option allows testing for existing solver at compile time
      • $IF SOLVER command
      • $if NOT solver baron $goto nobaron
    • Underflow Control
      • Release 21.0 introduced new math routines that work over a much wider numerical range than the older systems. The pre 21.0 systems rounded small function return values (less than 1e-30) to zero.
      • Some older models may use this rounding to zero feature and will now give slightly different results.
      • The new GAMS parameter ZeroRes=real allows you to change the threshold value for internal rounding in the GAMS calculation and the GAMS parameter ZeroResRep=1 will cause GAMS to issue warnings whenever such a rounding occurs.

Pricing

  • Global Packages
    • Similar to the NLP Packages (NLP-1 and NLP-2), GAMS now offers Global Packages: If you buy at least two of the Global solvers BARON, LGO, and MSNLP, the prices are reduced by 25%. Please check our pricelist or contact sales@gams.com.

Solvers

  • BARON
    • New libraries (version 7.2)
    • Branch-and-cut implementation (available only when using CPLEX as the LP solver)
    • Automatic exploitation of convexity
    • Modeling construct permits user to supply convexity information to the solver
    • Modeling construct permits user to have relaxation-only constraints
    • Improved local search implementation for large-scale models
    • GDX dumps can be used to provide output for the K best solutions
    • Several algorithmic fixes and improvements

  • COIN
    • GAMS has added a link to the Computational Infrastructure Operations Research (COIN-OR). The COIN-OR project is an initiative to spur the development of open-source software for the operations research community.
    • The GAMS/COIN-OR link allows GAMS users to connect their customized solution approaches using the COIN-OR Open Solver Interface (OSI) in a seamless manner.
    • The GAMS/COIN-OR Link for LP and MIP problems is available in source and free of charge to any licensed GAMS system.
    • Potentially all solvers connected to the COIN-OR/OSI can be made available through the GAMS/COIN-OR link. Currently,
      • CoinGlpk: Gnu Linear Programming Kit
      • CoinSbb: simple branch and bound, a branch and cut code
      are included in the latest Windows and Linux distributions. Please visit the GAMS/COIN web page at http://www.gams.com/gamscoin for details.

  • CONOPT
    • New libraries are included which address minor fixes and improvements.

  • MINOS
    • New libraries (MINOS 5.51 June 2004)
    • Fixed issues with scaled/unscaled infeasibilities/nonoptimal

  • MSNLP
    • MSNLP (Multi-Start NLP) is another stochastic search algorithm from Optimal Methods, Inc for global optimization problems. Like it's bigger brother OQNLP, MSNLP uses a point generator to create candidate starting points for a local NLP solver. Algorithm performance depends strongly on the starting point generator. MSNLP implements a generator creating uniformly distributed points and the Smart Random Generator. This generator uses an initial coarse search to define a promising region within which random starting points are concentrated. Two variants of Smart Random are currently implemented, one using univariate normal distributions, the other using triangular distributions. MSNLP also comes with the local NLP solver LSGRG. MSNLP is available in the Global Packages.

  • NLPEC
    • NLPEC has been promoted from beta solver status and has a write up in the solver documents.
    • The NLPEC solver for MPECs automates the process of model reformulation. NLPEC reformulates the original MPEC as an NLP (using one of 23 different reformulation strategies), solves the resulting NLP, and translates the results back for return as an MPEC solution.

  • PATHNLP
    • PATHNLP has been promoted from beta solver status. The PATHNLP solver suitable is for NLP programs. PATHNLP solves an NLP by internally constructing the Karush-Kuhn-Tucker (KKT) system of first-order optimality conditions associated with the NLP and solving this system using the PATH solver for complementarity problems.
    • Some improvements from the beta version include:
      • In some cases where PATHNLP fails to find a solution, it can now return a feasible point where before it would return no solution information whatsoever.
      • Information about the Hessian and it's inverse is now available.

  • OQNLP
    • OQNLP's merit and distance filters, which are respondible for starting the NLP solver at a small fraction of the candidate starting points, while still finding the global solution to most problems, have been improved. The dynamic merit filter logic and the basin overlap fix provide mechanisms for decreasing the radii of some attraction basins, focusing on those which reject points most often and those which overlap. These dynamic filters lead to a substantial improvement in OQNLP's ability to obtain a global optimum, with some increase in the number of solver calls. The OptQuest point generator has been supplemented by two new point generators (see MSNLP).

  • XPRESS
    • Updated to use XPRESS 2004 libraries - highlights include:
      • MIP heuristics
      • Lift-and-project cuts to give improved bound information
      • Strong branching
      • Extensive benchmarking & resultant performance improvements

Distribution 21.3   January 19, 2004

GAMS System

  • Model Library
    • Models from the "Handbook of Computible General Equilibrium Modeling", University of Tokyo Press, Tokyo (to appear) have been added to the model library.
    • Several QCP models have been added
    • A series of models that illustrate the BCH (Branch-and-Cut-and-Heuristic) Facility have been added

  • TESTLIB
    • New library of models developed for testing and quality control:
      • Solver correctness
      • Base module features
      • Performance
    • Designed for use by GAMS staff and our solver providers
    • Allows any user to reproduce our tests
    • To retrieve models from testlib: >testlib ....

  • GAMS IDE
    • The tabs showing the file names in the editor are maintainded in sorted order using the full path name.
    • Support for regular expressions in search, search and replace and search in files
    • When searching text using Ctrl-F, the word under the cursor will be used as the text to search for.
    • Added a viewer for reference files. A reference file is created using the rf option in the gams call. The IDE assumes that the file extension for the reference file is '.ref'
    • An option was added to emulate a subset of the Epsilon keyboard mapping.

  • GDX Utilities
    GDXMerge added; a utility to combine multiple gdx files into a single gdx file.
    GDX2Veda added; a utility to export GAMS data into the VErsatile Data Analyst (VEDA).

  • GAMS Branch-and-Cut-and-Heuristic (BCH) facility
    The GAMS Branch-and-Cut-and-Heuristic (BCH) facility allows GAMS users to interact with a running MIP/MINLP solver by supplying specialized GAMS programs to generate cutting planes and good integer feasible solutions. This allows GAMS users to apply complex solution stragies without having to have intimate knowledge about the inner workings of a specific MIP system. BCH strategies can now be implemented rapidly and reliably within a matter of days rather than weeks. Details and examples can be found here

  • Quadratically Constrained Program Types QCP, MIQCP and RMIQCP
    New model types for quadratically constrained problems are:
    • QCP: Quadratically Constrained Programs
    • MIQCP: Mixed Integer Quadratically Constrained Programs
    • RMIQCP: Relaxed Mixed Integer Quadratically Constrained Programs
    These model types are like NLP, MINLP and RMINLP with nonlinearities restricted to be quadratic forms. QCP problems can be solved with existing nonlinear solvers and large-scale LP solvers that offer quadratic extensions. For examples, look at the models qalan, qcp1, qdemo7, and qsambal in the model library.

  • Solver Link Options SOLVELINK
    This new option allows you to control the way solver's or subsystems are invoked. This may be helpful when solving a large number of models that are relatively small compared to the size of the overall database. The new options values are:
    • 0: Make an automatic save/restart for each solve (default - old behavior)
    • 1: Calls the subsystem using the shell method
    • 2: Call the subsystem using the spawn method
    This option can be specified as a gams parameter (>gams ... solvelink=n), as part of an option statement (option solvelink=n;) or specified as a model attribute (mymodel.solvelink=n;)

  • Some demo limits removed
    The demo version size restriction on the number of symbols and number of unique set elements has been removed. Previously, the demo/student versions were limited to 2000 symbols.

  • Save Point Options SAVEPOINT

    This new option directs GAMS to write solutions to GDX files for later use in the same or other programs. This may be helpful in cases when we want to provide good starting points or pro