38 Distribution
Table of Contents
38.1.0 Major release (January 31, 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, Albert Brouwer, Arne Drud, Daniel Jungen, Scott McDonald, Tom Rutherford, Seyed Amin Sedgh, and Wenjin Zhou.
Platforms
- As announced, dropped support for macOS 10.14 (Mojave).
- Added support for macOS 12 (Monterey).
GAMS System
GAMS
- Added new command line parameter dumpOptGDX to load the data needed in dumpOpt files from GDX instead of data statements.
- Added new command line parameter ReferenceLineNo to control the line numbers written to a reference file.
- We plan to drop the command line parameter
freeEmbeddedPython
with the next major release. - Extended the Solve Summary written with asyncSolLst=1 to include information about controlling loop indices during job submission, name of the solver called, source line number of the solve statement, resource and iteration limit.
- Make handling of execution errors during model generation (e.g. division by zero in an equation) more consistent across different settings for the solveLink option. In the past, the error count was set to 0 automatically when returning from a solve with
solveLink=0
only (which is equivalent to setting execError=0 after the solve statement). This is not done anymore. - Write additional information about execution errors during model generation (e.g. division by zero error) to the lst file, e.g., the equation name and index causing the problem.
- Improve recognition of '/' as path delimiter on Windows.
- Pause automated time dependent log update while executing embedded code sections.
- Check for certain byte order marks (BOMs) in GAMS input files. Files with UTF8 BOM can be processed now, other BOMs generate a compilation error.
- Added support for (mixed-integer) quadratic models whose Q matrices contain more than \(2^{31}\) = 2,147,483,648 nonzeros in their upper triangle. At this time, only the solver links for CPLEX and ODHCPLEX are capable of handling such large model instances.
- Changed system suffix
isAlfaBeta
toisAlphaBeta
. - Fixed a problem for EMP models with holdFixed model attribute.
- Fixed a problem where IDCGenerateGDXInput, IDCGenerateGDXOutput, IDCGDXOutput , and IDCGenerateGDX did not write a GDX file if the execution was stopped with abort[.noError].
Extended Mathematical Programming (EMP)
- Stochastic EMP: Changed the
stage
behavior so that it creates an explicit error when a stage gets assigned twice for the symbol. In the past, this caused erratic behavior.
Embedded Python Code Facility
- The Python version of GMSPython has been updated to
3.8.12
.
Extrinsic Function libraries
- With the next distribution we will drop the extrinsic function library
parcclib
.
Solvers
BARON
- New libraries 22.1.16.
- new presolve implementation with novel presolve techniques for linear and nonlinear optimization problems improves performance for many problem classes
- more classes of SOCPs are now recognized
- new lift-and-project implementation that extends the previous RLT implementations to generic NLPs and MINLPs and leads to substantial reduction of duality gaps for difficult problems
- improved tree management, including restarts of branch-and-bound search
- improved branching routines for the identification of most important branching variables
- dynamic LP algorithm selection strategy improves robustness for numerically difficult problems by automatically choosing between CPLEX (if licensed) and CLP/CBC and possibly switching during the search, see also option LPSol
- improved control on the effect of floating point round-off errors
- faster hashing routines
- the embedded FilterSD algorithm is now off by default
- better integration with GAMS NLP subsolvers
- improvements to CBC and IPOPT interfaces
- update the Xpress interface to work with FICO XPRESS 39
- Fixed reporting of proven irreducible infeasible sets ("IIS" instead of "(I)IS").
CONOPT
- New libraries 4.25.
- General improvements in the construction of the initial basis and in the startup of the optimization process, especially for very large models.
- Many small improvements and corrections of errors found by users.
CONVERT
- The symbol
We
in DumpGDX is now stored sparse. - Changed option default of GDXHessian and GDXQuadratic to 0.
COPT
- Added new parallel LP and MIP solver COPT 3.0.5 by Cardinal Operations (https://www.shanshu.ai/copt).
- For GAMS demo and community licenses, model size limitations as for other solvers apply. For an unlimited GAMS/COPT or GAMS/COPT-Link license, contact sales@gams.com.
CPLEX
- Fix appending userjobid to userincbicall, usergdxin, and usergdxnameinc in BCH calls.
- Fixed computing dual multipler at cone top (QCP models).
DICOPT
- Fixed that non-default stage information was setup in sub-MIPs when
prioropt=0
.
KNITRO
- New libraries 13.0.
- Introduces an updated, parallel, branch-and-bound solver for mixed-integer optimization. This updated solver is able to exploit parallelism and uses improved heuristics to solve mixed-integer problems much faster than before.
- Offers new initial point strategies for non-convex quadratic programs (QPs) and quadratically constrained quadratic programs (QCQPs). These new initial point strategies improve the likelihood of finding the global solution, and can be used in conjunction with the Knitro multi-start procedure to search for global or better local solutions for non-convex QP and QCQP models.
- Offers significant robustness and speed improvements on difficult nonlinear optimization problems.
- Offers improved performance when using the SQP and MISQP algorithms on larger models.
- Added options:
- ncvx_qcqp_init: Specifies the initialization strategy used for non-convex QPs and QCQPs.
- mip_cutoff: This value specifies the objective cutoff value for MIP.
- mip_heuristic_lns: Specifies whether or not to enable the MIP large neighborhood search (LNS) heuristics.
- mip_liftproject: Specifies rules for adding lift and project cuts.
- mip_multistart: Use to enable MIP multi-start at the branch-and-bound level.
- mip_numthreads: Specify the number of threads to use for MIP branch and bound.
- Renamed options (old option names still available as synonyms but deprecated):
bar_pencons
to bar_penaltycons.bar_penrule
to bar_penaltyrule.mip_integral_gap_abs
to mip_opt_gap_abs.mip_integral_gap_rel
to mip_opt_gap_rel.par_msnumthreads
to ms_numthreads.par_blasnumthreads
to blas_numthreads.par_lsnumthreads
to linsolver_numthreads.tuner_maxtimecpu
to tuner_maxtime_cpu.tuner_maxtimereal
to tuner_maxtime_real.
- Added option values:
- blasoption: 3.
- mip_heuristic_diving: bits 1 - 4.
- Changed option defaults:
- restarts: -1 (auto).
- mip_strong_candlim: 128.
- Fixed possible error of incorrect Jacobian for QCP models.
Lindo/LindoGlobal
- New libraries 13.0.319.
LocalSolver
- As announced, dropped LocalSolver and LocalSolver70.
MOSEK
- New libraries 9.3.11.
- Added support for LPs and MIPs with more than \(2^{31}\) entries in the coefficients matrix.
Octeract
- New libraries 4.1.0.
- Reduced memory requirement and improved performance.
ODHCPLEX
- New libraries 6.0.8.
- Added support of solution pool export via solnpool and solnpoolmerge.
SCIP Optimization Suite
- New libraries PaPILO 2.0.0.
- Added dual postsolve functionality for LPs.
- Immediate application of a presolvers reductions if run sequentially.
- Improvements in performance and functionality of many presolvers.
- For more details, see [19] and the PaPILO CHANGELOG.
- Updated TBB to version 2021.5.0.
- New libraries SoPlex 6.0.0.
- PaPILO can now be enabled as presolver by setting int:simplifier to the new value 2.
- SoPlex can now be interrupted by Ctrl+C/SIGINT.
- Changed default for option int:simplifier from 1 to new value 3. The value 1 now means "auto".
- New option real:simplifier_modifyrowfac.
- For more details, see [19] and the SoPlex CHANGELOG.
- New libraries SCIP 8.0.0.
- Symmetry handling:
- New symmetry handling inequalities based on the Schreier Sims table, which are able to handle symmetries of arbitrary kinds of variables.
- The symmetry code can now heuristically search for orbitopes that do not completely handle a symmetry component and add certain Schreier Sims cuts to such components.
- In-tree restarts due to tree size estimation have been made compatible with orbital fixing.
- Improved performance of upgrades to packing/partitioning orbitopes, symresack cover separation, and propagation for orbisack and symresack.
- Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
- Cutting planes:
- New separator mixing to generate mixing cuts.
- New separator rlt to compute cuts via the reformulation-linearization technique (RLT).
- New separator minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is implied by the extended formulation for bilinear products.
- New separator interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated rank-one constraint that is implied by the extended formulation for bilinear products (currently disabled by default).
- Separator "aggregation" now uses the objective cutoff row as base row and separates lifted cover cuts based on newer lifting function of Letchford and Souli (2019).
- Separators "strongcg" and "gomory" now share the same computed basis.
- Primal Heuristics:
- New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
- PADM can now reoptimize found solution with original objective function.
- The RENS neighborhood in the heuristic ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
- Revised and improved heuristic subNLP, in particular choice of NLP iteration limit and starting condition and reuse of subSCIP.
- The handling of algebraic expressions and nonlinear constraints has been rewritten:
- Support for trigonometric functions sine and cosine and for the entropy function has been added.
- Improved recognition of common subexpressions, in particular square and bilinear terms.
- All type of nonlinear constraints, including quadratic and second-order-cones, are now handled by the constraint handler for nonlinear constraints. The specialized constraint handlers have been removed. However, methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
- Added nonlinear handler for quadratic, bilinear, convex, concave, and quotient expressions, second-order cone constraints, and perspective tightening for expressions in semi-continuous variables.
- As before, an extended formulation for nonlinear constraints is constructed. However, this formulation is now handled implicitly and used to construct the LP relaxation only, while the original formulation is used to check feasibility, propagate variable domains, etc. This difference should drastically improved the likelihood that a solution that satisfies the nonlinear constraints in the presolved problem is also feasible for the original problem.
- Products in nonlinear constraints are no longer disaggregated for the extended formulation.
- Improved analysis on which nonlinear variables in nonlinear constraints can be increased or decreased without harming feasibility by taking monotonicity into account.
- Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
- When a variable appears in only one concave less-or-equal constraint, it will be fixed to one of its bounds in more cases now.
- New branching rule for variables in nonlinear constraints that scores candidates based on constraint violation, variable type, and pseudo-costs simultaneously. Variables that are added for the extended formulation of a nonlinear constraint are no longer branched on by default.
- New strategies to deal with weak estimators for nonlinear functions and small violations of nonlinear constraints.
- Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
- Added tables to print statistics of nonlinear constraint handler, nonlinear handlers, and handlers for all supported functions.
- Revised and improved interfaces to Ipopt and CppAD, e.g.:
- Optimization of taped expressions and sparse Hessian evaluation of CppAD are used now.
- Added table to print statistics on NLP solvers.
- The interfaces to Gurobi and Mosek are thread-safe now.
- Parameters removed:
gams/resolvenlp
constraints/abspower/∗
,constraints/bivariate/∗
,constraints/quadratic/∗
,constraints/soc/∗
constraints/nonlinear/cutmaxrange
,constraints/nonlinear/linfeasshift
,constraints/nonlinear/reformulate
,constraints/nonlinear/sepanlpmincont
,constraints/nonlinear/enfocutsremovable
,constraints/nonlinear/maxexpansionexponent
,constraints/nonlinear/upgrade/abspower
,constraints/nonlinear/upgrade/and
,constraints/nonlinear/upgrade/bivariate
,constraints/nonlinear/upgrade/quadratic
constraints/orbitope/usedynamicprop
heuristics/multistart/nlpminimpr
heuristics/subnlp/iteroffset
,heuristics/subnlp/iterquotient
,heuristics/subnlp/nlpiterlimit
,heuristics/subnlp/nlptimelimit
,heuristics/subnlp/runalways
,heuristics/subnlp/minimprove
,heuristics/subnlp/nlpoptfile
,heuristics/subnlp/resolvefromscratch
,heuristics/subnlp/resolvetolfactor
propagating/symmetry/disableofrestart
separating/convexproj/nlptimelimit
,separating/gauge/nlptimelimit
separating/strongcg/dynamiccuts
,separating/strongcg/maxrounds
,separating/strongcg/maxroundsroot
,separating/strongcg/maxsepacuts
,separating/strongcg/maxsepacutsroot
- Parameters added:
- branching/inference/conflictprio, branching/inference/cutoffprio
- constraints/nonlinear/bilinmaxnauxexprs, constraints/nonlinear/linearizeheursol, constraints/nonlinear/reformbinprods, constraints/nonlinear/reformbinprodsand, constraints/nonlinear/reformbinprodsfac, constraints/nonlinear/checkvarlocks, constraints/nonlinear/conssiderelaxamount, constraints/nonlinear/enfoauxviolfactor, constraints/nonlinear/forbidmultaggrnlvar, constraints/nonlinear/forcestrongcut, constraints/nonlinear/propauxvars, constraints/nonlinear/propinenforce, constraints/nonlinear/rownotremovable, constraints/nonlinear/strongcutefficacy, constraints/nonlinear/strongcutmaxcoef, constraints/nonlinear/tightenlpfeastol, constraints/nonlinear/varboundrelax, constraints/nonlinear/varboundrelaxamount, constraints/nonlinear/violscale, constraints/nonlinear/vpadjfacetthresh, constraints/nonlinear/vpdualsimplex, constraints/nonlinear/vpmaxperturb, constraints/nonlinear/weakcutminviolfactor, constraints/nonlinear/weakcutthreshold, constraints/nonlinear/upgrade/setppc, constraints/nonlinear/branching/∗
- cutselection/hybrid/∗
- decomposition/disablemeasures
- expr/log/minzerodistance, expr/pow/minzerodistance
- heuristics/alns/nodesquotmin, heuristics/alns/initduringroot, heuristics/alns/maxcallssamesol
- heuristics/dps/∗
- heuristics/padm/reoptimize
- heuristics/subnlp/expectinfeas, heuristics/subnlp/feastolfactor, heuristics/subnlp/iterinit, heuristics/subnlp/ninitsolves, heuristics/subnlp/nodesfactor, heuristics/subnlp/nodesoffset, heuristics/subnlp/presolveemphasis, heuristics/subnlp/setcutoff, heuristics/subnlp/successrateexp, heuristics/subnlp/opttol,
- misc/avoidmemout
- nlhdlr/bilinear/∗, nlhdlr/concave/∗, nlhdlr/convex/∗, nlhdlr/default/∗, nlhdlr/perspective/∗, nlhdlr/quadratic/∗, nlhdlr/quotient/∗, nlhdlr/soc/∗
- nlpi/ipopt/∗
- presolving/milp/probfilename
- propagating/obbt/createlincons,
- propagating/symmetry/addconflictcuts, propagating/symmetry/addstrongsbcs, propagating/symmetry/addweaksbcs, propagating/symmetry/detectsubgroups, propagating/symmetry/maxnconsssubgroup,
propagating/symmetry/onlybinarysymmetry
, propagating/symmetry/preferlessrows, propagating/symmetry/sstaddcuts propagating/symmetry/sstleaderrule, propagating/symmetry/sstleadervartype, propagating/symmetry/sstmixedcomponents, propagating/symmetry/ssttiebreakrule, propagating/symmetry/usedynamicprop - separating/maxcoefratiofacrowprep, separating/filtercutpoolrel
- separating/gomory/genbothgomscg, separating/gomory/trystrongcg separating/gomorymi
- separating/interminor/∗
- separating/knapsackcover
- separating/minor/∗
- separating/mixing/∗
- separating/rlt/∗
- table/cons_nonlinear/active, table/cutsel/active, table/exprhdlr/active, table/nlhdlr/active, table/nlhdlr_bilinear/active, table/nlhdlr_quadratic/active, table/nlpi/active
- timing/nlpieval
- Parameters changed:
- default of constraints/nonlinear/maxproprounds changed from 1 to 10
- default of display/nexternbranchcands/active changed from 2 to 1 also for nonlinear instances
- default of display/nfrac/active changed from 2 to 1 also if discrete variables are present
- default of heuristics/dualval/priority changed from 0 to -10
- default of heuristics/lpface/priority changed from -1104000 to -1104010
- default of heuristics/mutation/priority changed from -1103000 to -1103010
- default of heuristics/nlpdiving/priority changed from -1003000 to -1003010
- default of heuristics/repair/priority changed from 0 to -20
- default of heuristics/simplerounding/priority from 0 to -30
- default of heuristics/subnlp/forbidfixings from 1 to 0
- default of heuristics/subnlp/itermin changed from 300 to 20
- default of SCIPheuristics_subnlp_priority heuristics/subnlp/priority changed from -2000000 to -2000010
- default of heuristics/trivialnegation/priority changed from 40000 to 39990
- default of heuristics/trustregion/priority changed from -1102000 to -1102010
- default of heuristics/trysol/priority changed from -3000000 to -3000010
- default of misc/usesymmetry changed from 3 to 7 and range changed from {0,...,3} to {0,...,7}
- default of presolving/qpkktref/maxrounds changed from -1 to 0
- default of propagating/obbt/onlynonconvexvars changed from 0 to 1
- default of propagating/symmetry/addsymresacks changed from 1 to 0
- type of propagating/symmetry/recomputerestart changed from boolean to int with range {0,...,2}
- default of separating/strongcg/maxbounddist changed from 1 to 0
- default of separating/strongcg/priority changed from -2000 to -100000
- replaced
separating/minortho
by cutselection/hybrid/minortho, replacedseparating/minorthoroot
by cutselection/hybrid/minorthoroot, replacedseparating/dircutoffdistfac
by cutselection/hybrid/dircutoffdistweight, replacedseparating/efficacyfac
by cutselection/hybrid/efficacyweight, replacedseparating/intsupportfac
by cutselection/hybrid/intsupportweight, replacedseparating/objparalfac
by cutselection/hybrid/objparalweight
- For more details, see [19] and the SCIP release notes.
- Symmetry handling:
- Added support for GAMS functions
sin
,cos
, andentropy
for GAMS/SCIP. - Since SCIP has dropped support for
min
andmax
, the GAMS/SCIP link reformulates GAMS functionsmin
andmax
by use ofabs
now. - Removed the feature that ran Ipopt from a returned solution that is recognized by SCIP to be not feasible in the original (non-presolved) nonlinear problem in order to obtain a feasible solution.
SHOT
- New libraries 1.1 (e225a002).
- Added parameter Model.Reformulation.Quadratics.EigenValueDecomposition.Tolerance.
XPRESS
- New libraries 39.01.03.
- Improved MIP performance:
- The Optimizer now uses an ML module to decide whether to use in-tree cutting. See autoCutting.
- Improved separation of Mixed Integer Rounding (MIR) cuts.
- Improved cut activation and deactivation strategies.
- Improved application of strong branching during the tree search.
- More information carried through a MIP restart.
- The 'R' local search heuristic will now be called more frequently in the early phase of a MIP solve.
- Improved crossover performance after a Barrier solve through automatic objective perturbation. See barObjPerturb.
- Improved Barrier performance for large problems on CPUs that support AVX2 (requires setting cpuPlatform to -2).
- New options:
- autoCutting: Automatically decide whether to generate cutting planes at local nodes in the tree.
- barObjPerturb: Defines how the barrier perturbs the objective.
- ioTimeout: Maximum number of seconds to wait for an I/O operation before it is cancelled.
- maxStallTime: Maximum time in seconds that the Optimizer will continue to search for improving solution after finding a new incumbent.
- preCliqueStrategy: Determines how much effort to spend on clique covers in presolve.
- siftPresolveOps: Determines the presolve operations for solving the subproblems during the sifting algorithm.
- Changed option default of xslp_mipDefaultAlgorithm: 1.
- Improved MIP performance:
- Added option fixoptfile: name of option file which is read just before solving the fixed problem.
- Changed default value of option mipAddCutoff and mipRelCutoff to 0.
- Fixed unnecessary solve of fixed MIP (see mipCleanup) when solving a linear program as MIP.
Tools
BIB2GMS
- As announced, dropped the tool
bib2gms
.
CSV2GDX
- Check for certain byte order marks (BOMs) in input files. Files with UTF8 BOM can be processed now, other BOMs generate an explicit error.
GAMS Studio
- New version 1.9.4.
- Added Project Options editor.
- Added possibility to create an empty project.
- Adjusted loading from a model library to add files to active project working directory if "Open in existing project" is checked.
- Added selection of user instances on GAMS Engine SaaS.
- Added selection of namespaces on GAMS Engine Server.
- Stability improvements, bug fixes, and minor enhancements, e.g.:
- Expanded MIRO installation location on macOS if AppBundle has been selected.
- Adjusted check if the MIRO data contract is available before the MIRO app is deployed.
- Changed mouse wheel behavior in tab bars:
Mouse Wheel Up/Down
: moves active tabCtrl + Mouse Wheel Up/Down
: changes active tab
- Added touch pad support for tab bars.
- Added highlight in
LST
file for current section header ofLXI
viewer. - Changed behavior of search in selection: the search selection is now only set once until the user resets it.
- Changed "Clear" button to remove search selection on first click when present.
- Fixed non-overridden recurrence of immediate options on command line parameters.
- Fixed jump behavior of search when using "This File" and navigating different files.
- Fixed
Find Next
broken for results across multiple files. - Fixed crash on showing "Project Options" for a project without a runnable
gms
file. - Fixed search not updating cache when document has changed.
- Fixed
Clear Selection
button not working as intended, when search scope was set to anything but "Selection". - Fixed random crash in
Search and Replace
dialog. - Fixed that checks for file type did not ignore casing (
gms
,Gms
,GMS
are all valid). - Fixed that the default file filter in search dialog expected files to include a '.' character on non-windows platforms.
- Fixed file filter in search dialog not being ignored for scopes "This File" and "Selection".
- Fixed search jump behavior when current file is excluded by file filter.
- Fixed completer and syntax help activation for user defined GAMS source files.
GDXDIFF
- Reduce size of output GDX file in case of input files without differences.
- Added new option ignoreOrder.
GDXMRW
- We mark GDXMRW as deprecated and may remove it in a future release. Please use GAMS Transfer Matlab instead. If you encounter issues with the transition to GAMS Transfer Matlab or if you have any feature requests for GAMS Transfer Matlab, do not hesitate to contact us through support.
HEXDUMP
- As announced, dropped the tool
hexdump
.
APIs
C++ high-level API
- Removed conversion of mapped network drives to UNC paths.
- Fixed addition of GAMS system directory to
PATH
on Windows.
GAMS Transfer Matlab
- New read-only
ConstContainer
(high reading performance). - Container now supports to read from a
ConstContainer
in addition to a GDX file. - New argument
types
in Container::listVariables and Container::listEquations to filter by variable or equation type, respectively. - Container::listSets does not include aliases in the returned list anymore. However, it is still possible to include aliases in Container::describeSets.
- New argument
records
in Container::read to toggle reading records in addition to symbol meta data.
GAMS Transfer Python
- GAMS Transfer now works with Embedded Python Code.
- New read-only
Container
type calledConstContainer
(high reading performance). - New argument
types
for methodslistVariables()
andlistEquations()
to filter by variable or equation type, respectively. - The method
listSets()
does not include aliases in the returned list anymore. - The
Container.read()
argumentvalues
has been renamed torecords
. - Fixed bug in
SpecialValues.isNegInf()
that did not properly detect scalar-inf
. - Fixed error handling when invalid records are set directly with
.records
.
GDX
- Internal adjustment to detection of special values when writing to GDX. The updated GDX behavior will allow better differentiation between distinct double-precision values that the user wants mapped to distinct special values. For example, -0.0 is no longer confused with +0.0, and different IEEE NaN values can map to different GAMS special values.
GMO
- Added routines
gmoGetRowQNZOne64
,gmoMaxQNZ64
, andgmoObjQMatNZ64
to get element counts as 64-bit integer. - Adjust routines
gmoGetRowQNZOne
,gmoMaxQNZ
, andgmoObjQMatNZ
to return -1 if the element count is too large for a 32-bit integer. - Added routines
gmoLNZEx
andgmoLNZEx64
to get the exact count of linear nonzeros in the Jacobian matrix, and adjusted the description ofgmoLNZ
andgmoLNZ64
to make clear that these are legacy routines returning an overestimate of this count, especially when gmoUseQ is true. - Fix gradient intervals for functions involving power(x,i) for i >= 4 and even.
High-level APIs
- The
GAMSDatabase
GDX export method now writes regular instead of just relaxed domain information if available.
PAL
- Added function
palIsAlpha
.palIsAlfa
has been deprecated.
Python
- Added support for Python 3.10.
- We plan to drop support for Python 3.6 in a future GAMS release.
Model Libraries
GAMS Data Library
New model:
GAMS Test Library
New models:
- dumpopt2.gms : Test dumpOpt with dumpOptGDX
- encoding01.gms : Test processing of source files with BOM
Solver/Platform availability matrix
x86 64bit MS Windows | x86 64bit Linux | x86 64bit macOS | |
---|---|---|---|
ALPHAECP 2.11 | ✔ | ✔ | ✔ |
ANTIGONE 1.1 | ✔ | ✔ | ✔ |
BARON | ✔ | ✔ | ✔ |
BONMIN 1.8 | ✔ | ✔ | ✔ |
CBC 2.10 | ✔ | ✔ | ✔ |
CONOPT 3 | ✔ | ✔ | ✔ |
CONOPT 4 | ✔ | ✔ | ✔ |
COPT 3.0 | ✔ | ✔ | ✔ |
CPLEX 20.1 | ✔ | ✔ | ✔ |
DECIS | ✔ | ✔ | ✔ |
DICOPT 2 | ✔ | ✔ | ✔ |
GLOMIQO 2.3 | ✔ | ✔ | ✔ |
GUROBI 9.5 | ✔ | ✔ | ✔ |
GUSS | ✔ | ✔ | ✔ |
IPOPT 3.14 | ✔ | ✔ | ✔ |
KESTREL | ✔ | ✔ | ✔ |
KNITRO 13.0 | ✔ | ✔ | ✔ |
LGO | ✔ | ✔ | ✔ |
LINDO 13.0 | ✔ | ✔ | ✔ |
LINDOGLOBAL 13.0 | ✔ | ✔ | ✔ |
MILES | ✔ | ✔ | ✔ |
MINOS 5.6 | ✔ | ✔ | ✔ |
MOSEK 9 | ✔ | ✔ | ✔ |
MSNLP | ✔ | ✔ | ✔ |
NLPEC | ✔ | ✔ | ✔ |
OCTERACT 4 | ✔ | ✔ | |
ODHCPLEX 6 | ✔ | ✔ | |
PATH | ✔ | ✔ | ✔ |
QUADMINOS 5.6 | ✔ | ✔ | ✔ |
SBB | ✔ | ✔ | ✔ |
SCIP 8.0 | ✔ | ✔ | ✔ |
SHOT 1.1 | ✔ | ✔ | ✔ |
SNOPT 7.7 | ✔ | ✔ | ✔ |
SOPLEX 6.0 | ✔ | ✔ | ✔ |
XA | ✔ | ✔ | |
XPRESS 39.01 | ✔ | ✔ | ✔ |
38.2.0 Minor release (February 17, 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 Gwendal Nivanen.
GAMS System
GAMS
- Fixed an incorrect evaluation of intrinsic functions (and their derivatives) having a variable number of arguments (e.g.
edist
orpoly
). This error did not occur in all cases: it depended on a missing or incorrect initialization in the calling environment. - Fixed a problem in the extrinsic function declaration which required
<FuncName>
to be case sensitive.
Solvers
BARON
- New libraries 22.2.3.
CONOPT
- New libraries 4.26.
- Removed option "Flg_Crash_Basis".
- Changed default of option Lim_Start_Degen from 10 to 100.
CONVERT
COPT
- Added option readparams to instruct COPT to read an additional parameters file.
CPLEX
- Fix solution pool export: Previously the solution pool was only exported if CPLEX terminated successfully with a solution. Now, the solution pool GDX is exported independent of the CPLEX termination status, but may contain no solution. solnpoolpoprepeat and solnpoolpopdel still don't have any effect if CPLEX terminated unsuccessfully.
GAMSCHK
- Add a missing initialization for the case where no subsolver is called. Without this initialization, incorrect output would occur.
Ipopt
- New libraries 3.14.5.
- Fixed that marginals were always zero if Ipopt stopped due to reaching a timelimit.
XPRESS
- New libraries 39.01.04.
APIs
High-level APIs
- Fixed a problem with
GAMSModelInstance.Instantiate
complaining about a missing dictionary file. This happened when a (default) solver for the model type of the instance is active which does not use a dictionary.
GAMS Transfer Python
- Added new property
shape
toParameter
,Variable
, andEquation
to report the corresponding matrix shape iftoDense
ortoSparseCoo
are called. - Fixed bug with array generation (1D symbols):
toDense
will now generate a(n,)
array instead(1,n)
; harmonized this behavior withtoSparseCoo
. - Fixed behavior: when
toDense
is called on a scalar symbol an array of shape()
will be returned instead of afloat
. - Fixed behavior: when
toSparseCoo
is called on a scalar symbol a sparsecoo_matrix
of shape(1,1)
will be returned instead of afloat
. - Better handling of numeric domain information within
setRecords
methods: numeric entries are now converted tostr
and generate categories from thestr
equivalents.
GMO
- The default for the property
gmoHessInclQRows
was accidentally changed to false with GAMS 35.1.0. With this release, it has been changed back to its original setting oftrue
. That is, also ifuseQ
is set, the Hessian will include information on quadratic equations by default again.
38.2.1 Maintenance release (February 19, 2022)
Solvers
CONOPT
- Fixed warning about unknown option name "FLG_CRASH_BASIS" (introduced with GAMS 38.2.0).
Convert
Octeract
- Avoid that an ObjEst of ±1.797693134E308 is reported as 1797693134 in GAMS tracefile.
38.3.0 Minor release (April 05, 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 Daniel Dias, Antti Lehtila, Scott MacDonald, Evangelos Panos, Richard Waltz and Eric Williams.
GAMS System
GAMS
- Fixed wrong numbers about infeasibilities (e.g., in the report summary) when bounds with value
EPS
are involved. - Fixed potential unwanted domain violation error when implicit set definition is used while $onMulti is active to allow a redefinition of symbol data.
- Fixed potential error when loading data filtered from embedded code.
Solvers
BARON
- New libraries 22.3.21.
CONVERT
- Fixed export of variable attribute stage for discrete variables when using option DumpGDX.
- Fixed that coefficients in
QCMATRIX
section were wrong. They had only half its value. - Fixed missing asterisk for bilinear terms in CplexLP format.
COPT
- Fixed that indicators from solver options file were ignored.
CPLEX
- Fixed bug with registering an advanced basis.
- Fixed CPLEX solution status
CPX_STAT_NUM_BEST
. This status is mapped to GAMS model statusfeasible
. - Fixed interactive mode (when no trigger file is set).
GUROBI
- New libraries 9.5.1.
IPOPT
- Fixed that names for vector entries corresponding to inequality equations (as shown with print_level ≥ 8) could be incorrect due to a wrong mapping of indices.
KNITRO
- Fixed unnecessary calls to Knitro evaluation callbacks for linear or quadratic constraints.
Mosek
- New libraries 9.3.18.
Octeract
- New libraries 4.2.0.
- Improved performance, in particular for problems with quadratic structures.
- CPLEX is now automatically chosen as subsolver, if licensed.
SCIP Optimization Suite
- New libraries SCIP 8.0 (189beeaf30).
- Clique lifting for setpartitioning/packing/covering constraints is now only disabled if it has been applied.
- New libraries PaPILO 2.0 (g166dea4).
XPRESS
- New libraries 39.01.05.
- Changed option default of xslp_iterLimit: -1 (auto).
Tools
MODEL2TEX
- Fixed a crash that occurred when
SameAs
was used in equations.
MPS2GMS
- Fixed that variables in SOS of type 2 were written as SOS of type 1 to GDX file.
- Fixed that upper bounds of 100 for (semi)integer variables were lost.
- Fixed that
N
-rows that did not specify objective functions were not omitted in parameterp
(equation right-hand sides). - Fixed that nonzero coefficients with absolute value at most 1e-20 were lost.
- Fixed that
C
-rows had arbitrary right-hand side value in GDX file (though this value was not accessed from the GAMS model). - Fixed that an objective constant (nonzero
RHS
for objective row in MPS file) was lost. - Fixed that off-diagonal elements in
QUADOBJ
andQSECTION
sections were not handled correctly.
GAMS Studio
- New version 1.9.6 with various bug fixes, stability improvements, and minor enhancements, e.g.:
- Added
Page-up/-down
keys to extend block edit selection. - Added separator line on Windows in horizontal headers of tables and tree views.
- Remote jobs now can be kept active on Studio exit.
- Fixed crash in GDX Viewer related to reading a file containing negative UELs.
- Fixed empty log file when using
logOption=2
. - Fixed search not properly counting search results across multiple files.
- Fixed "Replace All" preview wrongfully including read-only files.
- Fixed "Search" not always jumping to a result outside current file.
- Fixed NEOS freezing when the GMS file is not located in the working directory.
- Added
APIs
GAMS Transfer Python
- Fixed memory leak associated with
gams2numpy
.