24.4 Distribution

# 24.4.1 Major release (December 20, 2014)

## 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 Erwin Kalvelagen, Jeff Linderoth, and Erkka Rinne.

## GAMS System

### GAMS

• Fixed a bug causing a potential crash when solving an EMP model having an open file handle without an external file name at the same time.
• The execMode setting is not ignored by put_utility anymore.
• Added gbin/md5sum.exe to Windows distribution. This utility allows users to verify the file integrity of newly downloaded GAMS installation files.
• The gbin_new directory will be removed with the next distribution.

### Installer

• Windows installer removes the GAMS entry in the current user hive of the registry, if GAMS is installed for all users. Previously, the hive for the current user remained unchanged in this situation.

### Extrinsic Function libraries

• The new extrinsic function library parcclib was added to the system. This library demonstrates how to access the GAMS parameter file and use it's information through the GAMS Option Object. Further information can be found in the GAMS User's Guide, Appendix J.
• Allow up to 20 arguments (used to be 10).
• Support for extrinsic function libraries that do not provide gradient and/or Hessian values. GAMS uses finite differences (same method as for .gradn and .hessn) to approximate the derivatives, even inside a solver. The example function library trilib now implements function Sine without any derivatives and leaves their calculation to GAMS.
• New GAMS options have been introduced to parameterize the numerical derivative calculations. While these are most important for extrinsic functions, they also apply to the .gradn/.hessn calculations of intrinsic functions.
• FDDelta: step size in the numeric gradient and Hessian calculation. For single argument functions, GAMS evaluates the function at f(x-d) and f(x+d) for the numerical gradient. If function values are used for the numerical Hessian, GAMS evaluates at f(x-2d), f(x), and f(x+2d). For multi argument functions, the same is done for the components of the input argument vector. The default for FDDelta is 1e-5. This option can be set from the command line, in an option statement, and as a model attribute.
• Note: In previous releases it was possible to set the step size for .gradn/.hessn using the option Real1. This does not work anymore.
• FDOpt: The option value packs two option in the different digits: ij. The i digit indicates if scaling of the step size (FDDelta) by the value of the input argument should be turned off. If i=0 (scaling on) the following step size is used: max(1,|x|)*FDDelta. The j digit is mostly for testing, but has one setting that might be relevant when the extrinsic function provides gradient but no Hessian values. The numerical derivatives routine in this case uses the gradient calculation from the extrinsic function to approximate the Hessian. If the gradient is expensive to calculate compared to a function evaluation, it could be beneficial to use multiple function values to approximate the Hessian. In this case set the j digit to 1. Here are all possible values for this option:
• 0: All derivatives analytically if available, for numerical Hessian use gradient values, scale delta
• 1: All derivatives analytically if available, for numerical Hessian use function values, scale delta
• 2: Gradient analytically, force Hessian numerically using gradient values, scale delta (testing only)
• 3: Gradient analytically, force Hessian numerically using function values, scale delta (testing only)
• 4: Force gradient and Hessian numerically, scale delta (testing only)
• 10: Same as 0, but no scale of delta
• 11: Same as 1, but no scale of delta
• 12: Same as 2, but no scale of delta (testing only)
• 13: Same as 3, but no scale of delta (testing only)
• 14: Same as 4, but no scale of delta (testing only)
• Note: In previous releases it was possible to deactivate the scaling for .gradn/.hessn using the option Integer1. This does not work anymore.
• Renamed and better documented the EXTRFUNC_ERROR enum to EXTRFUNC_EVALERROR in the C header extrfunc.h. The old values are deprecated and will be removed in a future release.

### Documentation

• The manuals of all solver and several tools are now available in HTML format. A PDF that contains all solver manuals is still available (docs/solvers/allsolvers.pdf).

## Solvers

### AlphaECP

• Alpha-ECP v2.10.06.
• Added support for solver trace file, i.e. new option solvetrace.

### ANTIGONE, GloMIQO

