**Major releases** contain substantial changes to the GAMS system.
The License Check date is set to the release date of the major release.

**Minor releases** are mainly issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries.
Additionally, they can provide a few new features that do not change existing behavior.
The License Check Date remains the same as for the prior major release.
This means that any license file that worked with the prior major release will also work with this minor release.

**Maintenance releases** do not provide any new features.
They are issued to provide bug fixes, performance improvements, and maintenance releases of solver libraries.
The License Check Date remains the same as for the prior major release.
This means that any license file that worked with the prior major release will also work with this maintenance release.

## GAMS Distribution 24.8

#### Distribution History

24.8.2 | (Maintenance release) | January 03, 2017 |

24.8.1 | (Major release) | December 21, 2016 |

### GAMS Maintenance Release 24.8.2 - January 03, 2017

#### Table of Contents

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

### GAMS Major Release 24.8.1 - December 21, 2016

#### Table of Contents

## 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-Sauve, Wolfgang Britz, Göran Bylund, Wietse Dol, 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):- If set to 1, GAMS prints a solution listing to the lst file also when an asynchronous solve (see The Grid and Multi-Threading Solve Facility) is used.
- The default value is 0.

- 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 the dual solution values for MCP that have been scaled.

### 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 section 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
- BestObjStop: Objective value to stop optimization
- BestBdStop: Objective bound to stop optimization
- InfProofCuts: Infeasibility proof cut generation
- StrongCGCuts: Strong-CG cut generation
- DegenMoves: Degenerate simplex moves
- TuneCriterion: Tuning criterion
- SolNPool: Activate export of alternative solution
- PoolSolutions, PoolSearchMode, and PoolGap to control generation of alternative solutions

- 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 section 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.

- LP Solver Improvements:

### 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_DPAR_MIO_REL_ADD_CUT_LIMITED
- 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_MIO_USE_MULTITHREADED_OPTIMIZER
- MSK_IPAR_NONCONVEX_MAX_ITERATIONS
- MSK_DPAR_NONCONVEX_TOL_FEAS
- MSK_DPAR_NONCONVEX_TOL_OPT
- MSK_IPAR_PRESOLVE_ELIM_FILL (use MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_FILL instead)
- MSK_IPAR_PRESOLVE_ELIMINATOR_USE
- MSK_IPAR_PRIMAL_REPAIR_OPTIMIZER
- MSK_IPAR_QO_SEPARABLE_REFORMULATION
- MSK_IPAR_WARNING_LEVEL
- MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_CONIC_ITEMS (use MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_ITEMS instead)
- MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_NL_ITEMS (use MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_ITEMS instead)
- MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_PSD_ITEMS (use MSK_IPAR_WRITE_IGNORE_INCOMPATIBLE_ITEMS instead)

