24.8 Distribution

# 24.8.1 Major release (December 21, 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 Etienne Ayotte-Sauvé, Wolfgang Britz, Göran Bylund, Wietse Dol, Gregory Dourbois, Katja Jensen, Josef Kallrath, Toni Lastusilta, Renger van Nieuwkoop, and Tom Rutherford.

## Platforms

• On Linux, the minimal required GLIBC version is now 2.7.
• On MacOS X, for some solvers (ANTIGONE, BARON, CPLEX, COIN-OR, SOPLEX, SCIP) the minimal required Mac OS X version is now 10.10. We will drop support for older Mac OS X versions for the complete GAMS system with the next major release.
• A generic license (with platform code GEN) is now limited to the platforms Windows, Linux, and Mac OS X. If you have a generic license and need a license for one of the other platforms (e.g. AIX), please contact sales or support to receive an additional license file for that platform free of charge.

## GAMS System

### GAMS

• The statements Break and Continue were added to allow more control over the execution of control structures (loop/while/repeat/for):
• Break [n];: Terminate the n inner most control structures (n is optional, if it is omitted, it is set to 1).
• Continue;: Jump to the end of the inner most control structure.
• Extend the report summary of the solution report to print the number of variables and equations where the level was projected to one of the bounds (compare model attribute tolProj), if that number is greater than 0.
• The model attribute tolProj to project levels to bounds is no longer ignored when the GAMS Grid Facility (SolveLink = 3 or 4) is used.
• New command line option fileStem: Sets the file stem for output files which use the input file name as stem by default, see fileStem for more details.
• New option MCPRHoldfx (can be set using the option statement, a command line parameter, or model attribute):
• Prints list of rows that are perpendicular to variables removed due to the holdfixed setting if set to 1.
• New option AsyncSolLst (can be set using the option statement, or a command line parameter):
• New variant for the SolveLink option and model attribute: 7 (compile time constant %solveLink.Threads Simulate%) - The problem is passed to the solver in core without use of temporary files, GAMS waits for the solver to come back but uses same submission process as 6 (see Multi-threading Submission Testing)
• New function numCores (available at both compile and execution time): Returns the number of logical cores in the system.
• Allow macro expansion in the domain list of a symbol declaration.
• New dollar control splitOption that splits a string representing a option/value pair into option name and option value.
• Fixed a problem with the optional maxWait parameter of the function readyCollect.
• Fixed potential error in file created by dumpOpt, if there were symbols loaded from GDX.
• Fixed an error which could lead to wrong results when assigning to a symbol while the symbol's alias was used on the right hand side of the assignment.
• Fixed an error which could lead to a crash if a phantom set element was used to control an assignment inside a loop.
• Fixed a problem with unscaling solutions for MCP models that resulted in incorrect dual values for scaled MCPs. For an example, compare the new test library model mcp11 when run with 24.8 and with something previous.

### Documentation

• The offline documentation now provides search and keyword indexing functionalities in addition to navigating the documentation.
• The Microsoft Compiled HTML help file gams.chm is no longer available.
• The table of contents for browsing the GAMS model libraries is now available offline in HTML format.

## Solvers

### BARON

• New libraries 16.12.7.

### CPLEX

• New libraries 12.7.0.0.
• Support for the platfrom MS Windows 32 bit, Solaris i86pc, and Solaris SPARC 64bit has been dropped by IBM for Cplex 12.7. The GAMS system for these platforms contains Cplex 12.6.3.
• Cplex 12.7 implements Benders Algorithm. This is available in CplexD only.
• The IIS option triggers now the conflict refiner. The IIS function in Cplex 12.7 has been replaced by the conflict refiner. The IIS option now also works on infeasible models with model status Infeasible No Solution as well as on problems with discrete variables.
• New parameters
• BendersFeasCutTol: Tolerance for whether a feasibility cut has been violated in Benders decomposition
• BendersOptCutTol: Tolerance for optimality cuts in Benders decomposition
• BendersStrategy: Benders decomposition algorithm as a strategy
• DataCheck: Data consistency checking and modeling assistance
• RLTCuts: Reformulation Linearization Technique (RLT) cuts
• Modified parameters:
• MipStart: A value of 6 accepts the (partical) MipStart without any checks