• Now also available for Mac OS X.

### BARON

• New libraries 14.4.0.
• Added reliability branching for integer variables.
• Bug fixes in CBC interface and IIS module.
• Improved performance of problem reading and reformulation.
• Updated Ipopt to version 3.11.9.

### BENCH

• Removed option cumulative. This option makes no sense anymore since all solvers are spawned asynchronously and all get the same limits.

### CBC

• Fixed a race-condition in log output when using multiple threads.
• New libraries.

### Couenne

• New libraries.

### CONOPT

• New libraries 3.16D.
• Tolerance adjustments that make sense if NaN appears in intermediate calculations.

### CPLEX

• Don't rerun primal simplex in cases where there is already an infeasibility status.
• New libraries 12.6.1.
• New parameters:
• qtolin controls the linearization of the quadratic terms in the objective function of a QP or MIQP model
• localimplied controls the generation of locally valid implied bound cuts

### DICOPT

• Added support for =N= rows.

### GUROBI

• New libraries 6.0.0.
• Fixed problem in tuning. Previous version did not write out link options in the tuned option file.
• Gurobi 6.0 supports a distributed MIP algorithm (option DistributedMIPJobs). This requires the Gurobi Compute Server to be licensed.
• Explicit lazy constraint: Users can use the "dot" option .lazy to mark constraints as lazy. Possible values are 0, 1, 2, and 3. See option .lazy for details.
• Option ConcurrentMIPJobs has been renamed to ConcurrentJobs. The distributed concurrent optimizer now also handles LP models.
• Option ScaleFlag allows now value 2 which enables aggressive scaling.
• New parameters:
• DistributedMIPJobs controls the number of workers of the distributed MIP algorithm
• .lazy marks constraints as lazy constraints
• LazyConstraints controls the use of lazy constraints

### Knitro

• New libraries 9.1.0.
• Overall speed and robustness improvements on NLP and MINLP models.
• New algorithm choice introduced: active-set SQP.
• Optional barrier solution refinement procedure: option bar_refinement = NO/yes.
• Deterministic parallel multi-start: option ms_deterministic = no/YES.
• Dropped Knitro for Solaris on Intel CPUs (as announced).

### LocalSolver

• Added the hybrid mathematical programming solver LocalSolver 5.0 (Beta) from Innovation 24 to the GAMS solvers portfolio.
• LocalSolver can be applied to large-scale, mixed-variable, non-convex optimization problems (GAMS model types MIP, (MI)QCP, (MI/D)NLP). It combines local search techniques, constraint propagation and inference techniques, linear and mixed-integer programming techniques, and nonlinear programming techniques in a unique hybrid neighborhood search approach to find high-quality feasible solutions. Hence, LocalSolver offers an alternative for problems where conventional branch-and-bound and/or outer-approximation based solution methods do not provide satisfactory results.
• It is suggested to set the GAMS options for iteration or timelimit (iterlim, reslim) appropriately to limit the effort that LocalSolver spends on the problem.

### Lindo/LindoGlobal

• We will drop Lindo/LindoGlobal libraries for Intel Solaris with the next major release (24.5).
• New libraries 9.0.142 for Linux, Mac OS X, and Windows:
• Support for semi-continuous variables.
• Simplex LP algorithm implementation has been improved for speed and robustness. The performance improvements compared to previous version are 90% for primal simplex and 45% for the dual simplex.
• Knapsack related cuts improvements. Significantly faster solve times on models with certain knapsack-like constraints.
• Improved default node selection rules improves performance on most MIPs.
• New branching variable rule options: maximum coefficients and neighborhood branching. Can reduce number of branches on certain MIPs.
• Perspective reformulation capability gives improved performance on quadratic portfolio models with semi-continuous variables, e.g. min-buy quantities.
• Improved default settings for NLPs gives 5% average speed improvement.
• New preprocessing for LP/MIP significantly reduces coefficient density of certain dense matrices.

