27 Distribution

27.1.0 Major release (April 24, 2019)

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, Jan-Erik Justkowiak, Renger van Nieuwkoop, and Manuel Wetzel.

Platforms

  • As announced, support for Mac OS X 10.11 (El Capitan) has been dropped.
  • As announced, support for Windows Vista has been dropped.

GAMS System

GAMS

  • Embedded Python Code:
    • Allow Implicit Set Definition (or: Domain Defining Symbol Declarations) now for symbols loaded from embedded code as well.
    • Changed the default behavior of $offEmbeddedCode and endEmbeddedCode: Previously, internal resources got freed and with the next start of an embedded Python code section, the Python environment had to be reinitialized. This is not the case anymore. Also, the interpreter stays "alive" now, which allows to access Python symbols defined in one embedded code block in a following block. The old behavior could still be activated by setting the new command line parameter freeEmbeddedPython to 1.
    • Changed the optional boolean argument merge to an enumerated option mergeType in the gams.set method in embedded code. This might break existing code. Even if the merge argument was not used, the default behavior at compile time changes. In previous versions the content of an already defined symbol was quietly replaced while GAMS now triggers a compilation error 194 Symbol redefined.
    • Fixed a bug in embedded code when setting pySetup to 0. Additional steps are required on Linux and macOS to use an alternative Python installation. Details can be found in section Porting to a Different Version of Python.
    • A GAMSDatabase created in embedded code via gams.ws.add_database(source_database = gams.db) had all the symbols but no data. This has been fixed.
    • gams.db.export(file_name) in embedded code resulted in an error for scalar symbols without data. This has been fixed.
    • Fixed a problem with embeddedCode/continueEmbeddedCode after an assignment that was not finished with a ; like in this example:
      Set i /1*3/;
      Parameter xl(i);
      xl(i) = uniform(0.5,1)
      embeddedCode Python:
      print(list(gams.get('xl')))
      endEmbeddedCode
      Display xl;
      
      This leads to an error now. In the past, the assignment in line 3 was executed after the embeddedCode block leading to unexpected results.
  • Extended the GAMS log to print out the non-default Command Line Parameters.
  • Improved performance of execute_unload when option gdxUELs is set to full.
  • Improve performance of model generation when multi-dimensional variables are used, where the controlling set for dimension n>1 is big, e.g.:
    Set tiny /1*2/, huge /1*100000/ ;
    Variable x(i,j); Equation e;
    ...
    e.. sum((tiny,huge), x(tiny,huge)) =e= 42;
    ...
    
  • Fixed a potential crash when more than 250 million labels are used in one model.
  • Fixed a bug with Implicit Set Definition: When used with $onMulti to merge data into a non-empty set, it could have happened that an element was added twice in some cases.
  • Fixed a bug causing a broken dump file if $onVerbatim and $ifThen was used with DumpOpt.

Documentation

  • Added documentation for the put_utility keyword assignText (which has been in the system since 24.6).

GDX library

  • Improve the behavior of GDX when handling large data sets (e.g. writing a set with 210 million elements, each having its own lengthy set text). Performance is better - less memory and less time are required. The limits on the amount of data that can be handled have been extended somewhat, and when these limits are reached this is handled more gracefully than previously - with a helpful message instead of a segmentation fault or erroneous results.
  • Introduce consistent handling of the empty string vis-a-vis set text for UELs. This is only relevant for user applications that use the low-level GDX API in an unsupported way.
    • Previously the proper usage was to avoid adding the empty string to the list of set text strings. Applications that broke this rule would produce a GDX file with an abnormal internal structure. This structure may lead to jumbled set text.
    • With the updated GDX, it is not necessary to avoid adding an empty string to the set text list.
    • Applications holding to previous proper usage (i.e. those that avoid adding the empty string to the list of set text strings) will produce good GDX files regardless of GAMS version, and these files will behave as expected regardless of the GAMS version in which they are used.

Solvers

ANTIGONE, Bonmin, Couenne, Ipopt, SCIP

  • Updated Intel MKL libraries to version 2019.3 on Linux and macOS and to 2018.4 on Windows 64-bit.

