Table of Contents
23.8.1 Major release (March 17, 2012)
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 Alessandro Brozzi, Jan Philipp Dietrich, Michael Ferris, Christophe Gouel, Josef Kallrath, Cheng Khor, Brage Knudsen, Jeff Larson, Yanchao Liu, Alexander Mitos, Renger van Nieuwkoop, Stefan Vigerske.
Platforms
- Beta GAMS/Wine system (32bit). Comments are highly appreciated (support@gams.com).
- Improved Windows Installer
- the default location has changed to
C:\GAMS\(win32|win64)\23.8
to avoid problems produced by the permission settings of the Program Files location - Two different setup modes. A simple default mode and an advanced mode with additional options like automatic PATH manipulation
- Support for detecting and installing a license from the clipboard
- the default location has changed to
GAMS System
APIs
- C#
- Major improvements, lost compatibility to previous versions!
- Mixed casing of function names
- old: gdxdatawritestr
- new: gdxDataWriteStr
- Object handle (pointer) no longer needed
- old: int gdxdatawritestr(IntPtr pgdx,string[] keystr,double[] values)
- new: int gdxDataWriteStr(string[] KeyStr,double[] Values)
- Create calls replaced by different constructors
- old: gdx = new gdxcs(); gdx.gdxCreateD(ref PGX, Sysdir, ref Msg);
- new: gdx = new gdxcs(Sysdir, ref Msg);
- See examples in
<GAMS Dir>\apifiles\CSharp
for reference
- Python
- Add source code to build C extensions (no need to run SWIG anymore)
- Add compiled C extension on Linux and Windows (both 32 and 64 Bit)
- VBA
- Support for 64 Bit version (VBA 7)
GAMS
New model definition features
- Flexible model list
Model definitions containing complementary equ.var pairs can now be used with all model types. The matching information is only used with the appropriate model types (e.g. MCP, MPEC, RMPEC). - Model list edits
In addition to the ',' which enforces uniqueness of equation entries, two additional model list element separators have been introduced. The '+' separator allows replacement of existing entries. The '-' separator deletes model list entries. All three of these operations can be used with single equation names, equ.var pairs and previously defined model names. - Example
$eolcom ! equation e1,e2,e3,e4,e5; variable x1,x2; e5.. x1 =l= 0; e4.. x1 =l= 0; model m1 / e1,e2 / m2 / e3,e4 / m3 / m2,m1,e5 / ! e3,e4,e1,e2,e5 m4 / all-m1+e1+e1 / ! e3,e4,e5,e1 m5 / all + e5.x1 + e4.x2 -e1/ ! e2,e3,e5.x1,e4.x2 m6 / m5 -e5, e5.x2 / ! e2,e3,e4.x2,e5.x2 m7 / m5 + e5.x2 / ! same as m6
Note that the equation list is ordered left to right. If we have a '+' separator adding an equation already in the list, the equation (possibly modified) will move to the end of the list.
Permutations via the option statement
- Using the '>' sign one can create complete permutations of one- and multi-dimensional sets and parameters:
Option PermAllI > I;
Examples of this new feature can be found in the models perm1, ptsp, flowshop, and pmelody.
Minor enhancements
- Functions can have up to 10 arguments. This effects the intrinsic functions
edist
andpoly
and extrinsic function libraries.
Stochastic Programming
In this release we made a first cut at supporting stochastic programming in GAMS. With a few changes uncertainty can be added to an existing deterministic model. For this, the EMP framework is used to replace parameters in the model by random variables. This way (stagewise-independent) multi-stage recourse problems and chance constraint models can be formulated. Three solvers can be selected to solve those problems: DE, DECIS and LINDO.
Further information can be found in the document Stochastic Programming (SP) with EMP.
In addition, you can check examples of type SP
from the GAMS EMP Library.
Utilities
- mps2gms MPS input file allows LI (lower integer) bound types and treats tabs as spaces.
Other
- By default GAMS does not call an exit script anymore. If this is required, the GAMS parameter
ScriptExit
has to be set explicitly to the script that should be called after GAMS terminates. An empty template of an exit script can be found in the GAMS system directory (gmsxitnt.cmd
(Windows) orgmsxitus.run
(Unix)).
Solvers
AlphaECP
- New libraries 2.09.01
- Support of =N= rows
Baron
- New libraries Baron 10.1
- Main developments
- Minos and Snopt are no longer available as LP subsolvers
- Clp can be used as the LP subsolver (
lpsol = 8
) - Ipopt with Mumps and Metis can be used as the NLP subsolver (
nlpsol = 9
) - BARON automatically selects Clp and Ipopt if the selected/default subsolver is not licensed
- Improved interface to Xpress-LP
- Introduced cutting planes for convexity exploitation for a variety of functions, including products and ratios, perspectives, norms (including absolute functions) and seminorms, and quadratic functions that are automatically recognized and exploited
- Polyhedral convexification routines have been rewritten and are now more efficient and numerically robust, as well as performing a number of simplifying transformations that reduce relaxation gaps
- Introduced relaxations based on inferred bilinear relationships (certain types of first-order RLT)
Bench
- calls solvers to benchmark in parallel using GAMS' grid functionality
Coin-OR
- OSIXpress supported on Solaris/Intel
- Dropped support of GLPK (alias OsiGlpk, alias CoinGlpk)
- New libraries:
- Bonmin 1.5
- Cbc 2.7
- improvements in heuristics and cut generation
- Clp 1.14
- Couenne 0.4 (for details see the [Couenne release notes] (http://list.coin-or.org/pipermail/couenne/2011-August/000234.html))
- feasibility pump heuristic for MINLP (can use SCIP as MIP solver)
- fixed point bound tightening and two-implied bound tightening
- introduction of semi-auxiliaries for smaller LP relaxations
- Ipopt 3.10
- OS 2.4
- now supports semicontinuous and semiinteger variables
- Osi 0.105
- Cbc, Bonmin, and Couenne support
miptrace
Convert
- Convert supports writing [Optimization Services instance Language (OSiL)] (http://www.coin-or.org/OS/OSiL.html)
Conopt
- New libraries 3.15C
Cplex
- new libraries 12.4
dettilim
: option to limit 'ticks'
DE
GAMS/DE
accepts EMP models that have been annotated with information about uncertainty. The DE 'solver' reformulates the stochastic model into the extensive form equivalent with implicit non-anticipativity constraints. The reformulated model is solved with any of the regular GAMS solvers. All optimization model types (LP, MIP, QCP, MIQCP, NLP, DNLP, and MINLP) are accepted.
DECIS
GAMS/DECIS
accepts 2 stage EMP stochastic models. The stochastic information is processed and is passed to the well knownGAMS/DECISC
orGAMS/DECISM
solver. The need to provide the stochastic information based on the matrix elements is now unnecessary.DECIS
, asGAMS/DECISC
andGAMS/DECISM
, accepts linear recourse models only (although the stochastic effects might be more complex).
DICOPT
- If the model given to DICOPT is linear, DICOPT just passes this model to the MIP solver. Previously, the MIP solver used parameters OptCR, OptCA, and ResLim as specified by GAMS options even if DICOPT used an option file. Now OptCR, OptCA, and ResLim from a DICOPT option file will overwrite the GAMS parameters.
GloMIQO
The new Global Mixed-Integer Quadratic Optimizer, GloMIQO (GLO-me-ko), solves Quadratically Constrained Programs (QCP) and Mixed-Integer Quadratically Constrained Programs (MIQCP) to epsilon-global optimality.
- GloMIQO has been developed by Prof. C. Floudas and R. Misener from Princeton University
- The GloMIQO solver is available for the 32-bit and 64-bit versions of Windows and Linux
- GloMIQO requires the presence of a GAMS/CPLEX and GAMS/SNOPT license
Gurobi
- New library Gurobi 4.6.1
- New sifting option for linear programs: LP models can now be solved with a sifting algorithm. Gurobi will choose sifting automatically when using the dual simplex algorithm for models that are likely to benefit (those with many more columns than rows). If you want to invoke sifting manually, choose dual simplex and set the new
Sifting
parameter to a value greater than 0. - Branch priorities: You can now specify priorities for branching variables, allowing greater user control of the MIP search process. Priorities can be specified through the .prior variable attribute and the .prioropt model attribute.
- New Zero Objective heuristic: Gurobi 4.6 contains a new Zero Objective heuristic that can be useful for finding solutions to MIP models where other strategies fail to find feasible solutions in a reasonable amount of time. Use the new
ZeroObjNodes
parameter to control this new heuristic. - New presolve sparsify option: A new presolve sparsify algorithm is available for MIP models. This method attempts to reduce the number of non-zero coefficients in the constraint matrix. Reductions of 3X or more have been observed on some models, often leading to significant performance improvements. Use the new
PreSparsify
parameter to enable this algorithm.
Guss
- Added option
NoMatchLimit
(default 0) that controls the maximum number of accepted unmatched scenario records before terminating the solve.
Ipopt
- The Serial Graph Partitioning and Fill-reducing Matrix Ordering software METIS can now be used by some of Ipopt's linear solvers.
- Starting with 23.8 GAMS offers a commercially supported version of GAMS/IPOPT. This version of GAMS/IPOPT includes the commercial strength linear solvers MA27, MA57, and MA86 from the Harwell Subroutine Library.
Jams
- Support Xpress and SCIP when reformulating disjunctions with indicators
Knitro
- New libraries Knitro 8.0
- Introduction of a presolver to simplify and reduce the size of the model
- Introduction of parallel (multi-threaded) execution
- Multi-start
- Multi-algorithm
- Multi-algorithm method
- New mode to run multiple algorithms, serially or in parallel
- Uses the first or (optionally) the best solution found
- New feasibility-only mode: improves robustness and efficiency of detecting infeasible models
- Knitro 8.0 discontinues support for 32-bit Darwin systems - only 64-bit systems are supported on the Mac.
Lindo
- New solver Lindo, similar to LindoGlobal, but
- Without size limitations
- No requirement for additional Conopt license
GAMS/LINDO
accepts stochastic EMP models and solves either the extensive form equivalent or uses Benders' decomposition to solve the stochastic model. In addition to discrete random variables, Lindo features also continuous distribution functions and various sampling techniques. All optimization model types (LP, MIP, QCP, MIQCP, NLP, DNLP, and MINLP) are accepted.
LindoGlobal
- New libraries Lindo 7.0
- MIP
- Significant improvements in root node heuristics for quickly finding good integer feasible solutions
- Improved identification of special structures, as in multi-period models, and the ability to exploit these structures to achieve significant reductions in solve times
- Global Solver
- Improved heuristics for finding a good feasible solution quickly
- Improved ability to identify constraints that can reformulated as second order cone (SOC) constraints and thus be solved by the fast SOC solver
- Improved ability for efficiently handling polynomial terms
- Improved bounds for non-convex quadratic terms, using SDP and eigenvalue reformulations
- Improved control over multi-start algorithm
MOSEK
- New libraries Mosek 6 rev 135
SCIP
- New libraries SCIP 2.1.1 (for details see the SCIP release notes)
- Beta-version of supporting (mixed-integer) nonlinear programs (also nonconvex)
- Supports
miptrace
- Supports indicators for linear constraints through option
gams/indicatorfile
- Added option
gams/dumpsolutions
to write all solutions found into gdx solution pool
Snopt
- bug fix for log of LP models
SoPlex
- New libraries SoPlex 1.6.0 (for details see the [SoPlex release notes] (http://soplex.zib.de/notes-160.txt))
XA
- New libraries XA 17 on Windows
- Introduction of native 64-bit Windows support
Xpress
- New libraries 22.01.15 (maintenance release)
- MIP solution pool capability - allows a number of feasible solutions to be stored for later processing. By default the global search is not altered, but there is an option to enumerate all or selected integer feasible solutions. The enumeration can be tailored via the option file to execute a number of different strategies, e.g.:
- all integer feasible solutions
- N-best solutions
- as-good-as-X solutions (all solutions with objective at least as good as X)
- N-first solutions (first N solutions found)
- Solution pool examples are available in testlib: xpress03 (default global search), xpress04 (enumeration of all solutions), xpress05 (various enumeration strategies).
- Support for continuous models with quadratic constraints (previously only quadratic objectives were supported) and for all mixed-integer quadratic (MIQCP) models
- Support for indicator constraints
- New option
isGoodEnough=X
implemented in the link. If set, the global search will stop once an integer feasible point is found with an objective at least this good. Surprisingly, none of the MIP solver vendors implement such an option directly in their libraries.
Documentation
Amongst others, the following topics were revised in both, the GAMS Users Guide and the Bruce McCarl's Expanded GAMS Guide
- Command Line Parameters
- Dollar Control Options
- Model Attributes
- GAMS Intrinsic and Extrinsic Functions
Model Libraries
GAMS Data Library
GDXMRWPlotting01 (81)
: Placeholder for the GDXMRW examples that deal with plotting in Matlabmakeql (82)
: Create Querry Library routines for extrinsic functions
GAMS EMP Library
- two3emp (68): EMP Formulation of Simple 2 x 2 x 2 General Equilibrium Model
- airsp3 (69): Aircraft allocation - stochastic optimization
- apl1psp (70): Stochastic Electric Power Expansion Planning Problem
- apl1pcasp (71): Stochastic Electric Power Expansion Planning Problem
- clearlaksp (72): Scenario Reduction: ClearLake exercise
- farmsp (73): The Farmer's Problem - Stochastic
- kilosafarm (74): Kilosa farm problem
- landssp (75): Optimal Investment
- nbContIndep (76): Newsboy problem, continuous and independent distribution
- nbContJoint (77): Newsboy problem, continuous and joint distribution
- nbDiscIndep (78): Newsboy problem, discrete and independent distribution
- nbDiscJoint (79): Newsboy problem, discrete and joint distribution
- portfolio (80): Stochastic portfolio model
- prodsp3 (81): Stochastic Programming Example
- simpleChance (82): Simple chance constraint model
- sp3x2 (83): Simple stochastic model
- tr20 (84): Extended transport model with stochastic demand and costs
- nbsimple (85): Simple newsboy problem, discrete
- airlift (86): Airlift operations schedule
- stocfor3 (87): Long Range Forest Planning
- circlesp (88): Circle Enclosing Points - Stochastic Example
- batchsp (89): Design of batch chemical plants with stochastic demand and price
- cargonet (90): Cargo network scheduling with stochastic transportation demand
- gen2s (91): Two stage stochastic program in the generic form
- sku1sp (92): Multi-product assemble model with discrete and Poisson demand distribution
GAMS Model Library
- cubesoln (371): Three-dimensional Noughts and Crosses Multiple Solutions
- sipres (372): Global optimization of semi-infinite programs via restriction of the right-hand side
- cclinpts (373): Finding Optimal Breakpoints when linearizing a power utility function
- ptsp (374): Traveling Salesman Problem Instance solved with explicit Permutation Enumeration
- pmelody (375): Choose notes for melodic lines and chords with permutations
- flowshop (376): Flow shop scheduling
GAMS Test Library
- nlcode6 (534): Test for NL code bug from Dist 23.6
- scensol3 (535): NoMatchLimit GUSS Test
- gzip01 (536): Test gzipped input files
- sl4qcp01 (537): Test of correctness for levels & marginals of QCP, with solvelink=1,2,4,5
- sl4qcp02 (538): Test modsolstat & solution correctness - multiple QCons, with solvelink=1,2,4,5
- sl4qcp03 (539): Test case for cancellation in quadratic terms, with solvelink=1,2,4,5
- miqcp01 (540): Test of correctness for levels & marginals of MIQCP
- indic01 (541): Test of =g= indicator constraints
- indic02 (542): Test of =e= indicator constraints
- kestrel1 (543): Kestrel test for lp solvers
- kestrel2 (544): Kestrel test for mcp solvers
- kestrel3 (545): Kestrel test for nlp solvers
- kestrel4 (546): Kestrel test for minlp solvers
- indic03 (547): Test of =e= indicator constraints
- xpress03 (548): XPRESS test suite - solution pool example
- mip05 (549): Maximum queens chess problem
- xpress04 (550): XPRESS test suite - solution enumerator example
- circlen (551): Circle Enclosing Points n dimensional
- trilib04 (552): Demonstrates problems with a stateful function library
- mip06 (553): Cuts and solution enumeration
- xpress05 (554): XPRESS test suite - solution enumerator example
- qcp09 (555): Simplest test for QCP correctness
- perm1 (556): Test for various permutations
ctrlcmip (557)
: Test interrupt handling [not available anymore]
Solver/Platform Availability Matrix
Solver/Platform availability - 23.8 March 17, 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 Intel32 Darwin |
Mac x86_64 Darwin |
|
ALPHAECP | ||||||||||
BARON 10.1 | ||||||||||
BDMLP | ||||||||||
COIN-OR | ||||||||||
CONOPT 3 | ||||||||||
CPLEX 12.4 | ||||||||||
DECIS | 32bit | |||||||||
DICOPT | ||||||||||
GLOMIQO | ||||||||||
GUROBI 4.6 | ||||||||||
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 | ||||||||||
SNOPT | ||||||||||
SOPLEX | ||||||||||
XA | ||||||||||
XPRESS 22.01 |
23.8.2 Maintenance release (April 05, 2012)
- Bugfix for models with
=X=
rows and MCP (i.e. MPSGE) - GloMIQO resets
OptCR=0
properly to 1e-9 and accepts now Ctrl-C on Windows - Knitro handles MINLP failures better
- XPRESS handles
=E=
quadratic constraints better now - Changed position of Library Form in GAMSIDE (avoid hang in corner to corner screen setup)
- Model
Trnsxcll
added to GAMS Data Library - Model
ps5_s_mn
added to GAMS Model Library