24.1 Distribution

# 24.1.1 Major release (May 30, 2013)

## 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 Étienne Ayotte-Sauvé, Stephen Frank, Youngdae Kim, Andres Ramos, Steffen Rebennack, and Francisco Trespalacios.

## GAMS System

### Installer

• The GAMS installer for Windows is now digitally signed which allows to verify the authenticity

### Documentation

• McCarl guide has been updated

### GAMS

• new log output option lo=4 has been added: writes simultaneously to log file and stdout.
• Memory leak for GUSS/ScenarioSolver fixed. This also was a problem for the GAMSModelInstance in the OO-API.
• Command line option OptFile does not overwrite model.optfile anymore. OptFile now behaves as other GAMS options e.g. like ResLim. A new command line option ForceOptFile overwrites all other methods of setting a solver option.
• New option NoNewVarEqu will trigger a compilation error when new equation or variable symbols are introduced. This is useful for testing GAMS run-time environments.
• New option SymPrefix that prefixes all user symbols compiled in this run with the string value of this option before saving to a save/restart file. This is useful when merging multiple models together to avoid name clashes.

### GAMS IDE

• The text comparison utility menu has been changed and now has a structure similar to the GDXDIFF menu; previous file selections are available in the drop-down fields
• The help menu has a link to the search page on the GAMS website

## Solvers

### "D" Solvers

• The "D" solvers GAMS/ConvertD and GAMS/CplexD started as research and development versions of the production solvers GAMS/Convert and GAMS/Cplex and offer some interesting new features that eventually will migrate into the production version.

### ALPHAECP

• Alpha-ECP v2.10.02. New option ECPmaster and minor performance improvements.

### ANTIGONE

• The new solver ANTIGONE (Algorithms for coNTinuous / Integer Global Optimization of Nonlinear Equations) is a computational framework for deterministic global optimization of nonconvex MINLP. ANTIGONE performs equivalently to GloMIQO when all nonlinearities in MINLP are quadratic.
• ANTIGONE has been developed by Computer-Aided Systems Laboratory at Princeton University; it was completed in collaboration with the Centre for Process Systems Engineering at Imperial College.
• GAMS/ANTIGONE is available for the 32-bit and 64-bit versions of Windows and Linux.
• GAMS/ANTIGONE requires the presence of a GAMS/CPLEX license and either a GAMS/CONOPT or a GAMS/SNOPT license.

### Bonmin, Couenne, Osi*, SCIP

• Marginals are now reported as 'NA', if not available, instead of 0.

### Baron

• New libraries 12.3
• New relaxations for certain types of quadratic problems
• Clp 1.14.8
• Farkas infeasibility test to validate LP subsolver claims of infeasibility (Cplex and Clp only)
• Dynamic memory allocation, options workspace and workfactor have been removed
• Improved integer presolve
• Incorporation of convex envelopes for certain low-dimensional functions

### CBC

• New libraries Clp 1.15 and Cbc 2.8
• An implementation of zero-half cuts is now available. So far, they may help only on a small subset of problems and may need some tuning, so they are off by default. The new option zerohalfcuts can be used to enable them.
• Alternative implementations of Gomory mixed-integer and reduce and split cuts are now available. By default, these cuts are off. The new options gomorycuts2 and reduceandsplitcuts2 can be used to enable them.
• Added new parameter cut_passes_slow to encourage the use of some of the more exotic/expensive cut generators.
• The random seeds for CLP and CBC can now be set by user via the new options randomseedclp and randomseedcbc.
• Cbc can now solve the root node multiple times, each with its own different seed. This can be enabled via the new option multiplerootpasses.
• New option extravariables that switches on a trivial re-formulation that introduces extra integer variables to group together variables with same cost.
• New option cutoffconstraint to add the objective function as a constraint which right hand side is set to the current cutoff value to the problem.
• New option parallelmode to switch between deterministic and opportunistic parallelization. NOTE: The default is deterministic, while it was opportunistic in the past.