BARON

  • New libraries 19.3.24.
    • Improved automatic differentiator that is up to two orders of magnitude faster for large-scale problems.
    • Improved data structures and cut pool manager to reduce memory footprint and time requirements for large-scale problems.
    • Improvements in various components, including parallel threads and BARON's IPOPT interface for macOS.
    • New tree management algorithms.
    • Improved range reduction and probing algorithms.
    • Using Intel MKL for faster BLAS and LAPACK routines.
    • Ipopt now uses METIS for linear system partitioning.
    • New option FirstLoc to terminate BARON as soon as a local optimum is found.
  • New option ClockType to determine whether wall-clock or CPU time should be reported back to GAMS.

BDMLP and SBB

  • The definition of SOS1 and SOS2 variables has changed. BDMLP and SBB used to count the number of elements in a set that are off the lower bound. BDMLP and SBB were the only two solvers in the GAMS solver portfolio with this definition. All other solvers counted elements that are off zero. The definition of SOS1 and SOS2 variables in BDMLP and SBB has been changed to the off zero definition to make their behavior more consistent with other GAMS solvers.

CBC

  • New libraries 2.10.
    • Improved handling of SOS, starting point, and symmetries.
    • Improved performance of primal heuristics regarding the handling of implicit integer variables.
    • Mini-B&B is now disabled when solving with multiple threads.
    • Changed default value for zero half cuts parameter from off to ifmove.

CONOPT 4

  • New library 4.11 with improvements in reliability and efficiency for large and difficult models.
  • New option Tol_Opt_LinF: Optimality tolerance when infeasible in Linear Feasibility Model.

CPLEX/CPLEXD

GUROBI

  • New libraries 8.1.1.

JAMS

  • Experimental indexed EMP syntax has been updated: It can now take all the equilibrium related keywords (max, min, vi, qvi, dualvar, visol, and implicit) and shared constraints and variables.

LocalSolver

  • New libraries 8.5 (20190130).
    • Strong lower bounds based on nonlinear relaxation techniques coupled with innovative branch-and-bound heuristics.

Mosek

  • New libraries 8.1.0.80.

ODHCPLEX

  • New libraries 4.23.

OQNLP

Tools

CSDP

GAMS Studio

  • New version 0.11.1.
    • Stability and performance improvements.
    • Introduced a toolbar to replace the "Execution and Option Parameter Editor".
    • Editor
      • Improved the syntax highlighting.
      • Allow to open huge read-only (lst) files without significant memory requirement.
      • Added bookmark support.
      • Added Ctrl+Up/Ctrl+Down as shortcut for line wise scrolling without moving the text cursor.
      • Added Ctrl+Home/Ctrl+End as shortcut for page wise scrolling without moving the text cursor.
      • Added warning pop-up when trying to open a >50 Mb file in edit mode.
    • Various
      • Added Ctrl+Alt+L to extend/collapse the extended option editor
    • Forced light application theme on macOS to circumvent problems using the Dark Mode of macOS Mojave.

GDXDUMP

  • New command line option setText to show the list of set text stored in a GDX file.
  • Option symbols now lists the cardinality of a symbol in the column Records.

GDXXRW

  • Fixed exit behavior if there were some duplicate records found when reading a symbol but less than specified by maxDupeErrors: If there are no other errors the exit code is 0 now (it was 16 in the past)

GMSZIP/GMSUNZIP

  • Replaced the 32bit binaries gmszip and gmsunzip by more recent 64bit versions on macOS.

MPS2GMS

  • Turn some errors that can be safely ignored when reading an MPS file into warnings.

Object Oriented APIs

Python

  • Fixed a bug with default variable levels being 1.0 instead of 0.0.

Model Libraries

GAMS Data Library

GAMS Test Library

Solver/Platform availability

x86 32bit
MS Windows
x86 64bit
MS Windows
x86 64bit
Linux
x86 64bit
macOS
Sparc 64bit
SOLARIS
IBM Power 64bit
AIX
ALPHAECP
ANTIGONE 1.1
BARON 18.5.8
BDMLP
BONMIN 1.8
CBC 2.10
CONOPT 3
CONOPT 4
COUENNE 0.5
CPLEX 12.9 12.6 12.6
DECIS
DICOPT
GLOMIQO 2.3
GUROBI 8.1 7.5
GUSS
IPOPT 3.12
KESTREL
KNITRO 11.1 11.0
LGO
LINDO 12.0
LINDOGLOBAL 12.0
LOCALSOLVER 8.5
MILES
MINOS
MOSEK 8
MSNLP
NLPEC
ODHCPLEX 4
PATH
SBB
SCIP 6.0
SNOPT
SOLVEENGINE
SOPLEX 4.0
XA
XPRESS 33.01 32.01 29.01

