24.2 Distribution

24.2.1 Major release (December 09, 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, Fernando Consigli, Eligius Hendrix, Erwin Kalvelagen, Alexander Lieder, Phani Murukutla, Yaser Tohidi, and Alexander Weber.

Platforms

  • Sparc Solaris builds are now built on a SunOS 5.10 (Solaris 10) machine.
  • We plan to drop support for Linux 32bit and Sparc Solaris 32bit with the next major release (24.3). As a consequence, we plan to also drop OQNLP on Linux 64bit.

GAMS System

Installer

  • The dialog for choosing a license file to be copied starts from the user's desktop now
  • Fixed a bug, when trying to copy license file to itself

Function libraries

  • A new extrinsic function library cppcclib was added to the system. This library is coded in C++ and implements PDFs and CDFs for the univariate and bivariate normal distributions. The use of C++ is crucial here, as an expression class together with operator overloading is used to do all the relevant computation. In this way, we can automatically compute exact derivatives (first and second) for the function values being computed. Further information on extrinsic function libraries can be found in the GAMS User's Guide, Appendix J. The testlib models cpplib01 and cpplib02 are also relevant.

GAMS

  • Fix bug that caused a negative value for model attribute etSolver
  • EXECUTE_LOADDC: Enhanced execute_load with domain checking. Any domain violation will be reported and flagged as execution error. In contrast, execute_load ignores all domain violations and loads only data that meets the domain restrictions.
  • EXECUTE_UNLOADDI: This new keyword does not only write the defined symbols to GDX but also the domain sets.
  • Loading one dimensional sets from multi-dimensional parameters/sets via load i<gdxsym. Details can be found in the gdxutils document in the tools section of the documentation tree.
  • New (command line) option gdxUELs [squeezed/full]: If gdxUELs is set to squeezed (default) only the UELs that are required by the exported symbols are registered to GDX (compared to all UELs with gdxUELs=full, which behaves like the former default).
  • New (command line) option DumpParmsLogPrefix (synonym DPLP) prefixes log lines that are triggered by DumpParms=2 with a specific string for easy filtering of these lines.
  • New (command line) option intVarUp as a replacement for the command line option pf4 (which is still usable as a synonym for intVarUp)
  • The option sys10, which changes rpower to ipower when the exponent is constant and within e-12 of an integer, is also available as command line option now
  • New option DmpOpt: This writes all options, which can be set using the option statement, and their values to the listing file
  • GAMS checks now more frequently if a GAMS program exceeds the preset elapsed time limit EtLim (default 1e20 seconds). In the past this was done only before solve and execute statements. Now, GAMS checks this limit at the same time GAMS checks for a pending Ctrl-C event.
  • Renamed model status 7 Intermediate Nonoptimal to 7 Feasible Solution. The string constant %modelStat.intermediateNonOptimal% is still recognized by the GAMS compiler, but it is advised to switch to %modelStat.feasibleSolution%. The model status test is e.g. printed in the solve summary in the listing file and can be written to put files with the model attribute mymodel.tModStat.
  • New model attributes:
    • myModel.marginals: Indicates the presence (1) or absence (0) of a dual solution from the solver after the solve statement. In some circumstances, a solver does not provide a dual solution (.m), in such a case GAMS will not print the marginal column in the solution listing and set the marginal field in variables and equations to NA.
    • myModel.defPoint: If this attribute determines what point is passed to the solver as an input point. By default, the user supplied point (set via x.l(j)=... and e.m(i)=...) is passed to the solver. In some circumstances (mostly during debugging) it can be useful to pass a standard default input point, i.e. level set to 0 or lower bound in case 0 is not within the bounds and marginal set to 0. myModel.defPoint controls this behavior: Values other than 1 or 2 result in default behavior, value 1 results in passing default levels and marginals, value 2 results in passing the levels set by the user and defaults (0) for the marginals.
  • Added %system.dirsep% and system.dirsep (for use in put files) to get access to the OS specific file/directory separator character. On Windows platforms this is \ and on Unix and Mac this is /. This helps writing platform independent GAMS models.
  • Added option 6 to [file].TF (text fill) fills .te() with quoted element names separated by spaces
  • Allow the Alias statement on multidimensional sets as well:
      Set i       / i0*i9 /
          j       / j0*j9 /
          ij(i,j) / #i.#j /;
      Alias (ij, ji);

Solvers

ANTIGONE, BARON, Couenne, SCIP

  • Now return model status 7 (feasible but not necessarily optimal) instead of 2 (locally optimal) when finding feasible solution for a model without discrete variables and not having proven global optimality (local optimality cannot be guaranteed).

ANTIGONE

  • Fixed bug where optimality gaps were reported for convex problems.

BARON

  • New libraries 12.7.3
  • Performance improvements in local search, branching, integer presolve, and relaxations for problems with bilinear and/or integer variables
  • Added facilities for complementarity problems
  • Absolute and relative constraint feasibility and integrality feasibility tolerances
  • Added flexible termination criteria based on progress
  • Improved treatment of unbounded/infeasible problems
  • Selection of specific NLP solvers to be included in BARON's dynamic NLP solver selection strategy
  • Automatic setting of many options based on problem characteristics and learning algorithms. As a result, many options are now deprecated
  • New options:
    • AbsConFeasTol: Absolute constraint feasibility tolerance
    • AbsIntFeasTol: Absolute integer feasibility tolerance
    • AllowExternal: Indicator for use of External NLP solver with automatic NLP solver selection
    • AllowIpopt: Indicator for use of IPOPT with automatic NLP solver selection
    • AllowMinos: Indicator for use of MINOS with automatic NLP solver selection
    • AllowSnopt: Indicator for use of SNOPT with automatic NLP solver selection
    • DeltaA: Absolute improvement for insufficient progress termination
    • DeltaR: Relative improvement for insufficient progress termination
    • DeltaT: Time interval for insufficient progress termination
    • DeltaTerm: Indicates whether insufficient progress termination is on or off
    • RelConFeasTol: Relative constraint feasibility tolerance
    • RelIntFeasTol: Relative integer feasibility tolerance
  • Options deprecated: modbrpt, convexratio, maxredpass, maxnodepass, redreltol, redabstol, postreltol, postabstol, hreltol,habstol, maxheur, pbin, twoways, pstart, pend, pfreq, profra, pxdo, maxpretime, basfra, baskp, prelpdo, numbranch and numstore.

Bonmin(H), CBC, Couenne, Ipopt(H), OS, OsiCplex, OsiGurobi, OsiMosek, OsiXpress, SoPlex

  • The solver manual coin.pdf has been split into one document for each solver(group) (bonmin.pdf, cbc.pdf, couenne.pdf, ipopt.pdf, os.pdf, osi.pdf).

CPLEX

  • New libraries 12.6.0.
  • Cplex 12.6 solves non-convex (MI)QP problems to global optimality when parameter SOLUTIONTARGET is set to 3.
  • Cplex 12.6 also offers the capability to solve a single MIP instance distributed over a number of machines. The feature, knows as Distributed MIP, is available with GAMS/CplexD only and requires a special license and additional software.

CONOPT

  • New libraries 3.15M.
    • Fixed a problem with the definition and execution of 'implied free' post-triangular variables. The tolerance was too loose compared with other tolerances and a projection was missing. That could result in functions or derivatives being called with variables slightly outside their bounds (by up to 4.e-10).

Convert

  • Fixed writing of mod operator in AMPL syntax.

ConvertD

  • The converter to OSiL format can now handle SOS1 and SOS2 variables.

EMPSP

For the keyword cvarup (which is the same as cvar), the meaning of the defined scalar was changed:

cvarup [rv var] scalar

Scalar represents now the confidence level for the Conditional Value at Risk. It holds NewScalar = 1 - OldScalar.

Gurobi

  • New libraries 5.6
  • New options:
    • PreSOS1BigM and PreSOS2BigM: These new parameters provide user control of presolve SOS linearization
    • Disconnected: MIP models are sometimes made up of multiple, independent sub-models. This parameter controls the strategy used to exploit this structure
  • Distributed MIP algorithms (in connection with Gurobi's Compute Server):
    • distributed tuning (option TuneJobs)
    • distributed concurrent MIP (option ConcurrentMIPJobs)
    • See also option ServerPool and ServerPassword

Ipopt/IpoptH, Bonmin/BonminH, Couenne

  • On Linux and Windows, MKL PARDISO has been enabled as additional linear solver for Ipopt (experimental). To try it out, set the option linear_solver pardiso.
  • For users with an IpoptH license, OpenMP support has been enabled for the HSL codes MA86 and MA97.
    The number of threads to use for HSL MA86, HSL MA97, and PARDISO is controlled by the GAMS threads option.

KNITRO

  • New libraries 9.0.0.
  • MPEC models are now supported.

Lindo/LindoGlobal

  • New libraries 8.0.483.

Mosek

  • New libraries 7.0.0.96.
  • Mosek provides two algorithms for solving problems with discrete variables: 1) mixed-integer optimizer (MSK_OPTIMIZER_MIXED_INT) and 2) mixed-integer optimizer for conic and linear problems (MSK_OPTIMIZER_MIXED_INT_CONIC). Algorithm 1 has been available since the introduction of MOSEK to GAMS, but requires an additional license code. Algorithm 2 has been introduced with version 7 of MOSEK (GAMS 24.1). Benchmarks have shown that both algorithms perform very similar. While we will support algorithm 1 for existing GAMS/MOSEK customers for some time, it will not be possible to purchase this option for new GAMS/MOSEK users. They will have to use algorithm 2.
  • Fixed issues with solution obtained from fixed solve when using Mosek's conic MIP solver.
  • An experimental interface to Mosek's semidefinite programming (SDP) solver has been added, see the GAMS/Mosek solver documentation for details. Note, that the interface is likely to change in the future.

