49 Distribution

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);, where i is undefined when it is used as subset of ii, it becomes implicitly defined as i(*) now. In the past, it was defined as i(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 class ECSymbol 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 or columnDimension was set to 0.
  • Fixed a bug where the ExcelReader would fail when using indexSubstitutions with .nan values.
  • Fixed a bug where the SQLWriter agent with ifExists set to fail 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 as set 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 to conopt4. 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

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 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

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 and tuner_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

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

Tools

CSVWrite

GDX2SQLITE

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 and small.
  • 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 all DataFrame.index.names and DataFrame.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 is System.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 using Console.WriteLine.

Model Libraries

GAMS API Library

  • Dropped PBuildXPLevelAPI.

GAMS Data Library

  • Dropped GMSPythonLib.

GAMS Model Library

GAMS Test Library