### Cplex

• New libraries 12.5.0.1 (fix pack 1)
• New link option solnpoolmerge to write all solutions into a single GDX file
• Solutions from the solution pool are written in sorted order from best to worst
• GAMS/CplexD supports the Cplex remote object. See option ComputeServer.

### CONOPT

• New libraries 3.15K
• Fixed a system error (303) related to inversion of very large matrices.
• Adjusted some test output to handle more than 1 mill rows and columns.
• If the directional 2nd-derivative routines returned an error and should be turned off they were not turned off after all and the result was poor performance and many strange messages. Problem Fixed.
• The final model could be infeasible and still declared feasible if the initial and final scaling factors were very different. Problem Fixed.

### DICOPT

• added parameter 'infbnd' to control which value to use for missing bounds in integer cuts (default is 10000)

### EMPSP

New experimental keywords making use of the extrinsic function library lsadclib to sample random variables with parametric distributions, any feedback will be appreciated:

• sample <rv1> [rv2 ... rvn] <sampleSize> [varRedGroup]
• sample: keyword
• rv?: name of random variable
• sampleSize: size of sample
• varRed: variance reduction group, mapped to variance reduction method using solver option file
• Example:
• %emp.info%:
• sample d 5 group1
• lindo.opt
• SVR_LS_ANTITHETIC=group1
• setSeed <seed>
• Sets the seed for sample

### GloMIQO

• New libraries 2.2
• Fixed bug in detecting when aBB cuts should be generated.

### Gurobi

• New libraries 5.5
• New options
• GAMS/Gurobi support Gurobi's Compute Server. See options ComputeServer and options starting with CS
• Parameter Tuning Tool: See option Tuning and options starting with Tune
• ConcurrentMIP: This new feature launches multiple, independent solves on the same MIP model, using different settings for each. The solve returns when the first one finishes. This approach allows you to exploit multiple cores to explore a diverse set of search strategies
• NumericFocus: This new parameter allows you to indicate that a model is likely to experience numerical trouble, which then causes our internal algorithms to favor numerical robustness over speed

### Ipopt, IpoptH

• New libraries 3.11
• default for option ma57_automatic_scaling changed to no
• new options print_frequency_iter and print_frequency_time to adjust amount of iteration summary output
• fixed assignment of INFES markers in listing file (infeasibilities between constraint violation tolerance and acceptable constraint tolerance were not marked)

### IpoptH

• Added a new linear system solver HSL_MA97
• Updated linear system solver HSL_MA86
• Both MA57 and HSL_MA97 should be considered as alternative to the default MA27 (see Ipopt option linear_solver)

### JAMS

• fixed a bug in substituting variables in a nonlinear equation during a convex-hull reformulation

### KNITRO

• new libraries 8.1.1

### Lindo, LindoGlobal

• New libraries Lindo 8.0
• The new GAMS/Lindo/LindoGlobal option num_threads defines the number of threads to be used, it is initialized by the GAMS option threads
• The new GAMS/Lindo/LindoGlobal option multithread_mode defines the threading mode (auto, concurrent or parallel)
• Stochastic Solver Improvements
• Nested Benders Decomposition implementation has been improved significantly, achieving speed factors up to 6X compared to the previous version
• The Chance-programming solver adds a Genetic Algorithm to find high-quality feasible solutions to large-scale instances. Models in this class can now also be solved using the Simple Benders Decomposition method
• Multithreading with Nested Benders Decomposition (NBD) solver leads to speed improvements from 2.5 to 3.5 when using 4 threads
• MIP Solver Improvements
• The heuristics are improved significantly, simple rounding and feasibility pump now use bound propagation to improve the current path to a new feasible MIP solution
• Multithreading can lead to speed improvements from 1.5 to 3.0 times on difficult problems using 4 threads rather than 1, for easy MIP problems, e.g., < 600 seconds, multi-threading may give not much speedup
• Multistart Solver Improvements
• Multistart solver has been improved significantly, achieving speed factors up to 2X compared to the previous version
• The likelihood of getting the global optimum has improved by 10-15% over a wide range of nonconvex models
• Multithreading often leads to speed improvements from 2.0 to 3.0 times when using 4 threads, speed improvements tend to improve as the model size and the number of multistarts increase
• Changed meaning of objwgt in chance constraints (CC): now it gets multiplied by the violation ratio of the CC before it was added to the objective, in previous versons it was multiplied by (1 - the violation ratio)
• Further new options
• find_block: graph partitioning method to find block structures
• gop_linearz: flag indicating if GOP exploits linearizable model

