Table of Contents
- 24.2.1 Major release (December 09, 2013)
- Acknowledgments
- Platforms
- GAMS System
- Function libraries
- GAMS
- Solvers
- ANTIGONE, BARON, Couenne, SCIP
- ANTIGONE
- BARON
- Bonmin(H), CBC, Couenne, Ipopt(H), OS, OsiCplex, OsiGurobi, OsiMosek, OsiXpress, SoPlex
- CPLEX
- CONOPT
- Convert
- ConvertD
- EMPSP
- Gurobi
- Ipopt/IpoptH, Bonmin/BonminH, Couenne
- KNITRO
- Lindo/LindoGlobal
- Mosek
- OsiCplex
- OsiCplex, OsiGurobi
- OsiMosek
- OS
- SoPlex
- SCIP
- SULUM
- XPRESS
- Tools & APIs
- Model Libraries
- Solver/Platform Availability Matrix
- 24.2.2 Maintenance release (March 04, 2014)
- 24.2.3 Maintenance release (May 22, 2014)
24.2.1 Major release (December 09, 2013)
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, Fernando Consigli, Eligius Hendrix, Erwin Kalvelagen, Alexander Lieder, Phani Murukutla, Yaser Tohidi, and Alexander Weber.
Platforms
- Sparc Solaris builds are now built on a SunOS 5.10 (Solaris 10) machine.
- We plan to drop support for Linux 32bit and Sparc Solaris 32bit with the next major release (24.3). As a consequence, we plan to also drop OQNLP on Linux 64bit.
GAMS System
Installer
- The dialog for choosing a license file to be copied starts from the user's desktop now
- Fixed a bug, when trying to copy license file to itself
Function libraries
- A new extrinsic function library cppcclib was added to the system. This library is coded in C++ and implements PDFs and CDFs for the univariate and bivariate normal distributions. The use of C++ is crucial here, as an expression class together with operator overloading is used to do all the relevant computation. In this way, we can automatically compute exact derivatives (first and second) for the function values being computed. Further information on extrinsic function libraries can be found in the GAMS User's Guide, Appendix J. The testlib models
cpplib01
andcpplib02
are also relevant.
GAMS
- Fix bug that caused a negative value for model attribute
etSolver
EXECUTE_LOADDC
: Enhancedexecute_load
with domain checking. Any domain violation will be reported and flagged as execution error. In contrast,execute_load
ignores all domain violations and loads only data that meets the domain restrictions.EXECUTE_UNLOADDI
: This new keyword does not only write the defined symbols to GDX but also the domain sets.- Loading one dimensional sets from multi-dimensional parameters/sets via
load i<gdxsym
. Details can be found in the gdxutils document in the tools section of the documentation tree. - New (command line) option
gdxUELs
[squeezed/full]: IfgdxUELs
is set tosqueezed
(default) only the UELs that are required by the exported symbols are registered to GDX (compared to all UELs withgdxUELs=full
, which behaves like the former default). - New (command line) option
DumpParmsLogPrefix
(synonymDPLP
) prefixes log lines that are triggered byDumpParms=2
with a specific string for easy filtering of these lines. - New (command line) option
intVarUp
as a replacement for the command line optionpf4
(which is still usable as a synonym forintVarUp
) - The option
sys10
, which changes rpower to ipower when the exponent is constant and within e-12 of an integer, is also available as command line option now - New option
DmpOpt
: This writes all options, which can be set using the option statement, and their values to the listing file - GAMS checks now more frequently if a GAMS program exceeds the preset elapsed time limit
EtLim
(default 1e20 seconds). In the past this was done only before solve and execute statements. Now, GAMS checks this limit at the same time GAMS checks for a pending Ctrl-C event. - Renamed model status
7 Intermediate Nonoptimal
to7 Feasible Solution
. The string constant%modelStat.intermediateNonOptimal%
is still recognized by the GAMS compiler, but it is advised to switch to%modelStat.feasibleSolution%
. The model status test is e.g. printed in the solve summary in the listing file and can be written to put files with the model attributemymodel.tModStat
. - New model attributes:
myModel.marginals
: Indicates the presence (1) or absence (0) of a dual solution from the solver after the solve statement. In some circumstances, a solver does not provide a dual solution (.m), in such a case GAMS will not print the marginal column in the solution listing and set the marginal field in variables and equations to NA.myModel.defPoint
: If this attribute determines what point is passed to the solver as an input point. By default, the user supplied point (set viax.l(j)=...
ande.m(i)=...
) is passed to the solver. In some circumstances (mostly during debugging) it can be useful to pass a standard default input point, i.e. level set to 0 or lower bound in case 0 is not within the bounds and marginal set to 0.myModel.defPoint
controls this behavior: Values other than 1 or 2 result in default behavior, value 1 results in passing default levels and marginals, value 2 results in passing the levels set by the user and defaults (0) for the marginals.
- Added
%system.dirsep%
andsystem.dirsep
(for use in put files) to get access to the OS specific file/directory separator character. On Windows platforms this is\
and on Unix and Mac this is/
. This helps writing platform independent GAMS models. - Added option 6 to
[file].TF
(text fill) fills.te()
with quoted element names separated by spaces - Allow the
Alias
statement on multidimensional sets as well:Set i / i0*i9 / j / j0*j9 / ij(i,j) / #i.#j /; Alias (ij, ji);
Solvers
ANTIGONE, BARON, Couenne, SCIP
- Now return model status 7 (feasible but not necessarily optimal) instead of 2 (locally optimal) when finding feasible solution for a model without discrete variables and not having proven global optimality (local optimality cannot be guaranteed).
ANTIGONE
- Fixed bug where optimality gaps were reported for convex problems.
BARON
- New libraries 12.7.3
- Performance improvements in local search, branching, integer presolve, and relaxations for problems with bilinear and/or integer variables
- Added facilities for complementarity problems
- Absolute and relative constraint feasibility and integrality feasibility tolerances
- Added flexible termination criteria based on progress
- Improved treatment of unbounded/infeasible problems
- Selection of specific NLP solvers to be included in BARON's dynamic NLP solver selection strategy
- Automatic setting of many options based on problem characteristics and learning algorithms. As a result, many options are now deprecated
- New options:
AbsConFeasTol
: Absolute constraint feasibility toleranceAbsIntFeasTol
: Absolute integer feasibility toleranceAllowExternal
: Indicator for use of External NLP solver with automatic NLP solver selectionAllowIpopt
: Indicator for use of IPOPT with automatic NLP solver selectionAllowMinos
: Indicator for use of MINOS with automatic NLP solver selectionAllowSnopt
: Indicator for use of SNOPT with automatic NLP solver selectionDeltaA
: Absolute improvement for insufficient progress terminationDeltaR
: Relative improvement for insufficient progress terminationDeltaT
: Time interval for insufficient progress terminationDeltaTerm
: Indicates whether insufficient progress termination is on or offRelConFeasTol
: Relative constraint feasibility toleranceRelIntFeasTol
: Relative integer feasibility tolerance
- Options deprecated:
modbrpt
,convexratio
,maxredpass
,maxnodepass
,redreltol
,redabstol, postreltol
,postabstol
,hreltol
,habstol
,maxheur
,pbin
,twoways, pstart
,pend
,pfreq
,profra
,pxdo
,maxpretime
,basfra
,baskp
,prelpdo
,numbranch
andnumstore
.
Bonmin(H), CBC, Couenne, Ipopt(H), OS, OsiCplex, OsiGurobi, OsiMosek, OsiXpress, SoPlex
- The solver manual coin.pdf has been split into one document for each solver(group) (bonmin.pdf, cbc.pdf, couenne.pdf, ipopt.pdf, os.pdf, osi.pdf).
CPLEX
- New libraries 12.6.0.
- Cplex 12.6 solves non-convex (MI)QP problems to global optimality when parameter
SOLUTIONTARGET
is set to 3. - Cplex 12.6 also offers the capability to solve a single MIP instance distributed over a number of machines. The feature, knows as Distributed MIP, is available with GAMS/CplexD only and requires a special license and additional software.
CONOPT
- New libraries 3.15M.
- Fixed a problem with the definition and execution of 'implied free' post-triangular variables. The tolerance was too loose compared with other tolerances and a projection was missing. That could result in functions or derivatives being called with variables slightly outside their bounds (by up to 4.e-10).
Convert
- Fixed writing of mod operator in AMPL syntax.
ConvertD
- The converter to OSiL format can now handle SOS1 and SOS2 variables.
EMPSP
For the keyword cvarup
(which is the same as cvar
), the meaning of the defined scalar
was changed:
cvarup [rv var] scalar
Scalar
represents now the confidence level for the Conditional Value at Risk. It holds NewScalar = 1 - OldScalar
.
Gurobi
- New libraries 5.6
- New options:
PreSOS1BigM
andPreSOS2BigM
: These new parameters provide user control of presolve SOS linearizationDisconnected
: MIP models are sometimes made up of multiple, independent sub-models. This parameter controls the strategy used to exploit this structure
- Distributed MIP algorithms (in connection with Gurobi's Compute Server):
- distributed tuning (option
TuneJobs
) - distributed concurrent MIP (option
ConcurrentMIPJobs
) - See also option
ServerPool
andServerPassword
- distributed tuning (option
Ipopt/IpoptH, Bonmin/BonminH, Couenne
- On Linux and Windows, MKL PARDISO has been enabled as additional linear solver for Ipopt (experimental). To try it out, set the option
linear_solver pardiso
. - For users with an IpoptH license, OpenMP support has been enabled for the HSL codes MA86 and MA97.
The number of threads to use for HSL MA86, HSL MA97, and PARDISO is controlled by the GAMS threads option.
KNITRO
- New libraries 9.0.0.
- MPEC models are now supported.
Lindo/LindoGlobal
- New libraries 8.0.483.
Mosek
- New libraries 7.0.0.96.
- Mosek provides two algorithms for solving problems with discrete variables: 1) mixed-integer optimizer (
MSK_OPTIMIZER_MIXED_INT
) and 2) mixed-integer optimizer for conic and linear problems (MSK_OPTIMIZER_MIXED_INT_CONIC
). Algorithm 1 has been available since the introduction of MOSEK to GAMS, but requires an additional license code. Algorithm 2 has been introduced with version 7 of MOSEK (GAMS 24.1). Benchmarks have shown that both algorithms perform very similar. While we will support algorithm 1 for existing GAMS/MOSEK customers for some time, it will not be possible to purchase this option for new GAMS/MOSEK users. They will have to use algorithm 2. - Fixed issues with solution obtained from fixed solve when using Mosek's conic MIP solver.
- An experimental interface to Mosek's semidefinite programming (SDP) solver has been added, see the GAMS/Mosek solver documentation for details. Note, that the interface is likely to change in the future.
OsiCplex
- Fixed report of CPLEX Error 1217 at end of MIP solve.
OsiCplex, OsiGurobi
- Fixed setting of LP algorithm via solver specific options file.
OsiMosek
- The MIP solver choice has been changed to Mosek's conic mixed-integer programming solver.
OS
- New libraries 2.8
SoPlex
- New libraries 1.7.2
SCIP
- New libraries 3.0 #6078424
- SCIP setting files can be setup with the options editor of the GAMS IDE now.
SULUM
- New libraries 2.0.432.
- Branching priorities are now supported.
XPRESS
- New libraries 25.01.05.
- Fixed best bound field of start record in MIP trace file.
Tools & APIs
Tools
- New GDX tool MCFilter. This tool removes duplicate and dominated points in a multi-criteria solution set.
Expert Level APIs
VBA
- Use camel case instead of all lower case for public functions
VB.NET
- Use camel case instead of all lower case for public functions
- Use dynamic loading of DLLs
Object Oriented APIs
- Do not throw an Exception if an Alias is read by GetSet
- Fix wrong equation subtype definition when reading equation from GAMSDatabase
- Throw an GAMSException if UEL exceeds the maximum size of 63 characters
- Throw an GAMSException if explanatory text exceeds the maximum size of 255 characters
.NET
- Add MONO implementation of the object oriented GAMS .Net API for Mac OS X and Linux.
- New version of function GAMSWorkspace.AddOptions creating an instance of GAMSOptions initialized by an existing option file
- If we pass a nullptr to this Function from C++, we need to cast this to GAMSObject^ now because of the overloading
- New properties: GAMSWorkspace.APIVersion, GAMSWorkspace.APIMajorRelNumber, GAMSWorkspace.APIMinorRelNumber and GAMSWorkspace.APIGOLDRelNumber
- New property GAMSWorkspace.MyEPS: Reset value to be stored in and read from GAMSDatabase for Epsilon, default is double.Epsilon
- New function GAMSOptions.Export: Write GAMSOptions into a parameter file
- Switching type of property GAMSOptions.NoNewVarEqu from Integer to Enum (ENoNewVarEqu)
- Renaming of GAMSEnum.ModelStat.NonOptimalIntermed to GAMSEnum.ModelStat.Feasible
- Renaming of GAMSOptions.PoolFree4 to GAMSOptions.IntVarUp
- New C# Example GAMSRemoteObject
Java
- New
- tutorial: (
GAMS_java_Tutorial.pdf
) under<Path/To/GAMS>/docs/API
. From the GAMSIDE this document can be accessed at Help -> Docs -> API. - method in
GAMSOptions
:export
, to write GAMSOptions into a parameter file - methods in
GAMSWorkspace
:addOptions
to create a GAMSOptions object from either another object or an option file - methods in
GAMSWorkspace
:getAPIVersion
,getAPIMajorReleaseNumber
,getAPIMinorReleaseNumber
, andgetAPIGoldReleaseNumber
, to retrieve API version number - method in
GAMSWorkspace
:setMyEPS
to resetGAMSGlobals.SpecialValues.EPS
, the value to be stored in and read from GAMSDatabase for Epsilon.
- tutorial: (
- Changed
- default value of
GAMSGlobals.SpecialValues
:NAN
,PLUS_INF
,MINUS_INF
, andEPS
- deprecated
GAMSGlobals.ModelStat.NONOPTIMAL_INTERMED
, replaced byGAMSGlobals.ModelStat.FEASIBLE
- deprecated
GAMSOptions.PoolFree4
, replaced byGAMSOptions.IntVarUp
- deprecated the type of
GAMSOptions.NoNewVarEqu
, replaced by enumGAMSOptions.ENoNewVarEq
- default value of
- Fixed
- a bug when running a job with an input directory IDir added into GAMSOptions object.
Python
- Add tutorial (
GAMS_python_Tutorial.pdf
) to<Path/To/GAMS>/docs/API
. From the GAMSIDE this document can be accessed at Help -> Docs -> API. - New parameter opt_file in function GamsWorkspace.add_options allows to create an instance of GamsOptions that is initialized by an existing option file.
- New function GamsOptions.export: Write GamsOptions into a parameter file
- New properties: GamsWorkspace.api_version, GamsWorkspace.api_major_rel_number, GamsWorkspace.api_minor_rel_number and GamsWorkspace.api_gold_rel_number
- New property GamsWorkspace.my_eps: Reset value to be stored in and read from GamsDatabase for Epsilon.
- New class NoNewVarEqu providing static fields to set option nonewvarequ
- Renaming of GamsOptions.PoolFree4 to GamsOptions.IntVarUp and property poolfree4 to intvarup
- Renaming of ModelStat.NonOptimalIntermed to ModelStat.Feasible
- The following functions throw an exception, when a wrong data type is passed for the keys/slice parameter: delete_record, find_record, add_record, merge_record, first_record, last_record. Valid data types are str, list, tuple and their subclasses
- Fixed a bug in _GamsSymbol.add_record() that occurred when using empty strings as keys
- Fixed a bug in GamsModelInstance.solve() that affected the logging behavior
Model Libraries
GAMS Data Library
GDXMRWShowJac1 (86)
: Visualize model Jacobian in Matlab- SpawnGAMSAccess (87): SpawnGAMS: Spawn GAMS from Access
- triobal (88): Tommasino-Rao Input Output Balance Software
GAMS EMP Library
- vidualvar (96): VI with dualvar specified for VI constraint
- vi_equil (97): Identical VI models with and without containing equilibrium
- vi_mcp (98): Identical models specified using MCP and VI syntax
- equil_bilevel (99): Equilibrium model with and without containing bilevel
GAMS Model Library
- gastrans (217): Added a simple straightforward NLP formulation of the problem, which is now solved by default.
- knp (321): Removed redundant model equations, now regarding best bounds reported by solvers, improved readability.
- tricp (395): Triangular Graph Circle Packing
- allbases (396): Enumerate All Basic Solutions of an LP
GAMS Test Library
- load7 (613): Tests execute_loaddc
- unload10 (614): Test unload options new with GAMS 24.2
- mpec04 (615): MPEC model testing free rows
- mpec05 (616): Simple MPEC unique solution lower bounded matches
- mpec06 (617): Simple MPEC unique solution upper bounded matches
- mpec07 (618): Simple MPEC unique solution doubly-bounded matches
- mpec08 (619): Simple MPEC unique solution LB matches integer var
- mpsge13 (620): MPSGE test - model returns invalid income level
- card02 (621): Tests miniparser card() function
- uldidx01 (622): UnloadIdx - basic operation
- uldidx02 (623): UnloadIdx - checking execution restrictions
- uldidx03 (624): UnloadIdx - checking compilation restrictions
- ldidx01 (625): $loadIdx - checking basic operation
- ldidx02 (626): $loadIdx - checking restrictions
- ldidx03 (627): $loadIdx - checking restrictions
- ldidx04 (628): $loadIdx - checking restrictions
- ldidx05 (629): $loadIdx - checking restrictions
- sdp01 (630): Test of correct solving a simple conic program
- load8 (631): Domain projection load tests
- load9 (632): Domain projection load tests
- lindgl03 (633): Check that Lindo(Global) Option NLP_QUADCHK works
- dbg01 (634): Test debugging option on Windows
- cpplib01 (635): Test extrinsic functions in cppcclib
- cpplib02 (636): Test extrinsic functions in cppcclib
- alias01 (637): Check handling of multidimensional aliases
- load10 (638): Domain projection load tests
Solver/Platform Availability Matrix
Solver/Platform availability - 24.2 | |||||||||
---|---|---|---|---|---|---|---|---|---|
x86 MS Windows |
x86_64 MS Windows |
x86 Linux |
x86_64 Linux |
Sun Sparc SOLARIS |
Sun Sparc64 SOLARIS |
Sun Intel SOLARIS |
IBM Power AIX |
Mac x86_64 Darwin |
|
ALPHAECP | |||||||||
ANTIGONE 1.1 | |||||||||
BARON 12.7 | |||||||||
BDMLP | |||||||||
BONMIN 1.7 | |||||||||
CBC 2.8 | |||||||||
COUENNE 0.4 | |||||||||
CONOPT 3 | |||||||||
CPLEX 12.6 | |||||||||
DECIS | 32bit | ||||||||
DICOPT | |||||||||
GLOMIQO 2.3 | |||||||||
GUROBI 5.6 | 5.0 | ||||||||
IPOPT 3.11 | |||||||||
KNITRO 9.0 | 8.1 | 8.1 | |||||||
LINDO 8.0 | |||||||||
LINDOGLOBAL 8.0 | 6.0 | 6.0 | |||||||
LGO | |||||||||
MILES | |||||||||
MINOS | |||||||||
MOSEK 7 | |||||||||
MPSGE | |||||||||
MSNLP | 32bit | ||||||||
NLPEC | |||||||||
OQNLP | 32bit | 32bit | |||||||
PATH | |||||||||
SBB | |||||||||
SCIP 3.0 | |||||||||
SNOPT | |||||||||
SOPLEX 1.7 | |||||||||
SULUM 2.0 | |||||||||
XA | |||||||||
XPRESS 25.01 |
24.2.2 Maintenance release (March 04, 2014)
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 Michael Bond, Michael Ferris, Erwin Kalvelagen, Timo Lohmann, Kourosh Marjani Rasmussen, Javier Salmeron, Bassel Timani, Shigeru Tsubakitani, Tom Walker, and Jürgen Wolpert.
Platforms
- Including now the correct Fortran and C++ standard libraries in a Solaris 64bit Intel system.
GAMS System
- Fix a bug that could cause a crash when unloading an alias to the universe to GDX.
- Fix a bug when unloading to a GDX file failed.
- Accept a Mac license when using the GAMS Windows Distribution via Wine.
Solvers
BARON
- New libraries 12.7.7.
- Missing option
results
added. - Option
PrLevel
accepts only 0 or 1.
Bonmin
- New libraries.
CBC
- New libraries.
- Add solution report for LPs that have not been solved to optimality (with corresponding infeasibility, non-optimality, unboundedness markers).
CONOPT
- New library 3.15N.
Couenne
- New libraries.
Cplex
- Fix a bug that resulted in Cplex solving an LP as a MIP in case of solvelink=5.
Gurobi
- New libraries 5.6.2.
- This Gurobi version introduces an experimental no relaxation heuristic that attempts to find good quality feasible solutions to MIP models without first solving the root relaxation. This can be useful in situations where the root relaxation is extremely large or difficult.
GUSS/Scenario Solver
- Fix a bug with keyword 'opt' when retrieving model attributes from the scenario solves.
KNITRO
- New libraries 9.0.1.
Lindo/LindoGlobal
- We will drop LindoGlobal libraries for Sparc Solaris with the next major release (24.3).
- Fix potential problem using multiple threads on LP problem.
- New libraries 8.0.498.
Mosek
- New libraries 7.0.0.106.
SCIP
- New libraries 3.0 #70041f0.
XPRESS
- New libraries 25.01.07.
Tools & APIs
GDX Tools
- Fixed a problem with
gdxrank
that surfaced with the new defaultSqueezed
of optiongdxUELs
. - CSV formatted output of
gdxdump
no longer includes aVal
column for sets. - Tools like
gdxdump
,gdxdiff
andgdxrank
will process an input file without a file extension if that file exists. If the file does not exist, the file with the.gdx
file extension will be used.
Object Oriented APIs
- Fix error when exporting GAMSDatabase with Aliases.
- Fixed a bug regarding the subtype of equations and their default records, when the equation was added to a GamsDatabase from the APIs.
- Fix GAMSExitCodes.
- Make sure that GAMSModelInstance.Instantiate() does not solve the model, but only prepares everything required for the following Solve().
Java
- Changed
- null string is treated as an invalid key for all record operations of
GAMSSymbol
.
- null string is treated as an invalid key for all record operations of
- Fixed
- a bug when creating
GAMSDatabase
from source database. - a bug when initializing a variable type in
GAMSVariable
. - a bug in
GAMSSymbols
: methodsgetVarType()
andgetEquType()
. - a bug in
GAMSWorkspaceInfo
: methodgetSystemDirectory()
.
- a bug when creating
Python
- Fixed a bug in GamsSymbol.delete_record().
24.2.3 Maintenance release (May 22, 2014)
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 Michael Bond, Wolfgang Britz, Carla Caldeira, Markus Drouven, Guillaume Erbs, Michael Ferris, Inki Kim, Bruce McCarl, Nazmi Sener.
Platforms
- On AIX, GAMS executables could allocate at most 2 GB of memory. This limit has been increased to 200 GB.
GAMS System
- Fixed option
sys10
Solvers
CONOPT
- New libraries 3.15P.
CBC
- New libraries.
CPLEX, Gurobi and Xpress
- Fixed issues regarding missing libraries and wrong library dependencies on AIX.
DICOPT
- Fixed option setting
relaxed = 0
.
EMPSP
- Fixed a bug with chance constraints.
- Fixed a bug where a certain order of random variables could cause a crash.
Gurobi
- New libraries 5.6.3.
- The
writeprob
option now writes an additional mipstart file (.mst.gz
), if a MIP is written and themipstart
option has been set.
GUSS/Scenario Solver
- Previously, GUSS only solved scenarios that had some update data. Now, GUSS solves also an empty scenario, i.e., a scenario without any update data. It now depends on the update type which scenario is solved.
- Fixed a bug which caused a crash when the scenario dictionary set has more than 50 entries.
Ipopt
- New library.
- Fixed a bug that lead to convergence issues on some instances.
Lindo
- Fixed option
NSAMPLE_PER_STAGE
.
Mosek, OsiMosek
- New libraries 7.0.0.114.
- Fixed deadlock on Windows when using Mosek or OsiMosek with a user (i.e., non-GAMS) license.
Tools & APIs
- har2gdx implements -H option
- gdxxrw understands RC notation for cells when using option
UseRC
.
Object Oriented APIs
- Fixed memory leak in GAMSDatabase.
Java
- Fixed a bug in GAMSDatabase.getDatabaseDomainViolation.