Table of Contents
- 41.1.0 Major release (October 28, 2022)
- 41.2.0 Minor release (November 14, 2022)
- 41.3.0 Minor release (November 28, 2022)
- 41.4.0 Minor release (December 14, 2022)
- 41.5.0 Minor release (January 03, 2023)
41.1.0 Major release (October 28, 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 Marcel Adenauer, Sebastian Braun, Wolfgang Britz, Arne Stolbjerg Drud, Michael Ferris, Mitch Phillipson, and Zhang Tao.
Platforms
- We plan to drop support for macOS 10.15 with the next major release.
- We plan to drop support for Windows 8.1 with the next major release.
GAMS System
Connect
- Symbol names in Connect are now case insensitive. The global attribute
caseSensitiveLookup
has been removed. - Added new Concatenate agent that allows concatenating multiple symbols into a single symbol.
- The
CSVReader
,PandasExcelReader
, andPandasSQLReader
now read relaxed domain information. - The
PandasSQLReader
now supports pyodbc connections. The connection type can be configured via the new option connectionType. - Options
readAll
andwriteAll
available in some agents allow and default to valueauto
. So if thesymbols
section is missing,auto
becomesTrue
, otherwiseFalse
. - Fixed bug where
PandasExcelWriter
andPandasSQLWriter
would not properly close the file/database connection in case of an exception. - Fixed bug where
GAMSWriter
andGDXWriter
would fail when writing an empty symbol with relaxed domains. - Fixed bug where
PandasExcelReader
andCSVReader
would generatedNaN
entries for labels with trailing spaces.
GAMS
- As announced we have removed language elements to access some commercial and licensing information:
- System suffixes
components
,clipCodes
,clipComponentMap
,componentSolverMap
,gamsLicenses
,gamsLicenseTypes
,lice1
,lice2
,licenseDateEvalN
,licenseDateEvalS
,licenseDateMaintN
,licenseDateMaintS
,licenseDateN
,licenseDateS
,licenseDateSysN
,licenseDateSysS
,licenseDaysEval
,licenseDaysMaint
,licenseDC
,licenseEval
,licenseID
,licenseInstitution
,licenseLevelText
,licenseLicensee
,licenseMudText
,licensePlatform
,licensePlatformText
,licenseStatus
,licenseStatusText
,licenseType
,licenseVendor
, andvendors
. - Predefined sets
componentEDate
,componentMDate
, andcomponentLicenseOptions
. - Many of these elements were used in the GAMS Model Library model
licememo
, which we also dropped.
- System suffixes
- Added new intrinsic functions lseMax, lseMaxSc, lseMin, and lseMinSc.
- Added new dollar control options $on/offSuffixAlgebraVars and related command line parameter SuffixAlgebraVars to disallow the use of variable suffixes (aka. attributes) in model algebra. This option allows to easily detect unintentional use of variables with suffixes in equation algebra.
- Improved message when exceeding the limit of the GAMS Community License or Demo License.
- Patched up the Windows memory reporting for showOSMemory and procTreeMemMonitor, and added clarifying documentation.
GMSPython
- Added the package
psycopg2
. - Removed the package
pyyaml-include
.
Embedded Python Code Facility
- On Windows, the directory with the Python DLL is automatically added to
PATH
, so some DLLs are properly found.
Solvers
ANTIGONE, CBC, Ipopt, SCIP, SHOT
- Updated MKL to 2022.2.0 on Linux and macOS.
BARON
- New libraries 22.9.30.
- Better treatment of convex and quadratic problems, including improved relaxations for binary quadratic programs.
- Improved cutting, range reduction, and branching strategies.
- Improved continuous and integer presolve algorithms.
- Improved interfaces to CPLEX, CBC, and IPOPT.
CONOPT
- New libraries 3.17N.
- New libraries 4.29.
CONVERT
- Added option AmplNL: Generates AMPL
.nl
file. - Added option AmplNLBin: Enables to write
.nl
file in binary format.
COPT
- New libraries 5.0.5.
- Value 1 for option Presolve has been changed to mean "fast presolve". Additional values 2 and 3 have been added to specify normal and aggressive presolving levels.
CPLEX
- Changed iis from boolean to integer option and added option value 2: Conflict analysis without previous solve.
- The time reported in model attribute resUsd now corresponds to the chosen clock type. That is, the CPU time spend by CPLEX is reported if
clocktype
is changed to 1.
DICOPT
- Added option dumpsubprob to activate writing of MIP and NLP subproblems as GAMS files.
GUROBI
- Added support for more nonlinear constraints: 1-norm, 2-norm, and inf-norm specified as nonlinear expressions.
- Deprecated dot-option
.GenConstrType
: Please use nonlinear expressions instead. - Changed iis from boolean to integer option and added option value 2: Conflict analysis without previous solve.
Ipopt
- New libraries 3.14.10.
- Small performance improvement for problems with i) linear objective function, ii) quadratic objective and linear constraints, iii) only linear equality constraints, or iv) only linear inequality constraints.
Lindo/LindoGlobal
- New libraries 14.0.162:
- LP Solver Improvements:
- Improved algorithms for searching alternative optima.
- MIP Solver Improvements:
- Improved selection of search parameters when solving difficult instances.
- Linearization:
- Recognition of more expressions than previous versions.
- Advanced linearization of QP and conic models.
- Nonlinear Solver Improvements:
- Recognition of fractional linear programs and algorithmic improvements for this class.
- Global Solver Improvements:
- Introduce auxiliary variables to optimize in hyperspace for improved performance.
- Improved warning messages for possible sub-optimal solutions.
- Improved bound-tightening process.
- LP Solver Improvements:
- Added support for new intrinsic function lseMax.
MOSEK
- New libraries 10.0.25.
- Improved presolve for conic problems.
- Improved performance of interior-point optimizer for large-scale LPs and when running on recent AMD CPUs.
- Improved cutting plane separation and presolve for mixed-integer programs.
- Default of option MSK_IPAR_MIO_CUT_IMPLIED_BOUND changed from off to on.
- New option MSK_IPAR_MIO_CUT_LIPRO to enable lift-and-project cuts.
- New option MSK_IPAR_MIO_PRESOLVE_AGGREGATOR_USE to control use of aggregator.
- Added symmetry detection and exploitation for mixed-integer programs. New option MSK_IPAR_MIO_SYMMETRY_LEVEL to control level of symmetry detection and handling.
- Introduced reformulations for MIQCPs, which allows solution of more non-convex MIQCPs that can be reformulated into convex ones. New option MSK_IPAR_MIO_QCQO_REFORMULATION_METHOD to set reformulation method.
- Added possibilities to enable memory saving and higher numerical emphasis for mixed-integer programs by use of new options MSK_IPAR_MIO_MEMORY_EMPHASIS_LEVEL and MSK_IPAR_MIO_NUMERICAL_EMPHASIS_LEVEL, respectively.
- Added possibility to solve continuous problem obtained from fixing all integer variables to initial level values by enabling new option MSK_IPAR_MIO_CONSTRUCT_SOL.
- Additional option changes:
- New option MSK_DPAR_PRESOLVE_TOL_PRIMAL_INFEAS_PERTURBATION to specify amount by which Mosek can perturb problem in presolve to avoid infeasibility.
- Removed option
MSK_IPAR_INTPNT_MULTI_THREAD
. - Removed moderate and aggressive scaling options from MSK_IPAR_INTPNT_SCALING and MSK_IPAR_SIM_SCALING.
- New option MSK_IPAR_MIO_DATA_PERMUTATION_METHOD to enable permutation of mixed-integer problems.
- New option MSK_IPAR_WRITE_JSON_INDENTATION to control whether json files are written with indentation.
- Removed options
MSK_IPAR_WRITE_LP_QUOTED_NAMES
,MSK_IPAR_WRITE_LP_STRICT_FORMAT
,MSK_IPAR_WRITE_LP_TERMS_PER_LINE
, andMSK_IPAR_WRITE_PRECISION
.
Octeract
- New libraries 4.5.1.
ODHCPLEX
- The time reported in model attribute resUsd now corresponds to the chosen clock type. That is, the CPU time spend by ODHCPLEX is reported if
clocktype
is changed to 1.
SCIP
- New libraries 8.0.2.
XA
- As announced, dropped XA.
XPRESS
- New libraries 40.01.03.
Tools
GAMS Studio
- New version 1.12.1.
- New feature: Navigator (
Ctrl+k
)- Please note: this feature is currently in beta and does not have mouse support yet!
- Filter files by typing a search term, wildcards are also supported (e.g.:
*.gms
). - Press
Enter
to jump to a selected file. - Type
?
to show help about all available prefixes. - The
GoTo
- andTabBrowser
-dialogs are now obsolete and will be removed in the future.
- GDX Viewer improvements:
- New feature: Added first version of an export dialog, currently supporting Excel output only.
- New feature: Added quick selection to GDX Viewer filters.
- Improved auto-resizing behavior.
- Improved symbol table colors especially when the theme has changed.
- Search and Replace improvements:
- Added highlighting to matches in
Search Result View
. - Added capture group support for regular expressions in
Search Dialog
.
- Added highlighting to matches in
- Added filter to MIRO deploy dialog and EFI editor.
- Added function to open directly in Pin-View from Project Explorer by
Ctrl+double-click
(for horizontal pin) orCtrl+Shift+double-click
(for vertical pin). - Added icons to the main tabs (except for macOS).
- Added editor settings to skip syntax highlighting for long lines (this can improve performance significantly).
- Stability improvements, bug fixes, and minor enhancements, e.g.:
- Changed GAMS version mismatch error message to a warning message.
- Fixed GDX Viewer crash when reloading a file with an alias selected.
- Fixed crash when switching tabs on macOS.
- Fixed project changes on search over multiple files where a file is linked to more than one project.
- Fixed unexpected behavior when adding the main file to an EFI file.
- Fixed wrong context menu for new entry in Project Explorer after using
Save as...
. - Fixed that models with names containing spaces failed to be executed on NEOS and Engine.
- New feature: Navigator (
GDXRRW
- GDXRRW is now deprecated and will be removed in a future release. Please use GAMS Transfer R instead. If you encounter issues with the transition to GAMS Transfer R or if you have any feature requests for GAMS Transfer R or concerns about the transition, do not hesitate to contact GAMS support.
GDXXRW
- When the limit on number of supported of rows or columns is reached when reading from a file, a warning is now given that subsequent entries might have been skipped.
$libInclude win32
- Added
XLSMerge
functionality to<sysdir>\inclib\win32.gms
to merge two Excel workbooks.
APIs
gams2numpy
- Non-UTF-8 characters do not result in an exception anymore. Instead, such characters are transferred to an alternative representation by using the Python error handler
backslashreplace
. This change affectsgams2numpy
and all its clients –GAMS Transfer
,Connect
, andgams_magic
(Jupyter notebooks). - The binaries are now build with
numpy 1.21.6
for Python 3.7 andnumpy 1.23.3
for Python 3.8, 3.9, and 3.10.
GAMS Transfer Matlab
- Breaking: Symbol name uniqueness is now checked case insensitively. For example, it is not possible anymore to have three different symbols named
symbol
,Symbol
, andSYMBOL
. - Breaking: Changed
Symbol.addUELs
signature fromaddUELs(dim, uels)
toaddUELs(uels, dim)
.dim
is now allowed to accept a vector of dimensions. - Breaking: Changed
Symbol.setUELs
signature fromsetUELs(dim, uels)
tosetUELs(uels, dim)
andsetUELS(_, "rename", true/false)
. Settingrename
totrue
triggers the oldSymbol.initUELs
.dim
is now allowed to accept a vector of dimensions. - Breaking: Changed
Symbol.removeUELs
signature fromremoveUELs(dim, uels)
toremoveUELs()
,removeUELs(uels)
, andremoveUELs(uels, dim)
.dim
is now allowed to accept a vector of dimensions. - Breaking: Changed
Symbol.renameUELs
signature fromrenameUELs(dim, olduels, newuels)
torenameUELs(uels)
andrenameUELs(uels, dim)
.uels
can now becellstr
,struct
, orcontainers.Map
.dim
is now allowed to accept a vector of dimensions. - Added method
Container.getSymbolNames
to return the original symbol names for a list of symbol names of any case. - Added method
Container.hasSymbols
to check if symbol name (case insensitive) exists. - Added method
Container.getUELs
to get UELs from all symbols. - Added method
Container.removeUELs
to remove UELs from all symbols. - Added method
Container.renameUELs
to rename UELs in all symbols. - Added method
Symbol.reorderUELs
to reorder UELs without changing the meaning of records. - Added flags
Container.modified
andSymbol.modified
to indicate if a container and/or symbol has been modified since last reset. - Added possibility to filter UEL codes in
Symbol.getUELs
. - Added possibility to pass a vector of dimensions to
Symbol.getUELs
. - Added possibility to overwrite symbols with
Container.add*
if main symbol definition (e.g. type, domain) is equal. - Changed
Container.getSymbols
,Container.removeSymbol
,Container.renameSymbol
,Container.describe*
, and others that useContainer.getSymbols
to accept symbol names case insensitively. - Changed behaviour of default records: Default records do not get written to GDX anymore if the records format is
dense_matrix
and either the container is in indexed mode or if the symbol has a regular domain. - Changed behaviour of
getDomainViolations
: As in GDX, different character case does not lead to a domain violation. - Categoricals for record domain labels are now created with
Ordinal
set totrue
, but ordinal categoricals are not enforced, i.e., users may pass categoricals withOrdinal
set tofalse
. - Changed symbol read order when reading a subset of symbols: Symbol order is defined by source order (e.g., symbol order in GDX file) rather than user supplied order. To establish a custom order after the read, use
reorderSymbols
. - Deprecated
Symbol.getUELLabels
. UseSymbol.getUELs
instead. - Deprecated
Symbol.initUELs
. UseSymbol.setUELs
instead. - Deprecated
Container.getUniverseSet
. UseContainer.getUELs
instead. - Fixed failing symbol constructors when using
domain_forwarding
, but none of the optional arguments. - Fixed
Symbol.transformRecords
(table-like to matrix-like formats) in case the domain set records and UELs differ. - Fixed write of sets defined over sets.
GAMS Transfer Python
- The API has been redesigned to more closely mimic GAMS behavior (i.e., GAMS is case preserving, not case sensitive).
- The
.data
dict has been replaced with a customdict
that preserves the case of symbol names. This mimics the convention in GAMS. Symbol lookup from this customdict
is case insensitive. - Added new methods to customize dimension, symbol, and container UELs:
getUELs
,setUELs
,renameUELs
,removeUELs
,addUELs
, andreorderUELs
- New Symbol method
equals
can be used to compare symbol objects. - Deprecated the container method
getUniverseSet
. This method will be removed in a future major release. Use<Container>.getUELs()
instead. - Container methods
addSet
,addAlias
,addParameter
,addVariable
, andaddEquation
now allow for symbol overwriting. Previously, an error was raised and the symbol had to be removed before recreation. - New class
UniverseAlias
and new Container methodaddUniverseAlias
to allows creation of a symbol which is an alias to the universe (fixes bug). - Container no longer link symbol categoricals together when setting records with
setRecords
; data that results in domain violations is not immediately lost and the user has greater flexibility to modify inplace to theContainer
. - Updated behavior of
removeSymbols
: the domain of dependent symbols is relaxed to "*" if a set/alias is removed. If a parent set of an alias is removed, the alias symbol will also be removed automatically. - Implemented a new class called
DomainViolation
to organize where domain violations occur in data. - New method
getDomainViolations
to return a list ofDomainViolation
objects, should they exist. - Methods
*DomainViolations
locate domain violations by referencing all appropriate domain sets.findDomainViolations
now returns a view of therecords
DataFrame that contains all domain violations (previously returned only anIndex
where domain violations occurred). - Methods
*DuplicateRecords
locate duplicate records on a case insensitive basis (consistent with GAMS behavior). - Removed tests for duplicate records and domain violations from the
<Symbol>.isValid()
method.<Symbol>.isValid()
validates the structural aspects of the data, not the quality of the data. This improves performance by not looping over all records. - Created a Symbol
modified
flag that tracks if any changes have been made to a symbol. These flags can be set/reset by setting<Container>.modified=True/False
. - Enabled the use of the Python
in
operator to test if a symbol isin
a container with the syntax<symbol_object> in <container_object>
or<symbol_string_name> in <container_object>
, where<symbol_string_name>
is case insensitive. - The Container is now subscriptable, i.e.,
m[<symbol_name>]
returns the symbol object. Symbol objects are still accessible through the underlying dictionary, i.e.,m.data[<symbol_name>]
. setRecords
now maintains user specified categoricals when passing a DataFrame.setRecords
,getUELs
,setUELs
,renameUELs
, andaddUELs
methods now strip any trailing whitespace from UELs.- Improved Container behavior if reading from
ConstContainer
/Container
: lists passed to the symbols argumentread(<source>, symbols)
are no longer considered to be ordered – previously, if an alias was listed before its parent set, an exception would occur. - Fixed bug when attempting to read in a symbol named
all
, but the Container read in all symbols. - Exposed (previously hidden)
ConstContainer
methodsgetCardinality()
andgetSparsity()
. - An exception is now raised if attempting to read a symbol that does not exist in the data source. Previously, such symbol names were silently ignored.
- Improved clarity of some exception messages and other error handling.
- Fixed bug that prevented
dict_keys
anddict_items
(returns from dict methods.keys()
and.items()
, respectively) objects from being passed directly intosetRecords
. - Fixed bug that resulted in a
NameError
when calling.whereMin()
or.whereMax()
on variables or equations. - New tests within
<Container>.isValid()
method to detect broken container references in symbols and inconsistent symbol naming between the<Container>.data
dict and the symbol objects. These issues can occur when creating new symbols in a container with a copy/deepcopy operation. - Restructured
ConstContainer
symbol classes to improve read-only behavior.
GAMS Transfer R
- Breaking: Symbol name uniqueness is now checked case insensitively. For example, it is not possible anymore to have three different symbols named
symbol
,Symbol
, andSYMBOL
. - Breaking: Symbol records and symbol names are treated in a case insensitive manner. Symbols domain is not checked automatically.
- Added a new class
ConstContainer
for efficient data transfer. - Allow read from
Container
/ConstContainer
into anotherContainer
. - Added a method
Container$getSymbolNames
to return the original symbol names for a list of symbol names of any case. - Added a method
Container$hasSymbols
to check if symbol name (case insensitive) exists. - Changed
Container$getSymbols
,Container$removeSymbols
,Container$renameSymbol
,Container$describe*
, and others that useContainer$getSymbols
to accept symbol names case insensitively. - New Symbol methods
hasDuplicateRecords
,countDuplicateRecords
,findDuplicateRecords
, anddropDuplicateRecords
to help debug and resolve errors with duplicate records. - New Container methods
hasDuplicateRecords
,countDuplicateRecords
, anddropDuplicateRecords
to help find symbols that contain duplicate records that cause the Symbol to be invalid. - New tests within
Container$isValid()
method to detect broken container references in symbols and inconsistent symbol naming between the<Container>$data
field and the symbol objects. - Method
isValid
does not check for symbol record domain columns being factors, for duplicates, and for domain violations. - New Symbol methods
hasDomainViolations
,countDomainViolations
,findDomainViolations
,dropDomainViolations
, andgetDomainViolations
. - New Container methods
hasDomainViolations
,countDomainViolations
, anddropDomainViolations
. - Allowed symbol overwriting with
addSet/addParameter/addVariable/addEquation/addAlias
methods when everything other than records and description is unchanged. - Added methods
SpecialValues$isNA
,SpecialValues$isEps
,SpecialValues$isUndef
,SpecialValues$isPosInf
,SpcialValues$isNegInf
to test for special values. - The argument for
where*
methods changed fromcolumns
tocolumn
. - Trailing whitespaces is now removed automatically from UELs in
setRecords
and*UEL
methods.
GMO
- Added a concurrent mode for QP extraction. In this mode, independent extraction methods are run in parallel threads. Extraction terminates when the first method completes. This is done row-wise: the concurrent threads work on each row in turn, using the result of the first thread to finish for that row and moving on together to the next row. Setting the
gmoQExtractAlg
property to 3 selects this method. - Added new function
gmoGetQMakerStats
to get statistics about QP extraction. - Added new function
gmoFillMatches
to complete the row/column matching for MCP models. - Added new function
gmoLoadDataLegacyEx
to API: this function differs from the existinggmoLoadDataLegacy
function in that the new function includes a flagfillMatches
to toggle the completion of matching information for MCP models during the load. - Changed the behavior of
gmoLoadDataLegacy
vis-a-vis matching information for MCP. Previously,gmoLoadDataLegacy
behaved likegmoLoadDataLegacyEx(fillMatches=true)
. With this release, it behaves likegmoLoadDataLegacyEx(fillMatches=false)
. Users of this function that require the old behavior must switch to callinggmoLoadDataLegacyEx(fillMatches=true)
or callgmoFillMatches
explicitly.
Jupyter Notebooks
- The data synchronization between Python and GAMS relies now entirely on GAMS Transfer.
- Environments allow working with different GAMS instances.
- Instead of
gams_push
andgams_pull
with various Python data formats, GAMS lines and cells automatically synchronize symbols between GAMS and Python. - GAMS Symbols can now be declared in the Transfer container in Python rather than in the GAMS cells. Please inspect the Magic (Jupyter Notebooks) Magic "GAMS Jupyter API description" for details.
- The older version of GAMS magic commands is still available under
apifiles/Python/gams/gams_magic_legacy
. This will be removed with one of the next major versions.
Python
- Added example
transport_gt.py
that demonstrates how to combine the GAMS Python high level API with a GAMS Transfer Container, essentially replacing theGAMSDatabase
class. - Added method
run_engine
toGAMSJob
class to run jobs on GAMS Engine, rather than locally.
Model Libraries
GAMS Data Library
GAMS Model Library
- Dropped
licememo
.
GAMS Test Library
- Added fnlse.gms : Rough correctness test for LSE max/min intrinsics.
- Added fnlsemax.gms : Test correctness of LSEMax intrinsic.
- Added fnlsemaxsc.gms : Test correctness of LSEMaxSc intrinsic.
- Added fnlsemin.gms : Test correctness of LSEMin intrinsic.
- Added fnlseminsc.gms : Test correctness of LSEMinSc intrinsic.
- Added fnlseslv.gms : Rough solver correctness test for LSEMax intrinsics.
- Added caconcat.gms : Test Connect agent Concatenate.
- Added suffix02.gms : Test CLP suffixAlgebraVars.
FIN Library
PSOPT Library
- Fixed DED : Dynamic Economic Load Dispatch.
- Fixed DED-PB : Price based Dynamic Economic Load Dispatch.
- Fixed DED-wind : Dynamic Economic Load Dispatch considering Wind generation.
- Fixed DEDESS : Cost based Dynamic Economic Dispatch integrated with Energy Storage.
- Fixed DEDESSwind : Cost based Dynamic Economic Dispatch integrated with Energy Storage and Wind.
- Fixed ESSDCOPFwind : DC-OPF integrated with Energy Storage and Wind.
- Fixed MultiperiodDCOPF24bus : Multi-period DC-OPF for IEEE 24-bus network considering wind and load shedding.
- Fixed PBUC : Price based Unit commitment.
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 14.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 14.0 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS 5.6 | ✔ | ✔ | ✔ |
MOSEK 10 | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
OCTERACT 4 | ✔ | ✔ | |
ODHCPLEX 6 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
QUADMINOS 5.6 | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 8.0 | ✔ | ✔ | ✔ |
SHOT 1.1 | ✔ | ✔ | ✔ |
SNOPT 7.7 | ✔ | ✔ | ✔ |
SOPLEX 6.0 | ✔ | ✔ | ✔ |
XPRESS 40.01 | ✔ | ✔ | ✔ |
41.2.0 Minor release (November 14, 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
GAMS
- Improved the dollar control options $abort[.noError], $error, and $log, so that the text given as an optional argument is not limited to 255 characters anymore.
- Fixed the creation of a potentially wrong dump file with dumpOptGDX.
APIs
GAMS Transfer Python
- Enabled writing of partial
Containers
to GDX withwrite_symbols
argument. - Changed
Container.write()
argumentwrite_symbols
tosymbols
to better harmonize with Matlab and R versions of GAMS Transfer. - Fixed bug with
equals
symbol method when comparingUniverseAliases
.
Jupyter Notebooks
- Fixed a bug in
%gams
line magic that prevented code containing dashes preceded by a space from being executed properly.
41.3.0 Minor release (November 28, 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 Mart Saluri.
GAMS System
GAMS
- Improved performance when using the command line parameter GDX for programs with many labels.
- Fixed a potential problem using a platform specific license with the pLicense parameter.
Solvers
COPT
- Fixed that option AbsGap was not available.
Lindo/LindoGlobal
- New libraries 14.0.191.
Tools
GAMS Studio
- New version 1.12.2 with some bug fixes and minor enhancements, for example:
- Added support for trailing
:NUMBER
when choosing files in Navigator. - Fixed crash when moving line in text file.
- Fixed crash when reloading an invalid GDX file.
- Added support for trailing
APIs
GMO
- Fixed function
gmoNameInput
: in case old control files are read, the result string was uninitialized.
41.4.0 Minor release (December 14, 2022)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
Solvers
GUSS
- Fixed a bug that could have caused unwanted skipping of scenarios when the scenario data is sparse.
MOSEK
- New libraries 10.0.31.
SCIP Optimization Suite
- New libraries SCIP 8.0.3.
- New libraries SoPlex 6.0.3.
- New libraries PaPILO 2.1.2.
Tools
GAMS Studio
- New version 1.12.3 with some bug fixes and minor enhancements, for example:
- Added
x
prefix to Navigator to access Quick Actions. - Unified Navigator input field with other search fields, adding regex and exact match modifiers.
- Fixed behavior of
Squeeze Trailing Zeroes
check box in GDX Viewer when usingg-format
ore-format
withFull
precision. - Fixed help view being empty on some Linux distributions.
- Added
APIs
GAMS Transfer Python
- Fixed
setRecords
throwing an exception in case of labels that differ in trailing spaces only. - Fixed a bug when reading data from multiple sources with a single
Container
instance. - Fixed a bug when writing a GDX file with a symbol list.
- Fixed a bug that prevented writing when the first symbol in the
Container
is aUniverseAlias
.
Jupyter Notebooks
- Utilize partial GDX writing of GAMS Transfer containers in GAMS magic. Only symbols that are new or modified will be written to GDX. This improves the data exchange performance between Python and GAMS.
41.5.0 Minor release (January 03, 2023)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
Solvers
CONVERT
- Fixed error messages to be thrown incorrectly when using external functions (files were written correctly).
GUSS
- Fixed a problem with MCP models and variable fixings as scenario data.
Mosek
- New libraries 10.0.33.
APIs
gams2numpy
- Fixed a memory leak in
gdxWriteSymbol[Raw|Str]
andgmdFillSymbol[Raw|Str]
. - Fixed a problem with uel and string numbers that do not point to a label or element text.
- Improve performance converting GDX/GMD strings to Python strings.
- Allow to specify an optional encoding string for methods
[gdx|gmd]GetUelList
and[gdx|gmd]ReadSymbol[Raw|Str]
.