Table of Contents
- 45.1.0 Major release (October 14, 2023)
- 45.2.0 Minor release (October 30, 2023)
- 45.3.0 Minor release (November 11, 2023)
- 45.4.0 Minor release (November 27, 2023)
- 45.5.0 Minor release (December 14, 2023)
- 45.6.0 Minor release (January 04, 2024)
- 45.7.0 Minor release (January 18, 2024)
45.1.0 Major release (October 14, 2023)
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 Saran Chanpuang, Aidana Ermatova, Michael Ferris, Adderly Huerta, Auke Greijdanus, Mogens Bech Laursen, and Christoph Pahmeyer.
Platforms
- We will drop support for macOS 11 (Big Sur) with the next major release.
- Added support for macOS 14 (Sonoma).
GAMS System
GAMS
- Added an additional note to the log about the expiration date of the license used.
- Extended the $declareAndLoad capability to also declare new acronyms found in the input GDX file.
- Minor performance improvement for execute_unload.
- Fixed a bug which caused a wrong dump file when $onEmpty is active.
- Fixed a broken message in the log when a $call gets executed with a command that exceeds 255 characters.
- Fixed a data-dependent bug that resulted in an unexpected execution error and was triggered by re-loading data at execution time in a loop via Embedded Code.
- Fixed sys15 being ignored in option statements.
Embedded Python Code Facility
- We plan to drop the command line parameter
pyMultInst
with a future major release. The ability to maintain independent Python sessions can not be maintained in a reliable way.
GAMS Connect
- The CSVWriter now supports unstacking multiple dimensions to header rows.
GMSPython
- The Python version of GMSPython has been updated to
3.8.17
.
Documentation
- Added list of 156 third-party codes that are redistributed with GAMS.
Installer
- The Windows installer does not create the
GAMS
sub directory in the users documents directory anymore.
Solvers
CONOPT
- New libraries 4.31.
- Added option Flg_AdjIniP to disable sometimes expensive adjustments to initial point.
- Added option Flg_NoDefc to disable definitional constraints.
- Added evaluation of post-triangular constraints if a CNS model was interrupted.
- Improved AttemptCNS.
- Changed the logic for improving the conditioning of the basis to fix problems with superbasic slacks.
- Function evaluation errors are made silent after ill-conditioned steps.
- Reset reduced Hessian and superbasis after singularities or numerical problems.
- Fixed a problem in SQP when a critical bound was infinite. This could have given huge steps and domain errors.
- Fixed an error in the pre-processor where minimax constraints could be converted into an incorrect equality.
CONVERT
- Fixed writing
eps
for0
as variable coefficients in GAMS format.
COPT
- New libraries 7.0.1.
- Performance improvements.
- New option BarStart: method to compute starting point for Barrier solver.
- New option FAPHeurLevel: level of fix-and-propagate heuristic.
CPLEX, GUROBI, MOSEK, FICO XPRESS
- Attention
- The bare-bone link mode (previously OsiCplex, OsiGurobi, OsiMosek, OsiXpress), which required only a GAMS base license and a standalone solver license to solve LP or MIP, has been removed. Please contact sales@gams.com to arrange for a solver-link license to be added to your GAMS license.
GUROBI
- New libraries 10.0.3.
HiGHS
- New libraries 1.6 (c070f1253).
- Improved handling of user-interrupt.
- New option mip_min_logging_interval.
- Added functionality to write solve trace files. New options solvetrace, solvetracenodefreq, and solvetracetimefreq.
Ipopt
- New libraries METIS 5.2.1.
- Fix in METIS adapter code used by HSL linear solvers.
MOSEK
- New libraries 10.1.13.
- Improved branching variable selection: Automatic choice of variable selection method and adjustment of strong branching work limits. New options MSK_IPAR_MIO_VAR_SELECTION and MSK_IPAR_MIO_MIN_REL.
- Knapsack cover cuts are now enabled by default, that is, changed default of option MSK_IPAR_MIO_CUT_KNAPSACK_COVER from
MSK_OFF
toMSK_ON
. - Added conflict analysis based on dual rays. New option MSK_IPAR_MIO_DUAL_RAY_ANALYSIS_LEVEL.
- New option MSK_IPAR_MIO_MAX_NUM_RESTARTS.
- New option MSK_IPAR_PRESOLVE_LINDEP_NEW.
- Removed options
MSK_IPAR_CHECK_CONVEXITY
andMSK_IPAR_LOG_CHECK_CONVEXITY
. - Removed value
MSK_STARTING_POINT_SATISFY_BOUNDS
for option MSK_IPAR_INTPNT_STARTING_POINT.
SCIP Optimization Suite
- New libraries PaPILO 2.1 (9ef45bfa).
- New libraries SoPlex 6.0 (5a9b664d).
- New libraries SCIP 8.0 (6c8c7c8d90).
SHOT
- New libraries 1.1 (424b5e48).
Tools
GAMS Studio
- New version 1.16.1.
- Removed the "Go To" dialog, as the functionality is integrated into the Navigator.
- Improvements for the GDX Viewer:
- Added support for
Shift + Left Click
to select/deselect multiple labels in the GDX Viewer filters. - Added thousands separator to symbol record count and symbol number in GDX Viewer.
- Added support for
- Added HTTPS support to check for update feature, removed dependency on C4U library.
- Added authorization provider support to GAMS Engine.
- Stability improvements, bug fixes, and minor enhancements, e.g.:
- Improved performance of the Navigator for sessions with a lot of files.
- Fixed check for GAMS license.
- Fixed crash when reading a corrupted Reference File.
- Fixed crash on using nested
$echo
commands. - Fixed partly saved auto-save files.
- Fixed recovering outdated auto-save files.
Info-ZIP
- Updated
gmszip
to Zip 3.0-13 on Linux and macOS. - Updated
gmsunzip
to UnZip 6.0-28 on Linux and macOS.
APIs
C
- As announced, removed
gcmt.h
,gcmt.c
,gclgms.c
, andgcdllinit.h
fromapifiles/C/api
.
C++
- Added function
GAMSJob::runEngine
to run jobs on GAMS Engine, rather than locally. - Adjusted
GAMSJob::run
public function signature. - Added
transportEngine
example to show usage of new Engine feature.
C4U
- We plan to remove the C4U API from the distribution with an upcoming major release.
GDX
- The user-specified special value mapping set via
gdxSetReadSpecialValues
now also affects the type-specific default values (level, lower, upper, marginal, scale) for empty 0-dimensional (scalar) variables and equations. - Reverted
gdxSetDomain
to write0
instead of-1
as domain index for unknown domains. - Adjust default behavior to store negative zero as zero. This is more space-efficient due to our internal storage scheme and is consistent with pre-GAMS-38 behavior.
- Fixed incorrect default record for empty equation symbols with equation type different than "equals".
GMD
- Added new function
gmdFindUel
(counterpart forgmdGetUelByIndex
) which queries the UEL index for a given UEL label. Returns false on failure. UEL index is set to -1 in case the UEL label is not found in the UEL table. - Performance improvements when dealing with larger datasets due to more efficient symbol and UEL handling.
GMO
- Fixed a bug in functions
gmoGNLNZ64
andgmoGNLNZ
: they computed counts incorrectly in case of degenerate quadratic forms likex * (1 + eps*y)
.
GAMS Transfer Matlab
- Breaking: Renamed records field
text
of Sets toelement_text
. - Added symbol
UniverseAlias
to represent aliases to the universe set. - Added possibility to change symbol name case with
Container.renameSymbol
. - Added possibility to reorder UELs by record order with
Symbol.reorderUELs
(passing no arguments). - Added
Container.getSets
,Container.getParameters
,Container.getVariables
,Container.getEquations
, andContainer.getAliases
to get list of symbol objects of corresponding type. - Added possibility to get/remove all symbols with
Container.getSymbols
orContainer.removeSymbols
, respectively. - Added
Container.lowerUELs
,Container.upperUELs
,Symbol.lowerUELs
, andSymbol.upperUELs
to convert (all) UELs to lower or upper case, respectively. - Added columns
where_min
andwhere_max
to output ofContainer.describeParameters
. - Changed column names in output of
Container.describe*
methods:dim
→dimension
,num_recs
→number_records
,num_vals
→number_values
,min_value
→min
,max_value
→max
,mean_value
→mean
. - Removed
*_marginal
,count_*
,where_max_abs_value
, andis_alias
columns in output ofContainer.describe*
methods. - Removed
ConstContainer
. - Added GDX library unload before each read/write operation.
- Changed used GDX library to
gdxcclib64
. - Fixed bug that limited the number of used UELs in
Symbol.transformRecords
andSymbol.getUELs
. - Fixed
Container.eq
in case of containers with different number of symbols.
GAMS Transfer Python
- Officially removing the beta label.
- Improved performance for both reading/writing of GAMS data from/to GDX and GMD.
- Allow users to update symbol records by repeating calls to the symbol constructor (new objects will not be created).
- Added new symbol/container methods to easily modify UEL strings (
lowerUELs
,upperUELs
,lstripUELs
,rstripUELs
,stripUELs
,capitalizeUELs
,casefoldUELs
,titleUELs
,ljustUELs
, andrjustUELs
). - Added new container methods to retrieve symbol objects (
getSets
,getAliases
,getParameters
,getVariables
, andgetEquations
). - Added support for reading data that originated with different encodings.
- Enabled different GDX/GMD
read
/write
modes (defaults should be used to maintain performance, except in rare instances). - Passing
None
(new default) to<container>.removeSymbols()
will remove all symbols. - Passing
None
(new default) to<container>.getSymbols()
will return a list of all symbol objects. - Renamed symbol property
ref_container
tocontainer
. - Added
eps_to_zero=True
(changes default behavior) argument to<container>.write()
to control writing all GAMS EPS (i.e.,-0.0
in GTP) special values to0.0
. - Enabled the symbol property
name
(and<container>.renameSymbol()
) to change the casing of a symbol name. Container
propertysystem_directory
can now accept eitherstr
orPathLike
objects.- Added
symbols
argument toContainer
methods (getDomainViolations
,hasDomainViolations
,countDomainViolations
,dropDomainViolations
,getDuplicateRecords
,hasDuplicateRecords
,countDuplicateRecords
,dropDuplicateRecords
,isValid
). - Reorganized the
describe*
tables for clarity and brevity. - Added
Container.hasSymbols()
method to test for symbols in a container (can also use thein
operator). - Updated the symbol
summary
properties for all symbol types. - Added a container
summary
property. - Added support for setting GAMS special values with
str
types when setting records with MultiIndex DataFrames. - Function
setRecords
no longer drops zero valued records when setting records with MultiIndex DataFrames. - Added new symbol methods to drop (potentially) unwanted records:
dropZeros
(parameters only),dropDefaults
,dropNA
,dropUndef
,dropMissing
, anddropEps
. - Exposed a new public property
default_records
for variables and equations. - Added support for Pandas 2.1.0.
- Function
toDense
now checks categorical ordering before creating an array (forrelaxed
domain symbols). - Fixed a bug when reading in an Alias symbol from GMD objects.
- Fixed a bug where a symbol's UEL (categorical) order was not maintained from GDX.
GAMS Transfer R
- New libraries 2.6.
- Officially removing the beta label.
- Breaking: removed all
Const*
classes.ConstContainer
is no longer supported. UseContainer
instead. - Breaking: Symbol field
refContainer
renamed tocontainer
. - Breaking: removed
getUniverseSet
method fromContainer
. UsegetUELs
instead. - Records columns that are not specified by the user in a dataframe are not auto completed to save memory. For example, a set with only the domain columns will now not have the
element_text
columns. A default value is assumed for the missing attributes. - New field
defaultValues
for symbols of typeParameter
,Variable
, andEquation
. - Reorganized
describe*
Container
methods for clarity and brevity. - Refined field
summary
forSymbol
objects for clarity. Container
objects now have asummary
field.- New convenience methods for
Container
objects:getSets
,getAliases
,getParameters
,getVariables
, andgetEquations
. - Enabled registering any UEL using
uelPriority
argument inContainer
methodwrite
. Container
methodwrite
now supportsmapped
write mode with the help of new argumentmode
.- Following
Container
methods do not supportlist
input forsymbols
argument:describeSets
,describeAliases
,describeParameters
,describeVariables
,describeEquations
,read
,removeSymbols
,getSymbols
. Usevector
inputs instead. - Argument
types
in theContainer
methodslistVariables
andlistEquations
does not support the input of typelist
. Usevector
inputs instead. - Argument
uelPriority
in theContainer
methodwrite
does not support the input of typelist
. Usevector
inputs instead. - Fixed bug in failed
Symbol
constructor call resulting in symbol being added to theContainer
. - Fixed bug in registering unused UELs when not all symbols from the container are written to a GDX file.
- Fixed bug in read for
Variable
andEquation
classes where thelower
andupper
attributes were interchanged. - Fixed bug in the Symbol method
equals
where identical domain symbols exist in different containers. - Fixed bug in Symbol methods
reorderUELs
andtoDense
for symbols withrelaxed domain
.
Jupyter Notebooks
- The newly introduced back-end class gams.magic.GamsInteractive can be used to translate GAMS Jupyter notebooks into standalone Python scripts.
Matlab
- Added GAMS Engine support:
- Added classes GAMSEngineConfiguration, GAMSEngineJob, GAMSEngineJobBuilder, and GAMSEngineRunParameters.
- Added method GAMSJob.runEngine().
- Added example
transport_engine.m
to show how to run a job with GAMS Engine from within the GAMS Matlab API (requires Matlab with at least Java SE 11).
- Added classes AbstractRunParameters, GAMSRunParameters, MIIMode, Replace, SolveOpt, and PrintStream (thin wrapper around a Java print stream).
- Changed method signatures of GAMSJob.run() and GAMSModelInstance.solve() to use PrintStream for output handling.
- Changed handling of Java null pointers: Instead of raising an error, GAMS Matlab now uses
[]
to indicate null. - Fixed internal handling of Java lists, sets, and maps.
PAL
- Added new functions to query the expiration date for time-limited licenses (
palLicenseGetEvalDate
) and the maintenance end-date for perpetual licenses (palLicenseGetMaintDate
).
Python
- As announced, dropped support for Python 3.7.
- The
gams.numpy
API has been moved togams.transfer.numpy
and is now considered an internal API ofgams.transfer
. The documentation as well as the examplesg2np_example[1|2].py
have been removed and users are encouraged to usegams.transfer
as a replacement. - Renamed the
gams
Python wheel togamsapi
, this change will not impact import statements, but users will need to use install differently withpip install gamsapi
. - New optional parameter
container
forgams.connect.ConnectDatabase
constructor that allows to use an already existing instance ofgams.transfer.Container
. - Fixed wrong
model_status/solver_status
after callinggams.control.GamsModelInstance.solve()
withdebug=True
.
Model Libraries
GAMS API Library
- Dropped
Pgams2numpy
. - Updated PBuildXPLevelAPI.gms : Test building and installing the GAMS Python API from source distribution.
GAMS Data Library
GAMS Model Library
- Improved numerics of fdesign.gms : Linear Phase Lowpass Filter Design.
GAMS Test Library
- Updated gams2numpy01.gms : Test gams.core.numpy Python API string mode.
- Updated gams2numpy02.gms : Test gams.core.numpy Python API raw mode.
- Updated gamsjupyter01.gms : Test GAMS Jupyter Notebooks.
- Added knitro02.gms : KNITRO test suite - model setup issue.
- Added knitro03.gms : KNITRO test suite - model setup issue.
Solver/Platform availability matrix
x86 64bit MS Windows | x86 64bit Linux | x86 64bit macOS | arm 64bit macOS | |
---|---|---|---|---|
ALPHAECP 2.11 | ✔ | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ | ✔ |
COPT 7.0 | ✔ | ✔ | ✔ | ✔ |
CPLEX 22.1 | ✔ | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ | ✔ |
GUROBI 10.0 | ✔ | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ | ✔ |
IPOPT 3.14 | ✔ | ✔ | ✔ | ✔ |
HiGHS 1.6 | ✔ | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ | ✔ |
KNITRO 13.2 | ✔ | ✔ | ✔ | ✔ |
LINDO 14.0 | ✔ | ✔ | ✔ | ✔ |
LINDOGLOBAL 14.0 | ✔ | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ | ✔ |
MINOS 5.6 | ✔ | ✔ | ✔ | ✔ |
MOSEK 10 | ✔ | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ | ✔ |
OCTERACT 4 | ✔ | ✔ | ||
ODHCPLEX 7 | ✔ | ✔ | ||
PATH | ✔ | ✔ | ✔ | ✔ |
QUADMINOS 5.6 | ✔ | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ | ✔ |
SCIP 8.0 | ✔ | ✔ | ✔ | ✔ |
SHOT 1.1 | ✔ | ✔ | ✔ | ✔ |
SNOPT 7.7 | ✔ | ✔ | ✔ | ✔ |
SOPLEX 6.0 | ✔ | ✔ | ✔ | ✔ |
XPRESS 41.01 | ✔ | ✔ | ✔ |
45.2.0 Minor release (October 30, 2023)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
Solvers
CBC
- New libraries Cbc 2.10.11 and Clp 1.17.9.
COPT
- New libraries 7.0.2.
- New option SolTimeLimit to set a timelimit (for the whole solve) that is only effective after a feasible solution has been found.
APIs
C++
- Added CMake option
USE-GCC
for example subproject to change library selection to prefer GCC over clang.
GAMS Transfer R
- New libraries 2.8.
- Fixed bug in reading symbols from GDX with unused UELs from domain.
- Fixed bug in symbol method
getDomainViolations
when the domain symbol hasNULL
records.
Java
- Fixed wrong
ModelStatus/SolveStatus
after callingGAMSModelInstance.solve()
withdebug
option set totrue
.
.Net
- Fixed wrong
ModelStatus/SolveStatus
after callingGAMSModelInstance.Solve()
withdebug=true
.
45.3.0 Minor release (November 11, 2023)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
GAMS System
GAMS
- Fixed a problem with command line parameter etLim which was ignored in many cases at compile time.
Solvers
Ipopt
- New libraries Ipopt 3.14.13.
- New libraries MUMPS 5.6.2.
MOSEK
- New libraries 10.1.16.
SCIP Optimization Suite
- New libraries SCIP 8.0 (6f841064d0).
- New libraries PaPILO 2.1 (ee0677c4).
Tools
GAMS Studio
- New version 1.16.2 with bug fixes and minor enhancements:
- Enhanced GAMS Engine dialog:
- Compute remaining time depending on instance factor and always show remaining seconds.
- Added support for
JobTag
for job identification. - Fixed alignment.
- Fixed error message when server not found.
- Fixed rare crash in search.
- Fixed search result not clickable after changing search term.
- Enhanced GAMS Engine dialog:
GAMS Tools Library
- Modified tool ExcelTalk to provide better error messages. Moreover, the matching of the workbook name is done on the base name (without the path) of the file.
APIs
Python
- Added support for Python 3.12.
Control
- Fixed unwanted side effect when passing
engine_options
dictionary togams.control.GamsJob.run_engine()
method. gams.control.GamsJob.run_engine()
now correctly handles the response status code429 Too Many Requests
from the server.
Transfer
- Fixed a bug that prevented syncing of records (in jupyter environments) when setting records with a tabular dataframe or int/float data type.
45.4.0 Minor release (November 27, 2023)
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 Josef Kallrath.
MPSGE
- Fixed issues solving MPSGE-generated problems with multithreading enabled due to incorrect parallel Jacobian evaluation.
Solvers
COPT
- New libraries 7.0.3.
MINOS and SNOPT
- Fixed incorrect global optimal model status for non-convex models with linear constraints.
Tools
GAMS Studio
- New version 1.16.3 with bug fixes and minor enhancements:
- Relaxed boundaries of the GDX Viewer splitter to allow for more resizing flexibility.
- Reduced allowed SSL warnings when the user accepts self-certified GAMS Engine connection.
- Fixed that command line changes were lost when switching to another project.
- Fixed that a double click on a
.gsp
-file did not activate the project. - Fixed that the position of the search dialog was not saved when closing with close button in titlebar.
GAMS Tools Library
- Fixed a bug in tool ExcelMerge when accessing the number of sheets in a workbook and improved error messages.
APIs
GEV
- Disable multi-threaded Jacobian evaluation in
gevEvalJacLegacyX
for model instances with external equations (aka=X=
rows): it cannot be assumed that the user-provided evaluation function is thread-safe.
Python
- Fixed a Python 3.12
SyntaxWarning
in the Control API.
45.5.0 Minor release (December 14, 2023)
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 Rob Davies, Gabriel Homsi, and Sherman Robinson.
GAMS System
GAMS Connect
- Fixed a bug in the PandasExcelReader that prevented reading columns containing both numerical values and dates.
Solvers
MOSEK
- New libraries 10.1.21.
- Option MSK_DPAR_CHECK_CONVEXITY_REL_TOL is no longer effective.
SCIP
- New libraries 8.1.0.
Tools
GAMS Tools Library
- Fixed a bug in tool ExcelTalk when Excel files are located in (sub)directories.
- Added command
open
and named argumentquit=0|1
to tool ExcelTalk.
APIs
GMD
- Fixed memory leak related to not freeing a symbol record iterator when updating a symbol inside a model.
Python
- Fixed a potential memory leak in the control API observed when iterating multiple times over the same symbol. This was also affecting
GAMSModelInstance.solve()
. - Fixed a warning when building the
gamsapi
wheel using the source distribution.
45.6.0 Minor release (January 04, 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 Simon Wesley Bowen, Rob Davies, and Mart Saluri.
GAMS System
GAMS
- Changed $loadDCR to not complain anymore when it should be used to clear a set, that is used as domain, if that set had no data so far.
- Fixed a bug which could have caused a wrong dump file with an empty data statement when dumpOptGDX is set.
- Fixed a bug which could have caused a wrong dump file when $loadM is used while dumpOptGDX is set.
- Fixed a potentially wrong result of a sameAs statement, when it is used in a loop construct with a singleton set which is empty when entering the construct and gets a value in it.
GAMS Connect
- Improved exception messages of several agents when handling symbols that do not exist.
Solvers
COPT
- New libraries 7.0.4.
SCIP
- New libraries 8.1 (0dff9f8a3e).
Tools
GAMS Studio
- New version 1.16.4 with bug fixes:
- Fixed that check for update crashed when Studio is opened and immediately closed.
- Fixed check for update redirect policy (
NoLessSafeRedirectPolicy
) and check for update behavior when disabled. - Fixed wrong sorting behavior in the export dialog of the GDX Viewer.
45.7.0 Minor release (January 18, 2024)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
GAMS System
GAMS
- Fixed MIIMode to implicitly set keep=1 as expected.
- Fixed a problem when loading from a GDX file at compile time which could have caused an incomplete load of data, if the data depends on a domain set that was reloaded before from the same file replacing already existing records.
- Fixed a bug which could have caused a broken dump file with certain data statements.
GMSPython
- Packages
Jinja2
andurllib3
have been updated to version3.1.3
and2.1.0
, respectively, which include fixes for known vulnerabilities.
Solvers
COPT
- New libraries 7.0.6.
IPOPT
- New libraries 3.14.14.
MOSEK
- Reduce overhead when calling MOSEK for final solve and avoid its output to stdout when it should have been disabled.