38 Distribution

38.1.0 Major release (January 31, 2022)

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 Marcel Adenauer, Albert Brouwer, Arne Drud, Daniel Jungen, Scott McDonald, Tom Rutherford, Seyed Amin Sedgh, and Wenjin Zhou.

Platforms

  • As announced, dropped support for macOS 10.14 (Mojave).
  • Added support for macOS 12 (Monterey).

GAMS System

GAMS

  • Added new command line parameter dumpOptGDX to load the data needed in dumpOpt files from GDX instead of data statements.
  • Added new command line parameter ReferenceLineNo to control the line numbers written to a reference file.
  • We plan to drop the command line parameter freeEmbeddedPython with the next major release.
  • Extended the Solve Summary written with asyncSolLst=1 to include information about controlling loop indices during job submission, name of the solver called, source line number of the solve statement, resource and iteration limit.
  • Make handling of execution errors during model generation (e.g. division by zero in an equation) more consistent across different settings for the solveLink option. In the past, the error count was set to 0 automatically when returning from a solve with solveLink=0 only (which is equivalent to setting execError=0 after the solve statement). This is not done anymore.
  • Write additional information about execution errors during model generation (e.g. division by zero error) to the lst file, e.g., the equation name and index causing the problem.
  • Improve recognition of '/' as path delimiter on Windows.
  • Pause automated time dependent log update while executing embedded code sections.
  • Check for certain byte order marks (BOMs) in GAMS input files. Files with UTF8 BOM can be processed now, other BOMs generate a compilation error.
  • Added support for (mixed-integer) quadratic models whose Q matrices contain more than \(2^{31}\) = 2,147,483,648 nonzeros in their upper triangle. At this time, only the solver links for CPLEX and ODHCPLEX are capable of handling such large model instances.
  • Changed system suffix isAlfaBeta to isAlphaBeta.
  • Fixed a problem for EMP models with holdFixed model attribute.
  • Fixed a problem where IDCGenerateGDXInput, IDCGenerateGDXOutput, IDCGDXOutput , and IDCGenerateGDX did not write a GDX file if the execution was stopped with abort[.noError].

Extended Mathematical Programming (EMP)

  • Stochastic EMP: Changed the stage behavior so that it creates an explicit error when a stage gets assigned twice for the symbol. In the past, this caused erratic behavior.

Embedded Python Code Facility

  • The Python version of GMSPython has been updated to 3.8.12.

Extrinsic Function libraries

  • With the next distribution we will drop the extrinsic function library parcclib.

Solvers

BARON

  • New libraries 22.1.16.
    • new presolve implementation with novel presolve techniques for linear and nonlinear optimization problems improves performance for many problem classes
    • more classes of SOCPs are now recognized
    • new lift-and-project implementation that extends the previous RLT implementations to generic NLPs and MINLPs and leads to substantial reduction of duality gaps for difficult problems
    • improved tree management, including restarts of branch-and-bound search
    • improved branching routines for the identification of most important branching variables
    • dynamic LP algorithm selection strategy improves robustness for numerically difficult problems by automatically choosing between CPLEX (if licensed) and CLP/CBC and possibly switching during the search, see also option LPSol
    • improved control on the effect of floating point round-off errors
    • faster hashing routines
    • the embedded FilterSD algorithm is now off by default
    • better integration with GAMS NLP subsolvers
    • improvements to CBC and IPOPT interfaces
    • update the Xpress interface to work with FICO XPRESS 39
  • Fixed reporting of proven irreducible infeasible sets ("IIS" instead of "(I)IS").

CONOPT

  • New libraries 4.25.
    • General improvements in the construction of the initial basis and in the startup of the optimization process, especially for very large models.
    • Many small improvements and corrections of errors found by users.

CONVERT

COPT

CPLEX

DICOPT

  • Fixed that non-default stage information was setup in sub-MIPs when prioropt=0.

KNITRO

  • New libraries 13.0.
    • Introduces an updated, parallel, branch-and-bound solver for mixed-integer optimization. This updated solver is able to exploit parallelism and uses improved heuristics to solve mixed-integer problems much faster than before.
    • Offers new initial point strategies for non-convex quadratic programs (QPs) and quadratically constrained quadratic programs (QCQPs). These new initial point strategies improve the likelihood of finding the global solution, and can be used in conjunction with the Knitro multi-start procedure to search for global or better local solutions for non-convex QP and QCQP models.
    • Offers significant robustness and speed improvements on difficult nonlinear optimization problems.
    • Offers improved performance when using the SQP and MISQP algorithms on larger models.
    • Added options:
      • ncvx_qcqp_init: Specifies the initialization strategy used for non-convex QPs and QCQPs.
      • mip_cutoff: This value specifies the objective cutoff value for MIP.
      • mip_heuristic_lns: Specifies whether or not to enable the MIP large neighborhood search (LNS) heuristics.
      • mip_liftproject: Specifies rules for adding lift and project cuts.
      • mip_multistart: Use to enable MIP multi-start at the branch-and-bound level.
      • mip_numthreads: Specify the number of threads to use for MIP branch and bound.
    • Renamed options (old option names still available as synonyms but deprecated):
    • Added option values:
    • Changed option defaults:
  • Fixed possible error of incorrect Jacobian for QCP models.

