32 Distribution

# 32.1.0 Major release (July 31, 2020)

## 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 Youngdae Kim, Michaja Pehl, Thomas Rutherford, and Igor Sheleg.

## Platforms

• Dropped support for Sparc Solaris and AIX systems.

## GAMS System

### GAMS

• New default values for some GAMS options:

new default old default
logOption 3 1
empty on off
errMsg 1 0
errorLog 2147483647 0
lstTitleLeftAligned 1 0
putPW 32767 255
pageContr 2 3
pageSize 0 58
pageWidth 32767 255
optCR 0.0001 0.1
intVarUp 0 1
resLim 1e10 1000
solveLink 2 0
iterLim 2147483647 2e9

In order to work with the default values active in GAMS 31, copy the file gams31config.yaml (part of the GAMS system directory) into the location searched by GAMS for configuration files (e.g. the GAMS system directory) with the name gamsconfig.yaml.

• Extended the impact of command line parameter etLim, so that it reduces resLim for models solved automatically if that is greater than etLim - timeElapsed.
• Added new option zeroToEps to allow reading zero values as EPS at execution time.
• Added new options procTreeMemMonitor and procTreeMemTicks to enable monitoring of a memory high-water mark for the GAMS process and all its children.
• Adjusted behavior of command line parameters restart, restartNamed, save, saveObfuscate, xsave, and xsaveObfuscate: If a file name is given including a file extension, this extension is kept. In the past it was replaced by a default extension. Also, ? is not allowed in the file name when writing a save file anymore.
• Extended influence of command line parameter inputDir, so that it also extends the search path for GDX files loaded with $gdxIn. • Extended the search space for files included via$libInclude, extrinsic function libraries, and external equation libraries: Now, the directories inclib, extrinsic_functions, and external_equations, resp., are checked in all GAMS standard locations before [GAMS System Directory]/inclib, [GAMS System Directory], and [GAMS Working Directory], respectively.
• Renamed the command line parameter execErr to maxExecError to be in sync with the related function maxExecError. The old name is still available as a synonym.
• Added command line parameter previousWork to instruct GAMS to write a workfile using the format of an older GAMS version. This is useful in particular with submission to the NEOS server.
• Adjusted the function values returned by the power functions (e.g. x**y). In some cases where x is very small and positive the derivatives may become unbounded but the function values are well-behaved and can still be computed precisely and without overflow.
• Fixed a problem on Linux when the XGD_CONFIG_DIRS or XGD_DATA_DIRS variables have more than 7 directory entries.

### GMSPython

• Added the packages pandas, numpy, openpyxl, schema, tqdm and their dependencies.

### Windows Installer

• Added a checkbox for enabling/disabling the creation of a start menu entry to the Select Start Menu Folder Wizard page. The default state of the checkbox is inherited from previous installations.
• Command line argument /noIcons can be used in order to check the Don't create a Start Menu folder checkbox on the Select Start Menu Folder page.
• New command line argument /desktopIcons=yes|no (default:yes) can be used in order to turn on/off the creation of Desktop icons.
• The installer now writes all registry entries either to HKEY_CURRENT_USER\Software\Classes (current user) or HKEY_LOCAL_MACHINE\Software\Classes (all users).
• Show warning in case the system GAMSDIR environment variable is updated, but a user GAMSDIR environment variable exists and not vice versa.
• Always notify the operating system about changed environment variables.
• Changed the default installation location from C:\GAMS\win64\XX.Y to C:\GAMS\XX (e.g. C:\GAMS\32).
• Desktop shortcut names have been changed to GAMS IDE 32 and GAMS Studio 32.
• Start menu entry reads GAMS XX (e.g. GAMS 32) instead of GAMS XX.Y (win32/win64).
• Fixed a bug that prevented file associations (.gdx and .gms files) from working properly in certain cases.

## Solvers

### Bonmin, CBC, Couenne, LocalSolver, Osi links, SHOT, SoPlex

• Fixed that a setting of GAMS option iterlim to 2000000000 (the previous default) was not passed on to the solver.

### CONVERT

• New output format: JuMP scalar model.

### GUROBI

• Fixed a bug introduced with 31.1.0 and only partly fixed in 31.1.1 where the GRB_LICENSE_FILE environment variable was incorrectly dropped.

### Ipopt

• Updated Mumps to 5.3.3.

### KESTREL

• Kestrel interface source code has been ported from Python 2 to Python 3.
• Also on Windows, the source code of the link is now distributed instead of a binary.
• The GAMS distributed Python intepreter (GMSPython) is used for running the Kestrel client.

### KNITRO