### Mosek

• Mosek 7.0.0.65
• Recognizes some quadratic constraints as cone constraints, so =c= equations can be avoided.
• AVX instructions in the latest INTEL CPUs are now exploited.
• Dropped support for Solaris Intel 64bit platform.
• The option writembt is now deprecated. Please consider using the option MSK_SPAR_DATA_FILE_NAME instead.
• The option mipstart is now a synonym for MSK_IPAR_MIO_CONSTRUCT_SOL and thus takes values MSK_ON and MSK_OFF.
• Numeric values for options with symbolic constants (e.g. MSK_IPAR_INTPNT_BASIS) are not supported anymore.

### MSNLP, OQNLP

• fixed function evaluation issues in lsgrg when using external equations

### OsiMosek

• dropped OsiMosek on Solaris Intel 64bit platform

### OSL/OSLSE

• dropped OSL and OSLSE from this and future GAMS distributions

### SCIP

• New libraries 3.0 #a4a627b

### SULUM

• New libraries 2.0.263 (Beta)
• The new SULUM libraries comes with support for mixed-integer linear programs (MIP). The new MIP optimizer is an advanced implementation of a branch and cut method, with many performance enhancements added. The key features of the MIP optimizer can be highlighted as :
• Advanced MIP presolve to reduce the problem size and provide a better formulation for the optimizer.
• Tight integration with the Sulum LP optimizer to efficiently solve LP's in node and during heuristics.
• Various branching and node selection methods from computational inexpensive to more expensive schemes.
• Cutting plane generation and filtering if deemed necessary.
• Heuristics to either find an initial solution or improve the current incumbent, which includes rounding, diving and sub-mipping heuristics types.
• Improvements to ensure numerical stability.

### XPRESS

• New libraries 24.01.04
• Improved concurrent LP solve
• Improved performance when using the parallel barrier solver
• Fix faulty dispatch of SSE3 instructions in QP
• New link option solnpoolmerge to write all solutions into a single GDX file

## Tools & APIs

### Object Oriented APIs

New features were added to the object oriented GAMS APIs including e.g. the capability to specify the domains of symbols, check for domain violations, copying ModelInstances, or setting the debug level using a environment variable. More details about new and modified functions can be found in the following sections about the different languages.

#### .NET

