24.0 Distribution

24.0.1 Major release (December 24, 2012)

Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release.

Platforms

  • Dropped Mac OS X 32bit build
  • Mac OS X 64bit build now on Lion (10.7)

GAMS System

APIs

Documentation

  • Moved existing documentation about the APIs to <Path/To/GAMS>/docs/API. Also added new documentation there. In the GAMSIDE this documentation can be accessed at Help &rarr; Docs &rarr; API.

.NET

  • Add function Interrupt to GAMSJob: Sends interrupt signal to running GAMSJob

Java

This release contains a beta version of the object-oriented Java API that can be used to control GAMS from a Java program. It allows the seamless integration of GAMS into Java by providing appropriate classes for the interaction with GAMS. GAMS Java API objects allow a convenient way to exchange input data and model results with in-memory representation of data (GAMSDatabase), and to create and run GAMS models (GAMSJob) that can be customized by GAMS options (GAMSOptions). Furthermore, they introduce a way to solve a sequence of closely related model instances in the more efficient way (GAMSModelInstance).

  • A Java program that uses object-oriented Java API requires at least Java SE 5 to compile and run.
  • All classes are distributed within one single jar file GAMSJavaAPI.jar with a namespace com.gams.api, located under the <Path/To/GAMS>/apifiles/Java/api/ directory.
  • Java program examples are distributed with a namespace com.gams.examples, located under the <Path/To/GAMS>/apifiles/Java/ directory.
  • Installation and detailed documents can be found in <Path/To/GAMS>/apifiles/readme.txt and <Path/To/GAMS>/docs/API/GAMS_java.pdf.
  • Javadoc for GAMSJavaAPI.jar can be found under the <Path/To/GAMS>/apifiles/java/api/javadoc directory.

Python

  • In the API to the option object the signature of the function optGetStrStr has changed from: value = optGetStrStr(optHandle, "GDX", dummyString) to value = optGetStrStr(optHandle, "GDX")
  • The compiled Python libraries are built with Python 2.7 now.
  • This release contains a beta version of the object-oriented Python API that can be used to control GAMS from within Python 2.7. It allows the seamless integration of GAMS into Python by providing appropriate classes for the interaction with GAMS. The GamsDatabase class for in-memory representation of data can be used for convenient exchange of input data and model results. Models written in GAMS can be run with the GamsJob class and by using the GamsModelInstance class a sequence of closely related model instances can be solved in an efficient way. To use this API one has to perform one of the following steps:

    Installing the API and the required low level APIs:

       cd <Path/To/GAMS>/apifiles/Python/api && python setup.py install && cd ..

    Using the API without installing:

       export PYTHONPATH=<Path/To/GAMS>/apifiles/Python/api  (Unix)  
       set PYTHONPATH=<Path\To\GAMS>\apifiles\Python\api  (Windows)

    Running transport1.py example:

      export LD_LIBRARY_PATH=<Path/To/GAMS>:$LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on OS X, not required on Windows)
      python transport1.py

    Documentation about this API can be found in <Path/To/GAMS>/docs/API/GAMS_python.pdf.

Documentation

  • added separate GAMS installation notes for Mac OS X

External Equations

GAMS

  • If Solvelink is set to a non-default value. The GAMS log prints out the solvelink selection: --- Executing SOLVER (Solvelink=i): elapsed 0:00:00.000
  • New date in audit line. Each GAMS component writes an audit line to the GAMS log, e.g. GAMS/Cplex write IBM ILOG CPLEX Jul 14, 2011 23.7.3 WIN 27723.27726 VS8 x86/MS Windows. The date in this line used to be the license check date, which does not change with maintenance releases (23.9.X). Starting with 24.0.1 the date displayed in the audit line is the build date of the system and changes with every release including maintenance releases.
  • When GAMS is run from the command line on Windows systems and a solver is interrupted, the OS issued a message Terminate batch job (Y/N)? and the user had to interact. Now the message is still printed, but GAMS does not wait for a user action anymore. This has a rare side effect that solver keyboard interactions (e.g. in GAMS/Cplex with option Interactive and GAMS/SCIP with option GAMS/Interactive) will not work unless the new GAMS option InteractiveSolver is set to 1.
  • For compile time commands like $include, the $ had to be in column 1. Leading blanks are now allowed for such commands, but require an additonal $: $$include. The $$ can only be used for the first dollar command in a line. For example, $set a 'aa' $$set b 'bb' does not work.
  • GAMS has added UserName and ComputerName to the recorded fields of the GAMS Trace facility. Besides many uses in quality assurance testing, the trace facility e.g. can be used to audit the GAMS activities in a multi user environment with a shared GAMS installation.
  • Report equations with general non-linearity in lst file for QCP models
  • New put_utility feature WinMsg allows to send a Windows message to a window:
       put_utility fx 'WinMsg' / 'WindowTitle' / 'Message';
  • Asynchronous calls on Windows can be started with a new console rather than sharing the console of the parent process. $CALL.ASYNCNC, Execute.AsyncNC and Put_Utility keywords Exec.AsyncNC and Shell.AsyncNC have been added. NC and non NC calls behave identical on non-Windows platforms.