• New libraries 12.2.2.
• Knitro 12 adds many improvements to the Knitro mixed-integer (MIP/MINLP) branch-and-cut solver. Several new cuts controlled by Knitro user options have been introduced including mixed-integer rounding cuts, zero-half cuts and clique cuts. In addition, improvements were made to the knapsack cuts implementation.
• Knitro 12 offers several enhancements to the Knitro presolver. The presolver has been extended to allow multiple passes through the presolve operations. There are new presolve operations for variables in complementarity constraints and to tighten variable bounds.
• Knitro 12 offers efficiency and storage/memory improvements in the callable library C API - the one used in the GAMS link!
• Knitro 12.2 enables default parallelism when using multi-start or multi-algorithm features.
• Knitro 12.2 offers several performance speed-ups:
• on very large models with the default (i.e. interior-point) algorithm: potentially dramatic
• when using the limited-memory BFGS Hessian option
• in the SQP algorithm
• A number of minor bug fixes and performance improvements are included in this release: rare segmentation fault with knapsack cuts fixed, bug in convexity detection fixed, poor/slow choice of algorithm for LP sub-problems fixed, poor/slow presolve issue on MIP models fixed.

### LocalSolver

• New libraries 9.5 (20200701).
• Setting iterlim to the maximal possible value (2147483647) will not change the default iteration limit of LocalSolver anymore, see also the documentation.

### Mosek

• New libraries 9.2.14.

### ODHCPLEX

• New libraries 5.2.2.
• New options integerTol, subOrder, subPresolve, zeroTol, penPerturb, and threadZeroSync have been added. The options newCallback and variableClean allow for more option values.
• New handling of solutions that are not quite integer but within the integer feasibility tolerance of CPLEX but become infeasible if one rounds the integer variables. ODHCPLEX used to reject such solutions (while in CPLEX (and other MIP solvers) such solutions are considered acceptable for the user).

### SoPlex

• Setting iterlim to the maximal possible value (2147483647) will not change the iteration limit of SoPlex anymore, so that SoPlex will run without a limit.

### XPRESS

• New libraries 8.8.5.
• New solver: XPRESS SLP and XPRESS Knitro for nonlinear (mixed-integer) programming.
• XPRESS SLP is a sequential linear programming (SLP) solver and XPRESS Knitro equals Knitro, but the problem is passed through the XPRESS nonlinear presolve.
• Both can solve convex MINLP to global optimality and act as a heuristic method for general nonconvex problems.
• XPRESS SLP offers a multistart to run different configurations in parallel or to start with multiple initial guesses.
• If both XPRESS SLP and XPRESS Knitro are licensed, XPRESS can choose the nonlinear solver automatically based on instance attributes.
• For more information about the XPRESS SLP algorithm, see FICO Xpress Optimization Help (Nonlinear Reference Manual).
• XPRESS SLP and XPRESS Knitro are available on all supported platforms.
• XPRESS SLP requires a license for continuous nonlinear models or for mixed-integer nonlinear models.
• XPRESS Knitro requires a GAMS/Knitro license in addition to the XPRESS license for (mixed-integer) nonlinear models.

## Tools

### CHK4UPD

• If the components of the checked license have different expiration dates, the validity of the license always refers to the base component now. In the past, the component with the oldest expiration date was used.

### FINDTHISGAMS

• Support for registry key changes of the Windows installer has been added.
• New command line parameters list, delete, write, and ide. See the documentation for detailed information.

### GAMS Studio

• New version 1.3.3.
• New feature: Code Folding
• Shortcut Alt+L switches folding state of the current block.
• Shortcut Alt+O folds and Shift+Alt+O unfolds all foldable blocks.
• Code folding is possible for pairs of parentheses that span multiple lines or Dollar Control Options that come in pairs.
• New feature: Remote execution on NEOS Server for Optimization
• Models can be executed remotely via the menu GAMS -> Run NEOS or the execute button located in the toolbar.
• Note: Usually it takes some time before the GAMS version at NEOS gets updated. During that time one might get an error because of an incompatible workfile version. This can be avoided by setting the command line parameter previousWork to 1.
• New feature: Navigation History
• Mouse button 4/5 or Alt+Left/Right on Windows/Linux and Ctrl+[/] on Mac OS X can now be used to jump back to a previous text cursor positions or forward again. This is helpful to quickly navigate between different locations in files that one is currently working with.
• New feature: Distraction Free Mode
• Distraction Free Mode quickly turns off everything except for the editor window for better focus on modeling work. This is especially useful for small screens. When leaving Distraction Free Mode all Studio widgets will be put back where they were. To switch to and from Distraction Free Mode go to the Menu > View > Distraction Free Mode, or press Ctrl+Alt+Enter on Windows and Linux, or Cmd+Option+Enter on Mac OS X.
• New feature: Print support for text files (gms, txt, lst, dmp, ...). This is accessible with the shortcut Ctrl+P or in the menu File -> Print.
• Added automatic switch to first non-empty tab when searching the Model Library Explorer. The old tab selection is restored if that tab contains results again.
• Added header labels to copy actions in GDX Viewer table view. Two additional entries that allow to copy without the labels are available via the context menu.
• Added dmp extension to list of executable file types.
• Added Shift+Option+Up/Down hotkey to start block-edit on Mac OS X.
• Changed terminal to native Mac OS X Terminal on Mac OS X.
• Stability improvements and minor bug fixes, e.g.:
• Fixed syntax highlighter not recognizing "+" and "-" in "Model" statement.
• Fixed missing LXI pane for files containing more than one dot.
• Fixed group name for gms files containing more than one dot in the name.
• Fixed rare random crash when opening the MIRO Model Assembly File dialog.
• Fixed some icons not following selected theme.
• Fixed line wrapping behavior not following settings.
• Fixed that bookmarks in help view were not being saved permanently.
• Fixed crash on reading LXI files containing empty lines.
• Fixed some issues with the license file detection and info in the "About GAMS" dialog.
• Fixed missing reload if a opened GDX file gets recreated.

