23.6 Distribution

# 23.6.2 Major release (December 13, 2010)

<

## 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, Nico Keyaerts, Leon Lasdon, Xiang Li, Timo Lohmann, Sebastian Ritter, Yannick Rombauts, Tom Rutherford, Uwe Schneider, Stefan Vigerske, Achim Wechsung, and Gyeongbeom Yi.

## GAMS System

### GAMS

• Added the function RandBinomial(n,p) which generates random numbers from the Binomial distribution where n is the number of trials and p the probability of success for each trial.
• Added the gams date and release functions to \$eval and [..] constant evaluations: jdate, jtime, gyear, gmonth, gday, gdow, gleap, ghour, gminute, gsecond, gmillisec, jstart, jnow, gamsversion, gamsrelease.
• Modified operator precedence binding of IMP (→), EQV (⇔), OR and XOR. These operator used to have the same precedence binding, so with the usual left to right evaluation an expression like a → b OR c used to be equivalent to (a → b) OR c. IMP and EQV have now a lower precedence binding, so the expression a → b OR c is now equivalent to a → (b OR c).
• There is no longer a practical limit for the number of non-linear instructions for a single equation.
• New interpretation of value default for command line parameters gdx and rf: default is interpreted as the input file name, this means for example, that gams trnsport gdx=default will write the file trnsport.gdx. Along the same lines, gams trnsport rf=default will write the reference file trnsport.ref.
• New command line parameter Threads: Controls the number of threads to be used by a solver. It can also be set as GAMS option or model attribute. The model attribute has the highest priority, the command line parameter the lowest. Non-positive values are interpreted as the number of cores to leave free so setting threads to 0 uses all available cores while setting threads to -1 leaves one core free for other tasks.

### APIs

• Determine platform dependent library name automatically, no requirement for compiler flags anymore
• Delphi API files also support Delphi 2010
• Python API files comprehensively improved
• More Fortran examples

### Utilities

#### Chk4Upd

The new tool chk4upd checks if there is a newer version of GAMS available than the one you are running. It checks for the most recent version available as well as for the newest version you can run with your license in case your maintenance and support is expired. By default it reads gamslice.txt located next to it. Alternatively, you can specify another license on the command line. In addition to the command line tool you will find an integration in the GAMS IDE at Help → Check for GAMS Update.

#### Gamside

• Integration of 'Check for GAMS Update' in the Help Menu
• The 'Find in Files' option now allows for one or more sub-directories to be excluded from the search
• The selection to use a different GAMS system has been changed. We no longer specify the gams.exe executable but define the alternate GAMS system directory instead.

#### GDXDiff

The function to test if two values are different when Eps/RelEps has been specified was changed. The documentation describes the new implementation.

#### GDXMRW

GDXMRW is a collection of utilities that make it easier and more reliable to share data between GAMS and Matlab and that allow the Matlab user to call GAMS using something similar to a subroutine interface. Formerly contributed software, these utilities were integrated into GAMS Distribution 23.4 and have been updated and improved since then.

#### XLSDump

This new program will write all worksheets of an Excel workbook to a gdx file. Unlike GDXXRW, the program does not require that Excel is installed. Windows platforms only.

## Solvers

### Baron

• Option ExtNLPsolver allows to specify an option file for the GAMS NLP solver chosen (e.g. ExtNLPSolver conopt.1)

### Coin-OR

• New libraries
• BONMIN 1.4
• CSDP 6.1.1
• CSDP now also available on Solaris x64 on Intel
• The old names COINCPLEX, COINGUROBI, COINMOSEK, and COINXPRESS are not available anymore. Please use the new names OSICPLEX, OSIGUROBI, OSIMOSEK, and OSIXPRESS introduced with distribution 23.4.

### Conopt

• Supports in-core communication (solvelink=5)
• Dropped support of Conopt 2 (old version of Conopt)

### Cplex

• New libraries 12.2.0.1

### EMP

• The emp information file now supports block-wise definition
• A flip operator (-) was introduced, see model flipper (50)

### Gurobi