### CONOPT

• This distribution includes the first official release of the CONOPT4 solver. The chapter in the solver manual has an interesting subsection on when you should use CONOPT4 for all existing CONOPT users.
• The current solver alias CONOPT still points to the CONOPT3 solver. This might change in the next, or next but one major release. We invite you to share your experience with this new version of CONOPT via support (support@gams.com) with us.

### ConvertD

• Write proper scale and prior information for equations and variables with option Jacobian.

### DICOPT

• An implementation of a Feasibility Pump primal heuristic (for convex MINLP) has been added to DICOPT. This heuristic can be run before the actual DICOPT algorithm. Outer approximation cuts from the MIP subproblem of the Feasibility Pump are transferred to initialize the MIP outer approximation of the main DICOPT algorithm. Option feaspump can be used to enable the Feasibility Pump and various other options are available to tune the feasibility pump.
• Option convex has been added to indicate the presence of convex MINLP. If this option is set, the defaults for various other options are modified.

### GUROBI

• New libraries 7.0.1.
• Explore alternative solutions via the Solution Pool.
• New parameters
• Gurobi 7 supports general constraints. With the help of the dot-option .GenConstrType the user can classify a constraint to be of type Max, Min, Abs, And, and Or.
• Gurobi 7 supports indicator constraints.
• Gurobi 7 supports multi objective hierarchical optimization. Details can be found in the GAMS/Gurobi manual, in subsection Multiple Objectives.

### JAMS

• New option ZipDebug=xxx.zip to specify that, in the event of abnormal termination or behavior, a zip file of debugging info be created.
• New reformulation options to handle shared or duplicated equations and variables in equilibrium models.

### Knitro

• New libraries 10.2.0.
• Significant speed and robustness improvements when using BFGS (hessopt=2) or L-BFGS (hessopt=6) Hessian approximations with the default Knitro interior-point method.
• General performance improvement on mixed-integer models.
• Minor bug fixes.
• New mixed-integer SQP (MISQP) algorithm for nonlinear mixed-integer models (mip_method=3). This new algorithm is intended for small, potentially non-convex models with possibly expensive function evaluations. It can be used even when integer variables are not relaxable (i.e. functions can only be evaluated with integer variables at integer points) by setting mip_relaxable=0, and can be used with parallel multistart.
• New option mip_nodealg to control algorithm used at B&B nodes: overrides the generic algorithm option.
• The Knitro Tuner is now available from the GAMS/Knitro link.

### Lindo/LindoGlobal

• New libraries 10.0.131.
• LP Solver Improvements:
• With new enhancements made to the simplex solvers, the average performance on large instances has increased by 35% for the primal simplex and by 20% for the dual simplex compared to the previous version.
• MIP Solver Improvements:
• New heuristic algorithms help to find significantly better solutions for many models with knapsack constraints and block structures.
• New MIP preprocessing level devoted to tightening variable bounds for some nonlinear models.
• Stochastic Solver Improvements:
• Improved cut management for Nested Benders Decomposition Method leading to speed improvements over 60% for large linear multistage SP instances.
• Better handling of multistage SP models which do not have full-recourse.
• Global Solver Improvements:
• Incorporates bound tightening process to the linearization procedure and improve solvability of linearized model.

### LocalSolver

• New libraries 6.5 (20160729).
• For near-linear (discrete or continuous) problems, new moves have been introduced based on linear programming and mixed-integer linear programming techniques. These moves allow to intensify the search on near-linear models by exploring optimally larger neighborhoods.
• Added possibility for Hierarchical Optimization of Multiple Objective Functions.
• Removed option origlog. GAMS/LocalSolver will now always print the original LocalSolver log.
• Fixed level values of aggregated variables in solution.

### Mosek

