25.1 Distribution

# 25.1.1 Major release (May 19, 2018)

## 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 Eden Huang, Katja Buhrkal Jensen, Jan-Erik Justkowiak, Erwin Kalvelagen, Marko Loparic, Bruce McCarl, Scott McDonald, Edmund Moshammer, Andres Ramos, Tom Rutherford, Wilfredo Sifuentes, and Tapio Westerlund.

## Platforms

• On Windows, some solvers in the GAMS distribution as well as GAMS Studio have dependencies on certain MS Visual C++ runtime libraries. Most of them are included in the GAMS distribution or are present on most Windows systems. However, we are aware that in in rare cases, some libraries are missing. In such situations, we advise to run the appropriate installer for these libraries:
• On a 32-bit GAMS version, execute [GAMS system]\apifiles\C++\lib\vs2013\vcredist_x86.exe, followed by [GAMS system]\apifiles\C++\lib\vs2015\vcredist_x86.exe.
• On a 64-bit GAMS version, execute [GAMS system]\apifiles\C++\lib\vs2017\vcredist_x64.exe.

## GAMS System

### GAMS

• New conditional expressions to be used in conditional compilation, namely gdxDimension, gdxEquType, gdxParType, gdxSetType, gdxSymExist, gdxVarType, and uelExist. Details about these can be found here.
• New command line option LstTitleLeftAligned: Write title of LST file left aligned.
• New command line option ShowOSMemory: Show the memory usage reported by the operating system (either resident set size or virtual set size) instead of the internal counting.
• GAMS throws now a compilation error if an unexpected suffix at a symbol is encountered in an option statement involving identifiers. In the past such suffixes were ignored, which could have given the impression that they were actually doing something. So, all the .dim1 suffixes in the following example will create an error now:
Set i(*)
j(*)
ij(*,*) / i1.j1, i1.j2, i2.j1, i2.j2 /;

Option i <  ij.dim1;
Option i <= ij.dim1;

Set       k     / k1*k6 /;
Parameter ii(*) / i1 4, i2 5, i3 6 /
iii(k,*);

Option iii > ii.dim1;
Option shuffle = ii.dim1;

• The details of the expansion of multi-line macros were changed with this release. In the past, trailing white space in the macro definition was always removed. Now, in multi-line macros, the white space before the continuation character \ is preserved. This example demonstrates the difference:
\$macro xAndY(x,y) x and \
y
scalar x /1/;
if(xAndY(1,x), display 'true');

In the past, this caused a compilation error, since the macro was expanded to if(1 andy, display 'true'); ("and" and "y" were concatenated to "andy"). Now that the white space after "and" is preserved, this does not cause a problem anymore.
• The statement Alias (k,k); for an unknown symbol k causes a compilation error now.
• In rare cases, embedded code recognized indented Python code incorrectly. This has been fixed.
• New property gams.debug for controlling debug information of the Object-oriented API in embedded code sections.
• Fixed a problem related to SSL support in GMSPython that prevented certain tools (e.g. pip) from working on Linux and Mac OS X.
• Models of type MCP can now be solved with modifiable parameters in the GUSS framework and as OO-API GAMSModelInstance.

## Solvers

### BARON

• New libraries 18.5.8.
• Updated to Ipopt 3.12.8 and CBC 2.9.9.
• Replaced Ipopt's linear solver MUMPS by MA57 from HSL, a collection of Fortran codes for large-scale scientific computation. Thus, when using IPOPT as NLP solver, BARON may now be more robust and a little faster, especially for problems without integer variables.
• New bounds reduction strategies based on optimality conditions can reduce the size of the branch-and-bound tree.
• Rewrote core memory management routines for speed increase and memory reduction.
• On some problems, BARON currently provides incorrect marginal values. This problem will be fixed in the near future.
• The use of Ipopt in BARON on MacOS X is no longer disabled by default.
• There will be no future updates of BARON for Windows 32-bit.

### Bonmin(H), CBC, Couenne

• Wall-clock time is now always used to apply a timelimit to Branch-and-Bound. The nww option clocktype can be used to switch back to CPU time.

### CONOPT