- The following GAMS/Mosek options have been added:
- MSK_DPAR_DATA_SYM_MAT_TOL: Absolute zero tolerance for elements in in symmetric matrices.
- MSK_DPAR_DATA_SYM_MAT_TOL_HUGE: An element in a symmetric matrix which is larger than this value in absolute size causes an error.
- MSK_DPAR_DATA_SYM_MAT_TOL_LARGE: An element in a symmetric matrix which is larger than this value in absolute size causes a warning message to be printed.
- MSK_DPAR_INTPNT_QO_TOL_DFEAS: Dual feasibility tolerance used when the interior-point optimizer is applied to a quadratic optimization problem.
- MSK_DPAR_INTPNT_QO_TOL_INFEAS: Controls when the conic interior-point optimizer declares the model primal or dual infeasible.
- MSK_DPAR_INTPNT_QO_TOL_MU_RED: Relative complementarity gap feasibility tolerance used when interior-point optimizer is applied to a quadratic optimization problem.
- MSK_DPAR_INTPNT_QO_TOL_NEAR_REL: Termination tolerance multiplier that is used if no accurate solution can be found.
- MSK_DPAR_INTPNT_QO_TOL_PFEAS: Primal feasibility tolerance used when the interior-point optimizer is applied to a quadratic optimization problem.
- MSK_DPAR_INTPNT_QO_TOL_REL_GAP: Relative gap termination tolerance used when the interior-point optimizer is applied to a quadratic optimization problem.
- MSK_IPAR_INTPNT_MULTI_THREAD: Controls whether the interior-point optimizers can employ multiple threads if available.
- MSK_IPAR_MIO_CUT_CLIQUE: Controls whether clique cuts should be generated.
- MSK_IPAR_MIO_CUT_GMI: Controls whether GMI cuts should be generated.
- MSK_IPAR_MIO_CUT_IMPLIED_BOUND: Controls whether implied bound cuts should be generated.
- MSK_IPAR_MIO_CUT_KNAPSACK_COVER: Controls whether knapsack cover cuts should be generated.
- MSK_IPAR_MIO_CUT_SELECTION_LEVEL: Controls how aggressively generated cuts are selected to be included in the relaxation.
- MSK_IPAR_MIO_PERSPECTIVE_REFORMULATE: Enables or disables perspective reformulation in presolve.
- MSK_IPAR_MIO_ROOT_REPEAT_PRESOLVE_LEVEL: Controls whether presolve can be repeated at root node.
- MSK_IPAR_MIO_VB_DETECTION_LEVEL: Controls how much effort is put into detecting variable bounds.
- MSK_IPAR_OPF_WRITE_HEADER: Write a text header with date and MOSEK version in an OPF file.
- MSK_IPAR_OPF_WRITE_HINTS: Write a hint section with problem dimensions in the beginning of an OPF file.
- MSK_IPAR_OPF_WRITE_PROBLEM: Write objective, constraints, bounds etc.
- MSK_IPAR_OPF_WRITE_SOL_BAS: Whether to include basic solution in OPF files.
- MSK_IPAR_OPF_WRITE_SOL_ITG: Whether to include integer solution in OPF files.
- MSK_IPAR_OPF_WRITE_SOL_ITR: Whether to include interior solution in OPF files.
- MSK_IPAR_OPF_WRITE_SOLUTIONS: Enable inclusion of solutions in the OPF files.
- MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_FILL: Controls the maximum amount of fill-in that can be created by one pivot in the elimination phase of presolve.
- MSK_DPAR_SEMIDEFINITE_TOL_APPROX: Tolerance to define a matrix to be positive semidefinite.
- MSK_IPAR_WRITE_DATA_PARAM: If this option is turned on the parameter settings are written to the data file as parameters.
- MSK_IPAR_WRITE_LP_FULL_OBJ: Write all variables, including the ones with 0-coefficients, in the objective.
- MSK_IPAR_WRITE_MPS_FORMAT: Controls in which format the MPS is written.
- MSK_IPAR_WRITE_TASK_INC_SOL: Controls whether the solutions are stored in the task file too.
- MSK_SPAR_WRITE_LP_GEN_VAR_NAME: Sometimes when an LP file is written additional variables must be inserted.

- For the following options, the default value has changed:
- MSK_DPAR_MIO_TOL_FEAS from 1e-7 to 1e-6
- MSK_IPAR_LOG_MIO_FREQ from 1000 to 10
- MSK_IPAR_WRITE_PRECISION from 8 to 15

- 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 section 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 API Library

- PInterrupt.gms : Test GamsJob interrupt mechanism in object oriented Python API (54)
- CSInterrupt.gms : Test GamsJob interrupt mechanism in object oriented .Net API (55)

### GAMS Model Library

- asyncloop.gms : Transportation Problem with async loop body execution (411)
- trnsindic.gms : Fixed Charge Transportation Problem with Indicator Constraints (412)
- timesteps.gms : Accessing previous (or next) time steps in an equation fast (413)
- Modified models:
- Make use of the new
`break`

statement to formulate the following models a little nicer: tsp1, tsp4, cutstock, awktsp, sddp, sipres, allbases, qfilter - tgridmix: The of logic of submission and collection has been reworked so that the scenario sets do not have to be one dimensional and ordered (contributed by Tom Rutherford).
- asyncjobs: The logic for putting out the log line in time intervals was flawed and has been corrected.

- Make use of the new

### GAMS Test Library

- emp17.gms : Simple test of one optimizing agent (693)
- breakcont1.gms : Test break and continue statements (694)
- lindgl04.gms : Test non-convex quadartic program with Lindo(Global) (695)
- mcp11.gms : Test marginals for a scaled MCP problem (696)
- csv2gdx1.gms : Test marginals for a scaled MCP problem (697)
- gdxxrw7.gms : Test merge and clear option for special data layout (698)
- scale02.gms : Test that an MCP with scales is rejected when appropriate (699)
- emp18.gms : Test JAMS/EMP on implicit variable handling (700)
- emp19.gms : Test JAMS/EMP on implicit variable handling (701)
- emp20.gms : Test JAMS/EMP on implicit variable handling (702)
- emp21.gms : Test JAMS/EMP on implicit variable handling (703)
- emp22.gms : Test JAMS/EMP on implicit variable handling (704)
- emp23.gms : Test JAMS/EMP on implicit variable handling (705)
- emp24.gms : Test JAMS/EMP on implicit variable handling (706)
- emp25.gms : Test JAMS/EMP on implicit variable handling (707)
- emp26.gms : Test JAMS/EMP on implicit variable handling (708)
- gurobi02.gms : GUROBI test suite - general constraints max,min,abs (709)
- gurobi03.gms : GUROBI test suite - general constraints and,or (710)
- slx01.gms : run tests for different solvelink values (711)
- gurobi04.gms : GUROBI test suite - multi objective (712)