23.7 Distribution

23.7.1 Major release (July 14, 2011)

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)] (http://gcc.gnu.org/) 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 system
  • trilib01: Uses trigonometric function from a library written in C, comes with C source code
  • trilib02: Uses trigonometric function from a library written in Delphi, comes with Delphi source code
  • trilib03: Uses trigonometric function from a library written in Fortran, comes with Fortran source code
  • pwplib01: Uses a library for piecewise polynomial functions which comes with the GAMS system
  • fitlib01: 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 non-linear 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] (http://www.mpsge.org/inclib/tools.htm)). 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 solutions
    • NLPcall 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

Coin-OR

  • 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 semi-definite QPs). In fact, Cplex 12.3 can find solutions that satisfy Karush-Kuhn-Tucker (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 first-order 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 in-core communication (solvelink=5)

DEA

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 branch-and-cut 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 sub-tree 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.

Gather-Update-Solve-Scatter (GUSS)

  • The purpose of this new Gather-Update-Solve-Scatter 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(&rarr;),EQV(&hArr;))
    • 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 and lmchull are combined in the new solver solver logmip.
  • LogMIP now uses the EMP syntax and modeltype.
  • The LogMIP examples in the GAMS Model Library were revised.

Minos

  • Supports in-core 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 in-core 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 COIN-OR/OSI interface).

Snopt

  • Supports in-core 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 zero-half 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 busy-wait by default instead of going to sleep when waiting for work. This is to overcome a performance issue with modern speed-stepping 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

GAMS EMP Library

GAMS Model Library

  • kqkpsdp (355): SDP Convexifications of the Cardinality Constraint Quadratic Knapsack Problem
  • prodplan (356): A Production Planning Example
  • sddp (357): Multi-stage Stochastic Water Reservoir Model solved with SDDP
  • ps2_f_s (358): Parts Supply Problem w/ 2 Types w/o & w/ Asymmetric Information
  • ps2_f (359): Parts Supply Problem w/ 2 Types w/o Asymmetric Information
  • ps2_f_eff (360): Parts Supply Problem w/ Efficient Type w/o Asymmetric Information
  • ps2_f_inf (361): Parts Supply Problem w/ Inefficient Type w/o Asymmetric Information
  • ps2_s (362): Parts Supply Problem w/ 2 Types w/ Asymmetric Information
  • ps3_f (363): Parts Supply Problem w/ 3 Types w/o Asymmetric Information
  • ps3_s (364): Parts Supply Problem w/ 3 Types w/ Asymmetric Information
  • ps3_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 Constraint
  • ps3_s_scp (367): Parts Supply Problem w/ 3 Types w/o & w/ SCP
  • ps10_s (368): Parts Supply Problem w/ 10 Types & w/ Asymmetric Information
  • ps10_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

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 RS-6000
AIX 5.3
Mac Intel32
Darwin
Mac x86_64
Darwin
ALPHAECP X X X X X X X X X X
BARON 9.3 X X X X            
BDMLP X X X X X X X X X X
COIN-OR X X X X     X   X X
CONOPT 3 X X X X X X X X X X
CPLEX 12.3 X X X X X X X X X X
DECIS X X X X X 32bit        
DICOPT X X X X X X X X X X
GUROBI 4.5 X X X X       X   X
KNITRO 7.0 X X X X     X   X X
LINDOGLOBAL 6.1 X X X X 6.0 6.0 X   X X
LGO X X X X X X X   X X
MILES X X X X X X X X X X
MINOS X X X X X X X X X X
MOSEK 6 X X X X     X   X X
MPSGE X X X X X X X X X X
MSNLP X X X X X 32bit     X X
NLPEC X X X X X X X X X X
OQNLP X 32bit X 32bit            
PATH X X X X X X X X X X
SBB X X X X X X X X X X
SCIP X X X X     X   X X
SNOPT X X X X X X X X X X
XA X 32bit X X            
XPRESS 22.01 X X X X X X X X    

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 (Ctrl-C) when running with solvelink=5
    • fix memory leak
  • 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
  • gamscmex: fix bug related to the internal organization of non-linear code, affects two-argument 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 (Ctrl-C)
  • sbb: fix problem with accumulating solving times of subsolvers which might lead to an earlier stop
  • snopt fix: for interrupt (Ctrl-C)
  • 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