• Documentation
• Add tutorial (GAMS.net4.Tutorial.chm) to <Path/To/GAMS>/docs/API. From the GAMSIDE this document can be accessed at Help → Docs → API.
• GAMSDatabase
• New function CheckDomains: Check for all symbols if all records are within the specified domain of the symbol
• New function GetDatabaseDVs: Return all GAMSDatabaseDomainViolations
• New property SuppressAutoDomainChecking: Controls whether domain checking is called in GAMSDatabase export
• Function Compact becomes obsolete and will be dropped in future
• GAMSModelinstance
• New function CopyModelInstance: Copies a ModelInstance to a new ModelInstance which gets constructed at this call
• New function Interrupt: Sends interrupt signal to running GAMSModelInstance
• GAMSModifier
• Allow to define SymbolUpdateType for each GAMSModifier separately
• GAMSSymbol (GAMSEquation, GAMSParameter, GAMSSet, GAMSVariable):
• New function CheckDomains: Check if all records are within the specified domain of the symbol
• New function CopyToArray: Copies values of a dense symbol into a dense array
• New function CopyToSqzdArray: Copies values of a sparse symbol into a squeezed array
• New function CopySparseToDenseArray: Copies values of a sparse symbol into a dense array
• New function CopyFromDenseArray: Copies values from dense array into a symbol
• New function CopySliceFromDenseArray: Copies values from slice of dense array into a symbol
• New function GetSymbolDVs: Return all GAMSSymbolDomainViolations
• New function MergeRecord: Finds record in GAMSSymbol if it exists, adds it if not
• New property Domains: Domains of Symbol, each element is either a GAMSSet (real domain) or a string (relaxed domain)
• GAMSWorkspace
• Change the Debug parameter from a Boolean flag to an enum type called DebugLevel
• The Debug parameter can be overwritten by the system environment variable "GAMSOOAPIDEBUG" if set to one of the following: Off, KeepFiles, ShowLog, Verbose
• Improve performance significantly for function AddDatabase(GAMSDatabase)
• New properties: Version, MajorRelNumber, MinorRelNumber and GOLDRelNumber
• New optional parameter inModelName for functions AddDatabaseFromGDX/AddDatabase: GAMS string constant that is used to access this database
• Add new sub class of GAMSException: GAMSExceptionExecution. This provides additional info about the reason of the failed execution.
• New examples:
• C#: DomainChecking, Markowitz, SimpleCutstock, Transport13, TSP, MessageReceiverWindow
• C++: Transport Sequence
• VB.NET: Transport Sequence

#### Java

• Changes in GAMSDatabase:
• deprecates the compact method, as it has no effect anymore.
• Changes in GAMSGlobals:
• the default value of working directory has been changed from System.getProperty("user.dir") to System.getProperty("java.io.tmpdir").
• Changes in GAMSModelInstance:
• deprecates the instantiate(GAMSOptions options), instantiate(GAMSModifier[]), and instantiate(GAMSOptions, GAMSModifier[]) methods and replaced by instantiate(String, GAMSModifier ...) and instantiate(String, GAMSOptions, GAMSModifier ...) methods.
• Changes in GAMSWorkspace and GAMSWorkspaceInfo:
• deprecates boolean debug flag and replaced by a debug level flag (type of a new class GAMSGlobals.DebugLevel).
• allows an override of debug level flag from an environment variable "GAMSOOAPIDEBUG"
• Fixed a bug when iterating through the records of a GAMSSymbol.
• New enumeration class GAMSGlobals.DebugLevel:
• defines values of different GAMS Debug Levels.
• New enumerated value of GAMSModelInstance.SymbolUpdateType:
• GAMSModelInstance.SymbolUpdateType.INHERIT: to specify SymbolUpdateType separately for each GAMSModifier.
• New methods in GAMSDatabase:
• checkDomains: to check whether or not all records of all symbols are within the specified domain of the symbols.
• getDatabaseDomainViolations: to retrieve a domain violation information as a list of GAMSDatabaseDomainViolation objects.
• isAutoDomainCheckingSuppressed and suppressAutoDomainChecking: to control whether domain checking will be called when exporting a database.
• Changes in GAMSDatabase:
• the compact method is obsolete and has no effect anymore. It will be removed in the future.
• New class GAMSDatabaseDomainViolation:
• contains domain violation information of all symbols (if any) in the database.
• returns call from a new method GAMSDatabase.getDatabaseDomainViolations.
• New methods in GAMSModelInstance:
• copyModelInstance: to copy a GAMSModelInstance object.
• interrupt: to send an interrupt signal to a running GAMSModelInstance.
• new methods in GAMSModifier:
• constructor: to specify SymbolUpdateType for each GAMSModifier object.
• getUpdateType: to retrieve SymbolUpdateType property of the object.
• New methods in GAMSSymbol:
• checkDomains: to check whether or not all records of the symbol are within the specified domain.
• getDomains: to retrieve a list of domains of the symbol, each element is either a GAMSSet (real domain) or a String (relaxed domain).
• getSymbolDomainViolations: to retrieve a domain violation information as a list of GAMSSymbolDomainViolation objects.
• mergeRecord: to add a new symbol record in case the record does not exist.
• Fixed a bug when iterating through the records of a GAMSSymbol.
• New class GAMSSymbolDomainViolation:
• contains domain violation information of the symbol (if any).
• returns call from a new method GAMSSymbol.getSymbolDomainViolations.
• New methods in GAMSWorkspace:
• getGAMSVersion: to retrieve information about GAMS Version.
• getGoldReleaseNumber: to retrieve GAMS GOLD Release Number.
• getMajorReleaseNumber: to retrieve GAMS Major Release Number.
• getMinorReleaseNumber: to retrieve GAMS Minor Release Number.
• Changes of location of examples:
• from <Path/To/GAMS>/apifiles/Java/Benders*.java to <Path/To/GAMS>/apifiles/Java/benders/Benders*.java
• from <Path/To/GAMS>/apifiles/Java/Custock.java to <Path/To/GAMS>/apifiles/Java/cutstock/Cutstock.java
• from <Path/To/GAMS>/apifiles/Java/ConsoleInterrupt.java to <Path/To/GAMS>/apifiles/Java/interrupt/ConsoleInterrupt.java
• from <Path/To/GAMS>/apifiles/Java/Transport*.java to <Path/To/GAMS>/apifiles/Java/transport/Transport*.java
• from <Path/To/GAMS>/apifiles/Java/Warehouse.java to <Path/To/GAMS>/apifiles/Java/warehouse/Warehouse.java
• New examples:
• <Path/To/GAMS>/apifiles/Java/cutstock/SimpleCutstock.java
• <Path/To/GAMS>/apifiles/Java/domain/DomainCheck.java
• <Path/To/GAMS>/apifiles/Java/transport/Transport13.java
• <Path/To/GAMS>/apifiles/Java/tsp/Tsp.java

