54 Distribution
Table of Contents
New Features & Highlights
- Since GAMS 49.2.0, the End User License Agreement (EULA.md in the GAMS system directory) included a clause that the publication of benchmarks using any solver of the GAMS distribution requires the written consent of both GAMS and solver vendors. With the new EULA version 06/2026, this restriction now applies only to those solvers where it is required by the license agreement of the solver vendor. In addition, it has been clarified that this also applies when such a solver is used as subsolver of another solver (e.g., when CPLEX is called by DICOPT).
GAMS Studio
License Status
- The license status is now visible in the statusbar.
- Hovering over it shows a tooltip containing validation information of the license.
- With a click on it the licensing dialog is opened allowing to check out a network license.
- When a license is about to get invalid the color turns yellow to inform the user.
Studio License Status
Scrollbar Markers
- The scrollbar in text editors now shows where markers are positioned in the file.
- Currently GAMS Studio supports markers for
Quick Find,Complex Search,Errors, andBookmarks.
Studio Scrollbar Markers
GAMS System
- Local and network licenses restricted to a single concurrent use now function on machines with more cores than permitted, rather than being rejected. Several solver links enforce core limits by setting relevant solver options.
- The computation of a dual solution (marginals) to correspond to a known primal solution (level values) can require a considerable additional effort if the solver's algorithm did not already work with primal-dual solution pairs, e.g., when using branch-and-bound algorithms to solve nonconvex optimization problems. With the new GAMS option and command line parameter requestMarginals, the user can now specify whether marginals are required. With the default value
requestMarginals=-1, solvers will provide marginals only when this is computationally inexpensive, e.g., when using algorithms that work on local optimality conditions (simplex, interior point, etc). For solvers that find global optima, an additional solve of a continuous (sub)problem to local optimality (e.g., the LP obtained from fixing all integer variables in a MIP) is now disabled by default, but can be reenabled by settingrequestMarginals=1.
Solvers
- HiGHS 1.14.0 brings a new PDLP solver HiPDLP (for CPUs and NVIDIA GPUs), several performance improvements in the MIP solver, and additional matrix ordering options for the interior point solver HiPO.
- As part of an ongoing efforts to modernize the solver interface libraries, the library to read option files has been updated for several solvers.
- For the "stop expression" options of the GUROBI and XPRESS links, historic data can now be used to formulate conditions on the solving progress over time, e.g.,
objval_60srefers to the best objective value from 60 seconds ago. - Solvetrace files can now be written by the GAMS/Mosek link as well.
54.0.0 Beta release (May 30, 2026)
- The End User License Agreement (EULA.md in the GAMS system directory) has been updated to version 06/2026. In particular, restrictions on publishing solver benchmarks apply onto to a subset of solvers now.
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 Bruce McCarl, and Wolfgang Britz.
Platforms
- We plan to drop support for macOS 14 (Sonoma) with the next major release.
GAMS System
GAMS
- Added command line parameter, option, and model attribute requestMarginals.
- PreviousWork now writes a workfile compatible with GAMS 53 and newer.
- Extend the command line parameter appendOut to allow redirecting the listing file content to stdOut or stdErr. This feature is not available when running under GAMS Studio. Note: This is actually not new but was deactivated by accident in the past.
- Performance Optimization: Improved the efficiency of the execution backend connection to GAMSPy by streamlining operations at the conclusion of the compilation phase. This includes skipping redundant well-definedness checks for immutable predefined symbols, which reduces execution overhead in multi-step and incremental workflows.
- Reduced output noise when running under GAMSPy. When detecting a GAMSPy environment, the library now suppresses internal status messages regarding saved process and parameter files.
- Local and network licenses restricted to a single concurrent use now function on machines with more cores than permitted, rather than being rejected.
GAMS Connect
- Adjusted the ExcelWriter to truncate automatically determined sheet names for symbol names exceeding 31 characters.
- Added new option skipText to the ExcelWriter agent.
- The dimension option of the LabelManipulator now accepts lists of multiple dimensions.
- Dropped support for
Postgresdriverpsycopg2in favour ofpsycopg(3). See the documentation for information on how to adjust existing code to be compatible. - Improved trace output of the Concatenate agent.
- Added new option globalCommit to the SQLWriter agent.
- Updated the table-checking query for
connectionType: mysqlfor the SQLWriter agent to ensure validation occurs exclusively within the active database connection.
GMSPython
- Python has been upgraded to version 3.12.13.
- Pandas has been upgraded from version 2.3.3 to 3.0.3. We are explicitly highlighting this change because the major version upgrade may break custom embedded Python code.
- Dropped the package
psycopg2-binaryin favor ofpsycopg[binary].
Documentation
- Added documentation for the $slice dollar control option. This directive, a variant of
$clear, allows selective removal of elements from symbols during compilation. While$slicehas been available previously, it was not documented until now.
Solvers
Solver Options
- Solvers CONOPT3, CONOPT, CONVERT, CPLEX, GUROBI, KNITRO, MINOS, ODHCPLEX, SNOPT, and XPRESS use a refactored option library for reading option files. Reading options may behave differently for these solvers in some cases. Please contact support@gams.com if there is any issue. As an immediate workaround, the old option library is still available: Set the environment variable
GAMS_JOAT_OPT_OLDto a GAMS system path. If left empty or set to "1", the option library from the default GAMS system will be used. This backup will be removed in a future release.
COPT, CPLEX, GUROBI, KNITRO, MOSEK, ODHCPLEX, XPRESS
- The solver link now restricts the number of threads a solver is using to match the licensed core count of a single concurrent use license.
ALPHAECP
- Disabled calculation of marginals for MIP subproblems.
ANTIGONE
- The final NLP solve (CONOPT or SNOPT) to compute marginals has been disabled by default. If marginals are required, set the new option requestMarginals to 1 or 2.
BARON
- New libraries 26.5.27.
- Improvements in convexity identification and exploitation, including for certain second order cones.
- The default for BARON option WantDual now depends on GAMS option requestMarginals: if
requestMarginals = -1and the model type is LP or RMIP, or ifrequestMarginals > 0, thenWantDualdefaults to 1; otherwise,WantDualdefaults to 0.
CBC
- Changed default of GAMS/CBC option solvefinal to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then the additional LP solve with all discrete variables in a MIP fixed will be skipped.
COPT
- Changed default of GAMS/COPT option solvefinal to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then marginals will only be provided when already made available by COPT (simplex or barrier solves of LPs and QPs).
CPLEX
- Added options eprhscheck and epoptcheck to control final solution check and determination of non-optimality and infeasible markers.
- Changed option default of solvefinal to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then the additional LP solve with all discrete variables in a MIP fixed will be skipped and calcqcpduals is reset to 0 (no duals).
DICOPT
- Disabled calculation of marginals for MIP subproblems.
Examiner
- Add option logAllViolations. Normally, Examiner logs information only about the largest violation of each type (assuming it exceeds the given tolerance). If logAllViolations is set true, it logs a list (sorted by size) of all violations exceeding the tolerance.
- Some cases where special values (e.g., NA, INF) were displayed improperly have been fixed.
GUROBI
- Added support of historic data in mipstopexpr. For example,
objval_60srefers to the best objective value from 60 seconds ago. - Added options mipstopexprnodestep, mipstopexprtimestep, mipstopexprsolutiontol and mipstopexprverbosity to control the frequency of stop expression evaluation and logging.
- Changed option default of solvefixed to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then the additional LP solve with all discrete variables in a MIP fixed will be skipped.
HiGHS
- New libraries 1.14.0.
- Performance improvements in MIP solver.
- Added singleton column stuffing to presolve.
- Faster dominated columns reductions on some problems.
- Specialized probing and clique detection for single constraints consisting solely of up to 8 binary variables.
- Detected implications, e.g., from probing, are now applied when changing variable bounds.
- New option mip_allow_cut_separation_at_nodes to disable separation after the root node.
- Next to Metis, also approximate minimum degree and reverse Cuthill-McKee matrix ordering are now available for HiPO. New option hipo_ordering.
- Changed scaling of HiPO from Curtis-Reid scaling infinity-norm equilibration of the rows and columns.
- The new primal-dual hybrid gradient first order LP solver HiPDLP has been added. HiPDLP can be selected by setting option solver to the newly added value
hipdlp. cuPDLP-C (solver=pdlp) will be removed in a future HiGHS version. HiPDLP can utilize NVIDIA GPUs on systems with CUDA 13 installed (set pdlp_gpu =true). - Option
pdlp_e_restart_methodhas been renamed to pdlp_cupdlpc_restart_method. - Replaced boolean option
pdlp_scalingby bitflag option pdlp_scaling_mode. - New options pdlp_optimality_tolerance, pdlp_restart_strategy, pdlp_ruiz_iterations, and pdlp_step_size_strategy.
- The IIS facility for LP is more robust and flexible now. Option iis_strategy has been changed again and is now evaluated as bitflags. New option iis_time_limit.
- Performance improvements in MIP solver.
IPOPT
- New libraries MUMPS 5.9.0.
LINDO, LINDOGlobal
- The final solve for a mixed-integer program with all integer variables fixed has been disabled, unless GAMS option requestMarginals is set to 1 or 2.
MOSEK
- New libraries 11.2.0.
- Added possibility to generate solvetrace files when using the mixed-integer optimizer. New options SOLVETRACE, SOLVETRACEINCUMBENT, SOLVETRACENODEFREQ, and SOLVETRACETIMEFREQ.
- Changed default of GAMS/MOSEK option SOLVEFINAL to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then marginals will only be provided when already made available by MOSEK (simplex or barrier solves).
ODHCPLEX
- New libraries 8.21.
- Changed option default of solvefinal to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then the additional LP solve with all discrete variables in a MIP fixed will be skipped and calcqcpduals is reset to 0 (no duals).
RESHOP
- New libraries 0.4.9.
XPRESS
- Added support of historic data in mipstopexpr. For example,
objval_60srefers to the best objective value from 60 seconds ago. - Added options mipstopexprnodestep, mipstopexprtimestep, mipstopexprsolutiontol and mipstopexprverbosity to control the frequency of stop expression evaluation and logging.
- Renamed options
xslp_filterKeepBestto xslp_filter_keepBest,xslp_filterCascadeto xslp_filter_cascade,xslp_filterZeroLineSearchto xslp_filter_zeroLineSearch andxslp_filterZeroLineSearchTRto xslp_filter_zeroLineSearchTR to match naming scheme of other Xpress bit options. - Changed option default of mipCleanup to 0, which now means that the value of GAMS option requestMarginals matters. If
requestMarginals = -1(the default), then the additional LP solve with all discrete variables in a MIP fixed will be skipped. - Changed default of miprelcutoff and mipaddcutoff from 0 to a value depending on miprelstop and mipabsstop, respectively.
Tools
GAMS Studio
- New version 1.25.0:
- New Feature: Added markers to the scrollbar for find and search matches, breakpoints, errors, and bookmarks.
- New Feature: Added the current license state to the status bar.
- Added double-click action to open a GDX file reference from within a symbol table in GDXViewer.
- Added MIRO Connector and Secure Module information to license dialog.
- Added warning when dropping more than 99 files to the project explorer.
- The GDX Viewer export facility now truncates automatically determined sheet names exceeding 31 characters.
- On adding multiple files, Studio doesn't open all files anymore.
- On opening a project, Studio opens the main file if assigned. Otherwise the project options are opened.
- Reimplemented the GDX filter dialogs which fixes several focus and keyboard shortcut bugs, especially on macOS.
- Fixed short blocking behavior when using quick find in a huge file.
- Fixed matches not being updated when clearing the term in quick find.
- Fixed initial font size for GDX and reference viewer when the font size has been changed.
- Fixed occasional crash when updating project base path.
- Fixed automatic numbering for projects or files with the same name in the Project Explorer that sometimes assigned the same number twice.
- Fixed that the command line parameter filestem has been ignored for the log-file name.
- Fixed an issue on Windows where an
.optfile couldn't be saved under a different suffix, e.g..op2.
MPS2GMS
- New libraries HiGHS 1.14.0.
- .lp file keywords can now be used as constraint names.
- Changed handling of MPS sections
QMATRIXandQUADOBJregarding asymmetric matrices: Coefficients (i,j) and (j,i) of a quadratic coefficient matrix are assumed to be identical for any (i,j). If they are not identical, then one of the coefficients is ignored and the other is duplicated.
APIs
GDX
- New libraries 7.11.21.
GMO
- Added
gmoSetNLTablesto support filling tables of non-linear instructions and constants via plain C arrays.
PAL
- Added routine
palGetUsernameId()that returns the current username ID. - Added routine
palLicenseCheck64WithCores()that tell the solver about a thread/core limit imposed by licensing. - Added routine
palLicensedCoreLimit()that tells the solver about a thread/core limit imposed by licensing without doing other license checks.
Python
- We plan to drop the
gams.engineAPI with the next major release. The preferred way of interacting with GAMS Engine from Python is the use ofrequestslibrary or a similar HTTP client. - Fixed pandas 3 compatibility issues of GAMS Connect.
Model Libraries
GAMS Data Library
GAMS Test Library
- Updated calabelm.gms : Test Connect agent LabelManipulator
- Updated caproject.gms : Test Connect agent Projection
- Updated casqlr.gms : Test Connect agent SQLReader
- Updated casqlw.gms : Test Connect agent SQLWriter
- Updated caxlsrw.gms : Test Connect agents ExcelReader and ExcelWriter
- Updated gamsincr02.gms : Test GAMS incrementalMode limitations
- Added slice1.gms : Test general $slice functionality