Lindo/LindoGlobal

  • New libraries 13.0.319.

LocalSolver

  • As announced, dropped LocalSolver and LocalSolver70.

MOSEK

  • New libraries 9.3.11.
  • Added support for LPs and MIPs with more than \(2^{31}\) entries in the coefficients matrix.

Octeract

  • New libraries 4.1.0.
    • Reduced memory requirement and improved performance.

ODHCPLEX

SCIP Optimization Suite

SHOT

XPRESS

  • New libraries 39.01.03.
    • Improved MIP performance:
      • The Optimizer now uses an ML module to decide whether to use in-tree cutting. See autoCutting.
      • Improved separation of Mixed Integer Rounding (MIR) cuts.
      • Improved cut activation and deactivation strategies.
      • Improved application of strong branching during the tree search.
      • More information carried through a MIP restart.
      • The 'R' local search heuristic will now be called more frequently in the early phase of a MIP solve.
    • Improved crossover performance after a Barrier solve through automatic objective perturbation. See barObjPerturb.
    • Improved Barrier performance for large problems on CPUs that support AVX2 (requires setting cpuPlatform to -2).
    • New options:
      • autoCutting: Automatically decide whether to generate cutting planes at local nodes in the tree.
      • barObjPerturb: Defines how the barrier perturbs the objective.
      • ioTimeout: Maximum number of seconds to wait for an I/O operation before it is cancelled.
      • maxStallTime: Maximum time in seconds that the Optimizer will continue to search for improving solution after finding a new incumbent.
      • preCliqueStrategy: Determines how much effort to spend on clique covers in presolve.
      • siftPresolveOps: Determines the presolve operations for solving the subproblems during the sifting algorithm.
    • Changed option default of xslp_mipDefaultAlgorithm: 1.
  • Added option fixoptfile: name of option file which is read just before solving the fixed problem.
  • Changed default value of option mipAddCutoff and mipRelCutoff to 0.
  • Fixed unnecessary solve of fixed MIP (see mipCleanup) when solving a linear program as MIP.

Tools

BIB2GMS

CSV2GDX

  • Check for certain byte order marks (BOMs) in input files. Files with UTF8 BOM can be processed now, other BOMs generate an explicit error.

GAMS Studio

  • New version 1.9.4.
    • Added Project Options editor.
    • Added possibility to create an empty project.
    • Adjusted loading from a model library to add files to active project working directory if "Open in existing project" is checked.
    • Added selection of user instances on GAMS Engine SaaS.
    • Added selection of namespaces on GAMS Engine Server.
    • Stability improvements, bug fixes, and minor enhancements, e.g.:
      • Expanded MIRO installation location on macOS if AppBundle has been selected.
      • Adjusted check if the MIRO data contract is available before the MIRO app is deployed.
      • Changed mouse wheel behavior in tab bars:
        • Mouse Wheel Up/Down: moves active tab
        • Ctrl + Mouse Wheel Up/Down: changes active tab
      • Added touch pad support for tab bars.
      • Added highlight in LST file for current section header of LXI viewer.
      • Changed behavior of search in selection: the search selection is now only set once until the user resets it.
      • Changed "Clear" button to remove search selection on first click when present.
      • Fixed non-overridden recurrence of immediate options on command line parameters.
      • Fixed jump behavior of search when using "This File" and navigating different files.
      • Fixed Find Next broken for results across multiple files.
      • Fixed crash on showing "Project Options" for a project without a runnable gms file.
      • Fixed search not updating cache when document has changed.
      • Fixed Clear Selection button not working as intended, when search scope was set to anything but "Selection".
      • Fixed random crash in Search and Replace dialog.
      • Fixed that checks for file type did not ignore casing (gms, Gms, GMS are all valid).
      • Fixed that the default file filter in search dialog expected files to include a '.' character on non-windows platforms.
      • Fixed file filter in search dialog not being ignored for scopes "This File" and "Selection".
      • Fixed search jump behavior when current file is excluded by file filter.
      • Fixed completer and syntax help activation for user defined GAMS source files.

