26 Distribution

# 26.1.0 Major release (February 02, 2019)

## 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 Stefano Alva, Adam Christensen, Hanna Donau, Stephen Frank, Anastasis Giannousakis, Jan-Erik Justkowiak, David Laudy, Andreas Lundell, Thomas Maindl, Nils Mattus, Scott McDonald, Noah Rhodes, Tom Rutherford, and Anna Straubinger.

## Versioning

From this release on, we use a new interpretation on the GAMS version number scheme XX.Y.Z. XX alone now indicates the GAMS distribution number (was XX.Y before). Y is used to distinguish between beta, major, and minor releases of the XX distribution. Z is used to distinguish different maintenance releases. That is, we now use

• XX.0.Z for beta versions,
• XX.1.0 for the major release of distribution XX,
• XX.Y.0, Y > 1, for minor releases,
• XX.Y.Z, Y ≥ 1, Z > 0, for maintenance releases.

See Release Types regarding the meaning or what constitutes a major, minor, or maintenance release. As before, we increase the required license date for major releases only.

Further, we changed the default installation directory of the GAMS system from using only the distribution number to also include the minor version number. Thus, as before, GAMS is now installed into directory names which contain the XX.Y part of the GAMS version number.

## Platforms

• We plan to drop support for Mac OS X 10.11 (El Capitan) with the next major release.
• We plan to drop support for Windows Vista with the next major release.
• Fixed problem using solvers with Fortran dependencies on a Mac OS X 10.11 system.

## GAMS System

### GAMS

• Changed behavior of $compress,$decompress, and $encrypt: source and target cannot be identical anymore; this could have lead to unreliable behavior in the past. • Extended the influence of$onMulti: This affects the model statement as well now.
• Added new dollar control option $onMultiR, which is similar to$onMulti but replaces existing data instead of merging into it.
• Added put_utility keyword solver to select a solver for a given or all possible model types by name at execution time.
• Extended the syntax to allow Implicit Set Definition (or: Domain Defining Symbol Declarations). Here is a small example showing how this can be used:
Set
i 'canning plants'
j 'markets';

Table d(i<,j<) 'distance in thousands of miles'
new-york  chicago  topeka
seattle         2.5      1.7     1.8
san-diego       2.5      1.8     1.4;

Display i,j;

And this is the result of the Display statement:
----     10 SET i  canning plants

seattle  ,    san-diego

----     10 SET j  markets

new-york,    chicago ,    topeka

• Updated the base module and components as necessary to allow for spaces in names of any files and directory used by GAMS, including the system directory, the working directory, the scratch directory, the process directory, and remove any checks warning about and preventing this. While the Windows system had already allowed spaces in previous versions, this change updates the other platforms to behave similarly.
• Changed the reading of command-line arguments on non-Windows platforms! This should only affect how arguments with spaces in them are passed on to GAMS. Previously, such arguments needed extra quoting or protection on non-Windows platforms. With this update, the extra protection is no longer needed: the same quoting of space-containing arguments can be used on all platforms. For example, with GAMS 25.1 and previous, two pairs of quotes were required on non-Windows platforms to protect spaces in an argument:
gams xx.gms --MY_GDX '"outer space"'

while now only one pair of quotes is needed on all platforms:
gams xx.gms --MY_GDX "outer space"

• Increased the number of labels, which can be handled by GAMS from 200 million to ~2.1 billion and let GAMS terminate with the meaningful error message, if that limit is reached.
• Windows only: Fixed a bug which treated a path (e.g. to an input file or used as inputDir) as relative path, if it starts with /. Example: When running cd C:\tmp && gams.exe /data/myModel.gms, GAMS tried to load the file C:\tmp\data\myModel.gms in the past. Now, it loads C:\data\myModel.gms.
• Fixed some problems with option asyncSolLst.
• Fixed a bug which could have caused GAMS to accept duplicate entries in a data statement, when they came in unsorted order.
• Fixed the dollar control option \$onUpper (it did not do anything before).

### GMSPython

• Updated pip to work with recent Mac OS X versions.

## Solvers

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

• Fixed an MKL error when running any of these solvers after CPLEX with solvelink=5 in the same GAMS run on Linux.
• Updated Intel MKL libraries to version 2019.0 on Linux and to version 2018.3 on Windows 64-bit.

### BARON

