24.6 Distribution

# 24.6.1 Major release (January 18, 2016)

## 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, Etienne Ayotte-Sauvé, Michael Ferris, Per Ivar Helgesen, Erwin Kalvelagen, Martha Loewe, Geoff Moore, and Renger van Nieuwkoop.

## Platforms

• The minimal supported Mac OS X version has been increased to 10.9 (Mavericks). COIN-OR solvers, Gurobi, SCIP, and SoPlex now require a system with at least Mac OS X 10.9. The GAMS base system, tools, and other solvers are still working on Mac OS X 10.7 and 10.8, but may stop working in a future release without extra announcement.
• The installer for Wine on Linux has been dropped.

## GAMS System

### GAMS

• Increased controlled set nesting limit from 120 to 300.
• New option SHUFFLE.
• New option for command line parameter MultiPass:
• 0: standard compilation
• 1: check-out compilation
• 2: as 1 and in addition skip $call and ignore errors because of missing files with $include (NEW)
• Allow to load variable and equation attributes into a parameter at compile time, e.g. \$LOAD par=var.L (par being a parameter and var a variable)
• Solving in parallel threads (beta feature)

A new variant for the SolveLink option and model attribute has been added. If SolveLink is set to 6 (compile time constant %solveLink.Async Threads%), GAMS does not wait for the solver to return and does not collect the result when a solve statement is executed. Instead, the model is generated and then passed to the solver in a separate thread while GAMS continues the execution. This way, multiple models can be solved in parallel and the results can be collected later.

This is similar to the Grid Facility (SolveLink = %solveLink.Async Grid%=3) with the difference, that the solver does not operate in its own process space but in a separate thread, which allows efficient in-memory communication between GAMS and the solver (like it is done with SolveLink = %solveLink.Load Library%=5). After the solve statement, one can store a handle of the model instance (using the model attribute mymodel.handle) and use the same functions that are used for the Grid Facility to collect the solution and deal with the model instance: HandleCollect(handle), HandleStatus(handle), and HandleDelete(handle).

The new function ReadyCollect(handleParameter [, maxWait]) can be used to wait until a model is ready to be collected. It can be used for both SolveLink = %solveLink.Async Threads% and SolveLink = %solveLink.Async Grid%. The arguments and return codes are:

• Arguments
• handleParameter: parameter holding handles of model instances to wait for
• maxWait: maximum time to wait (+INF if omitted)
• Return Codes
• 0: (one of) the requested job(s) is ready
• 1: no active job to wait for
• 2: no handle provided
• 3: invalid handle
• 4: user specified time-out when using a SolveLink = %solveLink.Async Threads% handle
• 5: user specified time-out when using a SolveLink = %solveLink.Async Grid% handle
• 8: unknown error (should not happen)

The new option threadsAsync (available on the command line and with the option statement) sets the maximum number of threads that should be used for the asynchronous solves. If a negative number is set, this specifies how many of the available processors on the host machine should not be used. The default setting is -1.

Currently, the following solvers can be used with SolveLink = %solveLink.Async Threads%:

• CONOPT
• CPLEXD
• GUROBI
• MOSEK
• OSICPLEX
• OSIGUROBI
• SCIP

If another solver is selected, SolveLink = %solveLink.Async Grid% will be used instead (which is noted in the log).

An example of how this new feature can be used, can be seen in the GAMS Model Library model tgridmix.

### Stochastic Programming with EMP

• Fixed a bug which caused wrong expected values for parametric distribution using the RandVar keyword.

## Solvers

### ANTIGONE

• New libraries.

### BARON

• The handling of branching priorities in a GAMS/BARON options file has changed. Priorities should now always be given in the GAMS convention.

### Convert

• GAMS branching priorities are now converted to BARON branching priorities when writing a BARON input file.

### CPLEX

• New libraries 12.6.3.
• Cplex and CplexD now report the deterministic time spend (in ticks not in seconds) in the model attribute ETAlg.
• IBM's Cplex cloud offering "DOcloud" can be accessed via the Kestrel solver.

### DICOPT

• New option usexinit instructs DICOPT to start the NLP sub-solves from the user supplied input point.

### GUROBI

• New libraries 6.5.
• New option PreMIQCPForm that determines the format of the presolved version of an MIQCP model.
• New option WorkerPort specifies a non-default port number for the distributed worker machines.
• New option VarHint. The variable hints communicated through level and tryint will affect the heuristics that Gurobi uses to find feasible solutions, and the branching decisions that Gurobi makes to explore the MIP search tree.
• GAMS/Gurobi supports solving models in the Gurobi Instant Cloud.
• Fixed a problem with option IIS for models with SOS variables.

### IPOPT

• MKL Pardiso is now available as linear solver on Mac OS X, too.

### PATH

• Minor fix for zero tolerance in the basis reset routine of the Lemke method.

### Sulum

• Sulum will be dropped from the distribution with GAMS 24.8.

### XPRESS

• Updated Optimizer libraries for Windows and Linux: 28.01.05 → 28.01.10.
• Several minor bug fixes that affect correctness and performance in some corner cases.

## Tools

### GAMS IDE

• Sorting by symbol name is no longer case sensitive.
• GDX viewer can now show numbers with full precision.
• The option editor no longer shows the dot options.
• Fixed a bug where the cursor was not shown after double-clicking on a red line.

### GDX2SQLITE

• New version 0.7.
• Added option varchar to export character columns as VARCHAR(255) instead of TEXT.
• Better names of columns when option small is used.

### GDXMERGE

• Protect against very large symbols causing memory errors.
• Added option EXCLUDE to exclude symbols from being merged.

### GDXXRW

• An empty range is no longer an error.

### SQL2GMS

• In the old version double quotes were removed when reading a command file. In this version we keep double quotes to be able to escape SQL names (table names, column names). E.g. we now can handle non-standard names by double quoting them in a query. Depending on the database you can do:

q=select "Some COLUMN" from "This Table"

Note that some databases (such as SQL Server) use [ ] for this goal.

In the special case where you write:

q="select c from t"

the surrounding double quotes are removed before passing the query on to the database.

### MODEL2TEX

• If an identifier is changed using the specifications in the JSON style file, underscores are no longer changed from "_" to "\_". This makes it possible to use subscripts when replacing an identifier.

## Object Oriented APIs

### Java

• Fixed a bug in GAMSModelInstance.copyModelInstance method when duplicating scratch directory.

### Python

• New example transport8a.py.

## Model Libraries

### GAMS EMP Library

• nbcontindep: use sampling for continuous distributions if another solver than Lindo is selected
• nbcontjoint: use sampling for continuous distributions if another solver than Lindo is selected
• nbsimple: use discrete distribution

### GAMS Test Library

Solver/Platform availability - 24.6
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 15.9
BDMLP
BONMIN 1.8
CBC 2.9
CONOPT 3
COUENNE 0.5
CPLEX 12.6
DECIS
DICOPT
GLOMIQO 2.3
GUROBI 6.5
GUSS
IPOPT 3.12
KESTREL
KNITRO 10.0
LGO
LINDO 9.0
LINDOGLOBAL 9.0
LOCALSOLVER 5.5
MILES
MINOS
MOSEK 7
MSNLP
NLPEC
OQNLP 32bit
PATH
SBB
SCIP 3.2
SNOPT
SOPLEX 2.2
SULUM 4.3
XA
XPRESS 28.01

GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170