23.7.1 Major release (July 14, 2011)
Table of Contents
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, Michael Ferris, Josef Kallrath, Andreas Lundell, Renger van Nieuwkoop, Sabine Ritter, Stefan Vigerske, and Kent Zhao.
Platforms
 The 32bit and 64bit Linux systems are now built using the GNU Compiler Collection (GCC) toolset.
 Dropped support of Windows 95, 98, ME, and 2000.
GAMS System
GAMS
Asynchronous Execution
For a long time GAMS supports calling executables via the $call
and Execute
in a synchronous way. The new release also supports asynchronous job handling. This means you can start a job without waiting for the result. You can continue in your model and collect the return code of the job later. There are three ways to start a job asynchronously:
$Call.ASync ...
(compile time)Execute.ASync '...';
(execution time)put_utility fx 'Exec.ASync' / '...'; / put_utility fx 'Shell.ASync' / '...';
(execution time)
After each of those the function JobHandle
can be used to get the Process ID (pid) of the last job started. With JobStatus(pid)
one could check for the status of a job. Possible return values are:
 0: error (input is not a valid PID or access is denied)
 1: process is still running
 2: process is finished with return code which could be accessed by errorlevel
 3: process not running anymore or was never running, no return code available
With JobTerminate(pid)
a interrupt signal can be sent to a running job. If this was successful the return value is one, otherwise it is zero.
With JobKill(pid)
a kill signal can be sent to a running job. If this was successful the return value is one, otherwise it is zero.
The model asynexec
from the GAMS Test Library demonstrates the use of this new feature.
Function Libraries
The new GAMS Function Library Facility allows users to import functions from an external library into a GAMS model. Apart from the import syntax, the imported functions can be used in the same way as intrinsic functions. In particular, they can be used in equation definitions. Some function libraries are included with the standard GAMS software distribution but GAMS users can also create their own libraries using an open programming interface. Simple examples in the programming languages C, Delphi and Fortran come with every GAMS system.
Function libraries are made available to a model using the compiler directive:
$FuncLibIn <InternalLibName> <ExternalLibName>
Similar to sets, parameters, variables, and equations, functions must be declared before they can be used:
Function <InternalFuncName> /<InternalLibName>.<FuncName>/;
There are a few libraries which come ready to use with the GAMS system:
 fitfclib: packages FITPACK from P. Dierckx in a way that it works with this facility
 pwpcclib: evaluates piecewise polynomial functions
 stodclib: provides random deviates, probability density functions, cumulative density functions and inverse cumulative density functions for certain distributions
 tricclib, tridclib, trifclib: these simple examples can be found compiled and as source code written in C, Delphi and Fortran respectively
Detailed information can be found in the GAMS User's Guide in chapter 6.3.
In addition, the following examples from the GAMS Test Library can be referred to:
stolib01
: Uses the stochastic library which comes with the GAMS systemtrilib01
: Uses trigonometric function from a library written in C, comes with C source codetrilib02
: Uses trigonometric function from a library written in Delphi, comes with Delphi source codetrilib03
: Uses trigonometric function from a library written in Fortran, comes with Fortran source codepwplib01
: Uses a library for piecewise polynomial functions which comes with the GAMS systemfitlib01
: Uses FITPACK from P. Dierckx which was packaged in a way that it works with this facility and comes with the GAMS system
If you need detailed instructions for connecting your library to GAMS please contact support@gams.com.
Other
 Dropped support for EBCDIC. Functions ordebcdic and ordascii are no longer available. oldascii should be replaced by ord.
Bug Fix
We found and corrected a bug related to the internal organization of nonlinear code. This bug was introduced with version 23.6 but fortunately only occurs in rare cases.
Utilities
GAMSIDE
 Version 23.6 made it more difficult to find the directory where GAMS is installed. In this release we reintroduce the EXECUTABLE entry in the GAMSINI file to make this easier.
 The PageWidth option was limited to 255
 Increased the maximum number of jobs that can be run at he same time from 5 to 20.