#### Python

• New examples: markowitz.py, tsp.py, transport13.py, simple_cutstock.py, domain_checking.py
• New facility for GamsSymbols with domain information:
• GamsDatabase:
• New function check_domains: Check for all symbols if all records are within the specified domain of the symbol
• New function get_database_dvs: Return all GamsDatabaseDomainViolations
• New property suppress_auto_domain_checking: Controls whether domain checking is called in GamsDatabase export
• _GamsSymbol and its derived classes:
• New function check_domains: Check if all records are within the specified domain of the symbol
• New function get_symbol_dvs: Return all GamsDatabaseDomainViolations
• New property domains: Domains of Symbol, each element is either a GamsSet (real domain) or a string (relaxed domain)
• New classes GamsDatabaseDomainViolation and GamsSymbolDomainViolation that are returned by GamsDatabase.get_database_dvs and _GamsSymbol.get_symbol_dvs
• New functions in GamsModelInstance:
• copy_modelinstance: Copies a GamsModelInstance to a new GamsModelInstance which gets constructed at this call
• interrupt: Sends interrupt signal to running GamsModelInstance
• New function in _GamsSymbol and its derived classes: merge_record finds a record if it exists and adds it if not
• New properties in GamsWorkspace: version, major_rel_number, minor_rel_number, gold_rel_number
• New optional parameter in_model_name for functions add_database_from_gdx/add_database in GamsWorkspace: GAMS string constant that is used to access this database
• Changed the debug argument passed to the GamsWorkspace constructor. Use members of class DebugLevel: Off, KeepFiles, ShowLog and Verbose instead of True and False
• New sub class of GamsException: GamsExceptionExecution, which provides additional info about the reason of the failed execution
• Allow to define SymbolUpdateType for each GamsModifier seperately
• Significant performance improvement for function GamsWorkspace.add_database when creating from an already existing database
• Changed the unicode settings on Linux from UCS2 to UCS4
• The Debug parameter of GamsWorkspace can be overwritten by the system environment variable "GAMSOOAPIDEBUG" if set to one of the following: Off, KeepFiles, ShowLog, Verbose
• The compact method of GamsDatabase is obsolete and has no effect anymore. It will be removed in the future
• Fixed a bug in GamsModelInstance.solve()
• Fixed a bug in GamsDatabase, where the special value for undefined was set to 0 instead of 1.0E300 (SV_UNDEF)
• Fixed a bug when iterating through the records of a GamsSymbol

