Table of Contents
48.1.0 Major release (October 14, 2024)
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 Christine Arriola, Wolfgang Britz, Yi Chen, Jinggang Guo, Katja Jensen, Joseph Kallrath, Erwin Kalvelagen, Arnaud Laur, Bruce McCarl, Scott McDonald, Lucas Perini, Jotham Peters, Gereon Recht, Uwe Schneider, and Thijmen Wiltink.
Platforms
- As announced, the minimal required glibc version for Linux systems has been increased to 2.28.
- We will drop support for macOS 12 (Monterey) with the next major release.
GAMS System
GAMS
- Solver option files allow now
echo off
andecho on
to suppress the echo of the option file content to the log file. - Added new command line parameter CompilerPreview (cp) to test inputs with the upcoming new compiler (and validate its correctness).
- Make internal communication with GAMS Studio Debugger more robust.
- Fix debug output on stdout.
- Print
~
as continuation character for long lines in solver option files.
GAMS Connect
GAMS Connect changes its status to stable, marking the end of its beta phase. We would like to thank all users who contributed to the development of GAMS Connect by reporting issues, suggesting features, and providing valuable feedback.
- Major Changes:
- The
writeAll
option has been removed from the DomainWriter, ExcelWriter, GAMSWriter, GDXWriter, and SQLWriter agents. Specifysymbols: all
instead. - The
readAll
option has been removed from the GAMSReader and GDXReader agents. Specifysymbols: all
instead. - The Concatenate option
concatenateAll
has been removed. Specifysymbols: all
instead. - As announced, the Projection option
asParameter
has been removed. - New default value
null
for the Projection option aggregationMethod turns off aggregation per default. To get the previous behavior for symbols with reduced index space, specifyaggregationMethod: first
explicitly or alternatively use the GAMSWriter or GDXWriter withduplicateRecords: first
. - The Projection agent now unconditionally performs the specified aggregationMethod, regardless of whether the index space has been reduced or not.
- The CSVReader options
textColumns
andtextSubstitutions
have been removed, valueColumns and valueSubstitutions should be used instead. The option type has been added and should now be used to control the symbol type. - The CSVWriter option
skipElementText
has been renamed to skipText. - The ExcelReader now uses the root scoped values of columnDimension (default:
1
) and rowDimension (default:1
) instead of0
if omitted in anindex
sheet. In order to get the old behavior, specify bothcolumnDimension: 0
androwDimension: 0
in the root scope of theExcelReader
agent or specify this explicitly in theindex
sheet (recommended). auto
has been replaced byinfer
as allowed and default value for ExcelReader option ignoreText and for ExcelWriter option columnDimension.- The Filter option
column
forvalueFilters
has been renamed to attribute with defaultall
, meaning the value filter will be applied to all value columns of the symbol. - The Filter option
column
forlabelFilters
has been renamed to dimension with defaultall
, meaning the label filter will be applied to all dimensions of the symbol. - The Filter options
eps
,infinity
,na
,negativeInfinity
andundf
have been removed. To reject special values, the newly added option rejectSpecialValues can be used instead. - The LabelManipulator option
column
has been renamed to dimension. ""
(empty string) has been replaced bynone
as allowed value for SQLReader option valueColumns.
- The
- Enhancements:
- New supported value
all
for thesymbols
option of DomainWriter, ExcelWriter, GAMSWriter, GDXWriter, GAMSReader, GDXReader, Concatenate, and SQLWriter. - Improved and harmonized tracing behavior across all agents.
- Allow explicit specification of default values for all optional options, including those options that default to
null
(missing). - Improved index space syntax for options
name
andnewName
of Concatenate, DomainWriter, and Projection by allowing spaces (e.g.p(i, j)
) as well as empty domains (e.g.p(,j)
). - New default value
infer
for the CSVReader options stack and header. - Added new option valueSubstitutions for the CSVWriter agent.
- Adjusted the CSVWriter agent to write string representations of special values (
EPS
,NA
,UNDEF
,INF
,-INF
) per default. - Allow
before
andafter
for the root level option dropDomainViolations of the DomainWriter agent. - The ExcelReader options ignoreRows and ignoreColumns now support ranges.
- The ExcelWriter now uses the root scoped value of columnDimension instead of
1
(or0
for scalar symbols) if omitted in anindex
sheet. - Improved the error message of the Filter agent for invalid attribute values depending on the symbol type.
- Enhanced the Projection agent to support index space extension through index duplication (e.g. transforming
p(i,j)
top_new(i,j,i)
). - Added new option trace for the PythonCode agent.
- Added new option readSQLArguments to the root level of the SQLReader agent.
- New default value
infer
for the SQLReader option valueColumns. - Added new option skipText for the SQLWriter agent.
- The SQLWriter agent now allows using the string representations for special values in valueSubstitutions.
- New supported value
- Bug Fixes:
- Fixed a bug where the agents Concatenate, CSVReader, ExcelReader, Filter, GAMSReader, GDXReader, LabelManipulator, Projection, RawCSVReader, RawExcelReader, and SQLReader would overwrite existing symbols if domains are equal instead of raising an error.
- Fixed a bug where
stack: False
of the CSVReader agent would get overwritten withTrue
automatically instead of raising an error. - Fixed a bug where specifying the CSVReader option names would turn header to
True
instead ofFalse
. - Fixed CSVWriter agent not writing special values
UNDEF
andNA
. - The DomainWriter agent now raises an error if the number of specified domains does not match the number of dimensions of the corresponding symbol.
- Fixed a bug where the ExcelWriter agent would not write the correct order of labels if all symbol dimensions were written into the columns.
Documentation
- The tutorial on Data Exchange with Other Applications has been revised and now provides guidance on how to exchange data with other applications using the latest recommended tools.
- GAMS Transfer R documentation has been moved to readthedocs.
- Added a section on License Setup.
GMSPython
- Python has been upgraded to 3.12.5.
- We plan to upgrade to
numpy 2
in a future GAMS release.
Windows Installer
- Added support for fetching a GAMS license by using an access code.
- The license page has been moved and is now shown after the actual installation process.
- Removed the option to associate
.gdx
and.gms
files with the GAMS IDE. - Removed the option to create a Desktop icon for the GAMS IDE.
- Removed the GAMS IDE from the generated start menu entry.
Solvers
ANTIGONE, CBC, Ipopt, SCIP, SHOT
- Updated MKL to version 2024.2.2 on Linux.
BARON
- New libraries 24.10.10.
- Improved convexity identification, convexification, and branching.
- More sophisticated presolve for linear, integer, and nonlinear problems.
- Updated log output to include memory usage and progress estimate.
- New option DualBudget to set time limit for calculation of dual solution.
- The default constraint feasibility tolerance AbsConFeasTol has changed from 1e-5 to 1e-6.
COPT
- New libraries 7.1.7.
CPLEX, GUROBI, MOSEK, XPRESS
- As announced, dropped the aliases OSICPLEX, OSIGUROBI, OSIMOSEK, and OSIXPRESS.
CPLEX
- Improved efficiency for calculation of dual multipliers for quadratic constraints.
CONVERT
- Dropped options
NLP2MCP
,NLP2Dual
, andDualType
.
IPOPT
- New libraries Mumps 5.7.3.
KNITRO
- New libraries 14.1.
- Performance improvements and improved robustness on numerically difficult nonlinear optimization problems, as well as improvements on QP/QCQP models. Improvements have also been made to the branch-and-bound MIP solver, the SQP algorithm, and the presolver.
- Improvements for nonlinear, non-convex mixed-integer problems (MINLPs). The nonlinear branch-and-bound algorithm has been updated to handle non-convex problems specifically, leading to better primal solutions. Knitro 14.1 automatically detects if the non-convexity of the problem requires special care. Therefore, this feature can be used even if the problem is convex or just slightly non-convex. This feature is available when setting the option mip_multistart to 1 and may become the default behavior of the branch-and-bound algorithm in future versions.
- Improved multi-start procedure. The new multi-start, by default, automatically terminates when the probability of finding new local solutions is small, while always producing deterministic results. A new option, ms_terminaterule_tol, can be used to control how quickly termination is triggered.
- Speedups when using the L-BFGS Hessian approximation.
- New option eval_cost: Use this option to tell Knitro the relative cost of performing callback (e.g. function, gradient, and Hessian) evaluations.
- New option initpt_strategy: Specifies the initial point strategy used for the continuous algorithms.
- New option ms_terminaterule_tol: The tolerance in (0,1] for the rule-based termination of multi-start.
- New option value 2 (dynamic) for option linsolver_scaling: Dynamically apply scaling in the linear system solves.
- New default value (4) for option ms_terminate.
- Removed option
ms_deterministic
.
MILES
- Fixed division-by-zero exception that occurred with empty models.
MOSEK
- New libraries 10.2.5.
PATH
- New libraries 5.2.01.
- Tighter integration with the basis-handling routines from CONOPT, so that a separate download is no longer required.
ReSHOP
- New libraries 0.3.1.
SCIP Optimization Suite
- New libraries PaPILO 2.3.1.
- New libraries SoPlex 7.1.1.
- New libraries SCIP 9.1.1.
Tools
CSVRead, CSV2GDX
- New tool CSVRead has been added to the GAMS Tools Library. It writes data from a CSV file to a symbol in GAMS or a GDX file.
- CSV2GDX will be removed in a future GAMS release. Use CSVRead instead.
GAMS Studio
- New version 1.19.0.
- Improved Project handling:
- New Feature: Added single project mode to focus on one project only.
- Added feature to store options for each main file. The main file can now be changed via the shortcuts
Shift+Ctrl+M
andShift+Cmd+M
. The old behavior can be activated via the settings. - Added virtual project, i.e., only create a
.gsp
file on a certain number of files or if a main file is part of the project. - Added "Close and delete project" action to Project Explorer context menu.
- Improved select next project when closing the current edited file-node in the Project Explorer that is also part of other projects.
- Improved allow to remove all but the main file from a running project.
- Improved closing a focused tab and switching to a tab from the same project if possible.
- Removed warning when deleting a project file that does not exist.
- Improved group search results by file, i.e., a tree view is used instead of a table.
- Added default workspace clean-up during Studio start based on filters defined via the settings. In the future, the project workspaces will be cleaned.
- Added Reference File (RF) creation to
Run with GDX creation
. - Added licensed GAMS solvers to license text and dropped solver matrix.
- Added background color for syntax highlighting.
- Added support for oneof, nullable, and default schema in Connect Editor.
- Connect Editor option defaults are now shown and instantiated agents are pre-populated with those defaults.
- Changed check for Studio updates on startup to be deactivated.
- Improved behavior while debugging GAMS code.
- Stability improvements, bug fixes, and minor enhancements, e.g.:
- Added color indicator for non-existing MIRO path.
- Added zoom support for model dialog.
- Added search icon to toolbar.
- Fixed usage of license file specified via
gamsconfig.yaml
. - Fixed path of project options not recognized for file dialog.
- Fixed
Save As...
crash when saving to a file already known by Studio. - Fixed
Save As...
so that the new file is added to the project and the original is removed. - Fixed finding GAMS on Windows.
- Improved Project handling:
GDXDUMP, GDXDIFF, GDXMERGE
- The tools GDXDUMP, GDXDIFF, and GDXMERGE have been completely rewritten for better reliability, maintainability, and performance, while retaining the same functionality as the previous versions.
- The old versions are still included in the distribution under the names
gdxdumpold
,gdxdiffold
, andgdxmergeold
, respectively. - New GDXDIFF option
SkipID
to skip certain symbols.
GDXVIEWER
- Avoid deprecation message when run in batch mode.
MOO
- Added method Payoff that allows to run the calculation of the payoff table independently.
- Method EpsConstraint now allows to manually set the range of objectives by specifying the options
min
andmax
. - Method EpsConstraint now allows to activate parallel solves.
SqliteWrite, GDX2SQLITE
- New tool SqliteWrite has been added to the GAMS Tools Library. This tool exports GAMS symbols with their data to a SQLite database.
- As already announced, GDX2SQLITE and
sqlite3
will be removed from the distribution. This will happen with the next major release. - Documentation for GDX2SQLITE has been removed and all examples have been adjusted to use SqliteWrite instead.
- SqliteWrite introduces several changes compared to GDX2SQLITE. The key differences between the two tools are outlined in the SqliteWrite documentation.
APIs
C++
- Improved closing of license session when
GAMSModelInstance
is freed. - Updated
GAMSDatabaseImpl::getSymbolByIndex
to keep in sync with GMD change.
GAMS Transfer Python
- Enabled
equals
method to compare symbols that exist in different containers. UNDF
special string now maps togt.SpecialValues.UNDEF
to follow GAMS syntax.- Fixed bug in
isValid
tests if symbols are holding empty DataFrames. - Fixed
ZeroDivisionError
ingetSparsity
when domain sets did not have records. - Fixed bug in the private
_from_gams
symbol constructor (used when reading GDX or GMD objects) – symbols now hold aweakref
to the container.
GDX
- New libraries 7.11.7.
GMD
- Fixed inconsistent numbering convention in
gmdGetSymbolByIndex
andgmdGetSymbolByNumber
(now 1-based like ingmdSymbolInfo
withGMD_NUMBER
). - Fixed
gmdMerge(Set)RecordInt(Py)
still creating unnecessary temporary iterator objects when passingwantSymIterPtr=0
.
GMO
- A performance bottleneck in the Q extraction was identified and removed. The Q extraction routines have also been improved to take advantage of diagonal Q matrices.
- Multiple performance bottlenecks in the Hessian computation and the Q matrix extraction were identified and removed. The occurrence of these bottlenecks depended on several factors: sparsity, variable ordering, and the particular form of the nonlinear expressions.
Java
- Added new value KEEP_FILES_ON_ERROR to GAMSGlobals.DebugLevel which keeps temporary files only in case of an error when executing GAMS during GAMSJob.run or GAMSJob.runEngine. Its internal numerical value is
1
and all values for GAMSGlobals.DebugLevel or greater have been increased by 1. The value KEEP_FILES_ON_ERROR is also a new default value of GAMSGlobals.DebugLevel and is added to the APIs that work with both Java SE 8 and Java from SE 11 on.
Matlab Control
- Added new value
DebugLevel.KEEP_FILES_ON_ERROR
toGlobals.DebugLevel
which keeps temporary files only in case of an error when executing GAMS duringJob.run
orJob.runEngine
. Its internal numerical value is1
and all values forGlobals.DebugLevel
or greater have been increased by 1. The valueKEEP_FILES_ON_ERROR
is also a new default value ofGlobals.DebugLevel
.
Python
- As announced, support for Python 3.8 has been dropped.
- Added support for Python 3.13.
- As announced, support for pandas 1.5 has been dropped.
- We plan to drop support for pandas 2.0 in a future GAMS release.
- New method GamsModelInstance.cleanup that allows to explicitly close a license session.
- Added new optional parameter
end="\n"
toConnectDatabase.print_log()
. ConnectDatabase.exec_task()
has been renamed toConnectDatabase.execute()
and now allows to execute multiple agents.
Model Libraries
FIN Library
GAMS Data Library
- Updated connect01.gms : Complex Connect Example with Spreadsheets.
- Updated connect02.gms : Complex Connect Example with CSV Files.
- Updated connect03.gms : Simple Connect Example with CSV Files.
- Updated connect04.gms : Simple Connect Example for SQL.
- Updated connect05.gms : Simple Connect Example for Excel.
- Updated moo01.gms : Solve scalable multi-objective knapsack model.
- Updated csv2gdx1.gms : Test gdxdump and csvread.
- Updated csv2gdx2.gms : CSVRead Example 2 - Reading CSV Files with CSVRead.
- Updated csv2gdx3.gms : CSVRead Example 3 - Reading Semicolon separated Data.
- Updated csv2gdx4.gms : CSVRead Example 4 - Dealing with missing Labels and Duplicates.
- Updated csv2gdx5.gms : CSVRead Example 5 - Reading more than one Parameter from a single Input File.
- Updated csv2gdx6.gms : CSVRead Example 6 - Reading economic Data from the World Bank Data Catalog.
- Updated csv2gdx9.gms : CSVRead Example 9 - Reading Options from an external File.
- Updated csv2gdx10.gms : CSVRead Example 10 - Reading Set Elements with explanatory Text.
- Updated pickstock.gms : Stock selection problem with MIRO.
GAMS Model Library
- Added knapsack.gms : Binary Knapsack Problem (436).
- Updated imsl.gms : Piecewise Linear Approximation to use integer values in data computations using
mod()
. - Updated boxpacking, cta, herves, and sddp to use
symbols: all
in Connect instructions.
GAMS Test Library
- Added embmilic.gms : Test passing a license to embmiex1.
- Added gamschk2.gms : GAMSCHK test suite - use of scale factors.
- Dropped
convert9
. - Updated caconcat.gms : Test Connect agent Concatenate.
- Updated cacsvr.gms : Test Connect agent CSVReader.
- Updated cacsvw.gms : Test Connect agent CSVWriter.
- Updated cadomainw.gms : Test Connect agent DomainWriter.
- Updated cafilter.gms : Test Connect agent Filter.
- Updated cagamsrw.gms : Test Connect agent GAMSReader/Writer.
- Updated cagdxrw.gms : Test Connect agent GDXReader/Writer.
- Updated calabelm.gms : Test Connect agent LabelManipulator.
- Updated capcode.gms : Test Connect agent PythonCode.
- Updated caproject.gms : Test Connect agent Projection.
- Updated carcr.gms : Test Connect agent RawCSVReader.
- Updated carxr.gms : Test Connect agent RawExcelReader.
- Updated casqlr.gms : Test Connect agent SQLReader.
- Updated casqlw.gms : Test Connect agent SQLWriter.
- Updated caxlsr.gms : Test Connect agent ExcelReader.
- Updated caxlsrw.gms : Test Connect agents ExcelReader and ExcelWriter.
- Updated connectsub.gms : Test substitution for Connect.
- Updated load16.gms : Test implicit dimension setting when loading a symbol.
- Updated moo1.gms : Test libInclude tool moo.
- Added echoindic.gms : Test "echo off" in option file.
- Added attrib02.gms : Test set attributes.
- Added ex6.gms : External Equation - Example 6.
- Updated gdxsqlite1.gms : Test basic functionality of SQLITEWRITE tool.
- Updated csv2gdx1.gms : Test CSVRead on input containing spaces.
- Updated csv2gdx2.gms : CSVRead - Testing the Option checkDate.
- Updated csv2gdx3.gms : CSVRead - Testing the Behavior of quoted Field Separators.
- Updated csv2gdx6.gms : CSVRead - Testing the value(s) and index Option.
- Updated csv2gdx7.gms : CSVRead - Checking the Error Messages for incorrect Parameter Input.
- Updated csv2gdx8.gms : CSVRead - Testing the valueDim Option.
- Updated encoding01.gms : Test processing of source files with BOM.
- Updated gdxdump4.gms : GDXDUMP - Dumping special Values of Variable-Subfields from GDX.
- Added csvread1.gms : Test GAMS Tool CSVRead.
48.2.0 Minor release (October 29, 2024)
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, Michael Ferris, Katja Jensen, and Sherman Robinson.
GAMS System
GAMS
- Fixed problem in upcoming compiler (that can be accessed via CompilerPreview (cp)) when parsing macros that are defined over multiple lines.
- Fixed a bug with gdxSymbols=newOrChanged where newly declared but undefined symbols did not get exported.
- Adjusted license information processed by GAMS Studio when a network license is used.
GAMS Connect
- Improved performance of the GAMSReader and GDXReader agents when importing data into an empty Connect database.
- Improved error message for the ExcelReader and ExcelWriter agents when not being able to open an Excel file that is currently open.
- Improved trace output.
Solvers
HiGHS
- New libraries 1.8.0.
- New options primal_residual_tolerance and dual_residual_tolerance.
ReSHOP
- New libraries 0.3.2.
Tools
ExcelTalk
- Fixed a bug where ExcelTalk failed to open a file unless Excel was already running.
GAMS Studio
- New version 1.19.1.
- Added allowing to delete files from the Project Explorer.
- Added system and version information to the log (created via
--log
). - Added additional logging for license installation.
- Added setting to switch system logging on/off.
- Added information when check for update is disabled at startup.
- Fixed invalid error mark when the listing file contains wrong position information.
- Fixed initialization and validation of options created from Connect schema in Connect Editor.
- Fixed adding only required options in Connect Editor.
- Fixed saving file in Connect Editor after an edit finished with a mouse click.
- Fixed crash and blocking on macOS after interrupting a GAMS run.
- Improved license text for time limited licenses.
- A system log file is now created by default and new parameter
--no-log
can be used to deactivate this. - Reverted improvement on grouping of search results by file (Studio 1.19.0).
APIs
GDX
- New libraries 7.11.9.
- Made
gdxOpenRead
not lock the file (from being deleted) on Windows. This is particularly useful in conjunction with GDX files opened in Studio, which can now be deleted without manually closing the corresponding GDX viewer instance.
- Made
Python
- Fixed a bug that caused GAMS Connect to be incompatible with Python 3.13.
- Improved performance of GamsWorkspace constructor.
Model Libraries
GAMS API Library
- Updated PBuildXPLevelAPI.gms : Test building and installing the GAMS Python API from source distribution.