27.2.0 Minor release (May 23, 2019)

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, Michael Burkhardt, and Karlo Ĺ epetanc.

GAMS System

GAMS

  • Fix problem with missing entries for scalar variables and equations in the index file for the GAMS Output in certain cases.

Solvers

CONOPT

  • New library 3.17J.
  • New library 4.12.

Lindo/LindoGlobal

  • New libraries 12.0.157.

LOCALSOLVER

  • New libraries 8.5 (20190430).

NLPEC

  • Added new option parmFile to allow to point to additional options for the GAMS run of the scalar model produced by NLPEC.

ODHCPLEX

  • New libraries 4.26.

OSIXPRESS

  • Fixed use of standalone Xpress license.

Tools

GAMS Studio

  • New version 0.11.2.
    • Stability and performance improvements.
    • GDX Viewer

Object Oriented APIs

Python

  • Fixed a memory leak in the Python 3 version of the API.
  • We plan to drop support for Python 2.6 with the next major release.

Expert Level APIs

  • Fixed a memory leak in the Python 3 version of the APIs.
  • We plan to drop support for Python 2.6 with the next major release.

27.3.0 Minor release (July 04, 2019)

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, Erwin Kalvelagen, Wolfgang Kuehn, Bruce McCarl, and Michael Winkler.

GAMS System

  • Fixed a bug that resulted in undercounting the number of physical and logical processors on Windows systems with more than 64 logical processors. GAMS/Base and many solvers use this count, e.g. when setting threads to 0 or -1.

GAMS

  • Allow domain projection with $load also if the source symbol is a variable or equation.
  • Fixed the cause for an unwanted compilation error with embeddedCode in certain situations.
  • Unified behavior of the profile option: In the past, the Profile Summary was always written, when the profiling was activated from the command line, but was sometimes omitted when set as an option. Now, the summary gets always written. It does not matter anymore, where profiling was activated.

Documentation

  • Added a Preface that reflects the history of the GAMS documentation. In particular it points out the importance of external contributors, in particular Bruce McCarl.

Solvers

BARON

  • Fixed load of Xpress library on Linux.

CBC

  • New libraries.

CONOPT

  • New library 3.17K.
  • Bug fix in library 4.12.

GAMSCHK

  • Fixed error in postopt report. Previously, the report for the column occurring last in the listing file would be omitted, and all its entries would appear in the report for the preceding column.
  • Fixed crash that occurred in some cases.
  • The above problems occurred in GAMS 26 and previous. A fix was introduced with GAMS 27, but this fix went too far and introduced new problems. With this version, the fix to 27.1 is reverted and a more moderate fix is used instead.

LocalSolver

  • Fixed missing solver log.

Mosek

  • New libraries 8.1.0.81.
  • Fixed ignoring option solvefinal.

SCIP

  • New libraries 6.0.2.

SoPlex

  • New libraries 4.0.2.

Tools

GAMS Studio

  • New version 0.11.5
    • Stability and performance improvements.
    • Added buttons to toolbar to show/hide Project Explorer, Output-, and Help widget.
    • Added shortcut Ctrl+H to focus Main widget.
    • Added shortcut Ctrl+Shift+G to focus Output widget.
    • Added shortcut Esc to close several widgets.
    • GDX Viewer:
      • Columns in the data view are now resized to the minimum width necessary to see all the data automatically.
      • Added shortcut to auto-resize all columns in the data view after the width was changed by hand (Ctrl+R).
    • Search:
      • Added shortcut Ctrl+Enter for "Search All".
      • Added ability to replace in more than one file at a time.
      • Find Next/Previous now respects all search options and will jump to the next file if there are also matches.

Object Oriented APIs

Python

  • Fixed a bug in GamsJob.interrupt() that caused an OverflowError on 64 bit platforms.