• New libraries 18.11.12 for 64-bit platforms.
• New cutting planes for convex-transformable functions.
• New cutting planes for polynomial optimization problems.
• More robust treatment of cutting planes.
• Improved optimality-based range reduction mechanisms.
• CBC can now use multiple threads on Windows, too.
• We plan to drop BARON for Windows 32-bit with some future release.
• The solver time reported back to GAMS (resource usage) is now the wall clock time instead of the CPU time.

### Bonmin, CBC, Couenne, Ipopt

• New libraries.

### CONOPT 4

• New library 4.09 with many reliability improvements and a fix for wrong non-opt markers.

### CPLEX

• Ctrl-C (or Interrupt) was broken for GAMS/CplexD. This has been fixed.
• Improved performance of retrieving the solution for a QCP with many quadratic rows.

### Gurobi

• The solver time reported back to GAMS (resource usage) is now the wall clock time instead of the CPU time on Unix.
• Allow quadratic rows with =E= and let Gurobi deal with potential errors. Gurobi can sometimes substitue quadratic terms defined by =E= rows. The check of quadratic row to be either =L= or =G= in the GAMS/Gurobi link prevented this.

### KESTREL

• Added support for MPSGE models.

### Knitro

• New libraries 11.1.1 (11.0.1 for 32-bit Windows) containing several bug fixes and performance improvements, including:
• improved performance on convex quadratic models,
• improved generation of knapsack cuts, resulting in faster performance on some MINLP models,
• improved performance when using the SQP algorithm,
• new values for option linsolver to choose parallel factorization routines MA97 and MA86.
• Artelys has announced that Knitro 11.0 was the last Knitro release to support 32-bit Windows. We will be dropping GAMS/Knitro for 32-bit Windows in the near future.

### Lindo/LindoGlobal

• New libraries 12.0.90.
• LP Solver Improvements:
• With new enhancements made to the simplex solvers, the average performance on large instances has increased by 18% for the primal simplex and 15% for the dual simplex compared to the previous version.
• Improved performance on LP’s when using multiple cores with concurrent execution of Primal, Dual, and Barrier.
• Quadratic and Nonlinear Solver Improvements:
• Much faster handling of large quadratic matrices, e.g. 1000 x 1000.
• Global Solver Improvements:
• Improved handling of discontinuous functions, e.g., MOD(x,k), ROUND(x).

### LocalSolver

• New libraries 8.0 (20181106).
• Performance improvements on routing & scheduling problems, especially Pickup & Delivery problems.
• Learning algorithms inside LocalSolver, which allow to automatically and dynamically tune up the search process for each solved instance, were improved. This leads to improved performances, especially for short resolution times (minutes).

### Mosek

• New libraries 8.1.0.72.

### OQNLP

• We plan to drop OQNLP with the next major release.

### PATH

• New libraries 5.0.00.
• Fixed crash in Lemke's method that could happen for models with extremely poor scaling.
• New capability to use alternate basis-handling packages via dynamic loading of shared libraries. Two alternate packages are currently supported:
• BLU-LUSOL: Block LU updating using the LUSOL routines. The shared library required for this is included in the distribution.
• UMFPACK: Tim Davis' multifrontal LU factorization package. The shared library required for this is not included in the GAMS distribution, but can be downloaded from the SuiteSparse site. N.B.: We have verified UMFPACK on Linux, Mac OS X, and Windows using UMFPACK v5.7.7 from SuiteSparse 5.3.0.

### SELKIE

The SELKIE solver - new to GAMS with this release - is an EMP solver that implements decomposition methods for multi-agent equilibrium and related models.

### SoPlex

• New libraries 4.0.1.
• new simplifier step to perform variable aggregation for equations with two variables
• new parameter bool:ensureray to re-solve the original problem in case of infeasibility/unboundedness to get a valid proof/ray

### Xpress

• New libraries 33.01.10.
• local symmetry re-detection in MIP tree search
• improved branching for highly symmetric MIPs
• new or improved cuts, degeneracy handling, crossover, preprocessing
• FICO does not release patches for all platforms with each patch release, so some platforms lag behind the most-used ones.

## Tools

### CSV2GDX

• Extended recognition of special values:
• N/A is recognized as NA,
• TRUE is recognized as 1,
• FALSE, NONE and NULL are recognized as 0.
• Added new option text to specify the column to get explanatory text from when reading a set.
• Changed handling of bad UELs: Reading a bad UEL (e.g. a UEL exceeding the maximum length) causes an error now. The old behavior can be enabled again using the new option acceptBadUels.

### GAMS Studio