• New libraries 4.0
• Quadratic programming: The Gurobi Optimizer now supports models with quadratic objective functions. The new version includes primal simplex, dual simplex, and parallel barrier optimizers for continuous QP models, and a parallel branch-and-cut solver for Mixed Integer Quadratic Programming (MIQP) models.
• Concurrent optimizer: The Gurobi Optimizer now allows you to run multiple algorithms simultaneously when solving a linear continuous model on a multi-core machine. The optimizer returns when the first algorithm solves the model. We include both a standard concurrent optimizer and a deterministic concurrent optimizer. The latter returns the exact same solution every time you run it, while the former can sometimes return different optimal solutions from one run to the next. The former can sometimes be significantly faster.
• MIP performance: The MIP solver is faster in release 4.0. These improvements do not require any parameter changes.
• LP performance: The simplex and barrier solvers are slightly faster in release 4.0. We have also improved the numerical stability of the primal simplex solver and the barrier crossover algorithm.
• Delayed MIP strategy change: The Gurobi Optimizer now gives you the option to change a few MIP parameters in the middle of the optimization in order to dynamically shift the search strategy. Specifically, two new parameters, ImproveStartGap and ImproveStartTime, allow you to specify when the algorithm should modify the values of a few parameters that control the intensity of the MIP heuristics. By setting one or both of these parameters to non-default values, you can cause the MIP solver to switch from its standard parameter settings, where it tries to strike a balance between finding better solutions and proving that the current solution is optimal, to a set of parameter values that focus entirely on finding better solutions.
• New approach to choosing the LP algorithm: The functions previously controlled by parameters LPMethod and RootMethod are now controlled by parameters Method and NodeMethod. Use Method to choose the algorithm for solving a continuous model, or for solving the root relaxation in a MIP model. Use NodeMethod to choose the algorithm for solving node relaxations in a MIP model.
• Deprecated options: LPMethod and RootMethod
• New options
• Method: Controls the algorithm used to solve continuous linear and quadratic models. This parameter also selects the algorithm used to solve the root node of a MIP model.
• NodeMethod: Chooses the algorithm used to solve node relaxations in a MIP model.
• ModKCuts: Controls the generation of mod-k cuts.
• ImproveStartGap: Allows you to specify the optimality gap at which the MIP solver resets a few MIP heuristics parameters in order to shift the attention of the MIP solver to finding the best possible feasible solution.
• ImproveStartTime: Allows you to specify the elapsed time at which the MIP solver resets a few MIP heuristics parameters in order to shift the attention of the MIP solver to finding the best possible feasible solution.
• PreMIQPMethod: Chooses the presolve transformation performed on MIQP models.
• PSDTol: Sets a limit on the amount of diagonal perturbation that the optimizer is allowed to do on the Q matrix for a quadratic model. If a larger perturbation is required, the optimizer will terminate with a message that Q is not positive semi-definite.

### Knitro

• New libraries 7.0.0
• Supports the MultiStart feature in Knitro
• Supports in-core communication (solvelink=5)
• Supported on 64bit Mac and 64bit Solaris on Intel
• Dropped support on Solaris Sparc and Sparc64

### Lgo

• supports in-core communication (solvelink=5)
• support of external equations

### Mosek

• New libraries 6.0.96
• Supports in-core communication (solvelink=5)
• Dropped support on Solaris Sparc and Sparc64

### Scip

• New libraries 2.0 (more details)
• The GAMS/SCIP interface now also supports semicontinuous and semiinteger variables
• GAMS/SCIP now uses SoPlex 1.5.0 as LP solver

### Xa

• Dropped support on Solaris Sparc and Sparc64

### Xpress

• New libraries 21.01

## Model Libraries

### GAMS Data Library

• GDXXRWExample15 (76): Write spreadsheet using a filter
• GDXXRWExample16 (77): Write spreadsheet using text and hyperlinks
• tompivot (78): Little GAMS Program from Tom Rutherford that Illustrates Report Generation with Excel
• readdata (79): Read Data from .inc, .xls, .mdb and .csv file

### GAMS EMP Library

• flipper (50): Test of flipping equations
• scarfemp-dem (51): Scarf's Activity Analysis Example
• scarfemp-altdem (52): Scarf's Activity Analysis Example - non-closed form demand function
• scarfemp-primal (53): Scarf's Activity Analysis Example
• scarfemp-dual (54): Scarf's Activity Analysis Example
• scarfexpend (55): Scarf's Activity Analysis Example
• pies (56): PIES Energy Equilibrium
• exc2x2emp (57): pure exchange model (ie no production)
• exc2x2emp-dem (58): pure exchange model (ie no production)

### GAMS Model Library

• relief (353): Relief Mission
• spatequ (354): Spatial Equilibrium

### GAMS Test Library

• emp09 (492): Test initial levels for equilibrium EMP models
• xerr1 (493): External Function Errors: RHS wrong
• xerr2 (494): External Function Errors: Aij wrong
• cerr1 (495): Cone Equation Errors
• merr1 (496): Matrix Errors
• mip02 (497): Check on MIP solution value
• mip03 (498): Test for zero gap when optcr and optca set to zero
• emp10 (499): Test of EMP equilibrium models and flip operator
• emp11 (500): Test EMP formulations of scarfmcp
• empdisj2 (501): Test disjunctions involving the objective
• gdxxrw6 (502): Test for dset reading problem
• qcp06 (503): Nonlinear model cannot be solved as QCP
• gdxdump1 (504): Use GdxDump NoData on Transportation Problem
• lindorng (505): Test for LindoGlobal's CheckRange Option

## Solver/Platform Availability Matrix

Solver/Platform availability - 23.6    December 13, 2010
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 9.0
BDMLP
COIN-OR
CONOPT 3
CPLEX 12.2
DECIS 32bit
DICOPT
GUROBI 4.0
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 21.01

# 23.6.3 Maintenance release (February 15, 2011)

• Cmex: Fix for variable level projection
• Bonmin: Several fixes for outer-approximation based algorithms
• Cplex: New version 12.2.0.2
• Gurobi: New version 4.0.1
• Knitro: Documentation update
• Scip: New version 2.0.1
• Xpress: Fix for crash on 64 bit Solaris
• McCarl Guide: Updates for 23.6
• Gdxxrw: Includes system error message when we cannot start Excel
• Gdxmrw: Minor bugfixes

# 23.6.4 Maintenance release (April 01, 2011)

• CMEX: Maximal nested includes were raised to 40
• Mosek: New Version6 Rev 105
• Lindoglobal: New Version 6.1.1.553
• Conopt: New Version 3.14W
• Xpress: Memory leak fix
• Coin: Solver fixes