OsiCplex

  • Fixed report of CPLEX Error 1217 at end of MIP solve.

OsiCplex, OsiGurobi

  • Fixed setting of LP algorithm via solver specific options file.

OsiMosek

  • The MIP solver choice has been changed to Mosek's conic mixed-integer programming solver.

OS

  • New libraries 2.8

SoPlex

  • New libraries 1.7.2

SCIP

  • New libraries 3.0 #6078424
  • SCIP setting files can be setup with the options editor of the GAMS IDE now.

SULUM

  • New libraries 2.0.432.
  • Branching priorities are now supported.

XPRESS

  • New libraries 25.01.05.
  • Fixed best bound field of start record in MIP trace file.

Tools & APIs

Tools

  • New GDX tool MCFilter. This tool removes duplicate and dominated points in a multi-criteria solution set.

Expert Level APIs

VBA

  • Use camel case instead of all lower case for public functions

VB.NET

  • Use camel case instead of all lower case for public functions
  • Use dynamic loading of DLLs

Object Oriented APIs

  • Do not throw an Exception if an Alias is read by GetSet
  • Fix wrong equation subtype definition when reading equation from GAMSDatabase
  • Throw an GAMSException if UEL exceeds the maximum size of 63 characters
  • Throw an GAMSException if explanatory text exceeds the maximum size of 255 characters

