36 Distribution
Table of Contents
36.1.0 Major release (August 02, 2021)
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, Ricardo Manuel Pinto de Lima, Bruce McCarl, Scott McDonald, and Kirk A. Yost.
GAMS System
- The End User License Agreement (
eula.pdf
in the GAMS system directory) has been updated to version 08/2021.
GAMS
- Improved performance of model generation for certain equations where the index order of the equations caused an out of order index reference of variables like in this example:
Added new command line parameter sys19 to deactivate this performance optimization.ejk(j,k).. sum(i, x(i,j,k)) =e= 42;
- Added new function platformCode and new compile time constants to be used with it.
- Added information about available CPU sockets, cores, and threads to the log.
- Improve error message for invalid values of the
.scale
attribute. - Allow to read environment variables and command line parameters at execution time in put context.
- Added Put_Utility commands
setEnv
anddropEnv
to allow environment variable modification at execution time. - Added Python function
gams.get_env
to EmbeddedCode Python to access modified environment variables after Python moduleos
has been initialized. - Fixed a problem causing an unexpected error when beginning execution time embedded code as first statement after starting from a restart file.
- Fixed a potential warning using execution time embedded code after starting from a restart file which was created with action=c.
Windows Installer
- Windows installer is now built with
Inno Setup 6
. - Command line parameter
/allUsers=yes|no
has been deprecated and will be removed in a future GAMS release. Use the new parameter/installAllUsers=yes|no
instead. - New command line flags
/allUsers
and/currentUser
can be used to explicitly control if the installation is performed in administrative or non-administrative installation mode.
GMSPython
- The Python version has been updated to
3.8.10
.
Solvers
Bonmin
- We plan to drop Bonmin and BonminH with one of the next major releases.
CONVERT
- Added support for quadratic constraints in formats CplexLP, CplexMPS, and FixedMPS.
- Added option SkipNRows.
- Added option QExtractAlg.
- Fixed writing
eps
for zero marginals of non-basic variables or equations in format Gams.
CPLEX
- Added the following options:
- multobjoptfiles: List of option files used for individual solves within multi-objective optimization.
- usercut: User cut activation.
- usercutpool: Indicator to use user cuts.
- qextractalg: quadratic extraction algorithm in GAMS interface.
- Fixed handling of special values (incl. missing zero values) in multimipstart.
- Fixed update of Jacobian elements within GUSS scenarios.
- Fixed setting gubcovers via cuts.
GUROBI
- Added option qextractalg: quadratic extraction algorithm in GAMS interface.
GUSS
- Added support of option savepoint for scenario solves.
Ipopt and IpoptH
- New libraries 3.14.1.
- Attention
- Value
pardiso
of option linear_solver to choose Pardiso from Intel MKL has been renamed topardisomkl
. Renamedpardiso_*
options to pardisomkl_*.
- Added value
pardiso
for option linear_solver to choose to use Pardiso from the Pardiso Solver Project. This solver is not included in the GAMS distribution. A user needs to provide a Pardiso library. Added option pardisolib to specify name and path of Pardiso library. Added pardiso_* options. - Added option hsllib to specify name and path of HSL library to be loaded at runtime (for users of GAMS/Ipopt or users that want to use HSL_MA77).
- Changed default of honor_original_bounds to
no
. In addition, Ipopt now ensures that, in addition to option bound_relax_factor, variable bounds are relaxed by at most constr_viol_tol. The Ipopt log now shows the violation of variable bounds in the solution. - Fixed that marginals for fixed variables were not computed if fixed_variable_treatment is set to
make_parameter
(the default). Added valuemake_parameter_nodual
for this option to disable calculation of marginals for fixed variables (which can cost an extra evaluation of the Jacobian). - Added options max_wall_time, print_options_mode, print_advanced_options, and timing_statistics.
- Ipopt should now be threadsafe also when used with MUMPS as linear solver (a mutex ensures that only one thread executes MUMPS at a time).
- For more information, including bugfixes, see the Ipopt 3.14.0 release notes.
- Changed default of constr_viol_tol to 1e-6.
- GAMS ResLim now sets the default for Ipopt option max_wall_time instead of max_cpu_time.
- If GAMS ScaleOpt is set, i.e., the model has been scaled manually, then the default of option nlp_scaling_method is set to
none
. - The interface has been extended to warmstart Ipopt if a modified model instance is solved, e.g., in the context of GUSS. For the warmstart, previously initialized Ipopt data structures are reused if possible and option warm_start_init_point is enabled, see also Warmstarting IPOPT.
- Enabled solvelink=6 capability for Ipopt and IpoptH.
- Update of HSL routines (IpoptH only):
- MA57 3.11.0.
- HSL_MC68 3.3.1.
- HSL_MA86 1.6.0.
- HSL_MA97 2.6.0.
- Update of MUMPS to version 5.4.0.
- Changed default of mumps_pivot_order from 5 to 7.
JAMS
- Updated behavior and logging for models with
equ.var
matches in the model statement. If the trivial (aka empty or default) model transformation is specified in the EMP info file, nothing changes: the matches are used as before. In contrast, if a nontrivial or nonempty transformation is specified, the matches are ignored when creating the reformulated model and a message to this effect is sent to the log.
KNITRO
- New libraries 12.4.
- Improved performance on mixed-integer nonlinear problems (MINLP).
- Improved performance when using the limited-memory quasi-Newton Hessian approximation.
- Added option linsolver_maxitref: Indicates the maximum allowable number of iterative refinement steps applied when a linear system is solved inside Knitro.
- Added option bfgs_scaling: Specify the initial scaling to use for the BFGS or L-BFGS Hessian approximation.
- Added option bar_linsys_storage: Indicates how to store in memory the linear systems used inside the Interior/Direct algorithm for computing primal-dual steps.
- Added option mip_cutting_plane: Specifies when to apply the cutting plane procedure.
- Added option mip_heuristic_diving: Specifies whether or not to enable the MIP diving heuristic.
- Added option mip_heuristic_feaspump: Specifies whether or not to enable the MIP feasibility pump heuristic.
- Added option mip_heuristic_mpec: Specifies whether or not to enable the MIP MPEC heuristic.
- Added option mip_heuristic_strategy: Specifies the level of effort applied for the MIP heuristic search used to try to find an initial integer feasible point.
- Deprecated option
mip_heuristic
: Use mip_heuristic_strategy instead.
- Added option qextractalg: quadratic extraction algorithm in GAMS interface.
Lindo/LindoGlobal
- New libraries 13.0.291.
LocalSolver
- New libraries 10.5 (20210624).
MOSEK
- Added option QEXTRACTALG.
- New libraries 9.2.47.
ODHCPLEX
- New libraries 6.0.4.
PATH
- New libraries 5.0.04 (maintenance release) include capability to further limit preprocessor output by specifying output_preprocess_level -1.
SCIP
- New libraries 7.0 (d012dac064).
- Updated Ipopt to Ipopt 3.14.1, see also above.
SHOT
- New libraries 1.1 (c898dd84).
- SHOT can now call itself to solve fixed NLP problems. Activated with new value 2 for option Primal.FixedInteger.Solver. For nonconvex problems it is still recommended to use an external NLP solver.
Added also options Subsolver.SHOT.ReuseHyperplanes.Fraction, Subsolver.SHOT.ReuseHyperplanes.Use, Subsolver.SHOT.UseFBBT. - Partition convex nonseparable quadratic functions as separate constraints using an eigenvalue decomposition-based reformulation. Activated with new option
Model.Reformulation.Quadratics.UseEigenValueDecomposition
. - Support for performing an initial polyhedral approximation of the nonlinear feasible set before feasibility-based bound tightening. Activated with new option Model.BoundTightening.InitialPOA.Use.
Added also options Model.BoundTightening.InitialPOA.CutStrategy, Model.BoundTightening.InitialPOA.IterationLimit, Model.BoundTightening.InitialPOA.StagnationIterationLimit, Model.BoundTightening.InitialPOA.ConstraintTolerance, Model.BoundTightening.InitialPOA.ObjectiveConstraintTolerance, Model.BoundTightening.InitialPOA.ObjectiveGapAbsolute, Model.BoundTightening.InitialPOA.ObjectiveGapRelative, Model.BoundTightening.InitialPOA.StagnationConstraintTolerance, Model.BoundTightening.InitialPOA.TimeLimit. - Added support for semi-continuous and semi-integer variables.
- Added support for special ordered sets.
- Improved support for generating supporting hyperplanes for the entire nonlinear feasible set instead of the feasible sets for the individual constraint functions. Activated with new option Dual.ESH.Rootsearch.UseMaxFunction.
- Improved support for passing nonconvex quadratic functions directly to the MIP solver (if supported).
- Added option ModelingSystem.GAMS.QExtractAlg.
- Added option Output.GAMS.AlternateSolutionsFile.
- Added option Dual.HyperplaneCuts.SaveHyperplanePoints.
- Added option Dual.MIP.InfeasibilityRepair.Use.
- Added option Dual.ReductionCut.Use.
- Changed default of option Subsolver.Cbc.Scaling from 0 to 4.
- Changed default of option Subsolver.Cplex.NumericalEmphasis from 0 to 1.
- Changed default of option Subsolver.Gurobi.PoolSolution from 1 to 10.
- Changed default of option Model.BoundTightening.FeasibilityBased.TimeLimit from 5 to 2.
- Changed default of option Termination.DualStagnation.IterationLimit from 50 to ∞.
- Changed meaning of values 1 and 2 for option Model.Reformulation.Bilinear.IntegerFormulation.
- SHOT can now call itself to solve fixed NLP problems. Activated with new value 2 for option Primal.FixedInteger.Solver. For nonconvex problems it is still recommended to use an external NLP solver.
- Updated Ipopt to Ipopt 3.14.1, see also above.
XPRESS
- New libraries 38.01.03.
- Xpress Optimizer Release Notes:
- Improved MIP performance.
- It is now possible to activate a special heuristic solve mode for MIPs, which emphasizes finding new solutions.
- Improved sifting algorithm when used with Barrier.
- Improved numerical stability of the Barrier algorithm.
- Xpress Nonlinear Release Notes:
- Significant MINLP performance improvements due to improved nonlinear presolver.
- Improved performance on instances with very large separable nonlinear expressions due to imroved automatic differentiation.
- Multistart now uses the nonlinear primal integral for tie breaking.
- Added options:
- barPerturb: In numerically challenging cases it is often advantageous to apply perturbations on the KKT system to improve its numerical properties.
- barRefIter: After terminating the barrier algorithm, further refinement steps can be performed.
- clamping: Allows for the adjustment of returned solution values such that they are always within bounds.
- clamping_dual: Adjust primal slack values to always be within constraint bounds.
- clamping_primal: Adjust primal solution to always be within primal bounds.
- clamping_rdj: Adjust reduced costs to always be within dual bounds implied by the primal solution.
- clamping_slacks: Adjust dual solution to always be within the dual bounds implied by the slacks.
- genConsAbsTransformation: Specifies the reformulation method for absolute value general constraints at the beginning of the search.
- heurEmphasis: Specifies an emphasis for the search w.r.t. primal heuristics and other procedures that affect the speed of convergence of the primal-dual gap.
- inputTol: Tolerance on input values elements.
- mipComponents: Determines whether disconnected components in a MIP should be solved as separate MIPs.
- mipConcurrentNodes: Sets the node limit for when a winning solve is selected when concurrent MIP solves are enabled.
- mipConcurrentSolves: Selects the number of concurrent solves to start for a MIP.
- mipRestartFactor: Fine tune initial conditions to trigger an in-tree restart.
- mipRestartGapThreshold: Initial gap threshold to delay in-tree restart.
- netStallLimit: Limit the number of degenerate pivots of the network simplex algorithm, before switching to either primal or dual simplex.
- nodeProbingEffort: Adjusts the overall level of node probing.
- outputControls: Toggles the printing of all control settings at the beginning of the search.
- ppFactor: Partial pricing candidate list sizing parameter.
- preFolding: Determines if a folding procedure should be used to aggregate continuous columns in an equitable partition.
- siftPasses: Determines how quickly we allow to grow the worker problems during the sifting algorithm.
- siftSwitch: Determines which algorithm to use for solving the subproblems during sifting.
- xslp_presolveOps_noLinear: Avoid performing linear reductions at the NLP level.
- xslp_presolveOps_noSimplifier: Avoid simplifying nonlinear expressions.
- Added option values:
- deterministic: 2.
- mipRestart: 2.
- Changed option defaults:
- mipPresolve: -257 to -1.
- mipPresolve_symmetryReductions: 0 to 1.
- Deprecated options:
heurStrategy
. Use heurEmphasis instead.xslp_matrixTol
. Use matrixTol instead.
- Removed options:
treePresolve_keepBasis
.treePresolve
.treePresolveOps
.xslp_analyze_autosavePool
.xslp_analyze_recordLinearization
.xslp_analyze_recordLinesearch
.xslp_presolvePassLimit
.xslp_timePrint
.
- Xpress Optimizer Release Notes:
- Added option algAfterNetwork: Algorithm to be used for the clean up step after the network simplex solver.
- Added option qextractalg: quadratic extraction algorithm in GAMS interface.
- Removed options that were marked deprecated in GAMS 35.
Tools
Cholesky, Eigenvalue, Eigenvector, Invert
- We will remove the tools cholesky, eigenvalue, eigenvector, invert in a future GAMS release. Similar functionality has been added via
$libInclude linalg {cholesky,eigenvalue,eigenvector,invert}
. See the header of the file in<sysdir>\inclib\linalg.gms
for details.
GAMS Studio
- New version 1.7.2.
- Dropped support for Ubuntu 16.04 LTS and openSUSE Leap 15.2 because the updated AppImage now requires glibc 2.27. Dropped support for Debian 9.
- New feature: Allow specifying location of User Model Libraries in Settings dialog.
- Improved visual distinction between current and other groups in Project Explorer.
- Added a warning message before printing large files.
- Added a list of solvers for each model type to be selected in Extended Parameter Editor and Configuration Editor.
- Added shortcut
Alt+I
(macOS:Option+I
) to fold blocks of dollar control options. - Added setting to automatically collapse dollar control option blocks when opening a file (default: off).
- Changed shortcuts to show/hide Extended Parameter Editor
- Windows/Linux: From
Ctrl-Alt-3
toShift+Ctrl+3
. - macOS: From
Shift-Command-3
toControl-Option-3
.
- Windows/Linux: From
- Improvements for syntax highlighter and code completer, e.g.:
- Added support for system attributes and compile-time constants.
- Added support of quoted elements in syntax highlighter.
- Disabled code completer for certain code blocks like
$onEmbeddedCode
or$onPut
.
- Improvements for remote execution support, e.g.:
- Added support for GAMS Engine server with self-signed certificate (
https
). - Added support for GAMS Engine server with
http
protocol. - Added option to remember login credentials for GAMS Engine in Settings.
- Renamed "MIRO" Settings page to "Remote" to better reflect new content.
- Improved GAMS Engine dialog.
- Added file type
EFI
to send additional files to a GAMS Engine server.
- Added support for GAMS Engine server with self-signed certificate (
- Stability improvements and minor bug fixes, e.g.:
- Fixed duplicate file entries in the Project Explorer when having two references with different case to a single file
- Fixed Studio title bar appearing outside of screen in some cases.
- Fixed wrong content of "File" tab in Reference File Viewer.
- Fixed missing check of some data locations for GAMS license file.
- Fixed
ESC
key not behaving like close button in Settings dialog. - Fixed crash when reopening a closed log tab.
- Fixed that MIRO menu entries were not enabled when MIRO was automatically discovered.
- Fixed that theme could be broken in Settings dialog when using cancel button.
GDXRank, GDXRename
- We will remove the tools gdxrank and gdxrename in a future GAMS release. Similar functionality has been added via
$libInclude gdxservice {gdxrank,gdxservice}
. See the header of the file in<sysdir>\inclib\gdxservice.gms
for details. - The
$libInclude rank
functionality now uses$libInclude gdxservice gdxrank
to sort a one dimensional parameter instead of the gdxrank tool.
MCFilter
- We will remove the tool mcfilter in a future GAMS release. In case you depend on this tool, this discussion at the GAMS Forum gives an alternative.
MSAppAvail, Shellexecute, XLSTalk
- We will remove the tools msappavail, shellexecute, xlstalk in a future GAMS release. Similar functionality has been added via
$libInclude win32 {msappavail,shellexecute,xlstalk}
. See the header of the file in<sysdir>\inclib\win32.gms
for details.
APIs
- As announced we removed all Delphi variants but the
dcp
version (i.e.gdxdcpdef.pas
) and all Fortran variants but thef9
version (i.e.gdxf9def.f90
) of the low-level APIs.
CFG
- The function
cfgAlgAllowsModifyProblem
now reports correctly for all solvers if they provide thexyzModifyProblem
functionality instead of a only for a fixed (and incorrect) list of solvers.
C++ high-level API
- Removed dependency on Qt. Now requiring C++17.
- Added support for Microsoft Visual Studio 2019.
- As announced we dropped support for Microsoft Visual Studio 2015.
- As announced, the Clang compiled version of
libgamscpp.dylib
does not work on macOS 10.14 or older anymore. It has been moved to the subfolderapifiles/C++/lib/Clang/
.
The newlibgamscpp.dylib
inapifiles/C++/lib/
is compiled with GCC.
gams_engine
- Updated for GAMS Engine version 21.06.09 and now using OpenAPI Generator version 5.1.1.
gams2numpy
- New optional parameter
merge
ingams2numpy.gmdFillSymbolStr
that allows duplicate records in the numpy array as well as writing to non-empty symbols. - New optional parameter
relaxedType
ingams2numpy.gmdFillSymbol(Str|Raw)
, andgams2numpy.gdxWriteSymbol(Str|Raw)
that allows to automatically convert the columns of the numpy array into the required data types if possible. - Fixed a bug that prevented error messages from being shown on Linux and further improved error handling.
GAMSX
- As announced, we have dropped the GAMSX API with this release. The example
xp_example2
for various languages has been adjusted to call the GAMS executable instead of thegamsxRunExecDLL
GAMS API function.
GEV
- The
gmoptr
argument in functiongevGetCurrentSolver
is deprecated and not used anymore. It will be removed from this function in some future release. Moreover, the function should only be used in solver link library functionsxyzReadyAPI
orxyzCallSolver
. - Add GEV option
SavePoint
to query the savePoint option.
GMO
- Added option
qExtractAlg
to control the technique used to extract quadratic structure from GAMS models. This structure extraction happens automatically for any QCP model type (e.g. QCP, MIQCP) and the current default choiceThreePass
(= 1) is almost always the best one. But there some cases whereDoubleForward
(= 2) performs much better.
Solverlink library interface
- The API of a solver link library has changed. This will only effect users that install additional solvers or build and maintain own solver link libraries. The older version of the API is deprecated and will be removed in a future GAMS release. Moreover, COIN-OR project GAMSlinks provides a template to work with both new and old APIs.
Model Libraries
GAMS API Library
- Updated models CPPex2, CSex2, Cex2, Fex2, Jex1, Jex2, PBuildXPLevelAPI, and VBex2 to adjust for the removal of the GAMSX API.
- Updated model Pgams_engine to be compatible with the latest
gams_engine
API.
GAMS Data Library
- Many models have been adjusted to use the library include
win32
to compensate for the future drop of the utilities msappavail and shellexecute. - Updated models CHP, CHP2, Portfolio, Samurai, SpawnGAMSExcel, Sudoku, and transxls. The corresponding Excel files have been changed from format
.xls
to.xlsm
. Moreover, the VBA code has been adjusted to work without the dropped GAMSX API. The registry key to find the GAMS system directory has been updated. - Model
Samurai2
has been dropped since it became a duplicate of model Samurai after the removal of the GAMSX API. - Model LeastSquares has been updated to use
$libInclude linalg OLS
for solving the linear regression problem. The model also works now with more descriptive data set (diabetes data).
GAMS Test Library
New models:
- platform01.gms : Test platform function
- qcp12.gms : Test different GMO Q extraction algorithms
- asyncfix01.gms : Test asynchronous solves with holdFixed
- savep2.gms : Test savepoint with async solves
- convert16.gms : CONVERT test suite - Basic test of convert output for quadratic model
- embpy09.gms : Test Embedded Code after restart
- scensol8.gms : Check if solver with modify problem use hotstart in GUSS
- gdxrename1.gms : Simple gdxrename test
- gdxrename2.gms : Tests some gdxrename stuff
- scensol9.gms : Test option savepoint in GUSS
- embpy10.gms : Test Embedded Code for Environment Variables
- etsuf01.gms : Test Execution Time Suffixes
- emp33.gms : JAMS: matches from model statement may be ignored
Models trilib01, trilib02, trilib03, parlib01, cpplib00:
- Removed jinja2 from associated source archive. It is now required to have the Python package
jinja2
installed to run theql.py
script.
Solver/Platform availability matrix
x86 64bit MS Windows | x86 64bit Linux | x86 64bit macOS | |
---|---|---|---|
ALPHAECP 2.11 | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ |
BONMIN 1.8 | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ |
CPLEX 20.1 | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ |
GLOMIQO 2.3 | ✔ | ✔ | ✔ |
GUROBI 9.1 | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ |
IPOPT 3.14 | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ |
KNITRO 12.4 | ✔ | ✔ | ✔ |
LGO | ✔ | ✔ | ✔ |
LINDO 13.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 13.0 | ✔ | ✔ | ✔ |
LOCALSOLVER 10.5 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS | ✔ | ✔ | ✔ |
MOSEK 9 | ✔ | ✔ | ✔ |
MSNLP | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
ODHCPLEX 6 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 7.0 | ✔ | ✔ | ✔ |
SHOT 1.1 | ✔ | ✔ | ✔ |
SNOPT 7.7 | ✔ | ✔ | ✔ |
SOPLEX 5.0 | ✔ | ✔ | ✔ |
XA | ✔ | ✔ | |
XPRESS 38.01 | ✔ | ✔ | ✔ |
36.2.0 Minor release (September 03, 2021)
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, Daniel Dias, Andreas Lundell, Bruce McCarl, and Tom Rutherford.
GAMS System
GAMS
- Added new command line parameter holdFixedAsync to allow the use of holdFixed for models solved asynchronously. Activating this option can lead to inconsistent solutions being reported.
- Fixed a potential crash introduced with GAMS 36.1.0 related to the improved performance of model generation.
Solvers
CONVERT
- Fixed MCP mapping for DumpGDX.
GAMSCHK
- Fix default solve behavior: if no GCK file is specified, no subsolver should be called as no solution is wanted.
GUSS
- Fixed options
OptfileInit
andOptfile
being ignored. - Added fallback to cold start in case of hot start failure.
IPOPT
- New libraries 3.14.3.
- Updated MUMPS to version 5.4.1.
MOSEK
- New libraries 9.3.4.
SHOT
- New libraries 1.1 (9a8893e7).
Tools
GAMS Studio
- New version 1.7.3 with various bug fixes, stability improvements, and minor enhancements, e.g.:
- Allow to duplicate multiple lines at once.
- Added navigation and selection by word using
ctrl+left/right
in LOG-Viewer. - Fixed highlighting issue when a symbol declaration ends with a space.
- Fixed horizontal scroll in LST viewer when cursor is out of view.
- Fixed that searching backwards in modified document was not working.
- Fixed "Replace" ignoring case sensitivity option.