• New libraries 8.0.0.48 (Mosek release notes)
• Presolve performance has been improved.
• The eliminator in the presolve has been reimplemented, is usually faster, and requires much less memory.
• Presolve has been improved on conic quadratic problems.
• The numerical stability of conic optimizer has been improved significantly, particularly for semidefinite optimization problems.
• The scaling routine for the conic optimizer is more aggressive.
• Quadratic and quadratically constrained problems are now internally converted to conic form and are solved using the conic optimizer. Nevertheless full primal and dual information to the original problems is available.
• A dualizer for conic quadratic problems is now available. By default it dualize the problems before optimizing if deemed worthwhile. The dualization is transparent to the user and can be turned off.
• The conic optimizer linear algebra is now parallelized using Cilk Plus and scales better when the number of threads is increased for large problems. Moreover, for smallish problems using too many threads does not hurt performance.
• The computational efficiency graph partitioning based ordering method in the interior-point optimizer has been improved.
• It is now possible to force the interior-point optimizer to run in the calling thread.
• Only one mixed integer optimizer is available now, which corresponds to the mixed integer conic optimizer that was introduced with version 7.
• The primal network simplex optimizer has been removed. It is suggested to use the dual simplex optimizer instead.
• The primal-dual simplex optimizer has been removed. It is suggested to use the dual simplex optimizer instead.
• The concurrent optimizer has been removed. It is suggested to use the interior-point optimizer instead.
• The following GAMS/Mosek options have been removed:
• MSK_IPAR_ANA_SOL_BASIS
• MSK_IPAR_ANA_SOL_PRINT_VIOLATED
• MSK_IPAR_CONCURRENT_NUM_OPTIMIZERS
• MSK_IPAR_CONCURRENT_PRIORITY_DUAL_SIMPLEX
• MSK_IPAR_CONCURRENT_PRIORITY_FREE_SIMPLEX
• MSK_IPAR_CONCURRENT_PRIORITY_INTPNT
• MSK_IPAR_CONCURRENT_PRIORITY_PRIMAL_SIMPLEX
• MSK_DPAR_FEASREPAIR_TOL
• MSK_IPAR_FEASREPAIR_OPTIMIZE
• MSK_IPAR_INTPNT_FACTOR_DEBUG_LVL
• MSK_IPAR_INTPNT_FACTOR_METHOD
• MSK_IPAR_LOG_CONCURRENT
• MSK_IPAR_LOG_NONCONVEX
• MSK_IPAR_LOG_PARAM
• MSK_IPAR_LOG_SENSITIVITY
• MSK_IPAR_LOG_SENSITIVITY_OPT
• MSK_IPAR_MAX_NUM_WARNINGS
• MSK_IPAR_MIO_CONT_SOL
• MSK_IPAR_MIO_CUT_CG
• MSK_IPAR_MIO_CUT_LEVEL_ROOT
• MSK_IPAR_MIO_CUT_LEVEL_TREE
• MSK_IPAR_MIO_FEASPUMP_LEVEL
• MSK_DPAR_MIO_HEURISTIC_TIME
• MSK_IPAR_MIO_HOTSTART
• MSK_IPAR_MIO_KEEP_BASIS
• MSK_IPAR_MIO_LOCAL_BRANCH_NUMBER
• MSK_DPAR_MIO_MAX_TIME_APRX_OPT
• MSK_IPAR_MIO_PRESOLVE_AGGREGATE
• MSK_IPAR_MIO_PRESOLVE_PROBING
• MSK_IPAR_MIO_PRESOLVE_USE
• MSK_IPAR_MIO_STRONG_BRANCH
• MSK_DPAR_MIO_TOL_MAX_CUT_FRAC_RHS
• MSK_DPAR_MIO_TOL_MIN_CUT_FRAC_RHS
• MSK_DPAR_MIO_TOL_REL_RELAX_INT
• MSK_DPAR_MIO_TOL_X
• MSK_IPAR_NONCONVEX_MAX_ITERATIONS
• MSK_DPAR_NONCONVEX_TOL_FEAS
• MSK_DPAR_NONCONVEX_TOL_OPT
• MSK_IPAR_PRESOLVE_ELIMINATOR_USE
• MSK_IPAR_PRIMAL_REPAIR_OPTIMIZER
• MSK_IPAR_QO_SEPARABLE_REFORMULATION
• MSK_IPAR_WARNING_LEVEL
• The following GAMS/Mosek options have been added:
• For the following options, the default value has changed:
• Fixed selection of optimizer for "fixed solve" of a mixed-integer conic problem.