GAMSINST
 The gamsinst program allows to set the default solvers and to install contributed software packages (e.g. Tom Rutherford's GAMS Programming Tools). Previous versions of gamsinst supported the installation of contributed solver packages. The new version of gamsinst does not support these types of solver packages anymore. If you need to install a contributed solver, please contact support@gams.com.
GDXXRW
 Fixed a memory leak that could make it difficult to read large spreadsheets.
 Worked around a limitation to read large spreadsheets by reading the data in multiple slices.
 The option NAin allows a string to be specified to recognize the value for NA when reading a spreadsheet; this is in addition to recognizing the string 'NA'.
 Undf is now recognized as a value without generating an error when reading from a spreadsheet so the entry can be processed in the GAMS model using the $ONUNDF dollar option in GAMS.
 Strings that are not recognized as a special value are no longer read as NA but as Undf instead; use the $ONUNDF in GAMS to read these values.
Solvers
AlphaECP
 Update to version 2.04.01
 New options
CUTdelcrit
Improved heuristic to reselect cuts.CUTnrcuts
Option that the algorithm decides was added.ECPdumpsol
Write encountered solutions in GDX files.MIPsolstrat
Strategy for multiple MIP solutionsNLPcall
Option that the algorithm decides was added.solvelink
Determines the way the NLP and MIP solvers are called. By default AlphaEXP now calls the NLP and MIP solver in memory.
 Deprecated options
CUTautogrowth
,CUTcheckgrowth
,CUTgrowth
,CUTgrowtheq
,CUTgrowthnr
,CUTmincuts
ECPcheckviol
NLPepsilon
,NLPlimepsilon
Baron
 New libraries 9.3
 Compared to previous versions, BARON 9.3 comes with improved multilinear relaxations and improved branching
 Support for the LP solvers XA and OSL has been dropped
Conopt
 New libraries 3.14Y
CoinOR
 Updated Bonmin and Couenne libraries (bugfixes).
 On Linux and Windows, Ipopt now uses a multithreaded linear algebra library. The number of threads can be set via the GAMS option THREADS.
 Added Bonmin option "print_funceval_statistics" to enable statistics on number of function evaluations during a Bonmin run.
 Added Ipopt, Bonmin, and Couenne option "print_eval_error" to enable printing of information about function evaluation errors into the listing file.
 OsiCplex, OsiGurobi, and OsiXpress now support using the variable level values as initial solution for a MIP solve. This is enabled by setting the GAMS option INTEGER4 to 1.
Cplex
 New libraries 12.3
 Cplex 12.3 solves a greater variety of nonconvex quadratic programming models; that is, QP models with a quadratic term in the objective function. These models are also known as indefinite QPs (in contrast to positive or negative semidefinite QPs). In fact, Cplex 12.3 can find solutions that satisfy KarushKuhnTucker (KKT) conditions for certain indefinite QPs. A new parameter, solution target type (
SolutionTarget
), lets you specify to Cplex whether you will accept a solution that satisfies firstorder optimality conditions (in contrast to accepting only globally optimal solutions), and Cplex computes and searches accordingly.  Log files improved. You may observe slight differences from previous versions in the format of logs produced by Cplex 12.3. For example, the name of the column formerly titled "best node" in logs of MIP optimizations is now titled "best bound" to reflect more accurately the data recorded there.
 Supports incore communication (
solvelink=5
)
DEA
 The solver DEA was dropped from our distribution.
 Data Envelopment Analysis (DEA) models can now be solved in GAMS via the GatherUpdateSolveScatter (GUSS), for more information see GAMS/DEA modeling
Dicopt
 New option
solvelink
Determines the way the NLP and MIP solvers are called. By default Dicopt now calls the NLP and MIP solver in memory.
Gurobi
 New libraries 4.5.1
 Now available on AIX
 New default Method for continuous models: The new version uses a new Automatic setting as the default for solving continuous models. In previous releases, continuous models were solved with the dual simplex method by default. While the exact strategy used by the new Automatic setting may change in future releases, in this release the new approach uses the concurrent optimizer for continuous models with a linear objective (LPs), the barrier optimizer for continuous models with a quadratic objective (QPs), and the dual simplex optimizer for the root node of a MIP model. You should change the Method parameter if you would like to choose a different method.
 New Minimum Relaxation heuristic: The new version contains a new Minimum Relaxation 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 MinRelNodes parameter to control this new heuristic.
 New branch direction control: The new version allows more control over how the branchandcut tree is explored. Specifically, when a node in the MIP search is completed and two child nodes, corresponding to the down branch and the up branch are created, the new BranchDir parameter allows you to determine whether the MIP solver will explore the down branch first, the up branch first, or whether it will choose the next node based on a heuristic determination of which subtree appears more promising.
 Cut pass limit: The new version allows you to limit the of cut passes performed during root cut generation in MIP. Use the new CutPasses parameter.
GatherUpdateSolveScatter (GUSS)
 The purpose of this new GatherUpdateSolveScatter manager or short GUSS is to provide syntax at the GAMS modeling level that makes an instance of a problem and allows the modeler limited access to treat that instance as an object, and to update portions of it iteratively. Detailed documentation of this facility is part of the Solver Manual (chapter GUSS).
 Solving MCP and CNS models with GUSS is an experimental feature. GAMS checks the consistency of MCP and CNS model, these checks are currently disabled when models of these types are solved in the GUSS framework.
Jams
 Supports
logic equations
 Logic equations can contain
 binary variables
 expressions that evaluate to constants
 Boolean operators (
AND
,OR
,XOR
,NOT
,IMP(→)
,EQV(⇔)
)
 Logic equations can be used in conjunction with disjunctions
 A version of the food model demonstrates the use of this new feature
foodemp (59)
 Supports coupling and indicators through EMP's disjunction syntax
 Indicator
disjunction b e
says that constraint e has to hold if b is true  Coupling
disjunction b e else not e
says that constraint e can only hold if and only if b is true  Indicators and Couplings can be reformulated using BigM, Convex Hull or CPLEX indicator constraints
LindoGlobal
 New libraries Lindo 6.1.1.588
 New Option
checkrange
: Calculates the feasible range for every variable in each equation while all other variables are fixed to their level. If set, the value of this option defines the name of the GDX file where the results are written to.
LogMIP
 The former LogMIP solvers
lmbigm
andlmchull
are combined in the new solver solverlogmip
.  LogMIP now uses the EMP syntax and modeltype.
 The LogMIP examples in the GAMS Model Library were revised.
Minos
 Supports incore communication (
solvelink=5
)
Mosek
 New libraries 6.0 Rev 114
Msnlp/Oqnlp
 New option
solvelink
determines the way the NLP and MIP solvers are called
Oslse
 The solver Oslse was dropped. Oslse is now an alias to osl.
Path
 Supports incore communication (
solvelink=5
)
SBB
 New option
solvelink
determines the way the NLP solver is called. By default SBB now calls the NLP solver in memory.
Scip/Soplex
 Dropped support for LPs/RMIPs in Gams/SCIP interface.
 Added new solver OsiSoplex for solving LPs with SoPlex (via COINOR/OSI interface).
Snopt
 Supports incore communication (
solvelink=5
)
Xpress
 New libraries 22.01
 Improved performance through dynamic synchronization in the deterministic concurrent solver
 The stability and performance of the barrier code has been improved
 The default performance of the simplex algorithm has been improved on some models
 Improved zerohalf cuts and aggregated cuts for MIPs.
 Tuned some of the automatic strategies for cutting and branching in MIP solves.
 Threads during a MIP solve will now busywait by default instead of going to sleep when waiting for work. This is to overcome a performance issue with modern speedstepping CPUs, which might step down to a lower clock frequency when the load is less than 100%. This feature can be toggled using the SLEEPONTHREADWAIT control.
Model Libraries
GAMS Data Library
datatest (80)
: Driver for datalib tests of all sorts
GAMS EMP Library
foodemp (59)
: Food Manufacturing Problem  Blending of oilssimenlp (60)
: Simple example of ENLPnlp2mcp (61)
: nlp2mcp: Form the KKT conditions of an NLP as an MCPsimplevi3 (62)
: Another simple VI examplesimpequil2 (63)
: Simple Equilibrium with external constraintharkmonop (64)
: SPE model from Harker  monopolist and competetive versionsharkoligop(65)
: SPE model from Harker  oligopoly versionharkoligopind (66)
: SPE model from Harker  oligopoly versionharkstack (67)
: SPE model from Harker  Stackelberg version
GAMS Model Library
kqkpsdp (355)
: SDP Convexifications of the Cardinality Constraint Quadratic Knapsack Problemprodplan (356)
: A Production Planning Examplesddp (357)
: Multistage Stochastic Water Reservoir Model solved with SDDPps2_f_s (358)
: Parts Supply Problem w/ 2 Types w/o & w/ Asymmetric Informationps2_f (359)
: Parts Supply Problem w/ 2 Types w/o Asymmetric Informationps2_f_eff (360)
: Parts Supply Problem w/ Efficient Type w/o Asymmetric Informationps2_f_inf (361)
: Parts Supply Problem w/ Inefficient Type w/o Asymmetric Informationps2_s (362)
: Parts Supply Problem w/ 2 Types w/ Asymmetric Informationps3_f (363)
: Parts Supply Problem w/ 3 Types w/o Asymmetric Informationps3_s (364)
: Parts Supply Problem w/ 3 Types w/ Asymmetric Informationps3_s_gic (365)
: Parts Supply Problem w/ 3 Types w/ Global Incentive Comp. Const.ps3_s_mn (366)
: Parts Supply Problem w/ 3 Types w/ Monotonicity Constraintps3_s_scp (367)
: Parts Supply Problem w/ 3 Types w/o & w/ SCPps10_s (368)
: Parts Supply Problem w/ 10 Types & w/ Asymmetric Informationps10_s_mn (369)
: Parts Supply Problem w/ 10 Types w/ Random p(i)ccoil (370)
: Oil Pipeline Design Problem using concurrent MIP solves
GAMS Test Library
interval (506)
: Test for interval evaluationempdisj3 (507)
: Test Disjunctions using not (equivalence)emplog1 (508)
: Test disjunctions and logical conditionsmaxima (509)
: Test several maxima of Cmexemplog2 (510)
: Test simple logical conditionsqcp07 (511)
: Test correctness for QCP with poly functionqcp08 (512)
: Test correctness for QCP with power(*,2) functionempdisj4 (513)
: Test disjunctions with negative bounds on variablesfuncback (514)
: Test function backward compatibilityasynexec (515)
: Test asynchronous execution at compile and execution timescen01 (516)
: Compile time test for the scenario facilityempdisj5 (517)
: Test disjunctions using not on binary variable and constraintscen02 (518)
: Execution time test for the scenario facilityscen03 (519)
: Multidimensional scenario solver teststolib01 (520)
: Test extrinsic functions in stodclibtrilib01 (521)
: Test extrinsic functions in tricclibtrilib02 (522)
: Test extrinsic functions in tridclibtrilib03 (523)
: Test extrinsic functions in trifcliblindorg2 (524)
: Test for LindoGlobals CheckRange Optionmip04 (525)
: Exercise new XPRESS return code for unbounded MIPload5 (526)
: Tests UNDF with $loadpwplib01 (527)
: Test piecewise polynomials in pwpcclibfitlib01 (528)
: Test the use of FITPACK inside GAMSload6 (529)
: Tests dynamic error messages during $loaddcfnspowx (530)
: Test correctness of signpower intrinsicfnspown (531)
: Test correctness of signpower intrinsicnlcode5 (532)
: Test for NL code bug from Dist 23.6scensol2 (533)
: Test handling of unsorted scenario UELs in GUSS
Solver/Platform Availability Matrix
Solver/Platform availability  23.7 July 14, 2011  

x86 MS Windows 
x86_64 MS Windows 
x86 Linux 
x86_64 Linux 
Sun Sparc SOLARIS 
Sun Sparc64 SOLARIS 
Sun Intel SOLARIS 
IBM RS6000 AIX 5.3 
Mac Intel32 Darwin 
Mac x86_64 Darwin 

ALPHAECP  
BARON 9.3  
BDMLP  
COINOR  
CONOPT 3  
CPLEX 12.3  
DECIS  32bit  
DICOPT  
GUROBI 4.5  
KNITRO 7.0  
LINDOGLOBAL 6.1  6.0  6.0  
LGO  
MILES  
MINOS  
MOSEK 6  
MPSGE  
MSNLP  32bit  
NLPEC  
OQNLP  32bit  32bit  
PATH  
SBB  
SCIP  
SNOPT  
XA  32bit  
XPRESS 22.01 
23.7.2 Maintenance release (July 22, 2011)
 Alphaecp: Alphaecp v2.04.02
 Conopt3: Fixed a system error 2003
 Dicopt: Fixed a bug for accidentally determined crossovers
 Inclib:
put_reorderit.gms
update from Bruce McCarl  Cbc: Disabled preprocessing in case of semicont/semiint variables, it seems buggy
 Cplex: Does no longer require finite bounds on semicont variables
 Gamsinst: Fix problem with blanks in sysdir and IDE error when not having a license
23.7.3 Maintenance release (August 23, 2011)
 alphaecp: fix problem with accumulating solving times of subsolvers which might lead to an earlier stop
 apifiles:
 get rid of warnings in cc interface,
 fix problem with compilation of fat binaries on Darwin in cc interface
 fix error in
gdxSymbolGetDomain
in Python interface  fix errors with constant definitions in C# interface
 add constant definitions and additional constructor (which gets a handle) in Java interfaces
 conopt3: Version 3.15A maintenance release
 cplex:
 fix for interrupt (CtrlC) when running with
solvelink=5
 fix memory leak
 fix for interrupt (CtrlC) when running with
 dicopt:
 fix reporting of
objest
in case of a crossover  fix problem with accumulating solving times of subsolvers which might lead to an earlier stop
 fix reporting of
 gamscmex: fix bug related to the internal organization of nonlinear code, affects twoargument functions in rare cases
 gamside:
 close chart files too when changing system directory
 GAMS project file name independent of casing
 gdxdump: suppress on/off empty when writing single symbol
 gdxmrw: was missing on 64bit Linux
 grid: fix potential problem with scaling
 kestrel: added Xpress support
 minos fix: for interrupt (CtrlC)
 sbb: fix problem with accumulating solving times of subsolvers which might lead to an earlier stop
 snopt fix: for interrupt (CtrlC)
 xpress: update global search to use callbacks called during root node processing and improve scheme to stop XPRESS when gap is achieved or on user interrupt