Table of Contents
24.0.1 Major release (December 24, 2012)
Acknowledgments
We would like to thank all of our users who have reported problems and made suggestions for improving this release.
Platforms
- Dropped Mac OS X 32bit build
- Mac OS X 64bit build now on Lion (10.7)
GAMS System
APIs
Documentation
- Moved existing documentation about the APIs to
<Path/To/GAMS>/docs/API
. Also added new documentation there. In the GAMSIDE this documentation can be accessed atHelp → Docs → API
.
.NET
- Add function
Interrupt
toGAMSJob
: Sends interrupt signal to running GAMSJob
Java
This release contains a beta version of the object-oriented Java API that can be used to control GAMS from a Java program. It allows the seamless integration of GAMS into Java by providing appropriate classes for the interaction with GAMS. GAMS Java API objects allow a convenient way to exchange input data and model results with in-memory representation of data (GAMSDatabase), and to create and run GAMS models (GAMSJob) that can be customized by GAMS options (GAMSOptions). Furthermore, they introduce a way to solve a sequence of closely related model instances in the more efficient way (GAMSModelInstance).
- A Java program that uses object-oriented Java API requires at least Java SE 5 to compile and run.
- All classes are distributed within one single jar file
GAMSJavaAPI.jar
with a namespacecom.gams.api
, located under the<Path/To/GAMS>/apifiles/Java/api/
directory. - Java program examples are distributed with a namespace
com.gams.examples
, located under the<Path/To/GAMS>/apifiles/Java/
directory. - Installation and detailed documents can be found in
<Path/To/GAMS>/apifiles/readme.txt
and<Path/To/GAMS>/docs/API/GAMS_java.pdf
. - Javadoc for
GAMSJavaAPI.jar
can be found under the<Path/To/GAMS>/apifiles/java/api/javadoc
directory.
Python
- In the API to the option object the signature of the function
optGetStrStr
has changed from:value = optGetStrStr(optHandle, "GDX", dummyString)
tovalue = optGetStrStr(optHandle, "GDX")
- The compiled Python libraries are built with Python 2.7 now.
This release contains a beta version of the object-oriented Python API that can be used to control GAMS from within Python 2.7. It allows the seamless integration of GAMS into Python by providing appropriate classes for the interaction with GAMS. The GamsDatabase class for in-memory representation of data can be used for convenient exchange of input data and model results. Models written in GAMS can be run with the GamsJob class and by using the GamsModelInstance class a sequence of closely related model instances can be solved in an efficient way. To use this API one has to perform one of the following steps:
Installing the API and the required low level APIs:
cd <Path/To/GAMS>/apifiles/Python/api && python setup.py install && cd ..
Using the API without installing:
export PYTHONPATH=<Path/To/GAMS>/apifiles/Python/api (Unix) set PYTHONPATH=<Path\To\GAMS>\apifiles\Python\api (Windows)
Running transport1.py example:
export LD_LIBRARY_PATH=<Path/To/GAMS>:$LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on OS X, not required on Windows) python transport1.py
Documentation about this API can be found in <Path/To/GAMS>/docs/API/GAMS_python.pdf.
Documentation
- added separate GAMS installation notes for Mac OS X
External Equations
- Added a list of examples to the GAMS Test Library.
GAMS
- If Solvelink is set to a non-default value. The GAMS log prints out the solvelink selection:
--- Executing SOLVER (Solvelink=i): elapsed 0:00:00.000
- New date in audit line. Each GAMS component writes an audit line to the GAMS log, e.g. GAMS/Cplex write
IBM ILOG CPLEX Jul 14, 2011 23.7.3 WIN 27723.27726 VS8 x86/MS Windows
. The date in this line used to be the license check date, which does not change with maintenance releases (23.9.X). Starting with 24.0.1 the date displayed in the audit line is the build date of the system and changes with every release including maintenance releases.
- When GAMS is run from the command line on Windows systems and a solver is interrupted, the OS issued a message
Terminate batch job (Y/N)?
and the user had to interact. Now the message is still printed, but GAMS does not wait for a user action anymore. This has a rare side effect that solver keyboard interactions (e.g. in GAMS/Cplex with optionInteractive
and GAMS/SCIP with optionGAMS/Interactive
) will not work unless the new GAMS optionInteractiveSolver
is set to 1. - For compile time commands like
$include
, the$
had to be in column 1. Leading blanks are now allowed for such commands, but require an additonal$
:$$include
. The$$
can only be used for the first dollar command in a line. For example,$set a 'aa' $$set b 'bb'
does not work. - GAMS has added UserName and ComputerName to the recorded fields of the GAMS Trace facility. Besides many uses in quality assurance testing, the trace facility e.g. can be used to audit the GAMS activities in a multi user environment with a shared GAMS installation.
- Report equations with general non-linearity in lst file for QCP models
- New
put_utility
featureWinMsg
allows to send a Windows message to a window:put_utility fx 'WinMsg' / 'WindowTitle' / 'Message';
- Asynchronous calls on Windows can be started with a new console rather than sharing the console of the parent process.
$CALL.ASYNCNC
,Execute.AsyncNC
andPut_Utility
keywordsExec.AsyncNC
andShell.AsyncNC
have been added.NC
and nonNC
calls behave identical on non-Windows platforms.
GAMS IDE
- The IDE has now an integrated Text differ to compare two text files; see File | Diff Textfiles
GDXRRW
- GDXRRW is a suite of utilities to import/export data between GAMS and R and to call GAMS conveniently from R. The software gives R users the ability to use all the optimization capabilities of GAMS, and allows visualization and other operations on GAMS data directly within R.
- GDXRRW is unique among the GDX interface utilities in that it is an R extension made available as an R package. As such, it is run as part of an R session or script, not as part of a GAMS run, and it follows the usual R package conventions.
- Source and binary packages for GDXRRW are part of the GAMS distribution.
Solvers
BARON
- New libs 11.8.0
- BARON uses an improved link to Clp
- BARON uses latest SNOPT 7.2-12
- BARON uses latest IPOPT 3.10.3
- Memory requirements have been significantly reduced
Bonmin
- Faster reaction to user interrupt during solve of initial NLP relaxation.
- Changed default setting for parameters variable_selection and milp_strategy to strong-branching and solve_to_optimality, respectively.
- Renamed miptrace options to solvetrace.
CBC
- New library 2.8
- A new primal heuristic "Proximity Search" (proposed by Fischetti and Monaci, 2012) has been added. The idea is to define a sub-MIP without additional constraints but with a modified objective function intended to attract the search in the proximity of the incumbent. The heuristic is off by default and can be enabled by setting
proximitysearch 1
in a GAMS/Cbc options file.
- A new primal heuristic "Proximity Search" (proposed by Fischetti and Monaci, 2012) has been added. The idea is to define a sub-MIP without additional constraints but with a modified objective function intended to attract the search in the proximity of the incumbent. The heuristic is off by default and can be enabled by setting
- Parallel branch-and-bound search (multithreading) is now also possible under Windows by using [POSIX threads for Win32] (http://sourceware.org/pthreads-win32).
- New option dumpsolutions to output alternative solutions to gdx files.
- The miptrace options have been renamed to solvetrace and activating them does not affect the solving process anymore.
ConvertD
- Added option
localsolver
to convert GAMS models into [LocalSolver language] (http://www.localsolver.com). This is still an experimental feature, i.e., it may not always be possible to process the created .lsp files with LocalSolver. A major limitation is the restriction to binary and bounded integer variables in LocalSolver. To allow for continuous variables that can be defined via other variables, ConvertD can read information about defined variables from a ConvertD options file. In such an option file, a linedefvar x1 e1
denotes that the continuous variable x1 is defined via equation e1. Equation e1 then needs to be an equality constraint which contains x1 in a linear expression. Analogously, a statementdefvar y(n,i,j) e(n,i,j)
indicates that variable y(n,i,j) is defined via equation e(n,i,j) for all (n,i,j).
Couenne
- Couenne is now linked against the nauty library, which enables symmetry recognition for MINLPs and their utilization for orbital branching.
- The miptrace options have been renamed to solvetrace.
Cplex/CplexD
- New library 12.5
- The number of threads for CPLEX to use can now be set to any positive integer number, even if this number exceeds the number of cores on the machine. The default behavior of GAMS/CPLEX with respect to the number of threads and cores remains unchanged. That is, by default, GAMS/CPLEX continues to run with a single thread. Setting
THREADS
to 0, result in setting the threads to the number of cores. - New parameters:
ProbeDetTime
: Limits the amount of time (expressed in deterministic ticks) spent probingPolishAfterDetTime
: Sets the amount of time expressed in deterministic ticks to spend during a normal mixed integer optimization after which CPLEX starts to polish a feasible solutionTuningDetTiLim
: Sets a time limit in deterministic ticks per model and per test set (that is, suite of models) applicable in tuningRandomSeed
: Sets the random seed differently for diversity of solutions.
- GAMS/Cplex prints the time spend in Cplex optimization calls. The time is printed in elapsed seconds and elapsed deterministic time in ticks.
- GAMS/CplexD returns proper duals for QCP models
CONOPT
- new library 3.15H
GloMIQO
- new library GloMIQO 2.1:
- improved reformulation strategies
- better recognition of special mathematical structure allowing for dominant polyhedral cuts
- additional strategies for deterministically inferring missing variable bounds
- new option cplex_optfile specifies a GAMS/CPLEX options file that will be applied to every LP and MILP subsolve
- new option dumpsolutions to output alternative solutions to gdx files
GUROBI
- New library 5.0.2
IPOPT and IPOPTH, BONMIN and BONMINH
- IPOPT is now available in two variations. The Open Source IPOPT is part of the Base Module. IPOPTH uses higher performance (but not Open Source) linear algebra routines (HSL) and is separately priced.
- Analogously, BONMIN is part of the Base Module and uses IPOPT. BONMINH requires a license for IPOPTH.
- For Couenne and SCIP, IPOPTH is used to solve NLP subproblems if a corresponding license is available, otherwise IPOPT is used.
LogMIP
- Fixed a bug when reformulating disjunctions with terms that are indicated by a negated variable (disjunction not y1 e1 else ...).
MINOS
- Maintenance updates, primarily for memory allocation issues.
MOSEK
- New libs Mosek 6 Rev 148.
Optimization Services
- New library 2.6
OsiXpress
- OsiXpress is now also available on Mac OS X.
SCIP
- New library 3.0.1
- New presolvers have been added, among them one that recognizes and utilizes block structures in an instance.
- New primal heuristics NLP diving (for MINLPs) and Zero-Objective ("Hail Mary") have been added.
- New propagators for optimization-based bound tightening for MINLPs have been added.
- The variable bounds propagator has been extended to cliques and implications.
- Memory limits are now better handled, especially for larger problems.
- The probing algorithm has been revised and should give better performance.
- The performance for pseudo-boolean optimization problems has been improved.
- The complete release notes can be found [here] (https://www.scipopt.org/doc/html/RELEASENOTES.shtml) and a list of all changes (including changes to parameters and their default values) can be found [here] (https://www.scipopt.org/doc/html/CHANGELOG.shtml)
- The GAMS workspace option can now be used to set the SCIP memory limit ('limits/memory' in optionfile).
- The
gams/miptrace
options have been renamed togams/solvetrace
. - The
gams/printstatistics
option has been renamed todisplay/statistics
. - The
gams/interactive
option is now a string option that takes commands for the SCIP shell as arguments. If the commands do not end with a 'quit' command, the SCIP shell still open for user interaction. Note, that in order to be able to input commands interactively on Windows, you have to set the GAMS option interactivesolver to 1 (see above). - The LP solver in SCIP can now be changed by the
lp/solver
option. Supported values are "cplex", "soplex", and "clp". The default LP solver is now CPLEX, if a CPLEX license is available, and SoPlex otherwise.
SNOPT
- New library 7.2-12 (maintenance release)
- Completely revamped linking code
- The GAMS/SNOPT link is now thread-safe, allowing it to be used in multi-threaded applications built with the high-level GAMS APIs mentioned above.
- Updated memory allocation scheme to increase the amount of memory that can be allocated and used for problem solution, and to improve reporting when limits are reached.
- Miscellaneous bug fixes and usability improvements.
SoPlex
- New library 1.7.1
- Performance improvements in pricing algorithms
- Many bugfixes and improvements in numerical stability and infeasibility detection
- Complete release notes [here] (http://soplex.zib.de/notes-170.txt).
Sulum
- GAMS 24.0 introduces the new LP/MIP Solver Sulum from Sulum Optimization ApS.
- While Sulum currently does not compete with the high-end LP/MIP solvers, Sulum offers a good cost-benefit ratio for LP and MIP solution technology.
- GAMS 24.0.1 features Sulum LP only, but as soon as Sulum Optimization releases their library including the MIP optimizer, a maintenance release will feature the full LP/MIP capabilities of Sulum.
Xpress
- New library Xpress Optimizer 23.01.06 (maintenance release).
Model Libraries
GAMS Data Library
GAMS EMP Library
- simplevi4 (93): Equilbrium model consisting of two VIs, one of which has a non-trivial constraint set
- transsp (94): A Stochastic Transportation Problem
- oa (95): Outer Approximation for Convex Minimization Problem with Binary Variables
GAMS Model Library
- powerset (381): PowerSetLeft and PowerSetRight examples
- linearne (382): Linearization techniques for extremal-Nash equilibria
- saras (383): South African Regionalized Farm-level Resource Use & Output Supply Response (SARAS) model
- epscmmip (384): Improved version of eps-Constraint Method for Multiobjective Optimization
- bidpwl (385): Bid Evaluation with Piecewise Linear Functions
- trnspwlx (386): A Transportation Problem with Piecewise Linear Functions
GAMS Test Library
- testexeq (562): Test external equations
- ex1 (563): External Function - Example 1
- ex1x (564): External Function - Example 1x
- ex2 (565): External Function - Example 2
- ex3 (566): External Function - Example 3
- ex4 (567): External Function - Example 4
- ex4x (568): External Function - Example 4x
- ex5 (569): External Function - Example 5
- er1 (570): External Function - Error Example 1
- er2 (571): External Function - Error Example 2
- er3 (572): External Function - Error Example 3
- exmcp1 (573): External Function - Example MCP 1
- exmcp2 (574): External Function - Example MCP 2
- exmcp3 (575): External Function - Example MCP 3
- exmcp4 (576): Hansen/Koopmans: External Function - Example MCP 4
- exmcp5 (577): Intermixed External Rows: External Function - Example MCP 5
- complink (578): Compile and link external equation libraries
- lindgl02 (579): Check that Lindo(Global) works with SOS variables
- qcp10 (580): Test for QCP correctness
- empdisj6 (581): Test disjunctions with negated equality equations
- gdx9 (582): Test unloading and loading a GDX file with variable attributes
- empdisj7 (583): Test disjunctions with negated variables
- traceuc (584): Test if we can get the user and computer name in a trace file
- asynntrp (585): Start GAMS job asynchronously and send interrupt signal to it
Tools
SCENRED2
- fixed visualization output to work with recent versions of gnuplot
Solver/Platform Availability Matrix
Solver/Platform availability - 24.0 December 24, 2012 | |||||||||
---|---|---|---|---|---|---|---|---|---|
x86 MS Windows |
x86_64 MS Windows |
x86 Linux |
x86_64 Linux |
Sun Sparc SOLARIS |
Sun Sparc64 SOLARIS |
Sun Intel SOLARIS |
IBM RS-6000 AIX 5.3 |
Mac x86_64 Darwin |
|
ALPHAECP | |||||||||
BARON 11.8 | |||||||||
BDMLP | |||||||||
COIN-OR | |||||||||
CONOPT 3 | |||||||||
CPLEX 12.5 | |||||||||
DECIS | 32bit | ||||||||
DICOPT | |||||||||
GLOMIQO 2.1 | |||||||||
GUROBI 5.1 | 5.0 | ||||||||
KNITRO 8.0 | |||||||||
LINDO 7.0 | |||||||||
LINDOGLOBAL 7.0 | 6.0 | 6.0 | |||||||
LGO | |||||||||
MILES | |||||||||
MINOS | |||||||||
MOSEK 6 | |||||||||
MPSGE | |||||||||
MSNLP | 32bit | ||||||||
NLPEC | |||||||||
OQNLP | 32bit | 32bit | |||||||
PATH | |||||||||
SBB | |||||||||
SCIP 3.0 | |||||||||
SNOPT | |||||||||
SOPLEX 1.7 | |||||||||
SULUM 1.0 | |||||||||
XA | |||||||||
XPRESS 23.01 |
24.0.2 Maintenance release (February 14, 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 Arne Drud, Michael Ferris, Erwin Kalvelagen, Aida Khajavirad, Ignacio Perez, Nick Sahinidis, and Dimitri Tomanos.
Platforms
- removed dependency on GLIBC 2.7 in Linux systems
GAMS System
APIs
Object Oriented APIs
- introduced new function CopySymbol (see individual languages for precise name)
- label and symbol lookup is now case insensitve
- fixed handling of infinite bounds for GAMSModifiers
.NET
- added new function GAMSSymbol.CopySymbol
- added new examples in Visual C++ and VB.NET
Java
- added new function GAMSSymbol.copySymbol
Python
- added new function _GamsSymbol.copy_symbol
- on Windows and Linux, compiled libraries for both Python 2.6 and Python 2.7 are distributed
while the Python 2.7 version can be found in<GAMSDir>\apifiles\Python\api
as before, the Python 2.6 version is in<GAMSDir>\apifiles\Python\api_26
GDX
- fixed a casing problems with the function
gdxSymbolGet/SetDomainX
for client languages C++, C#, Fortran, Java, Python, VBA, VB.NET
GMO
- increased API version number to 11 (was forgotten in 24.0.1)
GAMS
- the reason for ignoring an option in the GAMS options file reader is now printed
- fix a bug when reading scalars from a compressed GDX file
GAMS IDE
- changed the interface for the Text Differ to look like the GDXDiff interface
- moved menu for Text Diff under Utilities menu
Utilities
GDXXRW
- gdxxrw works now with Excel Binary Workbook files (file extension
.xlsb
)
Solvers
BARON
- new library 11.9.1
- fixed handling of workspace and workfactor options
BONMIN, CBC, Couenne, GloMIQO, SCIP
- fixed too small value in 'seconds' column in solvetrace file
- improved resolution of solvetrace file for Cbc and SCIP
CONOPT
- new library 3.15I
- major update of the CONOPT solver manual (pdf file only)
- revised definition of workspace and workfactor options: workfactor is now ignored if workspace is defined
- minimum memory allocation adjusted for some smaller machines
- removed no longer used options GCFORM, GCPTB1, GCPTB2
GloMIQO
- fixed bug in reporting of dual bound when optca tolerance is larger in magnitude than optcr
GUROBI
- new library 5.1
- new options
ImproveStartNodes
: A new option for transitioning from tree exploration to solution improvement in MIPSeed
: Modifies the random number seed. This acts as a minor perturbation to the solver, which typically leads to a different solution path. This can be useful for experimentation (e.g., for testing the robustness of a particular set of parameter changes)
- Gurobi dropped support for Linux 32bit, so GAMS/Gurobi uses Gurobi library 5.0.2 on Linux 32bit
MOSEK
- write clearer text error message to log and listing file
MPSGE
- fixed memory issues when both workspace and workfactor are set and when estimates are too high
MSNLP / OQNLP
- fixed problems with LSGRG on instances with more than 10000 variables or more than 10000 equations
SCIP
- new SCIP library 3.0 #0134f8c
- fixed bug where the reported objective value did not equal the level value of the objective variable
- improved cleanup of SCIP solutions that are not feasible in the original problem; the model status is now adjusted accordingly
XPRESS
- fixed reporting of resused and iterused attributes for infeasible and unsolved models
Tools
ConvertD
- in LocalSolver output, long linear parts of equations are now printed by using the sum() operator
- added solution output option and functionality for LocalSolver (lspsol)
- fixed bug when using objvar option in conversion to GAMS format
- fixed bug with variable indices when writing nonlinear expressions
EXAMINER
- fixed check of complementarity slackness for discrete variables in MIQCPs
- added a consistency check on model attributes (currently only objval)
JAMS
- fixed many problems with objective functions in equilibrium followers, especially those arising when variables were skipped or when the objective var was reformulated out
- fixed problems with VI models and vars getting squeezed out that should not have been