GAMS IDE

  • The IDE has now an integrated Text differ to compare two text files; see File | Diff Textfiles

GDXRRW

  • GDXRRW is a suite of utilities to import/export data between GAMS and R and to call GAMS conveniently from R. The software gives R users the ability to use all the optimization capabilities of GAMS, and allows visualization and other operations on GAMS data directly within R.
  • GDXRRW is unique among the GDX interface utilities in that it is an R extension made available as an R package. As such, it is run as part of an R session or script, not as part of a GAMS run, and it follows the usual R package conventions.
  • Source and binary packages for GDXRRW are part of the GAMS distribution.

Solvers

BARON

  • New libs 11.8.0
  • BARON uses an improved link to Clp
  • BARON uses latest SNOPT 7.2-12
  • BARON uses latest IPOPT 3.10.3
  • Memory requirements have been significantly reduced

Bonmin

  • Faster reaction to user interrupt during solve of initial NLP relaxation.
  • Changed default setting for parameters variable_selection and milp_strategy to strong-branching and solve_to_optimality, respectively.
  • Renamed miptrace options to solvetrace.

CBC

  • New library 2.8
    • A new primal heuristic "Proximity Search" (proposed by Fischetti and Monaci, 2012) has been added. The idea is to define a sub-MIP without additional constraints but with a modified objective function intended to attract the search in the proximity of the incumbent. The heuristic is off by default and can be enabled by setting proximitysearch 1 in a GAMS/Cbc options file.
  • Parallel branch-and-bound search (multithreading) is now also possible under Windows by using [POSIX threads for Win32] (http://sourceware.org/pthreads-win32).
  • New option dumpsolutions to output alternative solutions to gdx files.
  • The miptrace options have been renamed to solvetrace and activating them does not affect the solving process anymore.

ConvertD

  • Added option localsolver to convert GAMS models into [LocalSolver language] (http://www.localsolver.com). This is still an experimental feature, i.e., it may not always be possible to process the created .lsp files with LocalSolver. A major limitation is the restriction to binary and bounded integer variables in LocalSolver. To allow for continuous variables that can be defined via other variables, ConvertD can read information about defined variables from a ConvertD options file. In such an option file, a line defvar x1 e1 denotes that the continuous variable x1 is defined via equation e1. Equation e1 then needs to be an equality constraint which contains x1 in a linear expression. Analogously, a statement defvar y(n,i,j) e(n,i,j) indicates that variable y(n,i,j) is defined via equation e(n,i,j) for all (n,i,j).

Couenne

  • Couenne is now linked against the nauty library, which enables symmetry recognition for MINLPs and their utilization for orbital branching.
  • The miptrace options have been renamed to solvetrace.

Cplex/CplexD

  • New library 12.5
  • The number of threads for CPLEX to use can now be set to any positive integer number, even if this number exceeds the number of cores on the machine. The default behavior of GAMS/CPLEX with respect to the number of threads and cores remains unchanged. That is, by default, GAMS/CPLEX continues to run with a single thread. Setting THREADS to 0, result in setting the threads to the number of cores.
  • New parameters:
    • ProbeDetTime: Limits the amount of time (expressed in deterministic ticks) spent probing
    • PolishAfterDetTime: Sets the amount of time expressed in deterministic ticks to spend during a normal mixed integer optimization after which CPLEX starts to polish a feasible solution
    • TuningDetTiLim: Sets a time limit in deterministic ticks per model and per test set (that is, suite of models) applicable in tuning
    • RandomSeed: Sets the random seed differently for diversity of solutions.
  • GAMS/Cplex prints the time spend in Cplex optimization calls. The time is printed in elapsed seconds and elapsed deterministic time in ticks.
  • GAMS/CplexD returns proper duals for QCP models

CONOPT

  • new library 3.15H

GloMIQO

  • new library GloMIQO 2.1:
    • improved reformulation strategies
    • better recognition of special mathematical structure allowing for dominant polyhedral cuts
    • additional strategies for deterministically inferring missing variable bounds
  • new option cplex_optfile specifies a GAMS/CPLEX options file that will be applied to every LP and MILP subsolve
  • new option dumpsolutions to output alternative solutions to gdx files

GUROBI

  • New library 5.0.2

IPOPT and IPOPTH, BONMIN and BONMINH

  • IPOPT is now available in two variations. The Open Source IPOPT is part of the Base Module. IPOPTH uses higher performance (but not Open Source) linear algebra routines (HSL) and is separately priced.
  • Analogously, BONMIN is part of the Base Module and uses IPOPT. BONMINH requires a license for IPOPTH.
  • For Couenne and SCIP, IPOPTH is used to solve NLP subproblems if a corresponding license is available, otherwise IPOPT is used.

LogMIP

  • Fixed a bug when reformulating disjunctions with terms that are indicated by a negated variable (disjunction not y1 e1 else ...).

MINOS

  • Maintenance updates, primarily for memory allocation issues.

MOSEK

  • New libs Mosek 6 Rev 148.

Optimization Services

  • New library 2.6

OsiXpress

  • OsiXpress is now also available on Mac OS X.

SCIP

  • New library 3.0.1
    • New presolvers have been added, among them one that recognizes and utilizes block structures in an instance.
    • New primal heuristics NLP diving (for MINLPs) and Zero-Objective ("Hail Mary") have been added.
    • New propagators for optimization-based bound tightening for MINLPs have been added.
    • The variable bounds propagator has been extended to cliques and implications.
    • Memory limits are now better handled, especially for larger problems.
    • The probing algorithm has been revised and should give better performance.
    • The performance for pseudo-boolean optimization problems has been improved.
    • The complete release notes can be found [here] (https://www.scipopt.org/doc/html/RELEASENOTES.shtml) and a list of all changes (including changes to parameters and their default values) can be found [here] (https://www.scipopt.org/doc/html/CHANGELOG.shtml)
  • The GAMS workspace option can now be used to set the SCIP memory limit ('limits/memory' in optionfile).
  • The gams/miptrace options have been renamed to gams/solvetrace.
  • The gams/printstatistics option has been renamed to display/statistics.
  • The gams/interactive option is now a string option that takes commands for the SCIP shell as arguments. If the commands do not end with a 'quit' command, the SCIP shell still open for user interaction. Note, that in order to be able to input commands interactively on Windows, you have to set the GAMS option interactivesolver to 1 (see above).
  • The LP solver in SCIP can now be changed by the lp/solver option. Supported values are "cplex", "soplex", and "clp". The default LP solver is now CPLEX, if a CPLEX license is available, and SoPlex otherwise.

SNOPT

  • New library 7.2-12 (maintenance release)
  • Completely revamped linking code
    • The GAMS/SNOPT link is now thread-safe, allowing it to be used in multi-threaded applications built with the high-level GAMS APIs mentioned above.
    • Updated memory allocation scheme to increase the amount of memory that can be allocated and used for problem solution, and to improve reporting when limits are reached.
    • Miscellaneous bug fixes and usability improvements.

SoPlex

  • New library 1.7.1
    • Performance improvements in pricing algorithms
    • Many bugfixes and improvements in numerical stability and infeasibility detection
    • Complete release notes [here] (http://soplex.zib.de/notes-170.txt).

Sulum

  • GAMS 24.0 introduces the new LP/MIP Solver Sulum from Sulum Optimization ApS.
  • While Sulum currently does not compete with the high-end LP/MIP solvers, Sulum offers a good cost-benefit ratio for LP and MIP solution technology.
  • GAMS 24.0.1 features Sulum LP only, but as soon as Sulum Optimization releases their library including the MIP optimizer, a maintenance release will feature the full LP/MIP capabilities of Sulum.

Xpress

  • New library Xpress Optimizer 23.01.06 (maintenance release).

Model Libraries

GAMS Data Library

GAMS EMP Library

  • simplevi4 (93): Equilbrium model consisting of two VIs, one of which has a non-trivial constraint set
  • transsp (94): A Stochastic Transportation Problem
  • oa (95): Outer Approximation for Convex Minimization Problem with Binary Variables

GAMS Model Library

  • powerset (381): PowerSetLeft and PowerSetRight examples
  • linearne (382): Linearization techniques for extremal-Nash equilibria
  • saras (383): South African Regionalized Farm-level Resource Use & Output Supply Response (SARAS) model
  • epscmmip (384): Improved version of eps-Constraint Method for Multiobjective Optimization
  • bidpwl (385): Bid Evaluation with Piecewise Linear Functions
  • trnspwlx (386): A Transportation Problem with Piecewise Linear Functions

GAMS Test Library

Tools

SCENRED2

  • fixed visualization output to work with recent versions of gnuplot

Solver/Platform Availability Matrix

Solver/Platform availability - 24.0    December 24, 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 x86_64
Darwin
ALPHAECP X X X X X X X X X
BARON 11.8 X X X X          
BDMLP X X X X X X X X X
COIN-OR X X X X     X   X
CONOPT 3 X X X X X X X X X
CPLEX 12.5 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
GLOMIQO 2.1 X X X X          
GUROBI 5.1 X X 5.0 X       X X
KNITRO 8.0 X X X X     X   X
LINDO 7.0 X X X X     X   X
LINDOGLOBAL 7.0 X X X X 6.0 6.0 X   X
LGO X X X X X X X   X
MILES X X X X X X X X X
MINOS X X X X X X X X X
MOSEK 6 X X X X     X   X
MPSGE X X X X X X X X X
MSNLP X X X X X 32bit     X
NLPEC X X X X X X X X X
OQNLP X 32bit X 32bit          
PATH X X X X X X X X X
SBB X X X X X X X X X
SCIP 3.0 X X X X     X   X
SNOPT X X X X X X X X X
SOPLEX 1.7 X X X X     X   X
SULUM 1.0 X X X X          
XA X X X X          
XPRESS 23.01 X X X X X X X X X

24.0.2 Maintenance release (February 14, 2013)

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 Arne Drud, Michael Ferris, Erwin Kalvelagen, Aida Khajavirad, Ignacio Perez, Nick Sahinidis, and Dimitri Tomanos.

Platforms

  • removed dependency on GLIBC 2.7 in Linux systems

GAMS System

APIs

Object Oriented APIs

  • introduced new function CopySymbol (see individual languages for precise name)
  • label and symbol lookup is now case insensitve
  • fixed handling of infinite bounds for GAMSModifiers

.NET

  • added new function GAMSSymbol.CopySymbol
  • added new examples in Visual C++ and VB.NET

Java

  • added new function GAMSSymbol.copySymbol

Python

  • added new function _GamsSymbol.copy_symbol
  • on Windows and Linux, compiled libraries for both Python 2.6 and Python 2.7 are distributed
    while the Python 2.7 version can be found in <GAMSDir>\apifiles\Python\api as before, the Python 2.6 version is in <GAMSDir>\apifiles\Python\api_26

GDX

  • fixed a casing problems with the function gdxSymbolGet/SetDomainX for client languages C++, C#, Fortran, Java, Python, VBA, VB.NET

GMO

  • increased API version number to 11 (was forgotten in 24.0.1)

GAMS

  • the reason for ignoring an option in the GAMS options file reader is now printed
  • fix a bug when reading scalars from a compressed GDX file

GAMS IDE

  • changed the interface for the Text Differ to look like the GDXDiff interface
  • moved menu for Text Diff under Utilities menu

Utilities

GDXXRW

  • gdxxrw works now with Excel Binary Workbook files (file extension .xlsb)

Solvers

BARON

  • new library 11.9.1
  • fixed handling of workspace and workfactor options

BONMIN, CBC, Couenne, GloMIQO, SCIP

  • fixed too small value in 'seconds' column in solvetrace file
  • improved resolution of solvetrace file for Cbc and SCIP

CONOPT

  • new library 3.15I
  • major update of the CONOPT solver manual (pdf file only)
  • revised definition of workspace and workfactor options: workfactor is now ignored if workspace is defined
  • minimum memory allocation adjusted for some smaller machines
  • removed no longer used options GCFORM, GCPTB1, GCPTB2

GloMIQO

  • fixed bug in reporting of dual bound when optca tolerance is larger in magnitude than optcr

GUROBI

  • new library 5.1
  • new options
    • ImproveStartNodes: A new option for transitioning from tree exploration to solution improvement in MIP
    • Seed: Modifies the random number seed. This acts as a minor perturbation to the solver, which typically leads to a different solution path. This can be useful for experimentation (e.g., for testing the robustness of a particular set of parameter changes)
  • Gurobi dropped support for Linux 32bit, so GAMS/Gurobi uses Gurobi library 5.0.2 on Linux 32bit

MOSEK

  • write clearer text error message to log and listing file

MPSGE

  • fixed memory issues when both workspace and workfactor are set and when estimates are too high

MSNLP / OQNLP

  • fixed problems with LSGRG on instances with more than 10000 variables or more than 10000 equations

SCIP

  • new SCIP library 3.0 #0134f8c
  • fixed bug where the reported objective value did not equal the level value of the objective variable
  • improved cleanup of SCIP solutions that are not feasible in the original problem; the model status is now adjusted accordingly

XPRESS

  • fixed reporting of resused and iterused attributes for infeasible and unsolved models

Tools

ConvertD

  • in LocalSolver output, long linear parts of equations are now printed by using the sum() operator
  • added solution output option and functionality for LocalSolver (lspsol)
  • fixed bug when using objvar option in conversion to GAMS format
  • fixed bug with variable indices when writing nonlinear expressions

EXAMINER

  • fixed check of complementarity slackness for discrete variables in MIQCPs
  • added a consistency check on model attributes (currently only objval)

JAMS

  • fixed many problems with objective functions in equilibrium followers, especially those arising when variables were skipped or when the objective var was reformulated out
  • fixed problems with VI models and vars getting squeezed out that should not have been