### Mosek

• New libraries 7.1.0.12.
• Improved performance of the mixed-integer conic optimizer.

### MSNLP/OQNLP

• These solvers now use Conopt as their default solver if Conopt is licensed. Otherwise they will use lsgrg as before.

### OS

• We plan to drop the OS solver with GAMS 24.5. The capability of convert to write OSiL files will be kept.

### SCIP

• New libraries 3.1 #020d055.

### SoPlex

• New libraries 2.0 #d67b17b.

### Sulum

• New libraries 4.0.665.
• Improvements in presolve, leading to more reductions.
• General improvements in obtaining a feasible solution faster, especially with focus on the root node to obtain a good bound. Rewrite and improvements of feasibility pump, objective diving.
• The simplex algorithm is now exchanging more information with the branch and cut method. Improvement of SINS heuristic (finding a better basis after the node solve).
• Added a MIP root restart feature based on reductions.
• Cutting planes generation was both improved and extended.
• Changed default for option mipmaxrestarts from 5 to 1.

### XPRESS

• New libraries for XPRESS v7.8: Optimizer 27.01.02.
• Automatic solution refinement for LP and MIP models.
• Improved deterministic concurrent LP.

## Tools

### GAMSIDE

• Added option to suppress trailing zeroes in GDX viewer.
• Improved ability to open files from the Windows Shell.
• Cutoff for number of lines to be syntax colored or not.
• When saving a file, the Undo buffer is no longer cleared.

### GDXDUMP

• Text quoted with a single quote did not have a separator when writing SymbolAsSet.
• Added option SymbolAsSetDI.
• Avoid string overflow when quoting text.
• Added more types for sets and equations.

### GDXXRW

• Added option values=All which is the new default when CDim=0 or RDim=0.

### GDXVIEWER

• Added ACCDB format as an output option for MSAccess.

### GDX2SQLite, Scenred, Scenred2

• These tools are now also available for AIX.
• Moved documentation of Scenred and Scenred2 from docs/solvers to docs/tools.

### IDECMDS

• Allow a pattern to be specified to close files.

### MPS2GMS

• The mps2gms tool now produces proper generic GAMS source for models with quadratic terms.
• Bug fix for MPS files written by Cplex that contain SOS constraints.

### MPSGE

• Moved manual to ''docs/tools''.

## Expert Level APIs

• There are new API files for the "Indexed GDX" (IDX) library in <GAMS Dir>\apifiles\<Language>\api:
• The indexed GDX library can be used to read and write indexed GDX files.
• Each symbol in such a GDX file must be a parameter.
• Each parameter must have a domain consisting of a UELs which forms an integer sequence starting at 1.
• This way the data is provided in a format convenient to store in arrays in the target language.
• In GAMS such a file can be read using \$LoadIDX during compilation.
• In GAMS such a file can be written using execute_unloadIDX during execution.
• The new example <GAMS Dir>\apifiles\CSharp\xp_CalcInverseIDX makes use of this API, this example is also used in the APILib model CSCalcInverse.

### Python

• Fixed a bug regarding lists of strings in Python 3 (e.g. gdxDataWriteStr()).

## Object Oriented APIs

• We changed the handling of GAMS Aliases in the object oriented APIs:
• If we ask for the number of GAMSSymbols in a GAMSDatabase, the Aliases will be excluded.
• If we iterate over all GAMSSymbols in a GAMSDatabase, Aliases will be skipped.
• If we ask explicitly for an Alias in a GAMSDatabase (GAMSDatabase.GetSet("a") with a being an Alias) we will get a reference to the GAMSSet referenced by the Alias, not the Alias itself.
• Note: Aliases can appear in a GAMSDatabase only, if it was initialized by a GDX file containing an Alias.
• The new examples Alias demonstrate this new behavior for the different OO API languages.

### Python

• Fixed a bug in GamsDatabase.merge_record that prevented the function from creating a record if none was found.

## Model Libraries