.NET

  • Add MONO implementation of the object oriented GAMS .Net API for Mac OS X and Linux.
  • New version of function GAMSWorkspace.AddOptions creating an instance of GAMSOptions initialized by an existing option file
    • If we pass a nullptr to this Function from C++, we need to cast this to GAMSObject^ now because of the overloading
  • New properties: GAMSWorkspace.APIVersion, GAMSWorkspace.APIMajorRelNumber, GAMSWorkspace.APIMinorRelNumber and GAMSWorkspace.APIGOLDRelNumber
  • New property GAMSWorkspace.MyEPS: Reset value to be stored in and read from GAMSDatabase for Epsilon, default is double.Epsilon
  • New function GAMSOptions.Export: Write GAMSOptions into a parameter file
  • Switching type of property GAMSOptions.NoNewVarEqu from Integer to Enum (ENoNewVarEqu)
  • Renaming of GAMSEnum.ModelStat.NonOptimalIntermed to GAMSEnum.ModelStat.Feasible
  • Renaming of GAMSOptions.PoolFree4 to GAMSOptions.IntVarUp
  • New C# Example GAMSRemoteObject

Java

  • New
    • tutorial: (GAMS_java_Tutorial.pdf) under <Path/To/GAMS>/docs/API. From the GAMSIDE this document can be accessed at Help -> Docs -> API.
    • method in GAMSOptions: export, to write GAMSOptions into a parameter file
    • methods in GAMSWorkspace: addOptions to create a GAMSOptions object from either another object or an option file
    • methods in GAMSWorkspace: getAPIVersion, getAPIMajorReleaseNumber, getAPIMinorReleaseNumber, and getAPIGoldReleaseNumber, to retrieve API version number
    • method in GAMSWorkspace: setMyEPS to reset GAMSGlobals.SpecialValues.EPS, the value to be stored in and read from GAMSDatabase for Epsilon.
  • Changed
    • default value of GAMSGlobals.SpecialValues: NAN, PLUS_INF, MINUS_INF, and EPS
    • deprecated GAMSGlobals.ModelStat.NONOPTIMAL_INTERMED, replaced by GAMSGlobals.ModelStat.FEASIBLE
    • deprecated GAMSOptions.PoolFree4, replaced by GAMSOptions.IntVarUp
    • deprecated the type of GAMSOptions.NoNewVarEqu, replaced by enum GAMSOptions.ENoNewVarEq
  • Fixed
    • a bug when running a job with an input directory IDir added into GAMSOptions object.

