49 Distribution
Table of Contents
49.1.0 Major release (February 15, 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 Sarang Balan, Wolfgang Britz, Michael Ferris, Florian Humpenöder, Erwin Kalvelagen, Sherman Robinson, Tom Rutherford, and Kathy Wang. Also, we thank the community of MCP modelers for their collective wisdom and willingness to engage in a productive discussion.
Platforms
- Added Linux on arm64 (aarch64) to supported platform. Required is a system with glibc 2.28 or higher. Compared to a Linux on x86_64 system, the following is currently not available on an arm64 system:
- solvers BARON, Knitro, Lindo/LindoGlobal, and ODHCPLEX
- GAMS Studio
- APIs for Matlab
- choice
pardisomkl
for Ipopt(H) option linear_solver
- As announced, dropped support for macOS 12 on x86_64.
Documentation
- As announced, the PDF version of the GAMS documentation has been dropped.
- Revised the GAMS Studio documentation.
GAMS System
GAMS
- The End User License Agreement (
eula.pdf
in the GAMS system directory) has been updated to version 02/2025. - Extended the allowed syntax of the model declaration for MCP models to support additional matching constructs, namely equation lists and variable lists.
- Changed the default value for $maxGoto. This used to be
100
and is-1
now, meaning no limit on jumps to the same $label is enforced using $goto. - PreviousWork now writes a workfile compatible with GAMS 48 and newer.
- Reduced the output of the GAMS help message (
gams /?
) to avoid superfluous information. - Changed the processor information in the log to system information (cores and memory) as used in license resource accounting.
- Better handling for UTF-16 file and path names on Windows.
- Make the domain of undefined domain sets the universe instead of the domain set itself. This means, if there is a declaration like
Set i, ii(i);
, wherei
is undefined when it is used as subset ofii
, it becomes implicitly defined asi(*)
now. In the past, it was defined asi(i)
in this case. - Fixed a problem where a domain violation error was not triggered if a set that was defined as domain of itself was referenced with a label that does not belong to the domain. Thus, the following does trigger an error now, but not in the past:
set i(i) / i1 /, j / j1 /; Parameter p(j); p(j)$i('j1') = 1;
- Fixed unwanted error message in case of premature termination in include file that was included in an
$ifThen
block. - Fixed wrong profile information for statements directly following a
solve
statement when solveLink is set to 4 or 7. - Fixed unexpected domain violation in rare cases with continued execution when running under GAMSPy.
Embedded Python Code Facility
- Fixed remaining cases where
getSymbolNumber
of classECSymbol
was still 0-based.
GMSPython
- Python has been upgraded to 3.12.8.
- As announced, numpy has been upgraded to 2.2.2.
GAMS Connect
- Fixed a bug where the ExcelReader would fail when encountering sheet boundaries if either
rowDimension
orcolumnDimension
was set to0
. - Fixed a bug where the ExcelReader would fail when using indexSubstitutions with
.nan
values. - Fixed a bug where the SQLWriter agent with
ifExists
set tofail
would not fail as expected or replace an existing table instead of raising an error if the table name has been enclosed. - Added options fast and small in SQLWriter agent.
- The ExcelReader now processes
dSet
asset
instead of raising an error when reading from an index sheet.
Solvers
BARON
- New libraries 25.2.1.
- Improvements in memory management, convexity identification, and branching.
- New relaxation and reduction strategies for certain quadratic and concave programs.
- Improvements in integer presolve and the generation of cutting planes for (linear and nonlinear) integer optimization problems.
- Changed default ExtNLPSolver from
conopt3
toconopt4
. If GAMS threads = 0, then CONOPT4 will run with 1 thread when called from BARON.
CONOPT
- New libraries 4.36.
- Changed default number of threads (GAMS threads = 0) from 1 to 4.
- Changed default of option Mtd_Step_Phase0 to -1 (auto).
- Fixed an error where post-triangular variables could go outside their bounds because very small bounds were not transferred to the internal model.
- Fixed system error 10100: Derived bound interval was outside (-inf;+inf) and model was considered infeasible.
COPT
- New libraries 7.2.4.
CPLEX
- New libraries 22.1.2.
- Added MIP Quality report when solving with solvefinal enabled in addition to LP quality report.
- Fixed usage of userjobid in combination with usergdxname, usergdxnameinc, usergdxin, userincbcall, userincbicall, userheurcall, userlazyconcall and usercutcall.
GUROBI
- New libraries 12.0.1.
- New interface for nonlinear constraints (now enabled by default; previously, nonlinear functions were reformulated using Gurobi's general constraints; not all general constraints are supported in the new interface yet). Removed option
nlreform
. - New option dualimpliedcuts: dual implied bound cut generation.
- New interface for nonlinear constraints (now enabled by default; previously, nonlinear functions were reformulated using Gurobi's general constraints; not all general constraints are supported in the new interface yet). Removed option
- New dot option trynonlin: try nonlinear function general constraint interface for a nonlinear constraint.
- Changed default of option qcpdual to 0 (same as GUROBI default).
- Added return of solution for continuous models in case of user / iteration / resource interrupt.
HiGHS
- Option mipstart is now an integer option and can be used to choose between different strategies for handling the initial variable level values for a MIP solve. The default changed from
mipstart=false
tomipstart=2
(pass initial solution to HiGHS if feasible). New option mip_max_start_nodes. - An irreducible inconsistent subsystem (IIS) of variable bounds and constraints can now be computed for a linear program by enabling option iis. New option iis_strategy.
KNITRO
- New libraries 14.2.0.
- Improved performance on nonconvex problems both in terms of efficiency and solution quality.
- Improved robustness and efficiency when solving models with conic constraints using the specialized conic algorithm (enabled via bar_conic_enable = 1).
- Improved the efficiency of the ncvx_qcqp_init user option, which can be used to improve the initial points when solving nonconvex QPs/QCQPs. This also has an effect when solving nonconvex QPs/QCQPs with the multi-start procedure (ms_enable = 1).
- New option soltype: specify solution to be returned by Knitro.
- New option maxtime: maximum allowable wall-clock time in seconds before termination.
- New option mip_sub_maxtime: maximum allowable wall-clock time in seconds for MIP node subproblems.
- New option ma_sub_maxtime: maximum allowable wall-clock time in seconds for multi-algorithm ("MA") subproblems (algorithm=5).
- New option ms_sub_maxtime: maximum allowable wall-clock time in seconds for multi-start subproblems, i.e., local solves from a given initial point.
- New option tuner_sub_maxtime: maximum allowable wall-clock time for Knitro-Tuner subproblems, i.e., individual solves with a particular option setting.
- Deprecated options
maxtime_cpu
,maxtime_real
,mip_maxtime_cpu
,mip_maxtime_real
,ma_maxtime_cpu
,ma_maxtime_real
,ms_maxtime_cpu
,ms_maxtime_real
,tuner_maxtime_cpu
andtuner_maxtime_real
. Use maxtime instead.
- Fixed incorrect
INFES
flag for complementarity constraints complemented to nearly-fixed variables.
LINDO/LINDOGLOBAL
- New libraries 15.0.199.
- Added support for newer GAMS license files with 8 lines for Lindo sampling library.
MINOS
- Changed warm start to cold start for CNS models.
MOSEK
- New libraries 11.0.8 for Linux, Windows, and macOS on arm64.
- Major performance improvement of the mixed-integer optimizer:
- Restarts can now be initiated at any point during the solution process if the solver estimates the remaining search space to be large. Changed default of option MSK_IPAR_MIO_MAX_NUM_RESTARTS from 0 to 10.
- If a problem can be split into independent components, the solver can exploit this structure by solving them in parallel. New option MSK_IPAR_MIO_INDEPENDENT_BLOCK_LEVEL.
- Improved separator for clique cuts. New option MSK_DPAR_MIO_CLIQUE_TABLE_SIZE_FACTOR.
- Enhanced large neighborhood search heuristics and new rounding heuristics. New options MSK_IPAR_MIO_CROSSOVER_MAX_NODES, MSK_IPAR_MIO_OPT_FACE_MAX_NODES, and MSK_IPAR_MIO_RENS_MAX_NODES.
- Increased presolve speed, particularly for large problems.
- The interior-point optimizer can exploit folding for linear problems to reduce problem size. New options MSK_IPAR_FOLDING_USE and MSK_DPAR_FOLDING_TOL_EQ.
- Further new options MSK_IPAR_MIO_CONFLICT_ANALYSIS_LEVEL, MSK_IPAR_SIM_PRECISION_BOOST, MSK_IPAR_LOG_SIM_FREQ_GIGA_TICKS, MSK_IPAR_PTF_WRITE_SINGLE_PSD_TERMS, MSK_IPAR_WRITE_ASYNC.
- New possible values for options MSK_IPAR_OPTIMIZER, MSK_IPAR_BI_CLEAN_OPTIMIZER, MSK_IPAR_MIO_NODE_OPTIMIZER, MSK_IPAR_MIO_ROOT_OPTIMIZER:
MSK_OPTIMIZER_NEW_PRIMAL_SIMPLEX
andMSK_OPTIMIZER_NEW_DUAL_SIMPLEX
. - Removed options
MSK_DPAR_CHECK_CONVEXITY_REL_TOL
,MSK_DPAR_PRESOLVE_TOL_AIJ
,MSK_IPAR_SIM_STABILITY_PRIORITY
,MSK_IPAR_INTPNT_MAX_NUM_REFINEMENT_STEPS
,MSK_IPAR_MIO_ROOT_REPEAT_PRESOLVE_LEVEL
,MSK_IPAR_INFEAS_PREFER_PRIMAL
,MSK_IPAR_LOG_RESPONSE
,MSK_IPAR_WRITE_DATA_PARAM
,MSK_IPAR_WRITE_GENERIC_NAMES_IO
,MSK_IPAR_WRITE_TASK_INC_SOL
,MSK_IPAR_WRITE_XML_MODE
,MSK_SPAR_WRITE_LP_GEN_VAR_NAME
.
- Major performance improvement of the mixed-integer optimizer:
- Mosek has dropped support for macOS on x86_64. Mosek will be removed from the distribution for macOS on x86_64 in a future major release.
PATH/PATHNLP
- Integrate the latest PATH options into PATHNLP, especially factorization_method to allow using the recently-added basis-handling from CONOPT.
- Update version of CONOPT basis-handling to v4.36.
- Fixed bug in solution reporting: rows matched to nearly-fixed variables could be flagged as
INFES
incorrectly. - Fixed bug in problem setup for CNS models with side constraints.
ReSHOP
- New libraries 0.4.2.
SCIP Optimization Suite
- New libraries PaPILO 2.4.1.
- New libraries SoPlex 7.1.3.
- New libraries SCIP 9.2.1.
SHOT
- New libraries 1.1 (
a81275b4
).- Added additional reduction cut strategy. New option Dual.ReductionCut.Strategy.
- Changed default of Dual.ReductionCut.MaxIterations from 5 to 20.
- Removed option
Model.Reformulation.Quadratics.EigenValueDecomposition.Method
.
- Added support for newer GAMS license files with 8 lines.
SNOPT
- Changed warm start to cold start for CNS models.
XPRESS
- New libraries 44.01.03.
- Performance improvements:
- Dual sparsification: New presolve technique to improve sparsity by column-based elimination.
- New knapsack cover lifting procedure which uses super-additive lifting.
- Perform additional coefficient tightening for models with big-M's.
- Better handling of lower bound for integral objectives in objective propagation.
- Improved sorting procedures throughout the solver.
- New starting point heuristics have been added to the barrier algorithm when barStart = 1 is set.
- Improved performance of heuristics within multi-threaded MISLP.
- Improved computation of spatial branching point in global solver.
- mipCleanup is now supported after the global solver.
- Performance improvements:
Tools
CSVWrite
- New tool CSVWrite has been added to the GAMS Tools Library. It writes GAMS symbol data to a CSV file.
GDX2SQLITE
- As announced,
GDX2SQLITE
andsqlite3
have been removed from the distribution. Use SqliteWrite from the GAMS tools library instead.
GAMS Studio
- New version 1.20.1.
- Added fonts JetBrains Mono, Source Code Pro, Fira Code, and Cousine.
- Added JetBrains Mono as default font for text editors. The font can be switched back to the default font in Settings (F7) in the "Editor & Log" tab.
- Added a new Workspace tab to the settings, including the clean-up workspace configuration. Furthermore, the default value for setting
Number of log backup files
has been changed from 3 to 0. - A GAMS Engine run from Studio can now select pool instances, too.
- A GAMS Engine pool instance can be scaled up and down from within Studio.
- Fixed that the current project changes after using 'Save as...'.
- Fixed main-file indicator when switching to the same file used by another project.
- Fixed that the system projects were not shown when a project is in focus mode.
- Fixed crash when using filename for 'Save As...' that is already known by the Project Explorer.
- Fixed missing font update from changes in the Settings Dialog.
- Fixed workspace cleanup settings when Studio starts.
- Moved the list of files to be deleted to the details view when cleaning up workspace on startup.
SqliteWrite
- Added options
fast
andsmall
. - Fixed a bug where SqliteWrite in
append
mode would replace an existing table instead of raising an error.
APIs
C++
- Fixed GamsJob.run() log output not being processed in real time when using
stdout
.
GAMS Transfer Python
- Setting records with
uels_on_axes=True
now ignores allDataFrame.index.names
andDataFrame.columns.names
properties.
Java
- New method GAMSModelInstance.cleanup that allows to explicitly close a license session. Available in the APIs for both Java SE 8 and Java SE 11 or higher.
- Fixed the behavior of GAMSJob.run log output not being processed in real time when
output
parameter isSystem.out
.
Matlab Control
- Added method
ModelInstance.cleanup
that allows to explicitly close a license session.
.NET
- Fixed
GAMSJob.run()
log output not being processed in real time when usingConsole.WriteLine
.
Model Libraries
GAMS API Library
- Dropped
PBuildXPLevelAPI
.
GAMS Data Library
- Dropped
GMSPythonLib
.
GAMS Model Library
- Added brick.gms : Brick design (437)
GAMS Test Library
- Added mcp12.gms : Test varList matching in model statement.
- Added mcp13.gms : Test equList matching in model statement.
- Added mcp14.gms : Test equList matching in model statement.
- Added mcp15.gms : Test equList matching in model statement.
- Added mcp16.gms : Test varList matching in model statement.
- Added gpsollin.gms : Test CLP gp_solveline.
- Added goto01.gms : Test $maxGoTo behavior.
- Added ifthen7.gms : Test premature termination in include file and ifThen clause.
- Added domain01.gms : Test implicit domain and domain violations.
- Added csvwrite1.gms : Test GAMS Tool CSVWrite.
- Dropped
connectsub
. - Updated caconcat.gms : Test Connect agent Concatenate.
- Updated caxlsr.gms : Test Connect agent ExcelReader.
- Updated casqlw.gms : Test Connect agent SQLWriter.
- Updated gdxsqlite1.gms : Test basic functionality of SQLITEWRITE tool.