GDXDIFF

  • Reduce size of output GDX file in case of input files without differences.
  • Added new option ignoreOrder.

GDXMRW

  • We mark GDXMRW as deprecated and may remove it in a future release. Please use GAMS Transfer Matlab instead. If you encounter issues with the transition to GAMS Transfer Matlab or if you have any feature requests for GAMS Transfer Matlab, do not hesitate to contact us through support.

HEXDUMP

APIs

C++ high-level API

  • Removed conversion of mapped network drives to UNC paths.
  • Fixed addition of GAMS system directory to PATH on Windows.

GAMS Transfer Matlab

GAMS Transfer Python

  • GAMS Transfer now works with Embedded Python Code.
  • New read-only Container type called ConstContainer (high reading performance).
  • New argument types for methods listVariables() and listEquations() to filter by variable or equation type, respectively.
  • The method listSets() does not include aliases in the returned list anymore.
  • The Container.read() argument values has been renamed to records.
  • Fixed bug in SpecialValues.isNegInf() that did not properly detect scalar -inf.
  • Fixed error handling when invalid records are set directly with .records.

GDX

  • Internal adjustment to detection of special values when writing to GDX. The updated GDX behavior will allow better differentiation between distinct double-precision values that the user wants mapped to distinct special values. For example, -0.0 is no longer confused with +0.0, and different IEEE NaN values can map to different GAMS special values.

GMO

  • Added routines gmoGetRowQNZOne64, gmoMaxQNZ64, and gmoObjQMatNZ64 to get element counts as 64-bit integer.
  • Adjust routines gmoGetRowQNZOne, gmoMaxQNZ, and gmoObjQMatNZ to return -1 if the element count is too large for a 32-bit integer.
  • Added routines gmoLNZEx and gmoLNZEx64 to get the exact count of linear nonzeros in the Jacobian matrix, and adjusted the description of gmoLNZ and gmoLNZ64 to make clear that these are legacy routines returning an overestimate of this count, especially when gmoUseQ is true.
  • Fix gradient intervals for functions involving power(x,i) for i >= 4 and even.

High-level APIs

  • The GAMSDatabase GDX export method now writes regular instead of just relaxed domain information if available.

PAL

  • Added function palIsAlpha. palIsAlfa has been deprecated.

Python

  • Added support for Python 3.10.
  • We plan to drop support for Python 3.6 in a future GAMS release.

Model Libraries

GAMS Data Library

New model:

GAMS Test Library

New models:

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
COPT 3.0
CPLEX 20.1
DECIS
DICOPT 2
GLOMIQO 2.3
GUROBI 9.5
GUSS
IPOPT 3.14
KESTREL
KNITRO 13.0
LGO
LINDO 13.0
LINDOGLOBAL 13.0
MILES
MINOS 5.6
MOSEK 9
MSNLP
NLPEC
OCTERACT 4
ODHCPLEX 6
PATH
QUADMINOS 5.6
SBB
SCIP 8.0
SHOT 1.1
SNOPT 7.7
SOPLEX 6.0
XA
XPRESS 39.01

38.2.0 Minor release (February 17, 2022)

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 Gwendal Nivanen.

GAMS System

GAMS

  • Fixed an incorrect evaluation of intrinsic functions (and their derivatives) having a variable number of arguments (e.g. edist or poly). This error did not occur in all cases: it depended on a missing or incorrect initialization in the calling environment.
  • Fixed a problem in the extrinsic function declaration which required <FuncName> to be case sensitive.

Solvers

BARON

  • New libraries 22.2.3.

CONOPT

  • New libraries 4.26.
    • Removed option "Flg_Crash_Basis".
    • Changed default of option Lim_Start_Degen from 10 to 100.

CONVERT

  • Fix missing semi-colon at end of comment in lingo output.
  • Fix unary minus in lingo output.

COPT

  • Added option readparams to instruct COPT to read an additional parameters file.

CPLEX

  • Fix solution pool export: Previously the solution pool was only exported if CPLEX terminated successfully with a solution. Now, the solution pool GDX is exported independent of the CPLEX termination status, but may contain no solution. solnpoolpoprepeat and solnpoolpopdel still don't have any effect if CPLEX terminated unsuccessfully.

GAMSCHK

  • Add a missing initialization for the case where no subsolver is called. Without this initialization, incorrect output would occur.

Ipopt

  • New libraries 3.14.5.
    • Fixed that marginals were always zero if Ipopt stopped due to reaching a timelimit.

XPRESS

  • New libraries 39.01.04.

APIs

High-level APIs

  • Fixed a problem with GAMSModelInstance.Instantiate complaining about a missing dictionary file. This happened when a (default) solver for the model type of the instance is active which does not use a dictionary.