### MODEL2TEX

• Source code of model2tex has been ported to Python 3 and does not support Python 2 anymore.
• Distribute source code instead of binary on Windows. model2tex.exe has been replaced by model2tex.cmd.
• The GAMS distributed Python interpreter (GMSPython) is used for executing model2tex.
• Command line parameter -e has been deprecated and will be removed in the future.

## APIs

• Automatically finding a GAMS installation from the Windows registry has been changed according to the changes to the Windows installer ([HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE]\Software\Classes\gams.location).
• The performance of the Object-oriented APIs (in particular the class GAMSDatabase) has been improved.

### .NET

• Change to GAMSWorkspace.AddCheckpoint: The checkpointName is now determined automatically as well when given as string.Empty, not only when set to null or being omitted.

### Python

• As announced, dropped support for Python 2. The Object-oriented API as well as the expert-level APIs can be used with Python 3.6, Python 3.7, and Python 3.8.
• An experimental object oriented data interface called gamstransfer has been added. This interface is built on the expert-level Python APIs and simplifies the work of reading and writing GDX files. The underlying data structure is built on structured numpy arrays; this structure allows data to be easily converted directly to Pandas DataFrames (or other native Python data types). This release of gamstransfer should be considered a beta product and will be subject to changes in the future that may result in compatibility issues.
• New experimental API gams2numpy for communicating data between GAMS and numpy arrays has been added. This release of gams2numpy should be considered a beta product and will be subject to changes in the future that may result in compatibility issues.

New models:

New models:

New models:

x86 64bit
MS Windows
x86 64bit
Linux
x86 64bit
Mac OS X
ALPHAECP 2.10
ANTIGONE 1.1
BARON
BDMLP
BONMIN 1.8
CBC 2.10
CONOPT 3
CONOPT 4
COUENNE 0.5
CPLEX 12.10
DECIS
DICOPT 2
GLOMIQO 2.3
GUROBI 9.0
GUSS
IPOPT 3.13
KESTREL
KNITRO
LGO
LINDO 12.0
LINDOGLOBAL 12.0
LOCALSOLVER 9.5
MILES
MINOS
MOSEK 9
MSNLP
NLPEC
ODHCPLEX 5
PATH
SBB
SCIP 7.0
SHOT 1.0
SNOPT
SOLVEENGINE
SOPLEX 5.0
XA
XPRESS 35.01

# 32.2.0 Minor release (August 26, 2020)

## 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 Charles Chan, Ricardo Lima, Sandro Konrad Luh, Ami Reznik, Tom Rutherford, and Berk Uzundere.

## GAMS System

### GAMS

• Introduced new values 3 and 4 for option savePoint that allow to save the point file in the scratch directory.
• Fixed a bug which in rare cases caused GAMS to write files exceeding 80,000 characters per line (and thus the maximum line length GAMS can handle) when the command line parameter dumpopt was set.
• Fixed a bug in restart files that incorrectly stored the location of the GAMS configuration file (gmscmpXX.txt).
• Fixed a bug that is related to providing the GAMS configuration file (gmscmpXX.txt) explicitly via command line parameter subSys.
• Fixed reporting of compilation errors in encrypted input files.
• Fixed the count of discrete variables in the model statistics in case any discrete variable was fixed.

### Windows Installer

• Fixed a bug that prevented registry entries from being removed correctly during uninstallation.

## Solvers

### Gurobi

• New libraries 9.0.3.

### Lindo/LindoGlobal

• New libraries 12.0.208.
• Fixed a rare problem with stochastic problems.

### Mosek

• New libraries 9.2.18.

### SCIP

• New libraries 7.0 (80549b8905).
• PaPILO updated to 1.0 (d0e5444cd).

### SoPlex

• New libraries 5.0 (3623dbc0).

## Tools

### GAMS Studio

• New version 1.3.4.
• Minor bug fixes, e.g.:
• Show community license type in the solver matrix.
• Fixed missing tab browser button when Studio starts in maximized or full-screen mode.
• Fixed insertion of auto-closing characters in unwanted situations (e.g. beginning of a word).

### GDX2VEDA

• Fixed a bug which in rare cases crashed the tool for large data sets on Windows.

Updated models: