23.8 Distribution

23.8.1 Major release (March 17, 2012)

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 Alessandro Brozzi, Jan Philipp Dietrich, Michael Ferris, Christophe Gouel, Josef Kallrath, Cheng Khor, Brage Knudsen, Jeff Larson, Yanchao Liu, Alexander Mitos, Renger van Nieuwkoop, Stefan Vigerske.

Platforms

  • Beta GAMS/Wine system (32bit). Comments are highly appreciated (support@gams.com).
  • Improved Windows Installer
    • the default location has changed to C:\GAMS\(win32|win64)\23.8 to avoid problems produced by the permission settings of the Program Files location
    • Two different setup modes. A simple default mode and an advanced mode with additional options like automatic PATH manipulation
    • Support for detecting and installing a license from the clipboard

GAMS System

APIs

  • C#
    • Major improvements, lost compatibility to previous versions!
    • Mixed casing of function names
      • old: gdxdatawritestr
      • new: gdxDataWriteStr
    • Object handle (pointer) no longer needed
      • old: int gdxdatawritestr(IntPtr pgdx,string[] keystr,double[] values)
      • new: int gdxDataWriteStr(string[] KeyStr,double[] Values)
    • Create calls replaced by different constructors
      • old: gdx = new gdxcs(); gdx.gdxCreateD(ref PGX, Sysdir, ref Msg);
      • new: gdx = new gdxcs(Sysdir, ref Msg);
    • See examples in <GAMS Dir>\apifiles\CSharp for reference
  • Python
    • Add source code to build C extensions (no need to run SWIG anymore)
    • Add compiled C extension on Linux and Windows (both 32 and 64 Bit)
  • VBA
    • Support for 64 Bit version (VBA 7)

GAMS

New model definition features

  • Flexible model list
    Model definitions containing complementary equ.var pairs can now be used with all model types. The matching information is only used with the appropriate model types (e.g. MCP, MPEC, RMPEC).
  • Model list edits
    In addition to the ',' which enforces uniqueness of equation entries, two additional model list element separators have been introduced. The '+' separator allows replacement of existing entries. The '-' separator deletes model list entries. All three of these operations can be used with single equation names, equ.var pairs and previously defined model names.
  • Example
    $eolcom ! 
    equation e1,e2,e3,e4,e5; variable x1,x2;
    e5.. x1 =l= 0;
    e4.. x1 =l= 0;
    model m1 / e1,e2 /
          m2 / e3,e4 /
          m3 / m2,m1,e5 /                ! e3,e4,e1,e2,e5
          m4 / all-m1+e1+e1 /            ! e3,e4,e5,e1
          m5 / all + e5.x1 + e4.x2 -e1/  ! e2,e3,e5.x1,e4.x2
          m6 / m5 -e5, e5.x2 /           ! e2,e3,e4.x2,e5.x2
          m7 / m5 + e5.x2 /              ! same as m6

Note that the equation list is ordered left to right. If we have a '+' separator adding an equation already in the list, the equation (possibly modified) will move to the end of the list.

Permutations via the option statement

  • Using the '>' sign one can create complete permutations of one- and multi-dimensional sets and parameters:
        Option PermAllI > I; 
    Examples of this new feature can be found in the models perm1, ptsp, flowshop, and pmelody.

Minor enhancements

  • Functions can have up to 10 arguments. This effects the intrinsic functions edist and poly and extrinsic function libraries.

Stochastic Programming

In this release we made a first cut at supporting stochastic programming in GAMS. With a few changes uncertainty can be added to an existing deterministic model. For this, the EMP framework is used to replace parameters in the model by random variables. This way (stagewise-independent) multi-stage recourse problems and chance constraint models can be formulated. Three solvers can be selected to solve those problems: DE, DECIS and LINDO.

Further information can be found in the document Stochastic Programming (SP) with EMP.

In addition, you can check examples of type SP from the GAMS EMP Library.

Utilities

  • mps2gms MPS input file allows LI (lower integer) bound types and treats tabs as spaces.

Other

  • By default GAMS does not call an exit script anymore. If this is required, the GAMS parameter ScriptExit has to be set explicitly to the script that should be called after GAMS terminates. An empty template of an exit script can be found in the GAMS system directory (gmsxitnt.cmd (Windows) or gmsxitus.run (Unix)).

Solvers

AlphaECP

  • New libraries 2.09.01
  • Support of =N= rows

Baron

  • New libraries Baron 10.1
  • Main developments
    • Minos and Snopt are no longer available as LP subsolvers
    • Clp can be used as the LP subsolver (lpsol = 8)
    • Ipopt with Mumps and Metis can be used as the NLP subsolver (nlpsol = 9)
    • BARON automatically selects Clp and Ipopt if the selected/default subsolver is not licensed
    • Improved interface to Xpress-LP
    • Introduced cutting planes for convexity exploitation for a variety of functions, including products and ratios, perspectives, norms (including absolute functions) and seminorms, and quadratic functions that are automatically recognized and exploited
    • Polyhedral convexification routines have been rewritten and are now more efficient and numerically robust, as well as performing a number of simplifying transformations that reduce relaxation gaps
    • Introduced relaxations based on inferred bilinear relationships (certain types of first-order RLT)

Bench

  • calls solvers to benchmark in parallel using GAMS' grid functionality

Coin-OR

  • OSIXpress supported on Solaris/Intel
  • Dropped support of GLPK (alias OsiGlpk, alias CoinGlpk)
  • New libraries:
    • Bonmin 1.5
    • Cbc 2.7
      • improvements in heuristics and cut generation
    • Clp 1.14
    • Couenne 0.4 (for details see the [Couenne release notes] (http://list.coin-or.org/pipermail/couenne/2011-August/000234.html))
      • feasibility pump heuristic for MINLP (can use SCIP as MIP solver)
      • fixed point bound tightening and two-implied bound tightening
      • introduction of semi-auxiliaries for smaller LP relaxations
    • Ipopt 3.10
    • OS 2.4
      • now supports semicontinuous and semiinteger variables
    • Osi 0.105
  • Cbc, Bonmin, and Couenne support miptrace

Convert

Conopt

  • New libraries 3.15C

Cplex

  • new libraries 12.4
  • dettilim: option to limit 'ticks'

DE

  • GAMS/DE accepts EMP models that have been annotated with information about uncertainty. The DE 'solver' reformulates the stochastic model into the extensive form equivalent with implicit non-anticipativity constraints. The reformulated model is solved with any of the regular GAMS solvers. All optimization model types (LP, MIP, QCP, MIQCP, NLP, DNLP, and MINLP) are accepted.

DECIS

  • GAMS/DECIS accepts 2 stage EMP stochastic models. The stochastic information is processed and is passed to the well known GAMS/DECISC or GAMS/DECISM solver. The need to provide the stochastic information based on the matrix elements is now unnecessary. DECIS, as GAMS/DECISC and GAMS/DECISM, accepts linear recourse models only (although the stochastic effects might be more complex).

DICOPT

  • If the model given to DICOPT is linear, DICOPT just passes this model to the MIP solver. Previously, the MIP solver used parameters OptCR, OptCA, and ResLim as specified by GAMS options even if DICOPT used an option file. Now OptCR, OptCA, and ResLim from a DICOPT option file will overwrite the GAMS parameters.

GloMIQO

The new Global Mixed-Integer Quadratic Optimizer, GloMIQO (GLO-me-ko), solves Quadratically Constrained Programs (QCP) and Mixed-Integer Quadratically Constrained Programs (MIQCP) to epsilon-global optimality.

  • GloMIQO has been developed by Prof. C. Floudas and R. Misener from Princeton University
  • The GloMIQO solver is available for the 32-bit and 64-bit versions of Windows and Linux
  • GloMIQO requires the presence of a GAMS/CPLEX and GAMS/SNOPT license

Gurobi

  • New library Gurobi 4.6.1
  • New sifting option for linear programs: LP models can now be solved with a sifting algorithm. Gurobi will choose sifting automatically when using the dual simplex algorithm for models that are likely to benefit (those with many more columns than rows). If you want to invoke sifting manually, choose dual simplex and set the new Sifting parameter to a value greater than 0.
  • Branch priorities: You can now specify priorities for branching variables, allowing greater user control of the MIP search process. Priorities can be specified through the .prior variable attribute and the .prioropt model attribute.
  • New Zero Objective heuristic: Gurobi 4.6 contains a new Zero Objective heuristic that can be useful for finding solutions to MIP models where other strategies fail to find feasible solutions in a reasonable amount of time. Use the new ZeroObjNodes parameter to control this new heuristic.
  • New presolve sparsify option: A new presolve sparsify algorithm is available for MIP models. This method attempts to reduce the number of non-zero coefficients in the constraint matrix. Reductions of 3X or more have been observed on some models, often leading to significant performance improvements. Use the new PreSparsify parameter to enable this algorithm.

Guss

  • Added option NoMatchLimit (default 0) that controls the maximum number of accepted unmatched scenario records before terminating the solve.

Ipopt

  • The Serial Graph Partitioning and Fill-reducing Matrix Ordering software METIS can now be used by some of Ipopt's linear solvers.
  • Starting with 23.8 GAMS offers a commercially supported version of GAMS/IPOPT. This version of GAMS/IPOPT includes the commercial strength linear solvers MA27, MA57, and MA86 from the Harwell Subroutine Library.

Jams

  • Support Xpress and SCIP when reformulating disjunctions with indicators

Knitro

  • New libraries Knitro 8.0
  • Introduction of a presolver to simplify and reduce the size of the model
  • Introduction of parallel (multi-threaded) execution
    • Multi-start
    • Multi-algorithm
  • Multi-algorithm method
    • New mode to run multiple algorithms, serially or in parallel
    • Uses the first or (optionally) the best solution found
  • New feasibility-only mode: improves robustness and efficiency of detecting infeasible models
  • Knitro 8.0 discontinues support for 32-bit Darwin systems - only 64-bit systems are supported on the Mac.

Lindo

  • New solver Lindo, similar to LindoGlobal, but
    • Without size limitations
    • No requirement for additional Conopt license
    • GAMS/LINDO accepts stochastic EMP models and solves either the extensive form equivalent or uses Benders' decomposition to solve the stochastic model. In addition to discrete random variables, Lindo features also continuous distribution functions and various sampling techniques. All optimization model types (LP, MIP, QCP, MIQCP, NLP, DNLP, and MINLP) are accepted.

LindoGlobal

  • New libraries Lindo 7.0
  • MIP
    • Significant improvements in root node heuristics for quickly finding good integer feasible solutions
    • Improved identification of special structures, as in multi-period models, and the ability to exploit these structures to achieve significant reductions in solve times
  • Global Solver
    • Improved heuristics for finding a good feasible solution quickly
    • Improved ability to identify constraints that can reformulated as second order cone (SOC) constraints and thus be solved by the fast SOC solver
    • Improved ability for efficiently handling polynomial terms
    • Improved bounds for non-convex quadratic terms, using SDP and eigenvalue reformulations
    • Improved control over multi-start algorithm

MOSEK

  • New libraries Mosek 6 rev 135

SCIP

  • New libraries SCIP 2.1.1 (for details see the SCIP release notes)
  • Beta-version of supporting (mixed-integer) nonlinear programs (also nonconvex)
  • Supports miptrace
  • Supports indicators for linear constraints through option gams/indicatorfile
  • Added option gams/dumpsolutions to write all solutions found into gdx solution pool

Snopt

  • bug fix for log of LP models

SoPlex

XA

  • New libraries XA 17 on Windows
  • Introduction of native 64-bit Windows support

Xpress

  • New libraries 22.01.15 (maintenance release)
  • MIP solution pool capability - allows a number of feasible solutions to be stored for later processing. By default the global search is not altered, but there is an option to enumerate all or selected integer feasible solutions. The enumeration can be tailored via the option file to execute a number of different strategies, e.g.:
    • all integer feasible solutions
    • N-best solutions
    • as-good-as-X solutions (all solutions with objective at least as good as X)
    • N-first solutions (first N solutions found)
  • Solution pool examples are available in testlib: xpress03 (default global search), xpress04 (enumeration of all solutions), xpress05 (various enumeration strategies).
  • Support for continuous models with quadratic constraints (previously only quadratic objectives were supported) and for all mixed-integer quadratic (MIQCP) models
  • Support for indicator constraints
  • New option isGoodEnough=X implemented in the link. If set, the global search will stop once an integer feasible point is found with an objective at least this good. Surprisingly, none of the MIP solver vendors implement such an option directly in their libraries.

Documentation

Amongst others, the following topics were revised in both, the GAMS Users Guide and the Bruce McCarl's Expanded GAMS Guide

  • Command Line Parameters
  • Dollar Control Options
  • Model Attributes
  • GAMS Intrinsic and Extrinsic Functions

Model Libraries

GAMS Data Library

  • GDXMRWPlotting01 (81): Placeholder for the GDXMRW examples that deal with plotting in Matlab
  • makeql (82): Create Querry Library routines for extrinsic functions

GAMS EMP Library

GAMS Model Library

  • cubesoln (371): Three-dimensional Noughts and Crosses Multiple Solutions
  • sipres (372): Global optimization of semi-infinite programs via restriction of the right-hand side
  • cclinpts (373): Finding Optimal Breakpoints when linearizing a power utility function
  • ptsp (374): Traveling Salesman Problem Instance solved with explicit Permutation Enumeration
  • pmelody (375): Choose notes for melodic lines and chords with permutations
  • flowshop (376): Flow shop scheduling

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 23.8    March 17, 2012
  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
ALPHAECP X X X X X X X X X X
BARON 10.1 X X X X            
BDMLP 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
CPLEX 12.4 X X X X X X X X X X
DECIS X X X X X 32bit        
DICOPT X X X X X X X X X X
GLOMIQO X X X X            
GUROBI 4.6 X X X X       X   X
KNITRO 8.0 X X X X     X   X X
LINDO 7.0 X X X X     X   X X
LINDOGLOBAL 7.0 X X X X 6.0 6.0 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 6 X X X X     X   X X
MPSGE X X X X X X X X X X
MSNLP X X X X X 32bit     X X
NLPEC 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
SBB 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
SOPLEX X X X X     X   X X
XA X X X X            
XPRESS 22.01 X X X X X X X X    

23.8.2 Maintenance release (April 05, 2012)

  • Bugfix for models with =X= rows and MCP (i.e. MPSGE)
  • GloMIQO resets OptCR=0 properly to 1e-9 and accepts now Ctrl-C on Windows
  • Knitro handles MINLP failures better
  • XPRESS handles =E= quadratic constraints better now
  • Changed position of Library Form in GAMSIDE (avoid hang in corner to corner screen setup)
  • Model Trnsxcll added to GAMS Data Library
  • Model ps5_s_mn added to GAMS Model Library