• New libraries 4.05 for CONOPT 4.
• New libraries for CONOPT 3.
• Fixed problems with redundancy in preprocessor and an issue related to system error 2024.

### ConvertD

• Added options PermuteVars and PermuteEqus to permute the declaration of variables and equations, respectively, in scalar GAMS output.
• Tweaked printing of variable bounds and activity levels in scalar GAMS ouput.
• Fixed handling of infinite upper bounds for integer variables in scalar GAMS output: A line that sets GAMS option intvarup to 0 is now added to the output.

### Couenne

• New libraries.

### DICOPT

• Improvements to Feasibility Pump:
• Fixed handling of nonlinear objective function when maximizing.
• Fixed update of cutoff decrement after a solution with objective value very close to zero has been found.
• Fixed translation of NLP projection problem optimal value to norm of associated projection. Changed default for option fp_projzerotol from 1e-6 to 1e-4.
• Added creation of cuts derived from solution of NLP projection problem. Use option fp_projcuts to disable.
• Added option fp_integercuts to disable integer cuts or enable them for mixed-binary problems only. The latter is the new default.
• Added option fp_mipgap to specify an optimality tolerance (relative gap limit) for the MIP projection problem.
• The stall limit is now only applied after a first solution has been found. Changed default for option fp_iterlimit to 20.

### GUROBI

• New libraries 8.0.
• As announced for GAMS 24.9, Gurobi 8 is no longer supported for Windows 32-bit. We continue to ship Gurobi 7.5 for this platform.
• New partition heuristic based on user annotation via the new dot option .partition and enabled with new option PartitionPlace.
• Completely new interface to Gurobi's Remote Services (i.e. compute server, distributed algorithm, and instant cloud). For details see Compute Server and the following sections.

### JAMS

• Added capability to handle QVI models.
• The options controlling the reformulation strategy for shared variables in multi-agent EMP models have changed: see ImplVarModel for details.

### LocalSolver

• New libraries 7.5 (20180405).
• To use LocalSolver 7.5, a machine-specific LocalSolver license is now required on Linux, too. See here on how to obtain such a license. Alternatively, it is still possible to use LocalSolver 7.0 by choosing LOCALSOLVER70 instead of LOCALSOLVER as solver.

### Mosek

• New libraries 8.1.0.53.

### ODHCPLEX

• A new solver GAMS/ODHCPLEX from Optimization Direct Inc. has been added to the GAMS solver portfolio.
• The solver implements a set of heuristic methods (named ODHeuristics) for finding feasible solutions to Mixed Integer Programming (MIP and MIQCP) models and uses IBM CPLEX as its underlying solver engine.
• The heuristics decomposition method works in an automatic fashion or can be guided by user specified selections.
• Users will need a GAMS/CPLEX or GAMS/Cplex link license for this solver to work. Commercial users will also need a GAMS/ODHCPLEX license.
• Currently, the solver is available for Windows 64-bit only.

### Xpress

• New libraries 32.01.10 containing several minor bug fixes and performance improvements.

## Tools

### GAMS Studio

