24.5 Distribution

# 24.5.1 Major release (September 23, 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 Wolfgang Britz, Guillaume Erbs, Michael Ferris, Mahbube Habibian, Josef Kallrath, Jean Mercenier, Stan Peter, Ingmar Schlecht, and Mark Thissen.

## Platforms

• Support for Windows XP has been dropped completely with this release (as announced).

## GAMS System

### GAMS

• New model attributes
• maxInfes: Maximum of infeasibilities
• meanInfes: Arithmetic mean of infeasibilities
• New option solver. This simplifies the selection of the (default) solver for multiple model types.
• The command line option solver=abc initializes the default solver for the model types solver abc is capable of to abc. This initialization is done before the default solvers of individual model types are set via command line options. So a command line with lp=conopt solver=bdmlp will first set BDMLP as the default solver for model types LP, RMIP, and MIP (these are the model types BDMLP can handle) and then reset Conopt as the default solver for LP. The order of these parameters on the command line has no impact (i.e. lp=conopt solver=bdmlp behaves identically to solver=bdmlp lp=conopt). If multiple occurrences of option solver appear, the last one sets the option as it is with other options, including LP, MIP, ...
• The solver for multiple model types can be set via the Option solver=abc; in the GAMS model source code. This sets the solver for model types abc can handle to abc. With the option solver=abc; the order among other solver setting options is significant. For example, option lp=conopt, solver=bdmlp; will first set the solver for LP to Conopt and in the next step to BDMLP because BDMLP is capable of handling model type LP. Setting solver twice can also make sense: option solver=conopt, solver=cbc; will result into setting the solver for model types CNS, DNLP, NLP, QCP, RMIQCP, and RMINLP to Conopt and the solver for model types LP, RMIP, and MIP to CBC.
• When using $LOADDC the reporting of domain errors has been improved. • This release features several improvements of the execution system. The following lists some (extreme) examples: • Improved performance when indices of accessed symbol are in "wrong" order, e.g.: $if not set size $set size 10000 set v / v1*v%size% / e / e1*e%size% /; alias(v,w); set evw(e,v,w) /#e:#v:#w/ vw(v,w); vw(v,w) = sum(e, evw(e,v,w));  The final assignment can be done in less than 1% of the time required by GAMS 24.4. • Improved performance when assigning to non-empty symbols when the assignment is driven by their domain, e.g.: $if not set size $set size 5000 set i / i1*i%size% /; alias (i,j); parameter a(i,j), b(i,j); a(i,j)$(uniform(0,1)<0.95) = 1;
b(i,j) = not a(i,j);
a(i,j) = b(i,j);

The final assignment can be done in just ~5% of the time required by GAMS 24.4.
• Improved performance when executing certain combinations of mappings, e.g.:
$if not set size1$set size1 8000
$if not set size2$set size2 24
set hi          / 1*%size1% /
ti          / 1*%size2% /
h           / h1*h%size1% /
t           / t1*t%size2% /
hmapx(h,hi) / #h:#hi /
tmapx(t,ti) / #t:#ti /;
parameter xi(hi,ti), x1(h,t);
xi(hi,ti) = uniform(0,1);
x1(h,t) = sum((hmapx(h,hi),tmapx(t,ti)), xi(hi,ti));

The final assignment can be done in just ~2% of the time required by GAMS 24.4.
• Improved performance when "searching" a lot in a large symbol, e.g.:
$if not set size1$set size1 50
$if not set size2$set size2 200000
$if not set size3$set size3 150000
set f /f1*f%size1%/
j /j1*j%size2%/
l /l1*l%size3%/
flmap(f,l);
flmap(f,l)=uniform(0,1)<0.25;
parameter jlpar(j,l) /#j:#l 10/
fjpar(f,j);
fjpar(f,j) = sum(l\$flmap(f,l), jlpar(j,l));

The final assignment can be done in just ~1% of the time required by GAMS 24.4.

### Documentation