Python

  • Add tutorial (GAMS_python_Tutorial.pdf) to <Path/To/GAMS>/docs/API. From the GAMSIDE this document can be accessed at Help -> Docs -> API.
  • New parameter opt_file in function GamsWorkspace.add_options allows to create an instance of GamsOptions that is initialized by an existing option file.
  • New function GamsOptions.export: Write GamsOptions into a parameter file
  • New properties: GamsWorkspace.api_version, GamsWorkspace.api_major_rel_number, GamsWorkspace.api_minor_rel_number and GamsWorkspace.api_gold_rel_number
  • New property GamsWorkspace.my_eps: Reset value to be stored in and read from GamsDatabase for Epsilon.
  • New class NoNewVarEqu providing static fields to set option nonewvarequ
  • Renaming of GamsOptions.PoolFree4 to GamsOptions.IntVarUp and property poolfree4 to intvarup
  • Renaming of ModelStat.NonOptimalIntermed to ModelStat.Feasible
  • The following functions throw an exception, when a wrong data type is passed for the keys/slice parameter: delete_record, find_record, add_record, merge_record, first_record, last_record. Valid data types are str, list, tuple and their subclasses
  • Fixed a bug in _GamsSymbol.add_record() that occurred when using empty strings as keys
  • Fixed a bug in GamsModelInstance.solve() that affected the logging behavior

Model Libraries

GAMS Data Library

GAMS EMP Library

GAMS Model Library

  • gastrans (217): Added a simple straightforward NLP formulation of the problem, which is now solved by default.
  • knp (321): Removed redundant model equations, now regarding best bounds reported by solvers, improved readability.
  • tricp (395): Triangular Graph Circle Packing
  • allbases (396): Enumerate All Basic Solutions of an LP

GAMS Test Library

Solver/Platform Availability Matrix

Solver/Platform availability - 24.2   
  x86
MS Windows
x86_64
MS Windows
x86
Linux
x86_64
Linux
Sun Sparc
SOLARIS
Sun Sparc64
SOLARIS
Sun Intel
SOLARIS
IBM Power
AIX
Mac x86_64
Darwin
ALPHAECP x x x x x x x x x
ANTIGONE 1.1 x x x x          
BARON 12.7 x x x x          
BDMLP x x x x x x x x x
BONMIN 1.7 x x x x     x   x
CBC 2.8 x x x x     x   x
COUENNE 0.4 x x x x     x   x
CONOPT 3 x x x x x x x x x
CPLEX 12.6 x x x x x x x x x
DECIS x x x x x 32bit      
DICOPT x x x x x x x x x
GLOMIQO 2.3 x x x x          
GUROBI 5.6 x x 5.0 x       x x
IPOPT 3.11 x x x x     x   x
KNITRO 9.0 x x 8.1 x     8.1   x
LINDO 8.0 x x x x     x   x
LINDOGLOBAL 8.0 x x x x 6.0 6.0 x   x
LGO x x x x x x x   x
MILES x x x x x x x x x
MINOS x x x x x x x x x
MOSEK 7 x x x x         x
MPSGE x x x x x x x x x
MSNLP x x x x x 32bit     x
NLPEC x x x x x x x x x
OQNLP x 32bit x 32bit          
PATH x x x x x x x x x
SBB x x x x x x x x x
SCIP 3.0 x x x x     x   x
SNOPT x x x x x x x x x
SOPLEX 1.7 x x x x     x   x
SULUM 2.0 x x x x          
XA x x x x          
XPRESS 25.01 x x x x x x x x x

24.2.2 Maintenance release (March 04, 2014)

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 Michael Bond, Michael Ferris, Erwin Kalvelagen, Timo Lohmann, Kourosh Marjani Rasmussen, Javier Salmeron, Bassel Timani, Shigeru Tsubakitani, Tom Walker, and Jürgen Wolpert.

Platforms

  • Including now the correct Fortran and C++ standard libraries in a Solaris 64bit Intel system.

GAMS System

  • Fix a bug that could cause a crash when unloading an alias to the universe to GDX.
  • Fix a bug when unloading to a GDX file failed.
  • Accept a Mac license when using the GAMS Windows Distribution via Wine.