• This release contains the first preview version of GAMS Studio - a completely new integrated development environment for GAMS. GAMS Studio is still in a very early stage of development, but we believe it is already mature enough to be a productive tool. GAMS Studio is available for Linux, Mac OS X, and Windows only.
• GAMS Studio combines many (but not all) features of the classic GAMS IDE with some new elements:
• a code editor to write GAMS models (including basic syntax coloring, block edit mode, etc.),
• execution of GAMS models,
• an output panel that presents the progressing GAMS log,
• a listing viewer (including a tree view to navigate through the file) to inspect the listing file,
• an interactive option editor to set GAMS parameters,
• a GDX viewer that shows the table of content and data of GDX files and offers useful details like sorting and filtering of data,
• a project explorer helps to manage different projects in one session, and
• an integrated help system to make it easier to find additional information, e.g., by pressing F1 while the cursor is on a GAMS keyword in the code editor.
• We encourage our users to weigh in, help prioritize GAMS Studio's future development directions, or provide any other feedback. If you find problems, miss features, or have comments, please send a note to studi.nosp@m.o@ga.nosp@m.ms.co.nosp@m.m.
• It is also possible to contribute directly or build on top of GAMS Studio, since the source code is available on GitHub (https://github.com/GAMS-dev/studio) under the GNU GPL license (see https://github.com/GAMS-dev/studio).
• We plan to provide updates for GAMS Studio frequently in the near future, also separate from new releases of the GAMS distribution. To facilitate the update process, Studio includes an interactive check (requiring an Internet connection) for the availability of newer versions. This "Check for Update" button can be found below the menu "Help".
• A short overview about GAMS Studio can be found in the YouTube channel GAMS Lessons.
• Note
• New options to define the association for GAMS files (.gms) have been added to the installer for GAMS on Windows. For now, the GAMS IDE is still the default choice, but this may change for future releases.
• On Linux, Studio is installed in the form of an AppImage as part of the GAMS system directory.
• On Mac OS X, Studio is part of the DMG installer only. It is installed as an additional application in the Applications directory next to the GAMS Terminal application and is available through the Launchpad. GAMS files (.gms) are associated with GAMS Studio.
• Attention
• In rare cases, GAMS Studio crashes when the Open or Save dialog gets opened. This is mostly related to third party software, e.g. older versions of "Dell Backup and Recovery". It is recommend to update, switch off or uninstall the software.
• We are aware of some performance issues at this stage of development. So while things work well, for example, with the models from our model libraries, you might experience some delay when working with huge files, e.g., while searching or when the log is processed for very long output.

### XLSDump

• Sometimes, Excel Spreadsheets contain links to pictures, which cannot be found. This situation caused an error in XLSDump in previous versions. Now, such an error is ignored.

## Object Oriented APIs

• New implementation of GAMSJob.Interrupt() on Linux and Mac OS X that removes dependency to the command line tool pstree.

### C++

• Added support for Microsoft Visual Studio 2015 on Windows 32-bit.

## Expert Level APIs

• All Java native interfaces to expert-level APIs are now included in [Path/To/GAMS]/apifiles/Java/api/GAMSJavaAPI.jar.

### GMO

• The constant MAXEVALTHREADS (i.e. the number of parallel threads supported for function and derivative evaluations in the solver interface library GMO) has been increased from 16 to 64. This effectively increases the same limit in the CONOPT4 solver.

## Model Libraries

### PSOPTLIB - Power System Optimization Modelling in GAMS

• This new library by Alireza Soroudi has been added to the GAMS system. This is a collection of the models based on the book Power System Optimization Modelling in GAMS by Alireza Soroudi. The library contains a selection of 32 models from various areas of power system optimization expressed in GAMS. Book and library describe how the General Algebraic Modeling System (GAMS) can be used to solve various power system operation and planning optimization problems. The book is the first of its kind to provide readers with a comprehensive reference that includes the solution codes for basic/advanced power system optimization problems in GAMS, a computationally efficient tool for analyzing optimization problems in power and energy systems. The book covers theoretical background as well as the application examples and test case studies. It is a suitable reference for dedicated and general audiences including power system professionals as well as researchers and developers from the energy sector and electrical power engineering community and will be helpful to undergraduate and graduate students.
• You can retrieve the individual models through the IDE and Studio model library browser, via the command line utility psoptlib or through calls in the Object Oriented APIs.

## Solver/Platform availability

x86 32bit
MS Windows
x86 64bit
MS Windows
x86 64bit
Linux
x86 64bit
Mac OS X
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.8 12.6 12.6
DECIS
DICOPT
GLOMIQO 2.3
GUROBI 7.5
GUSS
IPOPT 3.12
KESTREL
KNITRO 10.3
LGO
LINDO 11.0
LINDOGLOBAL 11.0
LOCALSOLVER 7.5 7.0
MILES
MINOS
MOSEK 8
MSNLP
NLPEC
OQNLP 32bit
PATH
SBB
SCIP 5.0
SNOPT
SOLVEENGINE
SOPLEX 3.1
XA
XPRESS 32.01 29.01

# 25.1.2 Minor release (August 01, 2018)

## 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 Marcel Adenauer, Shaoyan Guo, Eden Huang, David Laudy, Evangelos Panos, Wilfredo Sifuentes and Larissa de Vries.

## Platforms

• Fixed problem using solvers with Fortran dependencies on a Mac OS X 10.11 system.

## GAMS System

### GAMS

• Fixed a bug which caused an unexpected error when using the + operator in a model statement with the following symbol being a model itself, like this:
variable x;
equation e1, e2;
e1.. x =L= 5;
e2.. x =G= 3;
model m2 /e2/;
model m /e1+m2/;
solve m min x use lp;


## Solvers

### BARON

• Fixed translation of branching priority values when specified in BARON options file and GAMS option PriorOpt not enabled.
• Specifying maxdouble as branching priority in a BARON options file now behaves as if specifying inf as branching priority in a GAMS model.

### CONOPT

• New libraries 3.17I for CONOPT 3.
• New libraries 4.06 for CONOPT 4.

### GUSS

• Models with variable parameters and model attribute holdFixed=1 could not be solved with 25.1.1. In this release the holdFixed option is automatically turned off.

### Ipopt

• New libraries.
• Fixed problems in handling of time limit (reslim).

### LocalSolver

• New libraries 7.5 (20180601).

### ODHCPLEX

• New libraries 3.4.3.
• ODHCPLEX is now available for Linux, too.

### SoPlex

• New libraries 3.1 (b0e0048).

### SCIP

• New libraries 5.0 (1d9c207).

## Tools

### MODEL2TEX

• Backslashes in the explanatory text of symbols are replaced automatically with \textbackslash.

### GAMS Studio

• New version 0.9.2
• Stability improvements
• Allow only one instance of Studio to run at the same time (when file association for Studio is active, a double click on a gms file will open that file in a running Studio instance and does not open a new Studio)
• Added startup parameter --gams-dir to specify a non-default GAMS system folder to be used
• Added shortcuts for Interrupt and Stop (F12 and Shift+F12)
• Restructured the File -> Encoding menu
• GDX Viewer: added facility to search for symbols
• Option Editor: allow to use F1 to open help
• Project Explorer:
• Added context menu entry to open the log for a group-node
• Note
When migrating from an older version of GAMS Studio, one might have an empty project explorer and no recent files listed. This is expected behavior because of a bug fix within the GAMS Studio settings file.

## Object Oriented APIs

### Python

• Fixed a bug that prevented the setup.py file to be called with parameter -noCheck for turning off the version check.
• The setup.py script can be used from an arbitrary location. It is not required anymore to switch to the files location before installing.

# 25.1.3 Minor release (October 30, 2018)

## Acknowledgments

We would like to thank all of our users who have reported problems and made suggestions for improving this release.

## GAMS System

### GAMS

• Fixed a bug which caused the sysIdent property not being set correctly after a solve statement.
• Fixed a bug which could have caused a problem with execute_load being called after endEmbeddedCode in a loop.

## Solvers

### ANTIGONE

• If interrupting ANTIGONE (using Ctrl+C, for example), the final trydual NLP solve does no longer stop immediately in the first iteration.

### ANTIGONE, Bonmin, Couenne, Ipopt, SCIP

• Updated Intel MKL libraries to version 2018.4 on Mac OS X.

### CONVERTD

• When using options Jacobian or Hessian, new symbols iobj, objConst, and objJacVal are written to the GDX file. If the model can be reformulated with a true objection function, the symbol iobj contains the label of the objective defining equation, while the symbols objConst and objJacVal constain the objective constant and the coefficient of the objective variable. If the model cannot be reformulated with a true objective, iobj will be empty and objConst and objJacVal will be 0.

### GUROBI

• New libraries 8.1.0.
• Option GUROBIpreqlinearize allows the value of 2 (Force Linearization and get compact relaxation).

### Lindo/LindoGlobal

• New libraries 11.0.338.

### MOSEK

• New libraries 8.1.0.64.

## Object Oriented APIs

### Python

• The UpdateAction Primal and Dual in a GamsModifier` were not recognized and triggered an exception. This has been fixed.