50 Distribution
Table of Contents
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
andembFini
calls have been dropped from the API.
Embedded Connect Code Facility
- New arguments
yamlFile
andyamlFileEnd
allow to include Connect instructions from file.
Embedded GAMS Code Facility
- Symbols on the right (here
embSymbol
) insymbol<[=]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 typestr
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 toTrue
. 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
andGDXReader
. - 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
- Fixed a bug sending the wrong location of an option file provided by MIPsolver (AlphaECP), cplex_optfile (ANTIGONE), subsolver/subsolveropt (DE), evsubsolver/evsubsolveropt (DE), jamsoptevsubsolver/evsubsolveropt (DE), mipoptfile (DICOPT), SolverName/Optfile (GAMSCHK), SubSolver/SubSolverOpt (JAMS), SubSolver/SubSolverOpt (NLPEC), or SubSolverOpt (RESHOP) in case command line parameter optDir is given.
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
- Removed
OBJNAME
from CplexMPS.
COPT
- A preview version of a local optimizer for continuous non-convex quadratic programs (QCP) is now available.
- New option NonConvex to specify whether to handle non-convex QCPs.
- New options NLPIterLimit, NLPLinScale, NLPMuUpdate, and NLPTol.
- New options qextractalg, qextractdenseswitchfactor, and qextractdenseswitchlog to influence quadratic extraction algorithm in GAMS interface.
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
- Fixed mipstart in combination with tuning.
- Fixed solvefixed for nonlinear models.
HiGHS
- New libraries 1.10.0.
- Added lifting for probing in MIP presolve. New option mip_lifting_for_probing to activate this.
- New option mip_root_presolve_only.
- New option timeless_log.
- Updated cuPDLP-C.
- 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 andPATH
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
- New libraries 11.0.22.
- New options QEXTRACTDENSESWITCHFACTOR and QEXTRACTDENSESWITCHLOG to influence quadratic extraction algorithm in GAMS interface.
ReSHOP
- New libraries 0.4.3.
SCIP
- Update sassy library to include changes from SCIP 9.2.2.
SHOT
- New options ModelingSystem.GAMS.QExtractDenseSwitchFactor and ModelingSystem.GAMS.QExtractDenseSwitchLog to influence quadratic extraction algorithm in GAMS interface.
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
oryamlFileEnd
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 methodsEpsConstraint
andPayoff
. - 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 methodsEpsConstraint
,Payoff
, andSandwiching
. - 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 (optionplot
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
andEpsConstraint
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.
- GNU Awk (
- 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\*
orfolder\?
).
-
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 archivegbin.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.
- Drastically improve performance of
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 togmoQExtractDenseSwitchFactor
.
Java
- For the API that requires Java 11 or above, the memory management has been improved:
- The
finalize
methods in GAMSWorkspace, GAMSDatabase, GAMSModelInstance, GAMSOptions, and GAMSSymbolRecord are deprecated. Thesefinalize
methods are subject to removal in a future version. - The external resources used in GAMSDatabase, GAMSModelInstance, GAMSOptions, GAMSSymbolRecord and GAMSSymbolIterator, if not previously released, are eventually to be released when the objects become unreacheable and be ready to be collected by the Java Garbage Collector.
- The temporary working directory in GAMSWorkspace will eventually be removed after the workspace is out of scope only either when the debug level is set to GAMSGlobals.DebugLevel.OFF or when the debug level is set to GAMSGlobals.DebugLevel.KEEP_FILES_ON_ERROR and there is no error during the workspace lifecycle.
- The
- For the API that supports Java 8, the memory management remains unchanged.
- Updated Transport9 example to work with Java 8 and above.
Matlab Control
- Added option
MemoryManager
. - Added option
ECLogLine
. - Added methods
ModelInstance.isDisposed
andOptions.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
andclose
have been removed from theConnectAgent
class and are not called by theConnectDatabase
anymore.
Model Libraries
GAMS Data Library
GAMS Model Library
GAMS Test Library
- Added gdxmerg4.gms : test gdxmerge - (at)input.txt with blank lines
- Added gdxlongpaths.gms : Verify GDX utilities (dump,diff,merge) can deal with long absolute paths (>260 chars)
- Added mcp18.gms : Test evList matching in model statement
- Added mcp19.gms : Test evList matching in model statement with multiple matchings
- Added embpy14.gms : Test parameter ECLogLine
- Added optdir1.gms : Test option file location with CLP optDir and solvers that utilize subsolvers
- Added lo01.gms : Test log behavior
- Modified model gamsxcppmex.gms : Test calling and validating new C++ compiler against legacy Delphi compiler to also check return codes and detect unexpected termination messages in logs.
- Updated cacsvr.gms : Test Connect agent CSVReader
- Updated cagamsrw.gms : Test Connect agent GAMSReader/Writer
- Updated caxlsrw.gms : Test Connect agents ExcelReader and ExcelWriter
- Updated embgms01.gms : Test for embedded code facility
- Updated embpy01.gms : Test for embedded code facility
- Updated embpy02.gms : Test for embedded code facility
- Updated embpy12.gms : Test implicit/explicit loading in Embedded Code
- Updated moo1.gms : Test libInclude tool moo