GAMS Transfer Python

  • Added new property shape to Parameter, Variable, and Equation to report the corresponding matrix shape if toDense or toSparseCoo are called.
  • Fixed bug with array generation (1D symbols): toDense will now generate a (n,) array instead (1,n); harmonized this behavior with toSparseCoo.
  • Fixed behavior: when toDense is called on a scalar symbol an array of shape () will be returned instead of a float.
  • Fixed behavior: when toSparseCoo is called on a scalar symbol a sparse coo_matrix of shape (1,1) will be returned instead of a float.
  • Better handling of numeric domain information within setRecords methods: numeric entries are now converted to str and generate categories from the str equivalents.

GMO

  • The default for the property gmoHessInclQRows was accidentally changed to false with GAMS 35.1.0. With this release, it has been changed back to its original setting of true. That is, also if useQ is set, the Hessian will include information on quadratic equations by default again.

38.2.1 Maintenance release (February 19, 2022)

Solvers

CONOPT

  • Fixed warning about unknown option name "FLG_CRASH_BASIS" (introduced with GAMS 38.2.0).

Convert

Octeract

  • Avoid that an ObjEst of ±1.797693134E308 is reported as 1797693134 in GAMS tracefile.

38.3.0 Minor release (April 05, 2022)

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 Daniel Dias, Antti Lehtila, Scott MacDonald, Evangelos Panos, Richard Waltz and Eric Williams.

GAMS System

GAMS

  • Fixed wrong numbers about infeasibilities (e.g., in the report summary) when bounds with value EPS are involved.
  • Fixed potential unwanted domain violation error when implicit set definition is used while $onMulti is active to allow a redefinition of symbol data.
  • Fixed potential error when loading data filtered from embedded code.

Solvers

BARON

  • New libraries 22.3.21.

CONVERT

  • Fixed export of variable attribute stage for discrete variables when using option DumpGDX.
  • Fixed that coefficients in QCMATRIX section were wrong. They had only half its value.
  • Fixed missing asterisk for bilinear terms in CplexLP format.

COPT

  • Fixed that indicators from solver options file were ignored.

CPLEX

  • Fixed bug with registering an advanced basis.
  • Fixed CPLEX solution status CPX_STAT_NUM_BEST. This status is mapped to GAMS model status feasible.
  • Fixed interactive mode (when no trigger file is set).

GUROBI

  • New libraries 9.5.1.

IPOPT

  • Fixed that names for vector entries corresponding to inequality equations (as shown with print_level ≥ 8) could be incorrect due to a wrong mapping of indices.

KNITRO

  • Fixed unnecessary calls to Knitro evaluation callbacks for linear or quadratic constraints.

Mosek

  • New libraries 9.3.18.

Octeract

  • New libraries 4.2.0.
    • Improved performance, in particular for problems with quadratic structures.
    • CPLEX is now automatically chosen as subsolver, if licensed.

SCIP Optimization Suite

XPRESS

  • New libraries 39.01.05.
  • Changed option default of xslp_iterLimit: -1 (auto).

Tools

MODEL2TEX

  • Fixed a crash that occurred when SameAs was used in equations.

MPS2GMS

  • Fixed that variables in SOS of type 2 were written as SOS of type 1 to GDX file.
  • Fixed that upper bounds of 100 for (semi)integer variables were lost.
  • Fixed that N-rows that did not specify objective functions were not omitted in parameter p (equation right-hand sides).
  • Fixed that nonzero coefficients with absolute value at most 1e-20 were lost.
  • Fixed that C-rows had arbitrary right-hand side value in GDX file (though this value was not accessed from the GAMS model).
  • Fixed that an objective constant (nonzero RHS for objective row in MPS file) was lost.
  • Fixed that off-diagonal elements in QUADOBJ and QSECTION sections were not handled correctly.

GAMS Studio

  • New version 1.9.6 with various bug fixes, stability improvements, and minor enhancements, e.g.:
    • Added Page-up/-down keys to extend block edit selection.
    • Added separator line on Windows in horizontal headers of tables and tree views.
    • Remote jobs now can be kept active on Studio exit.
    • Fixed crash in GDX Viewer related to reading a file containing negative UELs.
    • Fixed empty log file when using logOption=2.
    • Fixed search not properly counting search results across multiple files.
    • Fixed "Replace All" preview wrongfully including read-only files.
    • Fixed "Search" not always jumping to a result outside current file.
    • Fixed NEOS freezing when the GMS file is not located in the working directory.

APIs

GAMS Transfer Python

  • Fixed memory leak associated with gams2numpy.