• New version 0.10.3
• Stability and performance improvements.
• Added a new section Comparing GAMS Studio and GAMSIDE to the documentation.
• Added a Reference File Viewer to navigate the source code of GAMS models via a reference file, especially when multiple files are involved. A reference file contains all symbol references of GAMS models and is created using the reference parameter when running the model.
• Added a Tab Browser to list and search through all open files. It is accessible with a button next to the main tab bar or via the shortcut Ctrl+K.
• GDX Viewer :
• Added a first, basic version of a Table View : The new button "Table View" switches the view to a table based representation. The button is only enabled for multidimensional symbols and puts the last dimension into the header of the table. Drag and drop of items is not yet supported but will be in the future.
• Added option to hide specific value columns for variables and equations.
• Added support for the use of different encodings using the "Edit->Encoding" menu. The default encoding for a GDX file generated in Studio by running a GMS file with automatic GDX creation (F10) is the one used by the GMS file.
• Editor
• Added smart typing: Automatic insertion of closing character for brackets and quotes.
• Added ability to select text and press either a opening bracket or quote to surround text with these symbols.
• Improved backspace behavior, if auto indentation is active.
• Output Widget
• Added info, warning, and error messages to GAMS Studio system log.
• GAMS log files are now written to disk (can be disabled in settings).
• Project Explorer
• Studio automatically adds all files specified through GAMS parameters (.gdx, .ref, .lst) to the Project Explorer.
• Allow to rename Project Explorer groups.
• Groups are closed if they are empty.
• If a group is closed the associated GAMS process will be stopped.
• Added drag and drop of files between groups.
• Added shortcut to focus Project Explorer (Ctrl+J) and allow to navigate using arrow keys to select a file.
• Added "Select all", "Expand all" and "Collapse all" to the context menu.
• Added shortcut to select all files (Ctrl+A).
• Various
• Added animation for groups with running GAMS processes.
• Studio comes to foreground when double clicking a Studio-associated file.
• The "About GAMS" dialog contains many important information like used GAMS version, system directory, or license information. It features a "Copy System Information" button which copies all of these information to easily attach them to a support request. The dialog has a second tab which gives an overview about solvers, their license status, and what kinds of capabilities they have.
• "File -> New..." dialog starts with a default for a new file name.
• "File -> Open..." (or drag'n'drop) of one file now focuses that file if it is already present in the Project Explorer.
• New entry "File -> Open... in new group" to force creation of new group (even if the is already present in the Project Explorer).
• "File -> Open..." (or drag'n'drop) of multiple files puts all files opened at once into a single group instead of individuals.
• Added shortcut to focus command line parameter edit field (Ctrl+L).
• Added Ctrl+F as close shortcut for search dialog.
• Changed shortcut to open Settings dialog to F7.
Note
This version of GAMS Studio does not support the Dark Mode of MacOS Mojave. Please disable this mode to use GAMS Studio.

### GDXDUMP

• New options for writing out special values: NAOut, UndfOut, PInfOut, MInfOut, and ZeroOut.
• Fixed broken generated GAMS code, if UelTable option was used, but there were no UELs.
• Lower and upper bounds of equations are dumped always now (even if their values are the default). This fixes a potential problem, that the equation type is unknown for the generated GAMS code.
• When writing CSV files the element text of set elements could not be written. Now with enabled option CSVSetText the element text of a set element is written as the last column in the CSV file.

### GDXXRW

• Fixed a bug which could have caused a crash when reading merged cells from Excel using the GDXXXRW options useRC and cMErge=1.

### MODEL2TEX

• The new script model2tex.sh sets the required dependencies for the model2tex tool on Linux and Mac OS X. Using this script is the recommended way for using model2tex. Calling the Python script directly is not recommended anymore since the used Python interpreter would need to be configured manually. model2tex.sh uses the Python interpreter that comes with the GAMS distribution.

## Object Oriented APIs

### Python

• The setup.py script now installs the idx expert-level API.

## 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 18.5.8
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 8.1 7.5
GUSS
IPOPT 3.12
KESTREL
KNITRO 11.1 11.0
LGO
LINDO 12.0
LINDOGLOBAL 12.0
LOCALSOLVER 8.0
MILES
MINOS
MOSEK 8
MSNLP
NLPEC
ODHCPLEX 4
OQNLP 32bit
PATH
SBB
SCIP 6.0
SNOPT
SOLVEENGINE
SOPLEX 4.0
XA
XPRESS 33.01 32.01 29.01
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170