### GAMS API Library

This is a new collection of GAMS models. It can be accessed in the GAMS IDE at Model Libraries -> GAMS API Library or through the command line tool apilib. The models in this collection can be used as scripts to compile and execute the example applications using the GAMS object oriented APIs as well as the expert level APIs, which can be found in <GAMS Dir>/apifiles.

### GAMS Test Library

Solver/Platform availability - 24.4
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 14.4
BDMLP
BONMIN 1.7
CBC 2.8
CONOPT 3
COUENNE 0.4
CPLEX 12.6
DECIS
DICOPT
GLOMIQO 2.3
GUROBI 6.0
GUSS
IPOPT 3.11
KNITRO 9.1
LGO
LINDO 9.0 8.0
LINDOGLOBAL 9.0 8.0
LOCALSOLVER 5.0
MILES
MINOS
MOSEK 7
MPSGE
MSNLP
NLPEC
OQNLP 32bit
PATH
SBB
SCIP 3.1
SNOPT
SOPLEX 2.0
SULUM 4.0
XA
XPRESS 27.01

# 24.4.2 Minor release (March 15, 2015)

## 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 Sergey Kuznetsov, Ricardo M. De Lima, and Corey Noone.

## GAMS System

### GAMS

• Fixed potential problem when running on Windows in a workDir containing a %.
• Fixed problem with EMP solves with solvelink=Solvelink.AsyncGrid%.
• Fixed problem with GUSS/Grid when using execute_loadhandle instead of handlecollect.

## Solvers

### ANTIGONE

• New libraries.

### CONOPT

• Introduced new boolean option PreTri2Log that send message from Conopt's pre-triangular analyzer that go to the listing file also to the GAMS log. The option requires the generation of the model dictionary, so mymodel.DictFile=1; has to be added before the Solve statement.

### CONVERT

• Convert and ConvertD: Fix for writing scalar MCP models that contained fixed variables removed by holdfixed=1.
• ConvertD: Add support for external equations in scalar GAMS models.
• ConvertD: Propagate EPS to scalar GAMS models.

### Couenne

• New libraries.

### Examiner2

• Support added for custom trace files.

### GUROBI

• New libraries 6.0.2.

### Lindo/LindoGlobal

• New libraries 9.0.157 for Linux, Mac OS X, and Windows.

### LocalSolver

• New libraries 5.0 (20150119).

### Mosek

• New libraries 7.1.0.24.

### SCIP

• New libraries 3.1 #67d713c.
• Fixed overwriting of solvetrace file by final NLP resolving.

### SoPlex

• New libraries 2.0 #8381aa4.

## Tools

### GDXMRW

• gdxInfo: fix output of domains in symbol declaration
• gdxInfo: handle aliases properly

## Object Oriented APIs

• Fixed overwriting of the default value for the integer1 option when running with GAMSModelInstance, which lead to unexpected solver behavior.
• Fixed potential problem with GAMSModelInstance used with BARON.

### .NET

• New property GAMSSymbol.DomainsAsStrings: Domains of Symbol, each element is a string, if the domain is an alias in GAMS, this call will return the name of the Alias, not the name of the aliased Set.

### Java

• Changed naming scheme of GDX output scratch file to sequence number.

### Python

• Fixed a bug in the constructor of all subclasses of _GamsSymbol that occurred when the explanatory text was omitted.
• New property _GamsSymbol.domains_as_strings: Domains of Symbol, each element is a string. If the domain is an alias in GAMS, this call will return the name of the alias, not the name of the aliased set.

## Expert Level APIs

### GMO

• Fixes to gmoGetRowJacInfoOne and gmoGetColJacInfoOne: In case of an empty row/column, now return -1 in colidx/rowidx if index base is 0.

# 24.4.3 Maintenance release (April 02, 2015)

## 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 Guillaume Erbs and Emiliano Traversi.

## Solvers

### Examiner2

• Fixed incapability to continue on a trace file that already has trace records in it.

