33 Distribution
Table of Contents
33.1.0 Major release (November 01, 2020)
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, Pablo Cachinero, Michael Ferris, and Ben Huebner.
Platforms
- We plan to increase the minimal required GLIBC version of the distribution for GNU/Linux to 2.17 with the next major release.
- We plan to drop support for macOS 10.13 (High Sierra) with the next major release.
GAMS System
GAMS
- Allow to set the .stage attribute for discrete variables as well. This can be useful for certain solvers like SCIP.
- The status of the Embedded Code Facility has been changed from beta to released and fully supported. The nature of embedded code (especially Python embedded code) prohibits a level of backward compatibility as we guarantee for intrinsic GAMS language features: The Python interpreter together with distributed packages are evolving. Moreover, the GAMS/Python communication (e.g. via
gams.get()/set()
) will be subject to necessary modifications. - Allow multi-line Python strings constructed with triple quotes (
'''
or"""
) in embedded Python code without getting additional spaces from the internal extra indentation. For multiple lines of Python code that use the line continuation character\
, extra indentation is not omitted. - Added new dollar control options $on/offIDCProtect to control if symbols which are declared as external input can be changed at execution time.
- Quoted text in a display statement adds now an entry to the navigation pane of the LST Viewer in GAMS Studio as well.
- Print an extra log line when execute_load (or one of its variants) is executed. When running GAMS from one of the GAMS IDEs, this log line can be clicked to open the file loaded. Also the log lines generated for execute_unload[idx] were adjusted for better distinction. So adding these lines to a model
generates this log:execute_unload 't.gdx', f; execute_unloadidx 't.gdx', f; execute_load 't.gdx', f;
- Fixed a problem using captureModelInstance with solveLink=5/6/7; if
captureModelInstance=1
andsolveLink=6/7
,solveLink
will be reset to3/4
automatically. - Fixed a problem with file names longer than 128 characters for option IDCGenerateJSON.
GMSPython
- Added the packages
urllib3
,certifi
, and their dependencies.
Solvers
AMPL, LINGO, MPECDUMP, PYOMO
- We plan to drop the meta-solvers AMPL, LINGO, MPECDUMP, and PYOMO with the next major release. Convert will continue to produce model instances in these formats with the exception of MPECDUMP.
ANTIGONE, IPOPT, SHOT, SCIP
- Updated Intel MKL to version 2020.2 on Linux and macOS.
BARON
- New libraries 20.10.16.
- Performance improvements including faster automatic differentiation, improved probing, improved local search, and improvements in BARON's cutting plane routines.
- Changed default of option WantDual to 1. That is, dual values are now provided by default for nonlinear problems, too.
- CBC updated to 2.10.5.
BDMLP
- We plan to drop the LP/MIP solver BDMLP with the next major release. Other free alternatives like Cbc outperform BDMLP.
BENCH
- We plan to drop the meta-solver BENCH with the next major release. Scripting tools provide much better facilities to generate benchmarks.
CONOPT
- New library 4.21.
- Added a warning if the unscaled residuals in a feasible model are large due to very large scale factors.
- Updated the selection of definitional constraints and improved the numerical behavior.
- Changed tolerances in the derivative debugger related to very large derivatives.
- Logic for Definition constraints updated:
- Infeasibilities are handled with a forward push routine and a backward pull routine.
- The way dense fill-in is removed is updated and the runtime is improved.
- Changed a tolerance in the Derivative debugger.
- Fixed an error in one-dimensional search when there are large 2nd derivatives or discontinuous 1st derivatives. Tried to recover a point that did not exist.
- Fixed an error with model hda: there was a conflict between monotonicity and a tolerance.
- Fixed some occurrences of system errors 12371, 12372, 88120.
- Fixed a problem with a very small pivot (non-default tolerance) that created an incorrect penalty constraint.
- Fixed an error that could appear in models with very long constraints.
Convert and ConvertD
- Added support for semi-integer and semi-continuous variables and complementarity constraints to scalar JuMP output format.
- Added information about discrete variables to the GDX files created by options
Hessian
andJacobian
for CONVERTD. - The
Hessian
andJacobian
option for CONVERTD report the.stage
variable and equation attribute in the variable and equations records only. In the past, the.prior
and.scale
attributes were reported. - Fixed an error with suppressed complementarity constraints in Pyomo output.
- Fixed handling of semicontinuous variables with lower bound equal upper bound when writing MPS files.
Couenne
- As announced, the solver Couenne has been removed from the GAMS system. For the time being, libraries of GAMS/Couenne are available at the COIN-OR GAMSlinks project. Note, that GAMS does not test or offer support for these libraries.
CPLEX
- The two solver links CPLEX and CPLEXD were merged under the name CPLEX. Features that were formerly available in only one of the two solver links are now all usable with the new CPLEX link. Those features include:
- Formerly only CPLEX:
- SOS1 and SOS2 sets
- Branching priorities
- Indicator constraints
- Conflict refiner
- Ranging / sensitivity analysis
- Solution pool for mixed-integer (quadratic) problems
- Formerly only CPLEXD:
- Better handling of quadratic constraints (e.g. providing duals)
- Hot start capability in GUSS
- Solving multiple instances of
GAMSModelInstance
in parallel using GAMS APIs Solvelink=solvelink.asyncThreads
- Cplex remote object and distributed MIP
- Benders decomposition
- Formerly only CPLEX:
- New features:
- Partial MIP starts: allow to only include variable levels to the MIP start that are integer (within the tolerance tryint, see mipstart)
- Multiple MIP starts provided via GDX (see multimipstart)
- Lower / upper bound ranging / sensitivity analysis (see bndrng)
- Lazy constraints (see userlazyconcall or .lazy)
- Added MIP statistics (e.g. number of nodes, solve time, objective lower and upper bounds) to BCH call via GDX files usergdxnameinc and usergdxname.
- Added options:
- Added option multimipstart for multiple MIP starts
- Added option conflictdisplay
- Added option multobjtolmip: the default value changes the behavior of the multi-objective optimization for continuous models
- Added option bndrng: lower / upper bound ranging / sensitivity analysis
- Added option indicoptstrict: handle erroneous indicator constraints
- Added option userlazyconcall: adding lazy constraints using BCH
- Added dot option .lazy: select linear constraints as lazy constraints
- Added option mipstopexpr: custom MIP stopping criterion to terminate during branch-and-bound
- Changed options:
- Changed behaviour of rngrestart: If the specified file extension is GDX, the ranging results will be exported as GDX instead of GMS.
- Changed behaviour of miptracenode and miptracetime: option has no effect and MIP trace is appended when the solver reports global progress
- Changed behaviour of quality: added entries regarding indicator constraints and MIP condition numbers
- Changed default of randomseed from 0 to 201909284
- Changed default of tuningtilim from 10000 to 1e75
- Changed default of tuningdettilim from 1e7 to 1e75
- Changed default of workmem from 128 to 2048
- Changed name rtlcuts to rltcuts
- Added documentation for partial MIP starts to mipstart
- Updated documentation for multiobjective optimization about CPLEX's two different strategies for continuous and discrete models (see also multobjtolmip).
- Fixed an error in BCH user heuristics where a false objective function of the incumbent was reported to CPLEX (in former CPLEXD link).
GUROBI
- New libraries 9.1.0.
- New option rngrestart: Export sensitivity information as GAMS readable format (GMS or GDX).
- New option mipstopexpr: Custom MIP stopping criterion to terminate during branch-and-bound.
- New option norelheurwork: controls NoRel heuristic.
- New option norelheurtime: controls NoRel heuristic.
- New option tunecleanup: Enables a tuning cleanup phase.
- New option poolgapabs: Maximum absolute gap for stored solutions.
- New option integralityfocus: Indicator for stricter enforcement of integrality constraints.
- New option value -1 for option .lazy: Treat as a user cut.
- Removed option
norelheuristic
. A finer control of Gurobi's NoRelHeuristic is done through the newly introduced options norelheurwork and norelheurtime.
IPOPT
- Changed default of option acceptable_iter from 15 to 0. This disables a heuristic in Ipopt to stop early with a solution that doesn't satisfy the usual termination tolerances when progress is slow.
Kestrel
- Fixed a bug that prevented job submission on Linux and macOS due to a missing certificate.
Lindo/LindoGlobal
- New libraries 12.0.210.
- Added the facility to detect irreducible infeasible and unbounded sets (IIS and IUS) and some options to control this.
- Added support for functions
div
,log2
,round
, andtrunc
.
LocalSolver
- New libraries 9.5 (20200923).
LS
- We plan to drop the least-square solver LS with the next major release. The Python method
numpy.linalg.lstsq
included in the GAMS distribution can be used within an embedded Python code section to efficiently minimize the sum of squared residuals.
MOSEK
- New libraries 9.2.28.
ODHCPLEX
- More features available in the GAMS link:
- SOS1 and SOS2 sets
- Branching priorities
- Indicator constraints
- Partial MIP starts: allow to only include variable levels to the MIP start that are integer (within the tolerance tryint, see mipstart).
- Multiple MIP starts provided via GDX (see multimipstart)
SCIP
- New libraries 7.0 (5b13bda).
- The workaround to assign a non-continuous variable to a block for problem decomposition (use suffix
.prior
withoutpriorOpt=1
) is not necessary anymore (.stage
is now available for non-continuous variables). If one runs a model that continues to use this workaround with this version of GAMS, all non-continuous variables will end up in block 1 independent of the.prior
value.
SHOT
- Gurobi is now available as solver for the MIP or MIQCP relaxation on macOS, too.
- Fixed return of final dual bound found by SHOT to GAMS (objEst attribute).
SolveEngine
- Dropped link to Satalia SolveEngine because Satalia retired SolveEngine Beta and a successor is not yet available.
SoPlex
- New libraries 5.0 (2afa64b6).
XPRESS
- New libraries 8.10.1.
- Removed option
mislpAlgorithmFinalSLP
. - Removed option
mislpAlgorithmNoFinalRounding
. - Added option
mislpCutStrategy
. - Added option mipstopexpr: Custom MIP stopping criterion to terminate during branch-and-bound.
- Removed option
Tools
GAMS IDE and GAMS Studio
- Fixed that Bonmin and Ipopt solver option files could not be created or edited via the options editor.
GAMS Studio
- New version 1.4.2.
- New feature: Remote execution with GAMS Engine.
- New feature: Allow to open
$[bat|lib]include
files by context menu,F2
shortcut, or holdingCtrl
and click on the filename. - Renamed
About GAMS
dialog toGAMS Licensing
dialog to make it more clear, that this allows to install a GAMS license. - Improved GAMS license detection during Studio start and in GAMS Licensing dialog; if the content of a license file is in the clipboard when starting Studio, a dialog to install the license is started.
- Added support for comma separated list as file filter in search dialog.
- Changed behavior of "Whole Words" search option:
$
is now considered a word boundary. - Reworked NEOS integration, e.g.:
- Allowing to kill submitted active jobs.
- Moved NEOS control options into dialog.
- Changed default parameter from
forceWork=1
topreviousWork=1
. - Improved handling of network errors.
- Minor bug fixes and improvements, e.g.:
- Added dialog for confidentiality and terms of use confirmation before submitting models to NEOS.
- Added Arrow Up/Down as shortcuts to jump to search results when
Results View
is focused. - Added tooltips to options in search dialog.
- Syntax coloring improvements.
- Fixed file codec selection for the model assembly dialog.
- Fixed and enhanced reloading mechanism of the GDX Viewer.
- Fix to ensure that lowercase directory names are always used for MIRO directories, e.g.
data_mymodel
instead ofdata_myModel
. - Fixed empty history on welcome page when starting Studio with no tabs open.
- Fixed potential crash if files are modified in the background while a dialog is open.
MessageReceiverWindow
- Since GAMS does not support any 32bit platform anymore, this tool is compiled for
x64
instead ofAny CPU
now.
MODEL2TEX
- Deprecated command line parameter
-e
has been removed.
APIs
.NET
- Since GAMS does not support any 32bit platform anymore, the .Net DLL is compiled for
x64
instead ofAny CPU
now.
C++
- Adjusted compilation of examples to new handling of critical sections in expert level APIs.
- Adjusted some examples since GAMS/CplexD is now a synonym for GAMS/Cplex.
Python
- New experimental API
gams_magic
that enables the use of GAMS in Jupyter notebooks has been added. This release ofgams_magic
should be considered a beta product and will be subject to changes in the future that may result in compatibility issues. - New API
gams_engine
that allows the creation of Python clients for GAMS Engine has been added.
Expert Level APIs
- The new files
gcmt.c
andgcmt.h
are now required when compiling/linking C expert level API files (e.g.gdxcc.c/h
) to protect critical sections in the interface for multi-threaded applications. On some platforms, this might also require linking against additional libraries, e.g.libpthread
on Linux. Adding the defineGC_NO_MUTEX
when compiling the C expert level API files provides the old behavior. - Added new call
gdxStoreDomainSets
to the GDX API to control the use of one-dimensional sets as domain sets. Disabling the storage of domain information for a one-dimensional set when writing to GDX saves memory but prevents the set from being used for domain checking.
Model Libraries
GAMS API Library
New models:
- Pgams_engine.gms : Test gams_engine API (60)
- Pneos.gms : Test submitting GAMS models to NEOS server (61)
GAMS Test Library
New models:
- lindgl05.gms : Test new functions added to GAMS/Lindo(Global) (828)
- cplex04.gms : CPLEX test suite - free gams model test (829)
- cplex05.gms : CPLEX test suite - interactive (830)
- cplex06.gms : CPLEX test suite - multiobjective (831)
- cplex07.gms : CPLEX test suite - bch incumbent checker (832)
- sens01.gms : sensitivity / ranging test (833)
- mipstopexpr1.gms : mip stop expression test (834)
- attrib01.gms : Test attribute setting and preservation in Convert (835)
- gamsjupyter01.gms : Test GAMS Jupyter Notebooks (836)
- cmi01.gms : Test captureModelInstance option with all solveLink combinations (837)
Solver/Platform availability matrix
x86 64bit MS Windows | x86 64bit Linux | x86 64bit macOS | |
---|---|---|---|
ALPHAECP 2.10 | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ |
BDMLP | ✔ | ✔ | ✔ |
BONMIN 1.8 | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ |
CPLEX 12.10 | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ |
GLOMIQO 2.3 | ✔ | ✔ | ✔ |
GUROBI 9.1 | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ |
IPOPT 3.13 | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ |
KNITRO | ✔ | ✔ | ✔ |
LGO | ✔ | ✔ | ✔ |
LINDO 12.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 12.0 | ✔ | ✔ | ✔ |
LOCALSOLVER 9.5 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS | ✔ | ✔ | ✔ |
MOSEK 9 | ✔ | ✔ | ✔ |
MSNLP | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
ODHCPLEX 5 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 7.0 | ✔ | ✔ | ✔ |
SHOT 1.0 | ✔ | ✔ | ✔ |
SNOPT | ✔ | ✔ | ✔ |
SOPLEX 5.0 | ✔ | ✔ | ✔ |
XA | ✔ | ✔ | |
XPRESS | ✔ | ✔ | ✔ |
33.2.0 Minor release (December 01, 2020)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
GAMS System
GAMS
- Fixed some problems with Implicit set definition:
- When doing a filtered load from GDX or embeddedCode, the defined set only gets the elements actually loaded but not the ones that were filtered out.
- Merging to start of existing data (with $onMulti) does not lead to out-of-order data anymore.
Solvers
CPLEX
- Fixed issue where option writemst did not produce any output.
KNITRO
- Add workaround to avoid abnormal termination of Knitro 12.2 libraries on AMD processors.
Tools
GAMS Studio
- New version 1.4.5 with various bug fixes, stability improvements and minor enhancements, e.g.:
- Added error output to system log if the given MIRO installation location is invalid.
- Disabled run actions and MIRO menu when active group has no active executable file.
- Fixed a problem with GAMS parameters being ignored in rare cases.
- Fixed a potential crash when reloading a large
gms
file while the syntax highlighter was still processing that file. - Improved Search and Replace, e.g.:
- Improved performance of
Find Next/Previous
. - Added possibility to interrupt
Find Next/Previous
. - Fixed a problem which did not allow to jump to search results beyond the 50,000th match of the search term.
- Fixed handling of wrapped lines in search.
- Improved performance of
- Improved MIRO and Engine dialogs, e.g.:
- Removed standalone MIRO assembly file dialog and added it to a new reworked MIRO deploy dialog instead.
- Fixed version comparison in GAMS Engine dialog.