40 Distribution
Table of Contents
- 40.1.0 Major release (August 01, 2022)
- 40.1.1 Maintenance release (August 16, 2022)
- 40.2.0 Minor release (September 01, 2022)
- 40.3.0 Minor release (September 16, 2022)
- 40.4.0 Minor release (October 03, 2022)
40.1.0 Major release (August 01, 2022)
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, Daniel Dias, and Scott McDonald.
GAMS System
GAMS
- Added two new indexed operators sAnd and sOr.
- The file containing the collection of legacy default values has been renamed from
gams31config.yaml
togamsLegacyConfig.yaml
, as legacy behavior is not entirely identical to GAMS 31. - Changed default of command line parameter digit to
off
. As a result, extremely large or small constants in the GAMS source will not result in compilation errors but rather in special values (e.g. 1e300 becomes UNDF, 1e-300 becomes EPS). The old defaultdigit=on
has been added togamsLegacyConfig.yaml
. - Changed default of model attribute tolProj to 0. This means that GAMS no longer by default modifies solution values returned by the solver that are close to variable bounds or equation sides.
- Throw a compilation error consistently, when one tries to load data into an Alias. In the past, this was just ignored in some cases. It appears that when writing to an alias in embedded code an exception is made and GAMS implicitly imports into a set, not an alias. Details about this subtlety can be found in the embedded code chapter.
- Made command line parameter IDCProtect available as runtime option as well (the runtime option gets initialized by the command line parameter).
- Do not allow to load a symbol implicitly from $offEmbeddedCode under $onExternalInput, when it was not declared as
external input
symbol (the same check was so far done for explicit loading only). - Changed the interaction of external input and $gdxIn to allow the continued use of a
$gdxIn
file over multiple external input sections. So, the following code works now, but threw an error in the past:$onExternalInput $gdxIn trnsport.gdx Set i(*) canning plants ; $load i $offExternalInput * Do something but not opening another GDX file $onExternalInput Set j(*) markets ; $load j $offExternalInput
- Changed the behavior when encountering a symbol with unknown dimension with an execution time load or embedded code statement. In the past, this resulted in an error, now the dimension of that symbol is set to 0 (or 1, if it is a set) implicitly. As a result, the following code runs without error now:
$call gams trnsport gdx=default Variable z; execute_load 'trnsport.gdx', z; display z.l;
- Also changed the behavior when encountering a symbol with unknown dimension with a compile time embedded code statement. In the past, this resulted in an error, now the dimension of that symbol is set to the dimension defined in the embedded code block.
- Make sure that we do not change the loop control index by implicit loading from endEmbeddedCode (the same check was so far done for explicit loading only).
- Added an explicit error check to ensure that the command line parameter restartNamed is used together with the command line parameter restart only.
- Changed the put utility facility to ignore the extra double quotes added when the print control is set to
4
,5
, or6
. In the past that lead to an error since the commands were not recognized when they are quoted. - We plan to remove language elements to access some commercial and licensing information with the next major release:
- System suffixes:
components
,clipCodes
,clipComponentMap
,componentSolverMap
,gamsLicenses
,gamsLicenseTypes
,lice1
,lice2
,licenseDateEvalN
,licenseDateEvalS
,licenseDateMaintN
,licenseDateMaintS
,licenseDateN
,licenseDateS
,licenseDateSysN
,licenseDateSysS
,licenseDaysEval
,licenseDaysMaint
,licenseDC
,licenseEval
,licenseID
,licenseInstitution
,licenseLevel
,licenseLevelText
,licenseLicensee
,licenseMudText
,licensePlatform
,licensePlatformText
,licenseStatus
,licenseStatusText
,licenseType
,licenseVendor
, andvendors
. - Predefined sets
componentEDate
,componentMDate
, andcomponentLicenseOptions
. - Many of these are used in the GAMS Model Library model
licememo
, which we also plan to remove.
- System suffixes:
- Fixed that exceeding the internal limit of 2.1 billion instructions did not raise an error.
- Fixed a rare problem which stopped GAMS from terminating if a solver invoked in an asynchronous thread did not return.
- Fixed an error causing missing domain information, when implicit sets are used while creating a dump file.
GMSPython
- Added the packages
sqlalchemy
andgreenlet
to GMSPython. On Windows, also added the packagessqlalchemy-access
,pyodbc
, andpywintypes
.
Connect
- Domain information is copied into the Connect database when using agents GAMSReader and GDXReader. Agent GDXWriter exports the domain information to the GDX file.
- Added attribute
duplicateRecords
to GAMSWriter and GDXWriter to control the way to deal with duplicate records in a Connect container symbol when writing to GAMS or GDX. Note that both agents currently deal with duplicate records in a case sensitive way. - Added new DomainWriter agent to modify domain information of Connect symbols.
- Added new PandasSQLReader and PandasSQLWriter agents to read from and write to SQL databases.
- Updated Projection agent:
- Symbol names in Connect are now case sensitive by default. So casing in the YAML file is important and needs to match e.g. when reading from GDX or GAMS (which use case in-sensitive symbol name lookup) or across agents. There is now a global attribute caseSensitiveLookup in agent
Options
to control the case-(in)sensitive symbol lookup. - Added new attribute
debug
in agentOptions
to provide traceback information in case of an exception. - Dropped support for writing variables and equations with CSVWriter and PandasExcelWriter. Variables and equations can be turned into parameters using the Projection agent.
- Added attribute
trace
to GAMSReader, GAMSWriter, GDXReader, and GDXWriter. - Fixed bug where PandasExcelWriter failed when writing no data.
Embedded Python Code Facility
- Allow to specify source code encoding by providing a comment of format
# coding=<encoding name>
as first line in an embedded Python code section. - If
gams._debug
is set to an integer greater than 0 a traceback is printed tostdout
in case of an exception.
Installer
- For Windows, updated the text in the file association dialog to make clear that the GAMS IDE is deprecated.
Solvers
BARON
- New libraries 22.7.23.
- Improved presolve.
Bonmin and BonminH
- As announced, the solvers Bonmin and BonminH have been removed. For the time being, libraries of GAMS/Bonmin are available at the COIN-OR GAMSlinks project. Note, that GAMS does not test or offer support for these libraries.
CBC, SCIP, SHOT
- New libraries Cbc 2.10.8, Cgl 0.60.0, Clp 1.17.7, Osi 0.108.7, CoinUtils 2.11.6, nauty 2.7r3.
CONVERT
- Export prettier formulas (
x
forx**1
,power(x,1)
,vcpower(x,1)
orrpower(x,1)
).
COPT
- New libraries 5.0.2.
- Added possibility to compute feasible relaxation for infeasible problem. New options FeasRelax and FeasRelaxMode to enable this feature and set relaxation mode, respectively. New dot option .feaspref to specify preferences on relaxation of variable bounds and linear constraint sides.
- Added options MipStartMode and MipStartNodeLimit to adjust handling of complete and partial MIP starts.
- Added option ReqFarkasRay.
- Option crossover has been made available.
- Changed handling of MIP starting point:
- GAMS/COPT will pass on a partial instead of a full MIP start also if
MipStartMode = 2
is selected. - When setting the value for a discrete variable in a partial MIP start (tryint > 0), it will be rounded to an integer value.
- GAMS/COPT will pass on a partial instead of a full MIP start also if
- For an unbounded LP, a primal ray is now returned in the variables level values and
UNBND
markers are set in the solution listing. - For an infeasible LP, a Farkas proof is now returned in the equations marginal values and
INFES
markers are set in the solution listing.
GLOMIQO
- As announced, dropped GLOMIQO. The use of ANTIGONE is equivalent.
GUROBI
- New libraries 9.5.2.
- Changed aggregate option type from
bool
toint
. Allowed values are 0 (off), 1 (moderate) and 2 (aggressive).
- Changed aggregate option type from
- Added support of certain nonlinear constraints:
max
,min
,smax
,smin
,and
,or
,sand
,sor
,abs
,exp
,**
,log
,log2
,log10
,sin
,cos
,tan
,edist
,poly
.
To make these accessible, Gurobi can now be used for model types (D)NLP and (R)MINLP as well, but equations need to follow a special form. - Added option multimipstart: Use multiple (partial) mipstarts provided via GDX files.
HiGHS
- New LP/MIP solver HiGHS 1.2.2 developed by the Edinburgh Research Group in Optimization. HiGHS is included in the GAMS base system for users with an academic GAMS license. Users with a commercial GAMS license need to contact sales@gams.com to enable the use of HiGHS.
Ipopt
- New libraries Ipopt 3.14.9.
- Added options ma27_print_level, ma57_print_level, and mumps_print_level.
- Fixed that variable names for variable bounds in detailed log output were wrong for problems with fixed variables.
- New libraries Mumps 5.5.0.
KNITRO
- New libraries 13.1.0.
- Significant performance improvements when using the BFGS/LBFGS Hessian approximation.
- New options:
- findiff_estnoise: Estimate of the noise in the model when using finite-difference.
- bar_mpec_heuristic: Enable heuristic approach when solving MPEC models with the barrier algorithm.
- mip_heuristic_misqp: Enable the MIP MISQP heuristic.
- mip_restart: Enable the MIP restart procedure.
- conic_numthreads: Number of threads to use for operations in the conic algorithm.
LGO
- As announced, dropped LGO.
MPSGE
- Increased the internal MAXFUN limit (from 10000 to 50000) on the number of components (inputs, outputs, taxes, etc.) in any MPSGE row.
- Print info about the size of the largest MPSGE function (i.e. the one with the most input/output/tax/etc coefficients) to the
sysout
file.
MSNLP
- As announced, dropped MSNLP.
Octeract
- The GAMS/Octeract link has been rewritten.
- Temporary files are now removed, unless GAMS option keep is enabled.
- Octeract is now also available for solvelink=5 and solvelink=6.
- Octeract options are now documented and Octeract option files can be created via the GAMS Studio options editor.
- The default for
MAX_SOLVER_ITERATIONS
is now set to GAMS iterlim. - The default for
MAX_SOLVER_MEMORY
is now set to GAMS workspace. - New option
nlbinary
.
- New libraries 4.4.1.
SCIP
- Added support for logical functions
bool_and
,bool_eqv
,bool_imp
,bool_not
,bool_or
,bool_xor
. Only constants, binary variable, and logical functions are allowed as arguments for these operators. The GAMS/SCIP link introduces additional variables and constraints of types and, or, and xor to handle these functions. - New libraries SCIP 8.0 (504f5f2749).
- Improved and extended cut selection statistics.
- Added options presolving/milp/maxbadgesizepar and presolving/milp/maxbadgesizeseq.
- New libraries PaPILO 2.1 (79da073).
XPRESS
- New libraries 40.01.01.
- MIP performance improvements:
- Improved separation of Mixed Integer Rounding (MIR) cuts in the tree.
- Improved selection of cutting planes based on orthogonality measures.
- Some subMIP heuristics at the root node now solve the subMIPs using multiple threads.
- More advanced MIP presolve operations.
- Improved crash heuristic for dual simplex.
- Improved parallel performance of the crossover algorithm.
- Improved sparse matrix-vector multiplication selection method in dual crossover.
- New option numericalEmphasis: specify emphasis to place on numerical stability over solving time.
- Changed default of treeCutSelect to -1.
- Changed default of treeCutSelect_mirRowAggregation to 1.
- MIP performance improvements:
- Support mipCleanup also for nonlinear models.
Tools
GAMS IDE
- Added a startup message to announce the drop of the classic GAMS IDE.
GAMS Studio
- New version 1.11.1.
- New feature: Allow to open a directory to add all files in that directory to a project.
- New feature: Added HTML format when copying text to clipboard.
- GDX Viewer improvements:
- Saves/restore state (e.g. filters, sorting, ...) when data has to be reloaded from file.
- Added invert selection for column filter and for the attribute selection.
- Fixed that auto resize of columns was not triggered for 1-dimensional symbols when the table view has been selected as default view.
- Added zoom for editors/viewers with proportional fonts (GDX Viewer and Option Editor).
- Added editor to edit
efi
files for GAMS Engine. - Improved and unified filter line edits for tables and trees to support regular expressions and exact matches.
- Stability improvements, bug fixes, and minor enhancements, e.g.:
- Moved result files from an GAMS Engine run to the working directory.
- Added link to MIRO output that opens the directory in the file explorer.
- Improved trimming behavior of search results.
- Adjusted wording in search results table header.
- Fixed focus and auto-fill when re-triggering search dialog while it is already open.
- Fixed "All Files" filter not showing files without extension on Linux and macOS.
- Fixed error in restoring selection of MIRO deployment dialog.
GDX2ACCESS
- We will remove the tool gdx2access in a future GAMS release. GAMS Connect agent PandasSQLWriter should be used instead.
GDX2SQLITE
- We will remove the tool gdx2sqlite together with the tool
sqlite3
in a future GAMS release. GAMS Connect agent PandasSQLWriter should be used instead.
GDXVIEWER
- For the interactive mode added a startup message to announce the drop of the GDXVIEWER.
MDB2GMS
- We will remove the tool mdb2gms in a future GAMS release. GAMS Connect agent PandasSQLReader should be used instead.
MPS2GMS
- Fixed that non-continuous variables in cones (
CSECTION
) were missing in=c=
equations in written GAMS file. - Polished written GAMS file, in particular eliminate use of
$batinclude
. - Quadratic cones (
CSECTION
) are now reformulated into quadratic equations. New optionCEQUATIONS
can be used to enable previous behavior of writing=c=
equations. - Input files that were compressed with gzip (
.gz
) can now be handled. - Added support for input in LP format.
- Updated MPS reader to HiGHS 892691737.
SQL2GMS
- We will remove the tool sql2gms in a future GAMS release. GAMS Connect agent PandasSQLReader should be used instead.
APIs
GAMS Transfer Python
- Modified behavior of registering UELs: Previously, GAMS Transfer generated UELs from data in record order (i.e., all UELs from the first data row are registered, then all UELs from the next row are registered, etc.). GAMS Transfer now registers UELs columnwise (i.e., all UELs from the first domain column are registered, then all UELs from the next domain column are registered, etc.). This behavior change will impact symbols written over
"*"
or with relaxed domains. - New
Symbol
methodshasDuplicateRecords
,countDuplicateRecords
,findDuplicateRecords
, anddropDuplicateRecords
to help debug and resolve errors with duplicate records. - New
Container
methodshasDuplicateRecords
,countDuplicateRecords
, anddropDuplicateRecords
to help find symbols that contain duplicate records that cause theSymbol
to be invalid. - New
Symbol
methodshasDomainViolations
,countDomainViolations
, anddropDomainViolations
to help debug and resolve errors with domain violations. - New
Container
methodshasDomainViolations
,countDomainViolations
, anddropDomainViolations
to help debug and resolve errors with domain violations. - Fixed that the column headings of the records
DataFrame
were not updated when a domain set/alias was renamed or the.domain
attribute of a symbol was updated directly. - Fixed read of equation with unknown subtype (recast as
=E=
/eq
).
GAMS Transfer R
- New API GAMS Transfer R to exchange data between GAMS and R.
Python
- As announced, dropped support for Python 3.6.
Model Libraries
GAMS Data Library
GAMS Test Library
- Added load15.gms : Test consistent compile time error checking when loading symbols.
- Added gurobi07.gms : GUROBI test suite - nonlinear constraints to general constraints.
- Added load16.gms : Test implicit dimension setting when loading a symbol.
- Added gamsxcppmex.gms : Test calling and validating new C++ compiler against legacy Delphi compiler.
- Added gdxdiff2.gms : Test GDXDIFFs fldonly option.
- Added capdsqlr.gms : Test Connect agent PandasSqlReader.
- Added capdsqlw.gms : Test Connect agents PandasSqlWriter.
- Added cadomainw.gms : Test Connect agent DomainWriter.
Solver/Platform availability matrix
x86 64bit MS Windows | x86 64bit Linux | x86 64bit macOS | |
---|---|---|---|
ALPHAECP 2.11 | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ |
COPT 5.0 | ✔ | ✔ | ✔ |
CPLEX 22.1 | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ |
GUROBI 9.5 | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ |
IPOPT 3.14 | ✔ | ✔ | ✔ |
HiGHS 1.2 | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ |
KNITRO 13.1 | ✔ | ✔ | ✔ |
LINDO 13.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 13.0 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS 5.6 | ✔ | ✔ | ✔ |
MOSEK 9 | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
OCTERACT 4 | ✔ | ✔ | |
ODHCPLEX 6 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
QUADMINOS 5.6 | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 8.0 | ✔ | ✔ | ✔ |
SHOT 1.1 | ✔ | ✔ | ✔ |
SNOPT 7.7 | ✔ | ✔ | ✔ |
SOPLEX 6.0 | ✔ | ✔ | ✔ |
XA | ✔ | ✔ | |
XPRESS 40.01 | ✔ | ✔ | ✔ |
40.1.1 Maintenance release (August 16, 2022)
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 bug that cause restart files containing sums that add set elements to execute incorrectly. Restart files created with GAMS 40.1.0 carry this bug and should not be used but recreated.
Solvers
COPT
- New libraries 5.0.3.
MOSEK
- New libraries 9.3.21.
OCTERACT
- The options documentation provided on the Octeract webpage was apparently not uptodate when their last releases were made. Therefore, for the GAMS/Octeract link, the available options and their documentation also did not match the solvers libraries. We have updated these now and provide the list of changes to available options here:
- Changed default for
BOUND_VIOLATION_TOLERANCE
from 1e-8 to 1e-6. - Added values
MOST_FRACTIONAL_VARIABLE
andMODIFIED_MOST_NONCONVEX_VARIABLE
for optionBRANCHING_STRATEGY
. - New option
STRONG_BRANCHING_DEPTH
. - Removed
CBC_LB_MAX_NODES
. Added optionMILP_LB_MAX_NODES
. - Removed
CBC_PRESOLVE
. - Added values
GUROBI
andXPRESS
forMIP_SOLVER
(see also docu). - New options
HEUR_INEQUALITY
andHEUR_SUPREME
. - Changed default for
HEUR_NL_FEASIBILITY_PUMP
from 0 to 1. - Replaced
IS_PURGE_CUTS_ENABLED
by new optionPURGE_CUTS
. - Added option
LOCAL_SEARCH
. - New option
PRESOLVE
. - New options
REDUCE_LINEAR_CONSTRAINTS
andSTRENGTHEN_LINEAR_CONSTRAINTS
. - Changed type of option
REFORMULATE_INTEGERS_IN_MIQCQP
to boolean. - New option
USE_NONLINEAR_RELAXATION
. - Changed default for
OUTPUT_FREQUENCY
from ∞ to 1.
- Changed default for
- Fixed default for
CONVERGENCE_TOLERANCE
: Since Octeract uses this value as both absolute and relative gap tolerance, the default is now min(GAMS optcr, GAMS optca) to avoid too early termination on instances with objective value in (-1,1). - Added workaround for wrong dual bound reported by Octeract if problem is reformulated into MILP and the MILP solver does not solve to optimality (e.g., stops due to a timelimit). This resulted in wrongly declaring solutions as global optimal.
SCIP
- New libraries 8.0 (0e5ff0a6b5).
- Added options estimation/showstats, heuristics/alns/shownbstats, misc/showdivingstats to reenable some statistics that are now disabled.
40.2.0 Minor release (September 01, 2022)
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 the creation of a potentially wrong dump file with dumpOptGDX.
Solvers
COPT
- New libraries 5.0.4.
IPOPT
- New libraries MUMPS 5.5.1.
SCIP
- New libraries 8.0 (f0a1490e3b).
- Added parameter gams/infbound to instruct the GAMS/SCIP link to replace all missing variable bounds by a given value (off by default).
SHOT
- Fixed use of Gurobi for solving relaxations.
APIs
Python
- Fixed
setup.py
not copying schema files for Connect agents.
GAMS Transfer Matlab
- New version 0.2.2:
- Fixed read of equation with unknown subtype (recast as
=e=
). - Fixed partial read of symbols in indexed container.
- Fixed
equals
method in indexed container. - Fixed possible segfault when reading a subset of symbols as dense matrix with at least one scalar symbol.
- Fixed read of equation with unknown subtype (recast as
40.3.0 Minor release (September 16, 2022)
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.
GAMS System
- Fixed an error with command line parameter dumpOpt, that ignored the
SemiInt
modifier for a variable.
Solvers
CPLEX
- Fixed reporting of final (fixed) solve objective value instead of MIP solve objective value if final solve is enabled.
Tools
MODEL2TEX
- Added support for more (singleton) set attributes.
GAMS Studio
- New version 1.11.2 with some bug fixes, for example:
- Updated tooltip of a tab after filename changed with "save as...".
- Removed link to outdated introduction video.
- Fixed occasional crash when opening search dialog after closing all files.
- Fixed drag'n'drop creating group with invalid working directory.
- Fixed GDX Viewer showing wrong data in table view because of a falsely restored symbol which dimension or type has changed.
- Fixed GDX Viewer crash occurring when a file is reloaded during a drag'n'drop operation in table view mode.
- Fixed disabled "Create" button in MIRO dialog on missing assembly file.
40.4.0 Minor release (October 03, 2022)
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 wrong result for set attributes
.tlen
and.tval
when used with Singleton Sets. - Fixed an unexpected compilation error, when an embedded code section starts right after an
else
statement.
Solvers
CONVERT
- Fix model statement in GAMS format for MCP models with incomplete matching information.
Tools
GAMS Studio
- New version 1.11.3 with some bug fixes and minor enhancements, for example:
- Added shortcut
Ctrl + G
to also close theGoTo
dialog. - Added
Ctrl + C
shortcut to system log. - Added
Clear Log
action to the system log context menu. - Added shortcut descriptions for various actions in context menu of editor.
- Fixed drag'n'drop not working in project explorer on macOS.
- Fixed wrong dialog title for "New Project".
- Added shortcut