### GDXXRW

• Some format of range names are now recognized
• More details in error message for a bad range

### GDXDUMP

• Option EpsOut
• Performance improvement when writing a large CSV file

### CSV2GDX

• New utility to convert a CSV file to a GDX file
• A simple example is in the GAMS data library

• New Windows tool that receives messages from GAMS. The GAMS Test Library model mrw01 demonstrates its usage.

## Model Libraries

### GAMS Data Library

• SpawnGAMSExcel(84): Spawn an arbitrary model from Excel
• csv2gdx1(85): testing CSV file conversions

### GAMS Model Library

• cpack (387): Packing identical size circles in the unit circle
• trigx (388): Another Trigonometric Example
• stablem (389): Stable Marriage Problem
• srtree (390): Simple Scenario Tree Construction Example
• tgridmix (391): Grid Transportation Problem with Single Submit and Collect Loop
• prisoner (392): Prisoners dilemma as EMP and MCP
• cesam2 (393): Cross Entropy SAM Estimation
• solmpool (394): Cplex Solution Pool for a Simple Facility Location Problem with Merged GDX Solution File

### GAMS Test Library

• nlcode7 (586): Test for NL code bug from Dist 24.0.1
• n3707 (587): MIP model used by CTRLC test
• mod011 (588): MIP model used by CTRLC test
• fuzzy(589): MINLP model used by CTRLC test
• nuclear49b (590): MINLP model used by CTRLC test
• enpro56 (591): MINLP model used by CTRLC test
• popdynmMCP25 (592): MCP model used by CTRLC test
• popdynmMCP250 (593): MCP model used by CTRLC test
• popdynmMCP1000 (594): MCP model used by CTRLC test
• gft (595): MPSGE model used by CTRLC test
• pf4mip (596): Test unbounded integer variables (MIP)
• pf4minlp (597): Test unbounded integer variables (MINLP)
• emp12 (598): Test of EMP equilibrium models and fixed vars
• emp13 (599): Test of EMP equilibrium models and fixed vars
• emp14 (600): Test of EMP equilibrium model with vi func
• emp15 (601): Test of EMP equilibrium model with vi func
• emp16 (602): Test of NLP -> MCP via JAMS
• miqcp03 (603): Test modsolstat & solution correctness - multiple QCons & binaries
• mcp10 (604): MCP model with negative equ.var
• convert8 (605): Test that eps in nonlinear code is kept by convert
• gurobi01 (606): GUROBI test suite - tuning test
• lp15 (607): LP with many zeros at solution
• convert9 (608): CONVERT test suite - handling of fixed vars for nlp2mcp
• lsalib01 (609): Test extrinsic functions in lsadclib
• mrw01 (610): Test MessageReceiverWindow.exe
• rs01 (611): Solving a Transportation Problem using Cplex and Gurobi remote server
• xpress06 (612): Solution enumerator example with solnPoolMerge

## Solver/Platform Availability Matrix

Solver/Platform availability - 24.1    May 30, 2013
x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
Sun Sparc64
SOLARIS
Sun Intel
SOLARIS
IBM RS-6000
AIX
Mac x86_64
Darwin
ALPHAECP
ANTIGONE 1.0
BARON 12.3
BDMLP
COIN-OR
CONOPT 3
CPLEX 12.5
DECIS 32bit
DICOPT
GLOMIQO 2.2
GUROBI 5.5 5.0
KNITRO 8.1
LINDO 8.0
LINDOGLOBAL 8.0 6.0 6.0
LGO
MILES
MINOS
MOSEK 7
MPSGE
MSNLP 32bit
NLPEC
OQNLP 32bit 32bit
PATH
SBB
SCIP 3.0
SNOPT
SOPLEX 1.7
SULUM 2.0
XA
XPRESS 24.01