Solvers

BARON

  • New libraries 12.7.7.
  • Missing option results added.
  • Option PrLevel accepts only 0 or 1.

Bonmin

  • New libraries.

CBC

  • New libraries.
  • Add solution report for LPs that have not been solved to optimality (with corresponding infeasibility, non-optimality, unboundedness markers).

CONOPT

  • New library 3.15N.

Couenne

  • New libraries.

Cplex

  • Fix a bug that resulted in Cplex solving an LP as a MIP in case of solvelink=5.

Gurobi

  • New libraries 5.6.2.
  • This Gurobi version introduces an experimental no relaxation heuristic that attempts to find good quality feasible solutions to MIP models without first solving the root relaxation. This can be useful in situations where the root relaxation is extremely large or difficult.

GUSS/Scenario Solver

  • Fix a bug with keyword 'opt' when retrieving model attributes from the scenario solves.

KNITRO

  • New libraries 9.0.1.

Lindo/LindoGlobal

  • We will drop LindoGlobal libraries for Sparc Solaris with the next major release (24.3).
  • Fix potential problem using multiple threads on LP problem.
  • New libraries 8.0.498.

Mosek

  • New libraries 7.0.0.106.

SCIP

  • New libraries 3.0 #70041f0.

XPRESS

  • New libraries 25.01.07.

Tools & APIs

GDX Tools

  • Fixed a problem with gdxrank that surfaced with the new default Squeezed of option gdxUELs.
  • CSV formatted output of gdxdump no longer includes a Val column for sets.
  • Tools like gdxdump, gdxdiff and gdxrank will process an input file without a file extension if that file exists. If the file does not exist, the file with the .gdx file extension will be used.

Object Oriented APIs

  • Fix error when exporting GAMSDatabase with Aliases.
  • Fixed a bug regarding the subtype of equations and their default records, when the equation was added to a GamsDatabase from the APIs.
  • Fix GAMSExitCodes.
  • Make sure that GAMSModelInstance.Instantiate() does not solve the model, but only prepares everything required for the following Solve().

Java

  • Changed
    • null string is treated as an invalid key for all record operations of GAMSSymbol.
  • Fixed
    • a bug when creating GAMSDatabase from source database.
    • a bug when initializing a variable type in GAMSVariable.
    • a bug in GAMSSymbols: methods getVarType() and getEquType().
    • a bug in GAMSWorkspaceInfo: method getSystemDirectory().

Python

  • Fixed a bug in GamsSymbol.delete_record().

24.2.3 Maintenance release (May 22, 2014)

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 Michael Bond, Wolfgang Britz, Carla Caldeira, Markus Drouven, Guillaume Erbs, Michael Ferris, Inki Kim, Bruce McCarl, Nazmi Sener.

Platforms

  • On AIX, GAMS executables could allocate at most 2 GB of memory. This limit has been increased to 200 GB.

GAMS System

  • Fixed option sys10

Solvers

CONOPT

  • New libraries 3.15P.

CBC

  • New libraries.

CPLEX, Gurobi and Xpress

  • Fixed issues regarding missing libraries and wrong library dependencies on AIX.

DICOPT

  • Fixed option setting relaxed = 0.

EMPSP

  • Fixed a bug with chance constraints.
  • Fixed a bug where a certain order of random variables could cause a crash.

Gurobi

  • New libraries 5.6.3.
  • The writeprob option now writes an additional mipstart file (.mst.gz), if a MIP is written and the mipstart option has been set.

GUSS/Scenario Solver

  • Previously, GUSS only solved scenarios that had some update data. Now, GUSS solves also an empty scenario, i.e., a scenario without any update data. It now depends on the update type which scenario is solved.
  • Fixed a bug which caused a crash when the scenario dictionary set has more than 50 entries.

Ipopt

  • New library.
    • Fixed a bug that lead to convergence issues on some instances.

Lindo

  • Fixed option NSAMPLE_PER_STAGE.

Mosek, OsiMosek

  • New libraries 7.0.0.114.
  • Fixed deadlock on Windows when using Mosek or OsiMosek with a user (i.e., non-GAMS) license.

Tools & APIs

  • har2gdx implements -H option
  • gdxxrw understands RC notation for cells when using option UseRC.

Object Oriented APIs

  • Fixed memory leak in GAMSDatabase.

Java

  • Fixed a bug in GAMSDatabase.getDatabaseDomainViolation.