36 Distribution

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:
    ejk(j,k)..  sum(i, x(i,j,k)) =e= 42;
    
    Added new command line parameter sys19 to deactivate this performance optimization.
  • 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 and dropEnv to allow environment variable modification at execution time.
  • Added Python function gams.get_env to EmbeddedCode Python to access modified environment variables after Python module os 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

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 to pardisomkl. Renamed pardiso_* 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 value make_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

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

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:
    • Changed option defaults:
    • Deprecated options:
    • Removed options:
      • treePresolve_keepBasis.
      • treePresolve.
      • treePresolveOps.
      • xslp_analyze_autosavePool.
      • xslp_analyze_recordLinearization.
      • xslp_analyze_recordLinesearch.
      • xslp_presolvePassLimit.
      • xslp_timePrint.
  • 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 to Shift+Ctrl+3.
      • macOS: From Shift-Command-3 to Control-Option-3.
    • 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.
    • 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

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 the f9 version (i.e. gdxf9def.f90) of the low-level APIs.

CFG

  • The function cfgAlgAllowsModifyProblem now reports correctly for all solvers if they provide the xyzModifyProblem 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 subfolder apifiles/C++/lib/Clang/.
    The new libgamscpp.dylib in apifiles/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 in gams2numpy.gmdFillSymbolStr that allows duplicate records in the numpy array as well as writing to non-empty symbols.
  • New optional parameter relaxedType in gams2numpy.gmdFillSymbol(Str|Raw), and gams2numpy.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 the gamsxRunExecDLL GAMS API function.

GEV

  • The gmoptr argument in function gevGetCurrentSolver 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 functions xyzReadyAPI or xyzCallSolver.
  • 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 choice ThreePass (= 1) is almost always the best one. But there some cases where DoubleForward (= 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

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:

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 the ql.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

Solvers

CONVERT

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 and Optfile 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.