### Pyomo

• Fixed compatibility issues with different versions of Pyomo.

### SCIP

• New libraries 3.2 (#0d4fc08).
• Changed the default LP solver to SoPlex also for the case where a CPLEX license is available, due to problems when using CPLEX 12.7.0.0 as LP solver in SCIP.

### SoPlex

• The GAMS/SoPlex interface has been rewritten and does not use the OsiSpx layer anymore. The solver OSISOPLEX is now an alias for the solver SoPlex.
• SoPlex parameter files can now be used.
• SoPlex can now be warmstarted when only the model instance data changes (e.g., via GUSS).
• New libraries 2.2 (df190de).

## Tools

### CSV2GDX

• Improved error reporting.

### GDXDUMP

• New command line option CSVAllFields to get all fields (level, marginal, lower, upper, and scale) when writing a variable or equation symbol in CSV format.

### MODEL2TEX

• Increased the page width of the txt file generated by the GAMS command line option docfile to 32767 (max. value).
• Changed the default encoding to latin and added a new command line parameter that allows to change the encoding (-e=ENCODING)
• Changed the default format of the symbol tables.
• The JSON style file contains a new property called columnSetting that allows to adjust the columns.
• Avoid some unnecessary parentheses in sum and product operators.
• Minor change in the equations subsection that removes several warnings.
• Several minor bug fixes.

### GDXXRW

• Fixed a problem when writing a symbol with option merge or clear to a range with CDim=0 or RDim=0.

### GMSZIP/GMSUNZIP

• New versions of Info-ZIP's tools zip (version 3.1c02) and unzip (version 6.00). The executable names have been prefixed with "gms" for clear identification.

## Object Oriented APIs

• New option GAMSOptions.ErrorLog: Maximal number of error message lines written to the log for each error.

### .NET

• New examples that demonstrate the use of the API in a graphical environment: TransportGUI, CutstockGUI, FarmGUI.
• Distribute compiled GUI examples in directory <GAMSDir>\apifiles\GUIexamples on Windows.
• GAMSWorkspace.AddJobFromFile: Throw an exception if a given file does not exist.

### Python

• The option GamsOptions._errorlog has been renamed to GamsOptions.errorlog in order to indicate it as public.

## Model Libraries

### GAMS Test Library

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

# 24.8.2 Maintenance release (January 03, 2017)

## 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 Evangelos Panos.

## GAMS System

• Change for command line parameter MultiPass: If it is set to 2, als errors from $gdxIn are ignored now • Fixed a bug which caused wrong results in some assignments which use symbols that were used out-of-order in previous assignments. ## Solvers ### SCIP • Added a workaround that allows for using CPLEX 12.7.0.0 as LP solver in SCIP again. For the moment, the default is still to use SoPlex. # 24.8.3 Minor release (January 28, 2017) ## 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, Mohammad R. Hesamzadeh, and Katja Jensen. ## GAMS System ### GAMS • Fixed potentially wrong values for model attribute etSolver for cases where the command line option solveLink was set to 1, 2 or 5. ## Solvers ### BARON • New libraries 17.1.2. • More robust links with COIN-OR solvers and a better link with FICO Xpress. • Some new RLT cuts are included in relaxations. ### DE • Create a capability error if DE is called to solve a model of type EMP without stochastic information. ### DECIS • Create a capability error if DECIS is called to solve a model of type EMP without stochastic information. ### Examiner2 • Fix behavior when the subsolver returns a model status like 19 Infeasible - No Solution. The model status can be passed unchanged back to GAMS in such a case. ### Kestrel • Adjusted the default URL to https using port 3333. • Fixed a bug that prevented to specify the protocol in the neos_server parameter in an option file. The complete format of the parameter is now protocol://host:port. ### LINDO • Create a capability error if LINDO is called to solve a model of type EMP without stochastic information. ### MOSEK • New libraries 8.0.0.53. ### SCIP • Changed the default LP solver back to CPLEX, if available (see also 24.8.1 and 24.8.2 release notes). ## Tools ### GDXDUMP • Fixed wrong output in case of nested quotes in symbol text. ## Model Libraries ### GAMS Model Library • linearne: Minor fix to model formulation (contributed by Mohammad R. Hesamzadeh). # 24.8.4 Minor release (April 10, 2017) ## 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, Ivan Leung, Tara Rengarajan, and Sajjad Shafiei. ## GAMS System ### GAMS • Fixed an issue which caused unnecessary memory consumption if many indexed symbols with explicit labels were used. ## Solvers ### BARON • New libraries 17.4.1. • Bug fixes and an enhanced convexity detector. ### CPLEX • New libraries 12.7.1.0. • Note that with this update the log generated by Cplex changed in a way that the Cplex options set (either by the user or by GAMS defaults) are displayed. This is intentional and no sign of a problem. So one could see something like this in the log when running GAMS/Cplex: CPXPARAM_Simplex_Limits_Iterations 2000000000 CPXPARAM_TimeLimit 1000 CPXPARAM_Threads 1  ### DICOPT • Fixed serious bug in feasibility pump implementation. ### Examiner, Examiner2 • The list of checks to perform for solved models was set incorrectly when the trace option was used. ### GUROBI • New libraries Gurobi 7.0.2. • Added options MultiObjMethod and MultiObjPre. • Fixed a problem that lead to wrong error messages when setting the ObjNAbsTol and ObjNRelTol parameters. • Fixed a problem that reported back the wrong alternative solution. ### JAMS • Fix problem with bilevel models having variables owned by the leader but not appearing in the leader objective or constraints. ### Lindo/LindoGlobal • New libraries 10.0.179. ### MOSEK • New libraries 8.0.0.60. ### NLPEC • Fix problem handling empty constraints (e.g. f.. eps*x =G= 0) that appear in MPEC models. Note that such models can easily be produced by JAMS/EMP. ## Object Oriented APIs ### Python • Added support for Python 3.6. • Fixed a bug in GamsJob.run() that prevented the underlying GAMS model from terminating, if executables spawned by GAMS generate log output that is not captured. # 24.8.5 Maintenance release (May 10, 2017) ## 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 Ana Carolina, Gary Goldstein, Erwin Kalvelagen, Amit Kanudia, Toni Lastusilta, Antti Lehtila, Bruce McCarl, and Hans Kristian Ringkjob. ## Platforms • The AIX system is now build on AIX 7.1. ## GAMS System ### GAMS • Fixed a bug which could cause a crash in particular assignments involving singleton sets or explicit labels. This was introduced with GAMS 24.8.4. • Fixed problems with the break statement: • There was a potential crash if break was used in a "sparse loop", e.g., loop(j$x(j), ...).
• If break was used in a loop with more than one index, e.g., loop((i,j), ...), that loop was treated as multiple loops for the break statement, one for each index. Now it is treated as just one loop as intended.
• Fixed a problem where a loop was not correctly recognized as a loop if it runs over just one fixed element, e.g., loop(i('i2'), ...).

## Solvers

### BARON

• Initialize BARON option Threads with value of GAMS option Threads, if the latter is at least 1.

### CBC

• New libraries.
• Fixed a bug in presolve that caused problems with fixed discrete variables.

### GUROBI

• Suboptimal solutions were not reported back to GAMS. This has been fixed.

### Lindo/LindoGlobal

• New libraries 10.0.182.

### MOSEK

• New libraries 8.0.0.69.