# 24.1.2 Maintenance release (June 16, 2013)

## 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 Sergio Corvalan, George Mavrotas, Renger van Nieuwkoop, and Andres Ramos.

## GAMS System

### GAMS

• Fixed a problem when restarting from restart files from 24.0 and previous if extrinsic functions were present

## Solvers

### BARON

• New libs 12.3.3
• SNOPT 7.2-12.1 with fixes
• New defaults for options PreLPDo (0) and PDo (-2) which lets BARON decide about probing
• Fixed an issue with reporting the correct solve time back to GAMS

### Cplex/CplexD

• new libs 12.5.1
• new parameters LiftProjCuts and CalcQCPDuals
• Fixed a problem in CplexD where models with all discrete variables relaxed (prior=inf) were still solved as discrete problems

### MOSEK

• New libraries 7.0.0.70

### SULUM

• New libraries 2.0.284 (Beta)

## Tools & APIs

### GDXXRW

• Fixed a bug where a range like B5:B5 became a single anchor point

# 24.1.3 Maintenance release (July 26, 2013)

## 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, Sebastian Dilly, Sascha Herrmann, Aida Khajavirad, and Johan Villaume.

## GAMS System

### Installer

• The GAMS installer for Windows now asks if an existing GAMSDIR environment variable from a previous installation should be updated.

### GAMS

• Fix crash with huge dictionary files

### GAMS IDE

• Fixed formatting of Ipopt, Bonmin, and Couenne options files when written by options editor.
• Using Help | About now uses the project directory for temporary files avoiding issues with a write protected system directory.

## Solvers

### ANTIGONE and GloMIQO

• New libraries ANTIGONE 1.1 and GloMIQO 2.3
• eliminate constraint on the number of variables (ANTIGONE/GloMIQO was previously limited to 45,000 variables)
• improve nonlinear term bound inferences
• improve automatic scaling of problems with many disparate scales
• track numerically sensitive variables for possible instability associated with optimality-based bounds tightening

### CONOPT

• New Libraries 3.15L

### IPOPTH

• New HSL libraries MA57 3.8, HSL_MC68 3.3, HSL_MA86 1.5, HSL_MA97 2.2
• Changed default of option ma27_meminc_factor from 10 to 2

### MOSEK

• New library 7.0.0.75

### SCIP

• New library 3.0 #0b46aef

### SULUM

• New library 2.0.314

## Tools & APIs

### Object Oriented APIs

#### Java

Improve data iterator:

• New classes:
• GAMSDatabaseIterator implements java.util.Iterator
• GAMSSymbolIterator implements java.util.Iterator
• Deprecated class:
• GAMSSymbolIterable
• Changes in GAMSDatabase:
• GAMSDatabase implements GAMSDatabaseIterator instead of GAMSSymbolIterable
• deprecated the implemented methods of GAMSSymbolIterable: next(), hasnext(), and remove()
• Changes in GAMSSymbol:
• GAMSSymbol implements GAMSSymbolIterator instead of GAMSSymbolIterable
• deprecated the implemented methods of GAMSSymbolIterable: next(), hasnext(), and remove()
• new methods in GAMSSymbolRecord:
• moveNext(): to iterate to the next record using the current data iterator criterion
• movePrevious(): to iterate to the previous record using the current data iterator criterion

Updated example:

• <Path/To/GAMS>/apifiles/Java/transport/Transport12.java

### GDXXRW

• Better error reporting for certain range errors
• Issue a warning when writing to an XLSX file by default when there is a file with the same name that has the extension .XLS

GAMS Development Corp.
GAMS Software GmbH

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