### LocalSolver

• Corrected computation of values for free variables that appeared (linearly) in one equation only.

## Tools

### GDXXRW

• In 24.4.2 we quietly introduced a new way to determine the content of a sheet. This resulted in a bug for empty sheets and sheets that have been saved with an active filter. This has been fixed.

# 24.4.4 Maintenance release (May 12, 2015)

## 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 Thomas Counsell, Michael Ferris, Jean Mercenier, and Loïc Ventre.

## Solvers

### Gurobi

• New libraries 6.0.4.
• The new libraries do not work on Windows XP anymore. As the library for COIN-OR solvers, SCIP, and SoPlex link to the Gurobi library, these solvers also do not work on Windows XP anymore.

### Ipopt

• New libraries for Linux and Mac OS X.
• Fixed an issue in the MA97 interface that lead to convergence problems.

### Minos

• Consider the number of nonlinear constraint variables, not just the nonlinear objective variables, when computing the superbasics limit: memory is plentiful and cheap.
• Fixed case of memory corruption that resulted when using an initial point containing very many superbasic variables. If the initial point contains more than 500 superbasics, limit the Hessian dimension to 500 even though the superbasic limit is larger.

### Mosek

• New libraries 7.1.0.30.

### Xpress

• New libraries Optimizer 27.01.08 (was 27.01.02 before).

## Tools

### GDXDUMP

• Fixed a problem when writing a scalar or scalar variable/equation in format CSV.

## Object Oriented APIs

• Fixed a potential problem with GAMSModelinstance and certain OS culture settings.

## Model Libraries

### GAMS EMP Library

• transecs: Fixed formulation as embedded complementarity system and provide equivalent alternative as single-agent equilibrium system.

# 24.4.5 Maintenance release (May 26, 2015)

## Solvers

### COIN-OR solvers, SCIP, SoPlex

• On Windows 32bit, OsiGurobi was split off into a separate library, so that other COIN-OR solvers (e.g., Bonmin, Cbc, Couenne, Ipopt) and SCIP and SoPlex do not require the Gurobi 6.0.4 library anymore. Thus, for this release, only Gurobi and OsiGurobi do not run on Windows XP anymore (see 24.4.4 notes on Gurobi).

# 24.4.6 Minor release (June 26, 2015)

## 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 Erwin Kalvelagen, Rich Roberts, and Jens Schulz.

## Solvers

### CONOPT

• New libraries 3.16F.
• New option LMUSDF for handling definitional equations.
• New option RVFILL for memory allocation when memory is tight.
• Changed a sorting procedure in the preprocessor. Models with some very dense rows and many pre-triangular variables can experience a significant speedup for the preprocessor.

### CPLEX

• New libraries 12.6.2.0.
• Option changes:
• The popular option value -1 for BarCrossAlg to turn off the crossover after a run with barrier has been deprecated. The new way to turn off crossover is to set the new option SolutionType to 2.
• The option SolutionTarget has been renamed to OptimalityTarget.
• The option CutsFactor has a new default (-1).
• New options:
• BQPCuts: Boolean Quadric Polytope cuts for solving nonconvex QP or MIQP to global optimality.
• CPUMask: Switch and mask to bind threads to processors. Binding threads to processors/cores helps to reduce variability in running time when using multiple threads.
• SolutionType: Type of solution (basic or non basic) for an LP or QP. Set this option to 2 to prevent crossover after barrier.

### MOSEK

• New libraries 7.1.0.31.

## Tools

### GAMSIDE

• Added .ref for reference file to the files open dialog.
• Left arrow in the first character position now moves to the end of the previous line.

### GDXXRW

• Restore the old behavior when reading a set with Values=Strings; all elements will be included, not only the ones with a string.
• Option Values=String and All are now deprecated and results in a warning; replaced with Dense.
• New options Values=Dense or Sparse.

### XLSTalk

• Allow for up to 9 parameters for macro call.