50 Distribution

50.1.0 Major release (June 18, 2025)

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, Paul Buckland, Bruce McCarl, Scott McDonald, Ivan Ramirez, Lisa Restel, Greg Singleton, and Sherman Robinson.

GAMS System

GAMS

  • We plan to drop the =C= equation type with an upcoming major release. In case of concerns, contact support@gams.com.
  • Added new command line parameter memoryManager to use alternative memory manager which might overcome certain performance bottlenecks.
  • Added new command line parameter and option ECLogLine to allow suppression of log lines about embedded code initialization and execution.
  • Extended model declaration syntax for MCP models to support additional matching constructs, namely equation-variable lists.
  • More efficient communication with GAMS Studio to support visual profiling.
  • The recently modified handling of undefined domain sets is now also available in the next-generation GAMS compiler (accessible via option CompilerPreview (cp)).
  • Add support for network licenses that are served by a local license server. The command line tool gamsgetkey has been extended (--get-certificate) to download a certificate from the local license server.
  • For network licenses with node identification category 2, resources (CPU and memory) limited via Linux control groups are checked rather than the physical hardware.
  • Added system suffix IsNetworkLicense that allows to check if the license in use is a network license. Some corner cases utilizing the Grid Facility do not work with such licenses.
  • Option PreviousWork now writes a workfile compatible with GAMS 49 and newer.
  • If command line parameter IDE is not set to 1, GAMS now deletes old .lxi files (index files for the .lst file used by GAMS Studio) if they exist to avoid an asynchronous state of .lst and .lxi files.
  • Some more error message are now written to the log instead of standard output.
  • Improved performance and robustness of the execution backend connection to GAMSPy.
  • Fixed a bug when counting the number of GAMS jobs for concurrent use limitation on Windows.
  • Fixed the generation of a potentially broken dump file with empty symbols when dumpOptGDX is used.
  • Fixed a bug when creating a secure workfile or an encrypted source file with an 8-line client license file.

Embedded Code Facility

  • Allow to load symbols with unknown dimension at compile time.
  • Try to register new labels at compile time only, avoiding the error message Could not add UELS at execution time. GAMS generates an execution error when a symbol with unknown labels is read and domain checking is enabled.
  • The version of the API has been bumped to 2: The embInit and embFini calls have been dropped from the API.

Embedded Connect Code Facility

Embedded GAMS Code Facility

  • Symbols on the right (here embSymbol) in symbol<[=]embSymbol[.dimX] were not loaded correctly into GAMS. Embedded code GAMS never loads symbols implicitly. This has been fixed.

Embedded Python Code Facility

  • Allow gams.printLog() to print non-str type messages by converting them to type str first.
  • Support for the environment variable GMSPYTHONMULTINST has been dropped.

GAMS Connect

  • Adjusted the ExcelWriter to write empty symbols instead of skipping them.
  • The default of the ExcelWriter option tableOfContents::emptySymbols has been changed to True. The option is deprecated and will be removed in a future release.
  • Agents are now initialized/validated in a separate phase before execution for early detection of validation errors.
  • Fixed a bug where certain trace settings of an agent would affect subsequent agents.
  • Trace output and errors now contain the agent name as well as the agent number.
  • Improved errors for reading non-existing symbols using the GAMSReader and GDXReader.
  • Added caching mechanism for loading agent schemas for slightly better performance.
  • The GAMSWriter agent has been changed to skip symbols that do not exist in GAMS instead of raising an error when using symbols: all.
  • Fixed a bug where the GAMSWriter would write data to symbols with incompatible symbol type instead of raising an error.

GMSPython

  • Python has been upgraded to version 3.12.10.

Documentation

  • The chapter on licensing has been updated.
  • The API overview page has been revised and now focuses on all available APIs. In addition, the structure of each individual API documentation has been improved and harmonized.

Installer

  • Added Sign-up for GAMS Newsletter check box to the Windows and macOS installers.

Solvers

ANTIGONE, CBC, Ipopt, SCIP, SHOT

  • New libraries Intel MKL 2025.1.0 for Linux on x86_64.
  • New libraries ARM Performance Libraries 25.04.1 for Linux on arm64.

BARON

  • New libraries 25.3.19.
    • Improvements in integer presolve and the generation of cutting planes for integer optimization problems.

