Table of Contents
24.3.1 Major release (July 31, 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, Sebastian Bothor, Jared Erickson, Michael Ferris, Josef Kallrath, Bastian Niebel, Matt Preston, and Tom Rutherford.
Platforms
- The Linux 32bit and Solaris 32bit distributions have been dropped (as announced).
- Support for Windows XP may be dropped with some future GAMS version. As several of our solver vendors have already dropped support for Windows XP, some components of a GAMS system may cease to work under Windows XP in the future. If you notice that a 64bit GAMS system is not working on your Windows XP 64bit machine, please let us know.
GAMS System
GAMS
- Introduced new keyword
Singleton Set
: ASingleton Set
in GAMS is a specialSet
that has at most one element (zero elements are allowed as well).Singleton Sets
can be especially useful in assignment statements since they don't need to be controlled by a controlling index nor an indexed operator, e.g.:Set s / s1*s3 /; Singleton Set single(s) / s2 /; Parameter p(s); Scalar x; p(s) = ord(s); x = p(single);
NOTE: Assigning membership toSingleton Sets
is different than to usual sets. SinceSingleton Sets
can never have more than one element, any assignment to aSingleton Set
first clears or empties the set, so no explicit clear is necessary. This is illustrated in the following example:Set i Static Set / a, b, c / ii(i) Dynamic Set / b /; Singleton Set si(i) Dynamic Singleton Set / b /; ii('c') = yes; si('c') = yes; Display ii, si;
Here is the output from thedisplay
statement in the listing file:---- 8 SET ii Dynamic Set b, c ---- 8 SET si Dynamic Singleton Set c
More information can be found in the GAMS Users Guide.- The behavior of assignments to
Singleton Sets
can be influenced by the new optionstrictSingleton
[0/1]: This option affects the behavior of a membership assignment to aSingleton Set
. WithstrictSingleton = 0
GAMS does not complain about an assignment with more than one element on the right hand side but takes the first one. WithstrictSingleton = 1
(default), such an assignment raises an error. This option be set via an option statement and via a command line option. - Similarly, data statements for
Singleton Sets
can be influenced by the new dollar control options$onStrictSingleton
/$offStrictSingleton
: With$offStrictSingleton
GAMS does not complain about a data statement for aSingleton Set
that has more than one element but takes the first one. With$onStrictSingleton
(default), such an assignment raises an error.
- The behavior of assignments to
Introduced so-called obfuscated save files, which are save files where symbol and UEL names have been obfuscated. The new options
saveobfuscate
(so
) andxsaveobfuscate
(xso
) can be used to generate uncompressed and compressed, respectively, obfuscated save files. Additionally, a new optionrestartNamed
(rn
) has been added which can be used to bring back the original names when restarting from an obfuscated save file. The intended use is the following.- Compile (only) a GAMS model into a named and an obfuscated save file:
$call gams trnsport a=c s=0named saveobfuscate=0anon
- Move the obfuscated save file to a non-secure machine and execute it there:
$echo * Empty > empty.gms $call gams empty r=0anon s=1anon
- Bring the new (still obfuscated) save file with the results back to the safe machine and do a continued compilation with reporting and export. The continued compilation restarts from the obfuscated save file with all the results, etc., but gets a second save file with proper names through option
restartNamed
:$echo execute_unload 'supply', supply.m; > unload.gms $call gams unload r=1anon restartNamed=0named
In this execution, everything is taken from the obfuscated restart file, except for the symbol and UEL names and the listing file title and subtitle, which are taken from the file specified via
restartNamed
.- Compile (only) a GAMS model into a named and an obfuscated save file:
- Allow to load the universe of labels from a GDX file into a set at run-time:
execute_load 'someFile', someSet=*;
Note, that only labels known to the GAMS program will be loaded. - Fixed a bug that caused wrong results when evaluating
prod
(orsmin
/smax
) over an empty set insidesum
like in the following example:sets r / 1 / s / 1, 2 / rs(r,s) / 1.1 / subrs(r,s) / 1.2 /; scalar z1; z1 = sum(rs, prod(subrs(rs), 2)); display z1;
- Fixed a bug in calling error logging routine for extrinsic functions from within solvers.
Function libraries
- The extrinsic function library cppcclib has been expanded to include functions for the PDF and CDF of the trivariate normal distribution. Additionally, documentation for cppcclib has been added to Appendix J of the GAMS User's Guide and the relevant testlib models
cpplib00
thrucpplib05
have been added or updated.
Solvers
ANTIGONE, Bonmin, Cbc, Couenne, SCIP, Sulum
- Solvetrace files now include the GAMS input name (usually GAMS model name with
.gms
extension stripped) in the header line.
BARON
- New libraries 14.0.2
- Significant advances in the handling of integer programs. In addition to several classes of integer cutting planes, calls to MIP solvers and hybrid LP/MIP/NLP relaxations for MINLPs have been added.
- Complete rewrite of the interfaces to LP solvers.
- Improvements in probing routines.
- More robust checks for the validity of the solution of LP/NLP subsolvers.
- Introduced interfaces to COIN-OR/OSI and CBC 2.8.9.
- Increased numerical robustness for numerically challenging problems.
- New range reduction techniques.
- Systematic treatment of infeasible problems. With the
CompIIS
option, which by default is 0, the computation of an Irreducible Inconsistent Set (IIS) can be requested. Five different algorithms are available, with corresponding values ofCompIIS
equal to 1, ..., 5. Algorithm 1 is a fast heuristic, while algorithms 2 through 5 are more time consuming exact algorithms. If an IIS is found, it is reported in the GAMS listing file. BARON does not consider bounds on binary variables to be part of the IIS. For general integers, the optionIISint
can be be used to signal that general integers should be considered as potential members of the IIS, i.e, integrality constraints are questioned.
- Fixed handling of BARON termination status when activating
DeltaTerm
option.
BONMIN
- Dropped MIP capability (use CBC instead).
CONOPT
- New libraries 3.16B.
- The new option
Lsusdf
was added. If turned on (the default) CONOPT's preprocessor will look for definitional constraints which are constraints of the formx = f(y)
where the bounds onx
are wider than the range of the functionf
, given the bounds ony
. CONOPT will search for and select a maximal set of independent definitional constraints. The dependent variable in a definitional constraints will be selected for the initial basis and CONOPT will try to use the definition to initializex
. There are two other options associated with this procedure: IfLsuqdf
is enabled (default), then only unique definitional constraints are selected. If it is disabled, then optionLfusdf
specifies a limit (default 2) on the number of candidates a definitional constraint can have. - The option
Lsflsh
– flush the buffer, has now been implemented and is automatically turned on if there is a systems error. - The lower bound on option
Rtipvr
changed from 1.e-3 to 1.e-10.
- The new option
Convert
- The AMPL writer supports special ordered sets, semicontinuous variables, and semiinteger variables now.
- Row names in
.lp
and.mps
files now start with 'e' instead of 'c', so they match the names written by thedict
option.
CPLEX
- New libraries 12.6.0.1.
CPLEX, SCIP, XPRESS
- Fixed handling of indicator constraints when specified with explicit labels.
DE
- New option
VaRBigM
to control the Big M for a Value at Risk reformulation.
EMPSP
- New keywords
VaRUp
(=VaR
) andVaRLo
: These keywords can be used to optimize the Value at Risk for a certain confidence level. The syntax is similar to the one fromcVaRUp
(=cVaR
) andcVaRLo
:VaR [rv var] scalar
More information can be found here. - Changed the order of the parameters for the triangular distribution from
randvar <name> triangular <low> <high> <mid>
torandvar <name> triangular <low> <mid> <high>
Examiner2
- Fixed a bug in processing special ordered sets.
GUSS/Scenario Solver
- GUSS/Scenario solver can now be combined with the GAMS Grid Facility (see example
GUSSGRID
in the GAMS Model Library). - New option
RestartType
to determines restart point for the scenarios:- 0: Restart from last solution (default)
- 1: Restart from solution of base case
- 2: Restart from input point
- New option
SolveEmpty
(default 0) to limit the number of empty scenarios (no scenario data) that are being solved. When the limit is reached, further empty scenarios will be skipped. Skipped scenarios will be reported to the log and listing file.
Ipopt
- New libraries.
Knitro
- As Ziena Optimization has dropped support for Knitro on Solaris (x86) a while ago, we plan to drop GAMS/Knitro on Solaris with the next release.
Lindo/LindoGlobal
- New libraries 8.0.550.
- LindoGlobal is no longer available for Sparc Solaris (as announced).
Mosek
- New libraries 7.0.0.121 (Linux, Mac OS X) and 7.0.0.123 (Windows).
OQNLP
- OQNLP is no longer available for Linux (as announced).
OS
- GAMS to OSiL conversion now creates more compact instances, especially for quadratic equations and long sums or products in general nonlinear expressions.
SCIP
- New libraries 3.1 #695c979.
- Added new primal heuristics "random rounding", "proximity", and "dual value", new branching rule "cloud branching", and new node selectors "breadthfirst" and "uct".
- Added support for strong branching with domain propagation in full strong and reliability pseudo cost branching.
- Improved numerical stability (now taking the rank of cuts into account; more checks on LP solution; disabled scaling in feasibility check of nonlinear constraints).
- Many improvements in presolving.
- Strong branching LP solutions are now checked for feasibility.
- Changed or removed parameters:
- branching/relpscost/maxlookahead: default changed from 9 to 8.
- branching/relpscost/maxreliable: default changed from 8 to 5.
- constraints/bivariate/scaling: default changed from TRUE to 'o' (type changed to character).
- constraints/quadratic/scaling: default changed from TRUE to 'o' (type changed to character).
- constraints/soc/scaling: default changed from TRUE to 'o' (type changed to character).
- constraints/varbound/maxlpcoef: default changed from 1E6 to 1E9.
- heuristics/crossover/minnodes: default changed from 500 to 50.
- heuristics/dins/minnodes: default changed from 500 to 50.
- heuristics/feaspump/objfactor: default changed from 1 to 0.1.
- heuristics/rens/minnodes: default changed from 500 to 50.
- heuristics/rins/freq: default changed from -1 to 25.
- heuristics/rins/freqofs: default changed from 5 to 0.
- heuristics/rins/minfixingrate: default changed from 0 to 0.3.
- heuristics/rins/minnodes: default changed from 500 to 50.
- heuristics/shiftandpropagate/sortkey: default changed from 'u' to 'v'.
- lp/checkfeas: replaced by new parameters lp/checkdualfeas and lp/checkprimfeas.
- numerics/dualfeastol: default changed from 1E-6 to 1E-7.
- presolving/dualfix/*: replaced by propagating/dualfix/*
- propagating/pseudoobj/presoldelay: default changed from TRUE to FALSE.
- propagating/pseudoobj/timingmask: default changed from 5 to 7.
- propagating/redcost/timingmask: default changed from 2 to 6.
- separating/cgmip/objweighsize: renamed to separating/cgmip/objweightsize and default changed from FALSE to TRUE.
- separating/minefficacyroot: default changed from 0.01 to 0.001.
- separating/closecuts/relintnormtype: removed
SoPlex
- New libraries 2.0.0.
XPRESS
- New libraries 26.01.08.
Tools
GDX2SQLITE
- GDX2SQLITE is a new tool to dump the complete contents of a GAMS GDX file into a SQLite database file.
GDXDUMP
- New option
SymbolsAsSet
to write the symbol table for a set as data.
GDXMRW
- New utilities
irgdx
andiwgdx
for exchanging indexed GDX data with Matlab.
GDXRENAME
- New utility to rename the same unique elements in a GDX file using a mapping given by a second GDX file.
GDXXRW
- New option to allow the use of R1C1 notation to specify a cell or a range.
- Reading a set using the option
Values=string
now skips empty cells.
Expert Level APIs
GMO
- Removed previously deprecated function
gmoDirtyExtractDefVar
. - Added a number of functions to access information from an EMP info file, to compute the optimality gap, to access extrinsic function libraries, and to get the name of the GAMS input file.
Object Oriented APIs
- New example
transport14
. - New method
GAMSSymbolRecord.Key(int index)
(Java:GAMSSymbolRecord.getKey
, Python:_GamsSymbolRecord.key(int index)
) to retrieve the key ofGAMSSymbolRecord
(Python:_GamsSymbolRecord
) for a given positional index. GAMSSymbol.CopySymbol
now works for the universe of aGAMSDatabase
(GAMSDatabase.GetSet("*")
). When copying into the Universe, a merge will be performed.- Real domains are now registered when exporting a
GAMSDatabase
to GDX (so far, only relaxed domains were registered). GAMSJob.Run
(Python:GamsJob.run
) now createsOutDB
(Python:out_db
) also if it raises aGAMSExceptionExecution
.GamsModelInstance.Solve
(Java/Python:GamsModelInstance.solve
) now also works for solvers which require a subsolver, e.g., DICOPT.
.NET
- Fixed default value for
systemDirectory
argument inGAMSWorkspace
constructor when using MONO: If no value is given, first thePATH
and then the (DY
)LD_LIBRARY_PATH
is checked for a valid GAMS system directory.
Java
- It is no longer necessary to specify
-Djava.library.path
when running a program. Ifjava.library.path
is specified, the shared libraries will be loaded fromjava.library.path
. Otherwise, the shared libraries will be loaded from the class path that containsGAMSJavaAPI.jar
. - It is no longer necessary to set up environment variables (
PATH
, (DY
)LD_LIBRARY_PATH
) before running a program to find the GAMS system directory, as it can now be specified during run time. - In the
GAMSWorkspace
default constructor, the default setting for finding the GAMS system directory from environment variables in the following order (depends on the target platform) are applied:- Windows: first from
PATH
environment variable. If not found, then from the Windows registrygams.location
, - Mac OS X: first from
PATH
environment variable. If not found, then fromDYLD_LIBRARY_PATH
, - other Unix: from
PATH
environment variable. If not found, then fromLD_LIBRARY_PATH
.
- Windows: first from
- In the non-default
GAMSWorkspace
constructor, the following rules are applied:- In case a user specifies a system directory, the API will verify the directory and will not search for GAMS system directory from an environment variable, even when the directory is invalid.
- In case the specified system directory is
null
or a user does not specify a system directory, the API will apply the default setting from above.
- A memory leak in
GAMSDatabaseIterator
has been closed. - Issues when using a non-standard locale (
LANG
environment variable) have been fixed. - All deprecated classes and methods since 24.1 have been removed.
Python
- New behavior on determining a system directory automatically when a workspace is created.
- Linux: If no system directory is specified in the
GamsWorkspace
constructor, checkPATH
first. If no system directory was found, checkLD_LIBRARY_PATH
. - Mac OS X: If no system directory is specified in the
GamsWorkspace
constructor, checkPATH
first. If no system directory was found, checkDYLD_LIBRARY_PATH
. - Windows: If no system directory is specified in the
GamsWorkspace
constructor, check the Windows registry.
- Linux: If no system directory is specified in the
Model Libraries
GAMS Data Library
MakeQL
: Moved querylibrary generator intotrisource.zip
, which comes with Test Library models trilib01, trilib02, trilib03, and trilib04. RemovedMakeQL
model.invert1 (89)
invert2 (90)
GAMS Model Library
- clad.gms : Computation of Fairs extramarital affairs model estimates (397)
- gussex1.gms : Simple GUSS example (398)
- gussrisk.gms : Simple investment example with varying weight for risk using GUSS (399)
- gussgrid.gms : Simple GUSS Grid example (400)
- circpack.gms : Pack circles in the smallest possible rectangle (401)
- tablelayout.gms : Configuring text layout in table cells to minimize table height (402)
- asyncjobs.gms : Execute asynchronously several GAMS jobs and collect the fastest (403)
GAMS Test Library
- trilib01: Reworked tricclib.c source code. Rewrote querylibrary generator.
- single01.gms : Check handling of singleton sets (639)
- execerr1.gms : Test for execerr option (640)
- single02.gms : Check assignment to singleton sets (641)
- scensol4.gms : Basic GUSS Test (642)
gdxmrw06 (643)
- single03.gms : Check singleton sets in put statement (644)
- unload11.gms : Check that GAMS does not crash when writing to non-existing folder (645)
- refact00.gms : Check that GAMS produces expected workfile with option sys14=1 (646)
- refact01.gms : Refactor suite test 1 (647)
- scenempty.gms : Empty scenario GUSS Test (648)
- obfusc01.gms : Test use if obfuscated workfile (649)
- load11.gms : Load UEL Table (650)
- gussskip.gms : Simple GUSS example with skipped scenario (651)
- refact02.gms : Refactor suite test 2 (653)
- cpplib03.gms : Test extrinsic functions in cppcclib (654)
- cpplib04.gms : Test extrinsic functions in cppcclib (655)
- cpplib05.gms : Test extrinsic functions in cppcclib (656)
- cpplib00.gms : Test build of CPP library (657)
- syschk2.gms : Test impact of sys10 setting (658)
- scensol5.gms : Test handling of scenario dictionary sets with more than 50 entries (659)
- call5.gms : Check that gams works with COMSPEC unset (660)
- idxoper1.gms : Test indexed operations (661)
- gdxsqlite1.gms : Test basic functionality of GDX2SQLITE tool (662)
Solver/Platform availability - 24.3 | |||||||
---|---|---|---|---|---|---|---|
x86 32bit MS Windows |
x86 64bit MS Windows |
x86 64bit Linux |
x86 64bit Mac OS X |
x86 64bit SOLARIS |
Sparc 64bit SOLARIS |
IBM Power 64bit AIX |
|
ALPHAECP | |||||||
ANTIGONE 1.1 | |||||||
BARON 14.0 | |||||||
BDMLP | |||||||
BONMIN 1.7 | |||||||
CBC 2.8 | |||||||
COUENNE 0.4 | |||||||
CONOPT 3 | |||||||
CPLEX 12.6 | |||||||
DECIS | |||||||
DICOPT | |||||||
GLOMIQO 2.3 | |||||||
GUROBI 5.6 | |||||||
IPOPT 3.11 | |||||||
KNITRO 9.0 | 8.1 | ||||||
LINDO 8.0 | |||||||
LINDOGLOBAL 8.0 | |||||||
LGO | |||||||
MILES | |||||||
MINOS | |||||||
MOSEK 7 | |||||||
MPSGE | |||||||
MSNLP | |||||||
NLPEC | |||||||
OQNLP | 32bit | ||||||
PATH | |||||||
SBB | |||||||
SCIP 3.1 | |||||||
SNOPT | |||||||
SOPLEX 2.0 | |||||||
SULUM 2.0 | |||||||
XA | |||||||
XPRESS 26.01 |
24.3.2 Minor release (August 29, 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 Alvaro Lorca Galvez, Scott McDonald, Tom Rutherford, Nick Sahinidis, and Uwe Schneider.
GAMS System
GAMS
- Allow empty scalar data statements:
$onempty scalar xyz / /;
Extrinsic Function libraries
- Pass on parameter file name via
LibInit
call.
Solvers
BARON
- New libraries 14.0.3.
CBC
- New libraries.
CONOPT
- New libraries 3.16C.
- Added checks for internal intermediate results being NaN (Not A Number). If this happens, CONOPT will stop and return a message about it. The solver status will return 4 "Terminated by Solver" and model status 6 or 7, "Intermediate Infeasible" or "Intermediate Feasible."
CONVERT
- Fixed bug in interval evaluations for functions and gradients.
- The interval evaluations are now triggered by their own option (e.g.
intervalEval=yes
) instead of being part of every Jacobian or Hessian dump.
Cplex
- Some Cplex tuning parameters had no or the wrong effect. This has been fixed.
- The BCH usercutcall was not called in case of new constrains only for true cuts (see e.g. GAMS Model library model bchtsp). This has been fixed.
Examiner2
- Fixed error in processing options file.
- Fixed error in trace file generation.
Ipopt
- New libraries.
Mosek
- New libraries 7.0.0.126.
- Fixed an issue with using the Mosek extended license for MIP solving on Mac OS X.
Osi links
- Fixed writing MPS files with row and column names.
SCIP
- New libraries 3.1 #322574a
- Changed default of option
heuristics/proximity/minimprove
from 0.25 to 0.02. - Changed default of option
heuristics/proximity/usefinallp
from TRUE to FALSE.
- Changed default of option
XPRESS
- New libraries 26.01.14 for Linux and Windows.
Tools
GDXDUMP
- When generating
$GDXIN filename
, the filename now includes the full path of the GDX input file.
GDXXRW
- In the previous release, we changed the behavior that when reading with
Values=String
, the empty cells no longer created an entry. Because reading with this option was the default for the cases withRDim=0
orCDim=0
, we changed this default toValues=NoData
in order not to break existing code.
Shellexecute
- Fixed error causing problems during parameter processing.
Expert Level APIs
- Delphi: Distinguish between 32 bit and 64 bit compiler.
Object Oriented APIs
- Make more GAMS options available through the GAMSOptions class:
- GAMSOptions.AppendExpand: Expand file append option
- GAMSOptions.AppendOut: Output file append option
- GAMSOptions.DumpOpt: Writes preprocessed input to the file input.dmp
- GAMSOptions.DumpParms: GAMS parameter logging
- GAMSOptions.ErrMsg: Placing of compilation error messages
- GAMSOptions.Expand: Expanded (include) input file name
- GAMSOptions.FErr: Alternative error message file
- GAMSOptions.JobTrace: Job trace string to be written to the trace file at the end of a Gams job
- GAMSOptions.LimCol: Maximum number of columns listed in one variable block
- GAMSOptions.LimRow: Maximum number of rows listed in one equation block
- GAMSOptions.LogLine: Amount of line tracing to the log file
- GAMSOptions.On115: Generate errors for unknown unique element in an equation
- GAMSOptions.Output: Output file
- GAMSOptions.PageContr: Output file page control option
- GAMSOptions.PageSize: Output file page size (=0 no paging)
- GAMSOptions.PageWidth: Output file page width
- GAMSOptions.Reference: Symbol reference file
- GAMSOptions.ScriptExit: Program or script to be executed at the end of a GAMS run
- GAMSOptions.Suppress: Compiler listing option
- GAMSOptions.Symbol: Symbol table file
- GAMSOptions.TraceLevel: Solvestat threshold used in conjunction with a=GT
Model Libraries
GAMS Data Library
- Fixed some errors in some Matlab examples.
24.3.3 Minor release (September 19, 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 Henrik Dahl.
Solvers
ANTIGONE, Bonmin, CBC, Couenne, Ipopt, SCIP
- Fixed issue loading MKL libraries on Linux machines with AVX2 instruction set.
Tools
ASK, GDXVIEWER, SQL2GMS, XLS2GMS
- Fixed problem with character set used for error messages.
GDXXRW
- Fixed error when reading special values from Excel.
MDB2GMS, SQL2GMS
- Fixed problem when using comma as decimal separator.
Object Oriented APIs
Java
- Fixed a location of listing file when creating a job from (full-path) file without giving a job name.