• The complete GAMS technical documentation (release and installation notes, user's guides, solver and tools manuals, API reference manuals) is now available in HTML format with a unified table of contents. The documentation is available in the following forms:
• The online GAMS documentation provides search and keyword indexing functionalities in addition to navigating the GAMS documentation.
• The offline documentation allows access without a network connection:
• The main navigation page can be found at [GAMS system directory]/docs/index.html (not linked from the GAMS IDE).
• For Windows, additionally a Microsoft Compiled HTML Help file is available at [GAMS system directory]/docs/gams.chm and linked from the GAMS IDE Menu: Help -> GAMS Documentation.
• The following documents are still available in PDF format: GAMS User's guide, McCarl Expanded GAMS User's guide, all solver manuals, and GAMS GDX API.

## Solvers

### ANTIGONE

• Added option conopt_optfile to set name of options file to be used for CONOPT calls in ANTIGONE.

### BARON

• Now also available for Mac OS X.
• New libraries 15.9.22.
• New NLP solver for local search: FilterSD.
• Options:
• New option Threads: Number of cores used for solution of MIP subproblems.
• New option IISOrder: Order in which constraints are considered in the search for an IIS.
• Options ConTol and IntTol removed. Tolerances are now set by AbsConFeasTol, RelConFeasTol, AbsIntFeasTol, and RelIntFeasTol.
• Options MultMSize, MultRel, NLPDoLin, MipGap, MipNodes, MipRel, NoutIterMip, BilRel, Cvxbt, CvxInitOA, CvxRel, MipCuts, and RLTRel: Algorithmic features that have been parameterized are now handle in an automatic way.
• The time limit is enforced based on CPU time for single-threaded jobs and based on wall-clock time for multi-threaded jobs.
• Simplified the screen output (eliminated some details and simplified time to a real number in seconds).
• Updated CBC to 2.9.5.
• Updated Ipopt to 3.12.3.

### CBC

• New libraries 2.9.
• Introduced specialized branching methods for dealing with "big Ms".
• Introduction of conflict cuts (off by default, enable with option conflictcuts).
• Introduced new methods for dealing with symmetry.

### Conopt

• New libraries 3.17A.
• Corrected problem with options Ls2ndi and Lmusdf.
• Systems errors related to very tight memory (984) and the inversion routine (2027) have been removed.
• Three new options have been added to allow the modeler to see the order of the pre-triangular and post-triangular part of the model and the definitional equations:
• PRPRET: Flag for printing the pre-triangular part of the model.
• PRDEF: Flag for printing the defined variables and their defining constraints.
• PRPOST: Flag for printing the post-triangular part of the model.

### CPLEX

• New option FreeGamsModel. This option preserves memory by dumping the GAMS model instance representation temporarily to disk. This option is available in CplexD only.

### GUROBI

• New libraries 6.0.5 (technical release).
• New option FreeGamsModel. This option preserves memory by dumping the GAMS model instance representation temporarily to disk.

### GUSS/ScenarioSolver

• The set of GUSS model attributes (Set ma "GUSS Model Attributes" / System.GUSSModelAttributes /;) has changed:
• The attribute NumNOpt has been removed.
• The attributes MaxInfes and MeanInfes have been added.

### IPOPT

• New libraries 3.12 (minor changes).

### JAMS

• SubSolver option fixed: it was sometimes ignored.

### Kestrel

• The option file can be omitted. In this case, the Kestrel call is done with default settings.

### Lindo/LindoGlobal

• Dropped Lindo/LindoGlobal libraries for Intel Solaris as announced previously.
• New libraries 9.0.225.

### LocalSolver

• New libraries 5.5.
• Improved accuracy and performance on numerical or mixed-variable optimization problems.

### MINOS

• Adjusted default upper bound on the superbasics limit from 500 to 5000 and 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 5000 superbasics, limit the Hessian dimension to 5000 even though the superbasic limit is larger.

### MOSEK

• New libraries 7.1.0.33.
• The GAMS option iterlim now sets the iteration limit for both simplex and interior point algorithms.
• More MOSEK options are now available in GAMS/Mosek:
• MSK_IPAR_MIO_CUT_CG: Controls whether CG (Chvatal-Gomory) cuts should be generated.
• MSK_IPAR_MIO_CUT_CMIR: Controls whether mixed integer rounding cuts should be generated.
• MSK_IPAR_MIO_PROBING_LEVEL: Controls the amount of probing employed by the mixed-integer optimizer in presolve.
• MSK_IPAR_MIO_RINS_MAX_NODES: Controls the maximum number of nodes allowed in each call to the RINS heuristic.
• MSK_DPAR_MIO_TOL_MAX_CUT_FRAC_RHS: Maximum value of fractional part of right hand side to generate CMIR and CG cuts for.
• MSK_DPAR_MIO_TOL_MIN_CUT_FRAC_RHS: Minimum value of fractional part of right hand side to generate CMIR and CG cuts for.
• MSK_DPAR_MIO_TOL_REL_DUAL_BOUND_IMPROVEMENT: If the relative improvement of the dual bound is smaller than this value, the solver will terminate the root cut generation.

### OS

• Now a hidden solver. Will be dropped from the distribution at some time (without further notice).

### PATH

• New libraries 4.07.03.
• Adjusted to use wall-clock time on all platforms.
• Time limit checked more frequently, e.g. at each pivot.
• The presolve has been extended to find more reductions.
• Minor bug fixes.

### SCIP

• New libraries 3.2 #c9c4375 (major update):
• New presolvers "tworowbnd", "dualagg", "implfree", "redvub", and "stuffing", and improved presolve for ranged- and equality-type linear constraints.
• Presolving levels FAST, MEDIUM, and EXHAUSTIVE are now used to better coordinate the various presolvers.
• New primal heuristics "distribution diving", "indicator", and "bound", improved clique and variable bound heuristics, and adjusted diving heuristics to solve fewer LPs.
• New branching rules "distribution", "multaggr", and a new rule for SOS1 constraints.
• New reliability notions and improved treatment of nonlinearities in hybrid reliability pseudo cost branching.
• New separator "eccuts" for generating edge-concave cuts for quadratic constraints and improved separation for convex quadratic constraints.
• Decreased total memory usage by using more buffer data structures.
• Improved propagation and separation for SOS of type 1 by using information from a conflict graph.
• See also the full release notes, the change log, and the technical report.
• The following options were removed or replaced:
• constraints/.../delaypresol and constraints/.../timingmask replaced by constraints/.../presoltiming and constraints/.../proptiming.
• presolving/domcol/singcolstuffing replaced by presolving/stuffing/....
• presolving/.../delay replaced by presolving/.../timing.
• propagating/.../presoldelay replaced by propagating/.../presoltiming.
• propagating/obbt/maxlookahead removed.
• For the following options, the default value changed:

### SoPlex

• New libraries 2.2.0 (major update).

### SULUM

• New libraries 4.3.892.
• Several bug fixes in both the MIP solver and the LP solver.
• Improved numeric stability, degeneracy handling, and perturbation scheme in LP optimizer.
• Added a new combined pricing scheme to the dual simplex optimizer.
• Improved presolve and restart in MIP optimizer.

### XPRESS

• New libraries for XPRESS v7.9: Optimizer 28.01.05.
• Significantly improved linear algebra routines for the simplex solvers improving efficiency of a wide range of problems.
• Improvement heuristics called more often.
• The MIP log now provides information which heuristic finds a solution.
• Improved linear dependency checker for large problems.
• Improved scaling, including scaling of big-M type rows and of the Curtis-Reid scaling option.
• Improved inference-learning from infeasible subproblem during the MIP search.
• Improved presolver for quadratic instances.
• Improved handling of Special Ordered Sets.
• Improved propagation of conflict cuts.

## Tools

### GAMS IDE

• In the model library browser the IDE may provide hints about the content of the column when hovering over the headers.
• Option to specify file extensions for files that will be reloaded without a confirmation dialog.

### GDXDIFF

• When renaming the temporary file to gdxdiff.gdx fails, issue a ViewClose command in case the file is open in the GAMSIDE and try to rename again.
• If no difference was found, issue a message in the log indicating this.
• Add a set with two elements with explanatory text of the two files compared.

### GDXMERGE

• When a filename cannot be used as a UEL, use a generated name instead.

### GDXXRW

• New options IgnoreRows and IgnoreColumns to ignore a set of rows or columns for a symbol. Rows can be specified as IgnoreRows=1,4:5 and columns IgnoreColumns=A,D:F or IgnoreColumns=1,4:6.

### MODEL2TEX

• The beta version of this tool allows the automatic generation of LaTeX code that documents a given GAMS model.

### MPSGE

• The documentation of MPSGE has moved again. It can now be found in the User's Guide.

## Object Oriented APIs

• New examples SpecialValues and Clad (Java: specialvalues/SpecialValues.java, clad/Clad.java; Python: special_values.py, clad.py).
• New functions to retrieve models from the GAMS API Library and the Nonlinear Optimization Applications Library:
• .NET: GAMSWorkspace.ApiLib and GAMSWorkspace.NoaLib.
• Java: GAMSWorkspace.addJobFromApiLib and GAMSWorkspace.addJobFromNoaLib.
• Python: GamsWorkspace.apilib and GamsWorkspace.noalib.

### Python

• Added support for Python 3.4 (Windows and Linux only). The examples have been changed to be compatible with all supported Python versions.

## Model Libraries

### NOALIB - Nonlinear Optimization Applications Using the GAMS Technology

• This new library by Neculai Andrei has been added to the GAMS system. This is a collection of the models based on the book Nonlinear Optimization Applications Using the GAMS Technology by Neculai Andrei. The library contains a wide spectrum of nonlinear optimization applications expressed in GAMS. The book and library emphasize the local solutions of the large-scale, complex, continuous nonlinear optimization applications, and the abundant examples in GAMS are highlighted by those involving ODEs, PDEs, and optimal control. The collection of these examples will be useful for software developers and testers.
• You can retrieve the individual models through the IDE model library browser or via the command line utility noalib.

### GAMS Data Library

• invert1: Pass gams.sysdir% to R script to make linkage between GAMS and R explicit.
• gdxmrw_tr3: Canonical form LP created in Matlab and solved via gams() Mex-function.
• gdxmrw_tr4: Better example of gams() usage.
• gdxmrw_tr5: Better example of gams() usage.

### GAMS Model Library

• In the IDE the GAMS Model Library browser has now a Lic column indicating the license requirement of a model. The letters D and G indicate that the model does not require a license. Models with G can even be solved by a global solver without a license (the demo limit for global solvers is 10 variables and 10 equations). A letter L indicates that a license is required.
• tgridmix: Fix the logic for sleeping. Only do that if no more jobs to be scheduled or all cores are busy.

### GAMS Test Library

Solver/Platform availability - 24.5
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.0
GUSS
IPOPT 3.12
KESTREL
KNITRO 9.1
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

# 24.5.2 Maintenance release (September 29, 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 Kevin Doran and Renger van Nieuwkoop.

## GAMS System

### GAMS

• Fixed a bug which caused a crash for certain assignments, in particular it had to be an assignment to a symbol that was also referenced on the RHS, with permuted indices and we actually set some of the records to zero which were non-zero before.

## Object Oriented APIs

### .NET

• Fixed a bug that lead to a crash on Linux when the GAMS system directory is a symbolic link. (This is for Mono only.)

### Python

• Fixed a bug that lead to a crash on Linux when the GAMS system directory is a symbolic link. The property GamsWorkspace.system_directory now always returns the canonical path with all symbolic links resolved.

# 24.5.3 Maintenance release (October 01, 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 Wolfgang Britz.

## GAMS System

### GAMS

• Fixed a bug which caused wrong results in some cases of out-of-order assignments

# 24.5.4 Maintenance release (October 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 Per Ivar Helgesen and Jan Imhof.

## GAMS System

### GAMS

• Fixed a bug which caused wrong results in some cases of out-of-order assignments, in particular it had to be an assignment using the same controlling set more than once in one symbol, e.g. p(i,j,i).
• Fixed a bug when handling suffixes (e.g. .val) of Singleton Sets in Equations.

## Object Oriented APIs

### .NET

• Fixed a bug with the property GAMSOptions.IDir.

# 24.5.5 Maintenance release (November 25, 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 Wolfgang Albrecht, Stefan Kemnitz, Martha Loewe, Thomas Maindl, Bruce McCarl, and Andres Ramos.

## GAMS System

### GAMS

• GAMS now always reports the upper bound that is sent to the solver in the column listing and solution report. Hence, with IntVarUp=1 GAMS prints the value of 100 for integer and semiint variables that are at default bound value +INF.
• Fixed a bug which could cause a crash when referencing attributes of equations (e.g. marginals) after a model was solved with a non-default solveLink setting and there was no solution returned.

### Stochastic Programming with EMP

• Fixed a bug which caused wrong sample sizes if the sample keyword was used more than once and with different sample sizes.

## Solvers

### Cbc

• New libraries.

### CplexD

• Fixed a problem with the computeserver option. The value for the computeserver option is limited to 255 characters. In order to specify a longer list of workers, one can now use multiple lines with the computeserver option.

### Ipopt

• New libraries.

### LocalSolver

• New libraries 5.5 (20151028).

### Mosek

• New libraries 7.1.0.41.

### SCIP

• New libraries 3.2 (#e9a5ca7).
• Removed options constraints/SOS1/bipbranch, constraints/SOS1/neighbranch, and constraints/SOS1/sos1branch.

### SoPlex

• New libraries 2.2 (#f17b9e7).

## Tools

### put_toexcel, put_tohtml

• Fixed a problem with put_toexcel and put_tohtml.

# 24.5.6 Maintenance release (November 27, 2015)

## Solvers

### COUENNE

• New libraries.

### IPOPT, BONMIN, SCIP

• Fixed issue that Ipopt and Bonmin always read ipopt.opt, despite of the optfile setting in GAMS.