CONOPT

  • New libraries 3.17R.
  • New libraries 4.37.
    • The choice between conjugate gradients and scaled conjugate gradients in the SQP method is now a dynamic choice based on costs and benefits. This is relevant for models with many superbasics.
  • Fixed handling of options threads, threadf and threadc: Setting these in an option file now takes precendence over setting the GAMS command line option threads and fixed that they did not take effect without additionally setting the command line option threads.

CONVERT

COPT

CPLEX

  • Added support for indicator constraints in solvefinal.
  • Fixed solvefinal when used with userlazyconcall. Previously it was not guaranteed that lazy constraints added via this callback would be present in the fixed model instance as well. In this case, it was possible that the fixed model instance returned an incorrect solution.

GAMSCHK

  • Fixed issue writing to a log file whose absolute filename contains whitespace.
  • Fixed incomplete handling for logOption=4.

GUROBI

HiGHS

  • New libraries 1.10.0.
  • An implementation of cuPDLP-C for NVIDIA GPUs can now be used on Linux and Windows systems. Set option pdlp_gpu to enable the GPU use when selecting solver=pdlp. CUDA libraries and drivers need to be installed on the system and the library search path (e.g., LD_LIBRARY_PATH on Linux and PATH on Windows) needs to include the location of the CUDA libraries.

IPOPT

  • New libraries MUMPS 5.8.0.

LINDO/LINDOGLOBAL

  • Now also available for Linux on arm64.

MOSEK

ReSHOP

  • New libraries 0.4.3.

SCIP

  • Update sassy library to include changes from SCIP 9.2.2.

SHOT

XPRESS

  • New libraries 45.01.01.
    • New pre-root parallel heuristic phase: This new feature orchestrates different heuristics in parallel before the initial LP root relaxation is solved. The effort spent during this phase is mainly governed by a work limit, which can be set explicitly through the new preRootWorklimit option, or can be indirectly dialed up or down using the new preRootEffort option. This new phase is either enabled with heurEmphasis = 2, or must be explicitly enabled using one of the above options. The number of threads can be modified using preRootThreads.
    • General performance improvements.
    • New option workLimit: Maximum work (measured in work units) that the Optimizer will run before it terminates.
    • New option preRootThreads: Specifies an explicit number of threads that should be used for the Pre-root parallel heuristic phase.
    • New option preRootEffort: Dial for the work spent during the Pre-root parallel heuristic phase.
    • New option preRootWorklimit: Set an explicit work limit in work units for the Pre-root parallel heuristic phase.
    • New option barIterative: Maximum number of barrier iterations in which an iterative solver is used instead of the Cholesky decomposition.
    • New option xslp_convergenceOps_requireOTolR: Do not declare converged if still sufficient improvement in objective.
    • Changed default of option barHGExtrapolate to 0.15.
    • Changed default of option barHGMaxRestarts to 1250.
    • Changed default of option xslp_convergenceOps to 39935.
    • New option value and default -1 for xslp_presolve: Disable nonlinear presolve if and only if Optimizer presolve is disabled.
    • New option value 3 for preDomCol: Includes 1 and 2 but also looks for more generic column domination.
    • Removed option barHGOps_sqrtOmega.
  • Changed option advBasis to integer option with default 1: Load basis if suitable. This is the same as the old auto behaviour.
  • Deprecated options algorithm (use defaultAlg instead), reform, objgoodenough (use mipstopexpr instead).
  • Removed deprecated option heurStrategy.

Tools

GAMS Studio

  • New version 1.21.2:
    • Added profiler information to the editors when using the GAMS option profile.
    • Added support for temporary session checkout of network licenses.
    • Added an option to exclude hidden attributes when exporting data using the GDX Viewer. This is the new default.
    • Added support for GAMS Engine job priority.
    • Added options to the run menu for GDX, RF, and Profiler and combined run menu options for run and compile only.
    • Added Ctrl+click to the code editor to open yamlFile or yamlFileEnd defined in $onEmbeddedCode/embeddedCode in the Connect editor.
    • Added missing menu icons on macOS.
    • Restore the state of the last used run option in the toolbar on Studio start.
    • Improved search result view is now using a tree view, which shows the files, containing results, first.
    • Improved the handling of run and compile menu with separated options submenu.
    • Improved the display of 'File Used' location in Reference File Viewer.
    • Renamed profiler columns to match the documentation.
    • Fixed crash when opening a file from the Welcome Page.
    • Fixed missing syntax highlighting for end-of-line comment when led by spaces.
    • Fixed the handling of network licenses, i.e., in some cases the solver license information was not correct.
    • Fixed disappearing command line parameter when switching between a project and the Welcome Page.
    • Fixed a bug where the filter state of an unloaded symbol would not be considered in the GDX Viewer Export facility.
    • Fixed a bug where the filter of an alias would not be considered in the GDX Viewer Export facility.
    • New command line parameter --integrated-help=on/off (default: on) allows to enable/disable the integrated Help View.
    • On Windows 10: Added startup dialog to deactivate integrated Help View. This view could lead to a crash since the Help View is not supported on Windows 10 anymore.
    • Upgraded Qt to version 6.9.0.

GDXDIFF, GDXDUMP, GDXMERGE

  • Long absolute paths (>260 characters) can now be handled on Windows.

MOO

  • Added option bounds_rel_tol to specify a relative tolerance for setting the objective bounds/constraints for methods EpsConstraint and Payoff.
  • Added option equality_rel_tol to specify a relative tolerance for the equality of pareto points.
  • Added option fallback_solver to specify fallback solver(s) for methods EpsConstraint, Payoff, and Sandwiching.
  • Added option filter_efficient to activate/deactivate filtering of pareto efficient points.
  • Improved log and added several new error checks and warnings (e.g. Payoff table min/max, EpsConstraint grid interval).
  • Added plots for Payoff method (option plot needs to be activated).
  • Added method name to plot file name.
  • Improved savepoint-iteration-map file info (see debug option).
  • Fixed a bug where method EpsConstraint would be stuck in an infinite loop in case the first iteration was non-optimal.
  • Fixed sorting of pareto points based on the optimization direction.
  • Fixed a bug where the pareto points were not correctly processed and returned in case an objective has been removed after the payoff table calculation.
  • Fixed a bug where methods Payoff and EpsConstraint would abort in case of locally optimal solutions.

MPS2GMS

  • Updated MPS reader to HiGHS 1.10.0: error logging is now less verbose.

POSIX Utilities

  • Updated the bundled collection of POSIX utilities for Windows, which are usually available for the different Unix systems and therefore help to write platform independent scripts.
    • GNU Awk (awk) updated to version 5.3.0.
    • GNU coreutils (cat, cksum, comm, cp, cut, date, expr, fold, head, join, md5sum, mkdir, mv, od, paste, printf, rm, sleep, sort, tail, tee, touch, tr, uniq, wc) updated to version 8.3.2.
    • GNU diffutils (cmp, diff) updated to version 3.11.
    • GNU findutils (xargs) updated to version 4.10.0.
    • GNU grep (grep) updated to version 3.0.
    • GNU Gzip (gzip) updated to version 1.13.
    • GNU Make (gmake) updated to version 4.4.1.
    • GNU sed (sed) updated to version 4.9.
    • GNU tar (tar) updated to version 1.35.
Attention
The updated tools (with exception of GNU awk) rely on the MSYS2 compatibility layer, which provides a Unix-like environment on Windows. This slightly changes their behavior in comparison to previously bundled versions. Potentially breaking changes include:
  • Unix-style line endings (LF) by default instead of Windows-style line endings (CR+LF).
  • Paths with backslash and wildcards are not supported anymore (e.g. folder\* or folder\?).
Models can either be adapted to use forward slashes in paths and expect LF-only line endings, or the utilities in the gbin directory can be rolled back by extracting archive gbin.old.zip in the GAMS system directory. The latter is also a workaround for problems not explicitly listed above. However, gbin.old.zip will be dropped in a future GAMS release.

APIs

C++

  • Improved performance of GAMSWorkspace constructor.

GDX

  • New libraries 7.11.16.
    • Drastically improve performance of gdxOpenRead for GDX files with many UELs by reducing the memory allocation count.

GMO

  • Added property gmoQExtractDenseSwitchFactor: in exceptional cases, this may be useful to control part of the Q-matrix extraction.
  • Added property gmoQExtractDenseSwitchLog: toggle additional log output relevant to gmoQExtractDenseSwitchFactor.

Java

Matlab Control

  • Added option MemoryManager.
  • Added option ECLogLine.
  • Added methods ModelInstance.isDisposed and Options.isDisposed.

PAL

  • New function palSetSystemDirectory.

Python

  • We plan to drop support for Python 3.9 in a future GAMS release.
  • We plan to drop support for numpy 1 in a future GAMS release.
  • We plan to drop support for pandas versions older than 2.2.2 in a future GAMS release.
  • Methods open and close have been removed from the ConnectAgent class and are not called by the ConnectDatabase anymore.

Model Libraries

GAMS Data Library

GAMS Model Library

GAMS Test Library